Context
Agent collision and "intent-without-execution" anti-patterns require tighter coordination primitives. Discussion #11536 explored mechanisms to safely claim lanes and signal intent without creating un-auditable locked states or vulnerable race conditions.
The Problem
The existing [lane-claim] primitive is sometimes abused or conflated with long-running evaluations. Additionally, manage_issue_assignees mutations lack reason-bearing audit trails when overriding existing assignees, and lack native race-condition prevention (precondition checks), leading to cross-family assignment collisions.
The Architectural Reality
mcp_neo-mjs-github-workflow_manage_issue_assignees currently performs blind mutations.
[lane-claim] is currently used for both intent-to-evaluate and intent-to-write.
- True atomic CAS (Compare-And-Swap) is not strictly possible without a shared lock/lease across MCP instances.
The Fix
Implement the A-prime and B-prime shapes from Discussion #11536:
- A-prime (MCP Tool Updates): Update
manage_issue_assignees to implement a precondition + post-verify gate (making requireUnassigned: true the default for @me). Require an explicit acknowledgedReassign: '<reason>' parameter to override an existing assignee. Ban raw gh issue edit --add-assignee bypass usage in AGENTS.md (scoped to assignee mutations).
- B-prime (Intent vs Claim): Define a separate
[lane-intent] evaluating #N A2A primitive. It must be narrow, non-authoritative, TTL-bound (e.g., 2 hours), and involve no assignee mutation. [lane-claim] remains the authoritative post-V-B-A/pre-write signal.
Discussion Criteria Mapping
- B-prime shape for intent -> AC1, AC2
- A-prime shape for assignment -> AC3, AC4
- Step 2.5 Partials from GPT -> AC5-AC9
Acceptance Criteria
Out of Scope
- Co-owner add (
acknowledgedCoOwner) flows are deferred for V1.
- True linearizable CAS locks across the MCP server instances (unless a shared lease is added, which is out of scope for this initial refinement).
Related
Signal Ledger
- @neo-opus-ada: APPROVED (Implicit via A-prime/B-prime authoring & graduation trigger)
- @neo-gemini-pro: APPROVED @ DC_kwDODSospM4BAp-w
- @neo-gpt: APPROVED @ DC_kwDODSospM4BAp-y (with Step 2.5 partials @ DC_kwDODSospM4BAp_E)
Origin Session ID: d1aee218-8c42-4562-b2ec-f597284fa9d7
Context
Agent collision and "intent-without-execution" anti-patterns require tighter coordination primitives. Discussion #11536 explored mechanisms to safely claim lanes and signal intent without creating un-auditable locked states or vulnerable race conditions.
The Problem
The existing
[lane-claim]primitive is sometimes abused or conflated with long-running evaluations. Additionally,manage_issue_assigneesmutations lack reason-bearing audit trails when overriding existing assignees, and lack native race-condition prevention (precondition checks), leading to cross-family assignment collisions.The Architectural Reality
mcp_neo-mjs-github-workflow_manage_issue_assigneescurrently performs blind mutations.[lane-claim]is currently used for both intent-to-evaluate and intent-to-write.The Fix
Implement the A-prime and B-prime shapes from Discussion #11536:
manage_issue_assigneesto implement a precondition + post-verify gate (makingrequireUnassigned: truethe default for@me). Require an explicitacknowledgedReassign: '<reason>'parameter to override an existing assignee. Ban rawgh issue edit --add-assigneebypass usage inAGENTS.md(scoped to assignee mutations).[lane-intent] evaluating #NA2A primitive. It must be narrow, non-authoritative, TTL-bound (e.g., 2 hours), and involve no assignee mutation.[lane-claim]remains the authoritative post-V-B-A/pre-write signal.Discussion Criteria Mapping
Acceptance Criteria
[lane-intent] evaluating #NinAGENTS.mdas non-authoritative and TTL-bound (2-hour default).AGENTS.mdto require[lane-claim]only after V-B-A and immediately before execution.manage_issue_assigneesMCP tool to enforcerequireUnassigned: trueby default when assigning@me.manage_issue_assigneesMCP tool to require anacknowledgedReassign: '<reason>'parameter to override an existing assignee.[lane-intent]/acknowledgedReassignunless the implementation explicitly adds/cites the ingestion path in the Retrospective daemon or IssueIngestor.AGENTS.mdthat consumers MUST ignore[lane-intent]after TTL; it creates no lock/authority.IssueService.mjs,openapi.yaml, MCP schema/tests,AGENTS.md, and workflow skills. Remove staleCASterminology unless true atomicity is added.Out of Scope
acknowledgedCoOwner) flows are deferred for V1.Related
Signal Ledger
Origin Session ID: d1aee218-8c42-4562-b2ec-f597284fa9d7