Build Log · July 23, 2026

Alloy Milestone 4, Tickets 5-7 — Signals, Evidence, and Milestone Close

Signals and Evidence became source-aware, five services' duplicated invariants were consolidated into one shared primitive, and Milestone 4 (One History) closed with a clean full-suite acceptance run.

  • Alloy
  • History
  • Signals
  • Evidence
  • Invariants
  • Milestone Close
tickets accepted (5, 6, 7)
3

tickets accepted (5, 6, 7)

feature/docs commits
4

feature/docs commits

unit tests passing at close
83

unit tests passing at close

authenticated Playwright tests passing at close
14

authenticated Playwright tests passing at close

Timeline

  1. Ticket 5 review

    Pre-implementation Crucible council

    Architecture/QE/Steward review found the historical Signal read path was broken — reading a top-level spins field that misses spins in 111 of 178 real sessions.

  2. Ticket 5 build

    Signals and Evidence, source-aware

    Two fully separate projection services; Evidence's live section stays honestly empty by design.

  3. Ticket 5 crucible:post

    Post-build audit and correction

    Added a reuse{} scope-boundary drift test and a spin-placeholder drift warning; both verified live against the real corpus.

  4. Ticket 6 review

    Design-tier Crucible council

    Architect/QE/Steward: extract identity-collision + ordering as pipeline invariants, backfill degraded-state where it's a real gap, test capability correspondence — do not abstract capability vocabulary.

  5. Ticket 6 build

    Cross-service invariant consolidation

    Shared identity guard wired into 8 sites across 5 services; degraded-state backfilled onto Ticket 1 only after a real conflict with Ticket 3's locked design was found and resolved with Zeb.

  6. Ticket 7

    Preserved milestone acceptance run

    83 unit tests, 14 authenticated two-owner Playwright tests, clean build, in one final pass. Milestone 4 complete.

What shipped

  • products/alloy/lib/signals/ — source-aware Signal projection (live issue-flagged events + historical spins, corrected to read chapters[].spins[])

  • products/alloy/lib/evidence/ — source-aware Evidence projection (historical reuse{}/patterns[] only; live section is a fixed honest empty state)

  • products/alloy/lib/history-shared/ — temporal.ts, product-association.ts, identity-guard.ts, plus invariants.test.ts and capability-correspondence.test.ts

  • products/alloy/lib/deferred-prevention.ts — split out of the deleted legacy lib/signals.ts

  • Backfilled SourceStatus/isDegraded onto lib/history/ (Ticket 1) for parity with Tickets 4/5A/5B

  • Corrected fabricated grading language on SignalSummaryPanel and EvidenceHealthPanel

  • products/alloy/tests/e2e/milestone4-ticket5a-signals.spec.ts and milestone4-ticket5b-evidence.spec.ts

  • products/alloy/docs/milestone-4-ticket-5/6/7-browser-acceptance.md and updated milestone-4-one-history.md, operating-baseline.md

“A Council recommendation is a hypothesis about the codebase, not a verified fact.”
— Milestone 4 Ticket 6 close