128 · T113 — ADR: named-profile configuration file and the file precedence tier - #138
Merged
Merged
Conversation
…ntract
scripts/check-profiles-config-file-adr.sh follows the thirteen existing
check-*-adr.sh decision-record checkers (ci.yml, "ADR content contracts")
and mechanically translates ticket 128's Test plan: ADR completeness with
the dated operator acceptance, the two partial supersessions recorded
narrowly with the original rejection text surviving beside each note, the
narrow spec-level prohibitions intact ("describing the graph" /
"describing the shape" / "a domain-specific language"), the recorded
misattribution in ADR 089, the binding purity constraint naming
crates/core/tests/determinism_and_purity.rs and C20, every decision the
milestone inherits (four tiers, profiles, unchanged DAGR_* spellings,
tri-state pool pins, bootstrap-only read, zero-dep core, TOML in dagr-cli
only), the inert-env-tier finding that puts T114 before the loader, and —
the load-bearing half — everything that would count as WIDENING the
carve-out, each asserted to be still named as excluded.
Red as committed, twice over:
* the two Amendment-changelog assertions fail — arch.md's "Post-M4
boundary amendments" section self-describes as listing EACH
boundary-moving decision, carries entries for ADR 097 and ADR 115, and
has none for ADR 128;
* ci_and_test_hygiene's dormant-checker tests fail — the script exists
and nothing in ci.yml runs it yet.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The "Post-M4 boundary amendments" section self-describes as listing each boundary-moving decision so the spec's history is readable in one place, and carries entries for ADR 097 and ADR 115 — but PR #116, which landed the ADR 128 C26 amendment itself, added no entry for it. The entry mirrors its siblings: what was narrowed (the config-file half of "no config file or DSL", only), what is now permitted (a bootstrap-read dagr.toml of run-level knobs with named profiles, fourth in precedence), what stays verbatim ("no DSL", "no configuration file describing the graph", zero-dep core, C20's empty-environment criterion), and the two partial supersessions (ADR 089, ADR 091). The section's header widens by one clause — "moved a *permanent* non-goal or scope boundary" — because C26's clause was a self-described permanent scope boundary rather than an entry on the non-goals list. Turns the two red Amendment-changelog assertions in scripts/check-profiles-config-file-adr.sh green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Runs scripts/check-profiles-config-file-adr.sh in the existing "ADR content contracts (boundary amendments)" step, beside ADR 115's checker. Turns ci_and_test_hygiene's dormant-checker tests green: every scripts/check-*.sh must be invoked by the workflow, so the checker cannot rot into a comment. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Mirrors the two 115 (T100) entries, which record the identical pair for the sibling boundary amendment: the pinning check lives in scripts/ plus one ci.yml run line, outside the DoD's docs-only path phrasing; and the ADR body, the arch.md C26 amendment, and both partial supersessions landed ahead of this branch in PR #116 (commit 126cdcb), so this branch enforces them rather than re-authoring them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ce on the shallow CI clone the_metastore_forbidden_surface_scan_still_passes failed on the macOS leg (run 31176223029): under nextest, m10_acceptance_gate's two script-running tests execute as concurrent processes over the one shared .git, and the M7 (deepen=200) and M10 (deepen=500) acceptance-boundary scripts' best-effort `git fetch --deepen` calls race on the shallow clone's locks. The loser's failure is swallowed by `|| true`, its pinned marker stays unresolvable, and on a fresh depth-1 PR clone the origin/main fallback does not exist either, so the script fails with 'could not resolve an M6 base commit'. Fix: give the `test` job a full-history checkout (fetch-depth: 0). Both marker commits are then already present, --is-shallow-repository is false, neither script enters its fetch branch, and the race (plus the in-test network dependence) is unreachable. The repo packs at ~2.3 MiB over ~272 commits, so the cost is negligible; every other job keeps depth-1. The standing 128 DEVIATIONS entry is extended to record the extra ci.yml touch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Ticket: T113 — docs/implementation/128-T113-profiles-config-file-adr.md
Summary
Enforces ADR 128 (named-profile configuration file and the
fileprecedence tier). The ADR body, arch.md C26 amendment, and the partial supersessions of ADR 089/091 pre-landed on main in PR #116; this branch adds the missing dated ADR 128 entry to arch.md's Amendment changelog, shipsscripts/check-profiles-config-file-adr.sh(67 content assertions over the ADR, arch.md, both superseded ADRs, READMEs, the purity test, and the T114–T118 seam tickets), and wires it into CI's always-run structural-checks job.Tests-first
Confirmed — failing tests committed first in cd13aff.
Definition of done
Checker robustness was independently adversarially verified: 16/16 planted violations (covering every target file and assertion mechanism) turned it red, including a reworded C26 clause that two duplicate generic phrases elsewhere in arch.md could not mask, and a relocated changelog entry defeated by sed-scoping. Known mechanism-wide limit shared by all grep-based ADR checkers here: HTML-comment-wrapped content still greps green. Pre-existing caveat, not introduced here:
pushto main carriespaths-ignore: docs/implementation/**, so only the PR path (unfiltered) exercises this checker for docs-only changes.Open questions resolved
Deviations
Two entries in docs/implementation/DEVIATIONS.md (2026-08-06 · 128), mirroring the accepted T100 pair: the pinning check lives in scripts/ plus one ci.yml line outside the docs-only DoD line, and the ADR body/C26 amendment/supersessions pre-landed in PR #116 — this branch enforces rather than re-authors them.