Skip to content

Decision Register — settled rulings, read at start

Durable, read-at-start store for settled architectural decisions — the normative rulings a future session must honour without re-deriving or re-litigating them.

This page is an index, not the store. Each decision is its own file under reference/decisions/ (one file per DR, linked from the tables below); the tables below are generated from those files by bun run decisions:index. Read the index to know what was settled and when to go deeper; open the decision file only when you actually need the reasoning.

It is distinct from its neighbours:

StoreHoldsRead at start via
Decision Register (this)normative rulings IN FORCE until supersededstart-session β
retrosobservations / friction / unresolved questions (time-stamped)start-session β retro read-back
MemPalacesemantic recall of prior contextSessionStart recall hook (γ)
ordna (tasks/id-N.md)task / work statestart-session β reconciliation
specs (RESEARCH/PRODUCT/TECH)forward design (plan surface: Intent workspace spec-note, DR-089)per-task

Both tests must pass. An entry that fails either one is a tax on every future session, because this page is loaded at every session start.

  1. Normative and re-litigablewould a future session re-flag, re-implement, or re-litigate this if it weren’t written down?
  2. ADR-shaped — hard to reverse, surprising, and carrying a real trade-off.

What does not belong here, and where it goes instead:

Not a decisionBelongs in
How-to / implementation detaila runbook, a CLAUDE.md, or a code comment
”Landed at commit X”, “shipped in PR #N”the task file or the retro
A rule already enforced by a lint, test or CI gatewherever that gate lives
An observation, finding or friction notethe retro
Substance that already lives in a doc read at startthat doc — cite it, don’t restate it

A retro workflow_improvement is an observation, not a ratified ruling — promote it to a decision only when it is actually adopted as binding.

  • One file per decision, reference/decisions/dr-<nnn>-<slug>.md. The record is the file; this page only points at it.
  • ID = DR-NNN, monotonic, with an optional letter suffix for a decision that splits (DR-086a / DR-086b).
  • One to three sentences for the ruling itself. Link the spec or commit for depth rather than inlining it.
  • New decisions use the full ADR template — Context, Decision, Alternatives Considered, Consequences — per the docs-site documentation-and-adrs skill. Entries migrated from the pre-id-368 register carry their original text.

proposedaccepted → (superseded | retired)

  • accepted — in force. start-session surfaces these.
  • superseded — replaced by a later decision, named in superseded_by. Both sides of the chain are declared and CI checks they agree.
  • retired — no longer in force and not replaced. Requires retired_reason; substance_moved_to names where the content went when it moved rather than died.

A closed decision is a file with a status, never an absence. Deleting entries is what produced the four defects this structure exists to prevent (id-368): citations that resolved to nothing, a number silently re-issued for an unrelated ruling, orphaned suffixes, and a hand-maintained “retired ids” list that was 0-for-6. Keeping the file makes every citation resolve and makes the id un-reusable — a re-issue collides on the filename.

  • bun run decisions:index regenerates the tables below.
  • __tests__/decision-register-integrity.test.ts fails CI when the index is stale, an id is duplicated or unclaimed, a filename disagrees with its frontmatter, a supersession chain is one-sided, or any DR-NNN cited anywhere in this repo resolves to no file.
  • Write routing. Workers return DR-intents, never writing in-branch; the Orchestrator / handoff applies them on main. An out-of-scope finding may be disposed as a decision via the triage-finding skill (the 5th disposition beside subtask / roadmap / backlog / no-action).

