KB-6594

P10D-2A Evidence Quick Check 2026-04-30

6 min read Revision 1
p10devidenceno-code-pathverification

P10D-2A — Quick No-Code Path Verification

Date: 2026-04-30 Scope: Read-only grep on /opt/incomex/docker/nuxt-repo/web via ssh contabo. Host: vmi3080463.contaboserver.net


Q1 /knowledge/laws hardcode? PARTIAL (data config-driven, sections hardcoded)

Source: pages/knowledge/laws/index.vue

  • Line 21: readItems('governance_docs', ...) — collection-driven (config).
  • Lines 31, 36, 42: 3 sections filter by hardcoded category strings 'constitution' | 'law' | 'ssot_table'.
  • Lines 59, 132: lawColumns & <UTable> columns hardcoded in component.

→ Data lives in governance_docs collection, but the 3-section layout & category names are hardcoded in the page file. Adding a 4th category requires editing the .vue file.


Q2 /docs source hardcoded KB? NO (Directus collection-driven via SDK)

Source: pages/knowledge/[...slug].vue, pages/knowledge/index.vue, composables/useAgentViews.ts, server/api/docs/context.get.ts

  • pages/knowledge/[...slug].vue:61 & pages/knowledge/index.vue:63: readItems('knowledge_documents', ...).
  • composables/useAgentViews.ts:144: readItems('agent_views', ...).
  • server/api/docs/context.get.ts:31: fetches agent_views from Directus REST.
  • composables/useAgentData.ts:96: Agent Data search → fetch full content from knowledge_documents in Directus.

→ Source is Directus collections (knowledge_documents, agent_views), not hardcoded KB API. Collection name is the only hardcoded piece per page.


Q3 DirectusTable table-only? YES (table-only, registry-driven)

Source: components/shared/DirectusTable.vue, composables/useDirectusTable.ts

  • DirectusTable.vue:3-8: doc says "schema-driven table" wrapping UTable with pagination/sort/filter.
  • Line 35: prop "Registry-driven mode: fetch config from table_registry by this ID".
  • Line 77: readItems('table_registry', ...) to load FieldConfig.
  • Lines 335-423: only renders <UTable> — no markdown/prose rendering.
  • Sibling DirectusMatrix.vue is also UTable-only.

→ DirectusTable purely renders tabular data from any collection driven by table_registry. Cannot render document/markdown content.


Q4 Registry/menu/page config exists? YES

  • navigation collection: components/navigation/TheHeader.vue:12 readItem('navigation', 'main', ...), TheFooter.vue:9 readItem('navigation', 'footer', ...). Items rendered dynamically.
  • agent_views collection: bootstrapped in scripts/bootstrap_directus.ts:374-422, fetched via useAgentViews.ts.
  • ui_pages registry: config/detail-sections.ts:235, pages/knowledge/registries/all/index.vue:23, pages/knowledge/registries/[entityType]/index.vue:47 (table tbl_registry_ui_pages).
  • table_registry registry: drives DirectusTable.

→ Navigation, page registry (ui_pages), and view registry (agent_views) all exist and are config-driven via Directus.


Q5 Component can accept TAC source by config? YES

Source: components/DocsTreeView.vue, composables/useAgentViews.ts

  • DocsTreeView.vue:5-7: props nodes: DocsTreeNode[], selectedPath?: string. Source-agnostic — caller supplies the tree.
  • useAgentViews.ts:12: buildDocsTree(documents: AgentView[]) is a pure transform. Pass any document list shaped like AgentView → get a tree.
  • Already reused by both pages/knowledge/index.vue:121 and pages/knowledge/[...slug].vue:114 with different filtered doc sets.

DocsTreeView + buildDocsTree accept any document list; a TAC source can be wired in by passing a different fetched list — no component change needed.


Verdict

  • No-code path exists? PARTIAL — YES for tree-style views, NO for the laws page as-is.

    • YES: A TAC view that mirrors /knowledge/[...slug] can be built by reusing DocsTreeView + buildDocsTree with a different readItems('<collection>', ...) query — purely composition.
    • NO: /knowledge/laws itself has hardcoded 3 sections + columns. To add/rename/reorder sections without code, that page would need to be refactored to read section config from a collection (e.g., add governance_doc_sections or extend ui_pages).
  • Missing capability: A section/layout registry for the laws page (currently the 3 categories constitution|law|ssot_table and their column lists are baked into the .vue file). DirectusTable handles table layout config, but the section grouping on laws/index.vue does not pull from any registry.

  • Next recommended step:

    1. If goal = expose TAC under /knowledge/... tree: write a tiny new page that calls readItems('<TAC collection>', ...) and feeds buildDocsTreeDocsTreeView. Zero new components.
    2. If goal = configurable laws page: introduce a laws_sections (or reuse ui_pages + table_registry) record set whose rows define {category_code, title, columns}, then refactor pages/knowledge/laws/index.vue to iterate sections and pass each into SharedDirectusTable (already registry-driven).

STOP. Read-only complete. No code, no mutation.