2.8 KiB
2.8 KiB
v2.1 implementation plan: fixes found while running v2
For the implementing model: do not work from this file. The owner gives you one task file at a time. This file is the index for the owner and the reviewer.
Goal: close the two defects and one gap found while v2 ran, without new features.
- 01-cancel-record — a delivered response is never recorded as a 499; cancellation is what
the reverse proxy observed. Found 2026-09-25 by the intermittent
Errors:2inTestQueueFullIs503; verified with a diagnostic build; the giveninternal/proxy/served_test.goreproduces it on every run. - 02-props-loaded-only — on a router only
status.value == "loaded"counts as loaded; the poller asks/props?model=Xonly for those (the router autoloads a model named in that query) and keeps the answers per model (Status.Models,PerSlotCtxFor); the guard and the hosts view use them. Facts verified against straylight's router on 2026-09-25. Given tests:health/props_router_test.go,proxy/ctxguard_router_test.go,admin/admin_models_test.go. 03-timing-margins— done by the owner directly (test-only work, no implementer task): the remaining ordering sleeps inlimiter_test.go,proxy_test.goandcancel_test.gonow wait on limiter state (Queued/InFlight); the one sleep left is a deliberate lower bound. Five clean-raceruns of both packages except the 499 defect task 01 fixes.
How this plan was made: acceptance tests first; no reference implementation. The given test for task 01 was run against the v2 tree (fails six of six) and against a throwaway fix that follows the task's rule (passes four full package runs with the v1 cancel tests); the throwaway was discarded.
Global constraints
- Everything in
AGENTS.md. Branchv2.1frommasterafter v2 merges. One task, one fresh OpenCode session, one commit. Given files are copied and never edited.
Changes during the run
- 2026-09-25, task 01, first session: 8 minutes of reading, then it tried to read Go's
httputil/reverseproxy.gofrom the nix store, the sandbox refused, and it ended the turn without a commit — the eighth refusal-ending of the day. Model fault, but the want was legitimate: the task now states theReverseProxyfacts it was after and says the standard library cannot be read from the sandbox. Restarted. - 2026-09-25, task 02: the given
ctxguard_router_test.goassertsX-Crossbar-Ctx: moved:small>big; v2's code emittedmoved:small><big. Owner fault twice over: the v2 task 02 text wrote the separator as<from>>><to>(ambiguous), and no v2 given test asserted the header, so the misreading passed. The example in that task (moved:small>big) is the intended format; Ornith changedmovedHeaderto match and said so. Accepted as part of task 02.