DRDecidedStatusDecision
DR-1532026-08-14acceptedThe per-document residual grain retires: a source document with no published knowledge derived from it gets no concept file. DR-141’s coverage guarantee is honoured at the knowledge grain, and corpus gap visibility moves to a platform coverage surface over the provenance register (at most a single gaps index in the bundle)
DR-1522026-08-14acceptedThe ingestion pipeline is rebuilt on upstream cocoindex primitives at the root-level pipeline/ (DR-142’s ratified destination), replacing scripts/cocoindex_pipeline rather than repairing it — ratified contracts port as acceptance tests, the mock-tier apparatus does not port (LiteLLM provider selection replaces it), and the id-464 burn sequence is held and disposed by the rebase
DR-1512026-08-13acceptedThe admitter identity ships as a documented extension key (admitted_by) valued in the spec’s §7 actor convention, not under §5.1 author — a standard slot carries only the fact the spec defines for it, and producer-specific facts enter as documented extension keys in the same actor convention
DR-1502026-08-12acceptedThe effective LLM identity (resolved base URL + model) is a required argument of every memoized extractor so it participates in the memo key — a tier or model switch can never serve another identity’s memoized output; the signature change is the owner-approved one-time whole-corpus re-extraction burn
DR-1492026-08-12acceptedThe closed 12-value entity_type vocabulary opens on the guided-open contract (prefer the twelve, mint only when nothing fits); type labels gain the DR-147 stability discipline — a re-run may add labels but never re-label an existing entity’s type, re-label attempts surface to the user as suggestions; entity_type_override is bound by the same ruling; the DB CHECK becomes a shape check
DR-1482026-08-11acceptedMentions from keep-and-watch and live-connected sources are engine-owned declarative rows; mentions from ingest-once sources cross a promotion boundary so the extracted knowledge outlives the source; external-referenced sources produce no mentions from bytes
DR-1472026-08-11acceptedThe entity_mentions surrogate id keys on the resolved canonical so identity and natural key agree, and the resolved canonical is a function of the accumulated decision record — pair cache, pins and prior canonicals seeded via is_existing_canonical — so re-runs cannot rename existing groups
DR-1462026-08-11acceptedThe producer stops declaring bundle files as cocoindex target states and git_sync writes them instead, because the engine writes after the flow body returns and silently overwrites anything git_sync put on disk; write_bundle becomes pure content computation, and the engine store must be wiped when this lands
DR-1452026-08-10acceptedsource_documents.publication_status is ratified as a document-level REVIEW gate retained for clients who may want one, and admission_status becomes the home for withdrawing a document from retrieval; neither changes DR-025’s two gates, and R2’s queue-over-units-of-knowledge argument is unaffected
DR-1442026-08-10acceptedruamel.yaml becomes a pinned producer dependency in id-428, overturning frontmatter.py’s contemporaneous no-pyyaml choice at the requirement level; PyYAML was never a candidate because safe_dump cannot meet id-440’s byte-faithful round-trip, and the migration must re-prove id-440’s AC-1 and AC-2 rather than assume them
DR-1432026-08-10acceptedThe producer’s two pattern-matched source_documents reads gain a publication_status filter, matching every q_a_pairs read and TECH §2.1’s ratified corpus definition; widening the corpus to admit unpublished rows is rejected because it would oblige the residual grain to draft concepts for records DR-025’s knowledge-admission gate has deliberately withheld
DR-1422026-08-10acceptedcocoindex leaves scripts/ for a singular root-level pipeline/ holding the whole runtime bundle plus its Python tests, package name unchanged; services/ is declined because DR-117’s moves-as-one-unit premise is false at the directory boundary, and deploy/ stays a root sibling
DR-1412026-08-09acceptedConcepts are generated per unit of knowledge with a residual grain guaranteeing coverage, not per key of a closed type vocabulary; the validator-enforced type taxonomy is withdrawn as a superset because it inverts what OKF is for
DR-1402026-08-09acceptedStage-5 resolves before declaring rather than mutating declared rows, relationship endpoints derive from resolved mentions behind an admission gate, and the deterministic naming layer stops being the mechanism that decides two names are one thing
DR-1392026-08-09acceptedDR-123 covered task directives; this extends it to invariants, and adds the converse — pre-launch, the cost of preserving something wrong because it has consumers exceeds the cost of changing it, schema included
DR-1382026-08-09acceptedA Zod enum is added where a value crosses a trust boundary; for a column every call site writes as its own literal, the TypeScript union is the whole guard, and a paired validator is dead code that reads as protection
DR-1372026-08-09acceptedA handler returning NextResponse | NextResponse has an untyped second arm that accepts any body, so the return annotation checks nothing; the success payload must be annotated at its own declaration for the server shape and its client mirror to be held together
DR-1362026-08-09acceptedA knip unused-export finding is resolved by wiring, un-exporting or deleting the symbol; @public asserts deliberate library surface and may only be applied where that assertion is true, which a server-only module can never satisfy
DR-1352026-08-09acceptedAn entity_mentions row whose surface form does not occur in its document’s content_text carries no context_snippet, therefore no evidence the document was read, therefore no citable provenance — so the pipeline refuses the row rather than writing it empty
DR-1342026-08-08acceptedThe RSS feed routes move under the intelligence namespace and gain workspace-scoped feed tokens carried in the URL; session auth would make the feature unusable by its only consumers, and header auth is bypassable because these are the only two API routes emitting a shared-CDN s-maxage directive
DR-1332026-08-08acceptedAn integration fixture staged under a per-test prefix must carry bytes distinct from every walked-baseline document AND from every other per-test fixture (S543 amendment): content-hash-first identity makes a byte-identical re-stage resolve onto the baseline row, and because that resolve rewrites logical_path but never filename, a prefix-keyed poll can then never find it
DR-1322026-08-06acceptedReference items are external references — citable evidence, never authoritative alone. They need no knowledge-admission gate (superseded_by is the whole lifecycle), and they are not a form-matching corpus, which retires id-131 BI-29’s reference_items lane as an unwanted clause
DR-1312026-08-06acceptedExtends DR-096’s local-stack substrate from the E2E lanes to both integration lanes, and adds a suite-boundary interlock refusing any non-loopback host — after an unattended CI job fired the authoritative knowledge-admission gate against shared staging and left 88 mock pairs in 57% of q_a_pairs; whether the promotion RPC should be scoped is left open
DR-1302026-08-05acceptedOwner-ratified target shape: nothing is driven by a platform-global subject vocabulary; the 7×34 domains/subtopics retire as a platform-core concept, taxonomy_snapshot.json retires entirely (superseding DR-121’s move), and any future client subject vocabulary returns as an R6 client-overlay CV
DR-1292026-08-04acceptedPublic-facing ast-dataflow documentation is authored fresh in the tool repo from measured shipped behaviour; docs-site ledger artefacts stay private and never migrate as files. Anything crossing the private→public boundary needs a token scrub plus owner PR review.
DR-1282026-08-04acceptedThe tool lives at ai-solution-hub/ast-dataflow (public); canonical installs it as a bun git dependency pinned to a SHA and registers the MCP server in .mcp.json — executing DR-100’s extraction rider. npm publish is deferred, not rejected. Pin 06b8685 brings in the per-surface path policy (MCP allowlist [repoRoot] default; CLI unconfined).
DR-1272026-08-04accepted/review becomes a single queue faceted publication | governance | freshness, each owner-kind-polymorphic where its axis is, absorbing /api/governance/review and /promotion-gate; the quality score retires and its level-triggered backstop moves to the freshness axis
DR-1262026-08-04acceptedGuides are concept-clusters whose skeleton (sections, names, order, nesting, is_required) is human-authored in the Platform DB and whose membership is producer-derived; guides/guide_sections stay DB tables because the bundle is a product of the curation loop and never an input to it
DR-1252026-08-04acceptedEvery promoted q_a_pair must carry a scope_tag, which makes the (primary_domain, primary_subtopic) topic-concept grain a transitional fallback whose requirement expires at first bundle publication — not a permanent part of the concept model
DR-1242026-08-03acceptedCloses id-364 F1: reference items and source documents are separate first-class entities and the discriminator is lifecycle, not identity — source documents are walked and reference items are not, so a reference item carries no walk cadence and needs no synthetic register row
DR-1232026-08-03acceptedDR-104 covered code and DR-106 covered stale docs; neither covered task files, which is precisely where the premises under investigation get written down — a task’s goal text, ACs, owner-directives and invariants record that someone decided, not that they re-derived, and this applies to pre-130 and post-130 ids alike
DR-1222026-08-03acceptedA room keyword that scores on detect_room’s substring pass is a latent orphan-plus-duplicate under DR-113, so keywords are compounded until they score ~0 at P3 while keeping their P0 reach; and the projection that proves it must import the real detect_room rather than re-implement it
DR-1202026-08-03acceptedThe cocoindex nightly becomes the source of truth for the stage → walk → Vitest sequence and the on-prem live-verify.sh operator hook is DELETED, not reconciled — it had been unrunnable for months, so there was no working second copy to extract shared steps into
DR-1192026-08-02acceptedThe cocoindex image moves to a checked-in Dockerfile with a CI-generated linux-x86_64 lock installed —no-deps; the nightly stops building its own image and pulls the published one — retiring a Cloud-Run-era builder for a workload with no Google Cloud
DR-1182026-08-02acceptedThe cross-tree fixture register settles at docs/reference/testing/corpus-manifest.json — DR-117 files fixture TREES by owning domain, but a register spanning every tree has no owning domain, so it files as what it is: a testing standard
DR-1172026-08-01acceptedThe form-extraction templates settle at scripts/cocoindex_pipeline/fixtures/form-templates/, a sibling of platform-corpus/ — fixture trees are filed by the domain that owns them, never by the kind of artefact they are
DR-1162026-08-01acceptedRoom keys must be directory names matched at any depth, never path positions, so a room survives the in-flight domain migration; and a room projection must re-implement detect_room from source rather than model it
DR-1152026-08-01acceptedThe docs-site *.html mine exclusion carves out authored decision boards; rehoming a gitignored working artefact must be followed by a re-mine before its old drawers are pruned
DR-1142026-08-01acceptedRooms may be declared priority with path carve-outs; that makes DR-112’s T3 stale-family tier expressible, so DR-113’s withdrawal is amended and Q4’s file move is withdrawn
DR-1132026-08-01acceptedDR-112’s T3 tier cannot be expressed as path-keyword room routing; the DR-106 stale families are discriminated at recall time from source_file, and a file’s room can only be changed by delete-then-re-mine
DR-1122026-07-31acceptedFour tiers drive mine/don’t-mine, room routing and cadence; 839 paths are deleted before re-mining; the knowledge-graph verdict is deferred to a post-prune re-census rather than ruled now
DR-1112026-07-31acceptedOwn SessionEnd hook replaces the plugin’s per-turn whole-slug mine; parent transcripts get exchange AND general, subagents exchange only; auto_save off takes the CHECKPOINT diary writes with it
DR-1102026-07-31acceptedhnsw:sync_threshold is pinned to 1000 (tolerance 2000) in collection_metadata; repair —mode from-sqlite resets it to 2 (tolerance 4) and silently re-arms the vector-search outage
DR-1092026-07-31acceptedpipeline_runs counter columns are not decided in isolation; the deferred ledger-api spec is revived as v1.1 and settles the rollup shape with the per-stage detail surface
DR-1082026-07-31acceptedRe-ingest history lives on a separate append-only register-history table, generalising the DR-076 verification_history shape; source_documents.parent_id chaining is not adopted
DR-1072026-07-31acceptedAn unauthenticated endpoint that returns an exception message substitutes the live values of known-sensitive env vars; pattern-matching credential shapes is a backstop, never the control
DR-1062026-07-31acceptedDR-104 says ratified docs outrank code; this names the doc families that are NOT ratified authority, and the two citation failures that follow from assuming they are
DR-1052026-07-30acceptedThe admin-merge pin is one jsonb marker on entity_mentions, matched on effective entity type, honoured by every walk-side consumer
DR-1042026-07-30acceptedIn rebase-class work, the ratified reference set is the authority; existing code is evidence of what exists, never of what is correct
DR-1032026-07-30acceptedAny script that deletes or rewrites database rows refuses to run unless its target is positively confirmed against an explicitly-supplied expected identifier; absence of a guard input is a refusal, never a pass, and denylist-only guards (refuse prod) are insufficient on their own
DR-1022026-07-29acceptedCross-surface wiring verdicts join through a versioned evidence-sidecar contract (v1) rather than in-process integration, and declared-as-data schema declarations (TableSchema et al.) can only ever be indirect evidence — declared-but-never-written columns verdict undecidable, never wired
DR-1012026-07-27acceptedledgers/initiatives/.md numbered records are THE initiative record and the only home of task placement; initiatives// docs are published theme documentation carrying no task links and needing no substrate_doc pointer to be correctly filed
DR-1002026-07-27acceptedast-dataflow’s warm path is a long-lived MCP server process holding the ts-morph Project; the LMDB facts-cache design is rejected by measurement, and .mcp.json registration waits for the extraction phase
DR-0992026-07-27acceptedEvery processing_queue consumer passes an explicit type scope to claim_next_job (include list for special-purpose workers, exclude list for the general cron consumer); an unscoped global claim is a defect, not a default
DR-0982026-07-27acceptedMemPalace auto-mine daemon runs supervised (launchd KeepAlive + hooks.daemon:true); the chromadb 1.5.9 corrupt-HNSW-segment risk is accepted as a full-stack reader outage, mitigated by from-sqlite rebuild (archives secondary)
DR-0962026-07-26acceptedThe E2E substrate is the vendor-standard local stack (supabase start + db reset) on the CI runner; hosted branches are preview/staging surfaces, not test substrates
DR-0952026-07-26acceptedLong-lived Supabase project config is declared in [remotes.<env>] blocks that mirror live values; config push only at refs with a matching block
DR-0932026-07-26acceptedPre-launch data posture: remediation ships correct structure and deletes bad rows; it does not backfill
DR-0912026-07-26acceptedAnon table grants are retracted on public + api, and every SELECT policy must name its roles explicitly — unlike DR-035’s functions, nothing enforces it
DR-0892026-07-22acceptedUnder Intent, the plan/decomposition surface is the workspace spec-note; the {N.4} PLAN.md artefact is retired
DR-0872026-07-17acceptedThe private docs-site IS citable for authorised consumers; provenance is admitted via an additive docs-site anchor scheme (amends DR-086b)
DR-086b2026-07-18acceptedRepo-visibility + citation-base ruling: canonical is PUBLIC and is the citation base; all bundle repos and the docs-site are PRIVATE
DR-0852026-07-17acceptedSupabase branches never inherit parent API config; every branch-provisioning path mirrors it explicitly
DR-0822026-07-17acceptedOKF ontology IRI namespace authority is https://w3id.org/canonical/ontology
DR-0792026-07-16acceptedOKF bundle doctrine: four bundle classes, two production paths, per-class gates
DR-0782026-07-16acceptedsubstrate_doc is kept, optional, and must resolve from the docs-site root
DR-0762026-07-16acceptedq_a_pair verify audit rides a generalised polymorphic verification_history
DR-0712026-07-15acceptedMemtrace complements the stack; GitNexus remains the impact/rename authority
DR-0632026-07-13acceptedExtend UI adoption posture: broad component adoption, but our shadcn/lucide primitives stay the app default; ID-147 owns the first registry install
DR-0622026-07-12acceptedCompose-existing-backend-only is not binding; a Checker must not FAIL a subtask solely for adding backend the behaviour requires
DR-0612026-07-12acceptedProcurement databases are per-client single-tenant; there is no cross-tenant scope
DR-0602026-07-12acceptedProducer memo delta-determinism contract (enrich_concept); config re-draft is a manual, logged operator act, not automatic
DR-0562026-07-12acceptedProcurement form-first reconciles with the id-71 application-umbrella ontology
DR-0542026-07-11acceptedClient-CV-overlay contract: reserved additive JSON, fail-loud composition
DR-0522026-07-10acceptedhybrid_search’s positional-param set is capped at the Task-144 shape (12 args)
DR-0502026-07-10acceptedowner_kind is the grain discriminator; content_type is never overloaded as a grain key
DR-0472026-07-10acceptedPipeline memo deserialization failures degrade to re-extraction, never item failure
DR-0462026-07-09acceptedPipeline private ingress: Cloudflare Tunnel default; ingress is control-plane only
DR-0442026-07-09acceptedAI-tooling posture is a per-client choice behind a thin swappable interface
DR-0432026-07-09accepted”Zero-egress” means no client data at rest in shared infra + no non-essential egress
DR-0412026-07-09acceptedPlatform navigation is the three-zone IA: Applications | Knowledge | Governance
DR-0382026-07-08acceptedActivity-carried ids, not per-app-type workspaces, for application-type build-out
DR-0362026-07-05acceptedrecord_embeddings is the single embeddings home; no permanent inline-vector exceptions
DR-0352026-07-05acceptedZero-anon-EXECUTE holds for BOTH schemas, enforced by a born-locked ddl_command_end event trigger
DR-0342026-07-05acceptedThe content_items-era coverage feature is RETIRED, not re-pointed
DR-0322026-07-04acceptedEvery api-surface change ships its companion exposure migration in the SAME batch
DR-0272026-07-03acceptedOntology CV medium: effective ontology ships in the bundle; base source-of-truth in the platform repo
DR-0262026-07-03acceptedThe promotion boundary replaces the record-curation RETAIN store
DR-0252026-07-03acceptedThe corpus reframe: sources are evidence; authority is earned at promotion
DR-0232026-07-03acceptedCorpus durable home: the source-binding model
DR-0192026-07-02acceptedOKF conformance posture: documented deliberate superset of upstream OKF — v0.2 target since the S545 amendment; supersets largely dissolved by the S546 wave
DR-0182026-07-02acceptedOKF producer trigger: chained off a successful walk, not scheduled, not operator-only
DR-0162026-07-02acceptedOKF bundle medium: client-owned git repo stands; human edits are producer overrides
DR-0142026-07-01acceptedForms are manual-upload; the corpus forms-route is retired (okf-v3 §8.2)
DR-0102026-06-30acceptedMemPalace is a recall feed, not the decision register
DR-0092026-06-30acceptedMemPalace is single-writer; recall is read-only

