KB-356D

GPT Review — P3D Pack1 Phase5 Dry-Run PARTIAL; Semantic Registry Worked

5 min read Revision 1
gpt-reviewp3dpack1phase5dryrunpartialsemantic-registryambiguity2026-05-11

GPT Review — P3D Pack 1 Phase 5 Dry-Run PARTIAL; Semantic Registry Worked

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

  • knowledge/dev/laws/dieu44-trien-khai/reports/p3d-pack1-phase5-tac-to-iu-migration-dryrun-report.md
  • User requirement: no hardcode, including disguised hardcode.

Verdict

Agent execution is accepted.

PARTIAL is the correct status. The semantic field registry worked as intended: it detected real ambiguity and blocked dependent subqueries instead of choosing a column silently.

No additional Agent rerun is needed until the semantic registry is patched.

Accepted evidence

  • no_mutation_performed=true
  • gate0_all_passed=true
  • resolved_field_map_complete=true
  • g1_to_g11_attempted=true
  • TAC source rows live count = 86
  • canonical address collision count = 0
  • nesting evidence available: max depth = 2
  • functions present: 6/6
  • scale brittleness self-audit passed
  • no hardcoded column lookup outside semantic resolution
  • no fuzzy selector
  • no nesting/species/composition decision made by Agent

Why PARTIAL is good here

Three ambiguous/absent findings prove the no-hardcode system is working:

  1. publication_link on tac_publication_member matched both publication_id and logical_unit_id.
  2. provenance_profile on unit_version matched both content_profile and provenance.
  3. sort_order was absent on tac_publication_member, while live field render_order was detected as UNREGISTERED_FIELD.

Without the semantic registry, an Agent could have chosen a column by intuition. That would be disguised hardcode and could corrupt migration planning.

GPT decision on semantic concepts

Do not keep one overloaded concept.

Create separate semantic concepts:

publication_ref   = reference from tac_publication_member to tac_publication
logical_unit_ref  = reference from tac_publication_member to tac_logical_unit

The live fields are publication_id and logical_unit_id, but the prompt should still treat these as candidate labels and resolve them live.

2. Register render_order

render_order is a publication-member ordering concept, not the same as generic unit sort_order unless explicitly mapped.

Add semantic concept:

publication_render_order

Candidate labels may include render_order, sort_order, position, ordinal, but live resolution must decide.

3. Split provenance concepts

Do not keep one overloaded provenance_profile concept.

Create separate semantic concepts:

provenance_json_profile = JSONB profile/provenance container for structured provenance
provenance_text_note    = text/freeform provenance/editor note

For Phase 5 projection, structured TAC source hash provenance should use the JSONB profile concept if it resolves. If it does not resolve, report FIELD_ABSENT/AMBIGUOUS_FIELD and block projection.

4. Collection key ambiguity is informational

collection_registry has both name and collection_name. Since this did not block the core dry-run, do not force a seed/migration decision from it now. However, Phase 5 prompt should resolve which concept is used for table join vs display/name if future queries depend on it.

Suggested concepts:

collection_table_key
collection_display_name

Nesting decision is still not locked

Dry-run evidence:

roots=3
children=83
max_depth=2

This is enough to analyze preserve/flatten/hybrid, but not enough to choose without examining render/edit implications. Phase 5B should continue to keep nesting decision open until the rerun metrics are available.

Next action

Open:

P3D_PACK1_PHASE5A_SEMANTIC_REGISTRY_DISAMBIGUATION_PATCH

Mode:

PATCH_PROMPT_AND_RERUN_BLOCKED_GOALS_ONLY

Opus should patch the dry-run prompt, not the database, then prepare a copy/paste prompt for Agent to rerun the blocked metrics after GPT review.

Status

phase5_dryrun=PARTIAL_ACCEPTED
agent_execution=PASS_FOR_SAFETY_AND_DISCIPLINE
semantic_registry_worked=true
migration_allowed=false
seed_allowed=false
backfill_allowed=false
nesting_decision_locked=false
next_action=OPUS_PATCH_PHASE5_PROMPT_FOR_SEMANTIC_REGISTRY_DISAMBIGUATION
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/reviews/gpt-review-p3d-pack1-phase5-dryrun-partial-semantic-registry-worked-2026-05-11.md