M MemberIntel KB
Activity Decisions

standup

Standup — 2026-07-11

Two major safety features shipped back-to-back this morning.

▶ Watch the 41s summary — Daily standup — Standup 2026-07-11

Daily standup for 2026-07-11. What shipped:

Two major safety features shipped back-to-back this morning. The cost-control circuit breaker (#381) landed first: a global daily LLM-spend ceiling enforced fail-closed at the call.py chokepoint, with an instant kill-switch and a Postgres cost_breaker table accumulating micro-dollar estimates per UTC day. On top of that, #384 ships the admin Cost controls panel (spend gauge, read-only ceiling display, confirm-gated kill-switch toggle), and #386 ships GET /api/v1/status plus an in-app degraded banner — when the breaker trips, members see an honest “temporarily unavailable” message instead of silent 503s.

Omar landed two admin redesign slices. Escalations (#364) gets a sortable list, conversation thread with the flagged turn highlighted, and business-profile chips on detail. Entry Performance (#368) moves onto mi-* with all 11 columns now sortable; the shared Modal shell got a dark-mode fix it was missing. Audit log (#375) replaces the stub — filterable by action, actor, target, and date range, with a row-detail modal and a server-side label/kind map for all 15 audit action types.

Two chat feature PRs also merged. Chat now supports preferences and memory via update_preferences / manage_memory tools (#358), retiring the generic update_customer_brain; site knowledge is no longer chat-writable. The multi-round tool loop (#359) raises the cap to 5 dispatch rounds with a cumulative-input ceiling, a terminal forced-answer round, and per-turn chat.tool_rounds telemetry.

Other work: business profile per connected site (#373) moves the profile UI onto each site card and fixes the multi-site silent-drop bug in onboarding. Blog posts now get persona-driven CTAs (#376) with backfilled tags (#379) and internal cross-links (#378). The marketing site now auto-deploys on merge (#366), closing a gap where blog content sat undeployed for hours. Nightly Terraform drift detection (#367) caught a real config drift — STRIPE_ADDL_SITE_PRICE_ID was an out-of-band env var that a plain terraform apply would have stripped from the live service.

On the KB side, today’s standup video pipeline had a rough morning: a single GitHub API 502 cascaded into a full standup day lost (#85 adds retry), a CI render completed for the first time but failed at R2 upload on a token scope issue (#87 backfills), and the completed video shipped with dark navy/cyan colors instead of the branded light/orange theme — traced to a stale OpenMontage pin that was silently ignoring themeConfig (#89 re-pins to a fork branch; #90 re-renders). Email thumbnails (#88) switched from base64-inlined images to direct pages.dev URLs after Gmail broke the base64 path on first send (#91).

Notable. The Terraform drift job caught something real on its first run: STRIPE_ADDL_SITE_PRICE_ID had been added out-of-band and wasn’t in the state file. Without the drift check, the next terraform apply would have silently removed it from the live service.


Window: 2026-07-10T13:00

→ 2026-07-11T13:34
.394Z · Sources: memberintel @ c4bfc8b, memberpress-intel @ 78799d2

For: S Seth Shoultes