Kept as files, never deleted: a citation to a closed decision must still resolve to something true, and the file’s existence is what stops the number being re-issued.

DRDecidedStatusDecisionReplaced by
DR-1212026-08-03supersededtaxonomy_snapshot.json moves to scripts/cocoindex_pipeline/data/ before id-416 narrows the build context — a file production reads at import time is not a test fixture, and the Dockerfile move would otherwise ship an image whose pipeline cannot startDR-130
DR-0972026-07-17supersededNative Supabase branch replay was rejected on evidence; the custom psql replay stands (originally issued as DR-087, whose number was re-used)DR-096
DR-0942026-07-26retiredRetired — Proving a data-shape invariant requires rows written under the new code
DR-0922026-07-26retiredRetired — extracted_from_corpus provenance reads the extraction, not a derived path
DR-0902026-07-22retiredRetired DR-090 — Generic code-review-and-quality and code-simplification skills are retired.
DR-0882026-07-22retiredRetired DR-088 — Test standards live in-repo at docs/reference/testing/ — the sole home.
DR-086a2026-07-18retiredThe cocoindex qa_sidecar route is fully retired (walk-side AND app-side write half)
DR-0862026-07-17retiredRetired DR-086 — Collision pointer — two decisions shared this number. Resolve to DR-086a or DR-086b.
DR-0842026-07-17retiredKnip baseline file is counts-only; per-raise attribution lives in the raising commit’s message
DR-0832026-07-17retiredRetired DR-083 — DR-040 scope clarification: vanilla-TS MCP apps ratify marked+DOMPurify.
DR-081b2026-07-17retiredRetired DR-081b — Migration-stamp discipline on the shared staging DB: allocate against the REMOTE applied set, verify by object existence, non-round stamps.
DR-081a2026-07-17retiredRetired — A19 confidence reserved-value policy: producer emits strong|partial only (DR-079 addendum)
DR-0812026-07-17retiredRetired DR-081 — Collision pointer — two decisions shared this number. Resolve to DR-081a or DR-081b.
DR-0802026-07-16retiredRetired DR-080 — Staging gate-runs may deploy from a feature-track ref; never merge a track into staging ahead of main.
DR-0772026-07-16retiredRetired DR-077 — create-initiative is minimal CLI + server, no UI create surface.
DR-0752026-07-15retiredRetired — Procurement procurement/[id]/* re-keys to form-first; templates list/create retire; detail + field CRUD re-path to [id]/fields/*
DR-0742026-07-15retiredProjects are multi-task containers; the 1:1 S472 project→task records collapse
DR-0732026-07-15retiredRetired DR-073 — Initiatives ledger writes are server-side; repurpose the roadmap arm.
DR-0722026-07-15retiredRetired DR-072 — claude-reflect is NOT integrated into the dev-workflow.
DR-0702026-07-15retiredClosed-task guard: every cited id is status-checked; reopens are explicit
DR-0692026-07-15retiredRetired DR-069 — Sandbox friction: durable fixes in settings.json; prompt carryover retired.
DR-0682026-07-13retiredRetired DR-068 — Multi-document Procurement item page: custom domain frame + Extend viewer shells.
DR-0672026-07-13retiredRetired DR-067 — Procurement workflow-state stepper (BI-13) is a custom Warm Meridian component.
DR-0662026-07-13retiredRetired DR-066 — Extend DOCX/Excel Editor + E-Signature are Procurement v1; E-Signature must be forked.
DR-0652026-07-13retiredRetired DR-065 — Extend Schema Builder doesn’t fit the requirement catalogue → custom editor.
DR-0642026-07-13retiredRetired DR-064 — Bounding-box geometry UNBLOCKED: fill-slots persist commonforms coords (v1).
DR-0592026-07-12retiredLegacy .doc/.xls form ingest: convert-on-upload
DR-0582026-07-12retiredOOXML form-field extraction: recover-and-generalise the id-52 deterministic readers; no ML detector
DR-0572026-07-12retiredPDF form-field detection adopts commonforms directly (licence ratified Apache-2.0)
DR-0552026-07-12retiredRetired — Deployed-producer bundle hosting: persistent-volume clone + repo-scoped deploy key, push as a separate lane
DR-0532026-07-11retiredRetired DR-053 — pyright stays a manual, local-only diagnostic for the Python pipeline.
DR-0512026-07-10retiredRetired — Per-grain “content date” anchors for corpus search date filtering
DR-0492026-07-10retiredEvery staging DB refresh / branch-recreate re-runs the DR-035 ACL sweep as a mandatory step
DR-0482026-07-10supersededRetired DR-048 — MemPalace auto-mine daemon stays disabled until the chromadb HNSW segfault is fixed.DR-098
DR-0452026-07-09supersededAgent topology: data-plane per-client, control-plane central telemetry-onlyDR-043
DR-0422026-07-09supersededCompute posture: pipeline on-prem, app on Vercel; on-prem = residence + processingDR-043
DR-0402026-07-08retiredRetired — Markdown rendering pivots to Streamdown; new surfaces first
DR-0392026-07-08retiredRetired DR-039 — No git stash inside the shared multi-worktree dispatch topology.
DR-0372026-07-07retiredRetired DR-037 — okf-record-model-v3.md citations are pre-ratification provenance pointers, not recoverable artefacts.
DR-0332026-07-04retiredRetired DR-033 — Non-dry-run gitnexus mutations are banned from agent worktrees.
DR-0312026-07-04retiredRetired DR-031 — Parallel worktree isolation needs a TOP-LEVEL sibling worktree, not a nested one.
DR-0302026-07-04supersededapi.* views MUST be regenerated on any base-column renameDR-032
DR-0292026-07-04retiredRetired DR-029 — Won-bid KB integration: HYBRID RETIRE; re-entry is concept-shaped.
DR-0282026-07-03retiredRetired DR-028 — Doc-sync cadence runs on GLM-5.2 via OpenRouter.
DR-0242026-07-03supersededRetired DR-024 — Record identity + curation durability gate first bundle publication.DR-026
DR-0222026-07-02retiredRetired — Generated-file guard is two-sided: Read-tool deny + sandbox allowRead
DR-0212026-07-02retiredRetired — Finding disposition: an active ID-N owns its in-scope findings
DR-0202026-07-02retiredRetired DR-020 — Corpus admission: privileged upload through a two-tier gate (Option 2).
DR-0172026-07-02retiredgoose client topology: per-client container on the client’s own VPS at rollout
DR-0152026-07-02retiredRetired DR-015 — Pipeline ingress: public + bearer is interim; private ingress gates multi-client GA.
DR-0132026-07-01retiredRetired DR-013 — id-135 surfaces are net-new-by-design, not id-111/id-117 component reuse (closes DR-004).
DR-0122026-07-01retiredRetired DR-012 — id-135’s source-document route re-point belongs to id-131 (BND-1 Path β).
DR-0112026-07-01retiredRetired DR-011 — MemPalace lock-free reads use mode=ro&immutable=1, not plain mode=ro.
DR-0082026-06-30retiredRetired DR-008 — Skills triage from the Pocock backport.
DR-0072026-06-30retiredRetired DR-007 — Retire the static gitnexus wiki gist; the cocoindex wiki is an optional aid only.
DR-0062026-06-30retiredRetired DR-006 — state-of-the-product.md is not wired load-side.
DR-0052026-06-30retiredRetired DR-005 — The friction-register does not duplicate the retro read-back.
DR-0042026-06-30retiredRetired DR-004 — Reuse-framing (Area F): no skill or agent edits.
DR-0032026-06-30supersededRetired DR-003 — MemPalace recall uses lock-free read-only WAL sqlite, not a live MCP query.DR-009
DR-0022026-06-30retiredReconciliation treats done-status as a don’t-re-flag signal only
DR-0012026-06-30retiredRetired DR-001 — Adopt a decision register.