Build Log
Identity Attribution, Announcements Rebuild, and Leadership Dashboard Reorg
August 13, 2026
Shipped person-level identity attribution across the whole member app, rebuilt Announcements end-to-end, reorganized the entire coordinator dashboard around real workflows, then closed the gaps a self-audit found — all live in production.
Timeline
What shipped
Fixed a real production bug: Server Actions default 1MB body-size cap was rejecting phone-camera photo uploads (Courtney's Samsung S23 report) — raised to 5MB to match the app's own file-size validation
Fixed a real production 500 on /member/community — two components had real onClick handlers but were missing 'use client'
Shipped a Council-reviewed identity-attribution model: FK-backed adultId + point-in-time name-snapshot columns across rsvps, communityPosts, communityComments, pollVotes, standalonePollVotes, standalonePolls, planningOpportunities, planningClaims, ideaInterest, and eventPlanners — every member action now attributes to the acting person, not just their household
Fixed a real data-integrity bug found while building the identity model: one production family had two adults both marked isPrimary — repaired live before adding the uniqueness constraint that would have made it unfixable via the UI
Rebuilt Announcements top to bottom: simplified urgency terminology with real behavior explanations, event linking, a real admin detail view (Edit/Archive/Delete/View as Member/View Acknowledgements), acknowledgement progress tracking, edit-after-acknowledgement warning
Reorganized the entire Leadership (coordinator) dashboard around three real workflows: new Current Members directory, new Group Insights page (age bands + location analytics), Membership Progress clarity, Saved Responses (renamed from Answer Library) with simplified language, Website Inquiries renamed with clarified status labels, Guide rewritten from a 9-section screenshot manual to 5 short workflow sections
Self-audited both client briefs against the actual shipped code (not the commit messages) and found + closed 4 real gaps: Home's acknowledgement banner was scoped to Urgent-class only, the Our Year Together/Events & Planners overlap was never evaluated, Events & Planners had no missing-planner/missing-details flags, and Application status labels still leaked raw backend enum values in the review-history trail
Redesigned the coordinator nav a second time after seeing it live — the first grouped version technically had the right structure but still read as a flat wrapping list; rebuilt as a real two-tier tab bar (5 workflow tabs, then that tab's own items), and fixed a stale 'Coordinator' label in a completely separate component (SiteHeader) that the earlier brand rename had missed
Fixed a real OS-level bug in forgekit-os/scripts/crucible.mjs: GPT-5.2/5.3-chat-latest were both deprecated (3rd recurrence of this exact class of failure), and the GPT-5.6 replacement model defaults to real internal reasoning that silently consumes the entire token budget with zero visible output unless reasoning_effort is explicitly set to 'none' — found by running a real Council review, not discovered abstractly