From 623ab99f60b2a25d1ed5b6746eec795ae6969590 Mon Sep 17 00:00:00 2001 From: "andy.wong" Date: Tue, 27 Oct 2026 15:16:56 -0400 Subject: [PATCH 1/3] Maintain Swift CI and prepare v0.2.5 Committed-by: Codex --- .github/workflows/ci.yml | 38 +++++++++++++++++--------- .github/workflows/issue-intake.yml | 6 ++--- CHANGELOG.md | 10 +++++++ tasks/todo.md | 43 ++++++++++++++++++++++++++++++ 4 files changed, 82 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e8d2a2b..1893b7a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,31 +8,45 @@ on: jobs: build-and-test: - runs-on: macos-latest + name: Xcode ${{ matrix.xcode }} (${{ matrix.configuration }}) + runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: configuration: [debug, release] + xcode: [default, "27.1"] + include: + - xcode: default + runner: macos-latest + - xcode: "27.1" + runner: xcode-27 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 - - name: Show Swift version - run: swift --version + - name: Select stable Xcode 27.1 + if: matrix.xcode == '27.1' + run: sudo xcode-select -s /Applications/Xcode_27.1.app/Contents/Developer - - name: Build (Debug) - if: matrix.configuration == 'debug' - run: swift build + - name: Show Swift version + run: | + xcodebuild -version + swift --version - - name: Build (Release) - if: matrix.configuration == 'release' - run: swift build -c release + - name: Build + run: >- + swift build -c ${{ matrix.configuration }} + -Xswiftc -strict-concurrency=complete + -Xswiftc -warnings-as-errors - name: Test - run: swift test + run: >- + swift test -c ${{ matrix.configuration }} + -Xswiftc -strict-concurrency=complete + -Xswiftc -warnings-as-errors - name: Run parity (if local JS engine is available) - if: matrix.configuration == 'debug' + if: matrix.configuration == 'debug' && matrix.xcode == 'default' shell: bash run: | if [[ -f ../js-engine/algotrade3/models/src/ATTechnicalIndicators.ts || -f ../algotrade-js-trial/algotrade3/models/src/ATTechnicalIndicators.ts || -f js-engine/algotrade3/models/src/ATTechnicalIndicators.ts ]]; then diff --git a/.github/workflows/issue-intake.yml b/.github/workflows/issue-intake.yml index 0b6fd70..caf41f8 100644 --- a/.github/workflows/issue-intake.yml +++ b/.github/workflows/issue-intake.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Collect target issues id: collect - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: github-token: ${{ github.token }} script: | @@ -50,7 +50,7 @@ jobs: - name: Assign issues to andywkff if: ${{ steps.collect.outputs.count != '0' }} - uses: actions/github-script@v7 + uses: actions/github-script@v9 env: TARGET_ISSUES: ${{ steps.collect.outputs.issues }} with: @@ -69,7 +69,7 @@ jobs: - name: Add issues to ImpostersLimited Main project if: ${{ env.PROJECT_TOKEN != '' && steps.collect.outputs.count != '0' }} - uses: actions/github-script@v7 + uses: actions/github-script@v9 env: TARGET_ISSUES: ${{ steps.collect.outputs.issues }} with: diff --git a/CHANGELOG.md b/CHANGELOG.md index a78a9b6..7600b67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,16 @@ https://keepachangelog.com/en/1.1.0/ - Onboarding/tutorial examples were updated to use current `BKRunSummary` metric access (`summary.metrics.*`) instead of stale `summary.result.*` examples. - Compatibility aliases remain non-deprecated for the `v0.1.x` release cycle while canonical docs and examples route new integrations toward the preferred names. +## [0.2.5] - 2026-10-27 + +### Fixed +- CI release jobs now run tests in the release configuration. + +### Changed +- Add debug/release CI coverage on stable Xcode 27.1 alongside the default macOS runner, with complete concurrency checking and compiler warnings treated as errors. +- Update GitHub Actions dependencies to `actions/checkout@v7` and `actions/github-script@v9`. +- Preserve the Swift 5.9 tools minimum, iOS 16/macOS 13 deployment targets, and existing public API. + ## [0.1.0] - 2026-02-19 ### Added diff --git a/tasks/todo.md b/tasks/todo.md index 83d73bf..128c8fb 100644 --- a/tasks/todo.md +++ b/tasks/todo.md @@ -1,5 +1,48 @@ # Active Todo +## 2026-10-27 Publish Maintenance Release v0.2.5 + +- [x] Inspect the complete diff, real main checkout, and remote releases/tags; derive v0.2.5 from remote v0.2.4. +- [ ] Record release notes, commit the reviewed maintenance changes, and push the feature branch. +- [ ] Run the hosted debug/release matrix with stable Xcode and request Codex review; resolve any failures. +- [ ] Fast-forward the clean main checkout, push main, and publish the annotated v0.2.5 tag/release. +- [ ] Verify remote main/tag convergence, checkout cleanliness, and release metadata; remove temporary files. + +### Verification Plan + +- Use the normal hosted macOS runner plus explicitly selected stable Xcode 27.1; run debug/release build/tests with complete concurrency checking and compiler warnings treated as errors. +- The existing `issue-intake` workflow auto-assigns/issues Project placement. Track this publication in its pull request without creating or assigning an issue. +- Only workflows, the changelog, and the active todo belong in this release; library API, minimum Swift version, and deployment targets stay unchanged. + +## 2026-10-27 Routine Swift Maintenance + +- [x] Compare package configuration, installed stable tools, and current official Swift/API release guidance. +- [x] Verify current Swift compilation with strict Swift 6 diagnostics and compiler warnings treated as errors. +- [x] Apply only confirmed maintenance fixes, preserving Swift 5.9 and deployment compatibility. +- [x] Verify workflow syntax/matrix and the final diff; document findings and limitations. +- [ ] Run the full debug/release test suite with stable Xcode 27.1 (blocked locally: only Xcode 27.2 RC is installed and Command Line Tools lacks `xctest`). + +### Scope + +- Remote main matches this checkout at ac2ceb4. Apple identifies installed Xcode 27.2 (27B48) as an RC; its initial test run was stopped and is not a stable verification result. +- Stable Xcode 27.1 (27A9275) is not installed locally. Command Line Tools provides released Swift 6.4 (swiftlang-6.4.0.34.1) and the macOS 26.5 SDK for package compilation checks. +- No third-party Swift package dependencies. Evaluate new Swift features against actual call sites before changing the minimum toolchain or API. +- Baseline CI ran debug tests even in its release job and did not enforce complete concurrency checking. +- Preserve normal macOS-runner compatibility checks and add explicit stable Xcode 27.1 checks on GitHub's `xcode-27` runner; update checkout/github-script actions after reviewing their breaking changes. +- Swift 6.4's new Swift Build backend warns when `-Xswiftc -swift-version` overrides manifest language settings. CI will use complete concurrency checking in the declared language mode instead of introducing that warning or raising the minimum toolchain. +- GitHub connector needs reauthentication. The active issue-intake workflow also auto-assigns/adds new issues to a Project, contrary to the current tracking policy; no issue was created. + +### Review + +- Reviewed Swift 6.4 release/API guidance and current Swift/Foundation call sites. No required library API migration or third-party Swift dependency update was identified. Keep tools-version 5.9, iOS 16, and macOS 13 compatibility; new collection, observation, and async-cleanup features do not justify changing that baseline. +- CI now builds/tests debug and release on the normal runner and stable Xcode 27.1, with complete concurrency checking and compiler warnings treated as errors. Release jobs now actually run release tests; optional JS parity runs only once. +- Updated `actions/checkout` v4 -> v7 and `actions/github-script` v7 -> v9. Existing scripts use neither the removed CommonJS import nor conflicting `getOctokit` declarations; their behavior is unchanged. +- Command Line Tools Swift 6.4 with macOS 26.5 SDK: `swift build -c release --sdk /Library/Developer/CommandLineTools/SDKs/MacOSX26.5.sdk -Xswiftc -swift-version -Xswiftc 6 -Xswiftc -warnings-as-errors` passed. Library/compiler diagnostics were clean; Swift Build emitted language-override, missing CLT linker search-path, and existing `.build/release` symlink warnings. These tool/layout warnings are not a warning-free Xcode result. +- The freshly built release demo executable exited 0; it discards the simulation result, so this is an executable smoke check, not test-suite evidence. +- Both YAML files parsed, all three issue-intake scripts parsed under the v9 script parameters, and structural assertions verified all four matrix entries and matching build/test configurations. `git diff --check` passed. +- Full stable-Xcode tests, native iOS builds, and hosted workflow execution remain unverified. The RC test attempt was interrupted and is not counted as a pass. No commit, push, tag, issue assignment, or Project placement was performed. +- Sources: https://www.swift.org/blog/swift-6.4-released/ ; https://developer.apple.com/news/releases/?id=10152026a ; https://developer.apple.com/news/releases/?id=10192026g ; https://github.com/actions/checkout/releases ; https://github.com/actions/github-script/releases/tag/v9.0.0 ; https://github.com/actions/runner-images/blob/main/images/macos/xcode-27-arm64-Readme.md . + ## 2026-08-23 Preset Correctness Follow-up - [completed] Make V3 consume supplied rules for named presets and align canonical crossover periods. From 6966ce31ae30b8d90ddef93ea0ea5968ebc12567 Mon Sep 17 00:00:00 2001 From: "andy.wong" Date: Tue, 27 Oct 2026 15:20:00 -0400 Subject: [PATCH 2/3] Allow explicit CI verification before release Committed-by: Codex --- .github/workflows/ci.yml | 1 + CHANGELOG.md | 1 + tasks/todo.md | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1893b7a..93db299 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,7 @@ name: CI on: + workflow_dispatch: push: branches: [main, master] pull_request: diff --git a/CHANGELOG.md b/CHANGELOG.md index 7600b67..de4bbbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ https://keepachangelog.com/en/1.1.0/ ### Changed - Add debug/release CI coverage on stable Xcode 27.1 alongside the default macOS runner, with complete concurrency checking and compiler warnings treated as errors. +- Allow manual CI dispatch for verification before publication. - Update GitHub Actions dependencies to `actions/checkout@v7` and `actions/github-script@v9`. - Preserve the Swift 5.9 tools minimum, iOS 16/macOS 13 deployment targets, and existing public API. diff --git a/tasks/todo.md b/tasks/todo.md index 128c8fb..3117394 100644 --- a/tasks/todo.md +++ b/tasks/todo.md @@ -3,7 +3,7 @@ ## 2026-10-27 Publish Maintenance Release v0.2.5 - [x] Inspect the complete diff, real main checkout, and remote releases/tags; derive v0.2.5 from remote v0.2.4. -- [ ] Record release notes, commit the reviewed maintenance changes, and push the feature branch. +- [x] Record release notes, commit the reviewed maintenance changes, and push the feature branch. - [ ] Run the hosted debug/release matrix with stable Xcode and request Codex review; resolve any failures. - [ ] Fast-forward the clean main checkout, push main, and publish the annotated v0.2.5 tag/release. - [ ] Verify remote main/tag convergence, checkout cleanliness, and release metadata; remove temporary files. @@ -13,6 +13,7 @@ - Use the normal hosted macOS runner plus explicitly selected stable Xcode 27.1; run debug/release build/tests with complete concurrency checking and compiler warnings treated as errors. - The existing `issue-intake` workflow auto-assigns/issues Project placement. Track this publication in its pull request without creating or assigning an issue. - Only workflows, the changelog, and the active todo belong in this release; library API, minimum Swift version, and deployment targets stay unchanged. +- PR #9 tracks publication. Codex review of 623ab99 completed with no findings. The automatic pull-request event did not create CI runs; add `workflow_dispatch` and dispatch the exact branch explicitly before merging. ## 2026-10-27 Routine Swift Maintenance From 96add0c61cd168f5836c8b8b28ec1e65fbf7708e Mon Sep 17 00:00:00 2001 From: "andy.wong" Date: Tue, 27 Oct 2026 15:25:56 -0400 Subject: [PATCH 3/3] Record stable Swift release verification Committed-by: Codex --- tasks/todo.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tasks/todo.md b/tasks/todo.md index 3117394..1a06a66 100644 --- a/tasks/todo.md +++ b/tasks/todo.md @@ -4,9 +4,9 @@ - [x] Inspect the complete diff, real main checkout, and remote releases/tags; derive v0.2.5 from remote v0.2.4. - [x] Record release notes, commit the reviewed maintenance changes, and push the feature branch. -- [ ] Run the hosted debug/release matrix with stable Xcode and request Codex review; resolve any failures. -- [ ] Fast-forward the clean main checkout, push main, and publish the annotated v0.2.5 tag/release. -- [ ] Verify remote main/tag convergence, checkout cleanliness, and release metadata; remove temporary files. +- [x] Run the hosted debug/release matrix with stable Xcode and request Codex review; resolve any failures. +- [x] Confirm the clean main checkout can fast-forward and prepare the annotated v0.2.5 tag/release metadata. +- [x] Check remote refs, validate a dry-run main push, and prepare final publication/cleanup checks. ### Verification Plan @@ -15,13 +15,20 @@ - Only workflows, the changelog, and the active todo belong in this release; library API, minimum Swift version, and deployment targets stay unchanged. - PR #9 tracks publication. Codex review of 623ab99 completed with no findings. The automatic pull-request event did not create CI runs; add `workflow_dispatch` and dispatch the exact branch explicitly before merging. +### Review + +- [CI run 40568157073](https://github.com/ImpostersLimited/BacktestingKit/actions/runs/40568157073) passed all four jobs on 6966ce3: Xcode 26.6 / Swift 6.3.3 and stable Xcode 27.1 / Swift 6.4, both debug and release. Each job passed 145 tests with zero failures and no warnings/errors in the captured logs. +- Codex review of 6966ce3 completed with no findings or unresolved findings. Actionlint passed after allowing only the documented hosted `xcode-27` label, which actionlint 1.7.12 does not yet recognize. +- The optional JS parity step skipped because the custom engine is not on the hosted runner. Native iOS device/simulator builds are outside this CI-only release's verification scope. +- Publication evidence and final remote-ref/cleanup status are tracked in [PR #9](https://github.com/ImpostersLimited/BacktestingKit/pull/9) and the [v0.2.5 release](https://github.com/ImpostersLimited/BacktestingKit/releases/tag/v0.2.5), avoiding a post-tag documentation commit. + ## 2026-10-27 Routine Swift Maintenance - [x] Compare package configuration, installed stable tools, and current official Swift/API release guidance. - [x] Verify current Swift compilation with strict Swift 6 diagnostics and compiler warnings treated as errors. - [x] Apply only confirmed maintenance fixes, preserving Swift 5.9 and deployment compatibility. - [x] Verify workflow syntax/matrix and the final diff; document findings and limitations. -- [ ] Run the full debug/release test suite with stable Xcode 27.1 (blocked locally: only Xcode 27.2 RC is installed and Command Line Tools lacks `xctest`). +- [x] Run the full debug/release test suite with stable Xcode 27.1 (verified on hosted CI run 40568157073). ### Scope @@ -41,7 +48,7 @@ - Command Line Tools Swift 6.4 with macOS 26.5 SDK: `swift build -c release --sdk /Library/Developer/CommandLineTools/SDKs/MacOSX26.5.sdk -Xswiftc -swift-version -Xswiftc 6 -Xswiftc -warnings-as-errors` passed. Library/compiler diagnostics were clean; Swift Build emitted language-override, missing CLT linker search-path, and existing `.build/release` symlink warnings. These tool/layout warnings are not a warning-free Xcode result. - The freshly built release demo executable exited 0; it discards the simulation result, so this is an executable smoke check, not test-suite evidence. - Both YAML files parsed, all three issue-intake scripts parsed under the v9 script parameters, and structural assertions verified all four matrix entries and matching build/test configurations. `git diff --check` passed. -- Full stable-Xcode tests, native iOS builds, and hosted workflow execution remain unverified. The RC test attempt was interrupted and is not counted as a pass. No commit, push, tag, issue assignment, or Project placement was performed. +- Full stable-Xcode tests and hosted workflow execution were subsequently verified in run 40568157073; see the publication review above. Native iOS builds remain outside this CI-only patch. The RC test attempt was interrupted and is not counted as a pass. No issue assignment or Project placement was performed. - Sources: https://www.swift.org/blog/swift-6.4-released/ ; https://developer.apple.com/news/releases/?id=10152026a ; https://developer.apple.com/news/releases/?id=10192026g ; https://github.com/actions/checkout/releases ; https://github.com/actions/github-script/releases/tag/v9.0.0 ; https://github.com/actions/runner-images/blob/main/images/macos/xcode-27-arm64-Readme.md . ## 2026-08-23 Preset Correctness Follow-up