Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/amico-run/src/fleet_digest.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -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 —
Expand Down
16 changes: 11 additions & 5 deletions packages/amico-run/test/fleet_digest.test.ts
Original file line numberDiff line numberDiff line change
Expand Up@@ -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");
Expand DownExpand Up@@ -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", () => {
Expand DownExpand Up@@ -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)");
});

Expand Down
Loading