You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b091bbd
Browse filesBrowse the repository at this point in the historyBrowse files
* F1c: shutdown wiring and /api/runner
Store write gate with a one-time shutdown capability for settling
coordinators; ShuttingDownError maps to 503 and BadRequest to 400; the
merge coordinator rethrows ShuttingDownError instead of swallowing it and
settles irreversible merges through the capability; the runner rejects
admission at step 1; admitted requests drain (AGENTS.md) and the gate
closes after the drain; idle keep-alive sockets are closed during shutdown;
/api/runner status and replayable cancel-attempt, retry and cancel-task.
Corrects the contract's shutdown steps 1 and 3 to follow the AGENTS.md
drain rule.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Refuse malformed /api/runner requests with 400 before recording them
An unknown action, a non-integer expectedStateVersion, or a missing or
malformed attempt ID now throws BadRequest before userAction, so the
request answers 400 and nothing is saved under its action ID. Before,
a bad attempt ID was refused inside userAction and recorded, so a
corrected resend under the same key got ActionIdReused.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Run the shutdown test's Git commands through fixtureGit
main (#82) runs every test Git command with the hardened options and an
allowlisted environment. The review-load gate test now commits through
test/fixtures/git.ts like the other tests.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* Test shutdown settlement after the gate; log unsaved answers; lighter runner view
- A question running at shutdown now has a test that its "Server stopped"
answer is written after the gate closes, and GitHub's merge refusal has
one for the same case. Before, removing the capability from either
write failed no test.
- A failed answer that cannot be saved is logged instead of dropped.
- /api/runner reads the last 20 attempts with a result flag, not every
attempt's decoded result.
- settleWith() in lifecycle.ts replaces three copies of the capability
wrapper.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
0 commit comments