Skip to content

DR-027 — Ontology CV medium: effective ontology ships in the bundle; base source-of-truth in the platform repo

Base system CVs — scope: the OKF concept/entity/relationship vocabulary — move out of the docs-site into the canonical repo (they version with the linter that enforces them — platform functionality must not couple to the docs-site); client overlay CVs are client-owned. The 37-CV Layer-1 markdown register in the docs-site is a human-contract mirror, out of this ruling’s scope (clarified S499). Every bundle repo carries the materialised effective ontology (pinned base snapshot + client overlay) so a bundle is self-describing and portable (vault-ld precedent: ontology/vocab/instances co-located under one composed context — which also makes later RDF/JSON-LD export mechanical). Evidence: S441 ratification board R6 + https://github.com/The-Knowledge-Graph-Guys/vault-ld.

Amendment (owner, S546) — the bundle-shipped base snapshot retires; the overlay carrier stays

Section titled “Amendment (owner, S546) — the bundle-shipped base snapshot retires; the overlay carrier stays”

F6 ruling (id-430), determined against the owner’s two planes — a zero-data-strategy client’s scaffolding, and organic growth valuable to humans and agents — and confirmed by the owner: ontology.json reduces to the client-overlay carrier (DR-054’s slot, corpus-reframe R6’s requirement). The base half — the pinned bundle-shipped snapshot of the platform vocabulary — retires from the bundle: measured S546, nothing consumes it (zero repo readers of base; the shipped artefact had already drifted stale against the writer, 2 dimensions on disk vs 3 emitted), and under DR-141’s open concept vocabulary a closed declaration would assert something false. The bundle self-describes the OKF-native way — through its concepts and the id-429 per-directory indexes — rather than by shipping a schema registry alongside them (“there is no schema registry, no central authority, and no required tooling”, OKF §1). The platform-repo half of this ruling is UNCHANGED: base CVs still live in the canonical repo and version with the linter that enforces them; they are simply no longer asserted to bundle consumers. Implementation rides id-427’s wave (write_ontology_artefact, _base_ontology_snapshot, the iri_projection/ context.jsonld interplay). Executed by: id-430 (ruling), id-427 (code).

Extended (S546, owner-delegated ruling TQ-1): context.jsonld’s base-only projection retires on the same ground — overlay-driven emission only; the entity/relationship vocabulary is no longer asserted to bundle consumers through either artefact.

Amendment (S548) — TQ-1’s stated ground was measured false; the ruling stands on the other one

Section titled “Amendment (S548) — TQ-1’s stated ground was measured false; the ruling stands on the other one”

The S546 TQ-1 extension above retires context.jsonld’s base-only projection on the stated ground that “a consumer-asserted vocabulary artefact with no consumer and no requirement source is not emitted.” That premise is false, and was measured false at S548 before any code executed it.

context.jsonld has a consumer, and a rendered one: lib/okf/bundle-graph.ts reads its @context to derive each node’s iriScope, lib/okf/concept-type-tokens.ts (resolveIriScopeBorderColor) maps that to a colour, and components/okf/concept-graph.tsx applies it as the node border colour — one of the four documented {132.49} visual channels (shape = bundleClass, border = iriScope, opacity = confidence, edge colour = relationship).

The retirement stands, on this decision’s other and stronger ground: the base CV should not be asserted to bundle consumers at all. But it must not be re-derived from the “no consumer” claim later, which is why this amendment exists.

Two further facts measured at S548, both of which change the cost calculus rather than the ruling:

  • The channel has been broken since {427.5}, silently. context.jsonld mints 22 terms across entity_types + relationship_types only — {427.5} correctly dropped the concept_types row, since an open label (DR-141) has no base register to classify against. But bundle-graph.ts still resolves a concept type against that map. Of the 13 concept types the producer emits, exactly 2 resolvecertification and product — and only by accidental term collision with the ENTITY vocabulary. Today’s border colour is a coincidence, not a signal. Executing TQ-1 therefore costs nothing real: an accidental 2/13 becomes a clean 0/13.
  • The vendored OKF SPEC contains zero occurrences of context.jsonld. The artefact is our own bl-457/DR-082 extension, not a format requirement.

Owner ruling (S548): retire the vocabulary, keep the channel. The base projection retires as this decision says, and the iriScope channel is re-sourced rather than left vestigial — a rendered channel that means nothing is the defect, not the fix. Executed by tasks/id-427.md {427.14}, which also resolves TQ-1a (which of the two emission readings is meant) in the doing rather than in the abstract, and carries the candidate re-source: ontology.json’s surviving overlay key, which changes what the channel MEANS (client-declared vs not, rather than base vs client) and is therefore a product call to surface, not to ship silently.

Execution record (S550) — {427.14} landed; TQ-1a did NOT resolve

Section titled “Execution record (S550) — {427.14} landed; TQ-1a did NOT resolve”

The base projection is retired: iri_projection.project_context mints client-overlay terms only, the base namespace-prefix key is gone, and a bundle composing no overlay emits {"@context": {}}. The iriScope channel was re-sourced onto ontology.json’s overlay.concept_types echo (now typeDeclaration: 'client-declared' | 'undeclared'), its two retired border tokens replaced by one, and the {132.49} legend collapsed to a single entry — so nothing vestigial renders. Two corrections to this decision’s own S548 amendment, both measured: the producer emits 10 distinct concept-type labels, not 13 (the 2/13 figure above should read 2/10); and the overlay’s concept_types never reaches context.jsonld at all, because EffectiveOntology.compose ignores that key — the structural reason the channel had to move to ontology.json.

TQ-1a remains OPEN. {427.14} could not name a requirement whose current source discriminates the two emission readings: both satisfy “declare the client’s overlay vocabulary” vacuously on a no-overlay run, and the only discriminator is whether a consumer can observe the difference — which is the consumer-counting ground this amendment exists to stop being re-derived. OV-10 does not settle it by analogy: measured, ontology.json’s present-and-null overlay IS observably different from an absent file to its consumer, while an empty @context and a missing context.jsonld are not distinguishable to any reader. Reading (b) — always written — shipped as the reversible default, not as a ruling.

Open product call for the owner. The re-sourced channel answers a different question, so a platform-baseline bundle’s nodes now render the NEUTRAL border rather than a positive one, and the channel is partly collinear with bundleClass (already the node shape) since only a client bundle can declare anything. If that collinearity is judged fatal the honest outcome is retiring the channel outright; its token and legend entry are each a single site now.