Changelog
On this page
All notable changes prepared for or included in Judgment Pack Specification previews are recorded here.
Unreleased
Added
- The field guide gains When rules could disagree, informative authoring guidance for a
consequence of §8 that two independent encodings of real policy each had to discover: the format
has no rule priority, so a pack that holds both an allowed rule and a not allowed rule answers
conflictwhenever one of each is true. It gives the shapes that work — detectors that all name one outcome with the ordinary outcome asfallbackOutcome; the policy's own ordering as an exception; disjoint conditions — says whenconflictis the right answer, and names the trap in the first shape: a detector withonUnknown: ignorelets the fallback answer for a check that never ran. This is the guidance RFC 0007 (finding E4) said did not exist. Nothing normative changes. - RFC 0013 is
Accepted, and its five rows — the first to useexpectedErrorClass, two of them inputs where more than one §8.4 class applies and the fixed order decides — are staged inconformance/evaluation/staged/for thesuiteVersionafter0.2.0-draft. They are in no corpus: the0.2.0-draftcorpus is frozen and unchanged, no claim may cite a staged row, the site serves nothing under the staged directory, and no release bundle carries it (.gitattributes,export-ignore). That does not make them optional reading: they restate §8.2 and §8.4 as already released, so an implementation that disagrees with one may be violating the released contract without having failed a released row. The RFC's four open questions are decided (a structural fixture that fails for its one stated reason; no asserted phase, because §8.4 requires a class and not a phase; two fixtures; five rows). The repository's check that every evidence key a case supplies be declared by its pack becomes conditional on the expected error class. It admits a correctly labelled error row, which it used to refuse, and asks more of what it still covers: the class a case expects must be the one §8.4's fixed order reports for the case's own inputs, read without an evaluator. For the released rows it refuses what the old check refused, and every one passes unchanged. The RFC was first merged without the cross-vendor review the interim regime requires; that cannot be undone, the adoption record says so, and the review on the accepting pull request is the first the proposal has had. - RFC 0010 (Draft): the gateway signing identity — custody of the private seed (which also keys the arguments commitment), content-binding seals, key rotation in the registry, and external checkpoint anchoring of sealed history. The first RFC whose every part lands outside JPS — in the reference gateway repository's code, specification, guidance, and corpus — and the architecture vision's statement that no RFC proposes the research line's formats as JPS remains true. Prompted by a stray private seed found untracked in the runtime repository's working tree; the ignore-rule guards shipped separately in both repositories.
- Search, answer-engine, and generative-engine discoverability for the static site: every indexable production
page now carries full-name titles, explicit index directives, complete Open Graph and summary-card
metadata, sitemap and license discovery links, and schema.org Microdata for the site, project,
versioned technical specification, visible breadcrumbs, and all 47 complete FAQ answers. FAQ
questions now render as stable semantic headings without adding executable JavaScript, and a
concise experimental
/llms.txtnavigation aid points machine readers to the normative, informative, proposed, and companion-project surfaces without claiming crawler or ranking support. - Core
0.2.0-draft: the evaluator conformance class. RFC 0006 is accepted at draft maturity and lands in the specification: §3.4 defines the class and §3.4.1 the single form of claim permitted against it, §§7–8 become normative for that class (and stay informative for every other consumer), §8.2 defines the evaluation inputs including the tri-state evidence-availability document, §8.3 pins the portable disposition, and §8.4 makes an evaluation error something other than a result — in a fixed precedence order where more than one class applies, with implementation-defined classes required to use §9's reverse-domain form. §7.4 requires every operator of an implementation claiming the class, states that equality of decimal strings is string equality and deliberately not decimal-aware, and confines "cannot compare exactly" to JSON numbers outside an implementation's exact range — the single seam §8.3 excludes from its byte-agreement requirement and §13 leaves open. §3.4.1 freezes the corpus at the release of aspecVersionand namessuiteVersionas the corpus version a claim must state. §10 raises collection-size and evaluation-work limits to a MUST for implementations claiming the class. Document conformance is unchanged, and §3.5's non-claims apply to the new class with one narrow, stated exception. Full scope and caveats:releases/v0.2.0-draft.md. - A 20-case seed evaluation corpus in
conformance/evaluation/, with its own case carrier and four pack fixtures. Thirteen rows are imported from the cross-implementation agreement harness — ten over the nine walked RFC 0006 appendix instances, counting both variants of instance 7, plus three probes. Seven are constructed here from the specification text — reproduced on one of those two implementations, which checks the derivation rather than establishing agreement between two of them: the handoff subset rule andstate: none,no-matchwith no fallback, a direct exception escalation in a pack with noescalationobject, and §7.4's ordered comparison including its refusal to coerce a JSON number. It is normative for the evaluator class only, version-pinned, and grows by RFC. Its README states its gaps: no error rows, no number-representability row (deliberately — that question is open), handoff coverage counted row by row, three mandatory operators (not-equals,greater-than,less-than-or-equal) with no row, noliteral,not, composite-equality, or fallback-selection row, nosuppress-rulerow, no permutation or hostile rows, and the inputs its carrier cannot yet express. - The claim's scope is the contract, not the corpus (§§3.4, 3.4.1, 3.5). An evaluator-conformance claim asserts compliance with the whole §§7–10 contract for every input the implementation admits; corpus results are required, non-exhaustive evidence of that. A claim must state that every row of the named corpus version passed, and a failed row blocks the claim.
- An erratum mechanism for a frozen corpus at
conformance/evaluation/errata.md. Only a project-issued, versioned erratum can mark a row of a released corpus defective — a claimant cannot — and an erratum edits no row. It is in place and empty forsuiteVersion0.2.0-draft. - Input preflight (§8.2). The inputs are admitted before §8 runs, in the order pack, facts, evidence
availability; an omitted evidence document is the implicit empty object; any violation of §8.2's shape,
including a non-object evidence input, is
malformed-input; and because preflight completes before step 1, an input error can never be outraced by anot-applicableresult. - Two optional case members in the evaluation carrier, defined now and used by no row so that later rows
need no carrier change:
workBudget(a positive integer of work units, in the units a future accounting model will define) andexpectedErrorPhase(preflightorevaluation, alongsideexpectedErrorClassonly). - A top-level
FAQ.md; an informative, non-normative architecture-vision page (docs/architecture/vision.md); a prior-art comparison page (docs/concepts/comparison.md); and seeded draft RFCs 0001–0005 (pack manifest, Judgment Graph composition, evidence reference, planner interface, and pack discovery) that record open design questions without adding anything normative. - Site navigation: a Concepts hub (
concepts/index.html) gathering the conceptual and reference pages, breadcrumbs on every page, and footer links to the Concepts and Project & docs hubs, so every page is reachable through structured navigation rather than only through in-prose links. - Static SVG architecture diagrams (shipped-versus-proposed, the three-property split, and evidence
sources feeding a pack) on the architecture-vision page, rendered without any JavaScript so the
strict
script-src 'none'policy is preserved. - FAQ: a "Skills, tools, and agent integration" section (with a "Skills and Tools" subsection)
that explains, honestly, how Judgment Packs relate to tools, agent skills, and
SKILL.md— including when a skill alone is sufficient — with a static SVG integration diagram. - A
NOTICEfile naming Brian Jin as the copyright holder, included in the release bundle. The repository previously identified no owner:LICENSEis the unmodified Apache-2.0 text, whose appendix is a template rather than a filled-in field.LICENSEis deliberately left byte-identical to the canonical text so automated license scanners continue to report a clean Apache-2.0 match. - A superseded-draft signpost at
/spec/0.1.0-draft/, so a versioned URL that citers may already have used resolves to the tagged source and the current draft instead of a 404.
Changed
- Implementations page and presentation: they say what the runtime and Runner now establish about
a decision record, as runtime conventions and in the runtime's own wording. The runtime's listing
names chaining on by default, record signatures in a sidecar with key rotation, checkpoints a
holder keeps and
jpack audit verifyagainst them, and RFC 3161 stamps (runtime v0.26.0), and v0.27.0's refusal of a signing key another user could replace, with a link to the runtime guide's "Checking a trail, and handing over a checkpoint". The Runner's listing names its chain of runs and signatures, checked byverify-run(v0.5.0), and the gateway's a decision policy that requires a signed record (v0.9.0, its ADR-0012). The gateway's top line said "not integrated with the runtime"; it now says the gateway runs its sources and receipts them apart from the runtime, and that such a policy can hold a write to a record a runtime key it trusts signed. The presentation labels its receipt sentences as the gateway's receipt store, unchanged, and gains a section on the decision record in runtime ADR-0047's terms: a chain establishes consistency, not completeness; a signature, nothing against the key holder; a held checkpoint, existence at hand-over if the holder is independent; a stamp, existence by a time, not when a record was made. None of this is in JPS, and nothing normative changes. - The six published demo projects now pass
jpack packs lint, the check the runtime offers for a project's producers. Each demo'sjpack.jsondeclares, for every fact pointer its pack reads and every evidence requirement it declares, the source in the demo's ownmapping/mapping.jsonthat supplies it; these are the runtime's non-normative hints and no pack changes. Each README adds the lint to its commands and says what it checks. The demos keep their versions, and their published archives change injpack.jsonandREADME.mdonly; each demo's manifest records the new digests, and the deal demo's archive pin moves with them. Nothing normative changes. - RFC 0002 (Judgment Graph composition) is amended; it stays a
Draft. The question Study 004 left prior to the others — which seam the format is for — is decided: the dataflow seam, one decision's outcome consumed as another's input, and the edge is not grown toward effect or entitlement constructs. The use intended for it, the seam between decisions different parties own, is stated as intended and unmeasured. The one implementation is described as it stands: eight graph-specific runtime decision records, first released across four versions, with the graph test verb in a fifth, where the RFC named one. Four statements of the sketch are corrected or marked as diverging from that implementation — it names a pack by a project-local decision id and not by(id, version), pins nothing about a pack in the document, and carries one switch,onUnresolved, whose meaning is evaluator behavior — and each divergence is recorded as a question for the RFC and not settled by adopting either side. Four unresolved questions are added: how a node names and pins its pack; whether an upstream verdict is co-evaluated or consumed as recorded; whether a per-edge evaluator switch belongs in a portable format; and whether a test format is part of the interchange. - RFC 0004 (planner interface) is dispositioned
Rejected: a planner is product, and the specification standardizes no part of one, the narrow selection query included. The RFC named this its most likely outcome when it was opened. The record states what the rejection rests on — the maintainer knows of no pair of products that has asked for the surface, and the reference runtime deliberately leaves selection with the application — and what it leaves undecided, including whether a selection query could be portable at all. Nothing normative changes; the index, the architecture vision, the FAQ, the site descriptions and RFC 0006's adoption record, which had assigned a question to RFC 0004, follow. - Search metadata descriptions are normalized to 160 characters, conformance-case descriptions now
name JPS and their layer, and sitemap entries no longer misreport the deployment timestamp as every
page's content-modification time. Duplicate downloadable JSON under
/artifacts/now carries anX-Robots-Tag: noindexresponse while canonical schema URLs remain available. The deployment guide also forbids cloning the intentionallynoindexpreview artifact to live and requires an explicit production build plus indexing checks. - RFC 0014 (the lineage record and the action
binding) is
Accepted— the first accepted cross-project record, and a retrospective one. Acceptance endorses the record as an account of a design the gateway and the runtime had already adopted by their own processes; it confers no authority over them, makes nothing part of JPS, and claims no stability. The record's own process question — whether RFC 0000's cross-project provision covers a record filed after its parts were built — is ruled on, and RFC 0000 now says that it does and on what conditions. Four developments since the record was filed on 2026-09-14 are recorded in place. One overtook a statement and that statement is struck: the golden-record agreement test, called unbuilt, is built for one platform. One stands beside statements that remain true: a second verifier of receipt version 3 exists and is neither independent nor clean-room. Two update statements marked "at the time of writing": runtime 0.21.0 is released, and the demo's Acts 7 and 8 are merged. The descriptions of this directory no longer call it open proposals only. - Version identifiers move to
0.2.0-draft: Core prose, the structural schema ($idand the exactspecVersionconstant), the document-conformance manifest, every example, and every fixture. The document format is unchanged, so a0.1.0-draftpack is unchanged in representation and document-conformance meaning and needs only that one value edited; because the value is exact, an unedited pack is not structurally conforming here. Re-declaration is not inert, though: it opts the pack into this draft's evaluator semantics, which existed for no consumer under0.1.0-draft, and confers no conformance on any implementation. The0.1.0-draftschema is preserved atschema/judgment-pack-core-0.1.0-draft.schema.json, and that draft's document-conformance manifest schema atschema/conformance-manifest-0.1.0-draft.schema.json, both served at the$ideach was published under so a previously cited identifier still resolves. Each preserved file matches the taggedv0.1.0-draftartifact in every byte except its$idmember, which was re-pointed to the project's neutral domain when the retired pre-publication identifier was withdrawn;releases/v0.2.0-draft.mdpublishes the digests of both forms.conformance/structural/invalid-spec-version.jsonnow carries0.1.0-draftas its negative value, which makes the re-declaration requirement a corpus case. - §8.4's classes are split by phase so the error contract cannot contradict §10: a documented document or
carrier limit reached while admitting an input is
malformed-input(§2.1 refuses the document, so preflight never admits it), while a collection-size or evaluation-work limit reached during evaluation isresource-exhaustion. Every error carries exactly one class — a Core class where one applies, otherwise a documented implementation-defined class in §9's reverse-domain form. tools/build_release.pynow requiresHEADto be the resolved release commit. Artifacts are validated from the worktree and archived from the commit, so the gate previously accepted a validated tree and an archived tree that were not the same tree.- The evidence behind the change is two implementations agreeing 13/13. Both trace to one maintainer's direction, so that agreement corroborates the semantics rather than independently confirming them, and RFC 0000's bar for a stable feature is still unmet — carried as a caveat in the RFC's adoption record, the release notes, and the corpus README rather than stated once and forgotten.
-
Every assertion that evaluator conformance cannot be claimed is now the
0.2.0-drafttruth: the class exists, claims are governed by §3.4.1, and no implementation ships a claim with this release. The reference runtime's evaluator remains experimental and claims nothing; whether it claims the class is a decision for that repository. The site says the same: the implementations listing no longer says the runtime does not evaluate rules, and the example guides no longer call a conflict result unportable now that §8.3 makes it a portableunresolveddisposition. -
Renamed the change-proposal process from Judgment Enhancement Proposal (JEP) to Request for Comments (RFC); moved
jeps/torfcs/. The required sections and evidence bar are unchanged. The historical0.1.0-draftentry below is left as shipped. - Implementations page: replaced the earlier vendor-branded CLI listing with the vendor-neutral
judgment-packreference runtime (which inherited that CLI's implementation), linking to its own repository, and removed the vendor-branded on-site CLI page. Every page on the site is now vendor-neutral, and no page names the retired pre-publication brand. - The first evaluator-conformance claim now exists, and the site stops saying it does not. The
reference runtime states one for
0.2.0-draftin its own repository. Four surfaces asserted the opposite as present fact and are corrected: the overview (README.md), the architecture vision's Runtime row, FAQ Q33, and the implementations listing. Each now records that a claim exists and where it lives, and none restates any part of it — a partial restatement is what §3.4.1 forbids, and the distinction the corrected text carries is thatexperimentalon a runtime surface reports stability and never conformance. The dated records are deliberately not edited: the0.2.0-draftrelease notes and the entries above describe what was true at that release. - Implementations page: added the clean-room Python evaluator as a second listing, with a stated caveat that both implementations trace to one maintainer and so corroborate the specification's precision rather than evidencing independent interoperability.
- Site ecosystem update: the landing hero now gives Slack and the public project repositories the same first-screen prominence as the specification, and a status-labelled project directory links the runtime, cloneable demo, gateway, and research repositories without presenting any companion tool as normative. The Implementations page now links directly to runtime releases, build and MCP guidance, and the runtime's complete conformance claim; records project matrices, experimental graphs, opt-in evaluation records, and reviewed-set locking as non-normative runtime behavior; and lists the demo and gateway separately as companion projects. It also corrects the stale statement that the runtime never produces an outcome: its evaluator produces a disposition from supplied inputs, which never authorizes an action or establishes truth, safety, or fitness.
- Architecture vision: recorded that where a pack's inputs come from is an open question outside this specification, naming the research repositories and the reference gateway — with their stated ceiling, byte-lineage rather than truth, carried on the site rather than left to the reader.
- Architecture vision: distinguishes the inline HMAC acquisition proxy from the incompatible
Ed25519 gateway and adds the portable-derivation and deterministic-admission steps between
acquisition and evaluation. The page and presentation now state that no runtime consumes these
formats and that none is part of JPS; the architecture diagram also reflects Core
0.2.0-draft's evaluator class and a runtime that evaluates as well as validates. - RFC 0002: the runtime's graph prototype is no longer described as living unmerged on a branch. The reviewed commit stays pinned; the surface has since merged, shipped, and grown past it.
- The site now renders
~~struck~~text as a deletion, as GitHub does. The RFCs correct themselves in place — a superseded sentence is struck and a dated note follows it — and the site's renderer had no strikethrough, so on five published RFC pages a withdrawn claim appeared unstruck, wrapped in literal tildes. A test holds that every strike in an RFC's source is a<del>on its page. - Field guide: a rule's
evidenceRequirementRefsis now described as what it is, a citation that no evaluation step reads. The guide said the rule "relies on" the requirements it names, which reads as a gate. It now names the two mechanisms that do gate on evidence: a requirement declaredrequired: true, and anevidence-presentcondition. Nothing normative changes. - Field guide: says that an outcome named for human review, such as
manual-review, is an ordinary outcome result that requests no handoff, and that the escalation target is requested only by an unresolved or not-applicable result whose reason the triggers name, or by anescalateexception. Four of the five example packs use such an outcome as theirfallbackOutcome. Nothing normative changes. - README and Implementations page: the project's desk and jobs runner are listed with the other companion projects, as separately governed, non-normative research previews. Neither evaluates a pack itself, so neither is listed as an implementation.
0.1.0-draft — 2026-07-22
Initial research preview.
Added
- Core prose specification and Draft 2020-12 structural schema.
- Synthetic expense-approval, software-change, and records-disposition examples.
- A 47-case carrier, structural, semantic, and capability corpus with machine-readable expectations.
- A domain-authoring test exercise and focused feedback template.
- Automated repository checks for schema, examples, conformance metadata, links, and fixture drift.
- Public governance, contribution, security, and JEP processes.
Compatibility
This is the first tagged draft. It makes no compatibility promise for later
0.x releases. Pack evaluation is experimental and has no evaluator-conformance class in this
release.
Known limitations
- No CLI or validator is part of the normative specification release; implementations are separate and nonnormative.
- Conformance does not establish factual truth, authority, safety, or operational fitness.
- Runtime facts, evidence transport, result traces, and ordered business-value comparison are not portable evaluation contracts in this draft.