Frontmatter
| title | >- |
| author | tobiu |
| state | Merged |
| createdAt | Apr 18, 2026, 4:35 PM |
| updatedAt | Apr 18, 2026, 4:41 PM |
| closedAt | Apr 18, 2026, 4:41 PM |
| mergedAt | Apr 18, 2026, 4:41 PM |
| branches | dev ← claude/10061-protocol-hardening |
| url | https://github.com/neomjs/neo/pull/10062 |

Input from Claude Opus 4.7 (Claude Code):
❋ # PR Review Summary
Status: Approved (self-review — awaiting human merge)
Self-Review Opening: Self-review of #10061. This implementation chose delegation over duplication (Gate 3 references the pull-request skill rather than copying the rules into AGENTS.md) and harness-class differentiation over universal mandate (§2 split into worktree-isolated vs shared-checkout, rather than forcing all harnesses under
agent/<ticket>-<desc>). Key trade-offs and gaps noted below.Detection note:
query_raw_memories(#10061, sessionId=f018be49-cbf9-4f99-9119-2510fc5bb8d8)returned 0 matches — same false negative as PR #10060's review, same root cause (I continued not callingadd_memoryper turn per AGENTS.md §4). Self-review mode applied honestly. Escalated in[TOOLING_GAP]below.
📊 Evaluation Metrics
[ARCH_ALIGNMENT]: 92 — Harness-aware §2 is a clean generalization of the existing mandate: preserves the gate's intent (never commit tomain/dev) while making the mechanism harness-explicit. Gate 3 delegates to the skill rather than duplicating — reinforces the separation-of-concerns between AGENTS.md (universal gates) and the pull-request skill (commit/PR mechanics). Matches the "self-evolving system" mandate in AGENTS.md §13: a protocol gap (documented in #10061) is codified as a rule rather than left as tribal knowledge.[CONTENT_COMPLETENESS]: 90 — Each new subsection has rationale + decision rule + examples where appropriate. Decision rule in §3.1 ("Does this enable a new capability…?") is explicit enough to reproduce the feat-vs-chore call I botched in PR #10060. Minor gap: §3.1 could include one concrete example per type (e.g.fix(grid): race in selection model) — rule-only phrasing was a deliberate size-vs-redundancy trade-off since the whole file already shows examples.[EXECUTION_QUALITY]: 90 — Clean diff (+51/-5), no unrelated churn, markdown anchors intact, Gate 3's quote-closure correctly moved to end of recital. The Pre-Flight Check for this very commit recursively exercised Gate 3 (the subject isfeat(agents): ... (#10061)with no noreply co-author) — a small but satisfying proof that the rule composes.[PRODUCTIVITY]: 98 — All four scope items from #10061 landed in a single atomic commit. Explicit cross-reference to #10051 included so the sibling ticket inherits the harness-class framing when implemented. Origin Session ID tracked for memory-core traceability.[IMPACT]: 70 — Protocol-layer change affecting every future swarm contributor, human or agent. Higher than #10059's 60 (which was tooling-layer for a single harness); a single Gate 3 violation now structurally blocks commits that would previously slip through. Could rise further once #10051 and similar sibling tickets adopt the harness-class framing.[COMPLEXITY]: 25 — Three files, four edits, pure documentation. Cognitive load was entirely in crystallizing the harness-class distinction (worktree-isolated vs shared-checkout) — and the user did that during the architectural challenge, not me.[EFFORT_PROFILE]: Quick Win — low complexity, durable cross-harness benefit, structurally prevents the three distinct violations PR #10060 stumbled through.
🕸️ Context & Graph Linking
- Target Epic / Issue ID: Resolves #10061
- Related Graph Nodes:
- Origin: PR #10060 (first Claude Code harness wiring — where the four gaps surfaced) / Issue #10059
- Sibling: Issue #10051 (ticket-intake branch-before-code mandate — inherits harness-class framing)
- Surface:
AGENTS.md §3,AGENTS_STARTUP.md §5,.agent/skills/pull-request/references/pull-request-workflow.md §2 + §3- Origin Session ID:
f018be49-cbf9-4f99-9119-2510fc5bb8d8
🧠 Graph Ingestion Notes
[TOOLING_GAP]— Self-review detection (pr-review-guide §2.2) fails when the authoring agent has not calledadd_memoryin the current session. Both #10060 and #10062 reviews hit 0 matches forquery_raw_memoriesdespite being authored minutes earlier in the exact session whose ID was queried. Two possible remediations — the first is my responsibility, the second is a Memory Core feature request:
- Agent-side discipline — call
add_memoryper-turn as AGENTS.md §4 mandates. I have been skipping this across ~15 turns in this session. Saving memory as a feedback entry alongside this review so I do not repeat the skip.- Detection fallback — when
query_raw_memoriesreturns empty, pr-review could cross-check the PR'sauthor.loginagainst the harness's git identity and the session's start timestamp vs the PR's created-at. If they correlate, route to self-review mode with a "detection-inferred" note. Worth filing as a Memory Core enhancement ticket once #9999 / #10030 settle.[KB_GAP]— None introduced or newly discovered by this PR. The two gaps flagged in PR #10060's review (harness→memory-file mapping, commit-hygiene documentation) are directly closed here. Post-merge, agents spawned in Claude Code should no longer need to re-research either.[RETROSPECTIVE]— Two durable takeaways worth permanent ingestion:
- Harness-class taxonomy (worktree-isolated vs shared-checkout) is the correct axis for any protocol rule touching git branching or working-tree isolation. Generalizes beyond #10051 — applies to any future "safety-net" rule someone might want to add (e.g., "don't run destructive scripts without X"), which may or may not need harness-aware phrasing. Saved as a reference memory for cross-session recall.
- The "delegation-not-duplication" pattern for AGENTS.md gates scales well. Gate 3's body in AGENTS.md is a single sentence pointing at the skill; the actual rules live in §3 of pull-request-workflow.md where they belong. Future gates should follow: thin line in AGENTS.md Pre-Flight Check, detailed rules in the skill. Prevents the drift that would otherwise occur between two copies.
📋 Required Actions
No blocking actions. Mergeable as-is.
Post-merge follow-ups (not in this PR — already captured in the ticket or flagged inline):
- #10051's implementation should adopt §2.1/§2.2/§2.3 framing or delegate to §2 — cross-referenced in the PR body.
- Personal discipline fix: call
add_memoryper-turn per AGENTS.md §4, so self-review detection works on the next PR.Ready for human merge. Handing off.
Summary
Closes the four agent-protocol gaps surfaced by PR #10060's execution cycle. This PR encodes the rules that were learned-the-hard-way during #10059's commit/PR friction, so no future harness-based contributor has to rediscover them.
See #10061 for the full Fat Ticket rationale, architectural reality, and rejected alternatives.
Changes
AGENTS.md§3 Pre-Flight Check — adds Gate 3 (Commit Format) after Gate 2. Delegates to the pull-request skill for detailed rules rather than duplicating content. Structurally impossible to satisfy the Pre-Flight recital while violating commit format..agent/skills/pull-request/references/pull-request-workflow.md§2 — refactored into harness-aware subsections:main/devbranch name accepted; git worktree isolation mechanically enforces the mandate.agent/<ticket-id>-<descriptor>before first code change — hard safety gate.git branch --show-currentverification before first commit..agent/skills/pull-request/references/pull-request-workflow.md§3 — adds:feat/fix/chorewith decision rule "Does this enable a new capability that did not exist before?" →feat. Ambiguous defaults tofeat;choreis the narrowest category.<noreply@*>Co-Authored-Byfooters (called out Claude Code's harness default explicitly); mandates(#TICKET_ID)appended to subject, not a trailing paragraph. ClarifiesResolves #Nbelongs in PR body.feat/fix/choretotype(scope).AGENTS_STARTUP.md§5 — adds "Harness Memory-File Wiring" subsection documenting Claude Code (.claude/CLAUDE.md/./CLAUDE.md) and Gemini CLI (.gemini/settings.json+.gemini/GEMINI.md). Sets a convention for future harness additions.Verification
grep -n 'Gate 3' AGENTS.md→ match in §3 Pre-Flight Check.grep -n '### 2.1\|### 2.2\|### 2.3\|### 3.1\|### 3.2\|### 3.3' .agent/skills/pull-request/references/pull-request-workflow.md→ all six subsection headers present.grep -n 'Harness Memory-File Wiring' AGENTS_STARTUP.md→ match in §5.Interaction with #10051
#10051 (Enhance Ticket-Intake Skill: Branch-Before-Code Mandate) is inherently a shared-checkout concern by the same logic as §2.2 here. When that ticket's implementation lands, it should either adopt the §2.1/§2.2/§2.3 framing or delegate to §2 of pull-request-workflow.md to avoid double-documentation. Flagged for #10051's implementing agent.
Follow-ups (Out of Scope)
AGENTS.md+AGENTS_STARTUP.mdstartup-cache footprint (already tracked elsewhere).Resolves #10061