Skip to content

DR-126: A guide is a human-authored skeleton with producer-derived membership

DR-126 — A guide is a human-authored skeleton with producer-derived membership, and it stays a Platform DB table

Section titled “DR-126 — A guide is a human-authored skeleton with producer-derived membership, and it stays a Platform DB table”

corpus-reframe-review.html states “Guides are concepts. Product/service guides are curated concept-clusters.” The client gap-analysis tracker’s items B.1 and B.2 specify guides at the column level and carry recorded owner decisions. The two appeared to conflict, and guides were the S528 census’s last surviving requirement-backed consumer of primary_domain / primary_subtopic.

S529’s lane A2 found they do not conflict at the requirement level. B.1 is a presentation requirement (audience-appropriate depth co-present and ordered) and is explicitly anti-filter — its own words are that “currently layers are metadata tags used for filtering, not for UI hierarchy”, which is the complaint, not the spec. B.2 is a vocabulary and completeness requirement. The classification columns appear only in B.2’s design section, never in its recorded decision: the census read the design as the requirement.

The genuine collision was narrower and structural: who authors a cluster’s structure? B.2’s decision is “align naming to mind map for ALL sections + add ALL missing sections” — a human curating a structure the corpus does not yet contain, including deliberately-empty sections. But bundle-doctrine.md’s Path 1 derives client-business concepts from promoted L-records. The reframe’s own phrase, curated concept-clusters”, names the tension without resolving it.

Measured alongside: no concepts table exists — concepts are typed markdown in the client-owned bundle repo (DR-016) — while guide types already overlap the closed concept-type set outright ({product, company} match; sectortopic).

A guide is a hybrid, and the seam has three layers:

LayerOwnerArtefact
Cluster skeleton — which sections exist, names, order, nesting, is_requiredHuman, in the UIguides + guide_sections (Platform DB)
Cluster membership — which promoted L-records populate each sectionProducer, derivedresolved at produce time
Published projectionProducer outputbundle repo, never edited in place (DR-060)

guides / guide_sections remain Platform DB tables.

  • Fully producer-derived, guides as a bundle projection only. Rejected on a structural ground: the reframe states the bundle “is a product of the second loop — it is never fed back in as pipeline input.” If guides lived only as bundle files, editing one in the UI would write to the bundle and reverse the loop. Guides must have DB tables to be editable.
  • Fully human-curated, including membership. Rejected: it discards the derivation Path 1 exists to provide and makes gap-surfacing manual.
  • Declare a winner between “guides are concepts” and B.1/B.2. Rejected: forcing one discards a live requirement in either direction. Both hold at different layers.
  • Gap-surfacing falls out for free. A required section with zero derived members is the gap. This unifies B.2’s is_required semantics with R8’s “strongest week-1 deliverable” — they stop being two features.
  • Guides need a membership predicate, but nothing requires it to be primary_domain/primary_subtopic specifically. The census’s last anchor does not hold in the form the census stated it, though the requirement underneath it is live.
  • lib/guide-section-mapping.ts is the only implementation of that predicate today — and of client feedback Item 2’s secondary-tag reach. It has zero production callers and 74 green tests, which makes it look exactly like a safe delete. It is not, and it was held back in S529 for that reason.
  • B.1’s nesting requirement currently has no substrate on the document or answer grain: layer survives only on reference_items. Whether to re-point it there was flagged in the S451 migration header and remains unevaluated.