Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0009-draft-rfc-quantifier-prototype.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
status: proposed # proposed | accepted | deprecated | superseded by NNNN
status: accepted
date: 2026-07-27
deciders: Brian Jin
---
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0010-evaluator-aligned-to-core-0.2.0-draft.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
status: proposed # proposed | accepted | deprecated | superseded by NNNN
status: accepted
date: 2026-07-28
deciders: Brian Jin
---
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0011-first-evaluator-conformance-claim.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
status: proposed # proposed | accepted | deprecated | superseded by NNNN
status: accepted
date: 2026-07-28
deciders: Brian Jin
---
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0012-jpack-project-convention.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
status: proposed # proposed | accepted | deprecated | superseded by NNNN
status: accepted
date: 2026-07-28
deciders: Brian Jin
---
Expand Down
8 changes: 4 additions & 4 deletions docs/adr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 |
18 changes: 13 additions & 5 deletions internal/cli/app_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down