Skip to content

Follow-up: Make priority review dispositions replayable in merge closeout #54

Description

@justin808

Audit ledger: not applicable (non-release audit)

Context

A full post-merge audit of shakacode/react_on_rails covered the merge window:

The code audit found no release-blocking defect, but several PRs were not machine-clean under the merge ledger because priority review findings had no replayable disposition evidence.

Motivating Miss

Manual inspection showed the current code/docs were acceptable, but script/pr-merge-ledger --strict in the consumer repo could not prove that from durable metadata:

Those threads were outdated or otherwise manually resolved by later code/review context, but the audit had to reconstruct that by hand.

Process Gap Disposition

  • Mechanism target: checklist+replay
  • Motivating miss: priority review threads became stale/outdated, and the final PR state was OK, but the merge-readiness ledger could not replay a fixed/waived/deferred/noise disposition.
  • Replay evidence or park reason: replay the consumer repo ledger for the affected PRs using the repo's merge-ledger seam and strict mode, then verify each priority finding has a durable disposition with evidence URL and head SHA.
  • Non-goal: requiring every stale bot thread to be perfect, or blocking on old non-priority review noise that no longer applies to current head.

Proposed Work

Connect the existing structured-review direction from #39 to merge closeout:

  • Define the minimum durable disposition fields for priority review findings: source, finding URL/id, priority/actionability, current-head status, disposition, evidence URL, and head SHA/range.
  • Teach pr-batch / address-review / post-merge-audit guidance to require this when a priority finding is fixed, waived, deferred, or rejected.
  • Make the post-merge audit path classify missing disposition evidence as an explicit process finding rather than a manual archaeology exercise.
  • Keep current-head unresolved review threads stricter than outdated/stale threads; the point is to make stale-thread disposition replayable, not to ignore live blockers.

Acceptance Criteria

  • A replay against the affected React on Rails PRs reproduces the disposition gap before sample metadata is added.
  • A sample durable disposition block lets the replay classify an outdated priority finding as fixed, waived, deferred, or false positive without reading chat history.
  • The shared workflow docs name the consumer repo's merge-ledger seam instead of hardcoding React on Rails commands.
  • The issue links to or reuses the structured finding schema work in Follow-up: Define structured review finding output for review and audit skills #39 rather than inventing a competing schema.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions