Build Log
Alloy Milestone 4, Tickets 1-4 — One History
July 22, 2026
Alloy gained source-aware Arc, Product-work, and recorded-next-item history without pretending historical JSON and live Neon records share identity or ownership.
Timeline
What shipped
products/alloy/lib/history/ — shared source-aware Arc-history projection with live and historical adapters
products/alloy/lib/history/actions.ts and products/alloy/lib/db/schema.ts — explicit owner-scoped historical Product association ledger
products/alloy/lib/work-history/ — discriminated Product work-history projection
products/alloy/lib/recorded-next-items/ — live and historical recorded-next-item projection
products/alloy/tests/e2e/milestone4-ticket1-history.spec.ts — authenticated Ticket 1 acceptance
products/alloy/tests/e2e/milestone4-ticket2-product-association.spec.ts — two-owner association acceptance
products/alloy/tests/e2e/milestone4-ticket3-work-history.spec.ts — Product work-history acceptance
products/alloy/tests/e2e/milestone4-ticket4-recorded-next-items.spec.ts — recorded-next-item isolation and degraded-state acceptance
products/alloy/docs/milestone-4-one-history.md and Ticket 1-4 browser-acceptance records
“One history is a read contract, not one database.”