Context
Operator feedback on 2026-06-20 surfaced the same #10777 failure class in two active peers: a wake/FYI message was correctly classified as low-action, but the turn then ended without asking the second question: "do I have an active lane, or did I verify that no lane exists?"
Fresh anchors:
- Vega ended reactive on stale gates: PR #13568 was already merged and follow-up #13570 was open/assigned.
- Ada independently reported the same failure: #13561 and #13567 were cited as "at the merge gate" even though both had already merged.
- Ada's #10777 peer-role comment (
IC_kwDODSospM8AAAABG3UdYg) converges on the two-phase wakeDisposition / laneContinuation split and adds three refinements: awaiting-own-PR is not active-lane, named gates need same-turn checkedAt, and verified-no-lane needs a full backlog survey.
Release classification: boardless (Agent OS stability follow-up; not release-blocking unless the operator explicitly boards it).
Duplicate sweep: live latest-open sweep at 2026-06-20T00:25Z found #10777 as the source family and #12612/#12633/#11829 as broader wake-driver enforcement work, but no narrow terminal-evidence lint ticket. A2A recency sweep at 2026-06-20T00:25Z found Ada's #10777 peer-role comment and no competing lane-claim for this exact leaf.
The Problem
The current substrate says the right thing, but agents can still launder idling through disciplined-sounding terminal prose:
wakeDisposition=awareness|stale answers only whether to engage the message; it does not answer whether the turn has an active lane.
awaiting-own-PR on merge/review/CI is a background watch, not active-lane.
- A terminal that names an issue or PR gate can be stale unless it cites same-turn live evidence.
verified-no-lane can collapse into an own-PR or own-epic slice instead of a named full-backlog survey.
This has recurred despite #13197, the current /post-review-pickup wording, and multiple memories. More prose alone is losing to rationalization.
The Architectural Reality
The source-of-authority family is #10777. The operative substrate already includes:
.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md: lifecycle cycle, lane-state: boundary, PR-state freshness gate, and no generic idle terminal.
.agents/skills/peer-role/references/peer-role-mode.md: stale-wake silent-mark-read anti-pattern.
ai/daemons/wake/wakeLaneDirective.mjs: narrowed hard never-idle directive after #13197.
This ticket is deliberately smaller than #12633. #12633 is the deferred external liveness enforcement layer that independently computes claimable work through deployment-aware state. This ticket only validates the evidence shape of an agent-authored turn-terminal claim so stale gate names and own-slice verified-no-lane claims are mechanically rejected.
The Fix
Add a focused terminal-evidence lint/check on the existing Agent OS lint/tooling surface chosen during implementation intake. The checker should validate machine-readable or conventionally structured lane-state / turn-terminal text in lifecycle artifacts (final responses, A2A lifecycle handoffs, or the selected persisted turn-boundary surface) without becoming a contribution counter.
Rules to encode:
wakeDisposition=awareness|stale|suppressed is not a turn terminal unless paired with laneContinuation.
laneContinuation=active-lane explicitly excludes awaiting-own-PR states: own PR waiting on merge, review, or CI resolves to next-lane unless the author has concrete work on that PR.
- Any terminal that names a PR or issue gate must cite a same-turn
checkedAt for each named artifact.
verified-no-lane must cite a named full-backlog survey artifact (list_issues, gh issue list, or equivalent) with checkedAt and a considered-lanes summary. Own-PR-only or own-epic-only surveys fail.
- Valid
next-lane, blocker-routed, and active implementation/review states must pass without requiring backlog survey noise.
If implementation modifies .agents/skills/**, follow Progressive Disclosure: keep always-loaded/router deltas minimal, move rule body into the relevant payload or lint docs, and include the /turn-memory-pre-flight load-effect audit in the PR body.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Evidence |
| Turn-terminal lint/check |
#10777 latest body + Ada peer-role comment IC_kwDODSospM8AAAABG3UdYg |
Reject stale or under-evidenced lane-state terminal claims |
If a lifecycle artifact is not parseable, warn/fail with a targeted message naming the missing shape |
Unit fixtures for valid next-lane, stale gate, own-PR watch, and verified-no-lane cases |
checkedAt gate evidence |
/post-review-pickup PR-state freshness gate |
Any named PR/issue gate must include same-turn live-check evidence |
Awareness/no-op messages with an already active lane do not need backlog proof |
Fixture with #13568 stale gate class fails without checkedAt |
verified-no-lane evidence |
#10777 Turn-terminal boundary AC |
Must include a full backlog survey artifact, not only own PRs |
If backlog tooling is unavailable, terminal must route a blocker and choose another lane where possible |
Fixture with own-PR-only survey fails; named backlog survey passes |
| Relationship to #12633 |
#12633 deferral comment |
This ticket validates the author-provided terminal evidence shape only |
It must not implement deployment-aware external claimability enforcement |
PR body states no contribution counter, FAIR band, central assignment, or Stop-hook enforcement |
Decision Record Impact
None. This is aligned with #10777 and the #11829/#12630 lineage, while explicitly avoiding the deferred #12633 external-enforcement scope.
Acceptance Criteria
Out of Scope
- Full external liveness enforcement / Stop-hook behavior from #12633.
- Provider-backed claimability computation across GitHub/GitLab/cloud tenants.
- Contribution counting, PR quotas, FAIR bands, scoreboards, or central lane assignment.
- Changing the human-only merge rule.
Related
Parent/source family: #10777
Broader deferred enforcement: #11829, #12612, #12633
Recent evidence anchors: #13561, #13567, #13568, #13570
Retrieval Hint: wakeDisposition laneContinuation checkedAt verified-no-lane backlog survey awaiting-own-PR terminal lint
Context
Operator feedback on 2026-06-20 surfaced the same #10777 failure class in two active peers: a wake/FYI message was correctly classified as low-action, but the turn then ended without asking the second question: "do I have an active lane, or did I verify that no lane exists?"
Fresh anchors:
IC_kwDODSospM8AAAABG3UdYg) converges on the two-phasewakeDisposition/laneContinuationsplit and adds three refinements:awaiting-own-PRis not active-lane, named gates need same-turncheckedAt, andverified-no-laneneeds a full backlog survey.Release classification: boardless (Agent OS stability follow-up; not release-blocking unless the operator explicitly boards it).
Duplicate sweep: live latest-open sweep at 2026-06-20T00:25Z found #10777 as the source family and #12612/#12633/#11829 as broader wake-driver enforcement work, but no narrow terminal-evidence lint ticket. A2A recency sweep at 2026-06-20T00:25Z found Ada's #10777 peer-role comment and no competing lane-claim for this exact leaf.
The Problem
The current substrate says the right thing, but agents can still launder idling through disciplined-sounding terminal prose:
wakeDisposition=awareness|staleanswers only whether to engage the message; it does not answer whether the turn has an active lane.awaiting-own-PRon merge/review/CI is a background watch, notactive-lane.verified-no-lanecan collapse into an own-PR or own-epic slice instead of a named full-backlog survey.This has recurred despite #13197, the current
/post-review-pickupwording, and multiple memories. More prose alone is losing to rationalization.The Architectural Reality
The source-of-authority family is #10777. The operative substrate already includes:
.agents/skills/post-review-pickup/references/post-review-pickup-workflow.md: lifecycle cycle,lane-state:boundary, PR-state freshness gate, and no generic idle terminal..agents/skills/peer-role/references/peer-role-mode.md: stale-wake silent-mark-read anti-pattern.ai/daemons/wake/wakeLaneDirective.mjs: narrowed hard never-idle directive after #13197.This ticket is deliberately smaller than #12633. #12633 is the deferred external liveness enforcement layer that independently computes claimable work through deployment-aware state. This ticket only validates the evidence shape of an agent-authored turn-terminal claim so stale gate names and own-slice
verified-no-laneclaims are mechanically rejected.The Fix
Add a focused terminal-evidence lint/check on the existing Agent OS lint/tooling surface chosen during implementation intake. The checker should validate machine-readable or conventionally structured
lane-state/ turn-terminal text in lifecycle artifacts (final responses, A2A lifecycle handoffs, or the selected persisted turn-boundary surface) without becoming a contribution counter.Rules to encode:
wakeDisposition=awareness|stale|suppressedis not a turn terminal unless paired withlaneContinuation.laneContinuation=active-laneexplicitly excludesawaiting-own-PRstates: own PR waiting on merge, review, or CI resolves tonext-laneunless the author has concrete work on that PR.checkedAtfor each named artifact.verified-no-lanemust cite a named full-backlog survey artifact (list_issues,gh issue list, or equivalent) withcheckedAtand a considered-lanes summary. Own-PR-only or own-epic-only surveys fail.next-lane,blocker-routed, and active implementation/review states must pass without requiring backlog survey noise.If implementation modifies
.agents/skills/**, follow Progressive Disclosure: keep always-loaded/router deltas minimal, move rule body into the relevant payload or lint docs, and include the/turn-memory-pre-flightload-effect audit in the PR body.Contract Ledger Matrix
IC_kwDODSospM8AAAABG3UdYglane-stateterminal claimscheckedAtgate evidence/post-review-pickupPR-state freshness gatecheckedAtverified-no-laneevidenceDecision Record Impact
None. This is aligned with #10777 and the #11829/#12630 lineage, while explicitly avoiding the deferred #12633 external-enforcement scope.
Acceptance Criteria
checkedAt.active-lanewhen the only cited lane isawaiting-own-PRon merge/review/CI.verified-no-lanewhen the evidence is only an own-PR/own-epic slice and lacks a named full-backlog survey.next-lane,blocker-routed, active review/implementation, andverified-no-lanewith a named backlog survey..agents/skills/**changes, the source ticket carries the Contract Ledger and the PR body carries the load-effect audit required by the skill substrate gate.Out of Scope
Related
Parent/source family: #10777
Broader deferred enforcement: #11829, #12612, #12633
Recent evidence anchors: #13561, #13567, #13568, #13570
Retrieval Hint:
wakeDisposition laneContinuation checkedAt verified-no-lane backlog survey awaiting-own-PR terminal lint