Skip to content

chore(standards): adopt the ADR 0031 admission model repository-side (D4) - #237

Merged
chrisdpurcell merged 3 commits into
testingfrom
d4
Sep 1, 2026
Merged

chrisdpurcell merged 3 commits into
testingfrom
d4

Conversation

@chrisdpurcell

Copy link
Copy Markdown
Collaborator

Summary

Repository-side ADR 0031 D4 migration, following the v5.28.0 reconcile onto github-workflow 1.9:

  • .standards/config.toml declares the admission topology — integration_branch = "testing", release_subject_prefix = "release:", admission_floor = "1922e320" (the commit before the release commit, so the control attests immediately: gh-workflow admission --branch testing --offline → 1 commit, admitted by its release: prefix, exit 0; a floor at the tip resolved to zero commits and GHW-ADMISSION-EMPTY-RANGE). reconcile --apply output (lock + rendered policy) is committed alongside.
  • The hand-written carve-outs are replaced by the 1.9 four-class model: CLAUDE.md branch bullet, AGENTS.md line-38 bullet, conventions §24 cross-reference + new §25, meta/versioning.md:131 "topic branch" → "integration branch", docs/STATUS.md "T0 the sole exception" and the stale "github-workflow: the PR-admission rule ships with no enforcement mechanism #203 still open" bullet folded into one accurate bullet, and a comment-only cross-file-contract note in scripts/githooks/main-branch-guard (RELEASE_MESSAGE_PREFIX ≡ the rendered release_subject_prefix).

Nothing runs the classifier automatically yet (payload ships no CI job; 1.10 candidate) — stated in §25 and STATUS.

Governing work

Standalone

Change risk: R2 Moderate

Acceptance coverage

  • admission --branch testing --offline exits 0 over the declared floor with the release commit admitted; over the leg branch it correctly reports the topic-branch commits as unadmitted until merge writes the PR #N trailer.
  • reconcile --check no-op; validate 42 files OK; no managed-marker content hand-edited; no frontmatter added to CLAUDE.md/AGENTS.md.

Verification

  • reconcile --apply ×2 → reconciled; validate → 0; make handoff-validate → 0 with the pre-change warning baseline (measured under stash); make handoff-drift-check → 0.
  • prettier + markdownlint over the five touched Markdown files → 0; bash -n + shellcheck -x on the guard → clean (pre-existing SC2016 info only).
  • rexec -- pytest test_current_catalog_activation.py test_github_workflow_package.py test_main_branch_guard.py → 51 passed.

…ub-workflow 1.9

ADR 0031 D4, consumer side. `.standards/config.toml` now carries the three
github-workflow 1.9 options that describe this repository rather than the
default two-branch topology: `integration_branch = "testing"` (so `testing` is
governed, not an ungoverned topic branch), `release_subject_prefix = "release:"`
(matching `RELEASE_MESSAGE_PREFIX` in scripts/githooks/main-branch-guard and the
subject scripts/release_prep.py writes), and `admission_floor` at the v5.28.0
release commit, because adoption cannot rewrite the 350-odd commits below it and
a permanently red control is an ignored one.

`handoff_admission` stays at its `agent-handoff` default: this repository has
adopted the package, and `docs/handoff/**`, `docs/STATUS.md`, and `docs/TODO.md`
are exactly the paths that should commit directly.

The `.standards/lock.toml` and `.standards/packages/github-workflow/policy.toml`
changes are `reconcile --apply` output for those three values, run after the
v5.28.0 release rather than mid-train.

Refs #203, #218
…-class model

ADR 0031 D4, prose half. Six surfaces still described the pre-1.9 two-class
rule — "T0 the sole exception", handoff documents as a second hand-written
exception, `testing` as a "topic branch" — which the 1.9 payload now models
directly with four admission classes and a declared integration branch.

CLAUDE.md and AGENTS.md state which class each of this repository's routes uses
and defer the mechanics to the managed GitHub Workflow block and
`.agents/skills/github-workflow/references/pr-standard.md`; restating them is
how the three documents drifted apart in the first place.

conventions.md gains #25 for the admission classes and the fact that nothing
runs the classifier automatically; #24 keeps the `main` publication rule and
now cross-references it.

docs/STATUS.md folds two bullets into one: the admission rule is no longer
"PRs, with T0 the sole exception", and #203's enforcement gap and #218's handoff
exemption are both closed by the 1.9 cut, so the "still open" bullet was false.

meta/versioning.md called `testing` a topic branch, which is now a term of art
for the ungoverned class `testing` is not.

scripts/githooks/main-branch-guard is comment-only: it records that its
`RELEASE_MESSAGE_PREFIX` and the declared `release_subject_prefix` are one
contract in two files, and that the guard is the preventive local half of a
classifier that is otherwise only retrospective.

Refs #203, #218
…ward so the control attests immediately

The release commit itself is admitted by its release: prefix; a floor at the
tip resolved to zero commits and GHW-ADMISSION-EMPTY-RANGE on every run until
the next merge.
@chrisdpurcell
chrisdpurcell marked this pull request as ready for review September 1, 2026 18:44
@chrisdpurcell
chrisdpurcell merged commit 4866a9f into testing Sep 1, 2026
7 checks passed
@chrisdpurcell
chrisdpurcell deleted the d4 branch September 1, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant