Context
#13910 originally covered the documented Micro-Delta PR-review template being rejected by the MCP manage_pr_review validator. PR #13911 resolved that MCP surface.
On 2026-06-28, PR #14282 exposed the residual enforcement-surface gap: manage_pr_review accepted a documented # Pull Request Micro-Delta Review, but the GitHub Actions lint-pr-review-body job in .github/workflows/agent-pr-review-body-lint.yml rejected the same review body because the workflow still only recognized the full/follow-up review anchors plus the Micro-Review light path.
This ticket now covers the remaining parity fix: the CI review-body lint surface must accept the same documented Micro-Delta shape as PullRequestService.mjs, without weakening the existing full/follow-up anti-Goodhart validation.
Architectural Reality
The current sources define three relevant review-body validation tiers:
- Full / follow-up PR review bodies: heavy graph-ingestion template checks with visible and invisible anchors.
- Micro-Review bodies: cycle-1 blast-scaled light shape for micro or contained PRs.
- Micro-Delta bodies: cycle-N cost-compression shape for review-loop state (a), where semantics are cleared and only
mechanical-hygiene or metadata-drift remains.
ai/services/github-workflow/PullRequestService.mjs already implements all three tiers and has #13910 unit coverage for Micro-Delta pass/fail behavior. The workflow companion still lacks the Micro-Delta tier, so agents using the documented format through a valid review path can still get a red CI lint check.
The workflow runs as inline actions/github-script; it does not currently import repo-local validator helpers. The near-term release fix is therefore to keep the inline workflow constants synchronized with the MCP validator and add focused coverage around the workflow script, not to split a new helper extraction lane.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
manage_pr_review review-body validator |
.agents/skills/pr-review/assets/pr-review-micro-delta-template.md + PullRequestService.mjs |
Already accepts valid Micro-Delta reviews and rejects incomplete/semantic-shortcut attempts |
Continue existing full/follow-up validation |
pr-review skill assets |
Existing PullRequestService.spec.mjs #13910 tests |
.github/workflows/agent-pr-review-body-lint.yml / lint-pr-review-body |
PR #11495 CI companion to the MCP validator + current PullRequestService.mjs constants |
Accept the same valid Micro-Delta skeleton, reject malformed Micro-Delta attempts, and preserve canonical full/follow-up checks |
Post the same corrective comment + fail the check when malformed |
Workflow comments point to pr-review skill, circuit-breaker audit, and Micro-Delta asset |
New focused workflow-script unit coverage plus local lint validation |
| Review-loop cost-compression workflow |
pr-review circuit-breaker state (a) |
A valid Micro-Delta formal review can pass both MCP and CI enforcement surfaces |
If semantic blockers reappear, reviewer must use the full follow-up template |
.agents/skills/pr-review/audits/review-cost-circuit-breaker.md |
Reproduce with a Micro-Delta fixture modeled on #14282 |
Acceptance Criteria
Out of Scope
- Reworking the entire PR-review template system.
- Weakening the anti-Goodhart visible/invisible anchor guard.
- Spawning a separate micro-ticket or micro-PR for this residual CI parity fix.
Avoided Traps
- Do not bypass validation for Micro-Delta reviews wholesale. The bug is that one documented template class is missing from the CI accepted skeletons.
- Do not stuff metric tags into Micro-Delta reviews to satisfy the full/follow-up validator; that recreates the expensive template the circuit breaker is meant to avoid.
- Do not split this into another leaf PR unless the operator explicitly changes direction.
Successor / Duplicate Evidence
- PR #13911 merged on 2026-06-23 and resolved the MCP
manage_pr_review portion only.
- PR #14282 on 2026-06-28 reproduced the residual CI lint mismatch on a valid Micro-Delta review.
- Live search for
Micro-Delta review-body lint surfaces #13910 as the active implementation ticket; no separate residual-CI ticket is needed.
Context
#13910 originally covered the documented Micro-Delta PR-review template being rejected by the MCP
manage_pr_reviewvalidator. PR #13911 resolved that MCP surface.On 2026-06-28, PR #14282 exposed the residual enforcement-surface gap:
manage_pr_reviewaccepted a documented# Pull Request Micro-Delta Review, but the GitHub Actionslint-pr-review-bodyjob in.github/workflows/agent-pr-review-body-lint.ymlrejected the same review body because the workflow still only recognized the full/follow-up review anchors plus the Micro-Review light path.This ticket now covers the remaining parity fix: the CI review-body lint surface must accept the same documented Micro-Delta shape as
PullRequestService.mjs, without weakening the existing full/follow-up anti-Goodhart validation.Architectural Reality
The current sources define three relevant review-body validation tiers:
mechanical-hygieneormetadata-driftremains.ai/services/github-workflow/PullRequestService.mjsalready implements all three tiers and has #13910 unit coverage for Micro-Delta pass/fail behavior. The workflow companion still lacks the Micro-Delta tier, so agents using the documented format through a valid review path can still get a red CI lint check.The workflow runs as inline
actions/github-script; it does not currently import repo-local validator helpers. The near-term release fix is therefore to keep the inline workflow constants synchronized with the MCP validator and add focused coverage around the workflow script, not to split a new helper extraction lane.Contract Ledger Matrix
manage_pr_reviewreview-body validator.agents/skills/pr-review/assets/pr-review-micro-delta-template.md+PullRequestService.mjsPullRequestService.spec.mjs#13910 tests.github/workflows/agent-pr-review-body-lint.yml/lint-pr-review-bodyPullRequestService.mjsconstants.agents/skills/pr-review/audits/review-cost-circuit-breaker.mdAcceptance Criteria
.github/workflows/agent-pr-review-body-lint.ymlto accept valid# Pull Request Micro-Delta Reviewbodies using the same required anchors and blocker-class guard asPullRequestService.mjs.Remaining Blocker Classis notmechanical-hygieneormetadata-drift.PullRequestService.mjs, includingPremise Coherence, unless a deliberate exception is documented in the PR.Out of Scope
Avoided Traps
Successor / Duplicate Evidence
manage_pr_reviewportion only.Micro-Delta review-body lintsurfaces #13910 as the active implementation ticket; no separate residual-CI ticket is needed.