§2 The 1.0.1 schema deltas (3)
Exactly three constraint changes, plus metadata ($id, title, description). ver_version remains const: "1.0".
| # | Location | Change | Class | Q1 — 1.0.0-valid record invalidated? | Q2 — 1.0.1-valid record fails 1.0.0? |
|---|---|---|---|---|---|
| S1 | /properties/identity/properties/perceptual/items | pdq/1.0 ⇒ ^[a-f0-9]{64}$, phash-dct/64 ⇒ ^[a-f0-9]{16}$, as two if/then subschemas; the alg enum is unchanged | patch-compatible correction | Yes, narrowly — a Record whose pdq/1.0 digest is not exactly 64 hex now fails. Such a Record already violated §5's "256-bit"; the schema simply never checked. The frozen 1.0.0 example is one of them (D1, EX-01) | No — a 64-hex pdq/1.0 value was always accepted by 1.0.0 |
| S2 | /properties/identity/properties/pixel_hash | "additionalProperties": false added | patch-compatible correction | Yes, narrowly — a Record carrying an undeclared member inside pixel_hash now fails. The subschema's inert "alg": true, "value": true entries prove closure was intended and forgotten (SCH-03) | No |
| S3 | /properties/identity/properties/content_hash | {"$ref": …} becomes {"allOf": [{"$ref": …}], "unevaluatedProperties": false} | patch-compatible correction | Yes, narrowly — same as S2, for content_hash (SCH-03, SCH-04) | No |
| S4 | $id, title, description | New $id …/ver-record-1.0.1.json; title names the artifact release; description points at the annex | editorial | No | No |
Both the annex's §2.1 table and `docs/standards/VER-1.0-errata.md` §7.2 index rows S2 and S3 to findings SCH-03 and SCH-04.
Deliberately not changed. $defs/sha256Hash stays open — closing it breaks the pixel_hash allOf branch, so closure is applied at each use site instead.
The seven accidentally-open objects, classified once. spaceDescriptor.model, .reference, .provenance, metadata.trust[], conflicts[].values[], embedding.recipe and sha256Hash were left open by oversight rather than by design (SCH-04). One classification governs all seven, everywhere on this branch:
Closing them is patch-eligible — no conformant Record relies on an undeclared member of an object whose members the prose enumerates — but closure was deferred from 1.0.1 to keep the corrective delta surgical (ADR-0002). The 1.1 draft closes all seven (draft §15.2), under the `VERSIONING.md` §2.3 carve-out for narrowings no conformant producer relies on, carried as row 6 of the 1.1 ratification checklist (
standards/ver/1.1-draft/RELEASE.md) where the vote is taken. An earlier revision of the 1.1 draft left them open to preserve a schema-superset property; that property is withdrawn (§6).
sha256Hashneeded a structural change to be closable at all: 1.0.x composes it intoidentity.pixel_hashthroughallOf, so closing the shared definition would rejectwidthandheight. The 1.1 schema givespixel_hashits own definition ($defs/pixelHash), after which both close independently. No record shape changes — the same four members, the same requirements.
§6 does not restate this; it points here.
