Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 27 additions & 12 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,53 @@
name: CI

on:
workflow_dispatch:
push:
branches: [main, master]
pull_request:
branches: ["*"]

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
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/issue-intake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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: |
Expand Down Expand Up @@ -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:
Expand All @@ -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:
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,17 @@ 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.
- 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.

## [0.1.0] - 2026-02-19

### Added
Expand Down
51 changes: 51 additions & 0 deletions tasks/todo.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,56 @@
# 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.
- [x] Record release notes, commit the reviewed maintenance changes, and push the feature branch.
- [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

- 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.

### 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.
- [x] Run the full debug/release test suite with stable Xcode 27.1 (verified on hosted CI run 40568157073).

### 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 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

- [completed] Make V3 consume supplied rules for named presets and align canonical crossover periods.
Expand Down
Loading