dot-iu-cutter v0.4 PG-backed Dry-run RERUN#3 — EXECUTION FAIL: harness negatives self-serialization UUID defect (cross-ref fix VALIDATED on happy 15-row baseline) (2026-05-17)
dot-iu-cutter v0.4 — PG-backed Dry-run RERUN#3 — EXECUTION FAIL
Date: 2026-05-17 · Verdict: honest FAIL (NOT PASS). · execution_status = FAIL:G_HARNESS_NEG
Authorized by: GPT (cross-ref + lane-overlap fix PASS; accepted commit e93424b…0856a; tests 140/140; PG dry-run RERUN#3 authorized; orchestrator-pin bump only; no iu-cutter code change / commit).
Accepted code commit: e93424b5ff7fa5e4b8406131977ce4339cd0856a (parent db4aa58).
Plan: command-review r1 · verification-plan r3 · rollback-plan r1 · risk-review r1.
1. Pre-run remediation — PASS
| Item | Result |
|---|---|
Orchestrator ACCEPTED pin db4aa58…eede6 → e93424b…0856a (gitignored run_dryrun_v0_4.sh only) |
applied; bash -n OK |
Teardown shreds current-run $DUMP on all exit paths (${DUMP:-}-guarded) |
confirmed present (carried from RERUN#2) |
| Corrected orchestrator SHA256 | pre d6478497901d5eed534a7b1204e9b09024250953fda4c8ac52191647a3ca0cb2 → post 2ddffd1d071cc9b87ec05c4dd1fbeeb41ee2c3c0a9d2bcfa2d7228cf66a7e484 |
| Git SSOT | branch main, HEAD e93424b…0856a, git status --short -- iu-cutter clean; no iu-cutter source change; no git commit (orchestrator gitignored) |
2. Run timeline (C-01 → C-13)
C-01 OK head=e93424b…0856a
C-02 OK roles.sql sha=2a409696… harness sha=ddf14a94…
C-03 OK dump sha=9183160f53d084312b81423f6739ff0eedf7f82976d3fd260571df8e63944332 size=681125620 prod_sysid=7611578671664259111
C-04 OK no published host port
C-05 OK cg tables=12 views=12
C-06 OK matrix exec=18 verify=15 ro=12 ro_login=f
C-07 OK dr_sysid=7640841609642958891 != prod 7611578671664259111
C-08 OK harness sha verified=ddf14a94…
C-10a harness happy -> PASS
C-11a baseline EXACT total=15 ✅
C-10b harness negatives -> GATE FAIL G_HARNESS_NEG
C-13 teardown (exact-name only); STOP (honest FAIL, DR env torn down only)
3. CROSS-REFERENCE + LANE-OVERLAP FIX VALIDATED (happy path)
C-11a captured the canonical MARK → SWEEP → REVIEW → CUT → VERIFY flow producing the verification-plan r3 §2.3 exact baseline, cell-for-cell:
decision_backlog_entry=1 decision_backlog_history=5 decision_backlog_dependency=0
decision_backlog_sweep_log=1 manifest_envelope=1 manifest_unit_block=1
review_decision=1 dot_pair_signature=2 cut_change_set=1
cut_change_set_affected_row=1 verify_result=1 canonical_address_alias=0 TOTAL=15 ✅
dot_pair_signature=2 reached against the deployed dot_pair_signature_check XOR — i.e. the DOT-991 executor row carried cross_reference_change_set_id (verify_result NULL) and the DOT-992 verifier row carried cross_reference_verify_result_id (change_set NULL). The prior RERUN#2 blocker (dot_pair_signature_check violation) is resolved; DOT lane-overlap separation held on the happy path. Commit e93424b is confirmed effective for the happy-path contract.
4. Failure — HARNESS self-serialization defect (R6 false-negative class), NOT a SUT/fix defect
logs/harness_negatives.out traceback:
File "/wd/dr_harness_v0_4.py", line 277, in main
json.dump(res, f, indent=2, sort_keys=True)
...
TypeError: Object of type UUID is not JSON serializable
out/negatives.json left half-written: { "S10": { "entry_id": <UUID … — confirming the crash is at the final aggregate json.dump, after the negative scenarios ran.
Structural proof it is the harness, not cutter_agent:
dr_harness_v0_4.py:226_ok(res,"S10",entry_id=e2["entry_id"],…)and:228res["_replay_entry_id"]=e2["entry_id"]store the replayed entry id into the harness's own result dict.- S10 = idempotency replay: accepted
phases.mark()correctly returns the existing row via the idempotent path (existing[0]), read back from the real psycopg3 adapter, whoseentry_idis auuid.UUIDobject (real DB returnsuuidcolumns asUUID). This is correct SUT behaviour. main():277serialisesreswith nodefault=str(and nojson_safe_idapplied to harness-captured ids) →TypeError. The defect is purely in the dry-run harness report serialisation, a throwaway artefact in the gitignored.dryrun-v0.4-2026-05-17/.cutter_agent(incl. the e93424b cross-ref fix and the db4aa58 signing-bodyjson_safe_id) is not implicated —json_safe_idonly normalises the CUT/VERIFY signing body, not the harness's own S10 result capture.happymode passed because its capturedS4_MARK entry_idis the first-insert path; only the idempotent replay returns a real-DBUUID, so the defect surfaces only innegatives.
Consequence: the harness exited non-zero before the orchestrator's shell-side count_tables/Δ=0 post-comparison ran, so the negative & idempotency Δ=0 battery (S2/S3-neg/S8/S9/S10/S11/S12) is UNVERIFIED. Per verification-plan §4, an incomplete gate ⇒ run = FAIL, regardless of the happy-path PASS. Marked honest FAIL; not PASS. Per verification-plan §3/§4 and risk R6, a suspected harness FN must be proven structurally before any verdict action — proven here; no improvised harness fix, no re-run, no self-advance.
5. Net-zero / safety proof
| Asset | State |
|---|---|
Current-run prod dump prod-directus-20260517T124731Z.sql (sha 9183160f…) |
CURRENT_RUN_DUMP_ABSENT_OK (patched teardown shredded on fail path) |
DR container pg-dry-run-v0.4-db-adapter-2026-05-17 / network dr-net-v0.4-2026-05-17 |
DR_GONE_OK / NET_GONE_OK (exact-name) |
| 3 protected prior dry-run envs | PROTECTED_BYTE_IDENTICAL |
| Production | sysid pre==post 7611578671664259111; StartedAt 2026-04-17T05:35:18.48439927Z unchanged; read-only pg_dump only; no write/CUT/VERIFY; not restarted |
| iu-cutter SSOT | HEAD e93424b…0856a, git status --short -- iu-cutter clean; no code change, no git commit |
| Secrets | dry-run-only, openssl-generated; dr.env/dr.harness.env shredded at teardown; retained artefacts confirmed secret-free (UUIDs/hashes/sha/verbs only). Formal C-12 leak gate not reached (STOPped at C-10b). |
6. Artefact index (SHA256)
| Artefact | SHA256 / value |
|---|---|
Corrected orchestrator run_dryrun_v0_4.sh |
2ddffd1d071cc9b87ec05c4dd1fbeeb41ee2c3c0a9d2bcfa2d7228cf66a7e484 |
Harness dr_harness_v0_4.py (defective; unchanged this run) |
ddf14a94438a6b8ed621329d2f3b62ca7da2b58724d6fd363136a0f1c8d3aa96 |
Roles matrix dr_roles_matrix.sql (unchanged) |
2a409696dc3f60cb6328a77afd345e7638685f8d70cb5c0995b40f5841a57584 |
| Current-run prod dump (shredded at teardown; sha ref only) | 9183160f53d084312b81423f6739ff0eedf7f82976d3fd260571df8e63944332 |
| Retained redacted | RESULT.json, logs/orch.log, `logs/protected_before |
7. Hardcode / label / DOT lane-overlap control statement
No fixed IP/DSN/password/container/vector-collection introduced; DR host from dry-run-only dr.harness.env; passwords openssl-generated then shredded; container/network = required exact-name safety ids. No label/metadata/vector/NoSQL change. DOT lane-overlap control: on the happy path DOT-991 referenced only change_set, DOT-992 only verify_result, XOR satisfied, no swap/both/neither — PASS for the validated portion. No STOP-class hardcode/lane issue.
8. Verdict & next (no self-advance)
RERUN#3 = honest FAIL (gate G_HARNESS_NEG incomplete). The e93424b cross-reference + lane-overlap fix is VALIDATED on the canonical happy path (exact 15-row r3 baseline, deployed XOR satisfied). Remaining blocker is a dry-run harness self-serialization defect (dr_harness_v0_4.py json.dump lacks default=str/uuid normalisation for S10 replay-captured ids) — a throwaway-tooling defect, not iu-cutter, not the fix. Remediation = a separate GPT-gated harness-hardening cycle (normalise harness-captured ids before json.dump; harness sha will change → re-state). NOT performed here. No code change / commit / re-run / production touch. Self-advance PROHIBITED.