docs: log KC-72 (StreakLogicTests fix + runner recovery)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -2643,3 +2643,50 @@ Not run end-to-end yet — needs the user to generate the App Store Connect
|
||||
API key and add the 3 secrets before the next merge to `main` actually
|
||||
exercises this path. `ExportOptions.plist` needed no changes (already
|
||||
`method: app-store` with the correct team ID).
|
||||
|
||||
## KC-72 — Fix StreakLogicTests compile error + a genuinely broken CI runner
|
||||
|
||||
Status: Implemented and build-verified (see Note — this is the first entry
|
||||
all session with real `xcodebuild` verification, not just self-review)
|
||||
Reported by: Discovered while testing KC-71's release pipeline
|
||||
Area: CI infra + `KisaniCalTests/StreakLogicTests.swift`
|
||||
|
||||
### Description
|
||||
Two separate, real problems surfaced while trying to actually exercise the
|
||||
CI/CD pipeline for the first time all session:
|
||||
|
||||
1. **The self-hosted runner (`act_runner` on Serenity) was broken all
|
||||
session.** It registered with Gitea successfully ("declare successfully"
|
||||
in its log) but its job-polling loop never actually started — zero log
|
||||
output afterward even at debug level, confirmed across multiple
|
||||
restarts. Its log showed no successful job since 01:52 that morning,
|
||||
meaning it silently missed every one of ~20 pushes to `develop`
|
||||
throughout the session. Root cause not fully isolated (stuck goroutine,
|
||||
suspected); fixed by a full re-registration from scratch (fresh token,
|
||||
delete `.runner`, `act_runner register --no-interactive`, reload the
|
||||
LaunchAgent) rather than continuing to debug the stuck process.
|
||||
2. **Once CI actually ran for the first time, it immediately caught a
|
||||
real, pre-existing compile error**, unrelated to anything built
|
||||
tonight: `StreakLogicTests.swift` calls `WorkoutViewModel
|
||||
.totalAchievedWorkoutDays(...)` and `TaskViewModel.completionCount
|
||||
(...)`, both `@MainActor`-isolated, from a test class that wasn't
|
||||
itself marked `@MainActor` — a Swift 6 strict-concurrency error.
|
||||
`RecurrenceTests.swift` in the same target already uses the correct
|
||||
pattern (`@MainActor final class RecurrenceTests: XCTestCase`);
|
||||
`StreakLogicTests` was just missing the same annotation.
|
||||
|
||||
### Change
|
||||
- Added `@MainActor` to `StreakLogicTests`'s class declaration.
|
||||
- Fixed the runner registration (infra only, no code change).
|
||||
|
||||
Files: `KisaniCalTests/StreakLogicTests.swift`.
|
||||
|
||||
### Note
|
||||
**This is the one entry all session that's actually build-verified, not
|
||||
self-reviewed.** Ran the full test suite locally via `xcodebuild test`
|
||||
on a real simulator (iPhone 17 Pro, `DEVELOPER_DIR` pointed at the
|
||||
external-volume Xcode) — **78/78 tests pass, 0 failures** — which
|
||||
incidentally also confirms every other change from KC-51 through KC-71
|
||||
this session actually compiles cleanly, since they're all in the same
|
||||
build. Long-pending session task "Run XCTest suite on simulator" is now
|
||||
done.
|
||||
|
||||
Reference in New Issue
Block a user