---
id: 11345
title: 'Modify AGENTS.md §0 Invariant 7: atomic self-assign + broadcast `[lane-claim]` to AGENT:*'
state: CLOSED
labels:
  - documentation
  - enhancement
  - ai
  - architecture
  - model-experience
assignees:
  - neo-opus-ada
createdAt: '2026-05-14T06:52:48Z'
updatedAt: '2026-06-07T17:11:31Z'
githubUrl: 'https://github.com/neomjs/neo/issues/11345'
author: neo-opus-ada
commentsCount: 0
parentIssue: null
subIssues: []
subIssuesCompleted: 0
subIssuesTotal: 0
blockedBy: []
blocking: []
closedAt: '2026-05-14T07:03:17Z'
---
# Modify AGENTS.md §0 Invariant 7: atomic self-assign + broadcast `[lane-claim]` to AGENT:*

## Context

Today's 3rd PR-collision (#11321/#11331/#11344) surfaced a discipline gap in lifecycle-event A2A patterns. The codified rule in §0 Invariant 6 says *"notify your peers"* (plural) on lifecycle events, but the practical interpretation slipped: PR #11343 was opened with **1:1 targeted A2A to reviewer** instead of **AGENT:* broadcast for collision-prevention**. Gemini opened a duplicate PR #11344 for the same ticket 15 minutes later, costing ~1.5-2 hours of swarm-effort in triage (her 6 commits + 4 comments + my Drop+Supersede review + Cycle 3 decline + GPT's independent V-B-A + her self-close + her redirect).

Operator framing 2026-05-14T23:55Z (paraphrased): *"feels like so much wasted effort. GPT and Claude might have resolved 2 own tickets in the same time. we have the codified rule: starting on a lifecycle item => A2A peers (includes sanity check on collisions)."*

Refinement direction 2026-05-15T00:10Z (paraphrased): *"pull-request-workflow is too late; ticket-intake is the right discipline location but only sometimes used; this feels like an AGENTS.md one-liner. assign (when starting to work on an item) => ping peers. ONE LINER is crucial."*

## The Problem

§0 Invariant 7 currently codifies the assignment gate but does NOT codify the broadcast obligation at assignment-time. The §0 Invariant 6 "notify your peers" reads as **post-event**, which agents interpret as "after PR-open / after ticket-create". The actual collision-prevention window is the **pre-action lane-claim moment**.

Two distinct A2A functions get conflated:

| Function | Cadence | Memory |
|---|---|---|
| **Review-routing** | 1:1 targeted to chosen reviewer | `feedback_swarm_pr_review_routing` ("ping ONE peer") |
| **Collision-prevention** | AGENT:* broadcast at lane-claim | `feedback_lifecycle_event_a2a_must_broadcast` (new today) |

Both fire complementarily; PR #11344 happened because the broadcast didn't fire when I opened PR #11343 (only targeted A2A to GPT for review).

## The Fix

**ONE LINER modification of AGENTS.md §0 Invariant 7.** Replace the current "Verify you are in the target ticket's `assignees`" wording with action-oriented "Self-assign + broadcast `[lane-claim]` to `AGENT:*`":

**Current Inv 7 (~270 chars):**
> 7. **No tracked file modification without a self-assigned ticket.** Verify you are in the target ticket's `assignees` before editing any git-tracked file. Enforcement: `pull-request-workflow.md §1.2`, `ticket-create-workflow.md §10`.

**New Inv 7 (~265 chars; -5 chars):**
> 7. **No tracked file modification without a self-assigned ticket.** Self-assign + broadcast `[lane-claim]` to `AGENT:*` before any git-tracked edit. Enforcement: `pull-request-workflow.md §1.2`, `ticket-create-workflow.md §10`.

**Net byte delta: −5 chars** on always-loaded surface. Substrate-removal, not addition — meets friction → gold symmetric requirement per `feedback_friction_to_gold_asymmetric_ratchet` memory.

**Why this shape:**

- **Atomic assign+broadcast gate** — "Self-assign + broadcast" is one inseparable action; can't satisfy half. Replaces "Verify you are in assignees" (which agents could pass without broadcasting)
- **ONE LINER preserved** — same line count, slightly shorter
- **Right time-point** — fires at lane-claim, ~15-60 minutes earlier than PR-open = collision-prevention window
- **Codifies bracket syntax** — `[lane-claim]` becomes canonical subject prefix per emerging A2A conventions today (`[lane-claim]`, `[ticket-create-complete]`, `[pr-opened]`, `[review-request]`)
- **NOT a rule-card demotion** — Inv 7 already tight at ~270 chars; per Discussion #11341 Cycle 2 Gemini sample (INV 5: 153B → 255B = 66% INCREASE), rule-card form would BLOAT short prose. Stays as compact natural-language invariant.

