Build Log
Day History: two-round Crucible, research-grounded redesign, calendar shipped
July 2, 2026
Ran Guide 3's day-history design through a two-round, four-persona Crucible in a new batched format, let the Council reject the original day_ratings design, redesigned it around Known's existing handoff_note mechanism and the research corpus instead of founder foresight, then built and shipped the calendar + day-detail drill-down with zero new tables.
Timeline
What shipped
Ran a two-round Crucible (all four design-tier personas: architect, qe, steward, customer) on Guide 3's day-history design using a new single-batched-prompt format instead of the interactive per-persona script
Round 1 Council rejected the original day_ratings (good/rough/mixed) design as unvalidated and ethically risky (informal decline signal)
Redesigned day history around Known's existing entryType='handoff_note' mechanism and research-corpus grounding (All About Me's handoff question + Journal precedent) instead of a new table
Round 2 Council approved the redesign with two concrete engineering requirements: handle N same-day entries, group by local calendar day not raw timestamp
Extracted lib/date.ts (localDateStr) — previously duplicated inline in app/api/portraits/[id]/route.ts, now shared so day-history grouping matches card_snapshots' existing day-boundary rule exactly
Built app/portraits/[id]/history/page.tsx — month-grid calendar, presence-only (no rating/color/score), lit if a day has a handoff_note entry or a card_snapshots row
Built app/portraits/[id]/history/[id]/page.tsx (day-detail) — lists all of a day's handoff notes (any count) plus that day's Known Card snapshot if one exists, using the real KnownCard.tsx section labels (corrected a wrong guess before shipping)
Added a 'Day history →' nav link on the portrait page, preserving the existing 'last 7 days' label rather than replacing it
tsc --noEmit clean; live smoke-tested in the running app via Zeb's authenticated session (Clerk auth wall blocks Bash-driven verification, as expected)
Saved a new persistent memory (feedback_crucible_format.md) locking in the four-persona batched-prompt-plus-synthesis format as the default for all future Crucible runs
“We iterate on this feature until it is worthy to build based on the brain and research not waiting for a single user.”