---
number: 10142
title: 'feat(ai): enforce model self-id in pull-request skill (#10141)'
author: tobiu
state: MERGED
createdAt: '2026-04-21T00:22:39Z'
updatedAt: '2026-04-21T16:28:00Z'
closedAt: '2026-04-21T16:27:56Z'
mergedAt: '2026-04-21T16:27:55Z'
head: agent/10141-pr-model-identity
base: dev
url: 'https://github.com/neomjs/neo/pull/10142'
---
Authored by Gemini 3.1 Pro (Antigravity). Session 30e93319-06e2-44d2-adf2-99168a997d08.

### Context
This PR enforces symmetric discipline across the AI skill lifecycle. While the `pr-review` skill successfully mandates model self-identification in comments, the `pull-request` skill lacked a similar enforcement for PR bodies. This leads to cross-model attribution issues, particularly when attempting to measure MX convergence metrics.

### The Fix
- Updated `pull-request`'s `SKILL.md` to explicitly warn agents to read the Self-Identification mandate before opening a PR.
- Injected a mandatory `Self-Identification` section into `pull-request-workflow.md`.
- Documented single-author and cross-harness provenance conventions (`Authored by [Model]...`).

Resolves #10141


## Comments

### `@tobiu` commented on 2026-04-21T16:25:29Z

**Input from Claude Opus 4.7 (Claude Code):**

> ❋ # PR Review Summary
> 
> **Status:** Approved
> 
> **Peer-Review Opening:** Clean, surgical addition closing the symmetric-authorship gap between `pr-review` (reviewer-side agent-field self-ID) and `pull-request` (PR-body self-ID). The Cross-Harness Authorship Convention — *"Authored by [Model-B] ([Harness-B]) consuming [Model-A]'s handoff"* — is the exact A2A provenance pattern we're using live in this session's cross-model work, now codified. The PR body itself already follows the proposed pattern (self-ID at top) which is a nice meta-win: the change adopts its own rule before asking the reader to. Approving with a couple of non-blocking Depth Floor polish observations for future v1.1 consideration.
> 
> ---
> 
> ### 📊 Evaluation Metrics
> 
> *   **`[ARCH_ALIGNMENT]`**: 95 — 5 points deducted because *"near the top"* is advisory without a canonical anchor. Which heading? First line after title? After `Resolves #N`? Before or after the Context section? An explicit placement anchor would remove interpretation variance across models.
> *   **`[CONTENT_COMPLETENESS]`**: 95 — 5 points deducted: no Test Plan line acknowledging "doc-only change, no test coverage needed" — minor hygiene nit per `pull-request` §8 (a soon-to-be-merged rule from #10163, but still the right shape).
> *   **`[EXECUTION_QUALITY]`**: 95 — 5 points deducted: the template doesn't address the no-Memory-Core edge case (what if an agent doesn't have a session ID to cite? fallback? omit the session clause?). Small edge; worth explicit guidance in a v1.1 refinement.
> *   **`[PRODUCTIVITY]`**: 100 — Resolves #10141 directly and delivers the symmetric discipline the ticket asked for.
> *   **`[IMPACT]`**: 95 — 5 points deducted: enforcement is doc-only. No CI check or linter validating the Self-Identification block exists on PR bodies. Acceptable per the discipline-via-doc consistency of the skill stack; worth tracking as a `[TOOLING_GAP]`-style follow-up if attribution compliance drifts.
> *   **`[COMPLEXITY]`**: 15 — Low: single new §5 + router update + renumbering of existing §5 → §6. Minimal cognitive load.
> *   **`[EFFORT_PROFILE]`**: Quick Win — high-leverage small delta unlocking cross-model attribution measurement.
> 
> ---
> 
> ### 🕸️ Context & Graph Linking
> 
> *   **Target Epic / Issue ID:** Resolves #10141
> *   **Related Graph Nodes:** pull-request, pr-review, agentos.mx, authorship, self-identification, cross-harness-a2a
> 
> ---
> 
> ### 🧠 Graph Ingestion Notes
> 
> *   **`[KB_GAP]`**: N/A
> *   **`[TOOLING_GAP]`**: No mechanical enforcement of the Self-Identification format. A CI check grepping PR bodies for the exact *"Authored by [Model] ([Harness]). Session <uuid>."* format would catch drift. Not blocking for this PR — consistent with other discipline-via-doc skills. Worth a follow-up if attribution compliance drifts across several PRs.
> *   **`[RETROSPECTIVE]`**: The Cross-Harness Authorship Convention — *"Authored by [Model-B] ([Harness-B]) consuming [Model-A]'s handoff — session A <id>, session B <id>"* — captures the exact A2A pattern this session has used multiple times (my reviews of Gemini's work relayed via @tobiu, Gemini's reviews of my PRs similarly relayed). Codifying the pattern in the skill itself makes the workflow graph-extractable without requiring inference from context. High graph value.
> 
> ---
> 
> ### 🔬 Depth Floor
> 
> Two non-blocking polish observations:
> 
> 1. **Placement specificity.** *"Near the top"* is advisory. Consider sharpening to *"as the first line of the PR body, immediately before the first heading"* or equivalent — eliminates interpretation variance. The PR body itself demonstrates a good pattern (self-ID on line 1, then Context heading) worth codifying as the canonical placement.
> 
> 2. **Cross-harness label direction.** *"Session A <id>, session B <id>"* is a little dense to parse without reading the preceding sentence carefully. *"Provider session <id>, consumer session <id>"* (or similar labels matching the semantic roles) would be clearer at the line level. Minor.
> 
> **I actively looked for:** (a) edge cases not covered (no-Memory-Core case flagged above, non-blocking); (b) placement ambiguity (*"near the top"* polish flagged); (c) semantic label clarity in the cross-harness template (polish flagged); (d) reciprocal symmetry with `pr-review` §1.3 self-review (clean — both sides of authorship now mandate self-ID with matching format); (e) collisions with other open PRs (none on this side; #10163 has a semantic collision on Origin Session ID placement but that's #10163's rebase problem, not this PR's).
> 
> ---
> 
> ### 🔗 Cross-Skill Integration Audit
> 
> - [x] Does any existing skill document a predecessor step that should now fire this new pattern? — `pr-review` already mandates agent-field self-ID in comments. This PR adds the symmetric PR-body self-ID. Bidirectional coverage complete.
> - [ ] Does `AGENTS_STARTUP.md` §9 need updating? — Not structurally; `pull-request` skill entry already listed. Optional polish: mention the Self-Identification mandate on the `pull-request` bullet.
> - [x] Does any reference file mention a predecessor pattern that should also mention the new one? — `SKILL.md` router updated to reference Self-Identification; `pr-review` symmetry preserved.
> - N/A new MCP tool
> - [x] New convention (PR-body Self-Identification) documented.
> 
> **Findings:** No latent integration gap. Clean reciprocal addition.
> 
> ---
> 
> ### 📋 Required Actions
> 
> No required actions — ready to merge.
> 
> Origin Session ID: 71dc3cd8-d39d-48e1-ac62-e240ca67d1a5
> 

---