## AGENTS_STARTUP.md Mirror Sync

Per `#10736 AC11` mirror retention rationale: `AGENTS_STARTUP.md` §3.1 Inv 7 mirror must synchronize with the same wording. Single-line edit in the mirror too.

## Acceptance Criteria

- [ ] `AGENTS.md` §0 Invariant 7 wording replaced per the new shape above
- [ ] `AGENTS_STARTUP.md` §3.1 Invariant 7 mirror synchronized with same wording
- [ ] Byte delta documented: AGENTS.md Inv 7 prior/post + AGENTS_STARTUP.md Inv 7 prior/post (verify −5 chars or near-zero on each surface)
- [ ] No other invariants touched (Inv 1-6, 8 unchanged)
- [ ] No rule-card demotion attempted (this is a wording-replacement, not Discussion #11341 pilot extension)
- [ ] `git diff --check` passes
- [ ] PR body cites this ticket + feedback memory + PR #11344 empirical anchor + operator framing quotes

## Out of Scope

- Modifying §0 Invariant 6 (broadcast-obligation interpretation gap; could be a future ticket if needed)
- Modifying `pull-request-workflow.md` or `ticket-create-workflow.md` (the new wording references them as enforcement chain; no edits needed)
- Discussion #11341 pilot extension (this is a different ticket; not an INV1-style demotion)
- New skill creation
- New rule additions

## Avoided Traps

- **Bloating §0 with new invariant** — operator emphasis on "ONE LINER" + my asymmetric-ratchet memory anchors net-reduction discipline. Wording-replacement preserves count + slightly reduces bytes
- **Demoting Inv 7 to rule-card** — short-prose invariants BLOAT under rule-card form per Gemini's INV 5 empirical sample (#11341 Cycle 2). Keep as compact natural-language prose
- **Adding broadcast obligation to Inv 6 instead** — Inv 6 is post-event ("after lifecycle event"); operator's framing names the time-point as **at-assignment** (pre-event). Inv 7 is the assignment gate; that's the load-bearing location
- **Multi-PR scope-creep** — Discussion-shape options (modify Inv 6 AND Inv 7, or add new Inv 9, or...) intentionally rejected. Single-line wording-replacement only

## Related

- **`feedback_lifecycle_event_a2a_must_broadcast`** — feedback memory anchoring the discipline this ticket codifies (filed earlier this turn at private-memory location)
- **PR #11344 collision** — empirical anchor; 1.5-2h swarm-effort cost
- **#11339 / PR #11343** — predecessor §0 modification pattern (Layer 1 prose for PR base-main + INV1 cascade demotion pilot)
- **#11342** — recently-graduated Discussion #11341 pilot ticket; demonstrates §0 mutation discipline
- **`feedback_swarm_pr_review_routing`** — complementary memory (targeted A2A for review-routing); this ticket adds the broadcast cadence for collision-prevention; both fire alternately, not exclusively

Origin Session ID: 46c1f1f9-c521-4b71-85fa-f7cc5c7531ee

Handoff Retrieval Hints: `query_raw_memories("AGENTS.md INV7 lane-claim broadcast AGENT:* collision-prevention")`

🤖 Authored by @neo-opus-ada — operator-directed substrate-mutation following PR #11344 friction → gold reflection. Dogfooding the new discipline: broadcasting `[lane-claim]` to AGENT:* immediately after self-assignment, the very practice this ticket codifies.

## Timeline

- 2026-05-14T06:52:49Z @neo-opus-ada assigned to @neo-opus-ada
- 2026-05-14T06:52:49Z @neo-opus-ada added the `documentation` label
- 2026-05-14T06:52:49Z @neo-opus-ada added the `enhancement` label
- 2026-05-14T06:52:49Z @neo-opus-ada added the `ai` label
- 2026-05-14T06:52:49Z @neo-opus-ada added the `architecture` label
- 2026-05-14T06:52:49Z @neo-opus-ada added the `model-experience` label
- 2026-05-14T06:55:23Z @neo-opus-ada cross-referenced by PR #11346
- 2026-05-14T06:56:27Z @neo-gemini-pro assigned to @neo-gemini-pro
- 2026-05-14T06:58:13Z @neo-gemini-pro unassigned from @neo-gemini-pro
- 2026-05-14T07:03:17Z @tobiu closed this issue
- 2026-05-20T06:42:13Z @neo-gpt cross-referenced by #11671

