LearnNewsExamplesServices
Frontmatter
id17178
titleRound 2 becomes a disposition over Round 1, with its own validation tier
stateClosed
labels
enhancementaiarchitecture
assigneesneo-opus-grace
createdAtAug 15, 2026, 3:46 PM
updatedAtAug 15, 2026, 7:39 PM
githubUrlhttps://github.com/neomjs/neo/issues/17178
authorneo-opus-grace
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 15, 2026, 7:39 PM

Round 2 becomes a disposition over Round 1, with its own validation tier

Closed Backlog/active-chunk-16 enhancementaiarchitecture
neo-opus-grace
neo-opus-grace commented on Aug 15, 2026, 3:46 PM

Refs #17141 Refs #17163

The substrate half of #17141, and the sibling of #17163 — which carried the runtime half (per-family review budget + repair-minted re-entry, ACs 1-2) and merged as PR #17164. This leaf owns ACs 5, 6 and 7: the review-asset shape and its byte budget. #17141 stays open for ACs 3, 4, 8, 9 and 10.

Problem

Round 2 of a PR review is currently a smaller copy of Round 1. It carries the same fourteen sections, the same anchors, and the same permission to mint a fresh list of Required Actions — so a second round can quietly restate, renumber, or expand the first round's demands instead of answering them. The author then negotiates against a moving target, and the thread grows without converging.

That is the mechanism #17141 exists to close: Round 2 should be a disposition over Round 1, not a re-review. Each Round-1 required action gets quoted verbatim and marked ADDRESSED / DEFENDED / STILL_OPEN. A STILL_OPEN item keeps the original review authoritative rather than generating a replacement packet.

The Architectural Reality

  • The canonical validator requires four premise anchors on every review body. A disposition round routed through it is refused for omitting exactly what the new shape removes — the guard enforces the structure the substrate is replacing, so the asset cannot land without a validation tier of its own.
  • That tier has precedent in the same file: micro-review and micro-delta already establish minimal floors beside the canonical one. This is a third entry in an existing pattern, not a new mechanism.
  • Premise Coherence must not be relaxed globally to make room. That anchor exists because a green checklist over a wrong premise is theater; weakening it for every shape to fit one new shape is the cheap fix and the wrong one.
  • The review-body contract is duplicated between ai/services/github-workflow/PullRequestService.mjs and .github/workflows/agent-pr-review-body-lint.yml. Each carries its own copy of the shape constants, so a new format must land in both or the managed path and CI disagree about what is valid. That duplication is unowned and predates this work.
  • Two downstream docs teach the superseded contract: CodebaseOverview.md describes "two ordinary RCs, then COMMENTED closure", and ProgressiveDisclosureSkills.md describes the same two-round shape. A doc that outlives the rule it describes is how the old model gets re-derived by the next reader.

The Fix

  1. A disposition-only Round-2 asset: anchor, the verbatim carried-action table with its three dispositions, and a verdict. Nothing that mints new actions.
  2. A Round-2 validation tier beside micro-review and micro-delta, dispatched before the follow-up tier, leaving Premise Coherence intact for every existing shape.
  3. Registration in both contract copies — service and CI workflow.
  4. Round-1 guidance tightened to require artifact/population execution or a carried executable falsifier (AC-6).
  5. Both downstream docs updated to the shipped contract.

Out of Scope

  • ACs 3, 4, 8, 9, 10 of #17141 — the COMMENT-channel refusal, direct-bypass telemetry, the plain-APPROVE default, the #17103 cohort receipt, and the full falsifier matrix. Those stay on the parent.
  • Deduplicating the service/CI contract copies. Named here because this leaf pays the cost of it; fixing it is a separate owner.
  • The exceptional Drop+Supersede template, which deliberately keeps full structure — AC-5 scopes the reduction to ordinary Round 2 only.

Acceptance Criteria

  • Cycle 2's asset is disposition-only over verbatim prior actions. STILL_OPEN preserves the original CHANGES_REQUESTED without creating a new action packet; ordinary fresh findings become accepted risk. (=#17141 AC-5)
  • Round-1 guidance requires artifact/population execution or a carried executable falsifier, including citation-inversion, full-suite, and claimed-domain boundary checks derived from the measured escape ledger. (=#17141 AC-6)
  • The always-loaded pr-review/SKILL.md router has zero positive byte delta; the PR body includes the /turn-memory-pre-flight Map-vs-Atlas audit. (=#17141 AC-7)
  • Total .agents/skills/pr-review/** bytes and procedural steps net-decrease or the growth is discharged through lint-skill-manifest's sanctioned [skill-growth-justified: …] marker with a stated retirement trigger — the ordinary-Round-2 step count must fall regardless.
  • A disposition body validates through validate_pr_review_body at the new tier rather than the canonical one, and the canonical tier still refuses a body missing Premise Coherence.
  • Both contract copies — service and CI workflow — recognise the new shape, so the managed path and CI agree.
  • CodebaseOverview.md and ProgressiveDisclosureSkills.md describe the shipped contract, with no surviving reference to the superseded two-round shape.

Decision Record impact

none — #17141 carries no Decision Record line and this leaf inherits its scope.

Evidence class

Parent-derived, with the split already established in production: #17163 carried ACs 1-2 and merged as PR #17164 on 2026-08-15, leaving this half explicitly unowned. The duplication and both stale docs were read at source during implementation, not inferred.

Live latest-open sweep: checked the latest 20 open issues at 2026-08-15T13:45:13Z; #17141 is the parent and #17163 the merged sibling — no equivalent leaf exists. A2A claim sweep at 2026-08-15T13:46Z: no competing claim; @neo-fable-clio's 13:09Z message confirms this half is mine.

🖖 Authored by Grace (Claude Opus 5, Claude Code). Session b17338dd-b474-494f-b08c-683044de2ddb.

tobiu referenced in commit d710fd9 - "feat(ai): Round 2 becomes a disposition over Round 1, with its own validation tier (#17179) on Aug 15, 2026, 7:39 PM
tobiu closed this issue on Aug 15, 2026, 7:39 PM