docs: log KC-72 (StreakLogicTests fix + runner recovery)
Some checks failed
Release / archive-and-export (push) Failing after 1m9s
Some checks failed
Release / archive-and-export (push) Failing after 1m9s
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
|
API key and add the 3 secrets before the next merge to `main` actually
|
||||||
exercises this path. `ExportOptions.plist` needed no changes (already
|
exercises this path. `ExportOptions.plist` needed no changes (already
|
||||||
`method: app-store` with the correct team ID).
|
`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