Phase 3B — Regression Proof Results
Phase 3B — Regression Proof Results
Five regression families executed and verified. All PASS.
1) Synthetic vocab proof — fn_iu_create accepts all 17 governed values
BEGIN/ROLLBACK loop over tac_section_type_vocab (lifecycle_status='active'). For each v_code:
fn_iu_create(
p_canonical_address := 'DIEU45-PHASE3B-VOCAB-PROBE#'||v_code||'-'||md5(random()::text),
p_title := 'phase3b vocab probe '||v_code,
p_body := 'probe body '||v_code,
p_actor := 'dieu45_phase3b_vocab_probe',
p_unit_kind := 'law_unit',
p_section_type := v_code
)
Assertion: status='created' AND section_type=v_code.
Result: total=17 pass=17 fail=0. ROLLBACK restores information_unit count to 192.
P-pub1/P-pub2 birth-gate warnings observed (known §0-G non-blocking; consistent with Phase 3 pilot 60 warnings).
Negative test (p_section_type:='definitely_not_valid_zzz'): expected exception raised section_type: Not in vocab. Available: appendix, article, ..., section, technical_spec (full 18-value vocab listed in error).
Orphan test (p_section_type:='section'): status=created section_type=section (preserved, no behavior change — section remains in dot_config as documented orphan).
2) Điều 37 queue pilot read-back (durable, no replay)
SELECT fn_iu_op_verify_cut(
p_run_id := 'a64340fe-96ea-428a-a860-32e8b471b496'::uuid,
p_actor := 'phase3b_regression');
Result:
{"alias":"fn_iu_op_verify_cut","run_id":"a64340fe-96ea-428a-a860-32e8b471b496",
"verdict":"verified",
"inner_result":{"ok":true,"verdict":"verified","problems":[],
"axis_a_ok":true,"axis_b_ok":true,"axis_c_ok":true,
"no_vector_ok":true,"pieces_count":17}}
Reconstruct:
SELECT count(*) FROM fn_iu_reconstruct_source(
p_doc_code := 'knowledge/dev/laws/dieu37-governance-organization-law.md');
→ 17 pieces.
(Note: fn_iu_reconstruct_source arg name is p_doc_code, not p_source_ref. cut populates information_unit.doc_code from p_source_ref verbatim per [[feedback-cut-doc-code-from-source-ref-not-canonical-address]].)
IU + version_anchor integrity:
| Metric | Value |
|---|---|
| IU count for Điều 37 | 17 |
with version_anchor_ref |
17 |
with content_anchor_ref |
17 |
3) Bounded MARK/CUT fixture — not separately re-run
Mission allows skipping the MARK/CUT fixture if Phase 3 read-back proves replay viability. (2) above shows the Phase 3 Điều 37 run reconstructs cleanly, and D31-I9 ([[05-queue-d31-integrity-pack]]) re-runs the MARK→CUT-without-approval path on synthetic input in BEGIN/ROLLBACK and gets the expected refusal_code=not_approved shape.
Combined coverage = end-to-end MARK→VERIFY-CUT path verified + cut-without-approval refusal path verified. No durable fixture needed.
4) Heartbeat caller proof (Option A)
Per [[03-heartbeat-caller-hardening]]:
- 6/6 refusal proofs pass (
iu_outbound_defaultprotection, kind-vocab, status-vocab, name-required, payload denylist, gate-off). - Positive synthetic tick passes (
phase3b_synthetic_externalticks=1, metadata pinned with ping_actor/ping_origin/ping_at/ping_function), then ROLLBACK leavesqueue_heartbeatcount at 2 unchanged. fn_queue_stale_check()still reportsiu_outbound_defaultstale (age 360,812s) — silent gap visibly surfaced; no false-heal.
5) D30 + D31 suites
- D30: 10/10 PASS — see [[04-queue-d30-regression-pack]].
- D31: 9/9 PASS — see [[05-queue-d31-integrity-pack]].
Aggregate
| Family | Probes | Pass | Fail |
|---|---|---|---|
| Synthetic vocab (17 governed + invalid + orphan) | 19 | 19 | 0 |
| Điều 37 read-back (verify_cut + reconstruct + IU integrity) | 3 | 3 | 0 |
| Heartbeat caller (refusals + positive) | 7 | 7 | 0 |
| D30 regression | 10 | 10 | 0 |
| D31 integrity | 9 | 9 | 0 |
| Total | 48 | 48 | 0 |
Durable side effects of regression (none)
Post all probes:
information_unitcount: 192 (unchanged from 192 baseline)event_outboxcount: 134,803 (unchanged)iu_vector_sync_pointcount: 152 (unchanged)job_queuecount: 6 (unchanged — Phase 3 pilot jobs in succeeded state)job_dead_lettercount: 0 (unchanged)queue_heartbeatcount: 2 (unchanged)- All gates at safe defaults
iu_outbound_defaultrow identical to baseline
The only Phase 3B durable mutations are those documented in [[02-fn-iu-create-vocab-gap-fix]] and [[03-heartbeat-caller-hardening]] (5 dot_config rows, 1 view, 2 functions). No durable regression-probe pollution.