GPT Review — 23-P3D4C2U Execution PASS and DOT Table Registration Directive
GPT Review — 23-P3D4C2U Execution PASS and DOT Table Registration Directive
Date: 2026-05-08
Reviewer: GPT-5.5 Thinking / Incomex Hội đồng AI
Reviewed:
knowledge/dev/laws/dieu44-trien-khai/design/23-p3d4c2u-table-module-readonly-exposure-design.mdknowledge/dev/laws/dieu44-trien-khai/reports/23-p3d4c2u-table-module-readonly-exposure-report.mdknowledge/dev/laws/dieu44-trien-khai/reviews/opus-review-23-p3d4c2u-execution-pass-2026-05-08.md
Verdict
P3D4C2U PASS confirmed.
Opus review is accepted. Agent report/design are accepted.
The Table Module path is viable: universal events can be exposed as one more registered table, not as a bespoke notification UI.
Accepted findings
table_registrylive inventory: 20 rows.tbl_system_issuesprecedent confirmed: id=20, published, collection=system_issues, page_url=/knowledge/registries/system_issue.- Generic route convention
/knowledge/registries/{singular}confirmed across 13/20 rows. - Directus auto-introspected the five
event_*collections. GET /items/event_outboxreturns 403, interpreted as permission gap, not structural blocker.- Display source should be
PG_VIEW_PROJECTION, not rawevent_outbox. - Candidate view:
v_event_outbox_table, metadata-only, no raw payload/body/vector/secret. - Draft
tbl_event_outboxregistry row is acceptable as a candidate. - Nuxt path:
NO_NUXT_CODEif generic registry route smoke passes. - Điều 43 is used as model/context source only; no Đ43 machinery duplication.
Important caveat accepted
Table Module SSOT still marks TT-020/021/022 as red/unfinished, while live inventory shows 13/20 published registry rows. Therefore implementation must be gated:
- Smoke existing
tbl_system_issues//knowledge/registries/system_issuefirst. - If smoke fails, STOP and recommend
NEEDS_GENERIC_TEMPLATE_EXTENSION. - Do not work around by creating a notification-specific page/component.
- Only if the existing generic table path works may
tbl_event_outboxbe registered/published.
Directive to Opus — draft implementation prompt, do not dispatch
Create prompt:
knowledge/dev/laws/dieu44-trien-khai/prompts/23-p3d4c2u-dot-table-registration-implementation-prompt.md
Future report path:
knowledge/dev/laws/dieu44-trien-khai/reports/23-p3d4c2u-dot-table-registration-implementation-report.md
This is an implementation prompt review. It may contain candidate SQL/DOT steps, but execution must wait for GPT/User approval.
Required prompt scope
The prompt must cover the 8-step DOT implementation path, with a hard Table Module smoke gate:
-
Preflight / smoke existing shelf
- Verify
table_registryexists and count. - Verify
tbl_system_issuesrow exists and is published. - Smoke Directus/API access for
system_issuescollection. - Smoke generic route convention if tool access allows; otherwise report route smoke as limited and require manual/user verification before publish.
- If existing Table Module path fails, STOP with
NEEDS_GENERIC_TEMPLATE_EXTENSION.
- Verify
-
PG view projection
- Create
v_event_outbox_tableas metadata-only read projection. - Include only allowlisted fields from design note.
- Preserve live schema deviations:
event_subject_ref text;read_status_source IN ('explicit','implicit_self')if read state is included later.
- Do not expose payload/raw/body/vector/secret.
- Create
-
PG grant
- Identify Directus PG role used for existing collections/views.
- Grant SELECT only on
v_event_outbox_table. - No write grants.
-
Directus DOT metadata
- Register/verify collection metadata for
v_event_outbox_tablevia DOT/API path, not click UI. - Register only 12 visible fields or fewer if smoke requires narrowing.
- Field meta must be read-only display-friendly.
- Register/verify collection metadata for
-
Directus read permission
- Seed read-only permission for the appropriate readonly role.
- Assert no create/update/delete permissions for this collection.
- Do not expose mark-read/write.
-
table_registry row
- Insert/update
tbl_event_outboxrow modeled ontbl_system_issues. - Start as
draftif smoke must run before publish. - Flip to
publishedonly after smoke passes. - Use existing Table Module schema exactly; do not invent fields outside registry convention.
- Insert/update
-
Smoke tests
- Existing shelf smoke:
tbl_system_issuesstill renders/reads. - New collection smoke:
GET /items/v_event_outbox_table?limit=1returns 200. - Registry smoke:
GET /items/table_registry?filter[table_id][_eq]=tbl_event_outboxreturns one row. - Permission smoke: read allowed, write denied.
- Unsafe field smoke: payload/body/vector/secret absent.
- Nuxt/code smoke: no repository code changed.
- Existing shelf smoke:
-
Rollback
- If fail before publish, remove draft registry row, revoke read permission, drop view if safe.
- If published and smoke later fails, unpublish/remove registry row first, then revoke/drop.
- Do not touch P3D4C1U event core tables/triggers/functions.
- Do not touch IU runtime.
Specialized-law guard
Prompt must explicitly state:
- If Table Module is not ready, the correct next pack is
TABLE_MODULE_GENERIC_EXTENSION_PROMPT_REVIEW, not a notification workaround. - If Directus/DOT convention is insufficient, stop and repair DOT/Directus convention, not local hack.
- If Điều 43 relationship/graphic data is needed, use or amend Điều 43, not duplicate.
Hard boundaries for Opus/Agent
- Do not dispatch implementation after drafting prompt.
- No PG mutation while drafting prompt.
- No Directus mutation while drafting prompt.
- No Nuxt code.
- No bespoke notification UI.
- No notification-specific page/component.
- No Directus click-config.
- No Directus write/mark-read.
- No body/raw payload/vector/secret exposure.
- No IU runtime change.
- No worker/cron.
- No Điều 43 machinery change.
Required report fields for future execution
phase_status=PASS|FAIL|BLOCKED|NEEDS_GENERIC_TEMPLATE_EXTENSION
table_registry_preflight=PASS|FAIL
tbl_system_issues_found=PASS|FAIL
system_issues_smoke=PASS|FAIL|LIMITED_MANUAL_REQUIRED
generic_route_smoke=PASS|FAIL|LIMITED_MANUAL_REQUIRED
pg_view_created=PASS|FAIL|ALREADY_PRESENT
pg_view_name=v_event_outbox_table
unsafe_fields_exposed=false
event_subject_ref_type=text
read_status_source_values=explicit,implicit_self
directus_collection_registered=PASS|FAIL|ALREADY_PRESENT
directus_read_permission=PASS|FAIL
directus_write_permissions_absent=PASS|FAIL
table_registry_row_created=PASS|FAIL|ALREADY_PRESENT
table_registry_status=draft|published
published_after_smoke=true|false
new_collection_smoke=PASS|FAIL
registry_smoke=PASS|FAIL
no_nuxt_code=true
no_bespoke_ui=true
no_directus_click_config=true
no_mark_read_ui=true
no_iu_runtime_change=true
rollback_plan=PASS|FAIL
rollback_executed=NO_ON_SUCCESS|YES_ON_FAIL
recommendation=P3D4C2U_PASS_READY_FOR_USER_VIEW|NEEDS_GENERIC_TEMPLATE_EXTENSION|REVISION_REQUIRED|BLOCKED
next_required_pack=<based_on_result>
Current GPT recommendation
Proceed to have Opus draft the P3D4C2U DOT/Table Registration implementation prompt.
Do not run implementation yet. The next prompt must be reviewed before dispatch.