Skip to content

Epic: decisions-on-pr — the advisory governing-decisions comment #351

Description

@tcballard

Execution epic for the decisions-on-pr roadmap (ADR-093: intent in the corpus, execution here). The top-ranked net-new adoption lever from adoption-opportunity-survey; implementation contract in the pr-decision-surfacing design.

A pull request that edits governed code carries one advisory comment naming the live decisions whose declared ## Applies To scope covers the changed paths — id, title, matched scope, link — updated in place on re-runs. Facts, never a verdict or merge gate (ADR-034, ADR-067); the human PR review stays the trust boundary (ADR-065).

Delivery, split across the two repos:

rac-ci — delivered (asdecided/ci#3, merged):

  • The Herald capability at herald/github/ beside Watchkeeper/Gatekeeper/Registrar: merge-base diff, rac decisions-for --json per path (thin client, ADR-063), one deterministic deduplicated comment with marker-based update-in-place, fork-safe step-summary fallback
  • Structural contract tests + the behavioral renderer battery (join/sort/dedup, empty state, survivable odd paths, details-expander noise cap, byte-determinism) in a dedicated CI job against the published engine

rac-core — delivered (#352, merged):

  • Roadmap graduated from future/, now Achieved with the design's three Open Questions recorded as delivered
  • Docs pointer: the "Decisions on PRs" page wiring itsthelore/rac-ci/herald/github@main, plus changelog

Open questions settled (recorded in the roadmap):

  1. The action ships in rac-ci, the CI wrappers' extracted home; corpus record and docs pointer stay in rac-core.
  2. Changed paths computed action-side; no engine change and no dual-engine port — decisions-for is already a covered command under the dispatcher.
  3. Noise: engine-side live-only scoping, dedupe by id, sorted, inline cap with a details expander, no comment when nothing governs, update-in-place always (including to the empty state).

Follow-ups on the maintainer:

  • Cut a rac-ci tag that includes Herald and update the docs @main reference to it (the existing v1 predates Herald).
  • Optionally wire Herald into an adopting repo's PR workflow (one job, pull-requests: write) — every adopting repo's PRs become the distribution loop.

Closed with both halves merged: asdecided/ci#3 and #352.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions