diff --git a/CHANGELOG.md b/CHANGELOG.md index ca2646c..11f8781 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to tagged releases are documented here. -## Unreleased +## 0.4.0 - 2026-07-28 - **Add the `jpack.json` project convention** (ADR-0012), a **non-normative convention of this runtime** and not part of the Judgment Pack Specification. It gives a project one name per decision diff --git a/docs/adr/0009-draft-rfc-quantifier-prototype.md b/docs/adr/0009-draft-rfc-quantifier-prototype.md index 0863545..aaeb35a 100644 --- a/docs/adr/0009-draft-rfc-quantifier-prototype.md +++ b/docs/adr/0009-draft-rfc-quantifier-prototype.md @@ -1,5 +1,5 @@ --- -status: proposed # proposed | accepted | deprecated | superseded by NNNN +status: accepted date: 2026-07-27 deciders: Brian Jin --- diff --git a/docs/adr/0010-evaluator-aligned-to-core-0.2.0-draft.md b/docs/adr/0010-evaluator-aligned-to-core-0.2.0-draft.md index c5221eb..68c0a09 100644 --- a/docs/adr/0010-evaluator-aligned-to-core-0.2.0-draft.md +++ b/docs/adr/0010-evaluator-aligned-to-core-0.2.0-draft.md @@ -1,5 +1,5 @@ --- -status: proposed # proposed | accepted | deprecated | superseded by NNNN +status: accepted date: 2026-07-28 deciders: Brian Jin --- diff --git a/docs/adr/0011-first-evaluator-conformance-claim.md b/docs/adr/0011-first-evaluator-conformance-claim.md index 072db40..db8bacb 100644 --- a/docs/adr/0011-first-evaluator-conformance-claim.md +++ b/docs/adr/0011-first-evaluator-conformance-claim.md @@ -1,5 +1,5 @@ --- -status: proposed # proposed | accepted | deprecated | superseded by NNNN +status: accepted date: 2026-07-28 deciders: Brian Jin --- diff --git a/docs/adr/0012-jpack-project-convention.md b/docs/adr/0012-jpack-project-convention.md index 580da80..ccb195e 100644 --- a/docs/adr/0012-jpack-project-convention.md +++ b/docs/adr/0012-jpack-project-convention.md @@ -1,5 +1,5 @@ --- -status: proposed # proposed | accepted | deprecated | superseded by NNNN +status: accepted date: 2026-07-28 deciders: Brian Jin --- diff --git a/docs/adr/README.md b/docs/adr/README.md index fe5990c..89dc6a8 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -105,7 +105,7 @@ authority, and following it confers no conformance status on anything. | [0006](0006-authoring-lifecycle-in-the-client.md) | The authoring lifecycle lives in the client; the runtime is a stateless oracle | accepted | | [0007](0007-experimental-evaluator.md) | Ship an experimental evaluator behind an explicit experimental surface | accepted; claim posture superseded by [0011](0011-first-evaluator-conformance-claim.md) | | [0008](0008-mcp-prompts-authoring-method.md) | Serve authoring method as MCP prompts; the intelligence stays in the client | accepted | -| [0009](0009-draft-rfc-quantifier-prototype.md) | Prototype spec RFC 0008 quantifiers behind an opt-in experimental flag | proposed | -| [0010](0010-evaluator-aligned-to-core-0.2.0-draft.md) | Retarget the experimental evaluator at 0.2.0-draft's evaluator class; claim nothing | proposed; claim-scope determination superseded by [0011](0011-first-evaluator-conformance-claim.md) | -| [0011](0011-first-evaluator-conformance-claim.md) | Supply the §10 evaluation limits and make the first §3.4.1 evaluator-conformance claim | proposed | -| [0012](0012-jpack-project-convention.md) | Adopt a `jpack.json` project convention in the runtime, deliberately outside the spec | proposed | +| [0009](0009-draft-rfc-quantifier-prototype.md) | Prototype spec RFC 0008 quantifiers behind an opt-in experimental flag | accepted | +| [0010](0010-evaluator-aligned-to-core-0.2.0-draft.md) | Retarget the experimental evaluator at 0.2.0-draft's evaluator class; claim nothing | accepted; claim-scope determination superseded by 0011 | +| [0011](0011-first-evaluator-conformance-claim.md) | Supply the §10 evaluation limits and make the first §3.4.1 evaluator-conformance claim | accepted | +| [0012](0012-jpack-project-convention.md) | Adopt a `jpack.json` project convention in the runtime, deliberately outside the spec | accepted | diff --git a/internal/cli/app_test.go b/internal/cli/app_test.go index bd2bd1b..c809df7 100644 --- a/internal/cli/app_test.go +++ b/internal/cli/app_test.go @@ -309,17 +309,25 @@ func claimProse(t *testing.T) []claimSurface { return surfaces } -// unreleasedSection is the CHANGELOG's Unreleased section: everything above the -// first released heading. +// unreleasedSection is the CHANGELOG's maintained section: Unreleased when one +// exists, else the topmost version section. On a release commit "Unreleased" +// has just been renamed to the new version, but that text is still this +// change's live prose until the tag exists, so it is scanned rather than +// exempted — the guard must not go blind at exactly the moment a release PR +// touches the most words. func unreleasedSection(t *testing.T, changelog string) string { t.Helper() start := strings.Index(changelog, "## Unreleased") if start < 0 { - t.Fatal("the CHANGELOG has no Unreleased section to scan") + start = strings.Index(changelog, "\n## ") + if start < 0 { + t.Fatal("the CHANGELOG has no section to scan") + } + start++ } rest := changelog[start:] - if end := strings.Index(rest, "\n## "); end >= 0 { - return rest[:end] + if end := strings.Index(rest[3:], "\n## "); end >= 0 { + return rest[:end+3] } return rest }