Skip to content

Schema fitness finding — the $id is not valid JSON Schema

CLOSED 2026-07-03 by Tim's ruling. $id corrected from the invalid fragment form to https://ucca.online/ns/ucco/v1/content-payload-schema.json; check_schema now passes (verified); schema re-frozen with an x-erratum line + pack §9 erratum; pack title reconciled v0.1 → v1.0. Engine vendored copy synced byte-identical (sha256 7e2703f1…). Both pack + schema are now fit and handed to Tim for the outbound crossing. The record below is retained as what was found.

What was asked

Does a stamped v1.0 pack exist on disk, and is it fit to cross? (Both are owed outbound to RTOpacks.)

Pack — FIT

docs-site/docs/strategy/ucca-input-path-contract-pack-v0.1.mdstatus v1.0 FROZEN, freeze-stamp 2026-07-02, stamp record citing QR1A samples (verified 2026-07-01), §6 custody acceptance (RTOPACKS-ACK-CONTRACT-PACK-01), the content-payload review (RTOPACKS-REVIEW), and the engine response (UCCA-RESPONSE, four deltas + Q-B4.1). All ten sections present, no unresolved ⟨TIM⟩/TODO placeholders, every claim traces to a crossing. Fit to cross. - Cosmetic only (not a blocker): the document title + filename say v0.1 while the status is v1.0 FROZEN. Worth reconciling before it crosses, but it changes no substance.

Schema — REVISED and correct in shape, but ONE defect makes it unfit as-is

ucca-content-payload-schema-v1.json (identical bytes in docs-site/…/strategy/ and the engine's reasoner/schemas/). It is the revised intent-typed version: title "UCCA §4.1 Content Payload — v1 (intent-typed, FROZEN 2026-07-02)", block-encoded (modules[].blocks[] = {block_id, content_html}, Q-B4.1 resolved), the ten required top-level fields matching pack §4.1, Draft 2020-12.

The defect (proven, not theoretical):

"$id": "UCCA-CONTRACT-PACK-01#/4.1/content-payload/v1"
This $id carries a non-empty fragment (#/4.1/…), which the JSON Schema metaschema forbids ($id must match ^[^#]*#?$). Consequence: the canonical validation call jsonschema.validate(instance, schema) runs check_schema first and raises SchemaError on the schema itself, before looking at any instance. This is the exact bug that broke the engine's assembler this session — I had to bypass check_schema with a validator instance (validator_for(schema)(schema).validate(payload)) to get the proof job to pass. RTOpacks' conformer would hit the identical error the moment it loads the schema to validate against.

Verdict: NOT fit to cross as-is. A schema a standard validator rejects on load is not shippable as a contract surface.

The fix (small, but not mine to make): set $id to a valid absolute URI with no fragment — e.g. https://ucca.online/ns/ucco/v1/content-payload-schema.json — or drop $id entirely (the schema has no internal $ref, so nothing depends on it). But the schema is FROZEN as part of the v1.0 pack, so changing it is a contract change → relayed through Tim / a fence matter, not an engine edit (respond-never-redline on a frozen contract). Escalated for that ruling.

Recommendation

Before the pair crosses: rule the $id fix (option: minimal — swap to a valid URI, re-freeze as a stamped erratum; the shape and every field are unchanged). Reconcile the pack's v0.1 title to v1.0 in the same pass. Then both are fit.