P3D Pack 1 Phase 4D — Species Mapping Decision Memo
P3D Pack 1 Phase 4D — Species Mapping Decision Memo
Date: 2026-05-11 Author: Opus 4.7 Status: DECISION MEMO — no seed, no backfill, no migration Evidence base: Phase 4B discovery + Phase 4C dry-run (both PASS)
A. Executive summary
We have complete evidence. 40 species exist. 8 are PLAUSIBLE by governance_role match. None is a perfect semantic fit for IU. The fundamental blocker is NOT "which species?" — it's "which composition?" — which depends on the Phase 5 nesting decision (preserve TAC parent→child or flatten). Solving species before nesting puts the cart before the horse.
B. Evidence from Phase 4B/4C (labels, not selectors)
- 40 species live, 153 mappings, 15 collections unmapped (including IU/UV)
- 8 PLAUSIBLE candidates (management_mode=observed, matching IU's governance_role=observed): 5 atom, 3 molecule
- fn_birth_registry_auto resolves species via
species_collection_map WHERE is_primary=true LIMIT 1, ignores discriminators - Discriminator columns exist but are dormant system-wide (0/153 rows populated)
- IU has 12 birth_registry rows with NULL species/composition
- UV has 0 birth_registry rows (subordinate, singleton pattern)
- IU.unit_kind exists, currently only
design_doc_section(12 rows).law_unitonly in vocab, not live. - TAC nesting: 83/86 units have parent_id, max depth=2, structural containment confirmed
C. Decision context split
Context 1 — Current IU pilot (12 rows)
- unit_kind =
design_doc_section(all 12) - governance_role = observed
- parent_or_container_ref = NULL (all 12) → no containment → atom appears correct per Điều 0-B
- These are pilot/test artifacts, not production law content
Context 2 — Future TAC law_unit migration (86 units, not yet live)
- Will be first consumer of
law_unitunit_kind - TAC has real nesting (depth=2, 83/86 have parent) → if preserved in IU, NOT atom
- Semantic domain = law content → closest existing species is
law(compound, governed) from dry-run evidence - But IU is observed,
lawspecies is governed → governance_role conflict
Context 3 — unit_version
- birth_code_strategy = subordinate (singleton, no peer pattern)
- 0 birth_registry rows
- No species mapping needed unless subordinate strategy changes
- Low priority — decouple from IU species decision
D. What PLAUSIBLE means and does not mean
Phase 4C used deterministic label: PLAUSIBLE = species.management_mode matches target.governance_role (both observed).
PLAUSIBLE does NOT mean:
- Semantically correct (governance_infra ≠ law content)
- Future-safe (if IU promoted to governed, all 8 become CONFLICT)
- Composition-appropriate (atom may be wrong if nesting preserved)
- Permanent (any gom mapping is temporary by Điều 29 §III design — gom species are for collections "không quan tâm chi tiết")
E. Option matrix for current 12 IU pilot rows
| Option | Species (from evidence) | Composition | Immediate benefit | Risk |
|---|---|---|---|---|
| E1: governance_infra (gom) | governance_infra / atom | atom | Điều 29 compliance for pilot | Temporary; creates expectation that IU = governance infra |
| E2: new dedicated species | (new, e.g., information_unit) / atom | atom | Accurate for pilot; independent of existing species | Must decide composition before any nesting evidence |
| E3: defer pilot mapping | none | none | No wrong classification | Điều 29 violation stays open for 12 pilot rows |
F. Option matrix for future TAC law_unit rows
| Option | Species | Composition | Benefit | Risk |
|---|---|---|---|---|
| F1: governance_infra (gom) | governance_infra / atom | atom | Consistent with pilot | WRONG — law content ≠ governance infra; atom wrong if nesting preserved |
| F2: law species | law / compound | compound | Semantically correct for law content | IU is observed, law species is governed → requires QT-005 promotion |
| F3: new species per unit_kind | (new law_unit species) / (TBD composition) | depends on nesting | Most granular; composition chosen based on evidence | Adds species; composition still depends on nesting decision |
| F4: defer to Phase 5 migration design | (assigned during migration) | depends on nesting | Species assigned when all evidence available (nesting, unit_kind distribution) | Điều 29 gap stays open until migration |
G. Option matrix for unit_version
| Option | Description | Benefit | Risk |
|---|---|---|---|
| G1: no mapping | UV is subordinate, 0 birth rows → no species effect | Simplest, correct for current state | If UV strategy changes, must revisit |
| G2: inherit from IU species | Map UV to same species as IU | Consistent | Adds mapping row that has no current effect |
| G3: defer | Decide when UV governance changes | No premature decision | Same as G1 in practice |
H. Discriminator dormant consequence
Discriminator-based species resolution (different species per unit_kind within same collection) is architecturally designed but not runtime-active:
- Schema supports it (4 columns in species_collection_map)
- fn_birth_registry_auto ignores it (only reads is_primary=true)
- 0/153 existing rows use discriminators
Consequence: Even with perfect discriminator design, fn_birth_registry_auto would still assign the is_primary=true species to ALL IU rows at birth time. Discriminator-based differentiation requires one of:
- Function patch (separate governance pack)
- Post-birth DOT correction tool (separate pack)
- Migration-time explicit species assignment (built into Phase 5 script)
Discriminator rows can still be seeded as DOCUMENTATION (is_primary=false) for future use.
I. QT-001 backfill implications
| Scenario | What gets backfilled | Complexity |
|---|---|---|
| Seed species now, backfill 12 pilot rows | 12 rows get species/composition from chosen mapping | Low — QT-001 5-step |
| Defer to Phase 5 | 12 pilot + 86 migrated = 98 rows in one pass | Medium — larger batch but one operation |
| Seed now, then backfill again at Phase 5 | Two rounds of backfill (12 now + 86 later, possibly with different species) | High — two operations, possible reclassification |
J. Recommendation with risks
The dependency chain
Phase 5 nesting decision (preserve or flatten?)
→ determines composition_level (atom or compound/molecule)
→ narrows species choice (must match composition)
→ determines species_collection_map INSERT
→ enables QT-001 backfill
→ Điều 29 compliance restored
Trying to solve species/composition BEFORE the nesting decision = guessing.
Opus assessment (by context, NOT locked)
| Context | Lean | Reasoning |
|---|---|---|
| 12 pilot rows | E3 (defer) or E1 (gom) — both acceptable | Pilot rows are test artifacts. Deferral keeps options open; gom is temporary fix. Neither is wrong because pilot rows will be reclassified anyway. |
| Future law_unit | F4 (defer to Phase 5) | Strongest option. Phase 5 migration design resolves nesting → composition → species in one coherent pass. No premature classification. |
| unit_version | G1 (no mapping) | Subordinate, 0 births, no effect. Revisit if strategy changes. |
Combined lean: Phase 5 migration design is the RIGHT place to resolve species/composition holistically
If GPT/User accepts this lean:
- Phase 4D closes with decision memo accepted
- Phase 5 opens with nesting decision as first gate
- Phase 5 migration design includes species assignment per unit_kind
- QT-001 backfill runs as part of migration (one pass for all rows)
- Điều 29 gap documented with explicit deferral rationale
Risks of deferral
| Risk | Mitigation |
|---|---|
| Điều 29 violation stays open for 12 pilot rows | Documented, tracked in compliance matrix, known gap with planned closure in Phase 5 |
| New IU rows created before Phase 5 get NULL species | Birth trigger fills NULL when no mapping → same as today. Phase 5 backfill covers them. |
| Perceived inaction | Decision memo documents the reasoning: deferral is an explicit architectural choice, not avoidance |
Risks of premature mapping
| Risk | Mitigation |
|---|---|
| 86 law_units born with wrong species/composition | Must reclassify — two-round backfill |
| governance_infra gom implies IU is "infra" not "content" | Creates false signal in species registry |
| Composition locked as atom before nesting evidence | Must change species if nesting preserved |
K. What must be designed/executed next
| If GPT/User chooses... | Next artifact |
|---|---|
| Defer to Phase 5 | Phase 5 migration design (nesting decision first, then species/composition + migration + backfill in one pack) |
| Map pilot now (E1/E2) | Phase 4D executable prompt (species_collection_map INSERT + QT-001 backfill for 12 rows) + post-implementation design per operating note |
| Promote + govern (E3+F2) | QT-005 promotion prompt (new species or SPE-LAW + governance_role UPDATE + backfill) + post-implementation design |
| Post-birth correction (H, option 2) | DOT tool design pack (correction tool spec + trigger-vs-DOT analysis) |
Per operating note: any executable seed/backfill/correction must produce a post-implementation design after Agent report is accepted.
Phase 4D Decision Memo | Evidence-based | 3 contexts | Dependency chain analysis | No decision locked | 2026-05-11