Build Log
Alloy Bank Phase — Completion
July 26, 2026
Finished Alloy's Bank phase rebuild — the 7th and final Arc lifecycle phase — closing out the full Orient through Bank arc, then a live adversarial audit found and fixed 3 real bugs before wrap.
Timeline
What shipped
products/alloy/lib/repository-custody.ts — resolveRepositoryCustody, real git shell-out (branch/HEAD/ahead-behind/working-tree-status), fixed a rename-parsing bug and a leading-space-trim bug found by its own regression test
products/alloy/lib/repository-custody.test.ts — 4 new real-git tests (rename, plain modification, clean tree, non-git directory)
products/alloy/lib/bank-snapshot.ts — buildBankSnapshot, deriveBankReadiness (uncommitted-changes rule downgraded from blocking to attention)
products/alloy/lib/actions.ts — bankArc extended to collect new closure fields, resolve real custody server-side, and enforce readiness before mutation; recordWorkpieceDisposition widened to also write the 5-way bankWorkpieceDisposition column; transitionArcPhase's close CTE widened with COALESCE clauses for all new bank* fields
products/alloy/lib/db/bank-close-cte.integration.test.ts — 3 new real-DB tests proving the widened close CTE (full field set, COALESCE-preserves-unset-fields, stale-control-version fence)
products/alloy/components/BankPanels.tsx — 9 real panels (BankReadinessPanel, ArcOutcomePanel, RepositoryCustodyPanel, DeliveryStatusPanel, BankDecisionsInterventionsPanel, ContinuitySealPanel, VerificationPanel, BankArcForm, ConfirmBankButton), all using the shared PanelHeader convention
products/alloy/app/bank/page.tsx — rebuilt to consume one BankSnapshot, height-bounded 3-column + rail layout matching Quench/Temper's convention, Workpiece-title page header instead of raw Arc UUID
products/alloy/tests/e2e/bank-phase-contract.spec.ts — 5 real browser e2e tests, 4 passing + 1 known-failing (documented in-file)
products/alloy/components/BankArcForm.tsx — retired (superseded by the same-named function inside BankPanels.tsx)