Research preview · 0.2.0-draft

No compatibility guarantee. Not for consequential production decisions.

Informative test corpus View tagged source

Conformance corpus

This directory contains 47 focused research-preview cases for testing the carrier, structural, and semantic requirements of Judgment Pack Core 0.2.0-draft. It is versioned with the draft but is not yet a complete or normative conformance suite. Evaluator behavior is out of scope here: it has its own corpus, in evaluation/, which is normative for the evaluator conformance class of §3.4. A document-conformance result never depends on it.

manifest.json is the machine-readable case index. Its shape is defined by manifest.schema.json.

Layers

  • carrier/ contains inputs that must be rejected before schema validation. Some files are deliberately malformed JSON, and duplicate-member cases must be parsed with duplicate detection.
  • structural/ contains well-formed JSON documents that fail the normative JSON Schema. JPS testing asserts the schema's uri, date, and date-time formats even though some general-purpose JSON Schema libraries treat format as annotation-only by default.
  • semantic/ contains documents that pass structural validation but fail a prose requirement, or cannot be fully interpreted with the case's declared consumer capabilities.
  • valid/ contains documents expected to pass carrier, structural, and semantic checks. A valid result does not claim factual truth, authority, operational fitness, or anything about an evaluator: evaluator conformance is claimed against evaluation/, never against this layer.

Validation proceeds in layer order. A runner should stop a case at its target layer rather than reporting downstream diagnostics for content that failed an earlier layer.

Manifest expectations

Each case records:

  • layer — the highest layer exercised by the case;
  • expectedResultvalid, invalid, or unsupported;
  • expectedDiagnostic — the primary provisional diagnostic code and JSON Pointer, or null for a valid case;
  • specSection — the draft section that motivates the expectation; and
  • optional supportedExtensions — the required-extension capabilities available to the consumer for that case. When omitted, the capability set is empty.

unsupported is distinct from invalid: the document is structurally readable and semantically well-formed, but the consumer lacks a capability named by metadata.requiredExtensions.

Diagnostic codes in this corpus are test metadata, not yet a normative cross-implementation diagnostic contract. The recorded diagnostic is the primary expected result; implementations may also report additional detail. A pointer to a missing member identifies the location the member would have occupied.

Semantic checks represented here

The semantic cases exercise collection-local identifier uniqueness; declared outcome, evidence, source, and exception-target references; reference-kind checking; recursive traversal of every condition position for evidence-present; required-extension declaration consistency; and required-extension capability negotiation.

Reference traversal must inspect every condition position, including root applicability, rule conditions, exception conditions, and arbitrarily nested all, any, and not nodes. The focused recursive fixture demonstrates the traversal requirement without defining an implementation algorithm.

Current boundary

This corpus does not test condition evaluation, resolution results, resource limits, canonicalization, signatures, imports, or migration behavior. Condition and resolution results are covered — as a seed corpus with stated gaps — by evaluation/. Future expansion here should remain focused: one primary expectation per negative fixture, with positive, boundary, and adversarial counterparts added when the corresponding semantics become normative.

Every fixture declares specVersion 0.2.0-draft, which is exact. structural/invalid-spec-version.json still declares 0.1.0-draft, which is now the negative case: an unedited 0.1.0-draft pack is unchanged in representation and document-conformance meaning but must be re-declared to be structurally conforming to this draft, and re-declaring it also opts it into this draft's evaluator semantics without conferring conformance on any implementation (§11).

Document conformance only. These cases test documents. Evaluator conformance is claimed against the separate evaluation corpus, and no corpus of either kind can establish truth, authority, safety, or fitness.

View manifest View manifest schema

Carrier cases 2

CaseResultFocusDiagnosticSpec
carrier-invalid-jsoninvalidmalformed JSON is rejected before schema validationJPS-CARRIER-INVALID-JSON§2
carrier-duplicate-root-memberinvalidduplicate object member names are rejected during parsingJPS-CARRIER-DUPLICATE-MEMBER§2

Structural cases 19

