KB-6663

10 — UI Projection Model: tree / graph / topic / reconstruction reader (views-only, no UI impl, design-only, 2026-06-02)

5 min read Revision 1
one-roof-governanceui-projectiontreeviewgraph-browsertopic-detailreconstruction-readercandidate-visibilityv_uipg-directus-nuxtdesign-only2026-06-01

10 — UI Projection Model (Branch J)

Branch J. The human-facing read model. No UI implementation — this designs the projections (views) the UI reads. UI reads projections/views only; it is never the source of truth (PG → Directus → Nuxt; no direct PG from Nuxt; a hardcoded axis list in the UI = hardcode_violation #37). Verdict: RECOMMENDED — reuse v_ui_iu_three_axis_envelope + iu_tree_path + v_kg_edges_all; add per-axis projection views declared in axis_registry.projection_view; clearly separate official (active/born) from candidate (provisional) lanes.


10.0 The projection contract

Every UI surface reads a named view (axis_registry.projection_view), recomputable from PG truth. Live precedents: v_ui_iu_three_axis_envelope, v_iu_three_axis_envelope_refresh_status, v_iu_three_axis_envelope_drift, v_kg_edges_all, v_pivot_dot_by_category. New axes declare their projection view at registration; the UI never queries base tables directly and never computes axis truth.

10.1 The surfaces

Surface Reads (projection) Truth behind it
Official treeview iu_tree_path spanning tree (primary parents), sibling_order information_unit.parent_or_container_ref + iu_relation contains
Graph browser v_kg_edges_all / universal_edges (all edges incl. secondary parents, topic-topic) iu_relation, universal_edges
Topic detail a topic node + its assigned IUs taxonomy (FAC-08, active) + axis_assignment(zone=approved)
IU list under topic IUs assigned to a topic, ordered, with confidence axis_assignment filtered by node_ref
Reconstruction reader IUs of a doc_code in sort_order, contiguous information_unit + fn_iu_reconstruct_source fingerprint
Containment tree nested IUs by iu_tree_path containment graph
Axis browser the Axis Registry (what axes exist, owners, lifecycle) axis_registry

10.2 Status / confidence / evidence badges

The UI surfaces governance state as badges, read from projection columns (never recomputed in Nuxt):

  • lifecycle: candidate / provisional / active / deprecated / retired (taxonomy.status, axis_registry.lifecycle_status).
  • zone: approved / candidate / quarantine (axis_assignment.zone).
  • confidence: calibrated confidence + match_score (shown distinctly — technical vs governance).
  • evidence / provenance: an expandable evidence panel (evidence/provenance jsonb) — "why is this IU tagged this topic?".
  • integrity: reconstruction fingerprint verified/drifted; containment cycle/dangling flags.

10.3 Candidate vs official visibility (the critical UI rule)

  • Official lane (default human view): only active/born nodes + approved assignments. This is the navigable, trustworthy tree/topic structure.
  • Candidate lane (opt-in / AI / reviewer view): provisional/candidate nodes + candidate/quarantine assignments, clearly marked ("proposed", "low confidence", "needs review"), and excluded from the official tree. KG-provisional topics live only here until promoted (doc 06).
  • Never present a candidate as official; never let a UI action promote a candidate without routing the approval ladder (doc 02).

10.4 Reading flows

  • Read a document (reconstruction): pick doc_code → reconstruction reader renders 1..N in order with a "verified" fingerprint badge; a drift badge warns if content_digest ≠ indexed_digest.
  • Navigate structure (containment): expand the spanning tree; secondary containment parents appear only in the graph browser.
  • Explore meaning (topic): browse the FAC-08 topic hierarchy → topic detail → IU list (with confidence/evidence); cross-topic semantic links via the graph browser.
  • Govern (axis browser): see every registered axis, its owner, lifecycle, coverage, and open issues — the operator surface for the open-axis model.

10.5 Boundaries

  • UI computes no axis truth (no client-side classification/aggregation that becomes truth); it reads L5/pivot/coverage/projection views (open-axis model §2.10).
  • Assembly is PG → Directus → Nuxt; no direct PG access from Nuxt; no one-off Nuxt feature where a factory/assembly projection should exist.
  • This document specifies projections only; building screens is a later, separate, non-design task.

10.6 Verdict

RECOMMENDED. The UI is a set of recomputable projection views (mostly already present for the envelope/tree/graph), extended per-axis via axis_registry.projection_view, with a strict official-vs-candidate split and governance badges sourced from projection columns. No UI is built here.

Back to Knowledge Hub knowledge/dev/reports/architecture/one-roof-axis-proposal-authorization-operating-substrate-design-2026-06-01/10-ui-projection-tree-graph-and-human-reading.md