You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: "Narrow, non-authoritative, TTL-bound pre-V-B-A signal for collision-prone / high-blast / long-V-B-A lanes (deep memory-mining, tech-debt-radar, multi-turn architectural V-B-A). Distinct from authoritative `[lane-claim]` (post-V-B-A). Triggers: Use this skill BEFORE broadcasting `[lane-intent] evaluating #N` to confirm scope-trigger qualifies — narrow scope, not blanket coverage. Do NOT auto-fire for short single-turn V-B-A where direct `[lane-claim]` after V-B-A suffices."
4
+
---
5
+
6
+
# Lane-Intent Skill
7
+
8
+
Before broadcasting `[lane-intent] evaluating #N` OR explaining lane-intent semantics, read `.agents/skills/lane-intent/references/lane-intent-protocol.md` for the 3-condition scope-trigger gate, TTL+recovery semantics, and anti-patterns.
9
+
10
+
**Source of Authority:** AGENTS.md §0 Inv 7 (Map entry-point) + peer-role-mode §6.5 ([lane-claim] vs [lane-intent] split per #11537) + Discussion #11536 graduation + ADR 0010 (deep rationale).
11
+
12
+
**First payload line MUST declare:** "Lane-intent active: narrow non-authoritative pre-V-B-A signal, 2h TTL. Scope-trigger discipline applies — read protocol before broadcasting."
*(Per #11537, graduated from Discussion #11536 OQ1. Deep rationale + canonical examples + edge cases → ADR 0010.)*
4
+
5
+
## 0. The Essential
6
+
7
+
**`[lane-intent]` is a narrow, non-authoritative, 2-hour TTL-bound A2A broadcast signaling peers you are EVALUATING a lane but have NOT yet completed V-B-A or written anything.**
**Non-authoritative semantics**: `[lane-intent]` does NOT count in peer-role-mode §6.6 Source-of-Authority hierarchy. A peer who proceeds past it is NOT violating substrate. Yield if a peer posts `[lane-claim]` faster.
16
+
17
+
## 1. Scope-Trigger Gate
18
+
19
+
`[lane-intent]` is **OPTIONAL** and **NARROW**. Broadcast ONLY when ALL three conditions hold:
**TTL: 2 hours** (session lifespan). After 2h, `[lane-intent]` expires — consumers MUST ignore.
48
+
49
+
**Read-path semantics**: consumer-enforced. `list_messages` readers compute `sentAt + TTL` and treat expired as inert. Substrate does NOT auto-delete.
50
+
51
+
**Expiration paths**:
52
+
-**Converted to `[lane-claim]`** — V-B-A done; claim supersedes
53
+
-**Converted to `[yield]`** — V-B-A surfaced blocker/conflict/better path
54
+
-**TTL-expired silently** — peer moved on; lane available
55
+
56
+
## 4. Tool-Side Complement
57
+
58
+
`[lane-intent]` is purely A2A. The mechanical assignee gate is `manage_issue_assignees` per #11537 (precondition + post-verify, fires post-V-B-A during `[lane-claim]`, NOT during `[lane-intent]` phase). Pre-V-B-A self-assign is forbidden.
59
+
60
+
## 5. Anti-Patterns
61
+
62
+
-**Blanket `[lane-intent]`** — over-triggering for every lane-pickup
63
+
-**`[lane-intent]` as authority surrogate** — citing it in §6.6 conflict resolution
64
+
-**`[lane-intent]` for short single-turn V-B-A** — over-triggering
65
+
-**Open-ended intent** — no `CONVERTS-TO` declared → discipline-dressed-deference
66
+
-**TTL ignored on read-path** — treating 8-hour-old intent as live state
67
+
-**Self-assigning during `[lane-intent]` phase** — assignment is post-V-B-A only
Copy file name to clipboardExpand all lines: .agents/skills/peer-role/references/peer-role-mode.md
+28-2Lines changed: 28 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -49,9 +49,14 @@ Share vocabulary with `/lead-role`. A convergence artifact is either a linked Id
49
49
50
50
### 6.5 Lane-Announce-A2A Protocol
51
51
52
-
*(Codified per #11209, graduated from Discussion #11206 Option A-prime convergence.)*
52
+
*(Codified per #11209, graduated from Discussion #11206 Option A-prime convergence. Expanded per #11537, graduated from Discussion #11536 Pre-Write Coordination Substrate.)*
53
53
54
-
Before any **write-operation** (state mutation, PR open, issue assignment, branch push creating new artifact), peer MUST send an A2A broadcast announcing the lane-claim. This is the collision-prevention substrate the Flat Peer-Team model needs to operate without orchestrator-worker delegation.
54
+
The substrate operates **two distinct primitives** for pre-write coordination:
55
+
56
+
-**`[lane-claim]`** — authoritative, **post-V-B-A**, immediately-before-write-operation. Used for ticket-bound or substrate-bound lanes the peer is committing to execute. Counts in §6.6 Source-of-Authority hierarchy as "Current Public Authority" when paired with self-assign + open PR.
57
+
-**`[lane-intent]`** — non-authoritative, **pre-V-B-A** soft signal, 2-hour TTL. NARROW SCOPE: only for collision-prone / high-blast / long-V-B-A lanes where duplicate exploration is plausible (e.g., deep `/memory-mining`, `/tech-debt-radar`, multi-turn architectural V-B-A). Does NOT count in §6.6 authority hierarchy. Per AGENTS.md §0 Invariant 7 entry-point + full discipline in `.agents/skills/lane-intent/` skill substrate.
58
+
59
+
**`[lane-claim]` AC2 timing rule (per #11537):** broadcast happens AFTER the source-of-authority collision check (§6.6) AND V-B-A scope-validation AND immediately before the write-operation. Pre-V-B-A `[lane-claim]` is forbidden — it dilutes authority semantics + creates race-to-announcement incentive (per Discussion #11536 GPT V-B-A rejection of Option B). If you need a pre-V-B-A signal because V-B-A will take multiple turns, use `[lane-intent]` (narrow scope only).
55
60
56
61
**Trigger scope — write-operations only**:
57
62
-**REQUIRED**: file a ticket, open a PR, branch from `origin/dev`, assign an issue, push a commit that creates a new artifact
@@ -62,6 +67,25 @@ Before any **write-operation** (state mutation, PR open, issue assignment, branc
- Recipient: `AGENT:*` broadcast (let all peers V-B-A against parallel-claim risk)
64
69
70
+
**Tool-side enforcement (per #11537 AC3/AC4):** issue assignment is mechanically gated via `manage_issue_assignees` MCP tool. The tool fetches current assignees, rejects blind-add with `ASSIGNEE_CONFLICT` (409) unless `acknowledgedReassign: '<reason>'` is provided (strict-replacement with audit-trail comment persistence). Direct `gh issue edit --add-assignee` / `--remove-assignee` invocations bypass this gate and are **forbidden for agents** (narrow scope: assignee mutation only; PR review, checks, API reads still use `gh`). This is the mechanical safeguard complementing the discipline above — empirical anchor §7 "Lane-claim without authority check" (PR #11245).
*(Codified per #11537 AC10, graduated from Discussion #11536 OQ6 resolution.)*
75
+
76
+
When a peer needs to override an existing `[lane-claim]` (e.g., operator-recommendation-via-prompt that wasn't visible to the original claimant, cross-family corrective-authorship per AGENTS.md §6.2.1, context-exhaustion handoff), use the `[lane-override]` primitive:
77
+
78
+
**Required A2A shape**:
79
+
- Subject: `[lane-override] reclaiming #N from @<previous-claimant>`
- Recipient: `AGENT:*` broadcast + DM to previous claimant
82
+
83
+
**TTL: 2 hours** (aligned with standard session lifespan). After 2h, `[lane-override]` expires; the lane reverts to the original claimant's `[lane-claim]` (if still within its own TTL). If both the original `[lane-claim]` and the `[lane-override]` are TTL-expired, the lane falls through to the next claimant per timing order.
84
+
85
+
**Tool-side complement:**`manage_issue_assignees` with `acknowledgedReassign: '<reason>'` performs the mechanical strict-replacement; the audit-trail comment captures the reason as GitHub-visible artifact (per #11537 AC8 — reason must be persisted in a graph-readable surface, not transient event metadata).
86
+
87
+
**Anti-pattern guard:**`[lane-override]` is for legitimate corrective handoffs, NOT for racing-to-PR-by-asserting-override. If two peers both claim authority, escalate to §6.6 conflict-resolution hierarchy + operator if unresolved. The TTL exists to prevent permanent lock if the overriding agent crashes / gets stuck in a loop.
88
+
65
89
### 6.6 Source-of-Authority Collision Check
66
90
67
91
*(Codified per #11209 Option A-prime peer step 6.)*
@@ -107,6 +131,8 @@ The absence of subservience ("Helpful Assistant" regression drift) is not mere n
107
131
-**Waiting for lane assignment:** Read the visible lane landscape and self-select based on independent judgment of what your domain context most enables. Lead doesn't delegate lanes; lead surfaces options and trusts peer judgment.
108
132
-**Lane-claim without source-of-authority collision check (per §6.6):** Sending `[lane-claim]` A2A without running the 3-step authority check (current assignee / open PRs / recent lane-claim A2As) → parallel-claim collision risk. Empirical anchor: PR #11199 vs PR #11203 35-second-margin near-miss.
109
133
-**Lane-claim for read-only sweep (over-triggering, per §6.5 OQ1 carve-out):** Sending `[lane-claim]` A2A for diagnostic queries / V-B-A reads / healthchecks creates coordination noise without preventing actual collisions. Write-operations only.
134
+
-**`gh issue edit --add-assignee` / `--remove-assignee` bypass (per #11537):** Direct `gh` CLI invocation for assignee mutation bypasses the `manage_issue_assignees` MCP tool's precondition + post-verify gate (`requireUnassigned: true` default + `acknowledgedReassign: '<reason>'` strict-replacement override + audit-trail comment persistence). Narrow ban scope: ASSIGNEE MUTATION ONLY — PR review, checks, API reads, label management, project membership still use `gh`. Broader "no direct gh state mutation" policy is a separate high-blast Discussion. Empirical anchor: same PR #11245 pattern above (the bypass is the mechanical surface of the discipline-dressed-deference anti-pattern). Mirrors CLAUDE.md §11 "Bash Ban" pattern (forbidden bash redirection for file editing) at the assignee-mutation surface.
135
+
-**Pre-V-B-A `[lane-claim]` (per #11537 AC2 + Discussion #11536 GPT V-B-A rejection of Option B):** Broadcasting `[lane-claim] taking #N (V-B-A pending)` reads as claim+disclaimer and conflicts with §6.6 authority hierarchy where `[lane-claim]` is Current Public Authority. Dilutes authority semantics + creates race-to-announcement incentive. Use `[lane-intent]` (narrow scope, non-authoritative, 2h TTL) for pre-V-B-A signal in collision-prone lanes only.
110
136
111
137
## 8. Halt Triggers (Machine-Checkable)
112
138
-**Empty agreement:** Zero substantive contribution beyond "looks good" → force evidence-backed restatement OR explicit "alignment after checking X/Y/Z with residual risks named" OR halt.
Copy file name to clipboardExpand all lines: .agents/skills/skills.manifest.json
+11Lines changed: 11 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -112,6 +112,17 @@
112
112
"learn/guides/fundamentals/CodebaseOverview.md"
113
113
]
114
114
},
115
+
"lane-intent": {
116
+
"name": "lane-intent",
117
+
"description": "Narrow, non-authoritative, TTL-bound pre-V-B-A signal for collision-prone / high-blast / long-V-B-A lanes (deep memory-mining, tech-debt-radar, multi-turn architectural V-B-A). Distinct from authoritative `[lane-claim]` (post-V-B-A). Triggers: Use this skill BEFORE broadcasting `[lane-intent] evaluating #N` to confirm scope-trigger qualifies — narrow scope, not blanket coverage. Do NOT auto-fire for short single-turn V-B-A where direct `[lane-claim]` after V-B-A suffices.",
118
+
"routerByteBudget": 12,
119
+
"payloadBudget": 80000,
120
+
"claudeSymlinkRequired": true,
121
+
"downstreamDocsTargets": [
122
+
"learn/agentos/ProgressiveDisclosureSkills.md",
123
+
"learn/guides/fundamentals/CodebaseOverview.md"
124
+
]
125
+
},
115
126
"lead-role": {
116
127
"name": "lead-role",
117
128
"description": "Switch into relaxed-planning + dialogue-first mindset when delegated lead role for coordination. Suspends Auto Mode velocity-bias for the duration. Triggers: Use this skill IMMEDIATELY when the user delegates lead with explicit phrases (\"you take the lead\", \"coordinate the team\", \"lead this phase\", \"drive the next planning step\", \"chief-architect\" when scope is swarm/substrate/roadmap/multi-ticket), OR when AGENTS.md §22 mailbox check surfaces a valid `lead-role-baton`, OR when you have just authored a substrate-shaped ticket about to enter implementation, OR via direct /lead-role invocation.",
0 commit comments