Repository navigation
v0.12.0
Release notes for v0.12.0. This document describes the release contents and the gates that
must be satisfied before publication. The package is @judgment-pack/harness. A completed
release publishes its attested npm tarball and checksums and creates the matching Go module tag
go/v0.12.0 on the release commit for module github.com/Judgment-Pack/judgment-pack-agent/go.
The package version and lockfile identify v0.12.0. Publish only after the release procedure
verifies the package, checksums, attestations and matching Go module tag.
The host migration details are in the host upgrade guide.
Release scope
v0.12.0 holds five changes merged since v0.11.0, two API delegation fixes the Desk found while adopting it, a CI timeout and a lockfile advisory fix.
- The
rehearsecheck sub-kind (#241, PR #244; ADR-0027 amendment). A seventhcheck
sub-kind for a non-binding dry evaluation of a declared artifact.check/rehearseaccepts
the effectspureorreadonly. Host admission refuses a rehearse declaration unless its
own description begins with the words "Rehearsal, non-binding". - Receipt quarantine (#242, PR #247; ADR-0027 amendment). A source result is never
reusable context, never Plan step evidence and never reachable by any reader until its
receipt verifies. A Gateway receipt whose unsignedsaltscarry a member other thanargs
andstatementis refused. - The dialect inventory by digest (#243, PR #250; #252, PR #256; ADR-0028 and its
amendment). The complete original declaration inventory no longer travels inline. It is a
two-level index: a bounded top index, plus per-revision field indexes and declarations read
in pages through the read port, each checked against its digest. The bound proof rests on
the host's collection limits. - Run leases and effect-host fencing (#223, PR #251; #253, PR #257; ADR-0025
amendment). A lease has an owner, an authoritative expiry and an epoch written as a
canonical decimal string. The fence{resource, owner, epoch}is checked at every
checkpoint commit, at every history and context snapshot commit, and at every effect
admission. Certified effect hosts (certifyEffectHost/CertifyEffectHost) are bound to
the exact instance the kit checked.admitUnattended/AdmitUnattendedaccept only the
reference host or a certified host. Every non-read act under a fenced run goes through the
effect host. New schemacontract/schemas/run-lease.json, version 1. - API delegation keeps the retained Chat scope (#248, PR #261). After the parent
invocation returns, the API coordinator hands ownership back to the last acknowledged
root checkpoint, as the native coordinator already did. Its finalEnd, including after a
failed parent, keeps the retained Chat's scope instead of a released session's fresh one.
TypeScript's delegation coordinator had the same gap on both its model and agent paths,
and is fixed the same way. - API child accounting keeps the root request count monotone (#249, PR #262). A
delegated child's accounting saves the live parent's request count, not an older copy, and
a wrapped charge advances and checkpoints the count under the lock that a root save holds
until the host acknowledges. Overlapping sibling scopes can no longer save a lower count, so
a host that refuses a decreasing count (as the Desk does) no longer fails the run. Children
still run concurrently. TypeScript was not affected. - CI. The
go-racestep's per-package timeout is 40 minutes (#254, PR #255). The
packages, assertions and the step's 3,000-second limit are unchanged. - Lockfile advisory fix (PR #245).
@hono/node-server, which arrives through
@modelcontextprotocol/sdk, moves from 2.1.1 to 2.1.5 in the lockfile for
GHSA-rmxm-3fg6-px4f (moderate). No
package manifest changes.
ADR-0025's other build items (#224–#230: durable waits, deadlines, re-authorization,
revalidation, attention, run-owned jobs, durable goals) are not in this release; they are
assigned to v0.13.0.
Host review before pinning (upgrading from v0.11.0)
The Desk adopts this release. Read the host upgrade guide for each
migration; the points a host must review are:
- Dialect authoring break. A Go
DialectSnapshotno longer hasResearchDeclarations.
Hosts supplyResearchIndex(the top index) and implement the paged read-port members
ReadFieldIndexandReadDeclarations(TypeScriptreadFieldIndexand
readDeclarations). TypeScript refuses a snapshot that still carries
researchDeclarations, by name. A Go host decoding a JSON snapshot that still has
researchDeclarationssilently drops it, so migrate explicitly. Version-2 draft
checkpoints and proposals carryresearchIndex; version-1 records written by v0.11.0
still read. Only the schema refuses mixed version-1/version-2 shapes. Re-encoding a
version-1 record through Go addsresearchIndex: null. - The bound and the host's obligation. The top index fits every collection of at most
1,000 records with at most 30 fields and field names of at most 64 bytes. The host's
inventory must be built from each record's original revision, not from the whole recipe
history; otherwise more than 1,000 revisions are refused.read_dialectgains an optional
cursor. - Receipt quarantine. An unverified, missing or expired receipt leaves the operation
inspectable (itstool_resultevent, its durable dispatch row in stateunknownand, in
the API adapters, the operation listed as failed) but its bytes unreadable by every reader. TypeScript keeps a verified custom-source receipt in the
retained value and Go does not; this is a declared parity difference. - Leases. Unattended admission needs a store that declares lease support and a certified
or reference effect host. The in-memory store kinds keep leases per process
(leaseLifetime: 'process') and are refused for unattended admission. Metadata writes
(feedback, capture) are not fenced. A host's store kind must prove its epoch durability
across restarts; the conformance kit certifies the port, not durability. Certification
assumes non-adversarial host code; #258 tracks further hardening. - The rehearsal sub-kind, for hosts that declare rehearsal tools: declare
check/rehearsewith effectpureorread, and begin the tool's own description with
"Rehearsal, non-binding".
Checkpoint and run event formats are unchanged. A fenced run's stored records have the same
shape and versions as an unfenced run's.
Review statement
Every change in this release was built and reviewed by Claude Opus, with a clean-room review
and, for the security-boundary changes, a security clean-room review per pull request. This is
same-vendor review, not a cross-vendor claim. The review records are on each pull request.
Release prerequisites
The maintainer decided the three release-specific gates on 2026-10-30
(decision).
- Go dependency disclosure. GO-2026-5781
(PDF) and GO-2026-5932 (OpenPGP)
remain unresolved in the Go module graph. No Go module dependency changed since
v0.11.0 (go/go.modandgo/go.sumare unchanged), so the v0.11.0 assessment of the
native Linux/amd64, CGO-enabled, default-build-tags configuration still describes this
source. These findings remain; this is not a code fix, withdrawal or safety claim. The
maintainer exception is extended to Agent v0.12.0 and go/v0.12.0 and still expires
2026-11-07 00:00 UTC (decision; the v0.11.0
approval).
Other configurations and later releases are not covered. Reassess if source,
dependencies, configuration or advisory evidence changes, and when the exception
expires. Separately record the exact release commit, npm audit coverage/result, Python
dependency assessment and current primary evidence. - Runner image exception. Not extended. The v0.11.0 runner image exception
applied to v0.11.0 only and is removed from.github/ci-evidence.json; this release's
exact-source CI evidence must satisfy the evidence gate with exact
runner and tool matching. - Release validation. Before publication, record the exact release commit, the full
required check summary, exact-head CI, full mutation coverage on the merge commit, the
dependency audit for the candidate, and final artifact and attestation verification. A
version edit alone does not satisfy these gates.
Live answer comparison
No live answer comparison has passed for this release, and no live answer-quality,
token-saving or monetary-cost result is claimed. For Agent v0.12.0 only, the maintainer
deferred the live comparison on 2026-10-30
(scope decision,
issue comment): this release changes boundaries and contracts, not prompts,
routing or model selection. #169 remains open without a milestone. The Desk's
application-level comparison (Desk #599)
remains the route. Routing stays off by default. Every other release gate remains in
force, and the deferral does not waive the comparison for later releases.
References
- host upgrade guide
- Required final-tag dependency inventory
- Release checks and artifact procedure
- Dependency advisory policy
- Release quality scope
- ADR-0025: unattended runs, with the lease amendment
- ADR-0027: tool taxonomy, with the rehearse and receipt amendments
- ADR-0028: dialect inventory by digest
- Dialect authoring: paging original declarations
- Storage: run leases and fencing
- Tool taxonomy design