[object Object]

← back to Homesonspec

docs(homesonspec): wire offload-preflight as mandatory step-0 GO/NO-GO in the runbook — toolkit now turnkey (TK-10809)

7fd3d9fe38b1e92b677202b1ea294b182f5950b1 · 2026-08-30 23:18:03 -0700 · Steve Abrams

Files touched

Diff

commit 7fd3d9fe38b1e92b677202b1ea294b182f5950b1
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Sun Aug 30 23:18:03 2026 -0700

    docs(homesonspec): wire offload-preflight as mandatory step-0 GO/NO-GO in the runbook — toolkit now turnkey (TK-10809)
---
 ops/OFFLOAD-RUNBOOK.md | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/ops/OFFLOAD-RUNBOOK.md b/ops/OFFLOAD-RUNBOOK.md
index 394df71b..f5eae006 100644
--- a/ops/OFFLOAD-RUNBOOK.md
+++ b/ops/OFFLOAD-RUNBOOK.md
@@ -2,8 +2,12 @@
 
 The raw-snapshot store is ~155G split across two prod dirs. This runbook offloads it
 to a dedicated volume **without ever deleting evidence**. Every prod step below is
-**Steve-gated**. The tooling here (`ops/offload-snapshots.mjs`) is copy-only + verify;
-it NEVER unlinks, prunes, moves, or rewrites the source.
+**Steve-gated**. The tooling is copy-only + verify; it NEVER unlinks, prunes, moves,
+or rewrites the source:
+- `ops/offload-preflight.mjs` — READ-ONLY GO/NO-GO run **before** any copy (dest capacity,
+  live-crawl guard, DB scope). Exit 0 = GO, exit 1 = NO-GO.
+- `ops/offload-snapshots.mjs` — copy-only rsync (`-a`, no `--delete`) + sha256 verify.
+- `ops/verify-snapshots.mjs` — read-only post-move integrity canary.
 
 ## Facts to confirm ON THE BOX before you start
 
@@ -19,6 +23,16 @@ it NEVER unlinks, prunes, moves, or rewrites the source.
 
 ## Ordering (SAFE — do not reorder; old copies stay until a separate approval)
 
+0. **PREFLIGHT (read-only GO/NO-GO) — run first, require GO.**
+   ```
+   node ops/offload-preflight.mjs --src <REAL_SNAPSHOT_DIR> --dest <vol>
+   ```
+   Requires exit 0 (`=== PREFLIGHT GO ===`). NO-GO (exit 1) means a blocking precondition:
+   dest can't hold SRC (+5% margin), a live crawl is mid-write (torn-snapshot risk), SRC
+   missing/empty, or dest==src. Clear the ❌ items before copying. **Re-run this after the
+   step-2 quiesce** (before the final rsync) to confirm no crawl is still writing and dest
+   still has room.
+
 1. **Initial rsync copy-only.** Bulk-copy while ingestion keeps running. This is not
    the source of truth for completeness — it just moves most bytes ahead of the freeze.
    ```

← c3626f01 docs(homesonspec): record completed 13-brand CPG roster + co  ·  back to Homesonspec  ·  fix(homesonspec): correct dead Oakwood seed domain oakwoodho 57212c91 →