Files
crossbar/docs/plans/v2.1/README.md
T

1.9 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:2 in TestQueueFullIs503; verified with a diagnostic build; the given internal/proxy/served_test.go reproduces it on every run.
  • 02-props-loaded-only — on a router only status.value == "loaded" counts as loaded; the poller asks /props?model=X only 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 in limiter_test.go, proxy_test.go and cancel_test.go now wait on limiter state (Queued/InFlight); the one sleep left is a deliberate lower bound. Five clean -race runs 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. Branch v2.1 from master after v2 merges. One task, one fresh OpenCode session, one commit. Given files are copied and never edited.

Changes during the run

(none yet)