GPT Review — P3D Pack1 Phase5 Design OK, Prompt Not Approved Field/Fuzzy
GPT Review — P3D Pack 1 Phase 5 Design OK, Dry-Run Prompt Not Approved: Field/Fuzzy Hardcode
Date: 2026-05-11 Reviewer: GPT-5.5 Thinking / Incomex Hội đồng AI Reviewed:
knowledge/dev/laws/dieu44-trien-khai/design/p3d-pack1-phase5-tac-to-iu-migration-design.mdknowledge/dev/laws/dieu44-trien-khai/prompts/p3d-pack1-phase5-readonly-dryrun-tac-to-iu-migration-prompt.mdknowledge/dev/laws/dieu44-trien-khai/reports/p3d-pack1-phase5-tac-to-iu-migration-design-report.mdknowledge/dev/laws/dieu44-trien-khai/reviews/gpt-review-p3d-pack1-phase4d-decision-memo-accepted-phase5-next-2026-05-11.md
Verdict
Phase 5 design direction is accepted.
Phase 5 dry-run prompt is NOT approved for Agent dispatch yet.
Opus correctly centered Phase 5 on the nesting decision. However, the dry-run prompt still contains field-level hardcode and fuzzy selection language that can break the no-hardcode rule at scale.
What is accepted
- Nesting-first dependency chain is correct.
- Preserve / flatten / hybrid are the right top-level options.
- Species/composition must remain downstream of nesting.
- TAC should remain read-only archive during migration.
- Pilot-first and per-publication transaction model are directionally correct.
- Exact-key rollback and post-implementation design requirement are correct.
- The prompt remains read-only/dry-run in intent.
Blocking prompt issues
1. The prompt says “No literal identifiers beyond §0” but then uses many literal semantic field names
The prompt uses fields such as:
canonical_address
content_hash
body
content_profile
section_type
parent_id
parent_ref
sort_order
Some may be valid candidate field labels, but the prompt currently phrases some as if they are expected fields. This is the same field-level hardcode pattern caught in Phase 4C.
Fix: rewrite these as candidate semantic labels that must be detected by introspection. If absent, report FIELD_ABSENT; do not substitute from memory.
2. G5 uses fuzzy “canonical_address or similar”
This is unsafe. “similar” invites Agent to infer column identity by vibes.
Fix: define deterministic candidate-field discovery rules:
- exact candidate label list declared as semantic candidates;
- if multiple candidates found, report ambiguity and do not choose silently;
- if none found, report
FIELD_ABSENTand skip collision check.
3. G6 assumes body/hash/provenance fields too strongly
G6 says source has content_hash, sample computes fn_content_hash(body), target has content_profile. These may be true from prior reports, but dry-run must re-verify as field candidates and not assume column existence.
Fix: candidate fields:
body-like field
hash-like field
jsonb profile/provenance field
with introspection + ambiguity handling.
4. G7 still relies on fuzzy “simplest composition” and “allows containment”
This is too interpretive for Agent.
Fix: split G7 into evidence-only:
- list live composition levels from
entity_species; - attach Điều 0-B criteria text already in design/legal docs as reference labels if available;
- do not classify “simplest” by Agent judgment;
- output species options by live composition level, not by guessed semantics.
GPT/User can interpret composition against nesting after the report.
5. G8/G9 are too broad for a mission prompt
“Analyze function source” and “extract checks” can be useful, but if not bounded it invites subjective extraction.
Fix: require output as:
- raw function identity/signature;
- raw source excerpt/summary with line anchors if available;
- detected required parameter names;
- explicit
UNKNOWNwhen extraction is not deterministic.
Do not let Agent convert source into policy claims without evidence.
6. “Agent writes its own queries” needs guardrails
Mission-style is acceptable, but for this no-hardcode-sensitive pack, each goal needs:
authoritative source
semantic candidate fields
ambiguity rule
skip rule
output shape
The current prompt has source/output shape, but ambiguity and skip rules are incomplete.
Required next action
Patch dry-run prompt to rev2. Do not dispatch Agent yet.
The design may remain mostly unchanged, but if Opus patches wording, only soften any statement that treats a field/algorithm as fact before live verification.
Status
phase5_design=ACCEPTED_DIRECTIONALLY
phase5_dryrun_prompt_rev1=NOT_APPROVED_FOR_DISPATCH
agent_dispatch_allowed=false
migration_allowed=false
seed_allowed=false
backfill_allowed=false
next_action=OPUS_PATCH_PHASE5_DRYRUN_PROMPT_REV2_FIELD_ADAPTIVE_NO_FUZZY