KB-35DC

GPT Review — 22-P3-P2 FAIL and Rev7 Directive

4 min read Revision 1
gpt-reviewpack-22p3p2trigger-guardrev7-directivetrigger-order

GPT Review — 22-P3-P2 FAIL and Rev7 Directive

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

  • knowledge/dev/laws/dieu44-trien-khai/reports/22-p3-p2-iu-gateway-trigger-guard-report.md
  • knowledge/dev/laws/dieu44-trien-khai/reviews/opus-review-22-p3-p2-fail-trigger-naming-2026-05-06.md

Verdict

Agent executed correctly. Opus root-cause analysis is accepted.

22-P3-P2 rev6 failed safely. Cleanup worked. The system is not half-enforced:

  • guard function dropped;
  • both guard triggers dropped;
  • iu_create.gateway.mode=prepared;
  • pilot preserved;
  • canonical path remains healthy.

No additional Agent action is needed for the failed rev6 run.

Accepted root cause

The direct IU INSERT test was blocked by Birth Gate L1 before the gateway guard fired:

Birth gate L1: P-id1 title required

This is caused by trigger execution order for triggers of the same timing/event on the same table. The existing birth gate trigger name sorts before trg_iu_gateway_write_guard, so the business gate fires first.

This is a prompt/design issue, not an Agent issue.

Decision

Opus proposal is accepted with one precision:

The gateway guard should fire before downstream business gates because its purpose is to catch wrong-door writes and return canonical README/function guidance before domain validation errors. Therefore renaming the guard triggers to sort earlier is correct.

Use an explicit early prefix.

Recommended trigger names:

  • trg_aa_iu_gateway_write_guard
  • trg_aa_uv_gateway_write_guard

This is acceptable because the order requirement is now intentional and documented: wrong-door blocker before business validation.

Rev7 directive to Opus

Patch P3-P2 prompt to rev7 with a narrow trigger-name change. Do not redesign.

Prompt path:

knowledge/dev/laws/dieu44-trien-khai/prompts/22-p3-p2-iu-gateway-trigger-guard-prompt.md

Required changes

Replace every reference to old trigger names:

  • trg_iu_gateway_write_guard
  • trg_uv_gateway_write_guard

with new names:

  • trg_aa_iu_gateway_write_guard
  • trg_aa_uv_gateway_write_guard

Update all occurrences, including:

  1. Preflight existing-trigger detection.
  2. CREATE TRIGGER statements.
  3. Metadata assertions.
  4. pg_get_triggerdef checks.
  5. Trigger enabled-state checks.
  6. Cleanup guard DROP TRIGGER IF EXISTS statements.
  7. Report/log wording if present.
  8. Any grep/assertion strings.

Add a short comment in prompt

Add a comment near trigger creation:

-- Name prefix `trg_aa_...` is intentional: gateway wrong-door blocker must fire
-- before downstream business gates such as birth gate L1, so callers receive
-- canonical README/function guidance instead of domain-validation errors.

Keep everything else unchanged

Do not change:

  • guard function body;
  • SECURITY DEFINER / search_path;
  • REVOKE PUBLIC;
  • cleanup_guard behavior;
  • separate sessions;
  • GUC pilot handling;
  • direct INSERT/UPDATE tests;
  • mode enforcement logic;
  • hard boundaries.

After rev7

Return rev7 for quick GPT/User approval. If only the trigger names and comment are changed, it should be ready to dispatch.

Summary

Rev6 proved the safety rails work. The only functional issue is ordering: gateway guard must run before birth/business gates. Rev7 should rename the triggers and rerun the same pack.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/reviews/gpt-review-22-p3-p2-fail-and-rev7-directive-2026-05-06.md