From 9c4607138efa9b6f95da492d4c3c656f11f06454 Mon Sep 17 00:00:00 2001 From: Brian Jin <35789537+kikashy@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:10:22 -0400 Subject: [PATCH 1/4] docs: record the cross-vendor review obligation for material ADRs (spec GOVERNANCE interim regime) Co-Authored-By: Claude Opus 5 (1M context) --- docs/adr/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/adr/README.md b/docs/adr/README.md index 5e1d1f7..dceb13f 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -24,6 +24,19 @@ when** it became that way. architecture.md links out to the relevant ADR rather 3. On merge, set `status: accepted`. ADRs are immutable once accepted: a later change is a **new** ADR that supersedes the old one (which is then marked `superseded by NNNN`), never an edit. +## Review of material ADRs + +A **material** ADR — one that changes a public surface, a documented claim, or +conformance-relevant behavior — additionally follows the interim review regime recorded in the +specification repository's +[`GOVERNANCE.md`](https://github.com/Judgment-Pack/judgment-pack-spec/blob/main/GOVERNANCE.md#interim-review-regime): +a recorded adversarial review by a model from a different vendor than any model that assisted the +drafting, with a written maintainer disposition for each finding, on the pull request that makes +the decision (ADRs are immutable once accepted, so the review attaches to the pull request, not +the ADR text). This applies to work opened after 2026-07-27. Model review substitutes for review +breadth while the project has a single maintainer; it is not decision authority, and following it +confers no conformance status on anything. + ## Index | # | Decision | Status | From 81b3e2087efc1afaa2084452af43cb94488a68b5 Mon Sep 17 00:00:00 2001 From: Brian Jin <35789537+kikashy@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:32:31 -0400 Subject: [PATCH 2/4] docs: rescope ADR review obligation to material decisions per spec RFC 0009 dispositions Co-Authored-By: Claude Opus 5 (1M context) --- docs/adr/README.md | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/docs/adr/README.md b/docs/adr/README.md index dceb13f..ae4566c 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -24,18 +24,38 @@ when** it became that way. architecture.md links out to the relevant ADR rather 3. On merge, set `status: accepted`. ADRs are immutable once accepted: a later change is a **new** ADR that supersedes the old one (which is then marked `superseded by NNNN`), never an edit. -## Review of material ADRs +## Review of material decisions -A **material** ADR — one that changes a public surface, a documented claim, or -conformance-relevant behavior — additionally follows the interim review regime recorded in the +A **material** decision in this runtime follows the interim review regime recorded in the specification repository's -[`GOVERNANCE.md`](https://github.com/Judgment-Pack/judgment-pack-spec/blob/main/GOVERNANCE.md#interim-review-regime): -a recorded adversarial review by a model from a different vendor than any model that assisted the -drafting, with a written maintainer disposition for each finding, on the pull request that makes -the decision (ADRs are immutable once accepted, so the review attaches to the pull request, not -the ADR text). This applies to work opened after 2026-07-27. Model review substitutes for review -breadth while the project has a single maintainer; it is not decision authority, and following it -confers no conformance status on anything. +[`GOVERNANCE.md`](https://github.com/Judgment-Pack/judgment-pack-spec/blob/main/GOVERNANCE.md#interim-review-regime) +and designed in +[RFC 0009](https://github.com/Judgment-Pack/judgment-pack-spec/blob/main/rfcs/0009-interim-review-regime.md). +A decision is material when it changes a public surface, a documented claim, conformance-relevant +behavior, the security posture, or a dependency boundary. The trigger is the decision, not the +paperwork: a material decision made without an ADR is still material, and skipping the ADR does not +skip the review. + +Such a decision requires a recorded adversarial review by a model from a **different vendor** than +any model that assisted the drafting, with a written maintainer disposition for each finding, on the +pull request that makes the decision. *Vendor* means the organization that controls the model's +weights and training — the developer, not the API host and not a reseller; hosted copies of the same +model share lineage and count as the same vendor. *Assisted the drafting* means generated or revised +text that survives in the merged artifact; applying an accepted finding in one's own words does not +make the reviewer a drafter, while adopting reviewer-generated text verbatim is noted in the record. +ADRs are written after the decision and are immutable once accepted, so the review attaches to the +pull request, not to the ADR text. + +This applies to every pull request merged after 2026-07-27 that makes a material decision, including +one that supersedes an existing ADR. The specification repository's `GOVERNANCE.md` governs only that +repository; this section is what places this runtime under the obligation, and it binds from the +commit that merged it. + +There is no per-pull-request ADR-impact declaration. Materiality is classified by the maintainer, who +is also the author — the weak point of this arrangement, stated rather than papered over — and the +classification is contestable on the pull request. Model review substitutes for review breadth while +the project has a single maintainer; it is not decision authority, and following it confers no +conformance status on anything. ## Index From 546089fc335aff5a5c179237f187cbcabd40dddf Mon Sep 17 00:00:00 2001 From: Brian Jin <35789537+kikashy@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:57:45 -0400 Subject: [PATCH 3/4] =?UTF-8?q?docs:=20round-2=20dispositions=20=E2=80=94?= =?UTF-8?q?=20commit-relative=20scope,=20conceptual-assistance=20definitio?= =?UTF-8?q?n,=20Material-decision=20impact=20declaration=20on=20every=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) --- docs/adr/README.md | 46 +++++++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/docs/adr/README.md b/docs/adr/README.md index ae4566c..2c3d337 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -41,21 +41,37 @@ any model that assisted the drafting, with a written maintainer disposition for pull request that makes the decision. *Vendor* means the organization that controls the model's weights and training — the developer, not the API host and not a reseller; hosted copies of the same model share lineage and count as the same vendor. *Assisted the drafting* means generated or revised -text that survives in the merged artifact; applying an accepted finding in one's own words does not -make the reviewer a drafter, while adopting reviewer-generated text verbatim is noted in the record. -ADRs are written after the decision and are immutable once accepted, so the review attaches to the -pull request, not to the ADR text. - -This applies to every pull request merged after 2026-07-27 that makes a material decision, including -one that supersedes an existing ADR. The specification repository's `GOVERNANCE.md` governs only that -repository; this section is what places this runtime under the obligation, and it binds from the -commit that merged it. - -There is no per-pull-request ADR-impact declaration. Materiality is classified by the maintainer, who -is also the author — the weak point of this arrangement, stated rather than papered over — and the -classification is contestable on the pull request. Model review substitutes for review breadth while -the project has a single maintainer; it is not decision authority, and following it confers no -conformance status on anything. +text that survives in the merged artifact, or planning, analysis, structure, or design choices +supplied by a model and relied on to produce it; paraphrase does not launder assistance, so a model +that shaped the outline or settled a design question assisted the drafting even when none of its +sentences survive. Applying an accepted finding in one's own words does not make the reviewer a +drafter, while adopting reviewer-generated text verbatim is noted in the record. ADRs are written +after the decision and are immutable once accepted, so the review attaches to the pull request, not +to the ADR text. + +This applies to the pull request merging this section and every pull request merged after it that +makes a material decision, including one that supersedes an existing ADR. The test is +commit-relative, not date-relative; this section was merged 2026-07-27. The specification +repository's `GOVERNANCE.md` governs only that repository; this section is what places this runtime +under the obligation. + +Every pull request in this repository states its impact in the description, on one line: + +``` +Material-decision impact: none | public-surface | documented-claim | conformance | security | dependency +``` + +Exactly one value. Anything other than `none` carries a link to the cross-vendor review recorded on +that pull request. `none` is a claim, not a formality: it is the author classifying their own change, +and it is wrong whenever the change turns out to be material. + +Materiality is classified by the maintainer, who is also the author — the weak point of this +arrangement, stated rather than papered over. The declaration does not fix that; a checkbox its own +author ticks measures the author's care, not the change. What it removes is silence. The +classification is explicit, dated, attached to the diff, and contestable on the pull request, and +omitting the ADR and the review no longer omits the classification with them. Model review +substitutes for review breadth while the project has a single maintainer; it is not decision +authority, and following it confers no conformance status on anything. ## Index From 5db68a40d58deb283af9f3c80d72bc770f72020f Mon Sep 17 00:00:00 2001 From: Brian Jin <35789537+kikashy@users.noreply.github.com> Date: Mon, 27 Jul 2026 20:16:28 -0400 Subject: [PATCH 4/4] =?UTF-8?q?docs:=20runtime-review=20dispositions=20?= =?UTF-8?q?=E2=80=94=20closed=20declaration=20grammar,=20reviewed-SHA=20pi?= =?UTF-8?q?nning,=20commit-ancestry=20activation,=20PR=20template?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Six findings from the cross-vendor review of the adopting text, all accepted (finding 1 in part: verbatim adoption keeps the GOVERNANCE carve-out rather than requiring a third vendor, now stated as an explicit non-invalidation). CONTRIBUTING points at the rule; a PR template carries the declaration by default. Co-Authored-By: Claude Opus 5 (1M context) --- .github/pull_request_template.md | 5 ++++ CONTRIBUTING.md | 4 +++ docs/adr/README.md | 42 +++++++++++++++++++++----------- 3 files changed, 37 insertions(+), 14 deletions(-) create mode 100644 .github/pull_request_template.md diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..589eea7 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,5 @@ + +Material-decision impact: none diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d64d7a1..cdd39e5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,6 +15,10 @@ env GO111MODULE=on CGO_ENABLED=0 go build -trimpath ./cmd/judgment-pack Changes should include focused tests for human and JSON output, exit status, input limits, and adversarial behavior. Never add a runtime fetch of mutable specification branches. +Every pull request carries a one-line `Material-decision impact:` declaration, and material +decisions require the recorded cross-vendor review described in +[docs/adr/README.md](docs/adr/README.md#review-of-material-decisions). + Material command or output changes should first describe compatibility, migration, automation, security, privacy, and authority consequences in an issue. Release version increments and prereleases follow [VERSIONING.md](VERSIONING.md). diff --git a/docs/adr/README.md b/docs/adr/README.md index 2c3d337..6dd6056 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -38,38 +38,52 @@ skip the review. Such a decision requires a recorded adversarial review by a model from a **different vendor** than any model that assisted the drafting, with a written maintainer disposition for each finding, on the -pull request that makes the decision. *Vendor* means the organization that controls the model's +pull request that makes the decision. The record states the commit SHA that was reviewed. A material +change after the reviewed SHA requires a fresh review, with one exception mirrored from the regime: +a change that implements a dispositioned finding of a review already recorded on the same pull +request is covered by that finding's disposition. *Vendor* means the organization that controls the model's weights and training — the developer, not the API host and not a reseller; hosted copies of the same model share lineage and count as the same vendor. *Assisted the drafting* means generated or revised text that survives in the merged artifact, or planning, analysis, structure, or design choices supplied by a model and relied on to produce it; paraphrase does not launder assistance, so a model that shaped the outline or settled a design question assisted the drafting even when none of its sentences survive. Applying an accepted finding in one's own words does not make the reviewer a -drafter, while adopting reviewer-generated text verbatim is noted in the record. ADRs are written +drafter, and adopting reviewer-generated text verbatim under an accepted finding does not +retroactively invalidate the review that produced it — no further review is required on that +account — but the record says where each such adoption happened. ADRs are written after the decision and are immutable once accepted, so the review attaches to the pull request, not to the ADR text. -This applies to the pull request merging this section and every pull request merged after it that -makes a material decision, including one that supersedes an existing ADR. The test is -commit-relative, not date-relative; this section was merged 2026-07-27. The specification -repository's `GOVERNANCE.md` governs only that repository; this section is what places this runtime -under the obligation. +The review obligation applies to the pull request that introduces this section and every later +pull request that makes a material decision, including one that supersedes an existing ADR. +Beginning with the introducing pull request, every pull request — material or not — carries the +declaration below. "Later" is determined by commit ancestry from the commit introducing this +section, not by a calendar date. The specification repository's `GOVERNANCE.md` governs only that +repository; this section is what places this runtime under the obligation. Every pull request in this repository states its impact in the description, on one line: ``` -Material-decision impact: none | public-surface | documented-claim | conformance | security | dependency +Material-decision impact: none +Material-decision impact: [, ...]; review: ``` -Exactly one value. Anything other than `none` carries a link to the cross-vendor review recorded on -that pull request. `none` is a claim, not a formality: it is the author classifying their own change, -and it is wrong whenever the change turns out to be material. +Categories: `public-surface`, `documented-claim`, `conformance`, `security`, `dependency`. `none` +appears alone; otherwise list every category that applies, comma-separated, followed by `review:` +and a permanent link (or links) to review records covering every listed decision. A test-only or +behavior-preserving change is `none` unless it changes what conformance checking accepts, which is +`conformance`. A routine dependency version bump is `none`; a bump that fixes a vulnerability is +`security`; adding, removing, or replacing a dependency is `dependency`. An automated pull request +(dependency bots) gets its declaration added by the maintainer before merge. `none` is a claim, not +a formality: it is the author classifying their own change, and it is wrong whenever the change +turns out to be material. Materiality is classified by the maintainer, who is also the author — the weak point of this arrangement, stated rather than papered over. The declaration does not fix that; a checkbox its own -author ticks measures the author's care, not the change. What it removes is silence. The -classification is explicit, dated, attached to the diff, and contestable on the pull request, and -omitting the ADR and the review no longer omits the classification with them. Model review +author ticks measures the author's care, not the change. What it does is make silence a policy +violation: when the rule is followed, the classification is explicit, dated, recorded on the pull +request with the reviewed SHA, and contestable there — and omitting the ADR and the review no +longer omits the classification with them. Model review substitutes for review breadth while the project has a single maintainer; it is not decision authority, and following it confers no conformance status on anything.