Repository navigation
ci: cmd/codeaf finishes inside its touched leg (busy case 200 ms, codeaf leg 25m) - #2296
Merged
Merged
Conversation
The busy error case held a real writer on a second handle and let the backend's store wait out the full 10-second SQLite busy timeout. That one subtest was 10.0 of the workstream tests' 11.2 seconds in cmd/codeaf. It now sets PRAGMA busy_timeout to 200 ms on the backend's own single connection, reads it back and fails unless it took, then holds the same real writer. The refusal still travels SQLITE_BUSY -> ErrBusy -> wire busy through the real store and dispatch. Production keeps its 10 s. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cmd/codeaf runs unsharded (sharding it failed in #1734). Its serial suite measured 1065 s (17.8 min) on the 4-vCPU runner on 2026-11-03, 1053 s of it in tests that predate the workstream work, so the leg hit the Makefile's 15-minute timeout and every test after the cut went unchecked. The base branch's own runs time out the same way. Only the codeaf leg passes --timeout 25m; tui3, session and rest keep the Makefile's 15m. A timeout is still red. docs/rules/ci.md records the exception and that it goes once the suite is back under 15 minutes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The PR gate's
touched codeafleg onworkstreams/mainhits the 15-minute package timeout (panic: test timed out after 15m0s), so everycmd/codeaftest after the cut goes unchecked. This is ENG-CI of the Workstreams plan.Measured with a per-test JSON run of the whole package on the CI runner at
dd749e133:TestAppRelayOutageO1O2O3O4O593 s,TestAppRelayRestartP2UnknownUntilPeerReturnsThenActuallyOffline66 s,TestC27NewChatByDefaultStaysQuiet55 s,TestMemoryPausedJobLifecycle39 s)TestAppWorkstreamWireConformance/errors/busywaiting out SQLite's real 10 s busy timeoutThe base branch's own run at
19f4df464times out the same way, so the base alone is over the limit.Changes
tests:the conformancebusycase setsPRAGMA busy_timeoutto 200 ms on the backend's own single store connection, reads it back and fails unless it took, then holds the same real writer on a second handle. The refusal still goes SQLITE_BUSY ->ErrBusy-> wirebusythrough the real store and dispatch; no synthetic error. Production keeps its 10 s. Measured after, same base: the busy subtest 10.04 s -> 0.22 s (passes), the workstream tests 11.2 s -> 1.8 s; with app: workstream agent prompt and tools (proposals, drafts, its own pages) #2289's agent tests also in, 42 workstream tests take 2.0 s.ci:only the codeaf leg passes--timeout 25mtotouched-verdict.sh(a single expression on the existing line, with a comment giving the measurement). tui3, session and rest pass no--timeoutand keep the Makefile's 15m. A timeout is still red. Shardingcmd/codeaffailed in ci: touched packages runs in parallel legs and re-checks a failure before blaming the change #1734, so it is not sharded here.docs/rules/ci.mdrecords the exception and that it goes once the suite is back under 15 minutes.No
t.Parallel()and no seeding changes: the rest of the workstream tests total about 1.2 s.Validation contract
busycode from a real lock held by a second handle, through the backend's real store and error mapping. Test:TestAppWorkstreamWireConformance/errors/busy(assertions unchanged).workstreamWireHoldWriter.internal/workspace/or in any non-test Go file.ci.ymlline; thetouched codeafleg on this PR finishes without the timeout.docs/rules/ci.mdstates the exception and why.CI on this PR
touched codeafran the whole package in 1035 s (17.3 min) with--timeout 25m: no timeout. It is red only on failures also red onworkstreams/main's own runs:TestAppChatRowsR2SavedTurnTimeandTestAppChatStartupR3QuietRelease(attribution inconclusive, as on the base) andTestRecipeDoorWritesTheWorktreeWhenOnlyTheCheckoutIsHeld(already failing on the base).light gateis red only on the internal/session laws ratchet (TestNoRoadInTheTaskEngineHasMoreEndingsThanItsLedgerRow,TestNoRoadInTheMemoryEngineHasMoreEndingsThanTheCeiling), also red on the base. For comparison, the codeaf leg onworkstreams/mainatdd749e133and4dcd5150ftimed out at 15m.Left for the base's owners
The real fix is the base's long real-time waits (the 60 tests of 5 s or more, many of them exactly 10, 15, 20, 25 or 30 s). Once the suite is back under 15 minutes, drop the 25m line.
Full checkrunscmd/codeafunder the same 15m and is not changed here.🤖 Generated with Claude Code