Attribute in-session review lanes
Epic 12251, child C7. Needs C3a (final decisions) and C3c (RoutingPanel).
## Original requirement (verbatim, epic ask 5 part)
"Minor/Standard keep in-session lanes whose model/agent the dispatch prompt names from the routing decision and telemetry attributes."
## Settled decisions
R9: the coder's dispatch prompt names the model/agent each in-session review lane must use, from the routing decision's review configuration; run telemetry records the lane, model and agent actually used. PRD risk: in-session lanes can only use models their runner's harness supports — filter to the author's harness.
## Approach (Architect §4.7)
- `dispatch_compose/task_prompt._start_here_block` (`:49`) gains a "Review lanes:" line from the final decision's `router_pick.review.lanes`, filtered to the author's harness: Claude author → Claude tiers; another built-in → its own provider's tiers; SDK agent → no line. Lanes follow `docs/policies/code-review-policy.md:47-54`, Standard until a tier is declared.
- `telemetry_publish` payload gains `review_lanes: [{lane, provider, model, agent_id|null}]`, validated as a sub-model at `routes/agent/fleet_observe.py:359`, other keys preserved. `portfolio/fleet/runner-charter.md` Finishing section names the field (one line).
- RoutingPanel gains a "Review lanes used" section reading the task's `run_telemetry` rows, display names only.
Credentials & reach:
- Dev UI (lanes on the panel): `me/jaah/debug/main/operator-login` and `org/console/dev-login` — verified.
- API tests: the worktree only — verified.
Out of scope: changing account quota semantics or spillover; training a model from scratch; routing analysis personas before coder tasks have data; public marketplace billing; any ledger metric definition (owned by the outcome ledger epic). MUST NOT change the code-review policy's tier definitions. No blind children (C6a).
Done means:
- AC13 In-session lanes attributable. → Verify: an API test asserts a Minor/Standard coder dispatch prompt names the review lane model/agent from the decision. On dev, the run telemetry for a finished coder task shows the lane and model used.
- Tests: harness filtering (Claude / other built-in / SDK agent → no line); telemetry with `review_lanes` validates, malformed sub-model → 422, unknown other keys preserved; panel renders display names, wraps at 390px.
- Gates (AC16): `./dc check quick` green; changed-area suites green; merge lane `./dc check full` green.
Outcome
Coder dispatch now names in-session review lanes (model/subagent on author's harness, Standard default); telemetry validates review_lanes; Routing tab shows lanes used. Quick gate green, merged #7642 (b5837f4) via lane; 390px check clean. Deploy superseded; dev AC13 oracle unverified. Memory: used mem-31277; proposed 0.
Artifacts
Activity
- Draft
- Ready
- Runner started
- Runner ended (done)