Dictionary Architecture

The comprehension layer: customer phrasings converted into the engine’s declared vocabulary, as data. Engineering reference, 2026-08-12; sources: the dictionary v0.1 design record, systematic file-and-line verification, internal approvals from Aug 12; build complete and live internally as of Aug 12.

tiers G/V landed on trunk rewriter root fixes merged, switch OFF tier E write path ratification queue only surface hidden pending legibility work (2026-08-20) build complete, closing run 18/19 correct, 0 wrong

Used by · consumed by · outcome

used bythe engine’s parser at every ask (combines the three tiers before parsing); the rewrite hook on a first-pass miss, off until armed; the approval queues where entries enter
consumed bythe DCL engine (composed vocabulary), the trial Dictionary tab (shared-tier queue), the Ontology tab (customer entries)
outcomequestions understood without engine changes, measured per cycle by one fresh graded run; the build’s closing run: 19/19 answered, 18 correct, 1 correct decline, 0 wrong. Long aim, pending approval: opening free-form Ask to the partner

1What it is

One dictionary, three tiers, composed at ask time. The engine parses a question against the composed vocabulary; every entry is data with provenance, and the customer’s own tier always wins. The dictionary changes which questions are understood; answers compute exactly as before.

TIER G, global phrasing sentence forms, zero customer terms TIER V, vertical: consulting shared, census-guarded TIER E, customer estate ratified meanings, their store COMPOSED DICTIONARY at ask time · estate wins per key PARSER deterministic grammar ANSWER engine combines CANONICALIZER OFF by default miss-path only · restates own words · one re-entry first-pass miss accepted rewrite re-enters once, disclosed
Composition is data-in, data-out: changing tier composition can never change an already-parsed answer (a parse-identity fence enforces byte-identical answers under composition change). The dashed canonicalizer is the only inference on the ask path and it is armed only on internal approval.

2The entry: anatomy of one dictionary row

fieldcontentrule
variant listmany spoken forms → one stored value (“B2” / “upper intermediate” / the verbatim label are one entry)the variant list is the unit, measured
provenancemined-from source, self-probe result, ratifierone shape for every entry, human edits included
shareabilityG / V / E class stamped at write timecensus guard mechanically blocks customer terms from shared tiers
self-probefired-or-declined + value, probed against the storethe uniform admission price for the queue

3The four feeders: how entries are produced

feedermechanismceiling / killstate
importslibrary batches through an adapter (country & language variants first); wholesale adoption bannedbatch size per cycleplanned
failure miningoffline: clusters missed phrasings from graded records → drafted proposalsnightly, cents; token kill wiredbuilt (binary-preflight fixed)
canonicalizationask-time, miss-path only: cheap rewrite to a canonical form the grammar advertises; echo and content-gap checks run before any spendfires on first-pass miss only; confidence floor; restates the question’s own words onlymerged, OFF
exemplarsratified vocabulary + adjudicated-correct questions as a retrieval index; zero tokens at ask timeindex-only, no inferenceplanned

The canonicalizer’s three historic defects (echo accepted as success, grammar-blind prompt, no form-vs-content gate) are fixed and merged with the incident report cited in the code; re-measure on the recorded 50 misses: 41 refused as content gaps at zero spend, 7 echoes caught, 1 genuine conversion. Arming the switch changes live answer behavior and requires internal approval alone.

4Write paths: one queue, one provenance shape

imports (batch) failure mining canonicalization exemplar drafts SELF-PROBE GATE probe result or no queue PROPOSAL QUEUE one write path, one shape G / V approvals internal review, once per cycle TIER E, ratification binds on arrival · refusal seat collision rows: forced precedence pick shared tiers customer tier
The queue is the architecture: every entry type flows through the same proposal→ratification lifecycle. Two legacy endpoints that bypass the queue exist elsewhere in the codebase and are tracked for closure; dictionary writes use the queue alone. Ratification is a refusal seat: entries take effect on arrival, a person can refuse them, and material rows flag to the top.

5Surface: one mirrored page in the trial

Design decision (Aug 12): the dictionary surface lives in the trial, one page for operators and developers to monitor and manage. The role in the token decides what mounts and where writes land, never a second version of the page.

roleseesmay do
internalG/V approval rows + tier-E queue + progress stripapprove shared-tier batches; precedence picks
cio (customer)tier-E rows on the existing Ontology queueratify / refuse; precedence picks on their collisions
playgroundsame page, session overlayread-only; every store verb refuses

6Topology: where the halves live and deploy

ENGINE SERVICE tier_g / tier_v yaml · parser + grammar proposal store (tier-E type) · resolver census guard · parse-identity fence frozen platform line receives none of this ASK SERVICE FastAPI on Render · rewrite hook lives here reads engine over HTTP, dictionary never baked STATIC SITE publish allowlist: index.html + pull.html only CUSTOMER LINK role-gated tokens INTERNAL REVIEW same artifact, mirror serves composed dictionary (network) answers page Dictionary tab (additive mount)
The engine lands on the main service; surface half is an additive tab in the trial page plus role gating in the ask service. The two services deploy independently. The deployed platform stack (frozen line) is untouched by design.

7Measurement, and where the dictionary stops

Between cycles: offline iteration re-grades steer this work and stay inside it (one-way glass).

The boundary: the dictionary converts word and form misses. The residue is engine territory riding its own lanes: cross-record joins, ratio scopes and filtered grouped-max, date windows, roster-zero symmetry. Named here as scoping.

8The canon-test gap, stated

Canon-clean: all entry data, shared tier files, ratified customer rows, is DCL declarations + transport records, rendered by the existing renderer.

The gap: the ask-time rewriter (a model call), the miner’s drafting step, the form-vs-content classifier, and the exemplar index are machinery upstream of the declaration layer; they produce candidate declarations upstream of the declaration layer. All of it is OFF by default; an accepted rewrite is disclosed on the answer face when it fires. This gap is reported and tracked at project-planning time; it is not resolved by this build.

9State: built, and what the build added

built, live todayplanned next
shared tiers G + V as versioned data · census guard · parse-identity fence · echo guard + grammar-fed rewrite + content-gap gate (merged, switch OFF) · miner with binary preflight · ratification queue + Ontology tab · graded 140-question record + replay rigs tier-E entry proposal type (on the resources-rollout precedent) · the trial Dictionary surface (mock → approval → build) · first import batch through the adapter · exemplar index · collision-precedence UI · arming the canonicalizer, internal approval alone

Sequencing pins: dictionary lands its proposal type after the resources work merges (same-file seam), or under a compose audit; migration number assigned at planning time; the new page passes the strict publish gates.