Files
crossbar/docs/plans/v2.2/README.md
T
2026-09-25 13:48:16 -07:00

2.4 KiB

v2.2 implementation plan: what the hyperborea deploy exposed

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: two small gaps found on 2026-09-25 when crossbar went live on hyperborea.

  • 01-route-templates — PLAN.md's one-route-per-OpenCode-instance launcher produces route names the config has never seen, and unknown routes are 404. A route named opencode-* now serves every opencode-<something>; leases and accounting stay per concrete route. Given: config/config_v22_test.go, proxy/template_test.go, admin/admin_template_test.go.
  • 02-broadcasts — titan roams between two Wi-Fi networks and hyperborea is on both segments, so a wake target needs more than one broadcast address. Given: wake/broadcasts_test.go (+ TestWakeBroadcasts in the config test above).

Order matters: the config given test covers both tasks, so internal/config is red on one method between task 01's commit and task 02's. Task 01's text says so; the gate runs after 02.

How this plan was made: acceptance tests first, no reference implementation; the given tests compiled against a panic-only skeleton of the new names and failed on the v2.1 tree for the intended reasons.

Global constraints

  • Everything in AGENTS.md. Branch v2.2 from master. One task, one fresh OpenCode session, one commit. Given files are copied and never edited; earlier plans' given files stay protected.

Changes during the run

  • 2026-09-25, task 01, first session: ten minutes circling the line budget — config.go was already at 401 lines and the task named no new file for the package. Owner fault: the task now creates internal/config/route.go (and allows internal/proxy/route.go). Session stopped and restarted on a clean tree.
  • 2026-09-25, task 02: the task told the implementer to modify example.toml, which is a v2 given file (protected). Owner fault — a replacement should have been given. The one-line change (the commented broadcasts list) is adopted as the v2.2 given copy of example.toml.
  • Both tasks first-gate: 01 in 21 min after the restart, 02 in 8 min. Task 02 edited internal/config/identity.go rather than config.go because that is where Wake lives (logged deviation, correct call — owner named the wrong file).