KB-2E16

GPT Alignment with Opus — P3D4C2U Template/Table Module Approach

5 min read Revision 1
gpt-reviewopus-alignmentp3d4c2uassembly-firsttable-moduledirectusnuxt

GPT Alignment with Opus — P3D4C2U Must Use Assembly/Table Module, Not Bespoke UI

Date: 2026-05-08
Reviewer: GPT-5.5 Thinking / Incomex Hội đồng AI
Basis:

  • User reminder about no bespoke interfaces;
  • Opus search summary;
  • knowledge/dev/ssot/assembly-module/index.md;
  • knowledge/dev/ssot/table-module/index.md;
  • knowledge/dev/planning/table-module/_PLAN.md;
  • knowledge/dev/laws/law-07-assembly-first.md;
  • knowledge/dev/architecture/standard-template-law.md;
  • knowledge/dev/laws/dieu44-trien-khai/design/23-p3d-ui-boundary-directus-nuxt-assembly-note.md.

Verdict

Agree with Opus.

P3D4C2U must not be treated as a bespoke notification UI/page. It must use the established Assembly/Table Module path:

Schema / PG projection
→ Directus collection/metadata/permission
→ table_registry / DirectusTable config
→ existing Nuxt UI wrapper renders table

No notification-specific page/component should be designed unless the existing assembly path is proven insufficient and the User explicitly approves a generic reusable module extension.

Key laws/principles confirmed

  • Assembly Module SSOT: system is an assembly engine, not a web app. New UI = schema + config, not code.
  • Table Module SSOT: every table shown in UI must have a table_registry record. No registry record means no UI table.
  • Table Module plan: new table = collection + fields config, then render. No new code.
  • Điều 7 Assembly First: PG first, Directus available capabilities second, Nuxt UI/Agency OS third, new code only after those fail and approval.
  • Điều 28 Standard Template: design once, declare/reuse.
  • Pack 23 UI Boundary: PG → Directus → Nuxt existing screens/components; no custom Nuxt business logic; no direct PG from Nuxt.

Correction to earlier P3D4C2U framing

Earlier wording such as “Directus/Nuxt exposure” may lead agents to invent a board/page. That is wrong.

Correct framing:

P3D4C2U_TABLE_MODULE_READONLY_EXPOSURE_PROMPT_REVIEW

The immediate next work should determine and draft the minimal declaration path, not a custom UI implementation.

Expected P3D4C2U approach

  1. PG layer:

    • create or reuse a metadata/ref-only projection/view if needed;
    • likely v_event_outbox_table or similar if raw event_outbox is not directly suitable;
    • preserve live facts: event_subject_ref text, read_status_source IN ('explicit','implicit_self').
  2. Directus layer:

    • expose collection/view read-only via DOT/change package;
    • do not click-config Directus UI;
    • do not grant write/mark-read permissions;
    • do not expose body/raw payload/vector/secret.
  3. Table Module layer:

    • create/register a table_registry row for the event table/projection;
    • configure visible fields, labels, sort, filters using existing registry/config path;
    • use existing DirectusTable/table module if available.
  4. Nuxt layer:

    • no custom notification page/component by default;
    • if existing generic route/component can render by registry id, use declaration/config only;
    • if missing, report GENERIC_TEMPLATE_EXTENSION_REQUIRED, not notification-specific UI.

What Opus should do next

Opus should draft a P3D4C2U prompt that is inventory + prompt review, with a bias toward reusing existing mechanisms.

Suggested prompt path:

knowledge/dev/laws/dieu44-trien-khai/prompts/23-p3d4c2u-table-module-readonly-exposure-prompt.md

Future report path:

knowledge/dev/laws/dieu44-trien-khai/reports/23-p3d4c2u-table-module-readonly-exposure-report.md

P3D4C2U prompt should require Agent to:

  • read Assembly Module SSOT and Table Module SSOT first;
  • inventory whether DirectusTable, table_registry, and existing generic table route are present and usable;
  • inventory Directus collection availability for PG tables/views;
  • propose minimal DOT/read-only exposure + table_registry declaration;
  • avoid Nuxt code unless existing generic table route is absent;
  • if Nuxt gap exists, STOP and recommend generic Table Module extension, not notification UI.

Hard boundaries

  • No bespoke notification UI.
  • No new notification-specific Nuxt page/component.
  • No custom business logic in Nuxt.
  • No direct PG from Nuxt.
  • No Directus click-config mutation.
  • No Directus write/mark-read in this pack.
  • No UI work outside Table Module / Assembly Module path.
  • No body/raw payload/vector/secret exposure.
  • No IU runtime change.
  • No worker/cron.

Status

alignment_with_opus=YES
next_pack=P3D4C2U_TABLE_MODULE_READONLY_EXPOSURE_PROMPT_REVIEW
p3d4c1u_status=PASS_LIVE
universal_event_core_live=true
ui_strategy=ASSEMBLY_TABLE_MODULE_FIRST
bespoke_ui_allowed=false
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/reviews/gpt-alignment-with-opus-p3d4c2u-template-table-module-approach-2026-05-08.md