KB-1C5A

RP UI Axis — 08 No-Hardcode / No-Fake Audit

4 min read Revision 1
topic-axisauditno-hardcodestop-states2026-06-04

08 — No-Hardcode / No-Fake Acceptance Audit (Workstream G)

Scaling / anti-hardcode checks — PASS

Check Result Evidence
No topic_level_1/2/3 columns PASS depth emerges from parent_codes arrays / taxonomy.parent_id ∪ universal_edges; no fixed-level columns anywhere
No topic-only island table PASS only generic axis_registry + axis_assignment; topics are data rows, not a table
No hardcoded topic labels in UI/API packet PASS every label comes from the views; handlers are SELECT passthroughs; decision queue tokenises labels dynamically
No candidate auto-active PASS decision queue writes nothing; all 7 stay candidate; activation is owner UPDATE only
No FK false claim to taxonomy PASS axis_assignment.node_code has no FK to taxonomy; candidates are TOPIC-CAND tokens with null taxonomy_node
No source tag deletion PASS iu_metadata_tag topic tags = 25, untouched; decision queue only reads them
No tree-only path loss PASS parent_codes is an array everywhere; has_multiple_parents preserved; queue + surface DAG-safe
No Nuxt-side count math PASS all counts/flags computed in PG; handlers return rows verbatim
No faked counts PASS document_count honestly 0 (no document assignments); PIV-327/328 honestly DEFER_NO_SOURCE; governance_owner honestly null

New object audit — v_axis_topic_decision_queue

  • Read-only view; writes nothing; DROP-reversible.
  • evidence_strength / review_bucket / proposed_action are derived from data (assignment_count, parent_codes, shared label tokens), not hardcoded per node.
  • Điều-39 enforced structurally (a view cannot activate anything); a governance_note column restates it.

STOP states (defined and observed)

STOP condition Current state Behaviour
axis missing resolver not triggered resolver live (fn_topic_node_substrate)
candidate lacks governed node active for all 7 surface shows UNGOVERNED_CANDIDATE; queue says gov_council_decision_needed=true; promotion blocked until approval
approval missing active AX-TOPIC.approval_ref=null; no activation performed
grouping needed observed (advisory) cut_pipeline/render_pipeline flagged sibling; grouping_status=OK (under threshold 50)
governance owner missing active system-wide governance_object_ownership=0 rows; Packet 5 STOPs if no GOV owner code exists
evidence too weak observed workflow(2)/cut(1)/render(1) flagged WEAK; proposed DEFER/GROUP not promote
taxonomy promotion not safe active unretirable births + name-dependent amplification → per-node dry-run mandated; not committed

Fake-green guard

Nothing in this macro reports success it did not achieve:

  • UI/API is packet (not live) — stated plainly; redeploy operator-gated.
  • Taxonomy promotion is rehearsal (not committed) — net-zero proven, one-way-door risk disclosed.
  • Routing rows are proposed (not inserted).
  • governance ownership is blocked (0 rows / no GOV owner code) — disclosed, not papered over.

Result

Audit PASS. The axis layer scales (generic registry + DAG arrays + dynamic derivation), and every gated/absent thing is reported honestly with its exact blocker.

Back to Knowledge Hub knowledge/dev/reports/architecture/rp-ui-consume-axis-surface-decision-queue-automation-handoff-2026-06-04/08-no-hardcode-no-fake-audit.md