Build Log · September 6, 2026
Closing the Owner Loop's Isolation Gap
Traced a real production incident (a consequential Owner Loop candidate leaking onto master unreviewed) to its exact root cause, fixed and proved it live, then processed a full backlog of real MedinaCHF coordinator requests through the repaired pipeline.
- MedinaCHF
- Alloy
- Owner Loop
- Production Incident
- Bug Fix
- real MedinaCHF owner requests shipped
- 5
- root-cause bugs found and fixed
- 3
- production deploys
- 9
- notification system built + proven live
- 1
real MedinaCHF owner requests shipped
root-cause bugs found and fixed
production deploys
notification system built + proven live
Timeline
Start
MedinaCHF welcome-email edits finished, deploy blocked
Deploy Gate stale-evidence error traced to a genuinely missing npm workspace entry for products/medinaCHF
+1h
Poll-authority question resolved by tracing real code
Confirmed coordinator override was intentional, not a gap
+2h
Canvas app read-only access fixed end to end
3 of 4 canvas apps had no working DB role at all; wired all 4 into Railway, verified live
+3h
First Owner Loop acceptance-boundary bug found
d578d2e1 landed on master unreviewed despite its own record saying awaiting_human_acceptance
+4h
Root cause found and fixed: isolated-worktree commit
Proven with a real scratch-repo reproduction before shipping
+5h
business_policy_semantics narrowed after 2 real false positives
Zeb confirmed neither of two blocked requests actually needed his review
+6h
Fix proven live in production
The next real candidate (421fcf85) stayed correctly isolated — confirmed via git ls-remote
+7h
Zeb's notification email built, wired, and delivery-confirmed
Then found silently broken by a dotenvx stdout-banner leak into the GitHub secret itself
+8h
Briefing page fixed: dead cache, missing button, C-suite voice
Rewrote the synthesis prompt after Zeb called the bullets meaningless
End
5 real coordinator UI/copy requests shipped and deployed
Collapsible Recent Requests, email preview collapse, button rename — all verified against the real send path
What shipped
Fixed products/medinaCHF missing from the root npm workspaces array — deploy:medinachf was silently broken
Provisioned working read-only DB credentials for all 4 canvas apps (only 1 of 4 previously worked) and wired them into Alloy's Railway environment
Root-caused and fixed the Owner Loop acceptance-boundary isolation bug: commitPendingAcceptanceRecord() now commits via an isolated git worktree, never the runner's own HEAD
Built check-pending-acceptance-isolation.mjs — a mechanical sweep that would have caught the incident directly; found 2 more pre-existing leaked candidates on canvas-2
Built and delivery-confirmed a real email notification (sendZebEscalationEmail via a new shared lib/send-zeb-email.mjs) that fires the moment a candidate is parked awaiting acceptance — then found and fixed the actual reason it failed once in production (a dotenvx banner line corrupting the GitHub secret at creation time)
Narrowed business_policy_semantics's definition in the Charge template after 2 real requests were blocked for no real reason — added a concrete reversal-cost test
Fixed the Alloy Briefing page: it was bypassing its own cache-first design (2 real OpenAI calls per page load) and had a fully-built but never-rendered Refresh button
Rewrote the Briefing synthesis prompt's voice and added namedDevelopmentSummaries so bullets are human sentences, not raw internal claim strings
Shipped 5 real MedinaCHF coordinator UI requests: Idea Bank rename + publish flow, 7-day event-planning-credit rule, unified Ideas/Polls/Community leadership page, collapsible Recent Requests + email preview, member-detail button rename