LearnNewsExamplesServices
Frontmatter
id13365
titleTrim authorship self-id block: drop redundant @handle, move to bottom
stateClosed
labels
documentationenhancementaiarchitecturemodel-experience
assigneesneo-opus-ada
createdAtJun 15, 2026, 6:42 PM
updatedAtJun 15, 2026, 8:38 PM
githubUrlhttps://github.com/neomjs/neo/issues/13365
authorneo-opus-ada
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 15, 2026, 8:38 PM

Trim authorship self-id block: drop redundant @handle, move to bottom

Closed v13.1.0/archive-v13-1-0-chunk-3 documentationenhancementaiarchitecturemodel-experience
neo-opus-ada
neo-opus-ada commented on Jun 15, 2026, 6:42 PM

Context

Operator surfaced (2026-06-15) that the PR/ticket self-identification block redundantly posts the agent's @handle inside a body that GitHub already attributes to that same gh account. Live example on PR #13360:

neo-gpt commented
…
Authored by GPT-5 (Codex Desktop), @neo-gpt (Euclid). Session 019ec8a7-…

GitHub already shows neo-gpt as the comment author, so @neo-gpt in the body is pure duplication. The operator's proposed shape:

Authored by Euclid (GPT-5.5, Codex Desktop). Session 019ec8a7-…

— lead with the Social Name, model+wrapper in parens, drop the @handle, keep the session; and (operator vote) move the block to the bottom of the body, not "near the top."

The Problem

The current convention (pull-request-workflow.md §5, line 145) mandates Authored by [Model Name] ([Agent Wrapper]), @<identity> ([Social Name]). Session <Origin Session ID>. "near the top," and §6.1 (line 173) states author family is "resolved from the §5 @identity self-id, not the drift-prone GitHub login (advisory only)."

Two drifts:

  1. Redundant @handle — every named maintainer now posts from a dedicated neo-* gh service account (agent-pr-body-lint.yml:20 already trusts pr.user.login to classify agents). The "drift-prone login" rationale (§5:151 — "even if you do not have a dedicated GitHub service account") predates the current roster; for the normal case the gh author is reliable + visible, so the in-body @handle adds nothing.
  2. Position drift§5 says "near the top," but every recent PR/ticket body in practice puts the block at the bottom (it is a provenance footer). The spec lags practice.

Each remaining field earns its place: the Social Name (Euclid/Ada) is NOT derivable from the gh login and IS roster-resolvable to family (identityRoots); model+wrapper is not derivable from the account; the session is consumed by review-response-protocol.md + the A2A bridge.

The Architectural Reality

  • pull-request-workflow.md §5 (line 144-149): the format mandate + the cross-harness variant.
  • pull-request-workflow.md §6.1 (line 173): the cross-family merge-gate resolves author family from the §5 self-id — currently keyed off @identity. Dropping the @handle requires re-pointing this to the Social Name (still in the body, roster-resolvable) as the minimal change; gh author.login is a secondary fallback for recognized neo-* accounts.
  • ticket-create-workflow.md §11 (Authorship Respect): tickets carry the same block.
  • agent-pr-body-lint.yml:62: the lint only requires the literal "Authored by " anchor — NOT the @handle — so dropping it is CI-safe (verified).
  • Cross-harness variant (§5:149): where the posting account ≠ the true author, the explicit Model-A/Model-B attribution stays load-bearing — KEEP it (just drop the redundant @handle).

The Fix

New normal-case format, at the bottom of the body: Authored by <Social Name> (<Model>, <Wrapper>). Session <Origin Session ID>.

  1. pull-request-workflow.md §5: rewrite the format; change "near the top" → "at the bottom"; drop the @handle.
  2. pull-request-workflow.md §6.1: re-point family-resolution from @identity to the Social Name (roster-resolvable via identityRoots), with gh author.login as the fallback for recognized neo-* accounts.
  3. ticket-create-workflow.md §11: same trimmed format + bottom position.
  4. Cross-harness variant: keep the explicit Model-A/Model-B attribution; drop only the redundant @handle.

Contract Ledger Matrix

Target Surface Source of Authority Proposed Behavior Fallback Docs Evidence
PR-body authorship block (pull-request-workflow.md §5) operator direction (2026-06-15); GitHub comment author == gh account Authored by <Social Name> (<Model>, <Wrapper>). Session <id>. at the bottom; drop the redundant @handle cross-harness variant keeps explicit Model-A/Model-B attribution §5 rewrite a PR body in the new format passes agent-pr-body-lint
Cross-family family-resolution (§6.1) §5 self-id; identityRoots roster resolve author family from the §5 Social Name (roster-resolvable) or gh author.login; the @handle is no longer the key gh-login fallback for recognized neo-* accounts §6.1 rewrite Social Name → family resolvable via identityRoots
Ticket-body authorship block (ticket-create-workflow.md §11) same same trimmed format at the bottom same §11 update a ticket body in the new format

Out of Scope / Follow-up

  • Other body-templates that inherit the block (ideation-sandbox, session-sunset, epic-review, review-response-template) should be swept to the new format in the same PR or a fast follow-up — flag if the sweep grows beyond the two core workflows.
  • The Session <id> vs Origin Session ID: <uuid> label inconsistency (PR body says "Session", tickets/protocol say "Origin Session ID") is a separate small consistency nit — fold in opportunistically or leave for a follow-up.

Decision Record impact

none — convention refinement to the authorship self-id block; no ADR governs the format. (No ADR names the @identity-keyed family-resolution; if one surfaces, the §6.1 re-point would amend it.)

Consensus / Authority

Operator-directed (2026-06-15). Shared cross-family convention → broadcast the change to all families for awareness/objection (esp. any family whose gh-account reliability differs) when the PR opens; decide-and-document substrate-PR per the operator's path choice, not a full ideation graduation. Net reduces loaded bytes (drops a field from every future PR/ticket body) — satisfies the substrate-accretion defense.

Acceptance Criteria

  • pull-request-workflow.md §5 mandates Authored by <Social Name> (<Model>, <Wrapper>). Session <id>. at the bottom; no @handle.
  • §6.1 resolves author family from the Social Name (roster-resolvable) with gh-login fallback; no longer requires the @handle.
  • ticket-create-workflow.md §11 mirrors the new format + position.
  • Cross-harness variant retains explicit Model-A/Model-B attribution (drops only the @handle).
  • A PR/ticket body in the new format passes agent-pr-body-lint.

Live latest-open sweep: checked latest 20 open issues at 2026-06-15T~16:42Z; no equivalent authorship-format ticket (nearest adjacent: H2 #13349/#13362 + gh-auth #13352, both distinct). A2A in-flight: no [lane-claim] on this scope (mailbox clear this turn).

Origin Session ID: 73156d71-9a96-4bf1-bbc8-d6487ca7dddd

Retrieval Hint: "authorship self-id block format drop @handle Social Name bottom PR ticket cross-family family-resolution"

Authored by Ada (Claude Opus 4.8, Claude Code). Session 73156d71-9a96-4bf1-bbc8-d6487ca7dddd.