From beec80893993792389cd331fd12ca13c22c59a3d Mon Sep 17 00:00:00 2001 From: Aaron Trowbridge Date: Wed, 2 Sep 2026 18:59:14 -0400 Subject: [PATCH] chore(digest): close sync-script-rollout debt with deploy evidence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deployed 2026-09-02: live-pilot machine first, then every other machine; boards all-OK everywhere; backups kept on each. The seed closes WITH the evidence in its owner string (never silently). The closed-item render test's injected fixture is the test's own scenario — untouched (my earlier sed over-matched into it; caught by the suite, restored). --- packages/amico-run/src/fleet_digest.ts | 2 +- packages/amico-run/test/fleet_digest.test.ts | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/amico-run/src/fleet_digest.ts b/packages/amico-run/src/fleet_digest.ts index 540e4061..4fcbceba 100644 --- a/packages/amico-run/src/fleet_digest.ts +++ b/packages/amico-run/src/fleet_digest.ts @@ -95,7 +95,7 @@ export interface MigrationDebtItem { export const MIGRATION_DEBT: MigrationDebtItem[] = [ { id: "partitura-archived", label: "conflicted clone parked in vaults-archive", state: "open", owner: "content resolution" }, { id: "compat-symlinks", label: "removal gated on confirmation", state: "open", owner: "Aaron's no-session-broke confirmation" }, - { id: "sync-script-rollout", label: "new sidecar script deploys fleet-wide post-merge", state: "open", owner: "post-merge deploy" }, + { id: "sync-script-rollout", label: "new sidecar script deploys fleet-wide post-merge", state: "closed", owner: "post-merge deploy — DONE 2026-09-02: deployed fleet-wide (live-pilot machine first, then every other machine), boards all-OK everywhere, backups kept" }, ]; /** How a VaultHealth layout renders: the parked state names its re-check trigger — diff --git a/packages/amico-run/test/fleet_digest.test.ts b/packages/amico-run/test/fleet_digest.test.ts index 91d6a4b1..feec9d6d 100644 --- a/packages/amico-run/test/fleet_digest.test.ts +++ b/packages/amico-run/test/fleet_digest.test.ts @@ -323,10 +323,15 @@ describe("parseVaultHealth — the vault-probe output contract (pure, no ssh)", }); describe("MIGRATION_DEBT — the seeded migration-debt ledger (M4)", () => { - it("holds the real current debt, all open, partitura owned by content resolution", () => { + it("holds the real current debt; sync-rollout closed with deploy evidence, partitura owned by content resolution", () => { expect(MIGRATION_DEBT.map((d) => d.id)).toEqual(["partitura-archived", "compat-symlinks", "sync-script-rollout"]); for (const d of MIGRATION_DEBT) { - expect(d.state).toBe("open"); + if (d.id === "sync-script-rollout") { + expect(d.state).toBe("closed"); + expect(d.owner).toContain("DONE 2026-09-02"); // closed WITH evidence, never silently + } else { + expect(d.state).toBe("open"); + } expect(d.label.length).toBeGreaterThan(0); } expect(MIGRATION_DEBT.find((d) => d.id === "partitura-archived")?.owner).toBe("content resolution"); @@ -454,11 +459,12 @@ describe("amico fleet digest — vault-health lines (hermetic, M4)", () => { ); expect(r.code).toBe(0); expect(r.json.ok).toBe(true); - expect(r.json.block).toContain("vaults: 2 aligned · debt 3 open"); + expect(r.json.block).toContain("vaults: 2 aligned · debt 2 open"); // sync-rollout closed w/ evidence stops counting expect(r.json.table).toMatch(/alpha\s+layout aligned/); expect(r.json.table).toContain("partitura-archived"); expect(r.json.vaults).toEqual([aligned("alpha"), aligned("beta")]); - expect((r.json.migration_debt as MigrationDebtItem[]).every((d) => d.state === "open")).toBe(true); + expect((r.json.migration_debt as MigrationDebtItem[]).filter((d) => d.state === "open").map((d) => d.id)) + .toEqual(["partitura-archived", "compat-symlinks"]); }); it("a misaligned machine FAILS the digest (layout invariant), yet the digest still renders — errors-as-data", () => { @@ -492,7 +498,7 @@ describe("amico fleet digest — vault-health lines (hermetic, M4)", () => { ); expect(r.code).toBe(0); expect(r.json.ok).toBe(true); - expect(r.json.block).toContain("vaults: 1 aligned · 1 unverified · debt 3 open"); + expect(r.json.block).toContain("vaults: 1 aligned · 1 unverified · debt 2 open"); expect(r.json.table).toContain("unverified (parked; owner: fleet ritual)"); });