KB-5813
IP Content Work — 08 UI/API Topic×Process Content Requirements
4 min read Revision 1
information-pieceui-apitopic-process-mapworkstream-gpatch-ready2026-06-04
08 — UI/API Topic × Process Content Requirements (Workstream G)
Patch packet to display the live content map. PATCH-READY, not deployed (Nuxt redeploy operator-gated).
Routes (all read-only; all counts from PG)
| route | source object | returns |
|---|---|---|
GET /axes/AX-TOPIC/content-map |
axis_assignment + fn_topic_node_substrate | 7 topic candidates + IU lists + confidence |
GET /axes/AX-PROCESS/content-map |
v_axis_process_inventory/candidates | 60 process objects by type + 5 pilots |
GET /information-map/topic-process |
v_information_piece_topic_process_map | 11 classified relations (the matrix) |
GET /information-map/topic/:node_code |
fn_topic_node_substrate(node_code) | one topic: IUs, docs, processes, gaps |
GET /information-map/process/:process_code |
fn_process_node_substrate(process_code) | one process: components, triggers, IU-SOP, topics |
GET /information-map/pilot/:pilot_code |
join of above for a pilot cluster | pilot scope, score, decision-queue, UI payload |
Handler rule (h3 / Nuxt server)
Every handler is a thin pass-through to a PG view/function. No count math in Nuxt — e.g. /information-map/topic-process is literally SELECT * FROM v_information_piece_topic_process_map ORDER BY iu_count DESC, member_count DESC. member_count/iu_count come from the view, never recomputed client-side.
Components
| component | data | rules |
|---|---|---|
| TopicProcessMatrix | /information-map/topic-process | 7 topics × N clusters grid; cell = relation_class badge + member_count; no hardcoded levels (clusters come from view) |
| CandidateTopicPanel | /information-map/topic/:code | IU list, evidence tags, confidence, CANDIDATE badge |
| ProcessCandidatePanel | /information-map/process/:code | type, components, triggers, health, UNBORN/BORN badge |
| IULinkList | fn_*_substrate arrays | links IU → source doc (dieu39 KG-law) |
| DocumentBacklogPanel | doc 05 backlog (static seed → future view) | D1..D10 priorities |
| WorkflowImplicationPanel | doc 06 | MOW/MOT/MOIT badges per cluster |
| AutomationPilotPanel | /information-map/pilot/:code | score table, scope, primary/backup |
| EvidenceTracePanel | view evidence column + iu_metadata_tag |
full provenance trace per relation |
Mandatory display rules
- CANDIDATE badge on every topic and process (neither axis is ACTIVE).
- Governance/owner gaps visible: surface OWNER_MISSING (4 process, 9 topic) and "0 FAC-08 nodes".
- Source evidence visible: every relation shows its
evidencestring + links to the KG-law section. - No active topic/process claim anywhere in copy.
- No count math in Nuxt; no hardcoded levels; no DAG-forced-to-tree (matrix is many-to-many).
Backend readiness
v_information_piece_topic_process_map— LIVE (applied this run);/information-map/topic-processcan ship immediately.fn_topic_node_substrate,fn_process_node_substrate— LIVE; per-node routes ready.- Pilot/backlog routes need the doc 05/07 data as a small static seed or a future view (
v_information_piece_content_backlog— consciously not applied this run; see doc 09).
Status
UI_CONTENT_MAP_PATCH_READY. One backend object already live; remaining routes are thin reads over existing views/functions. Operator deploys Nuxt when ready.