CaseResultFocusDiagnosticSpec
structural-missing-decisioninvalidrequired root memberJPS-STRUCTURE-REQUIRED-MEMBER§4
structural-unknown-root-memberinvalidclosed root objectJPS-STRUCTURE-UNKNOWN-MEMBER§4
structural-relative-pack-idinvalidpack id is an absolute URI with format assertions enabledJPS-STRUCTURE-FORMAT-URI§5
structural-invalid-published-dateinvalidsource publication date format assertionJPS-STRUCTURE-FORMAT-DATE§6.3
structural-invalid-created-atinvalidmetadata creation timestamp format assertionJPS-STRUCTURE-FORMAT-DATE-TIME§6.8
structural-invalid-local-idinvalidlocal identifier grammarJPS-STRUCTURE-LOCAL-ID§5
structural-invalid-pack-versioninvalidthree-component pack version grammarJPS-STRUCTURE-PACK-VERSION§4
structural-invalid-fact-pathinvalidfact path syntaxJPS-STRUCTURE-FACT-PATH§7.4
structural-empty-any-conditioninvalidall and any require at least one child conditionJPS-STRUCTURE-CONDITION-ARITY§7
structural-force-outcome-missing-outcomeinvalidforce-outcome exception requires exactly its outcome operandJPS-STRUCTURE-EXCEPTION-SHAPE§6.6
structural-unqualified-extensioninvalidreverse-domain extension namespaceJPS-STRUCTURE-EXTENSION-NAME§9
structural-invalid-spec-versioninvalidexact supported specification version; a pack still declaring 0.1.0-draft must be re-declaredJPS-STRUCTURE-SPEC-VERSION§4
structural-too-few-outcomesinvalidat least two outcomes are requiredJPS-STRUCTURE-COLLECTION-ARITY§4
structural-empty-rulesinvalidat least one rule is requiredJPS-STRUCTURE-COLLECTION-ARITY§4
structural-reserved-extension-nameinvalidspecification-reserved extension namespaceJPS-STRUCTURE-EXTENSION-NAME§9
structural-unknown-decision-memberinvalidclosed nested Core objectJPS-STRUCTURE-UNKNOWN-MEMBER§4
structural-empty-escalation-triggersinvalidconfigured handoff intent has at least one triggerJPS-STRUCTURE-ESCALATION-TRIGGERS§6.7
structural-invalid-ordered-decimalinvalidordered comparison operands use the decimal grammarJPS-STRUCTURE-DECIMAL-OPERAND§2.2
structural-invalid-in-operandinvalidmembership comparison operands are non-empty arraysJPS-STRUCTURE-IN-OPERAND§7.4

Semantic cases 26

CaseResultFocusDiagnosticSpec
semantic-duplicate-outcome-idinvalidoutcome identifiers are unique within their collectionJPS-SEMANTIC-DUPLICATE-ID§3.3
semantic-duplicate-rule-idinvalidrule identifiers are unique within their collectionJPS-SEMANTIC-DUPLICATE-ID§3.3
semantic-duplicate-evidence-idinvalidevidence requirement identifiers are unique within their collectionJPS-SEMANTIC-DUPLICATE-ID§3.3
semantic-duplicate-source-idinvalidsource identifiers are unique within their collectionJPS-SEMANTIC-DUPLICATE-ID§3.3
semantic-duplicate-exception-idinvalidexception identifiers are unique within their collectionJPS-SEMANTIC-DUPLICATE-ID§3.3
semantic-dangling-rule-outcomeinvalidrule outcome resolves to a declared outcomeJPS-SEMANTIC-UNRESOLVED-OUTCOME§3.3
semantic-dangling-fallback-outcomeinvalidfallback outcome resolves to a declared outcomeJPS-SEMANTIC-UNRESOLVED-OUTCOME§3.3
semantic-dangling-evidence-refinvalidrule evidence reference resolves to a declared evidence requirementJPS-SEMANTIC-UNRESOLVED-EVIDENCE§3.3
semantic-dangling-source-refinvalidrule source reference resolves to a declared sourceJPS-SEMANTIC-UNRESOLVED-SOURCE§3.3
semantic-dangling-exception-targetinvalidexception target resolves to a declared ruleJPS-SEMANTIC-UNRESOLVED-RULE§3.3
semantic-dangling-exception-outcomeinvalidexception outcome resolves to a declared outcomeJPS-SEMANTIC-UNRESOLVED-OUTCOME§3.3
semantic-dangling-exception-source-refinvalidexception source reference resolves to a declared sourceJPS-SEMANTIC-UNRESOLVED-SOURCE§3.3
semantic-dangling-applicability-evidenceinvalidapplicability evidence reference resolves to a declared requirementJPS-SEMANTIC-UNRESOLVED-EVIDENCE§3.3
semantic-dangling-exception-evidenceinvalidexception-condition evidence reference resolves to a declared requirementJPS-SEMANTIC-UNRESOLVED-EVIDENCE§3.3
semantic-wrong-kind-rule-outcomeinvalida rule identifier cannot satisfy an outcome referenceJPS-SEMANTIC-UNRESOLVED-OUTCOME§3.3
semantic-dangling-nested-evidence-presentinvalidreference validation recursively traverses nested condition nodesJPS-SEMANTIC-UNRESOLVED-EVIDENCE§3.3
semantic-required-extension-unsupportedunsupportedconsumer reports a declared required extension it does not supportJPS-CAPABILITY-REQUIRED-EXTENSION§9
semantic-missing-required-extension-valueinvalidrequired extension declaration corresponds to a document extension valueJPS-SEMANTIC-MISSING-REQUIRED-EXTENSION§9
valid-minimal-literalvalidminimal structurally and semantically conforming document§§2–7
valid-condition-branchesvalidliteral, all, any, not, fact, and evidence-present condition shapes§7
valid-exception-suppress-rulevalidsuppress-rule exception branch and resolved target§6.6
valid-exception-force-outcomevalidforce-outcome exception branch and resolved outcome§6.6
valid-exception-escalatevalidescalate exception branch without an outcome or target rule§6.6
valid-required-extension-supportedvalidconsumer fully interprets a declared required extension it supports§9
valid-hostile-optional-extension-valuevalidhostile-looking optional extension content remains inert data§§9–10
valid-minimal-expense-approvalvalidcomplete cross-feature expense-approval example§§4–9