DR-149: The entity_type vocabulary opens as guided-open, and a type label is added, never re-labelled
DR-149 — The entity_type vocabulary opens as guided-open, and a type label is added, never re-labelled
Section titled “DR-149 — The entity_type vocabulary opens as guided-open, and a type label is added, never re-labelled”Context
Section titled “Context”The S554 entity-architecture review found the closed 12-value entity_type vocabulary
(DB CHECK + extractor Literal + TS union — {449.1} added a fourth point, the producer
lint, and a fifth column with no bound at all, entity_type_override) to be the same
closed-taxonomy shape DR-141 withdrew one level up, and ruled (D11) that the direction is
to open it, gated on the id-449 extraction spike because extraction had not been
reviewed recently.
The spike ran (S555, {449.2}): a real-tier grid — bounded (A) vs open (B) vs guided-open
(C) × 3 repetitions × the nine vendored Platform-corpus documents, scored against an
owner-approved per-document reference — 108 calls, zero parse errors. C tied the bounded
control on every metric (100% required recall, identical false-positive count, identical
type distribution) and minted zero out-of-vocabulary labels; fully-open B minted a
small semantically-reasonable tail (region, programme) but tripled source-label false
positives. Every one of the 24 reference canonical groups received the same majority type
in every lane, including all five contested groups.
Decision
Section titled “Decision”- The emission contract is guided-open (variant C): the twelve values are preferred labels, and the extractor may mint a new short lower-case label only when none fits, using it consistently. Type is validated for shape (short, lower-case, machine-stable), never for membership — DR-141’s rule applied at the entity level.
- The type-stability rule (DR-147’s discipline extended to the type axis): a re-run
may add labels to the corpus but may never re-label an existing entity’s type
—
entity_typeis a component of the surrogate id and the natural key, so a flapping label is whole-corpus row churn through the type axis. A would-be re-label surfaces to the user as a suggestion (owner amendment, S555 board), exactly as DR-147 routes would-be canonical renames to curation; the pipeline never applies it silently. Probe as an AC. entity_type_overrideis bound by the same ruling — it carries no CHECK today and is the column curators write; whatever holds for the base column holds for it.- The DB CHECK is replaced by a shape check, never silently dropped; the extractor
Literal, the TS union and the producer lint move to the same shape contract in the same change (id-453).
Alternatives considered
Section titled “Alternatives considered”- Keep the closed set as a dated deviation. Measured quality cost on this corpus:
zero (C ≈ A). Rejected for DR-141 inconsistency and because the B lane already showed a
real vocabulary gap (
region) that a closed menu silently refuses. - Fully open (variant B). Rejected on measurement: 3× the excluded-term false positives and a minted tail without the anchoring preference — the guided contract gets the openness without the noise.
Consequences
Section titled “Consequences”- id-453 implements: the C prompt contract, the five enforcement-point moves, the
override binding, and the stability probe — sequenced with id-434 (the reshape’s
uuid5(ns, "em:{sd_id}:{resolved}:{type}")identity and per-type resolution partitions are where a new label lands as a new partition). - The S551
standard-vs-certificationdivergence is closed as a mock artefact: the real tier types the ISO/FAS/SSCM familycertificationunanimously ({449.2} F2); id-451’s grain family should treatcertificationas this family’s real-tier label. - Resolution-partition effects of any minted label remain to be measured at the
confirming
/walkpost-id-434 ({449.1} §6.5 metric 4) — owned by id-453. - Honest limits carried from {449.2}: one synthetic nine-document corpus, one model
(
claude-opus-4-6); the stability rule, not the vocabulary bound, is what protects identity if a model change shifts typing behaviour.