KB-5B4B

O8F implement F2/F3/GAP6 deploy+proof — 09-vps-test-proof-result

4 min read Revision 1
dieu44iu-cutterv0.6o8fvpstestsrollback-proofreal-db

O8F Report 09 — VPS test & proof result (G8)

  • macro: v0.6-o8f-implement-f2-f3-gap6-deploy-proof
  • date_utc: 2026-05-21 · gate: G8 — VPS tests & proofs · result: G8 PASS

1. VPS import / compile / test suite

host:          Contabo vmi3080463 · Python 3.12.3
py_compile:    governance_writers / compensation / discover / __init__ — OK
import smoke:  cutter_agent.orchestrator imports; milestone O8B;
               execution_enabled() False; governance_writers + compensation
               import OK.
test suite:    python3 -m unittest discover -s tests -t tests
               -> Ran 471 tests — OK (exit 0). Matches the Mac run.
M1 regression: writer_digest d99a31d4a4be907c510ae15965e9f7bb3387e9e28676e9f32adf463828b1aa28
               re-observed unchanged in the v0.5 recorder path.

2. Non-mutating / rollback-only proofs (real live DB, txn rolled back)

PROOF-1  F2   PASS — source_unit_texts() over the live DB returned 60
              ICX-CONST units, all 60 with genuine unit_version.body text
              (live titles are empty — that IS the real data). Read-only
              SELECT; transaction rolled back.

PROOF-2  F3   PASS — GenericLegBRecorder.plan() N=7 and N=60 produce 7/7
              and 60/60 row fan-outs (generalisation handles non-60).
              Rollback-only DB probe: record() ran inside a real cutter_exec
              transaction — ALL 8 cutter_governance tables ACCEPTED the
              generic INSERTs (status RECORDED, cut_change_set +1 in txn) —
              then ROLLED BACK; cut_change_set count returned to baseline 2.

PROOF-3  F3   PASS — GenericVerifyRecorder.plan() accepts a fresh
              (non-M1) change_set UUID and produces a 64-hex payload_hash.

PROOF-4  GAP6 PASS — read-only pre-run snapshot: public baseline
              158 / 165 / 60 (match). plan_compensation for cut_leg_a /
              leg_b_record / write_verify / lifecycle_enact — step counts
              1/3/4/5, hard_delete_default False for all four.

OVERALL: PASS (exit 0).

3. DB counts — unchanged

public.information_unit:  158   (baseline)
public.unit_version:      165   (baseline)
public.iu_lifecycle_log:   60   (baseline)
ICX-CONST units:           60   (baseline)
all proof transactions:   ROLLED BACK — zero persistent mutation.

4. Finding — cutter_exec read-grant gap (non-blocking)

observed:  cutter_exec can INSERT into all 8 leg-B cutter_governance tables
           (proven by the rollback-only probe) but lacks SELECT on
           cutter_governance.verify_result and cut_change_set_affected_row.
class:     a VPS grant-provisioning detail, NOT a code defect. The generic
           recorders emit schema-valid SQL. The verify-writer live path
           additionally needs cutter_verify INSERT on verify_result /
           dot_pair_signature — to be audited at first-run readiness.
action:    folded into the G9 blocker matrix as a first-run grant-audit item.

5. Runtime / kill-switch

runtime dirs (O8E /var/lib/cutter + 7 dirs + config + README):  intact
execution_enabled in deployed v0.6:  False
service / cron / docker:  none restarted
g8: PASS — 471/471 on the VPS; 4/4 non-mutating proofs PASS incl. a real-DB
    rollback-only governance-write proof; DB counts unchanged; kill-switch
    False; runtime dirs intact.
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-o8f-implement-f2-f3-gap6-deploy-proof/09-vps-test-proof-result.md