KB-40BE

P3D Pack 1 Phase 5C1A — Probe Prompt rev2 Patch Report

3 min read Revision 1
p3dpack1phase5c1areportprobe-rev2introspection-first

P3D Pack 1 Phase 5C1A — Probe Prompt rev2 Introspection-First Patch Report

Date: 2026-05-11 Author: Opus 4.7 Mode: PROBE PROMPT PATCH ONLY — no execution


1. Status flags

phase5c1a_probe_rev2_status    = PASS
mode                           = PROBE_PROMPT_PATCH_ONLY
probe_rev1_problem             = assumed_column_names_before_introspection
probe_rev2_fix                 = 3_phase_introspect_resolve_then_query
agent_dispatch_allowed         = false_until_GPT_USER_GO
seed_allowed                   = false
backfill_allowed               = false
migration_allowed              = false

2. What was wrong with rev1

Rev1 dùng literal column names (species_code, code, display_name, depth, parent_id, collection_name) trực tiếp trong Q6–Q12 — nhưng mục đích của probe CHÍNH LÀ xác minh các column đó có tồn tại không. Dùng chúng trước khi verify = assume trước khi introspect. Mâu thuẫn logic.

3. Rev2 fix: 3-phase execution

Phase What Uses assumed columns?
Phase 1 (Q1–Q5) Schema introspection via information_schema only NO — information_schema.columns is a PG system view, no assumptions
Phase 2 Concept→column resolution with candidate matching NO — matches Phase 1 output against candidate list
Phase 3 (Q6–Q12) Evidence queries using ONLY resolved column names NO — every column reference comes from Phase 2 resolution

Resolution rules (same pattern proven in Phase 5A semantic registry):

  • 0 candidates match → FIELD_ABSENT
  • 1 candidate matches → RESOLVED
  • 1 candidates match → AMBIGUOUS_FIELD

If a concept is not RESOLVED → dependent Phase 3 query reports UNKNOWN instead of guessing.

4. Specific fixes

Rev1 problem Rev2 fix
Q6 uses species_code, code literally Q6 uses <species_identifier>, <species_entity_code> from Phase 2 resolution
Q9 uses depth, parent_id literally Q9 uses <species_depth>, <species_parent_ref> — skips to UNKNOWN if not resolved
Q10 filters by "semantically covers" Q10 lists ALL depth-0 rows, candidate_not_approved, no semantic filtering
Q11 uses collection_name literally Q11 uses <mapping_collection_key>
Q12 uses collection_name, species_code literally Q12 uses <birth_collection_key>, <birth_species_identifier>
No field map phase Phase 2 builds explicit resolution table before any data query

5. Confirmation

✓ Rev2 has 0 assumed column names in Phase 3 queries
✓ All Phase 3 column references trace back to Phase 2 resolution
✓ FIELD_ABSENT / AMBIGUOUS_FIELD → UNKNOWN (not guessed)
✓ Agent still labels all candidates as candidate_not_approved
✓ Dispatch requires GPT/User GO

Phase 5C1A Probe rev2 Patch Report | Introspection-first | 0 assumed columns | 2026-05-11

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/reports/p3d-pack1-phase5c1a-probe-prompt-rev2-introspection-first-patch-report.md