KB-14DC
O8E pre-production hardening (Contabo) — 09-mac-command-package-if-needed
4 min read Revision 1
dieu44iu-cutterv0.6o8epre-production-hardening
O8E Report 09 — Mac command package (G9)
- macro:
v0.6-o8e-pre-production-hardening-bundle - date_utc: 2026-05-21
- gate covered: G9 — Mac command package (source patches needed)
- result: G9 PASS — Mac source work IS required; packaged below. No SSOT source was patched from the VPS.
Why a Mac package is needed
O8E is VPS-side hardening (G2/G3/G4 done on Contabo). Three deliverables
require editing the Mac SSOT repo (/Users/nmhuyen/iu-cutter-build/repo/ iu-cutter, branch main at cad989a). The VPS deployed tree carries no
.git and is NOT the SSOT — it must not be patched as source.
§F2 — live-text sourcing (closes the F2 residual)
host: developer Mac
file: cutter_agent/orchestrator/discover.py
task: replace LiveDryRunDiscoverer._shadow_mark_rows placeholder body/title
('O4-DRYRUN-SHADOW') with real sourcing from the live source text /
information_unit body; LiveReadOnlyDiscoverer reads the actual document.
test: a multi-row cut from genuine content; keep DRYRUN snapshot tests green.
scope: localised to discover.py — small, no architecture ruling needed.
§F3 — recorder generalization + production writers (Report 05)
host: developer Mac
files: cutter_agent/ledger_v2_canonical_cut.py (LegBRecorder)
cutter_agent/ledger_v2_canonical_verify.py (VerifyRecorder)
+ new cutter_agent/orchestrator/governance_writers.py
task: per Report 05 §2 — N off RunContext.candidate_count; rename
body_hash_match_60 → body_hash_match_count; EXPECTED_SECTION_TYPE
per-document; PIN_M1_* → test fixtures; author governance_writer +
verify_writer wrapping the generalised recorders.
test: Report 05 §3 matrix T1..T7 — incl. the frozen M1 regression
(writer_digest d99a31d4…).
scope: touches v0.5-RATIFIED files — REQUIRES sovereign design ratification
BEFORE coding. Do not patch ahead of the ruling.
§GAP6 — compensating-decision writer (Report 04 Compensation B)
host: developer Mac
task: a small writer that appends a sovereign-signed compensating
review_decision marking a change_set_id as 'reverted' (append-only
ledger; never deletes governance rows).
scope: small; bundle with §F3.
§cosmetic — milestone comment cleanup (O8D Report 04 known residue)
host: developer Mac
file: cutter_agent/orchestrator/__init__.py
task: the __milestone__ inline comment still reads "Contabo artifact 703559c"
while the deployed O8D artifact is cad989a. Non-load-bearing; fix in the
next commit. Trivial.
Bundling & deploy
recommendation: bundle §F2 + §F3 + §GAP6 + §cosmetic into ONE Mac macro
(per the O8B ruling scope-sizing note — avoid micro-commits).
sequence: sovereign ratifies the F3 design (Report 05) → Mac macro
implements all four → commit on main (parent cad989a) →
clean artifact + DEPLOY-MANIFEST → deploy side-by-side to
Contabo (O8B/O8D method) → kill-switch stays OFF → 4xx/4xx
tests on the promoted tree → real-DB rollback-only proof.
not_done_here: no SSOT source was edited from the VPS this macro.
Verdict
mac_package_needed: YES — F2 live-text, F3 generalization + writers, GAP6
compensating writer, cosmetic comment
vps_source_patched: NO
g9: PASS