From 2802e7098fe13aaaf4e28fa46913d58369df727d Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 19 Oct 2026 13:02:45 +0000 Subject: [PATCH] chore(checks): graduate adr-index, adr-amendment-link and claude-md-scope to block Refs #64 Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01CQUftkL4DSUZxtTFtXLciN --- CHANGELOG.md | 1 + checks/enforcement.config.json | 6 +++--- docs/adrs/0012-adr-enforcement-architecture.md | 11 +++++++++++ docs/adrs/0019-claude-md-contributor-guide.md | 10 ++++++++++ docs/adrs/README.md | 4 ++-- 5 files changed, 27 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ea50cd..c7074ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed +- Enforcement suite: `adr-index`, `adr-amendment-link` and `claude-md-scope` graduate warn → block (issue #64); all 18 checks now block. Zero findings in every CI run since they were added on 2026-10-12 - Enforcement suite: `word-limit` and `self-containment` graduate warn → block (issue #64); 15 of 18 checks now block. `self-containment` first stops flagging `prompts/…` and `scripts/…` paths that do not point into the plugin's own bundle, such as a script in a repository the plugin is auditing ## [0.5.4] - 2026-10-12 diff --git a/checks/enforcement.config.json b/checks/enforcement.config.json index 0325815..ad67a0e 100644 --- a/checks/enforcement.config.json +++ b/checks/enforcement.config.json @@ -17,8 +17,8 @@ { "id": "adr-status", "adr": "0002, 0012, process", "tc": "0002:TC-2; process:adr-status", "status": "block", "added": "2026-07-12", "graduated": "2026-10-12" }, { "id": "filename-convention", "adr": "CONTRIBUTING", "tc": "CONTRIBUTING:naming-convention", "status": "block", "added": "2026-07-12", "graduated": "2026-10-12" }, { "id": "objective-parity", "adr": "0014", "tc": "0014:TC-parity", "status": "block", "added": "2026-07-25", "graduated": "2026-10-12" }, - { "id": "adr-index", "adr": "0012", "tc": "0012:TC-3", "status": "warn", "added": "2026-10-12", "graduated": null }, - { "id": "adr-amendment-link", "adr": "0012", "tc": "0012:TC-4", "status": "warn", "added": "2026-10-12", "graduated": null }, - { "id": "claude-md-scope", "adr": "0019", "tc": "0019:TC-1,TC-2", "status": "warn", "added": "2026-10-12", "graduated": null } + { "id": "adr-index", "adr": "0012", "tc": "0012:TC-3", "status": "block", "added": "2026-10-12", "graduated": "2026-10-19" }, + { "id": "adr-amendment-link", "adr": "0012", "tc": "0012:TC-4", "status": "block", "added": "2026-10-12", "graduated": "2026-10-19" }, + { "id": "claude-md-scope", "adr": "0019", "tc": "0019:TC-1,TC-2", "status": "block", "added": "2026-10-12", "graduated": "2026-10-19" } ] } diff --git a/docs/adrs/0012-adr-enforcement-architecture.md b/docs/adrs/0012-adr-enforcement-architecture.md index f14a0e7..4e737cf 100644 --- a/docs/adrs/0012-adr-enforcement-architecture.md +++ b/docs/adrs/0012-adr-enforcement-architecture.md @@ -315,3 +315,14 @@ be corrected before anyone had reviewed it. The guard now protects an ADR only once it exists in `HEAD`. A file new in the working tree is a draft and may be revised or removed. Outside a git repository, or on any git error, the guard assumes the file is committed and stays closed. Covered by a test. + +--- + +## Graduation log entry (2026-10-19) + +`adr-index` (TC-3) and `adr-amendment-link` (TC-4): **warn → block** (issue +#64). Basis (§5): 7+ consecutive clean days, 2026-10-12 to 2026-10-19. Zero +findings from either check in the 20 `validate` runs that carried them (every +run from 2026-10-12 18:03 UTC through 2026-10-13 00:41 UTC, pull requests and +`main` alike); each line read `[PASS]`. No real catch occurred, so the clean +days are the whole basis. No `validate` run exists after 2026-10-13. diff --git a/docs/adrs/0019-claude-md-contributor-guide.md b/docs/adrs/0019-claude-md-contributor-guide.md index 64e6eeb..7bc2fe0 100644 --- a/docs/adrs/0019-claude-md-contributor-guide.md +++ b/docs/adrs/0019-claude-md-contributor-guide.md @@ -156,3 +156,13 @@ CLAUDE.md's "Runtime rules that exist only here" section is removed. Decision §3 still stands for the future: a runtime rule may sit in CLAUDE.md only in a section that names it as unshipped and links the issue tracking its move. At this amendment there are none. + +--- + +## Graduation log entry (2026-10-19) + +`claude-md-scope` (TC-1, TC-2): **warn → block** (issue #64). Basis (ADR 0012 +§5): 7+ consecutive clean days, 2026-10-12 to 2026-10-19. Zero findings in the +18 `validate` runs that carried the check (every run from 2026-10-12 18:07 UTC +through 2026-10-13 00:41 UTC, pull requests and `main` alike); each line read +`[PASS]`. No real catch occurred. No `validate` run exists after 2026-10-13. diff --git a/docs/adrs/README.md b/docs/adrs/README.md index bb3cece..ebf1519 100644 --- a/docs/adrs/README.md +++ b/docs/adrs/README.md @@ -21,14 +21,14 @@ listed under "Amended by" override its earlier text. | [0009](0009-prompt-enhancement-pattern.md) | Prompt Enhancement Pattern v2 | Accepted | `frontmatter-v2` (block), `name-uniqueness` (block), `body-structure` (block), `placeholder-syntax` (block), `word-limit` (block) | — | 1, latest 2026-07-25 | | [0010](0010-spec-package-compilation-target.md) | Spec Package as Compilation Target | Accepted | `spec-fixture` (block) | — | 4, latest 2026-10-12 | | [0011](0011-plugin-self-containment.md) | Plugin Self-Containment via Bundled Assets | Accepted | `self-containment` (block) | — | 2, latest 2026-10-13 | -| [0012](0012-adr-enforcement-architecture.md) | ADR Enforcement Architecture | Accepted | `adr-status` (block), `adr-index` (warn), `adr-amendment-link` (warn) | — | 4, latest 2026-10-12 | +| [0012](0012-adr-enforcement-architecture.md) | ADR Enforcement Architecture | Accepted | `adr-status` (block), `adr-index` (block), `adr-amendment-link` (block) | — | 4, latest 2026-10-12 | | [0013](0013-ux-optimization-reverse-pass.md) | UX Optimization Reverse Pass (ux-optimization skill) | Accepted | `component-census` (block) | — | 1, latest 2026-10-12 | | [0014](0014-live-site-audit-and-objective.md) | Live-Site Audit and Core Objective in the Reverse Pass | Accepted | `objective-parity` (block) | — | 1, latest 2026-07-25 | | [0015](0015-runtime-audit-mode.md) | Runtime Audit Mode for Locally Runnable Products | Accepted | no dedicated check | — | — | | [0016](0016-gstack-derived-patterns.md) | gstack-Derived Patterns — Interrogation, Premise Challenge, Input Provenance | Accepted | no dedicated check | 0019 | 1, latest 2026-10-12 | | [0017](0017-gstack-derived-patterns-second-wave.md) | gstack-Derived Patterns, Second Wave — Quality Loops, Decision Classification, Scope Walk, Learnings | Accepted | no dedicated check | 0019 | 1, latest 2026-10-12 | | [0018](0018-ops-dashboard-audit-signal.md) | Report the Enforcement Suite's Finding Count to the Ops Dashboard | Accepted | no dedicated check | — | — | -| [0019](0019-claude-md-contributor-guide.md) | CLAUDE.md Is the Contributor Guide; Runtime Canon Lives in the Plugin | Accepted | `claude-md-scope` (warn) | — | 1, latest 2026-10-12 | +| [0019](0019-claude-md-contributor-guide.md) | CLAUDE.md Is the Contributor Guide; Runtime Canon Lives in the Plugin | Accepted | `claude-md-scope` (block) | — | 1, latest 2026-10-12 | ## Reading the columns