Daily

A headline digest of what changed across the portfolio, by day.

Deep dives

In-depth applied tutorials, grouped by theme.

5 commits

Riff Hardens Codex Supervisor Join and Fixes Multi-DID Routing

This update merges the Codex supervisor join logic and splits node environments for better isolation. It also resolves critical post-rollout defects, fixes multi-DID routing via the line registry, and regenerates stale audio clips.

riff 5
▸ how to apply & commit details

How you can apply this

  • Implement environment splitting for node services to isolate configurations and improve deployment safety.
  • Use a central line registry to resolve multi-DID routes, ensuring consistent production entry point mapping.
  • Automate regeneration of dependent assets, such as audio clips, when upstream content definitions are refreshed.

Commits

riff
  • Merge pull request #26 from davidbmar/phase1-node-env-split
  • fix(audio): regenerate stale space_channel_widgets clips after PR #25 content refresh
  • fix(ops): close codex verification defects #1-#4 (post-rollout hardening)
  • Merge pull request #25 from davidbmar/codex/supervisor-join-p0-p2
  • fix(importer): resolve multi-DID routes via the line registry's prod entry
96 commits

Real-Time Voice Agent: Barge-In, Streaming TTS, and Telemetry

Implemented a low-latency voice loop featuring Kokoro TTS with barge-in interruption, SSE streaming, and per-turn telemetry. Added dynamic pipeline configuration to switch STT, LLM, and TTS providers live while tracking cost and latency metrics.

2026-nano-claw-voice-loop-tts-stt 65github-portfolio-search 1riff 30
▸ how to apply & commit details

How you can apply this

  • Implement barge-in by detecting speech onset during playback, pausing the audio queue, and using exponential backoff to resume listening only after confirming user intent.
  • Stream TTS output by chunking text at sentence boundaries and consuming Server-Sent Events (SSE) to speak audio fragments immediately as they arrive from the LLM.
  • Track voice agent performance by recording time-to-first-token and processing milliseconds per turn into a local SQLite database for accurate latency and cost analysis.
  • Enable live pipeline switching by exposing an API that validates model availability and injects provider-specific keys, allowing dynamic selection of STT, LLM, and TTS engines without restarts.

Commits

2026-nano-claw-voice-loop-tts-stt
  • fix(voice): apply saved voice/model/STT settings that arrive before the session
  • fix(run): forward optional provider keys + feature flags into the container
  • Merge: telemetry metrics DB (per-turn latency + cost)
  • fix(metrics): accurate TTFT/TTS/e2e timing, dedup transcript, cover non-stream + tool turns
  • chore: persist metrics.db volume; document telemetry
  • feat(metrics): GET /api/metrics aggregates + live TTFT in the Debug panel
  • feat(voice): time each stage and write one telemetry row per turn
  • feat(stt): return processing_ms in the transcribe response
  • feat(api): report LLM time-to-first-token (firstTokenMs) in debug
  • feat(metrics): SQLite telemetry module (turns + prices, best-effort)
  • Add plan: telemetry metrics DB
  • Add design doc: telemetry metrics DB
  • fix(models): use stable Gemini -latest aliases (flash-lite + flash)
  • Merge: pipeline settings — switch STT / LLM / TTS live
  • fix(api): strip only known provider prefixes; reject unavailable model override; guard stt test
  • docs: pipeline settings (switch STT/LLM/TTS) + multi-provider streaming
  • feat(web): ⚙ Pipeline panel — switch STT size, LLM model, and TTS voice
  • feat(voice): /api/models proxy; set_model/set_stt; thread model + Whisper size
  • feat(stt): per-size Whisper model cache selected by X-Model-Size header
  • feat(config): inject dashscope/moonshot/zhipu/minimax keys; fix Gemini OpenAI base URL
  • feat(api): per-request model override on /api/chat (validated against catalog)
  • feat(api): model catalog + GET /api/models with per-provider availability
  • feat(api): OpenAI-compatible streaming + strip provider/ model prefix
  • Add plan: pipeline settings (switch STT / LLM / TTS)
  • Add design doc: pipeline settings (switch STT / LLM / TTS)
  • chore(deps): bump vitest to ^3.2.6 to fix critical Dependabot alert
  • feat(voice): voice-assistant system prompt (Whisper input, spoken output)
  • Merge: Kokoro TTS voice selection + streaming replies + barge-in
  • fix(voice): clear queue on new reply; reset paused on stop; cap backoff growth
  • docs: barge-in (NANO_CLAW_BARGE_IN) usage + changelog
  • feat(web): wire barge-in — detect during playback, commit captures the turn
  • feat(web): BargeInDetector — pause on onset, confirm speech vs false alarm
  • fix(voice): one active agent task at a time; cancel in-flight task on disconnect
  • fix(voice): run agent handler as spawned task so barge-in can interrupt live playback
  • feat(voice): barge-in server — flag, hello_ack, pause/commit/resume+backoff
  • feat(voice): session pause/resume/cancel + pause-aware drain for barge-in
  • feat(voice): Backoff — full-jitter exponential backoff for barge-in resume
  • Add Phase 2 plan: barge-in (feature-flagged)
  • Add NANO_CLAW_BARGE_IN feature flag to barge-in design
  • fix(voice): stream tool-continuation replies; flush chunker on tool interrupt; strip list numbers
  • fix(web): reset streaming bubble on turn end so replies don't leak across turns
  • feat(web): stream reply text into the chat log; docs for streaming
  • fix(voice): clean up audio state on mid-stream SSE error; use ws.closed guard
  • feat(voice): consume SSE from nano-claw, speak chunks as they stream
  • fix(voice): require whitespace after sentence punctuation so streamed decimals aren't split
  • feat(voice): TextChunker — eager first chunk, sentence chunks after
  • fix(api): fail loud on corrupt config; idempotent lazy init; no CLI-wide init leak
  • feat(api): stepLoopStream + SSE on /api/chat when Accept: text/event-stream
  • fix(api): UTF-8-safe SSE decoding, ProviderError parity, multi-chunk test
  • feat(api): Anthropic native streaming (parseAnthropicEvents + completeStream)
  • fix(api): completeStream routes identically to complete() (gateway/fallback parity)
  • feat(api): StreamEvent + completeStream fallback and routing
  • Add Phase 1 plan: streaming voice replies
  • Add design doc: streaming voice replies + barge-in
  • feat: auto-start Kokoro TTS service in run.sh; document voices
  • feat(web): voice picker with grades, preview, and speed slider
  • feat(voice): /api/voices, /api/preview, set_voice WS wiring
  • fix(tts): fall back to Piper on malformed Kokoro response; add router coverage
  • feat(tts): engine router — Kokoro dispatch with Piper fallback
  • feat(tts): combined voice catalog + Kokoro HTTP client (Docker side)
  • fix(tts): offload Kokoro synthesis to threadpool so /health stays responsive
  • feat(tts): native Kokoro-82M service (EN+ES) on port 8300
  • Pre-flight plan fixes: JS test runner + gitignore .venv-test
  • Add implementation plan: Kokoro TTS with voice selection
  • Add design doc: Kokoro-82M TTS with voice selection
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • Merge remote-tracking branch 'origin/main' into codex/supervisor-join-p0-p2
  • Merge remote-tracking branch 'origin/main' into codex/supervisor-join-p0-p2
  • Merge pull request #24 from davidbmar/phase1-node-env-split
  • config(routing): _routing.yaml FLOW-101 -> space_channel_widgets (dev twin, full parity restored)
  • config(registry): FLOW-101 is now the Space Channel dev twin (LIVE 2026-07-15)
  • Merge pull request #23 from davidbmar/phase1-node-env-split
  • feat(audio): space_channel_widgets joins the release-blocking coverage gate (C2C-010 #1)
  • feat(phone): per-environment parity projections (FLOW-101 §5.8, C2C-010 #3)
  • feat(phone): dev/prod data-isolation seams + prod-sentinel test (FLOW-101 §5.5, C2C-011 Q1)
  • feat(phone): (connection_id, DID) pair admission gate (FLOW-101 §5.6, C2C-011 Q2)
  • fix(ops): one shared fail-closed node-mode parser — supervisor split-brain (C2C-010 #4b)
  • docs(mailbox): add FLOW-101 delta review
  • docs(design): FLOW-101 dev twin v3 — fold in C2C-011 binding criteria
  • feat(skills): codex-mailbox — Claude↔Codex mailbox + CLI collaboration recipe
  • docs(design): FLOW-101 dev twin v2 — fold in Codex C2C-010 blockers 1-5
  • docs(mailbox): FX-190 verification reply + FLOW-101 dev-twin review exchange (CL2C-010/C2C-010)
  • docs(design): Space Channel dev twin on FLOW-101 (parallel dev, prod untouched)
  • fix(phone-node): let .env override RIFF_WEB_HOST for the web server
  • fix(space): importer carries the no-code-gate ruling + content refresh (FX-192 follow-up)
  • fix(tts): honor RIFF_PIPER_PYTHON in tts_server worker spawn
  • fix(intake): remove space-channel code gate + stamp locked-choice decisions (FX-191, FX-192)
  • chore(space): joke-of-the-day copy swap — regenerated WAVs + word timings
  • feat(phone): Phase 1 registry loader + parity-check gate (inert, pre-cutover)
  • Merge pull request #22 from davidbmar/live-receptionist-console
  • test(phone): make node-serving tests hermetic (Phase 0 fail-closed follow-up)
  • feat(phone): Phase 0 close-out — durable-state migration-order + answered-event dedup
  • feat(phone): Phase 0 — role-aware supervision (M1->customer-bot, M3->riff-phone)
  • feat(phone): Phase 0 node hardening — role/mode fail-closed, admission gate, answer idempotency
  • docs(routing): dev/prod node-environment design + phone-line registry
  • fix(phone): gate supervisor talk on Telnyx marks (FX-190)
14 commits

Hands-Free Phone Mode with AI Supervisor and PTT Controls

Implemented a hands-free phone conversation mode featuring browser-based supervisor listening and Push-to-Talk gestures. The update integrates Kokoro Bella for voice turns, routes logic through Whisper and Qwen, and stabilizes operator login and webhook readiness.

2026-nano-claw-voice-loop-tts-stt 1github-portfolio-search 1riff 12
▸ how to apply & commit details

How you can apply this

  • Implement hands-free voice loops by chaining STT (Whisper) and TTS (Kokoro Bella) with an LLM (Qwen) for real-time conversational routing.
  • Add browser-based Push-to-Talk (PTT) and supervisor listen modes to enable human-in-the-loop monitoring and gesture-controlled interaction.
  • Enforce webhook preflight checks and state restoration logic to prevent stalls during operator toggles and ensure reliable outbound probes.

Commits

2026-nano-claw-voice-loop-tts-stt
  • Add hands-free phone conversation mode
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • docs(fixlog): record FX-189 live proof
  • fix(console): add operator login bootstrap (FX-189)
  • fix(console): restore AI after toggled operator talk (FX-188)
  • fix(console): protect Chrome PTT hold gesture (FX-187)
  • feat(phone): add browser supervisor listen and PTT (FX-186)
  • docs(fixlog): record FX-185 candidate readiness
  • fix(phone): commit LAW Qwen facts before stall (FX-185)
  • docs(fixlog): record Bella candidate warmup (FX-184)
  • feat(phone): use Kokoro Bella for LAW turns (FX-184)
  • fix(phone): repair LAW L5 routing and outbound probe (FX-182, FX-183)
  • feat(phone): route law turns through Whisper and Qwen (FX-181)
  • fix(phone): enforce webhook preflight and readiness (FX-180)
65 commits

Build Reuse Gates and Live Receptionist Console with Test-First Auth

Implemented a reuse-aware building system that intercepts development intent to check existing assets before coding, alongside a live receptionist console featuring real-time lead scoring and robust operator authentication. The work emphasizes test-first development for critical paths like session management, call state aggregation, and canary routing.

github-portfolio-search 15prioity_foregrounds_kanban 2riff 48
▸ how to apply & commit details

How you can apply this

  • Implement a 'build-intent' hook that triggers a reuse check against a ledger of existing components, preventing redundant work by surfacing provenance before coding begins.
  • Use an atomic register-and-snapshot handshake pattern for managing live console sessions, ensuring consistent state across WebSocket reconnections and multi-call scenarios.
  • Apply test-first development to authentication flows by defining operator token specs and session stores before implementation, ensuring hashed-at-rest security and additive session logic.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • Merge branch 'feat/reuse-token-cuts'
  • perf(reuse): --tools reuse filter + compact results by default
  • Merge branch 'feat/reuse-ask-gate'
  • feat(reuse): ask-gate trigger — design doc written -> ask before searching
  • Merge branch 'feat/reuse-aware-building'
  • fix(reuse): calibrate min_score to the store L2 scale (0.5 -> 0.05)
  • docs(backlog): B-022 pre-existing narrate re-render-on-second-run failure
  • feat(reuse): surface reuse tools + constellation in llms.txt
  • feat(reuse): build-intent hook nudges the reuse check
  • feat(reuse): reuse-check skill + CLAUDE.md scan-before-build rule
  • feat(mcp): expose portfolio_reuse_check + portfolio_record_reuse
  • feat(reuse): reuse_check retrieval + provenance merge
  • feat(reuse): reuse ledger writer + building-input resolver
  • plan: reuse-aware building — implementation plan (6 tasks, TDD)
prioity_foregrounds_kanban
  • Add editable effort, color-coded overrides, user presets, and UI refinements
  • Add meeting-mode features, 3D constellation, and Compound return principle
riff
  • feat(console): compare streaming Whisper and Gemini (FX-179)
  • feat(console): compare streaming Whisper and Gemini (FX-179)
  • Merge remote-tracking branch 'origin/live-receptionist-console'
  • feat(auth): operator login endpoint + additive session auth (B-3)
  • test(auth): operator login endpoint + additive session auth (B-3, test-first)
  • feat(auth): OperatorAuth — per-operator tokens + sessions, hashed at rest (B-3 core)
  • test(auth): operator token + session store (B-3, test-first)
  • fix(console): stamp conv_id on transcript/playback/barge frames (B-1 multi-call)
  • test(console): multi-call transcript isolation (B-1, test-first)
  • test(console): simulated-call acceptance harness (hot-lead, existing, menu barge-in, reconnect)
  • feat(ops): console-deploy.sh — M1/M3 deployment menu + canary routing config
  • feat(routing): flag-gated caller-canary node acceptance (my-number->M3)
  • test(routing): caller-canary node acceptance gate (test-first)
  • Merge branch 'live-receptionist-console'
  • feat(console): WS reconnect + visible stale state (review B-2)
  • Merge branch 'live-receptionist-console'
  • docs(console): hot-lead banner + clean-UI evidence screenshots
  • feat(console): hot-lead banner — surface the 'act now' signal in the UI (J-3)
  • feat(console): compute hot-lead signal on each state, carry it in the frame (J-3)
  • test(console): lead signal rides the state frame (J-3 wiring, test-first)
  • fix(console): secure live receptionist UI (FX-177)
  • feat(console): hot-lead scorer — new+injured+unrepresented signal (J-3)
  • test(console): hot-lead scorer spec (review J-3, test-first)
  • Merge branch 'live-receptionist-console'
  • Merge remote-tracking branch 'origin/main' into live-receptionist-console
  • feat(console): call-back API + button — server-resolved phone, fail-closed
  • test(console): callback endpoint spec — server-resolved phone, fail-closed (test-first)
  • docs(console): MVP review (Bezos + Jobs) + working-console evidence
  • fix(console): serve /receptionist.js + allow-list console web files
  • feat(console): wire live receptionist UI (FX-175)
  • test(console): server endpoints spec — fail-closed auth + active-call list (test-first)
  • feat(console): observer console-sink hook — feed live events into ConsoleHub
  • test(console): observer console-sink hook spec (additive, test-first)
  • feat(console): ConsoleHub — per-call adapter registry + active-call list
  • test(console): ConsoleHub spec — per-call adapter registry + active-call list (test-first)
  • feat(console): ConsolePhoneAdapter — phone broadcast events -> console turns
  • test(console): ConsolePhoneAdapter spec — phone events -> console turns (test-first)
  • feat(console): ConsoleSession — atomic register+snapshot handshake (§2.2)
  • test(console): ConsoleSession spec — atomic register+snapshot handshake (§2.2, test-first)
  • feat(console): P3 CallbackStore — SQLite queue w/ ownership, audit, TTL
  • test(console): CallbackStore spec — ownership/audit/TTL/allowlist (P3, test-first)
  • feat(console): P0 ConsoleCallState — frame identity, turn aggregation, snapshot
  • test(console): ConsoleCallState spec — seq/turn-aggregation/snapshot (P0, test-first)
  • feat(console): P0 BoundedFanout — non-blocking console fan-out (N-4)
  • Make Phone L5 honor styled static audio (#21)
  • Make Space Channel link-only and seal static playback (#20)
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • chore: publish Space Channel and debugger artifacts (FX-169)
42 commits

Reuse Ledgers, 3D Repo Maps, and Deterministic Voice Debugging

This update introduces a reuse-aware architecture with MCP integration and a 3D portfolio constellation, alongside major UI refinements for kanban workbenches. It also hardens voice agent reliability through deterministic STT fallbacks, counterfactual debugging simulations, and precise audio causality tracking.

github-portfolio-search 5prioity_foregrounds_kanban 6riff 31
▸ how to apply & commit details

How you can apply this

  • Implement a 'reuse ledger' and MCP reuse-check to track component provenance and enforce reuse-aware building practices across repositories.
  • Visualize repository similarity graphs as interactive 3D star-maps to help developers navigate and discover related projects within a portfolio.
  • Apply deterministic choice-STT patterns using Whisper as primary and Gemini as backstop, with configurable timeouts to prevent silence-trim errors in voice flows.
  • Use counterfactual 'what-if' transition simulations and append-only mailbox protocols to debug agent state changes without affecting live production buses.

Commits

github-portfolio-search
  • ADR-0001: reuse-aware building — MCP reuse-check + reuse ledger
  • Merge pull request #8 from davidbmar/feat/blog-ratchet-loop
  • Merge remote-tracking branch 'origin/main' into feat/blog-ratchet-loop
  • Add Portfolio Constellation — 3D star-map of the repo similarity graph
  • chore: regenerate L0 docs + daily digest [skip ci]
prioity_foregrounds_kanban
  • Redesign layout as 3-panel workbench filling the viewport
  • Fix cache headers and clean up AI Infrastructure Leverage label remnants
  • Reframe AI Infra Leverage as AI Compounding — the autonomy ratchet
  • Add score breakdown and security severity badge to initiative detail panel
  • Refine security scoring to CRITICAL/HIGH/MEDIUM/LOW framework
  • Add 3-theme UI, 6 principles on 0-100 scale, and 24 SRE initiatives
riff
  • docs(debugger): hand off reviewed AC-03 capture
  • feat(phone): retain Telnyx outbound playback truth (FX-168)
  • feat(browser): retain generated playback acknowledgements (FX-167)
  • docs(debugger): hand off reviewed AC-02 capture
  • fix(debugger): isolate AC-02 tracker failures (FX-166)
  • feat(debugger): retain provider output attempts (FX-166)
  • docs(debugger): record AC-01 correction review
  • fix(debugger): preserve bounded input causality (FX-165)
  • feat(debugger): AC-01 flag-gated model-request capture in live session
  • docs(agents): ratify append-only mailbox protocol
  • docs(debugger): hand AC-01 capture packet to Claude
  • feat(debugger): freeze generated audio evidence schema (FX-164)
  • docs(debugger): approve audio causality implementation plan
  • fix(docs): keep mobile TOC off document content (FX-163)
  • fix(FX): menu compiler auto-derives content-word aliases from option labels
  • feat(choice-stt): per-flow decision-mode override for independent rollback
  • feat(choice-stt): whisper-PRIMARY decision mode (Gemini as backstop)
  • feat(choice-stt): configurable Whisper timeout for a larger, more accurate model
  • fix(FX): stop the choice-STT silence-trim from collapsing a quiet caller to a sliver
  • fix(FX): feed the whisper choice-STT rescue on the PHONE path, not just the browser
  • feat(debugger): expose exact exits and slot history (FX-162)
  • fix(FX): deterministic confirm on the LIVE path — a plain yes no longer deadlocks a gate
  • fix(debugger): isolate what-if guard telemetry from the real bus (Codex review)
  • docs(debugger): codex coordination message + improvement backlog
  • feat(debugger): what-if transition simulation (counterfactual step)
  • feat(debugger): scripts/dbg.py — ergonomic driver + improvement backlog
  • fix(FX-161): timeline scored a played goodbye as dead air (audio.wav missed the tail)
  • fix(FX-160): state-aware silence — stop flagging the caller's turn as dead air
  • fix(FX-158): backfill menu_retry word_timings (companion karaoke)
  • fix(FX-159): scope menu_retry to a per-flow opt-in (deterministic_retry)
  • fix(FX-158): commit menu_retry prerendered audio + CI gate for static coverage
83 commits

Deterministic Turn Engine, Data Service Migration, and Audio Debugger

Implemented a deterministic-first turn engine with static fallbacks to eliminate dead air, while executing a multi-step data service migration using the strangler fig pattern. Enhanced developer tooling with a timeline debugger that tags audio silence and exports immutable state capsules for precise replay.

github-portfolio-search 1prioity_foregrounds_kanban 1riff 81
▸ how to apply & commit details

How you can apply this

  • Implement a 'deterministic-first' voice flow compiler that routes no-match events to static menu retries instead of live models to prevent latency-induced dead air.
  • Execute database migrations using a flag-gated strangler pattern: start with dual-writes, proceed to idempotent backfills, and finish with read cut-overs to ensure zero-downtime consistency.
  • Build audio debugging tools that detect true silence and tag it visually in the timeline, allowing developers to export immutable state capsules for exact defect reproduction.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
prioity_foregrounds_kanban
  • Initial standalone priority workbench
riff
  • fix(FX-157): shift-left the static-state dead air to policy + a forever-guard
  • fix(phone): stall recovery replays the static WAV instead of nudging the model
  • feat(debugger): detect true audio silence and tag it RED in the timeline
  • build(mfclaw): regenerate flow with menu_retry + menu turn_mode=deterministic
  • test(turn-engine): behavioral proof — no-match routes to menu_retry, no model injection
  • feat(turn-engine): flag-gated deterministic no-match routes to menu_retry (no live model)
  • feat(turn-engine): compiler emits menu_retry static re-ask + flag-gated no-match edge
  • feat(turn-engine): compiler tags menu hubs turn_mode=deterministic (phase 1, declarative)
  • design(turn-engine): deterministic-first per-state brain; live model as backup tier
  • build(mfclaw): regenerate flow with menu_retry + menu turn_mode=deterministic
  • test(turn-engine): behavioral proof — no-match routes to menu_retry, no model injection
  • feat(turn-engine): flag-gated deterministic no-match routes to menu_retry (no live model)
  • feat(turn-engine): compiler emits menu_retry static re-ask + flag-gated no-match edge
  • feat(FX-156): export immutable state debugger capsules
  • feat(turn-engine): compiler tags menu hubs turn_mode=deterministic (phase 1, declarative)
  • design(turn-engine): deterministic-first per-state brain; live model as backup tier
  • feat(FX-155): edit and rerun priority principles
  • docs(backlog): B-031 — menu no-match re-ask is dead air when the live model stays silent
  • fix(FX-154): rank priority principles on release
  • docs(FX-149): record physical slider proof
  • fix(FX-149): keep priority weights above zero
  • docs(FX-148): record linked-slider proof
  • feat(FX-148): link priority sliders to 100 points
  • docs(backlog): B-030 — caller 'yes' heard before consent prompt finished (mfclaw)
  • feat(debugger): tag dead-air pauses red in the timeline
  • fix(FX-147): serve priority workbench
  • feat(FX-147): add product priority workbench
  • feat(debug): post-processor that labels call pauses/delays (red = dead air)
  • docs(migration): 4-step data-service runbook + step-4 readiness gate
  • fix(data-service): isolate tests to a *_test DB + add step-4 parity gate
  • feat(migration): step 3 — flag-gated recognition read cut-over to the consolidated DB
  • feat(migration): step 2 — idempotent backfill of profiles + call history into the consolidated DB
  • feat(FX-146): preview state overview on hover
  • feat(FX-145): prototype human-readable state overviews
  • feat(migration): step 1 — flag-gated dual-write of calls to the consolidated DB
  • fix(FX-146): log benign companion telemetry at INFO, not WARNING
  • test: complete the barge-in fixture — set _static_playback_id (FX-126 added the read)
  • test: generalize FX-144's 'never-spoken dynamic inform' gate to all routed flows
  • fix(FX-145): surface enforce-mode webhook auth misconfig at boot, not as dead air
  • test: complete FX-144 rollout — base-menu loop-back done states advance on response_emitted
  • loop(iter 68): fix 3 regressions the concurrent FX-144 (response_emitted) rollout left behind
  • feat(data-service): companion links (space-channel 'text link' + SMS verify) (loop iter 10)
  • feat(riff): flag-gated data-service seam (loop iter 9, Plan 5b)
  • feat(data-service): DataServiceClient — the RIFF-side strangler seam (loop iter 8, Plan 5)
  • feat(data-service): space-channel content ingestion (loop iter 7, Plan 4)
  • chore(data-service): deployable container — Dockerfile ordering + self-migrate on startup (loop iter 6 deploy)
  • feat(data-service): Replicant scheduled pull + on-demand cache-aside (loop iter 6, Plan 3 complete)
  • fix(FX-144): wait for ticket status speech
  • feat(data-service): service-request submit/list endpoints — Replicant tool facade backing (loop iter 5, Plan 3)
  • feat(data-service): Replicant write-through outbox + anti-corruption adapter (loop iter 4, Plan 3 core)
  • feat(data-service): calls, recordings & S3 pointers (loop iter 3, Plan 2)
  • feat(data-service): DB-backed foundation — schema, auth, account writes, recognize, RLS (loop iter 2)
  • fix(FX-143): strengthen playhead state border
  • feat(data-service): foundation scaffold + pure recognition/wall (loop iter 1)
  • fix(FX-143): emphasize playhead state program
  • docs: add RIFF data service foundation plan
  • chore(FX-141 FX-142): checkpoint debugger and current workspace
  • docs(design): backend spec — space-channel content ingestion from external URLs
  • docs(design): backend spec — Replicant partner sync + compatibility facade + advanced entities
  • fix(FX-140): reject Whisper speech over silence
  • docs(FX-139): record deployed alignment evidence
  • docs(design): fold operator decisions into backend data-service spec
  • fix(FX-139): align transcript bars to the audio clock
  • fix(FX-138): stabilize followed state evidence
  • fix(FX-138): organize replay into rolling evidence lanes
  • docs(design): RIFF backend data service — schema, two-layer identity, API, S3 pointers
  • fix(FX-137): surface replayable pause tuning candidates
  • fix(FX-136): compare repeated state visits causally
  • fix(FX-135): rev replay debugger asset
  • fix(FX-135): center the exact replay event
  • fix(FX-135): keep active replay evidence visible
  • fix(FX-135): keep replay context visible
  • fix(FX-134): remove cleared slots from debugger folds
  • docs: reconcile debugger implementation status
  • fix(FX-135): persist and replay debugger defect points
  • fix(FX-134): retain state boundary variable truth
  • fix(FX-133): support replay audio byte ranges
  • fix(FX-132): align debugger transcript evidence
  • docs: define truth-oriented debugger replay contract
  • docs(codex): consolidated state-program-debugger fix plan (audio playback + capture gaps)
  • fix(FX-131): block unsafe phone webhook restarts
81 commits

Build a State Debugger for AI Voice Agents with Replay and Telemetry

This update introduces a comprehensive state debugger featuring browser-based replay, JSON CLI tools, and precise telemetry for diagnosing AI voice agent failures. It resolves critical audio alignment issues and establishes strict documentation standards for dual-sided call evidence to ensure reproducible debugging.

riff 81
▸ how to apply & commit details

How you can apply this

  • Implement a read-only state debugger service with a browser surface and JSON CLI to inspect agent transition metadata and visit frames without affecting live production data.
  • Align phone replay with the call clock and fail closed on unaligned audio to create deterministic, causal replay forks for accurate post-mortem analysis.
  • Persist agent-emit-delay evidence and stamp agent-first-audio at the source to attribute latency metrics correctly and identify performance bottlenecks in real-time turns.
  • Enforce dual-sided Telnyx replay evidence requirements in documentation to standardize how call captures are reviewed and shared across engineering teams.

Commits

riff
  • fix(FX-130): fail closed on unaligned call audio
  • fix(FX-128,FX-129): align phone replay with call clock
  • feat(FX-127): add debugger recent-call picker
  • feat(FX-126): replay recorded playback evidence
  • docs: close replay review requirements
  • docs: require dual-sided Telnyx replay evidence
  • docs: specify causal audio replay forks
  • docs: plan browser playback replay debugging
  • docs: plan unified call capture and replay
  • docs(codex): add debugger defect 6 — blind to within-state double-asks (agent-prompt events missing)
  • fix(telemetry): emit agent-first-audio at the stamp site + epoch-window attribution (FX-125b)
  • loop(iter 67): FX-125 — the rename guard banned a word, not a slot
  • loop(iter 66): FX-124 — the caller-scoping test was blocked by a deploy gate it predated
  • feat: render state debugger evidence frames
  • docs: note — pushed 75 unpushed commits to main + git add -A footguns (2026-07-10)
  • feat: serve recorded state debugger API
  • feat(telemetry): persist agent-emit-delay evidence for the state program debugger (FX-125)
  • loop(iter 65): FX-123 — two floor tests were stale after the code got better
  • feat: add recorded state debugger browser surface
  • fix(FX-123): allow debugger inspection of empty recordings
  • feat: add read-only debugger session service
  • loop(iter 64): FX-122 — saying "yes" to "is that still good?" wiped the caller's profile
  • loop(iter 62): FX-121 — every call attempted a history fetch to a host that does not exist
  • feat: add state debugger JSON CLI
  • feat: add recorded state debugger cursor
  • fix(FX-122): record seeded slot boundaries
  • feat: normalize state debugger visit frames
  • loop(iter 60): FX-120 — the second ticket operation in a call replayed the first
  • feat: expose debugger transition metadata
  • test: add state debugger boundary fixture
  • docs: make state debugger implementation executable
  • docs: define programmatic state debugging
  • loop(iter 59): FX-119 — a profile that never saved still said "Welcome to the Club"
  • docs: resolve state debugger review contract
  • loop(iter 58): FX-118 — a rejected maintenance ticket closed as if the office had it
  • loop(iter 57): FX-117 — thirteen flows promised to pass your message to the office
  • loop(iter 56): FX-116 — the four-tier cascade has one tier, and would not say so
  • loop(iter 55): FX-115 — the agent never asked the question the caller was waiting for
  • loop(iter 53): FX-114 — a tenant with no cooling hung up, and nobody was told
  • loop(iter 52): FX-113 — the latency metric I shipped yesterday dropped the slow turns
  • loop(iter 51): FX-112 — every live turn was logged as taking zero milliseconds
  • loop(iter 50): FX-111 — a readback nobody answers held the caller for ten minutes
  • loop(iter 49): FX-110 — a tool result is a channel, and now it has a choke point
  • loop(iter 48): FX-109 — the redaction existed, and one tool did not use it
  • loop(iter 47): FX-108 — FX-086 locked the write door and left the read door open
  • loop(iter 46): FX-107 — twenty texts went out and the log recorded one
  • loop(iter 45): FX-106 — the hard gate was satisfied by a JSON `null`
  • loop(iter 44): FX-105 — a collect stage was a room with one door that only opened from the inside
  • loop(iter 43): FX-104 — every `stalled` escape riff ever compiled was unreachable on the phone
  • loop(iter 42): FX-103 — "say repeat to hear the full menu", and repeat was the one word that could not work
  • loop(iter 41): FX-102 — a required_tool fired once per call, so the second visit did nothing
  • docs(architecture): mark the boundary ADR adopted; align the doc set (FX-100/FX-101)
  • fix(law-line): regenerate LAW flows from packs; kill the stale FX-033 trap (FX-101)
  • fix(compiler): the LAW menu spoke copy nobody wrote — two splice seams (FX-100)
  • loop(iter 40): FX-098 — two routing tables, and the untested one wins
  • loop(iter 40): FX-097 — a tenant who said "it's fixed" was told it was cancelled
  • loop(iter 39): follow the two red tests that were telling the truth
  • loop(iter 39): FX-095 — the consent gate let the model text you before you said yes
  • feat(simulator): add browser phone path for ticket debugging (FX-094)
  • fix(guards): "that's it" at the notes prompt threw away the caller's finished intake (FX-087)
  • fix(browser): restart stale voice runtime by SHA (FX-089)
  • docs(routing): label dashboard as preview (FX-088)
  • fix(tools): the model set its own route, and confirmed before the caller spoke (FX-086)
  • test(phone): block L5 when webhook auth is unconfigured (FX-087)
  • fix(phone): verify Telnyx webhook before call side effects (FX-087)
  • docs(routing): incorporate Fable 5 ownership review (FX-086)
  • fix(packs): restore the space-channel follow-along brand block I bulk-committed away
  • fix(copy): the agent asked for a six-digit code and texted a four-digit one (FX-085)
  • docs(routing): make call ownership and failover explicit (FX-086)
  • feat(property): prove two-ticket lifecycle shift-left (FX-084)
  • fix(flows): a caller finished their intake and a stale compile threw it away (FX-083)
  • docs(review): Fable 5 adversarial review of the boundary-architecture decision (v2)
  • fix(audio): a menu that played 0% still burned its one-shot, and never replayed (FX-082)
  • fix(logs): the turn log could not tell a matched menu from a refused one — and it fooled me (FX-081)
  • docs(design): fold Fable review into boundary ADR
  • docs(design): harden boundary architecture decision
  • docs(design): decision doc — adopt the boundary architecture, decline the rewrite
  • docs(design): gap analysis — the FSM/Code/LLM boundary doc vs the code that exists
  • fix(flows,phone): a stalled emergency caller escalates instead of getting the menu (FX-080)
  • fix(phone,live): adversarial review caught my fallback re-binding strangers' calls (FX-079)
  • fix(menu): a one-second barge burned the one-shot menu; replay it once (FX-078)
150 commits

Build Robust RAG and Voice AI with Pluggable Backends and Self-Healing Flows

This update introduces a scalable, pluggable Document QA system with streaming support and rigorous evaluation harnesses for overlapping corpora. It also hardens the Riff voice AI platform through extensive FSM bug fixes, privacy safeguards, and a new website-to-pack ingestion pipeline.

evidence-qa 10github-portfolio-search 4riff 136
▸ how to apply & commit details

How you can apply this

  • Implement a pluggable model backend (DOCQA_MODEL) to enable fast/accurate tradeoffs and streaming answers in your RAG applications.
  • Adopt a generic evaluation harness that tests multi-document contexts and conflicting distractors to detect accuracy degradation early.
  • Use a two-tier site snapshot fetcher to convert schema.org JSON-LD into structured business packs for automated voice flow generation.
  • Apply strict state-machine testing and audio timeline hydration to prevent silent states and media stream leaks in conversational AI.

Commits

evidence-qa
  • docqa: scale stress test reveals accuracy degradation on overlapping corpora (C20)
  • docqa: validate real PDF + fix oversized-chunk latency (C19)
  • docqa: pluggable model backend (DOCQA_MODEL) + fast/accurate tradeoff (C18)
  • docqa: harden eval to multi-doc + conflicting distractor (C17)
  • docqa: streaming answers (ask_stream) + latency finding (C16)
  • docqa: generic eval harness + robust abstain detection (C15)
  • docqa: drop-and-ask inbox dir + sync + design doc (C14)
  • Add docqa: generic multi-domain document QA (ingest + ask + web UI)
  • devlog: record packaging + private-repo reorg (C12)
  • Initial commit: evidence-qa — RAG over a security-evidence corpus
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • fix(live): the FSM reached the question before Gemini existed, so nobody asked it (FX-077)
  • fix(live): an utterance from the previous state muted the next state's opening line
  • fix(voice): six states muted the model and had nothing else to speak — the caller heard silence
  • fix(flows): a caller told us three times we were wrong, and there was no exit (FX-076)
  • fix(phone): a dead call captured the next caller's media stream (FX-075); menu aliases (FX-074)
  • fix(logs): running the test suite deleted the operator's record of real phone calls (FX-073)
  • test(sim): simulate the menu of every ROUTED flow, not one hardcoded unrouted one
  • fix(eval,choice): unbreak the pre-push gate; negation now scopes by adjacency (FX-071, FX-072)
  • fix(law): commit the flow the LAW line serves + stop unannounced DTMF digits routing (FX-069, FX-070)
  • loop(iter 54): FX-068 — the flow told callers "that time is on the calendar", and told itself not to
  • docs(review): my fixes hold post-churn; flag 6 booking-path phrasing reds from branding eviction
  • loop(iter 53): FX-067 — the Bezos baseline pinned which guardrails fired, not what riff said
  • docs(B-303): CLOSED — FX-066 fixed the ambiguous-confirm facet I root-caused
  • loop(iter 52): FX-066 — one line in a five-feature commit turned the "don't go silent" fix back off
  • test: add post-run state audio gate
  • docs(review): FX-062..065 verified; B-303 ambiguous-confirm still open
  • loop(iter 51): FX-065 — the alphabet decided how long a plumber was booked for
  • docs(retro): failure-floor sweep + the two-loops-one-checkout wall
  • loop(iter 50): FX-064 — "I don't want the radio" played the radio
  • FX-065 add state audio timeline hydration
  • loop(iter 49): FX-063 — two tests pinned a literal where the flow declares a property
  • loop(iter 48): FX-062 — edit the brand, reload the flow, see the old brand until restart
  • loop(iter 47b): FX-061 — a fake clock in one test replaced time.sleep for every thread
  • docs(review): FX-059/060/061 verified — each corrected one of my earlier calls
  • docs(review): FX-052..058 review complete — all verified solid, no gaps
  • loop(iter 47): FX-060 — brand.journey lets you author a label the page is built to suppress
  • docs(review): independently verify the concurrent loop's FX-052..058 (they hold)
  • loop(iter 46): FX-059 — one test called main() and handed the suite production credentials
  • loop(iter 45): FX-058 — teardown printed "business data purged" and left the caller's name
  • test(scheduling): triage routes to scheduling_collect_possible_days now (entry-point moved)
  • loop(iter 44): FX-057 — the flow built to compare three synthesis modes played one file three times
  • test(phone): intake-route-absent test skips when authority set at import (env artifact)
  • loop(iter 43): FX-056 — 8 of the 48 failures were tests poisoning each other
  • test(ac3): retire obsolete menu-reloop reproduction (austin_plumbing has no menu)
  • test(replay): air-call replay skips when artifact absent (was hardcoded foreign path)
  • fix(l1-synth): voice slot values for sparse read-back prefixes
  • loop(iter 42): FX-055 — an "adapter polish" commit rotated the default Live model
  • fix(sim): sim_harness advances static-audio states so Collect-Pattern flows simulate
  • loop(iter 41): FX-054 — the preview cache evicted itself on every call
  • test(level2): integration test skips on external-API availability errors
  • loop(iter 40): FX-053 — austin's booking path is dead, and the lint for it was turned off
  • test(ptt-flow): OTP gate bounded-retry proven safe, test rewritten (B-415 resolved)
  • loop(iter 39): FX-052 — enum was validated but never registered, so nothing extracted one
  • test(ptt-flow): confirm-summary reaches ticket_submitted (B-414); file B-415 for verify-retry
  • fix(smoke): property_trouble_ticket smoke reaches real terminal ticket_submitted (B-414)
  • docs(B-414): property_trouble_ticket smoke/metrics stale after Replicant terminal
  • docs(loop): triage remaining web/eval scan reds — metrics=B-322, sim=pre-existing LLM
  • test(web-server): allow-list 9 phone-served/mockup web files (disk->registry parity)
  • fix(tests): the last three reds — all pinned to flow topology that moved
  • docs(B-413): property_management ticket flow has 4 silent-choice-hub dead-air paths
  • test(soft-escalation): make deterministic-escalation tests hermetic re: API key
  • test(choice-compiler): resolve 3 stale migration reds (sources gone)
  • fix(security): blocked verification SMS fails CLOSED, not debug_only (FX-051)
  • fix(tests): tests/live 3 failed -> 0; stop the stall check swallowing exceptions
  • docs(B-412): correct root cause of the 2 remaining locked_choice reds
  • fix(test-double): FakeLiveClient exposes public 'connected' (B-412 resolved)
  • fix(business_pack): drain the failure floor — 9 failed/18 errors -> 0
  • docs(B-412): live locked-choice may not send offer content (booking path)
  • test(scheduling): realign triage corpus to DateExpr ambiguity-blocking
  • fix(logs): live.log rolls instead of deleting itself; pytest stops polluting it
  • test(fsm-debug): drive pizza/plumbing Collect-Pattern via autostate
  • test(complex-flows): rewrite 6 stale amazon_returns tests to the Collect-Pattern
  • perf(logs): bound the turns.jsonl read and cap the file; keep every reader honest
  • test(slot-types): align stale regex to actual book_requires_concrete message
  • docs(B-303): precise blocker for the ambiguous-confirm-goes-silent facet
  • fix(fsm): B-303 — bare denial no longer loops the readback (FX-050)
  • feat(live): detect intakes that capture nothing — a slot-NAME mismatch
  • docs(fixlog): FX-049 — per-caller greeting PII never reaches the tracked tree
  • fix(privacy): per-caller greeting assets can no longer reach the committed tree
  • loop(iter 59): no-verbatim-repeat — build-side integration entry point
  • fix(deploy): gate DID→org routing BEFORE routing, not after; add orgs/mfc_law
  • loop(iter 58): no-verbatim-repeat — runtime playback composer (last solo-buildable piece)
  • perf(greeting): warm the base variant of a templated greeting; prerender mfclaw
  • loop(iter 57): no-verbatim-repeat — nightly self-heal scan wired (Unit 4)
  • feat(ops): prune_call_artifacts — reclaim disk only where redundancy is PROVEN
  • loop(iter 56): no-verbatim-repeat — variant catalog (build<->runtime contract)
  • fix(live): FX-031's HEAR lane never emitted — NameError swallowed since it shipped
  • fix(deploy): don't demand a welcome module from a menu-only pack
  • loop(iter 55): no-verbatim-repeat — nightly self-heal scan (Unit 4)
  • loop(iter 54): FX-042 — confirm readback stops folding in the menu label (Phase 1b)
  • fix(routing): serve inline chooser guide
  • mockup(routing): align editor to sentence-row chooser pattern
  • demo(mfclaw): disclaim affiliation before deploying to a live number
  • docs(routing): inline business node chooser
  • loop(iter 53): no-verbatim-repeat — variant-generation core (Unit 1)
  • mockup(routing): approved interactive routing editor UI (per-business pins, caller overrides, live route tester, simulated failover)
  • build(audio): complete the mfclaw prerendered audio set (16 cues)
  • docs: website-ingest-importer.html — reorganize + add 7-defect ledger
  • spec+skill(ingest): correct the slot-options lie; document hidden intents
  • fix(website-importer): 3 blocking review findings — FAQ data loss, dropped areaServed, dropped overlay aliases
  • docs(routing): operator guide + node routing-policy spec (caller/business canary + failover)
  • loop(iter 52): no-verbatim-repeat speech — design spec + tested selector core (Phase 1a)
  • feat(compile): `announce: false` hidden intents; stop guessing why audio failed
  • fix(schema): warn on screening_gate's inert tool/blocked_line fields
  • fix(property): scope existing ticket action menu
  • chore: commit working-tree source + build changes (operator request)
  • feat(ingest): MFC Law overlay + generated pack; strip space-before-punctuation
  • plan(ingest): Task 7 asserts zero failures, not a stale test count
  • feat(ingest): website importer CLI — snapshot dir to generated pack
  • loop(iter 51): docs — how-to-debug-a-call (unified full-everything-trace reference)
  • fix(ingest): treat "other"/"firms" as greedy alias words
  • fix(ingest): make FAQ alias assignment pack-global, not per-question
  • fix(property): add front maintenance menu
  • fix(spec+plan): alias assignment is pack-global; greedy words are unsafe
  • feat(ingest): website_to_pack — profile facts + overlay taste to pack dict
  • fix(ingest): guard the networkidle CALL, not the word; flow site hours into the pack
  • fix(site_snapshot): browser tier waits on domcontentloaded, not networkidle
  • fix(spec+plan): browser tier must not wait for networkidle; correct the venv deps
  • feat(ingest): two-tier site snapshot fetcher with logged escalation
  • fix(ingest): _ld_nodes cross-key traversal was LIFO-inverted across @graph/mainEntity/itemListElement
  • fix(ingest): merge business JSON-LD nodes sharing an @id instead of picking one
  • spec+plan(ingest): merge business nodes by @id, never pick one
  • feat(ingest): extract_profile — schema.org JSON-LD to riff_site_profile_v0
  • loop(iter 50): FX-041 — verify-code double-send hang (in-flight dedup)
  • plan(ingest): enforce the importer purity contract with an AST test (U14)
  • feat(ingest): should_escalate policy + shared sentence-boundary helper
  • fix(docs): resolve website-ingest-importer review findings B1/B3/B4
  • chore(skills): version the .claude/skills/ directory; pin ingest schema_versions
  • fix(replicant): nest ticket update payload (FX-044)
  • loop(iter 49): FX-040 — recorder caps padding to wall-clock (B-409 defense-in-depth)
  • loop(iter 48): FX-039 — caller RTP timestamp was ticks-as-ms (B-409 root fix)
  • loop(iter 47): file B-409 — caller audio track ~6.9x too long (blocks caller transcript)
  • fix(spec+plan): correct the business.phone pack counts (controller error)
  • docs(ingest): website importer tutorial, index card, and ingest-website skill
  • fix(fixlog): FX-038 uses exact **Root cause**/**Fix** labels (schema green)
  • loop(iter 46): FX-038 — post-call Whisper hydration backfills the blank HEAR lane
  • loop(iter 45): FX-037 — teardown purges caller_identity (welcome-back-after-wipe)
  • spec+plan(ingest): refuse v0's inert submit/screening_gate + add the missing lint
  • spec+plan(ingest): the phone number is a deploy artifact, not a build one
  • loop(iter 44): Armadillo teardown+redeploy — all fixes LIVE (FX-031/032/033/034/035)
  • plan(ingest): 7-task TDD plan for the website ingest importer
  • loop(iter 43): B-271 premise-check — corrected root cause + regression baseline
  • loop(iter 42): B-402 code-grounded Codex brief (fabricated handoff-sent claims)
  • loop(iter 41): FX-036 — restore 4 red SMS tests (stale _send_sms mock signature)
  • loop(iter 40): FX-035 — follow-along menu redirect hid the filling intake form (#1 + #4)
  • design(ingest): schema.org → business pack website importer
84 commits

Riff: Per-Business Admin Access, Session Debugging, and Semantic Fixlog Search

Implemented per-business admin access with token-based scoping and hardened security, while launching a session debug workspace for live state inspection. Enhanced the fixlog with numpy-only semantic search and resolved critical intake data-loss bugs through iterative compiler fixes.

github-portfolio-search 7riff 77
▸ how to apply & commit details

How you can apply this

  • Implement per-business admin access using token-scoped login and strict file permissions (0o600) to isolate tenant data securely.
  • Build a session debug workspace that merges durable trace events with per-turn state inspectors for real-time flow triage.
  • Add lightweight semantic search to documentation or logs using model2vec and RRF, avoiding heavy dependencies like PyTorch.
  • Prevent intake data loss by ensuring compiler-level updates preserve existing fields rather than wiping them during re-transcription.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • fix(docs): fetch all riff html docs
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • loop(iter 39): FX-034 / B-403 — verified caller re-asked name on SMS-unlock path
  • loop(iter 38): FX-033 — intake confirm-loop (model re-transcription wiped the whole intake)
  • loop(iter 37): FX-032 — recording deploy-invariant (audio trace can't silently ship off)
  • feat(trace): FX-031 — auto-persist call transcript into the unified trace (HEAR lane)
  • feat(replicant): add property ticket operations menu (FX-032)
  • loop(iter 35): B-262 premise re-audit — alias still read; don't ship a breaking cleanup
  • loop(iter 34): B-252 — robust outlier threshold in gate analyzer (FX-030)
  • loop(iter 33): close B-266 (verified) + scope B-271 (real P1, unsafe to autofix)
  • loop(iter 32): B-307 verify-and-close (Tier B transcript paths already use basename)
  • docs: business-admin-access how-to (panel + token login + deploy handoff) + index.html
  • docs(replicant): fold ticket operations review decisions (FX-031)
  • loop(iter 30): B-064 closed — retire stale never-passing austin sim xfail (coverage moved)
  • loop(iter 29): B-239 — integration coverage for the F-211 auto-confirm hook (FX-029)
  • F-375 DONE + iter 28 log — Armadillo torn down + clean-redeployed on scoped schema (B-408 live)
  • feat(replicant): add ticket operations client (FX-029)
  • fix(security): FX-028 — admin handoff token file now 0o600 + gitignored (F-374 review finding)
  • F-374 done + iter 26 log (admin access reviewed + merged); worktree cleaned up
  • F-374: per-business admin access (Codex-built, Claude-reviewed) — merge to main
  • loop(iter 25): B-116 verify-and-close (DST date arithmetic already done + tested)
  • loop(iter 24): B-250 closed as NOT-REPRODUCIBLE (premise-check)
  • F-374: per-business admin access spec (panel + token->scope login + deploy handoff doc)
  • F-376: merge per-business caller-identity scoping (Codex 02066668) + clear 2 blockers
  • backlog: file the 3 operator-approved items in dependency order (F-376 merge -> F-374 admin access -> F-375 redeploy)
  • loop(iter 22): FX-025 — fix B-154 preview 502 prompt-fragment leak (security)
  • loop(iter 21): review Codex identity-scoping — approved w/ 2 blockers (FX-024 collision, migration safety)
  • loop(iter 20): FX-024 — fix B-408 menu repeat-alias gap (live-call review); close B-305
  • loop(iter 19): FX-023 — verify+close F-263; add missing get()-resolver-failure guard
  • loop(iter 18): FX-022 — fix same-day dense-cluster offer phrasing + close B-314
  • loop(iter 17): FX-021 — close B-317; add SMS build_tools invariant + fix drift guard
  • F-373: link the published admin-panel mockup Artifact
  • design(identity-scoping): per-business caller-identity spec + F-373 admin panel + mockup
  • loop(iter 16): FX-020 — fix B-315 directive-nudge misses mid-string question
  • loop(iter 15): FX-019 — close B-309 + add undeclared-core-dep forcing function
  • loop(iter 14): FX-018 — freetext-token veto in implied_type; appointment_message no longer mis-typed as time
  • chore: track docs/fixlog/.gitignore so embeddings cache stays out of git durably
  • loop(iter 13): B-407 root-caused (tree-intake stage prompts double-ask); safe generator backlog drained — convergence
  • loop(iter 12): B-406 FIXED — update_offer data-loss bug (yes now KEEPS, no CHANGES) | compiler-level
  • fix(iter 11): test-cache-mutation leak — typo test poisoned corpus_lint via shared load_flow object | FX-017
  • loop(iter 11): clears-on-forward-edge refined to data-slots-only (F-368 sibling) | 33 warns -> 8 real; B-406 surfaced
  • loop(iter 10): B-405 durable fix — menu-module.js cache-busts by CONTENT hash, not build tag
  • loop(iter 9): Retro 2 (4 new principles) + B-405 — resync fix shipped to disk but stale cache-bust kept browsers on old JS
  • loop(iter 8): scripts/corpus_lint.py — institutionalize the whole-corpus health check (F-368 methodology)
  • loop(iter 7): F-368 DONE — clears-unknown-slot allowlist for internal flags | 10 false errors -> 0, typo-catch intact
  • loop(iter 6): B-401 root cause CORRECTED (audio race, not text); safe backlog drained — convergence
  • loop(iter 5): F-372 MERGED to main (d763b99e) — session debug workspace live; killed wedged Codex to unblock
  • Merge branch 'f372-session-debug-workspace' into tree-intake-ingestion
  • loop(iter 4): FX-015/016 from F-372 found-defects; B-404 security closed; merge held on active Codex(session.py)
  • loop(iter 3): B-403 root-caused + fix design; F-372 merge blocked on Codex(session.py); analysis-not-code by design
  • feat(fixlog): hybrid BM25 + semantic search via RRF | fixes the paraphrase/exact-term blind spots
  • feat(fixlog): REAL semantic search via model2vec (was silently keyword-only) | numpy-only, no torch/FFmpeg
  • docs(principles): the cold-rebuild test — fix the generator, survive teardown+redeploy (operator ruling 2026-07-08)
  • feat(session-debug): flow-studio state inspector — live triad, guards, transition verdicts
  • fix(session-debug): reject traversal-shaped session_id on session_facts (400) + dump-path containment
  • backlog: B-401..404 from call v3:PyNmcWDo review + security finding (double-voice CRIT, freelance-intake CRIT, verified-name-reask, path-traversal routed)
  • feat(session-debug): /api/debug/session_facts merged per-turn debug endpoint
  • feat(session-debug): live path emits turn_complete — real turn boundaries for grouping
  • feat(session-debug): pure per-turn merge of turn rows + trace events
  • feat(session-debug): teardown dump merges durable trace — atlas lanes stop truncating
  • fix(FX-014): resync_skip storm — deduped per (node,have) pair; misdiagnosis corrected; replay guard locked
  • feat(session-debug): make slot_write + transition_verdict durable in state_trace.jsonl
  • docs: design Replicant ticket operations API
  • docs(fixlog): Codex compliance confirmed; sandboxed-invocation convention added
  • backlog: F-372 Session Debug Workspace Phase A (handoff from parallel session, conflict-checked, execution contract embedded)
  • docs(session-debug): Session Debug Workspace design v0 + 10-task TDD plan
  • chore: armadillo re-rendered static audio from the last rebuilds
  • docs(fixlog): college-level tutorial — the loop diagram, a real worked example (FX-011), entry anatomy, retro rules, try-it-yourself | indexed under Start here
  • feat(fixlog): annotated, searchable fix journal + retro principles + forced schema | 13 fixes backfilled
  • test: welcome send edge asserts the new follow_along_sent guard
  • fix(verify): link-only welcome texts no longer claim verification; verify states can resend | v3:ByaxLead
  • docs: document node release channel operations
  • test: happy-path sims walk the voiced intake_success hop; lint baseline shrinks (legal silent-hub healed by rebuild)
  • fix(confirm): corrections re-read ONE field + spell-back rule; leading denial records deny | codex-designed, call v3:fk7uc
  • fix(phantom): branch classifier falls back to the opening line | sim-found, keyless guards
  • fix(compiler): guest-unlock offer gets announce+hub — the dtmf-0 dead-air incident | silent-choice-hub lint (warn)
  • fix(landing+sms): live call lands on the menu view; door-less welcome text drops the code
  • feat(companion): menu-first landing — welcome states are a pass-through card, never the hero
  • feat(welcome): auth_at_door flag — default OFF = option A (no door ceremony) + admin config menu
65 commits

Build Flow Atlas Visualizer and One-Command Business Deployments

The developer shipped a comprehensive Flow Atlas tool for visualizing call logic trees and implemented a one-command deployment system that successfully launched new verticals. Additional work included hardening SMS deliverability gates, refining session fact registries, and publishing technical articles on ratchet loops.

github-portfolio-search 4riff 61
▸ how to apply & commit details

How you can apply this

  • Implement a Flow Atlas viewer using BFS unrolling and hash routing to visualize state machines, detect unreachable nodes, and debug transition ambiguities via a static tree interface.
  • Adopt a one-command deploy/teardown pattern with pre-flight gates (such as SMS DID verification) to ensure new business verticals launch with first-try green status.
  • Use a session-facts module with trust layers and consume-on-fire gates to manage identity eligibility and consent resolution across complex voice interaction flows.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • Rename blog article URL: drop parens from filename
  • Publish "Ratchet Loops" blog article + downloadable skills
  • Publish "Ratchet Loops" blog article + downloadable skills
riff
  • fix(live): static-advance forwards edge sets:/clears: | AST single-choke guard, red->green
  • docs: F-371 cross-call enrichment backlogged + post-call-processing spec QUEUED (Codex-reviewed)
  • feat(phone): add node release channel modes
  • feat(armadillo-ink): third cold deploy on FLOW-101 — new vertical (tattoo studio), all gates first-try green
  • feat(replay): PAGE lane — follow-along enter/exit vs voice, divergence flagged | R6, TDD 12/12
  • chore: stage bluebonnet teardown deletions (audio + generated flow)
  • feat(deploy): one-command business deploy/teardown + 2 gates | Violet Crown Air cold-built on FLOW-101, first-try green
  • fix(compiler): profile-intake + message caps voice their success_line + build gate | THE riders-club-silence root cause
  • fix(compiler): content caps always prerender + journey auto-derivation | both live FLOW-101 defects killed at the template
  • fix(bluebonnet)+docs: land the pack/flow/registry that a silent git-add abort dropped; document SMS gate + org-membership design
  • feat(telecom): SMS deliverability gate — build fails if a texting flow's DID can't deliver | TDD 6/6
  • docs: wire node release channel HTML page
  • feat(bluebonnet): Riders Club — member-access onboarding at option 0 | identity-eligible, both welcome branches walk
  • feat(session-facts): the module — declared fact registry + trust layers, proven by a new business on FLOW-101
  • feat(call-replay): TDD replay tool + layered atlas + live lane persistence | doc-first, 9/9 green
  • docs: design two-node release channels
  • feat(session-facts): gates consume-on-fire, routes survive acks, consent resolves from profile | T1-T7+L1+I1 green
  • docs(session-facts): use-case-first end-flow contract + proposal (Codex-reviewed x2) | indexed
  • loop(wrap-up rifs0707h): 3rd quota-blocked session — human review; loop self-stopped per amendment #6 backstop
  • loop(wrap-up rifs0707g): amendment #6 quota gate (Codex-approved); 2nd quota-blocked C0 recorded, re-baseline still deferred
  • loop(wrap-up rifs0707f): amendment #4 proven (apology 0/6); re-baseline deferred on 403 weather; amendment #5 proposed
  • loop(wrap-up rifs0707e): amendment #4 shipped; last unflagged baseline 77.6 recorded
  • loop(cycle 1 rifs0707e): amendment #4 — corpus runs require RIFF_EVAL_MOCK_BACKENDS=1 | Codex-approved
  • loop(wrap-up rifs0707d): baseline 82.6 — guardrail cleared, rebuild restored; L0 humanness floor flagged
  • loop(cycle 1 rifs0707d): canonical probe blueprint refreshed to current lint gates | rebuild 5min/2edits -> 1s/0
  • loop(wrap-up rifs0707c): learnings + scorecard db | baseline 52.4 attributed, floor holds 120.4
  • loop(cycle 2 rifs0707c): property_management brand+journey — last routed flow unbranded | 32 keys verified
  • loop(cycle 1 rifs0707c): keys-gated lifecycle pytest — new→register→returning→purge as CI guard | 1 passed 44s
  • docs: flow-atlas spec status — implemented, merge-ready
  • loop(cycle 2 rifs0707b): phantom lifecycle — new caller registers, returns as known, memories purged | PASS
  • fix(flow-atlas): final-review wave — serve page, empty-state guard, u003c escaping, exit-policy test
  • loop(wrap-up rifs0707b): Tier-1 instrument live
  • loop(cycle 1 rifs0707b): Tier-1 phantom caller — deterministic welcome-branch instrument + CI guard
  • fix(flow-atlas): repo-relative payload paths + dict-imports regression test
  • loop(rifs0707a): resumed; amendment #3 live; baseline anomaly attributed to in-flight L0 work — spec-vs-invariant conflict handed off
  • feat(flow-atlas): generated artifacts + docs pointer
  • loop(amendment #3 MERGED): rolling latency anchor + walking-anchor mitigations, Codex-approved; operator authorized resume
  • Fix LAW auth prompt static audio
  • feat(flow-atlas): walk view (number-key transcript), inspector, fix links
  • feat(flow-atlas): tree view — BFS unroll, loop/ref chips, unreachable strip
  • Fix voice SMS consent mirroring
  • feat(flow-atlas): viewer shell — sidebar, flip-through, hash routing
  • feat(flow-atlas): emitters + CLI with systemic-failure exit policy
  • feat(flow-atlas): atlas assembly with diagnostics + error entries
  • Add reusable L0 auth onboarding contract
  • test(flow-atlas): cover duplicate-key ambiguity -> null branch
  • feat(flow-atlas): state source locator (host wins, ambiguity -> null)
  • fix(flow-atlas): document state_order merge-order compromise + contract test
  • feat(flow-atlas): flow serializer reads transitions from Flow.states
  • docs(law-welcome-v2): Fable review — APPROVE WITH CONDITIONS a-f, all 7 questions answered
  • feat(flow-atlas): edge display-class classifier
  • docs: flow-atlas implementation plan — 9 TDD tasks from spec rev 3
  • Add phone L5 ingress smoke
  • docs: flow-atlas spec rev 3 — Codex review fixes (29 findings triaged)
  • Restore law auth intake path
  • docs: flow-atlas spec rev — transcript-first keyboard walk, source links, AI JSON
  • docs(law-welcome): Fable review — inline comments + answers to the 5 questions
  • docs: flow-atlas design spec — static tree viewer for all flows
  • Fix legal welcome auth gate and boot static playback
  • Fix legal intake profile name remap
  • loop(rifs0706h): STOPPED by stacking mitigation — human review requested; amendment #3 proposed (rolling latency anchor)
110 commits

Self-Improving AI Loops, Telecom Identity Gates, and Brand-Aware Config Cascades

Implemented a RIFF metric-ratchet self-improvement loop with Postgres-backed schema and Constitution gates, while hardening telecom routing via DID-org validation and org-linked SMS identity. Established a provenance-tracked config cascade resolver and Playwright-validated brand truth system to ensure deterministic, per-flow customization.

everyone-ai 6github-portfolio-search 1riff 103
▸ how to apply & commit details

How you can apply this

  • Build self-improving agent loops by wiring a Postgres schema for runs/learnings and enforcing 'Constitution' checkable gates (P1-P6) to prevent regression during automated iterations.
  • Implement fail-closed telecom routing by validating DID-to-org mappings at boot and linking SMS identity to the dialed number to prevent misrouted communications.
  • Create a config cascade resolver with provenance tracking to manage per-org/per-flow effective configurations, ensuring branding and logic changes are durable through recompiles.

Commits

everyone-ai
  • docs(session): record live-cluster 1.x smoke test (finance/legal/hr GREEN)
  • docs(session): link commit hash in dependabot-remediation session doc
  • fix(security): remediate 24 Dependabot alerts; upgrade k8s client 0.21→1.x
  • refactor(commands): retarget /self-improve-loop from RIFF to the everyone-ai environment
  • docs(session): link commit hash in S-2026-07-06-0503 session doc
  • feat(commands): /self-improve-loop — RIFF metric-ratchet self-improvement loop
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • loop(wrap-up rifs0706g): labels shipped; stacking watch 2/3 armed
  • loop(cycle 1 rifs0706g): journey labels for immigration family-petition + work-visa stages | HOLD
  • loop(wrap-up rifs0706f): both amendments law; dedupe re-landed lawfully | floor 120.4 held
  • loop(cycle 1 rifs0706f): gratitude dedupe RE-LANDED under amendment #2 | stutters 2->0, verdict HOLD
  • loop(amendment #2 MERGED): noise-band ratchet verdicts + stacking mitigation, Codex-approved
  • loop(wrap-up rifs0706e): amendment #1 merged; stutter fix reverted per P5 letter-of-law; amendment #2 proposed (noise-band verdicts)
  • loop(amendment #1 MERGED): measurement-expansion re-baseline, Codex-approved with tightening
  • fix(law): send intake texts from 7LAW
  • loop(wrap-up rifs0706d): repeat-2 era begins — 82.1 -> 108.6 -> 120.4 uncapped
  • loop(cycle 1 rifs0706d): exercised-path completeness — score the walked capability, not the union of 59 states
  • chore(audio)+fix(ratchet): overnight re-renders timed; PII ratchet catches the call-time cache path
  • loop(procedure): corpus runs at repeat-2, median scoring for noisy dims
  • loop(wrap-up rifs0706c): scanner artifact killed, cap lifted | compliance P1-P6
  • loop(cycle 1): readback-invariant scanner lied on greetings | cap lifted, 3->0 on identical data
  • loop(wrap-up rifs0706b): scorecard + P1-P6 compliance | 100 -> 87.2 -> 90.0
  • loop(cycle 2): double-ask-line x4 -> one breath per stage | 87.2->90.0
  • loop(cycle 1): RunRecord emission wired + intake-invariants measured | 100->87.2 (measurement expansion, not reverted — amendment proposed)
  • feat(config): business-page report v0 (Codex GO) — per-org/per-flow effective config with provenance
  • fix(telecom): enforcement end-to-end — Codex re-review findings 1-4
  • docs(telecom): business-page visibility — report v0 pulled forward with telecom identity
  • fix(preflight): DID-org routing check uses the runner's status-string convention
  • feat(telecom): preflight DID->org routing gate — misrouted DIDs stop hard at boot
  • feat(telecom): org-linked SMS identity — design v2 (Codex-reviewed, NO-GO findings folded) + fail-closed resolver + shift-left gate
  • feat(sms): texts come FROM the number the caller dialed
  • feat(loop): 512-FLOW-101 (+15123569101) provisioned as loop-owned test DID
  • loop(rifs0706a cycle 0): bootstrap baseline — legal_intake sim-only | raw 71.9 = 100
  • feat(loop): /riff-improve command (mirror + live skill) + decommission-audit ruling on 7311
  • feat(loop): Postgres loop schema on workqueue pg — runs/learnings/side_effects/allowlist/amendments
  • feat(loop): CONSTITUTION — P1-P6 as checkable gates + frozen invariants + committed-artifacts rollback ruling
  • feat(ops): phone-numbers inventory script — Telnyx live + assignment plan (7311 = test/dev loop DID)
  • docs(brand): number plan — 510 line is property management; scheduling demo card loses the DID claim
  • feat(brand): pack-level brand block (durable through recompiles) + Codex-hardened doc-truth (15 claims)
  • feat(docs-truth): Playwright brand validation + deterministic doc-truth gate | baseline 10/10 claims
  • docs(brand): read-along highlights get their own anchored section (§3) + index deep links
  • fix(brand): read-along + fresh-slot washes derive from the brand highlight
  • chore(brand): rename Austin Plumbing Pros -> David Austin Plumbing Pros (flow + docs)
  • docs(brand): gallery mocks show each running flow's real menu + slot echo; index card refreshed
  • feat(brand): brand all running follow-along flows + evict hardcoded Space Channel copy from the template
  • feat(brand): PR3 — per-org/per-flow branded follow-along pages + journey step labels
  • fix(config): align resolver to real segments: schema + fold Codex re-review findings
  • feat(config): PR1 — effective-config cascade resolver with provenance + org loader
  • docs(design): org-vs-business clarified + F-370 filed (retire the business double-meaning)
  • docs(design): rename cascade level business -> org (collision with pack business:/business_profile)
  • docs(design): move config-cascade doc to docs/html + index entry
  • docs(design): config cascade + per-business branding v3 — Codex-reviewed, business-level naming
  • docs(loop): cycle 11 close — quota-stop rule, push footgun, tree-fleet ledger
  • chore(loop): commit sibling probe-pack deletions — the destroy step of their own protocol
  • docs(loop): cycle 10 — enum typing at the generator; gate honesty observed under outage
  • feat(tree-intake): choice fields emit semantic_type enum — slots bind to their declared domain
  • docs(loop): cycle 9 — harness parity autopsy, PII ratchet rule, lane handoffs
  • fix(system): sim-harness walker parity, emit-then-advance states, ADR-0007 allowlist, per-caller PII ratchet
  • docs(loop): cycle 8 burn-down notes + verification honesty correction
  • feat(safety-gate): escalation + CRM prefill are confirm-exempt; lint ratchet re-anchored; protocol test collateral fixed
  • docs(loop): first-try-clean probe — fresh vertical gates 10.0 with zero rework
  • docs(loop): repeat_menu autopsy — persistent test failures are unread defect reports
  • fix(locked-choice): declared repeat_menu beats the transport re-speak fallback — 16 ingress failures were a real live defect
  • loop(final): target crossed 121.2 — greeting frontload + honest acks measured | quality 28->43, humanness 26.7->43.3
  • loop(wrap-up s07060207): frontload root-cause chain documented; measurement pending
  • loop(cycle 1): greeting frontload capture + ack honesty gate | measuring
  • chore(flows): fleet rebuild adopts varied retry lines — three one-line diffs, gates 10.0/10.0/10.0
  • feat(eval-db): errored conversations ingest as infra_error markers — all-errored runs can no longer vanish
  • loop(cycle 1): value-forward capture acks | score 100->114.6 (raw 69.9->80.1)
  • docs(loop): shared-checkout commit-integrity autopsy + worktree rule
  • chore(audio): space cron re-renders accompanying the recovered manifest
  • fix(repo): recover batch-C files lost from commit 8311c8be — shared-index casualty
  • docs(loop): negation-blind matcher autopsy + errored-ingest gap
  • fix(locked-choice): negated choice phrases are denials — veto + masked re-route
  • loop(wrap-up s07060109): retry proven 0/6 errored; survivorship bias in prior judged dims documented
  • docs(loop): spoken-digit routing autopsy + repeat_menu breadcrumb
  • fix(locked-choice): spoken digits resolve as announced dtmf digits, not list positions
  • loop(cycle 1): quota-aware eval retry — 403/429 get window-scale backoff | measuring (was 4/6, 3/6 errored)
  • feat(eval-db): gate treats errored conversations as measurement absences, not verdicts
  • feat(schema): no-completion-slots-multi-path lint — the eval-gate trap moves to authoring time
  • docs(loop): batch-C session learnings — four systemic eval/compiler fixes, cross-session pickups
  • loop(wrap-up s07060043): outage session close — re-ask fix shipped, scoring deferred
  • fix(locksmith): drop generic-urgency aliases from the emergency handoff
  • loop(cycle 1): varied re-ask phrasing (runtime + compiler) | score deferred — provider outage
  • feat(eval): agent-speaks-first protocol — evals hear the call a live caller hears
  • loop(cycle 2): noise proven on identical yaml (quality 15->60) | score 87.4->97.9, gate vindicated
  • feat(eval): cross-process single-flight lock — concurrent evals stop 403-ing each other
  • feat(compile): inject anti-re-ask intake rules into every intake pack — riff_cafe gate 0.0 -> 10.0
  • loop(cycle 1): alias-greedy-handoff compiler gate + humanness judge | score 100->87.4 (noise-suspect, gate kept)
  • fix(welcome): completion_slots pin the eval correctness contract on the four packs
  • feat(welcome): batch C — welcome + profile intake on ALL packs, nightly greeting backfill
  • loop(cycle 2): de-greed emergency aliases | score 143.8->184.2 (raw 57.5->73.7) — session target 120 exceeded
  • loop(cycle 1): rebuild probe live — pack->riffc->green measured | score 100->143.8 (raw 40->57.5)
  • loop(wrap-up s07052350): scorecard + closing learnings | score 100->100 (baseline)
  • loop(cycle 0): baseline instrumentation + first measured run | score ->100 (raw 40.0)
  • feat(audit): per-iteration environment audit snapshot -> quality.db + iteration ledger
  • feat(law): brand intake and expand menu
  • fix(line-page): journey notes truncate to one sentence (full text on hover)
  • feat(operator): Line Page v1 — read-only per-flow menu/greeting/intake-journey page
  • fix(law): menu reorder to dtmf 0 + prerender profile-intake audio
  • fix(ops): sweep gate passes explicit routed flow ids from .env
  • chore(audio): add routed law and property menu prerenders
  • feat(live): batch B — stall watchdog, trimmed readbacks, peer caller lookup, abandoned-call tickets
  • feat(live): recover stalled audio and preserve partial Replicant tickets
  • fix(phone): pin LAW number to legal intake
  • feat(ops): deploy refuses un-prerendered routed flows (audio sweep gate)
  • feat(replicant): affirm-then-skip, unknown-caller tickets, payload contract fixes, flow-locked tools
  • fix(replicant): map identify output to the tree intake slot ids
  • fix(replicant): identify hook observability + deploy waits for active calls
  • feat(replicant): ticket POST fires on live calls + Aman's final enum contract
90 commits

Tree-Driven Intake System: DSL Compiler, Vertical Scaling, and Live Voice Mirroring

Implemented a domain-specific language for defining intake flows, compiling them into runtime capabilities across four verticals including property maintenance and legal services. Enhanced the voice interface with live transcript mirroring, schema-driven HTML forms, and robust session management for returning callers.

domain-tree-intake-nouns-for-riff 25github-portfolio-search 1riff 64
▸ how to apply & commit details

How you can apply this

  • Build a tree DSL validator and compiler to transform structured domain definitions into executable intake capabilities, enabling rapid scaling across new verticals like electrical or legal services.
  • Implement live transcript streaming and schema-driven HTML mirrors to synchronize voice and web sessions, allowing users to edit data in real-time while maintaining state consistency.
  • Adopt a 'shift-left' verification strategy using HMAC-signed contracts and pre-rendered audio to secure identity hooks and reduce latency in SMS and voice handoffs.

Commits

domain-tree-intake-nouns-for-riff
  • feat: profile_intake as tree data — passthrough emission (was hand-edited in riff dist)
  • feat: property_maintenance tree — fifth vertical (Replicant California line)
  • docs: system docs move to riff; precursor keeps authoring contracts only
  • docs: welcome module design moved to riff (runtime feature) — index cross-links
  • docs: welcome module design (md+html), docs index, README pointer
  • fix: grooming size nouns need breed + bare-size aliases (sim-gate catch)
  • fix: electrical outlet_switch missing the bare 'outlet'/'switch' aliases (sim-gate catch)
  • docs: move pipeline html to docs/html, cross-link riff repo
  • docs: pipeline & operations guide (md + html)
  • fix: repair README mojibake from encoding bug
  • feat: phase contract — problem/triage/identity ordering encoded in every compiled field
  • feat: mark root choice field as router in compiled capability
  • chore: ignore playwright artifacts
  • feat: alias enrichment v2 from utterance QA + extractor guidance
  • feat: standalone tree builder page (Pass 2, Pre-Task C precursor)
  • fix: doc/schema cohesion + alias-collision lint (antigravity review)
  • feat: isolation ratchets, dist build, riff ingestion README
  • feat: four locked vertical trees — plumbing, electrical, dog grooming, immigration law (Pre-Task F)
  • docs(plan): task 5 content brief v2 — antigravity vertical research (aliases, corner cases, UPL boundaries)
  • feat: two-step LLM draft tree generator (Pre-Task B)
  • feat: tree->capability compiler, one emit path (Pre-Task D precursor)
  • feat: tree DSL validator with lint suite (Pre-Task A)
  • feat: scaffold, tree DSL v1 reference + JSON Schema
  • docs(plan): implementation plan v2 with codex review amendments
  • docs: tree-driven intake design v1
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • feat(intake): follow-along live data for pack flows — schema registry + slot mirror
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • feat(replicant): signature per confirmed contract + intake sim suite + vertical audio
  • fix(phone): silent-jam root fixes + code-first verify SMS + kill intake double-text
  • feat(phone): route California line to property_management + prerendered audio
  • feat(replicant): California property integration — HMAC client, identify hook, ticket submit, tree-generated pack
  • docs: rename Replicant webhook secret env key
  • docs: add Replicant California property integration handoff
  • fix(phone): prewalk silent welcome gates before audio
  • merge: origin/main (commercial base menu) + call-review fixes — both kept
  • feat(call-review): guest unlock offer, honest copy, brief menu re-entry, confirm pacing, name corrections
  • fix(business_pack): retry-fallback marker, greeting-suffix rename, test honesty
  • feat(business_pack): commercial base menu (shift-left) + trade renaming
  • feat(menu-module): repeat-the-menu on every pack flow + reserved-alias guard
  • fix(welcome): menu-only unlock copy + explicit skip decline path
  • docs(spec): welcome v1.1 corrections — menu-only code (state-driven), explicit skip path
  • feat(welcome): v1.1 — verified/guest sessions, auto follow-along SMS, menu code unlock
  • docs(spec): welcome module v1.1 — verified vs guest sessions, non-gating code unlock
  • fix(ops): deploy pre-flight ignores locally-regenerated audio artifacts
  • fix(companion): peer-aware call binding + trace/verify tooling
  • feat(ops): rolling two-node deploy script — drain M1, verify M3, refill
  • chore(audio): prerender plumbing welcome + sms lines
  • feat(welcome): Welcome Module v1 — pre-rendered personalized greetings, first-call vs returning paths
  • docs: tree-intake system docs move into riff (pipeline guide, founding design, html mirrors)
  • docs(spec): welcome module v1 — pre-rendered whole-sentence greetings, first-call vs returning paths
  • docs(intake): field stall policy design — Fable 5 review APPROVED (4 policies, status-not-sentinel, double-sided blocks)
  • Fix generated intake simulator regressions
  • merge: origin/main (profile-intake cash-in) + sim-gate fixes — both importer features kept
  • feat(business_pack): all four intake flows pass the sim gate at correctness 10.0
  • feat(intake): profile intake for legal_intake + electrical_intake (shift-left cash-in #1)
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • feat(intake): consented returning callers get a fresh companion link at connect
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • feat(intake): flip open /intake.html to companion/menu on voice profile-save
  • chore(audio): refresh space channel greeting
  • chore(audio): add generated intake prompts
  • docs: cross-link tree-intake precursor repo
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • fix(live): scope 0a5bec19 latency fix — kill-switch covers stash+replay, replay scoped to intake_*
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • fix(live): resend skipped state context + early-advance intake ask states
  • feat(business_pack): phase-ordered stages from call QA — problem, triage, identity
  • Merge remote-tracking branch 'origin/main' into tree-intake-ingestion
  • Merge remote-tracking branch 'origin/main' into feat/space-profile-intake-v1
  • docs(intake): reconcile space-profile-intake docs with as-built, add operator runbook
  • fix(intake): task-10 review fixes — verify-before-write ordering, identity upsert, secret redaction, locked-not-404
  • feat(phone): route California line +15102160079 to plumbing_intake
  • feat(business_pack): tree_intake importer — four verticals from domain-tree precursor
  • chore(intake): regenerate widgets flow provenance after consent-marker pack change
  • fix(intake): task-9 review fixes — explicit consent marker + voice-save regression test
  • test(intake): shift-left contract — second vertical is schema+copy only
  • fix(intake): task-8 review fixes — templated-greeting audio guard, gated identity lookup, phone-shape validation
  • feat(intake): hello-by-name for returning verified callers
  • fix(intake): task-7 review fixes — flush pending saves before submit, queue final-refresh updates for focused fields
  • feat(intake): schema-driven /intake.html with lock screen, live mirror, debounced rev-checked edits
  • fix(intake): task-6 review fixes — gate transcript stream on finished bit, bound backlog worker
  • feat(intake): stream caller transcript into intake session (both transports, non-blocking)
  • docs(phone): add vanity URLs to number map
  • fix(intake): task-5 review fixes — re-entry save relatch, second-visit update offer, verify-scratch clears, per-edge safety-gate exemptions
  • feat(intake): compiler-generated name/consent/verify/interests sequence with menu loop-back
  • fix(intake): harden save_field spool fallback, atomic 0600 spool perms, backoff-poll replay thread
  • docs(phone): add SMS vanity number examples
  • feat(intake): voice-side API client with spool + two-line verification SMS
  • fix(intake): gate store registration to M3 authority + bound rate-limit dict
75 commits

Riff: Vertical-Agnostic Intake, Self-Healing Phone Nodes, and Deterministic Menu Modules

This update introduces a schema-driven, vertical-agnostic profile intake system with verify-before-valuable gating and deploys self-healing active-active phone nodes with drain workflows. It also stabilizes voice interactions through deterministic menu modules, gapless barge-in fixes, and comprehensive telemetry for SMS and call timelines.

github-portfolio-search 1riff 74
▸ how to apply & commit details

How you can apply this

  • Implement a vertical-agnostic profile store using field revisions, identity tokens, and TTLs to support reusable intake flows across different commercial sectors.
  • Deploy self-healing active-active phone nodes with repo-tracked roles and drain modes to ensure high availability and seamless failover management.
  • Build deterministic voice menu modules that unify web taps, DTMF, and voice inputs into a single compiled contract, preventing silent drops and double-menu errors.
  • Enhance voice UX by buffering forwardable frames until connection for gapless barge-in and using telemetry to audit SMS delivery versus acceptance.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • feat(intake): schema + session API with verify-before-valuable gating
  • feat(intake): vertical-agnostic profile store (field revs, identity, TTL tokens)
  • fix(voice): web live session speaks the flow voice (P0.3 web half)
  • docs(plan): space profile intake v1 implementation plan (10 tasks, shift-left)
  • docs(spec): intake rev 3 — shift-left contract for 4 commercial verticals
  • docs(spec): intake rev 2 — codex findings + verify-before-valuable rule + two-line SMS
  • docs(spec): Space Channel profile intake v1 + voice consistency design
  • feat(phone): show split node health indicator
  • fix(eval): score generated menu completion durably
  • feat(ops): phone-node watchdog also manages riff.web_server (RIFF_PHONE_NODE_WEB=1)
  • feat(intake): add Space Channel option zero profile flow
  • fix(panel): move nodes + version chips to bottom-left — Layout button covered them
  • docs(ops): drain workflow + panel node light; whisperx gap closed on M1
  • fix(phone): node light counts tunnel-serving nodes — drained nodes excluded
  • feat(phone): node-count light + drain mode for the failover pair
  • docs(ops): runbook covers repo-tracked phone-node role on both machines
  • feat(ops): repo-tracked phone-node role — self-healing active-active nodes
  • docs(ops): M1 active-active phone failover runbook
  • docs(intake): frame webpage modules for fable review
  • docs(intake): design progressive web intake
  • docs(widgets): tutorial honesty-note covers v0.1 (ladder depth + episode audio in the importer); ignore .context/ runtime scratch
  • content(widgets): 2026-07-04 feed refresh — standard-ladder briefings rendered + doc index
  • feat(widgets): importer v0.1 — spoken.standard ladder, real episode audio, karaoke stylesheet (codex-implemented)
  • feat(debug): add PageAgent routed-line targets
  • feat(debug): add experimental PageAgent lab
  • fix(barge-in): gapless pre-connect utterance — buffer ALL forwardable frames until Gemini connect
  • fix(barge-in): pre-connect barge utterance is stashed and delivered at Gemini connect
  • fix(barge-in): hear the caller — grace hysteresis, gated-audio flush to Gemini, calibration telemetry
  • test(menu): three-ingress parity generalized to ALL pack-compiled menus
  • feat(companion): text the follow-along link at ANSWER, not Gemini connect
  • fix(companion): tap barge-in parity — taps during the menu re-announce now select like DTMF (codex-implemented)
  • feat(debug): call_timeline.py — five-lane merged per-call timeline (EAR/FSM/FINGER/WIRE/SCREEN)
  • feat(companion): view-branch beacon + deterministic say-view browser check
  • fix(menu): 'locked' drop text — 'One at a time' not 'Already chosen' (operator read it as item-level state)
  • fix(companion): dead keypad after hangup + press-level beacons + human drop reasons
  • feat(telemetry): shift-left client contract on every served page + tap never silently drops
  • test(menu): three-ingress parity — web tap ≡ DTMF ≡ voice for every compiled menu option
  • docs(F-367): implementation plan for the tool-reference build check (shift-left gap #2)
  • docs(F-369): RESOLVED — fixed by 918fc956 (guard+catch-retry), verified live; corrected my own analysis twice
  • fix(companion): survive stale cached modules — the beacon-caught freeze
  • fix(telemetry): client-log sink truncated call ids to 24 chars BEFORE validation — every beacon 404'd
  • telemetry(sms): deterministic carrier-delivery audit — accepted != delivered
  • feat(observability): versioned companion page + client highlight telemetry (codex-reviewed) + F-369 weakref loop fix (Opus agent's root cause)
  • docs(F-369): EXACT root cause — id()-reuse gap in the concurrent agent's 35-min-old SMS loop fix
  • telemetry(menu-module): spans-per-serve logging + suppression-aware call reviewer + hub→announce harness scenario
  • chore(menu-module): commit the sweep deploy-gate script + confirm-announce WAV + crickets-processed old-hub joke
  • fix(menu-module): framework silence at every compiled choice state + deterministic call reviewer
  • docs(F-369): deep root cause — aiohttp ClientSession loop-binding in the Telnyx adapter
  • docs(F-369): REOPEN P1 — real bug 'Event loop is closed', NOT rate-limit (my earlier resolve was wrong)
  • fix(menu-module+sms): model never opens the call (two-voices double menu) + SMS survives multi-call loops
  • fix(menu-module): SILENT hub (Gemini re-read+improvised the menu — live transcript) + one-command build + fresh-menu proof
  • fix(menu-module): tap acceptance unblocked (epoch bridge, codex-consulted) + mid-join sweep anchor, deterministically proven
  • fix(menu-module): three live bugs fixed at the SHARED layers + every-pack contract gate (codex pair session)
  • fix(menu-module): kill the double menu read + measured sweep timing; new riff_cafe menu born from the pipeline
  • fix(menu-module): every menu return replays the word-timed announce — live trace showed calls live at the hub (no sweep)
  • feat(menu-module): deterministic sweep gates + live-anchor resync + tap now DRIVES the call (Phase B-lite)
  • docs(F-369): RESOLVED — spaced call succeeded, the ~50% was Telnyx rate-limiting (test artifact)
  • feat(menu-module): Phase A slice 2 — reusable web module, theme sheet, barge-in freeze, tap signal (codex-implemented, guided)
  • feat(menu-module): Phase A slice 1 — announce+hub pair, digit-first sweep-ready menus, live barge_in trace (codex-implemented, guided)
  • docs(menu-module): 'One menu module, every business' tutorial — gemini/claude-codex co-write (md + html)
  • docs(menu-module): fold gemini co-design decisions + codex feasibility corrections into v1 design
  • feat(space): joke of the day on both lines — date-indexed from the shared pool, punchline pause + synthesized crickets
  • feat(F-369 step 1): log the auto-send error reason — make failures self-diagnosing
  • docs(F-369): correct the diagnosis by code inspection — ~50%, likely rate-limit test artifact
  • docs(F-369): auto-send fails INTERMITTENTLY — caught live by the delivery telemetry
  • fix(business-pack): fold codex+gemini review rounds — kill dead-end act states, honest v0 topology
  • docs(business-pack): document v0.1 units (prerendered content, companion_link) + 12h refresh pipeline
  • feat(space-widgets): 12h refresh pipeline — importer→compile→prerender, fail-closed
  • test(space-widgets): all-options deterministic FSM sim — DTMF+voice routing, return-to-menu clears, companion send contract
  • feat(space-widgets): prerender Umbriel short-form audio — 8 states
  • feat(business-pack): widget-menu units + Space Channel widgets importer (TDD)
  • feat(auto-send): log the SMS RESULT, not just dispatch (close the 'did it send?' gap)
  • fix(auto-send): idempotent send_companion_link — no double-SMS from auto + manual
  • test(whisper-rescue): lock the live 'UFO files' rescue scenario end-to-end
93 commits

Shift-Left Validation, Deterministic Audio Sync, and Companion UI Overhaul

Implemented a robust 'shift-left' validation framework to catch schema and tool-reference errors at build time, alongside a deterministic audio-word alignment pipeline using WhisperX. Enhanced the companion interface with real-time karaoke read-along, auto-texting capabilities, and strict PII boundaries for improved user experience and security.

github-portfolio-search 1riff 92
▸ how to apply & commit details

How you can apply this

  • Implement build-time 'shift-left' gates (e.g., schema validators, phase-gate checks) to catch configuration drift and unknown tool references before deployment, ensuring deterministic runtime behavior.
  • Use WhisperX for offline, build-time word-level audio alignment to generate timing manifests, enabling precise client-side karaoke synchronization without relying on live LLM processing.
  • Adopt a parameterized guard system (e.g., slot_equals) and strict schema validation to enforce PII boundaries and prevent data hallucination in dynamic slot-filling flows.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • docs(F-367): empirically prove the tool-ref fix needs scoping (not a loop-tail hack)
  • feat(legal): promote pack-generated legal_intake to live — deterministic menu front door
  • docs(F-367): shift-left gap #2 found LIVE — unknown TOOL refs not build-caught
  • feat(business-pack): Space Channel NOC importer — noc_briefing.json → pack (TDD)
  • feat(business-pack): v0 schema validator + pack→flow compiler + 3 verticals (TDD)
  • feat(guards): slot_equals:<slot>:<value> parameterized guard (TDD)
  • docs(business-pack): fold codex plan review (25 findings) into schema v0 — rev 2
  • feat(auto-send): wire non-blocking call-start auto-text + enable for space_channel
  • feat(auto-send): pure decision layer for call-start companion auto-text (TDD)
  • docs(business-pack): riff_business_pack_v0 schema draft — atomic units, slot_equals guard, validation ownership
  • docs(business-pack): import-architecture brief + Fable 5 design feedback; hand-built legal_intake sample flow (F-367 shift-left target)
  • docs(design): mark ship-unit step 1 (no_match telemetry) DONE — 599d93c8
  • feat(menu-matching step 1): structured no_match telemetry helper (TDD, safe foundation)
  • docs(design): add code-grounded implementation plan for the ship unit
  • docs(design): fold Fable 5 review (APPROVE-WITH-CHANGES) — 3 decisions resolved
  • docs(design): fold codex plan-review (REVISE) into menu-matching design
  • docs(design): fast deterministic menu matching — live-diagnosed, for codex+Fable 5 review
  • docs(F-368): deploy-cycle due diligence — internal flags need a declared source-of-truth
  • docs(spec 9d): de-risk the loader-validation fix — 62-flow scan proves only companion_display is unknown
  • docs(spec 9d): prerequisite — loader silently drops unknown state fields (read_along + phase-gate need schema support; unknown-field validation is itself a shift-left gap)
  • docs(F-367): shift-left coverage gap — LI2 phase-gate NOT build-enforced; add declarative phase_gate + riffc check
  • companion piece 2.5 (slice): karaoke syncs to the audio — attach acoustic timings via topic rsid
  • docs(F-367): shift-left test PROVEN — legal_intake builds clean; build caught guards + PII
  • observability: log [audio-played] (read side) — rsid, word_timings, text — to compare vs [companion] display
  • docs: finish companion design (codex REVISE folded in) + file F-367 legal-intake shift-left test
  • docs(spec): revise companion design — audio-sourced read-along + per-state flag (fixes live read!=display)
  • companion: watch-along telemetry — log the presented surface per state change
  • companion piece 1: shift-left PII boundary for the follow-along read-along
  • docs(spec): generic companion follow-along — two-tier (bearer/phone-verified), shift-left PII, auto-text
  • F-366: companion topic read-along shows the actual spoken text (declared public slots)
  • docs(B-311): mark FIXED (54b0519a, codex APPROVE) — mutation logging + drift visibility
  • B-311: surface the silent runtime-config-override footgun (log mutations + expose drift)
  • docs(B-319): mark CLOSED — fix (110e54e9) verified + comprehensively tested (128 passed)
  • docs(remote-control): note Step A voice-agreement is build-time pre-verified (683546c4)
  • test(remote-control): prove arbiter==legacy on VOICE menu selections at build time
  • docs(F-363): log H3 first rung SHIPPED (03e6ff20); full ladder remaining
  • F-363 H3 (first rung): progressive offer-recovery prompt on the 2nd no-match
  • docs(F-363): mark B-323 live-parity follow-up CLOSED (3f944b35, codex APPROVE)
  • B-323 live parity: live offer-exhaustion uses the declared edge, not a hardcoded commit (ADR-0007)
  • docs(F-363): log H2 SHIPPED (both paths) + file B-323 live-parity follow-up
  • F-363 H2: disambiguate bare affirmations against 2+ offered times (both paths)
  • test: drive current pizza cadence in stale-ask readback e2e (stale test, not a regression)
  • test: fix stale end_state assertion in property_trouble_ticket air scenario test
  • fix: resume-after-drop broken for modular scheduling flow (state rename not propagated)
  • fix: branch-aware has_unfilled — extractor no longer over-fires on pickup orders
  • test: fix stale assertions in scheduling_v1 blocked-days test (wording + restructure)
  • choice_compiler: deterministic entity tier — clock time -> time, relative-week -> day
  • B-323: fix ADR-0007 violation — locked_choice routes no-match escalation via declared edge
  • backlog: B-323 — ADR-0007 violation in locked_choice (codex-verified fix plan)
  • test: fix stale collect_day reference in static_audio state API test
  • B-304: reject fabricated phone digits in the live update_slots path (grounding guard)
  • triage(B-304): de-risk the phone-hallucination fix — reuse _grounded_phone, wire into tool_handler
  • docs(F-362): SHIPPED — shift-left lint gate for scheduling offers, with evidence
  • F-362: lint gate — scheduling offers MUST declare kind:time_select (shift-left)
  • F-361 step 3: dispatch on declared kind:time_select (legacy gate as fallback)
  • F-361 step 2: extract TimeSelectResolver (behavior-preserving)
  • docs(F-361): progress log — plan+codex review, Step 1 shipped with evidence
  • F-361 step 1: additive locked_choice 'kind' selector field (shift-left validated)
  • backlog: F-366 — companion subflows/reports show correct spoken text (runtime push)
  • shift-left: make auto-align opt-in (build paths only) + boot prereq check
  • shift-left: prerender auto-aligns new audio + committed Playwright render harness
  • companion: deterministic per-key menu highlight (digit-anchored control_timings)
  • timing(piece 6): alignment reproducibility guard (real audio)
  • docs: Jony Ive caller-orientation review of the companion page
  • timing(piece 5, client half): companion read-along consumes acoustic word_timings
  • timing(piece 3): shift-left gate — suite fails if any say/menu asset is untimed
  • timing: backfill word_timings for all 54 static-audio assets (+ prerendered WAVs)
  • timing piece 2: word-timing manifest backfill (build hook), tested + validated
  • timing piece 1: build-only WhisperX word-alignment tool (validated on real audio)
  • docs(spec): incorporate full codex review (verdict: revise-then-build)
  • docs(spec): feasibility spike GREEN + dependency-isolation finding
  • docs(spec): revise timing spec per codex design review — 3 substantive corrections
  • riffc(L0-11): fix over-strict voice-path rule — recognize upstream + LLM-driven prompts
  • flows(tutorials): type the untyped collect slots (L0-10)
  • docs(spec): word-level karaoke timing design (WhisperX build-time alignment, shift-left)
  • companion: harden menu-announce heuristic — no welcome/confirm false-positives (all 60 flows)
  • companion: shift-left fix for two menu bugs — correct by construction in the compiler
  • test(companion): lock network-resilience invariants after an adversarial robustness audit
  • test(companion): CI backstop for the client page (JS balance + security invariants)
  • companion: fix route-slot leak + empty receipt (Ive third-pass P0/P1)
  • test(companion): lock the client↔server payload contract (menu→keypad, media→karaoke)
  • companion: second-pass Ive polish — announce changes, honest keypad, phase + label fixes
  • fix(regression): revert auto_send_companion — a side-effecting SMS act-state stalls the deterministic path
  • riffc: commit the surface renderer (A1) + L0-10/11/12 rules the branch imports
  • companion: honest karaoke + 'heard' framing with correction (Ive P1-1/P1-2)
  • companion: caller orientation (phase strip + elapsed) + remote-control item 3 (spec provider)
  • companion: phone-first redesign — keypad menus (gold read-along) + content hero
  • space_channel: option 0 — Jokes (random clean joke, deterministic, no LLM)
  • companion: karaoke read-along + live slot echo (generic, all flows)
  • feat(companion): auto-text the follow-along link at call start (Space Channel + property mgmt)
  • quality(RunRecord #5): retroactive audit — the whole contract over real §6 traces
  • quality(RunRecord #4): promotion gate — a pure function over RunRecords
96 commits

Builds Deterministic Voice Scheduler with Provable Remote Control

This update implements a deterministic calendar booking engine with conflict recovery and introduces a secure, content-addressed remote control layer for voice interfaces. It establishes hard invariants for input arbitration and provides real-time, PII-scrubbed companion surfaces for live call monitoring.

github-portfolio-search 1riff 95
▸ how to apply & commit details

How you can apply this

  • Implement deterministic state machines for voice bookings by normalizing LLM time ranges to ISO formats and enforcing 'one-route-winner' invariants to prevent race conditions.
  • Reuse the InputArbiter pattern for multi-modal inputs (DTMF/voice/tap) by applying monotonic epoch tracking and strict capability locking to ensure thread-safe, first-valid-wins arbitration.
  • Adopt content-addressed RunRecords to create provable execution verdicts, enabling auditable traces where unprovable passes are treated as failures for higher reliability.
  • Deploy PII-scrubbed WebSocket companions that mirror live call states to mobile surfaces, using strict call-ID scoping to isolate concurrent user sessions securely.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • test: regen space_channel riffc golden after companion_confirm → locked_choice
  • fix(demo_hub): companion confirm is deterministic yes/no (same stall fix as Space Channel)
  • fix(space_channel): companion confirm is now deterministic yes/no (fixes stall + voice)
  • quality(RunRecord #3): Layer 1 hard invariants — one-route-winner (I8) + no-long-silence
  • F-365 slice 1: companion page renders the current menu (read-only surface mirror)
  • quality(RunRecord #2): the RunRecord proof object — content-addressed, provable-verdict
  • docs+backlog: Companion Surface design v0 (F-365, remote-control item 3)
  • quality(RunRecord #1): §6 trace-grammar validator — "unprovable pass is a fail"
  • calendar(read): caller-ID-scoped appointment listing — scope + isolation core
  • test(demo_hub): integration-level menu navigation (real evaluator, not just structure)
  • demo_hub: smoother greeting that leads into the menu
  • docs: add live-phone hidden-schedule + demo_hub to the Fable 5 index
  • demo_hub: declare caller_phone semantic_type (slot-type ratchet)
  • demo_hub: consolidated tutorial line (menu → book / verify / text-follow-along)
  • space_channel: regen riffc golden + declare booking-slot semantic_types
  • test(space_channel): lock in the hidden "schedule" jump (live-flow regression guard)
  • space_channel: HIDDEN "schedule" option → jumps into the booking flow
  • docs: test runbook for the calendar shift-left + companion remote-control work
  • docs(cleanup): mark scheduling_v1 DEPRECATED as a booking engine
  • docs: refresh Fable 5 index with the calendar shift-left + companion + humanness work
  • docs(cleanup): fix drifted book-appointment tutorial (removed triage states)
  • docs(design): Calendar Companion — live offer mirror (v0)
  • remote-control item 2: companion-WS control wire (tap→§1.3 ladder) + hardening
  • feat(calendar shift-left): load-time guardrail — calendar mutations must be verified
  • docs(spec+backlog): ground calendar auth in the precompiler; gate F-364 RunRecord
  • docs(spec): calendar concierge + calendar-action modules design
  • fix(humanness): stop speaking "(internal)" placeholder lines on booking act-states
  • docs: calendar flows & tutorials walkthrough (+ index fix, scheduler docs linked)
  • test(scheduler): pin the time_range fix at the tool boundary (acceptance #4)
  • docs: fold P1 time_range fix into the Fable 5 morning index (+ honest branch/rigor notes)
  • scheduler(P1): time_range fast-path — normalize LLM ranges/ISO instead of hard-escalating
  • docs: scheduler use-cases + capability scope for Fable 5 v0 design
  • docs: link the runnable time_range repro test into the scheduler problem statement
  • test(scheduler): repro + regression guard for the time_range booking fragility
  • docs: problem statement — scheduler demo booking fragility (for Fable 5)
  • docs: refresh Fable 5 index — Space Channel feature + final aggregate (7622/108)
  • space_channel: advertise "text follow along" in the menu + return to main menu after send
  • docs(scheduler): document book_appointment_v1 investigation (out of deterministic scope)
  • docs(scheduler): refresh aggregate to final state (both B-CAL fixes: 7622 pass/108 fail, zero new)
  • docs(scheduler): update sim coverage count to 130 (thorough conflict/rejection/recovery)
  • test(scheduler): rejection-exhaustion + deny-during-recovery coverage
  • test(scheduler): lock in conflict/failure during the recovery path
  • docs: record B-CAL-2 (second conflict-recovery bug) caught + fixed
  • fix(scheduler): B-CAL-2 — clear lingering slot_conflict on repeat consecutive races
  • docs: B-CAL-1 is fixed + validated — update report + Fable 5 index
  • fix(scheduler): B-CAL-1 — re-offer fresh slots on a same-slot booking race
  • docs(scheduler): localize B-CAL-1 root cause to dispatch_required_tools' post-book walk
  • docs(scheduler): record the B-CAL-1 fix attempt + the flakiness found/fixed
  • test(scheduler): fix wall-clock flakiness in the calendar sim harness
  • docs: add control_router to the Fable 5 session index
  • control_router: §1.3 validity-ladder composition (control_event → arbiter/capability)
  • docs(scheduler): document the sim's deterministic scope boundary
  • docs: Fable 5 session review index (single entry point for the morning)
  • docs(scheduler): record the whole-repo aggregate integration check
  • test(scheduler): cover the propose-other-days recovery→book arc
  • test(scheduler): deterministic calendar simulator + ~120 permutation tests
  • test(remote-control): add two mutation-verified shadow regression guards
  • live/session: wire InputEvent+InputArbiter into the phone path (SHADOW, flag-off)
  • control_event: harden the §1.1 wire gate per codex review
  • docs: preserve the gated-goal design handoffs (scheduler + quality-contract) in git
  • control_event (Step 3 wire layer, remote-control §1.1/§1.2): parse+validate inbound frames
  • docs: control-layer status report for Fable 5 (InputEvent+Arbiter+Capability), indexed
  • capability: harden per codex review — lock (one-pending/one-grant), nonce, no stale frame
  • docs: record capability §3.1 (A4 proven) in the remote-control build status
  • capability (Step 5, remote-control §3.1): device-pairing channel-bind — A4 proven
  • input-arbiter: harden per codex review — monotonic epoch, thread-safety, real A2 proof
  • docs: record arbitration (A2 proven) in the remote-control build status
  • input-arbiter (Step 2/3, remote-control §1.3): first-valid-wins epoch arbitration + A2 race
  • input-event: harden per codex review — None-coercion, coverage floor, decision-trace parity
  • docs: index the strong-typing quality report + record Step 1/2 impl status
  • input-event (Step 2, remote-control §1.3/I8): one router for dtmf/voice/tap — byte-identical
  • docs+test: strong-typing quality report for Fable 5 + 53-case adversarial suite
  • slot-typing: implement date (extraction + IMPLEMENTED_TYPES) — completes date strong typing
  • docs: apply Fable 5 rulings — OD-R6 device-pairing channel-bind + OD-R7 reask
  • docs: record codex design findings as OD-R6 (channel-bind nonce) + OD-R7 (L0-11)
  • slot-typing: enforce enum membership at runtime (codex review #3)
  • slot-typing: enforce unified type: at runtime + reject conflicting decls (codex review)
  • slot-typing (schema 0.2, remote-control §2.2): strong typing + riffc L0-10
  • docs: add remote-control design v0 (Fable 5) — control events + surface schema
  • companion: follow along on EVERY transition, not just static hops (live fix)
  • test: end-to-end companion integration through the REAL transport
  • companion: address codex multi-call review — never evict a live call; scope admin-replay clear
  • companion: prerender sent/failed audio (Umbriel British voice)
  • companion: link becomes the final receipt after the call ends
  • companion: multi-call keying — concurrent callers each see only their own call
  • companion: strict call-id scoping — a blank ?call= is not a wildcard (codex #2/#4)
  • companion: public per-call §6 trace WebSocket (/ws/companion) — live push
  • companion: wire §6 trace to the live engine bus + public PII-projected trail feed
  • companion: public mobile live page + PII-scrubbed per-call state poll
  • companion (slice 3): wire the 'text'/'text link' command into Space Channel
  • companion (slice 1): send-link module — SMS the caller a per-call live link
  • test: golden riffc regression — lock census/shape/L0-findings on 3 anchor flows
  • evidence: consolidated per-permutation report (§6 trace + real-audio transcript)
  • corridor: follow/pin resume-pill (build step 4)
  • fix(web): barge-in pre-roll (no more 'say it twice') + lower threshold
11 commits

Riff Adds Voice Barge-In, Corridor Simulation Traces, and Console Mockups

The Riff project introduces voice barge-in capabilities for interrupting menus and enhances simulation tooling with data-driven trace emitters. It also stabilizes the audio pump with critical fixes and adds a console corridor mockup for temporal projections.

github-portfolio-search 1riff 10
▸ how to apply & commit details

How you can apply this

  • Implement voice barge-in by allowing users to speak over active menu briefings to trigger immediate interruptions.
  • Reuse the extracted _maybe_push_static_audio helper and regression tests to stabilize audio pumping logic in speech-to-bot systems.
  • Build data-driven simulations by emitting per-permutation traces (like Space Channel OD-M5) to validate complex state transitions.
  • Design console interfaces using a 'corridor' layout that projects past, present, and future states around a central cursor.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
riff
  • feat(web): barge-in — speak over the menu/briefing to interrupt it
  • fix(web): loop-back stalled at the re-announced menu — browser blocked the replay
  • docs: console/corridor/sim tooling guide (how to run + review) + index
  • refactor+test: extract _maybe_push_static_audio from the s2b pump + regression test
  • fix(web): NameError crash killed the session pump on every static-audio push
  • corridor: L2 overview — hub layout, gold trail, return rail, orphan tray, Z toggle
  • codex cleanup: fix trace null-token, sim collect-skip + audio source, DTMF check
  • corridor: data-driven — replays real per-permutation §6 sim traces
  • sim: §6 trace emitter per Space Channel permutation (OD-M5) + tests
  • console: L1 corridor mockup — past|now|next projection around a cursor (build step 2)
4 commits

Automated Portfolio Data Regeneration and Site Deployment

The developer executed automated workflows to regenerate portfolio data, update L0 documentation, and publish the updated site to davidbmar.com. These routine maintenance tasks ensure the public-facing portfolio remains synchronized with the latest underlying data and documentation.

github-portfolio-search 4
▸ how to apply & commit details

How you can apply this

  • Implement a 'regenerate and publish' script to automate static site updates from dynamic data sources.
  • Use CI/CD pipelines with [skip ci] flags for non-code changes like documentation regeneration to avoid build loops.
  • Separate daily digest generation from core deployment logic to maintain clean commit history and efficient builds.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • Deploy davidbmar.com: regenerate portfolio data + publish web/
  • chore: regenerate L0 docs + daily digest [skip ci]
2 commits

Fix Calendar Booking Title Bug and Regenerate Portfolio Docs

Resolved a critical issue where blank calendar slots overwrote booking titles in the provider service. Concurrently, automated documentation regeneration and daily digest updates were executed for the GitHub portfolio search tool.

cal-provider 1github-portfolio-search 1
▸ how to apply & commit details

How you can apply this

  • Implement validation logic to prevent empty strings from overwriting existing metadata fields during booking operations.
  • Automate documentation builds and status digests using CI skip flags to maintain project visibility without triggering full pipelines.

Commits

cal-provider
  • Merge: empty-title booking fix (blank slot no longer clobbers title)
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
4 commits

Stabilize Booking Titles and Pin Narrative Slugs Across Rebuilds

Fixed a state machine bug preventing blank slots from overwriting existing booking titles while enhancing the portfolio search tool to persist narrative slugs during cold rebuilds. These updates ensure data integrity in scheduling and maintain consistent content linking despite voice regeneration.

cal-provider 1github-portfolio-search 3
▸ how to apply & commit details

How you can apply this

  • Implement FSM guards that check for existing values before applying blank updates to prevent accidental data loss in booking systems.
  • Pin content identifiers (like Learn slugs) during static site regeneration to preserve URL stability and SEO value across full rebuilds.

Commits

cal-provider
  • fix(fsm): blank slot value no longer clobbers a filled booking title
github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • Merge pull request #7 from davidbmar/feat/narrate-render-and-link
  • feat(narrate): pin Learn slugs across cold rebuilds + regen pages in new voice
4 commits

Redesign Learn Pages with Punchy Voice and Unified Design System

The Learn tutorial experience was overhauled to adopt a punchy, concrete narrative voice and align visually with the davidbmar.com design system. This update merges rendering improvements and documentation regeneration to ensure consistency across the portfolio search platform.

github-portfolio-search 4
▸ how to apply & commit details

How you can apply this

  • Adopt a punchy, concrete tone in tutorial copy to improve user engagement and clarity.
  • Reuse the davidbmar.com design system components to maintain visual consistency across different application modules.
  • Automate documentation regeneration and daily digests via CI skips to keep project docs current without manual overhead.

Commits

github-portfolio-search
  • feat(narrate): rewrite Learn tutorial voice to be punchy and concrete
  • chore: regenerate L0 docs + daily digest [skip ci]
  • Merge pull request #6 from davidbmar/feat/narrate-render-and-link
  • feat(narrate): redesign Learn pages to match the davidbmar.com design system
30 commits

Build an Automated Portfolio Narrator with LLMs and MiniRM Retrieval

This update introduces a CLI tool that scans merged GitHub PRs, extracts technical facts using Qwen3.7, and generates structured learning tutorials. It employs MiniRM cosine retrieval for theme matching and maintains a resilient local state store to ensure deterministic, idempotent content generation.

github-portfolio-search 30
▸ how to apply & commit details

How you can apply this

  • Implement a PR scanning pipeline using merged_at cursors and overlap windows to safely fetch files and metadata without duplication.
  • Use MiniRM cosine retrieval to map raw code changes to specific thematic categories before triggering LLM-based fact extraction.
  • Adopt a repo-local state store with content hashing and membership ledgers to guarantee idempotent tutorial generation and prevent re-processing.

Commits

github-portfolio-search
  • Merge pull request #5 from davidbmar/feat/narrate-render-and-link
  • build(narrate): publish riff Learn tutorials + link from /daily
  • feat(narrate): link Learn deep-dives from the /daily feed
  • fix(narrate): render structured pattern/how-to-apply items as labelled bullets
  • Merge pull request #4 from davidbmar/feat/portfolio-narrate
  • fix(narrate): codex review - loss-safe cursor, honor --model, validate classifier theme_id
  • fix(narrate): retry tutorial generation + per-theme batch resilience
  • fix(narrate): allow legitimately-empty arrays in PRRecord validation
  • chore: regenerate L0 docs + daily digest [skip ci]
  • fix(narrate): real LLM client factory, repo-scoped membership, publish-once guard
  • fix(narrate): skill uses ghps console script, not python -m ghps
  • feat(narrate): portfolio-narrate Claude Code skill wrapper
  • feat(narrate): ghps narrate CLI command
  • feat(narrate): end-to-end pipeline orchestration (scan->render)
  • fix(narrate): defensive slug guard + escaped href + validation/escaping tests
  • feat(narrate): tutorial prose generation + escaped /learn/ HTML pages
  • feat(narrate): maturity scoring + candidate->mature lifecycle
  • fix(narrate): coerce unknown LLM classify action to ignore (no NameError)
  • feat(narrate): attach|create|ignore classifier with immutable slug + ledger
  • feat(narrate): MiniLM cosine retrieval for theme candidates
  • feat(narrate): LLM fact extraction into validated PRRecord (Qwen3.7)
  • fix(narrate): deterministic evidence ordering via path tiebreaker
  • feat(narrate): deterministic diff filter + evidence selection
  • feat(narrate): merged_at-cursor PR scan with overlap window + seen-skip
  • feat(narrate): GitHub merged-PR and PR-files fetchers
  • fix(narrate): sanitize path keys, utf-8 writes, all_themes assertion
  • feat(narrate): repo-local state store (cursor, records, membership ledger)
  • feat(narrate): PRRecord/ThemeRecord schemas, validators, content hashing
  • docs: add portfolio-narrate implementation plan (13 TDD tasks, v1)
  • docs: add portfolio-narrate design spec (PR-grounded applied tutorials)
1 commit

Automated Documentation Regeneration for GitHub Portfolio Search

This update triggers the regeneration of L0 documentation and daily digest outputs for the github-portfolio-search project. The change is marked as a chore with CI skipping, indicating a maintenance task rather than a feature addition.

github-portfolio-search 1
▸ how to apply & commit details

How you can apply this

  • Implement automated documentation regeneration scripts to keep L0 docs synchronized with code changes without manual intervention.
  • Use [skip ci] tags for non-code maintenance tasks like doc generation to optimize pipeline resources and reduce build times.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
3 commits

Enable Single-Repo Documentation Publishing in CI

Added an 'only' input to the documentation generation workflow, allowing targeted publishing for individual repositories. This update streamlines the CI process by preventing unnecessary full-portfolio rebuilds during single-repo updates.

github-portfolio-search 3
▸ how to apply & commit details

How you can apply this

  • Add an optional 'only' input parameter to your CI workflow to filter execution scope.
  • Use conditional logic in documentation generators to support single-repo publishing modes.
  • Reduce CI build times by isolating documentation regeneration to changed repositories.

Commits

github-portfolio-search
  • feat(ci): add 'only' input to gen-docs for single-repo publish
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
6 commits

Automate Static Asset Publishing and Add Evaluation Hierarchy Diagrams

This update automates the republishing of binary assets like images, CSS, and JS within the documentation pipeline. It also introduces a four-tier evaluation hierarchy diagram and updates gitignore rules to exclude Playwright artifacts.

github-portfolio-search 6
▸ how to apply & commit details

How you can apply this

  • Implement automated republishing of static binary assets (images, CSS, JS) to keep documentation sites synchronized with code changes.
  • Visualize complex evaluation logic by adding hierarchical diagrams directly to your project docs for better stakeholder alignment.
  • Refine .gitignore configurations to exclude test automation artifacts like Playwright files, keeping repositories clean.

Commits

github-portfolio-search
  • chore: regenerate L0 docs + daily digest [skip ci]
  • chore: regenerate L0 docs + daily digest [skip ci]
  • feat(docs): republish docs/html/ binary assets (images/css/js) automatically
  • chore: regenerate L0 docs + daily digest [skip ci]
  • docs(riff): add four-tier evaluation hierarchy diagram + gitignore playwright
  • chore: regenerate L0 docs + daily digest [skip ci]
7 commits

Automated Daily Digests and Resilient Doc Generation

The pipeline now auto-builds daily digests and deploys them nightly, featuring a resilient documentation generator that handles API rate limits and empty repositories. Updates include improved CI boolean logic and a comprehensive repo-overview card for better navigation.

github-portfolio-search 7
▸ how to apply & commit details

How you can apply this

  • Implement exponential backoff for API clients (e.g., DashScope) to gracefully handle 429 rate limit errors during bulk operations.
  • Configure CI deploy steps to check boolean inputs directly instead of string comparison to prevent deployment logic errors.
  • Add guards to skip empty repositories (409 errors) in documentation generators to ensure build stability.

Commits

github-portfolio-search
  • fix(ci): deploy step condition for boolean input (inputs.deploy, not == 'true')
  • chore: regenerate L0 docs + daily digest [skip ci]
  • feat(automation): nightly gen-docs now also builds the daily digest + auto-deploys
  • chore: regenerate L0 project docs [skip ci]
  • fix(gen-docs): skip empty repos (409) + add 429 backoff to DashScope client
  • feat(docs): always-complete docs index with a prominent repo-overview card
  • docs(riff): republish riff's 17 eval/methodology docs + propagate Daily nav
2 commits

Optimize GitHub Portfolio Search with Smart Caching and Batch Regeneration

Implemented a caching mechanism to skip processing for unchanged days, significantly reducing redundant engine runs. Additionally, enabled resilient batch regeneration of 145 days of data using Codex to ensure comprehensive and robust historical updates.

github-portfolio-search 2
▸ how to apply & commit details

How you can apply this

  • Implement idempotent caching logic to detect unchanged daily states and bypass heavy engine execution, saving compute resources.
  • Use resilient batch processing patterns with AI tools like Codex to reliably regenerate large historical datasets without manual intervention.

Commits

github-portfolio-search
  • feat(daily): cache unchanged days — re-runs skip the engine entirely
  • feat(daily): regenerate all 145 days with codex + resilient batch generation
4 commits

Local MLX Search Engine with Auto-Generated Daily Digests

Integrated an in-process Qwen3.5-4B MLX engine to power a unified search across project corpora and documentation. Added automated daily headline digests and regenerated navigation to streamline content discovery.

github-portfolio-search 4
▸ how to apply & commit details

How you can apply this

  • Deploy lightweight local inference by embedding the Qwen3.5-4B model via MLX for serverless, in-process search capabilities.
  • Automate content summarization by using LLMs to generate apply-focused daily headlines from recent commit activity.
  • Unify site navigation and search indexing by regenerating project corpora and documentation pages into a single accessible structure.

Commits

github-portfolio-search
  • feat(daily): free in-process MLX engine + backfill 144 days (Qwen3.5-4B)
  • feat: daily headline digest (/daily) — codex-generated, apply-focused
  • chore(web): regenerate project corpus + pages with unified nav
  • feat: unify search on projects corpus + per-project docs + integrated nav
3 commits

Local MLX Qwen3.5-9B Provider with Reliable JSON Output

Integrated a local MLX provider for Qwen3.5-9B, resolving JSON parsing issues by enforcing a no-think mode. Enhanced reporting capabilities now include faithful summaries and spine extracts via a verbose flag.

generate_title_headline_hooks 3
▸ how to apply & commit details

How you can apply this

  • Implement a local MLX provider for Qwen3.5-9B to reduce API dependency and latency.
  • Enforce 'no-think' modes in LLM providers to guarantee parseable JSON responses without extra cleaning logic.
  • Add verbose reporting flags to expose intermediate data artifacts like summaries and spine extracts for debugging.

Commits

generate_title_headline_hooks
  • feat: faithful summary + spine extracts in a --verbose report
  • Merge feat/local-mlx-qwen: local MLX Qwen3.5-9B provider + no-think JSON fix
  • feat: local MLX Qwen3.5-9B provider with reliable no-think JSON
6 commits

Per-Project Docs, Recency Search, and Mermaid Rendering Fixes

This update introduces per-project documentation publishing with recency-based findability and resolves critical rendering issues for Mermaid diagrams and dark mode visibility. It also fixes routing to ensure project documentation pages load correctly without requiring trailing slashes.

github-portfolio-search 6
▸ how to apply & commit details

How you can apply this

  • Implement per-project documentation generation that indexes by recency and title to improve content discoverability in portfolio search tools.
  • Configure web server or router rules to handle documentation routes gracefully without enforcing trailing slashes for better URL flexibility.
  • Apply CSS hygiene fixes to prevent white-on-white text in dark mode and ensure Mermaid diagram syntax errors display visible icons.

Commits

github-portfolio-search
  • Merge pull request #3 from davidbmar/fix/mermaid-parens-and-dark-mode
  • fix(render): Mermaid syntax-error icon + white-on-white hygiene panel
  • Merge pull request #2 from davidbmar/fix/docs-no-trailing-slash
  • fix(docsgen): make /projects/<slug>/docs work without a trailing slash
  • Merge pull request #1 from davidbmar/feat/per-project-docs-and-recency
  • feat(docsgen): per-project docs/html publishing + recency/title findability
2 commits

Secure Local Artifacts and Refresh Project Documentation

Updated the repository configuration to exclude local security reports from public view and regenerated the L0 project documentation. These maintenance tasks ensure cleaner version control history and up-to-date reference materials for the portfolio search tool.

github-portfolio-search 2
▸ how to apply & commit details

How you can apply this

  • Exclude sensitive local artifacts like .gstack/ security reports via .gitignore to prevent accidental leaks in public repositories.
  • Automate documentation regeneration using skip-ci tags to keep project references current without triggering unnecessary build pipelines.

Commits

github-portfolio-search
  • chore: gitignore .gstack/ to keep local security reports out of the public repo
  • chore: regenerate L0 project docs [skip ci]
1 commit

Regenerate L0 Project Documentation for GitHub Portfolio Search

This update regenerates the L0 project documentation for the GitHub portfolio search tool. The change ensures that the project's documentation is up-to-date and accurate.

github-portfolio-search 1
▸ how to apply & commit details

How you can apply this

  • Automate documentation regeneration to keep project docs current with minimal manual effort.
  • Use skip-ci tags for documentation-only updates to avoid unnecessary build pipelines.

Commits

github-portfolio-search
  • chore: regenerate L0 project docs [skip ci]
2 commits

Unify GitHub Portfolio Search CI Authentication and Scheduling

Standardized CI pipelines to use the GHPS_PAT environment variable for both documentation generation and repository reindexing. Added a nightly schedule to the reindex job to ensure data freshness with proper repo scope permissions.

github-portfolio-search 2
▸ how to apply & commit details

How you can apply this

  • Centralize GitHub API authentication in CI by referencing a single GHPS_PAT secret across all jobs.
  • Automate periodic data updates by configuring cron schedules for reindexing workflows.

Commits

github-portfolio-search
  • fix(ci): gen-docs uses GHPS_PAT (unify with reindex)
  • fix(ci): reindex uses GHPS_PAT (repo scope) + nightly schedule
27 commits

AI-Readable Project Docs and Safer Google Photo Ownership

github-portfolio-search expanded into an AI discovery surface with generated repo docs, a project-docs index, docs search, an llms.txt manifest, homepage links, and incremental auto-updates covering 132 of 137 repos. picture_qr_code_2_login added signed-in UI, safer sign-out behavior, and ownership-based photo deletion via Google self-delete plus admin paths.

github-portfolio-search 23picture_qr_code_2_login 4
▸ how to apply & commit details

How you can apply this

  • Publish generated per-repo docs plus a listing page so portfolio projects are discoverable by humans, search, and LLMs.
  • Add an llms.txt manifest with tiered progressive disclosure so AI tools can start lightweight and drill into richer docs.
  • Keep docs search useful with stopword filtering and incremental --stale regeneration instead of rebuilding everything.
  • For Google-auth photo apps, stop fetches after sign-out, guard GIS onload races, and enforce owner/admin delete rules.

Commits

github-portfolio-search
  • chore: deploy artifacts (For LLMs/AI surfacing)
  • docs: surface 'For LLMs / AI' discovery in README + on the live site
  • chore: deploy artifacts (L2 AI discovery)
  • feat: L2 AI discovery — llms.txt manifest + tiered progressive disclosure
  • chore: deploy artifacts (homepage docs link)
  • feat: link Project Docs from the homepage + explainer banner
  • chore: deploy artifacts (132-doc batch)
  • feat: L0 gap-fill — 132/137 repos documented
  • docs: backlog B-021 — gen-docs rate-limit backoff
  • chore: deploy artifacts (68-doc batch)
  • feat: L0 batch — 68 repos documented (62 new this run)
  • refactor: organization + efficiency pass on docsgen (Task 14)
  • fix: filter stopwords in docs search so prose doesn't skew ranking
  • feat: L2 — find repos by search/LLM over the docs feed (Task 15)
  • feat: auto-update Action + incremental --stale generation (Task 11)
  • chore: deploy artifacts from L0 batch deploy
  • feat: L0 batch — generate docs for 5 more repos + listing page
  • feat: L1 project-docs index/listing page
  • docs: backlog B-020 — deployer IAM lacks s3:PutObject (deploy needs admin)
  • chore: record L0 deploy in deploy log
  • chore: deploy artifacts from L0 guinea-pig deploy
  • feat: L0 guinea-pig — generated docs for generate_title_headline_hooks
  • fix: DashScope adapter for Qwen3.x — disable thinking + content fallback
picture_qr_code_2_login
  • fix: no /photos fetch after sign-out; guard GIS onload race
  • feat: sign-out button + 'Signed in as' indicator
  • feat: ownership-based photo delete (Google self-delete + admin)
  • docs: spec for ownership-based photo delete (drops local accounts)
55 commits

LLM Rails for Reusable Docs and Headline Generation

This day built two LLM-backed systems: a v1 headline-generation API with provider seams, scoring, persistence, integrity checks, and live Alibaba Qwen support, plus a self-documenting portfolio pipeline that turns GitHub repo context into validated HTML project pages. The work also hardened real-world edges with schema-level 422s, 502 wrapping, JSON/XSS defenses, resilient batch behavior, Mermaid rendering fixes, and a CloudFront-fronted Google Sign-In photo login.

generate_title_headline_hooks 28github-portfolio-search 25picture_qr_code_2_login 2
▸ how to apply & commit details

How you can apply this

  • Reuse the headline pipeline pattern: domain models, archetype registry, LLM client seam, scorer protocol, weighted ranking, SQLite persistence, and a POST /headlines surface.
  • Apply fail-closed content safety: deterministic quote-integrity gates, injectable scorers, schema validation for 422s, and wrapped generation failures for clean 502s.
  • Adapt the portfolio-docs flow: fetch GitHub branch/compare/PR context, derive repo hygiene TODOs, generate validated records through provider-agnostic LLM clients, then render JSON islands, Mermaid, and aggregate feeds.
  • Copy the hardening checklist: isolate provider imports, test malformed LLM JSON, escape script/pre breakouts, make batch jobs tolerate LLM call failures, and serve auth UI reliably behind CloudFront.

Commits

generate_title_headline_hooks
  • docs: document multi-provider support + add shareable HTML landing page
  • Merge feat/dashscope-integration-and-quote-guard: live Alibaba Qwen provider + quote-integrity guard
  • feat: live Alibaba Qwen provider + deterministic quote-integrity guard
  • Merge feat/headline-generation-v1: v1 headline generation pipeline
  • docs: record non-blocking v1 review findings as backlog
  • fix: make scorers injectable via PipelineOptions so pipeline.py needs no edit
  • fix: wrap generate_variants failure as GenerationError -> 502
  • fix: validate archetypes at schema layer to return 422 not 500
  • docs: README with run/test/roadmap
  • feat: POST /headlines endpoint
  • feat: API request/response schemas
  • feat: SQLite store with tenant seam
  • feat: pipeline orchestrator
  • feat: ranking with weighted score breakdown
  • feat: CTR scorer stub (Phase-3 seam)
  • feat: LLM-judge scorer
  • feat: heuristic scorer
  • feat: Scorer protocol seam
  • feat: fail-closed integrity gate
  • feat: variant generation
  • feat: spine extraction
  • test: enforce anthropic import isolation
  • feat: LLM client seam with fake double
  • feat: archetype registry
  • feat: domain models
  • chore: project scaffold
  • Add v1 implementation plan: 18 TDD tasks
  • Add v1 design: programmatic headline generation
github-portfolio-search
  • fix: render Mermaid via ESM build so diagrams actually render
  • docs: L0 implementation plan (writing-plans output)
  • docs: session log for L0 project-docs implementation
  • fix: handle non-dict LLM JSON + ensure_ascii in script blocks (final review)
  • refactor: harden screenshot discovery + cover escaping (Task 12 review)
  • feat: human-facing pages — UI screenshot + quickstart + features
  • fix: make batch resilient to LLM call failures (Task 9 review)
  • feat: gen-docs orchestrator + CLI command + env scaffolding
  • refactor: match export.py JSON convention + tighten aggregate tests (Task 8 review)
  • feat: aggregate records into web/data/projects.json feed
  • fix: close ld+json and <pre> XSS breakout vectors (Task 7 review)
  • feat: render structured record to HTML page (JSON island + Mermaid)
  • harden: enforce + test record_gen trust boundary (Task 6 review)
  • feat: generate validated structured records via LLM seam
  • refactor: harden _extract_json + cover Anthropic request shape (Task 5 review)
  • feat: provider-agnostic LLM client seam (DashScope + Anthropic)
  • refactor: flatten default-branch heuristic + cover no-branches case (Task 4 review)
  • feat: assemble per-repo generation context
  • fix: paginate fetch_open_prs + log unexpected compare status (Task 3 review)
  • feat: add GitHub branch/compare/PR fetchers for hygiene
  • refactor: simplify ahead-by guard + cover missing-key path (Task 2 review)
  • feat: derive repo-hygiene TODOs from branch/PR state
  • refactor: clarify schema empty-string policy + cover validator edge branches
  • feat: add L0 record schema + validator
  • docs: add L0 self-documenting-portfolio design spec
picture_qr_code_2_login
  • fix: reveal Google button reliably; front the app with CloudFront
  • feat: Google Sign-In, photo attribution, and dark login theme
2 commits

Login Fork Documents Isolated Picture QR Album Stacks

The picture_qr_code_2_login repo was documented as the login-focused fork, with its README mapping the three isolated stacks. A login design spec and isolated picture-qr-album-login deployer ARNs were added so deployment boundaries are explicit.

picture_qr_code_2_login 2
▸ how to apply & commit details

How you can apply this

  • Mark a fork’s purpose directly in the README so downstream builders know which variant they are reusing.
  • Map each isolated stack in docs to make environment boundaries easier to understand before deployment.
  • Record deployer ARNs alongside the design spec so infrastructure handoff includes the identities needed to deploy.

Commits

picture_qr_code_2_login
  • docs(readme): mark this as the login fork; map the 3 isolated stacks
  • docs: login design spec + isolated picture-qr-album-login deployer ARNs
2 commits

Citrus Graduation Cards Become the Default

Both QR code projects now default their graduation-card.pdf output to the citrus theme. The same chore landed in the base project and the login variant, keeping their generated card defaults aligned.

picture_qr_code 1picture_qr_code_2_login 1
▸ how to apply & commit details

How you can apply this

  • Set a themed PDF artifact as the default output so users get the intended design without extra configuration.
  • Mirror default-asset changes across related app variants to keep generated outputs consistent.
  • Use small chore commits for design-default updates when no feature behavior changes are implied.

Commits

picture_qr_code
  • chore: default graduation-card.pdf to citrus theme (1a)
picture_qr_code_2_login
  • chore: default graduation-card.pdf to citrus theme (1a)
12 commits

HEIC Albums Get Server Conversion and Variant Branding

Both picture_qr_code apps gained a blue SITE_VARIANT branding mode for the HEIC album converter. HEIC uploads now use best-effort client thumbnails plus a server-side HEIC-to-JPEG Lambda with backfill, supported by deployer policy and invoke-permission updates.

picture_qr_code 6picture_qr_code_2_login 6
▸ how to apply & commit details

How you can apply this

  • Add SITE_VARIANT-based branding to ship distinct UI variants from one album/converter codebase.
  • Handle HEIC uploads with a layered path: client-side thumbnail fallback plus server-generated JPEG thumbnails.
  • Use a dedicated HEIC-to-JPEG Lambda and backfill job to normalize existing album media.
  • When exposing Lambda function URLs, grant both InvokeFunctionUrl and InvokeFunction and update deployer policies.

Commits

picture_qr_code
  • feat: SITE_VARIANT branding; converter (blue) variant for HEIC album
  • chore: allow picture-qr-album-convert in deployer policy (old-stack converter)
  • fix: make HEIC uploads work (best-effort client thumb + server thumbnail)
  • fix: grant both InvokeFunctionUrl + InvokeFunction for public URL; widen deployer policy
  • feat: server-side HEIC->JPEG converter Lambda + backfill
  • docs: spec for server-side HEIC->JPEG converter
picture_qr_code_2_login
  • feat: SITE_VARIANT branding; converter (blue) variant for HEIC album
  • chore: allow picture-qr-album-convert in deployer policy (old-stack converter)
  • fix: make HEIC uploads work (best-effort client thumb + server thumbnail)
  • fix: grant both InvokeFunctionUrl + InvokeFunction for public URL; widen deployer policy
  • feat: server-side HEIC->JPEG converter Lambda + backfill
  • docs: spec for server-side HEIC->JPEG converter
11 commits

Riff Live Audio: Stereo Blending, Intent Routing, and Resilient Lambda Deploys

Implemented two-track stereo audio blending and browser-side intent routing for the Riff launcher, alongside resilient S3-staged Lambda deployments. Enhanced playback UX with synced read-along transcripts and optimized worker pipelines for faster lens hydration.

recording_app 11
▸ how to apply & commit details

How you can apply this

  • Implement Telnyx-style two-track stereo recording to separate call audio from combined transcripts, enabling cleaner post-processing.
  • Use raw microphone input without AEC/NS/AGC processing to prevent audio ducking during narration playback.
  • Adopt S3-staged Lambda uploads for more resilient and verified serverless deployments.
  • Hydrate intent registries from a server catalog via GET requests to enable dynamic browser-side voice command routing.

Commits

recording_app
  • docs(riff): live-audio launcher design spec + riff-window coordination doc
  • fix(riff): revert weather to in-flight — launcher can't run live flows yet
  • fix(test): weather catalog status is live (sync pytest with riff#8 flip) (#14)
  • fix(deploy): resilient + verified S3-staged Lambda upload (#13)
  • feat(riff): L1 hydrates intent registry from server catalog (GET /intents) (#12)
  • feat(riff): L1 browser-side intent routing for "hey riff <X>" (#10)
  • fix(worker): write transcript + hydrate BEFORE the blend (faster lenses) (#9)
  • feat(ui): read-along transcript highlight synced to playback (TDD) (#8)
  • feat: two-track Riff blend (Telnyx-style stereo call + combined transcript) (#7)
  • docs(spec): two-track Riff blend (Telnyx-style call recording) (#6)
  • fix(recorder): raw mic (no AEC/NS/AGC) so Riff playback can't duck narration (#5)
23 commits

Build Voice-Activated AI Workflows with Riff Wake Words and Qwen Hydration

This update implements a voice-triggered recording pipeline using scoped auth tokens, wake-word detection, and event-driven S3-to-SQS processing. It integrates Qwen-based content hydration to generate rich UI signals from transcribed audio in real-time.

recording_app 23
▸ how to apply & commit details

How you can apply this

  • Implement scoped authentication by minting launch tokens via /api/riff-token to securely authorize specific audio flow actions.
  • Reuse the event-driven intake pattern where S3 ObjectCreated events trigger SQS messages for reliable, decoupled worker processing.
  • Apply the 'degraded-safe' TDD approach for LLM hydration workers to ensure robust content generation even during partial failures.
  • Integrate browser-side wake-word detection (e.g., 'Hey Riff') with concurrent live transcription to enable seamless voice-first user interactions.

Commits

recording_app
  • chore(iam): allow deployer to write flow-audio/* (announce WAV sync) (#4)
  • docs(spec): riff wake-launch glue design (step 6) (#2)
  • feat: riff wake-launch glue (steps 2–5) — token+adapter, /live, /flow-audio, wake launcher (#3)
  • feat: riff launch-token minting (auth.py scoped tokens + /api/riff-token) (#1)
  • ui: lead with the Hey Riff/Hey Cass explanation up top (like the demo)
  • fix(wake): bound "Hey Cass" capture — stop at ~12 words / punctuation / pause
  • feat: editable hydration items + two wake words (Hey Riff / Hey Cass)
  • feat(ui): live transcript + "hey riff" wake word, concurrent with recording
  • fix(wake-demo): tighten wake match — word-boundaried, only "hey riff"/"hey rift"
  • spike: Chrome wake-word + live-transcript demo, recording concurrently
  • feat(spike): backfill_hydration — hydrate transcripts predating the pipeline
  • feat(ui): Signals-themed app that shows hydration + dispatches ideas
  • feat(worker): 3-lens hydration after transcribe (qwen), degraded-safe (TDD)
  • feat(spike): fixed Signals theme stylesheet; qwen fills content only
  • feat(spike): qwen_ideas follows the Signals dashboard template
  • refactor(spike): qwen_ideas generates one rich page per call
  • feat(spike): qwen-max webpage-ideas generator (DashScope)
  • fix(provision-worker-iam): sync an existing managed policy, don't skip it
  • feat(setup-worker): carry JOBS_QUEUE_URL into the launchd plist/run cmd
  • feat(iam): scoped deploy user + extend deployer policy for the job queue
  • chore: move SQS infra to admin script; untrack worker logs
  • feat(worker): event-driven intake via S3->SQS (TDD), polling as backstop
  • docs: design for event-driven job intake (S3 ObjectCreated -> SQS)
18 commits

Active/Active Workers, Gated Specs, and Reusable Hydration Docs

The recording app gained active/active worker leasing using S3 conditional-write locks, plus per-host worker status in the API/UI. The day also hardened worker setup, gated design-doc serving, app-shell caching, and provider/hydration specs.

recording_app 18
▸ how to apply & commit details

How you can apply this

  • Use S3 conditional-write locks to coordinate active/active workers while preserving a single-writer invariant.
  • Package worker ops as scripts: IAM provisioning, bootstrap, launchd setup, configurable polling, AWS profile overrides, and retrying launchd checks.
  • Expose per-host worker status through both API and UI so distributed worker health is visible during rollout.
  • Serve reusable design docs behind auth with a Markdown-to-HTML renderer plus no-store/no-cache headers to avoid stale gated specs.

Commits

recording_app
  • fix(setup-worker): wait up to 15s for launchd registration (kill false WARN)
  • feat(setup-worker): configurable POLL_SECONDS (default 30) in service + run cmd
  • fix(setup-worker): WORKER_AWS_PROFILE override + retry launchd status check
  • feat: per-host worker status in API/UI + serve leasing spec gated
  • feat(worker): active/active job leasing via S3 conditional-write locks (TDD)
  • docs: design for active/active worker leasing (S3 conditional-write locks)
  • feat(ops): scripted worker setup — IAM provisioning + bootstrap + launchd
  • harden ops doc to zero-JS + state single-writer invariant (codex round 3)
  • docs: pin Alibaba DashScope integration details in the provider spec
  • docs: resolve open design decisions — defer search, progressive writes
  • harden gated docs + fix spec per codex review (round 2)
  • fix: no-cache on the app shell so deploys aren't hidden by a cached index.html
  • chore: untrack dothis.txt (local scratch, swept in by git add -A)
  • harden docs serving per codex review (md→html drift, no-store, cleanup)
  • feat(ui): serve hydration design spec behind the password gate
  • docs: add reusable md→html doc renderer; render hydration spec
  • docs: revise hydration design to 3-lens parallel fan-out
  • docs: hydration pipeline design (provider-agnostic refiner + configurable stages)
13 commits

Polished Photo Grid Automation and Secured Ops Docs

The photo board was expanded into a 16-cell 4x4 timeline from 2011 to 2026, with face-aware cropping, EXIF orientation fixes, per-slot framing overrides, matting, rotation, zoom, and blurred padding for cleaner layouts. The recording app gained an authenticated in-app Docs link plus workers and credentials ops documentation in Markdown and styled HTML.

pictures-valentina 11recording_app 2
▸ how to apply & commit details

How you can apply this

  • Built a 16-cell 2011-2026 photo board; reuse the per-slot photo and framing override pattern to keep global crop rules flexible.
  • Added face-aware cropping, EXIF orientation handling, manual rotate/zoom, and non-distorting blurred padding for uniform grids without warping images.
  • Used per-cell matting with isnet-general-use on the 2020 slot; apply targeted segmentation only where specific images need cleanup.
  • Added token-gated in-app ops docs for workers and credentials; reuse this pattern for authenticated runbooks inside admin tools.

Commits

pictures-valentina
  • Expand board to 2011-2026; wire new photos, align eyes, tune framing
  • Swap 2012 to wider option #11 (IMG_2387), uniform framing, no blur
  • Use non-distorting blurred-cover fill for padded/rotated cells
  • Add blurred-pad zoom-out for tight close-ups; zoom out 2012a/2015/2016
  • Add manual rotate (blurred-corner fill) for tilted poses; straighten 2019, zoom 2016 out
  • Honor EXIF orientation on load (fixes sideways 2014/2015/2016)
  • Best-effort even framing with backgrounds kept
  • Per-cell matting model; use isnet-general-use for 2020 (removes headrest)
  • Loosen global face framing (25% face) + per-slot framing.json hook
  • Face-aware cropping + per-slot photo overrides
  • Expand to 16-cell 4x4: double 2012 baby year + add 2026
recording_app
  • feat(ui): in-app Docs link serving the ops doc behind the login token
  • docs: add workers & credentials ops doc (md + styled html)
40 commits

Chunked Audio, Poster Pipelines, and Printable QR Themes

May 31 centered on reusable media workflows: a new recording_app shipped from spec to deploy with chunked S3 uploads, Lambda endpoints, worker transcription flow, playback, delete, and flicker-free SPA reconciliation. The day also added poster-generation pipelines, themed printable QR cards, and an agent-router riff worker with LLM shaping, executor, phone-bridge enqueueing, and a Claude CLI backend.

agent-router 1picture_qr_code 4picture_qr_code_2_login 4pictures-valentina 4recording_app 27
▸ how to apply & commit details

How you can apply this

  • Build chunked browser recording with presigned PUTs, a finalize step that verifies chunks, and an S3-backed queue so a separate worker can concatenate, transcribe, and publish playback URLs.
  • Harden serverless media apps with token-gated delete, idempotent finalize, constrained CORS/lifecycle/IAM deploy scripts, and tests for upload, deletion, stale markers, and worker errors.
  • Turn image workflows into staged pipelines: candidate finder -> web picker -> poster composer, with background replacement and auto-open feedback after generation.
  • Package shareable QR experiences as site themes plus matching printable cards; use seamless botanical tiling, scrims, and text halos to keep busy wallpapers readable and print clean.

Commits

agent-router
  • riff_worker: LLM Shaper + executor, phone-bridge enqueue path, claude_cli backend
picture_qr_code
  • fix: remove grey box around QR on printed cards
  • feat: 4 themed printable cards (one per site theme)
  • polish: hero scrim + text halos for contrast on busy wallpaper
  • feat: botanical lemon-grove themes + seamless tiling + theme switcher
picture_qr_code_2_login
  • fix: remove grey box around QR on printed cards
  • feat: 4 themed printable cards (one per site theme)
  • polish: hero scrim + text halos for contrast on busy wallpaper
  • feat: botanical lemon-grove themes + seamless tiling + theme switcher
pictures-valentina
  • Auto-open finished poster after Generate Board for clear feedback
  • Add studio-blue background replacement (rembg + radial gradient)
  • Add 3-stage pipeline: candidate finder, web picker, poster composer
  • Design spec: Valentina year-by-year photo board
recording_app
  • fix(review): narrow delete ClientError catch, cover errors/ deletion, stream audio upload
  • feat: SPA flicker-free reconciliation + per-row delete + audio playback
  • feat: worker uploads combined audio.<ext> for playback (before transcribe)
  • feat: POST /delete removes all objects for a recording (token-gated)
  • feat: GET /recordings returns audioUrl when combined audio exists
  • feat: recordings.audio_key helper for combined audio object
  • Add implementation plan: delete, playback, flicker-free list
  • Design spec: delete, audio playback, flicker-free list
  • fix(worker): self-bootstrap src/ onto sys.path; add least-privilege worker IAM policy
  • docs: record InvokeFunction-required experiment + clarify worker runs from repo root
  • docs: explain the Function URL two-grant 403 gotcha + deploy IAM
  • fix(deploy): grant lambda:InvokeFunction for public Function URL
  • fix: presigned PUT content-type mismatch + upload error handling + finalize idempotency + worker stale-marker resilience + full lifecycle coverage
  • feat: deploy script (encrypted bucket, CORS lockdown, lifecycle, IAM) + README
  • feat: worker poll loop — heartbeat, concat, transcribe, dequeue, error path
  • feat: worker Flow interface with StubFlow and WhisperFlow
  • feat: SPA — record with MediaRecorder, chunk upload, live status list (textContent-safe)
  • feat: GET /recordings with status, heartbeat, transcript URLs
  • feat: POST /finalize verifies chunks then completes + enqueues
  • feat: POST /sign-chunk presigned PUT with id/seq validation
  • feat: POST /start mints id and writes manifest
  • feat: lambda skeleton with /unlock, root, 404, CORS
  • feat: recordings pure helpers (ids, validation, keys, status, chunk math)
  • scaffold: project config + reuse auth.py from picture_qr_code
  • Add implementation plan: 11 TDD tasks for chunked recording app
  • Revise spec after correctness + security review
  • Design spec: chunked recording app with S3 queue + laptop transcription worker
76 commits

Postgres Agent Work Queue Substrate and Serverless QR Photo Album

Implemented a robust, Postgres-backed work queue for agent routing with race-safe claiming, metrics, and EC2 deployment tooling. Simultaneously shipped a serverless photo album MVP featuring HMAC-authenticated uploads, presigned S3 URLs, and printable graduation cards.

agent-router 30picture_qr_code 23picture_qr_code_2_login 23
▸ how to apply & commit details

How you can apply this

  • Reuse the Postgres-backed work queue substrate which implements LISTEN/NOTIFY for instant worker wake-ups, action allowlists, and dead-letter hooks for resilient agent task processing.
  • Adopt the serverless photo album pattern using Lambda handlers that generate presigned S3 PUT URLs for direct client uploads, secured by HMAC tokens and two-tier password gates.
  • Apply the included EC2 deployment runbook and bash/AWS CLI scripts to automate infrastructure provisioning for both the work queue workers and the serverless API gateway.

Commits

agent-router
  • riff_worker: enforce action allowlist at the confirm gate
  • riff_worker: capture→shape→confirm→execute pipeline on the workqueue
  • Merge feat/agent-work-queue: Postgres-backed agent work queue substrate
  • workqueue: EC2 deployment runbook (DEPLOY.md) + doc clarifications
  • workqueue: runnable demo + README pointer
  • workqueue: end-to-end simulation surfaces + closes a real race
  • workqueue: progress reporting + cancel cooperation
  • workqueue: agents.actions capability + dead-letter hook
  • workqueue: task expiration via expires_at
  • workqueue: target_worker for substrate-level routing
  • workqueue: action-filtered claim + Worker.run_n
  • workqueue: cleanup_old_tasks + multi-window latency
  • workqueue: completed_at, JSONB search, latency + throughput metrics
  • workqueue: wait_for_task + run_until_idle (sync-feeling APIs)
  • workqueue: orphan reclamation + pipelined enqueue_many
  • workqueue: metrics + prune_stale_agents + docs
  • workqueue: agents table, Worker auto-registration, bulk enqueue
  • workqueue: LISTEN/NOTIFY for instant worker wake
  • workqueue: connection pool, CHECK constraints, CLI
  • ops/acks: notify EC2 of workqueue substrate shipping
  • workqueue: drift test, cancel API, stats, race-safe dedup
  • workqueue: v1 substrate — schema, claim, worker, reaper
  • tpm/m3-pings.md cycle 637 ping(b) 8493dc7
  • cycle 637 batch — cumulative 312 cycles 1839/28 = 97.9%
  • tpm/m3-pings.md cycle 634 ping(b) ffbf9af
  • cycle 634 batch — cumulative 309 cycles 1821/28 = 97.9%
  • tpm/m3-pings.md cycle 631 ping(b) b33ae92
  • cycle 631 batch — forced FR (heartbeat=YES 34m 46s); cumulative 306 cycles 1803/28 = 97.9%
  • tpm/m3-pings.md cycle 628 ping(b) 797bccb
  • cycle 628 batch — date rollover 2026-05-30; cumulative 303 cycles 1785/28 = 97.9%
picture_qr_code
  • Merge pull request #1 from davidbmar/mvp-implementation
  • chore: track plain album QR; ignore transient scheduler lock
  • fix: solid-gold card name (remove gradient-clip artifact)
  • fix: PDF card no longer clips 'Valentina' to 'Vale'
  • feat: script-lettering header + print-shop PDF card
  • feat: festive Campbell Hall graduation theme + printable card
  • fix: region-pinned S3 presign + self-healing deploy
  • harden: require access token on delete, paginate gallery, deploy wait parity
  • docs: README + QR generator script
  • feat: bash + AWS CLI deploy script (bucket, role, function, URL, CORS)
  • feat: DELETE /photo removes original+thumb behind owner passcode
  • feat: GET /photos lists thumbnails newest-first with presigned URLs
  • feat: POST /sign-upload returns presigned S3 PUT URLs
  • feat: POST /unlock exchanges access password for a token
  • feat: mobile-first SPA (unlock, upload+thumbnail, gallery, share, owner delete)
  • feat: Lambda handler routing skeleton + GET / serves SPA
  • feat: photo id/key/sort/validation helpers
  • harden: empty-secret guard + clarify token expiry docstring
  • feat: HMAC token + constant-time password helpers
  • chore: project scaffolding (venv deps, pytest config)
  • Add MVP implementation plan (12 TDD tasks)
  • Add two-tier password gate to design spec
  • Add approved design spec for shared photo album QR app
picture_qr_code_2_login
  • Merge pull request #1 from davidbmar/mvp-implementation
  • chore: track plain album QR; ignore transient scheduler lock
  • fix: solid-gold card name (remove gradient-clip artifact)
  • fix: PDF card no longer clips 'Valentina' to 'Vale'
  • feat: script-lettering header + print-shop PDF card
  • feat: festive Campbell Hall graduation theme + printable card
  • fix: region-pinned S3 presign + self-healing deploy
  • harden: require access token on delete, paginate gallery, deploy wait parity
  • docs: README + QR generator script
  • feat: bash + AWS CLI deploy script (bucket, role, function, URL, CORS)
  • feat: DELETE /photo removes original+thumb behind owner passcode
  • feat: GET /photos lists thumbnails newest-first with presigned URLs
  • feat: POST /sign-upload returns presigned S3 PUT URLs
  • feat: POST /unlock exchanges access password for a token
  • feat: mobile-first SPA (unlock, upload+thumbnail, gallery, share, owner delete)
  • feat: Lambda handler routing skeleton + GET / serves SPA
  • feat: photo id/key/sort/validation helpers
  • harden: empty-secret guard + clarify token expiry docstring
  • feat: HMAC token + constant-time password helpers
  • chore: project scaffolding (venv deps, pytest config)
  • Add MVP implementation plan (12 TDD tasks)
  • Add two-tier password gate to design spec
  • Add approved design spec for shared photo album QR app
205 commits

Agent Router Achieves 97.9% Filter Efficiency Across 300 Cycles

The agent-router system completed a 300-cycle validation batch, stabilizing at 97.9% cumulative filter efficiency while resolving critical multi-workstream coordination stalls. This milestone confirms the robustness of the M3 dispatch logic and Coach ownership models under sustained load.

agent-router 205
▸ how to apply & commit details

How you can apply this

  • Implement a cumulative filter metric (raw vs. actual cycles) to quantify noise reduction, aiming for >97% efficiency in high-volume agent routing.
  • Adopt a 'forced FR' heartbeat mechanism with fixed intervals (e.g., 34m 45s) to maintain system equilibrium and detect stalls during ultra-quiet periods.
  • Use explicit path-clearing protocols (like PATH A) to resolve interpretation gaps between TPM directives and coder implementations, ensuring rapid conflict resolution.

Commits

agent-router
  • tpm/m3-pings.md cycle 625 ping(b) 643dfef
  • cycle 625 batch — 300 filter cycles milestone; cumulative 300 cycles 1767/28 = 97.9%
  • tpm/m3-pings.md cycle 622 ping(b) 4d0bbf9
  • cycle 622 batch — cumulative 297 cycles 1749/28 = 97.9%
  • tpm/m3-pings.md cycle 619 ping(b) 0969eea
  • cycle 619 batch — cumulative 294 cycles 1731/28 = 97.9%
  • tpm/m3-pings.md cycle 616 ping(b) 6ca3e0e
  • cycle 616 batch — cumulative 291 cycles 1713/28 = 97.9%
  • tpm/m3-pings.md cycle 613 ping(b) eae7ba8
  • cycle 613 batch — cumulative 288 cycles 1695/28 = 97.9%
  • tpm/m3-pings.md cycle 610 ping(b) 3179122
  • cycle 610 batch — forced FR + cycle 610 milestone; cumulative 285 cycles 1677/28 = 97.9%
  • tpm/m3-pings.md cycle 607 ping(b) 5234624
  • cycle 607 batch — cumulative 282 cycles 1659/28 = 97.9%
  • tpm/m3-pings.md cycle 604 ping(b) 44aa3dc
  • cycle 604 batch — cumulative 279 cycles 1641/28 = 97.9%
  • tpm/m3-pings.md cycle 601 ping(b) 94636d1
  • cycle 601 batch — post-600 milestone; cumulative 276 cycles 1623/28 = 97.9%
  • tpm/m3-pings.md cycle 598 ping(b) f07b02f
  • cycle 598 batch — cumulative 273 cycles 1605/28 = 97.9%
  • tpm/m3-pings.md cycle 595 ping(b) 6e99027
  • cycle 595 batch — cumulative 270 cycles 1587/28 = 97.9%
  • tpm/m3-pings.md cycle 592 ping(b) 7949fb7
  • cycle 592 batch — cumulative 267 cycles 1569/28 = 97.9%
  • tpm/m3-pings.md cycle 589 ping(b) 80452a5
  • cycle 589 batch — forced FR (heartbeat=YES 34m 46s); cumulative 264 cycles 1551/28 = 97.9%
  • tpm/m3-pings.md cycle 586 ping(b) 5834f0c
  • cycle 586 batch — cumulative 261 cycles 1533/28 = 97.9%
  • tpm/m3-pings.md cycle 583 ping(b) 7bd300e
  • cycle 583 batch — cumulative 258 cycles 1515/28 = 97.9%
  • tpm/m3-pings.md cycle 580 ping(b) c775c6f
  • cycle 580 batch — cycle 580 milestone; cumulative 255 cycles 1497/28 = 97.9%
  • tpm/m3-pings.md cycle 577 ping(b) 3a6c0b7
  • cycle 577 batch — cumulative 252 cycles 1479/28 = 97.9%
  • tpm/m3-pings.md cycle 574 ping(b) 45bb354
  • cycle 574 batch — cumulative 249 cycles 1461/28 = 97.9%
  • tpm/m3-pings.md cycle 571 ping(b) b7299f1
  • cycle 571 batch — cumulative 246 cycles 1443/28 = 97.9%
  • tpm/m3-pings.md cycle 568 ping(b) 0175022
  • cycle 568 batch — forced FR (heartbeat=YES 34m 46s); cumulative 243 cycles 1425/28 = 97.9%
  • tpm/m3-pings.md cycle 565 ping(b) c57b2a9
  • cycle 565 batch — cumulative 240 cycles 1407/28 = 97.9%
  • tpm/m3-pings.md cycle 562 ping(b) f96f78f
  • cycle 562 batch — cumulative 237 cycles 1389/28 = 97.9%
  • tpm/m3-pings.md cycle 559 ping(b) 8a7e005
  • cycle 559 batch — cumulative 234 cycles 1371/28 = 97.9%
  • tpm/m3-pings.md cycle 556 ping(b) 9c8c1b5
  • cycle 556 batch — cumulative 231 cycles 1353/28 = 97.9%
  • tpm/m3-pings.md cycle 553 ping(b) c8d939a
  • cycle 553 batch — cumulative 228 cycles 1335/28 = 97.9%
  • tpm/m3-pings.md cycle 550 ping(b) 47fd065
  • cycle 550 batch — cycle 550 milestone; cumulative 225 cycles 1317/28 = 97.9%
  • tpm/m3-pings.md cycle 547 ping(b) bac3273
  • cycle 547 batch — forced FR (heartbeat=YES 34m 45s); cumulative 222 cycles 1299/28 = 97.8%
  • tpm/m3-pings.md cycle 544 ping(b) 1662833
  • cycle 544 batch — cumulative 219 cycles 1281/28 = 97.8%
  • tpm/m3-pings.md cycle 541 ping(b) 5d5ca3e
  • cycle 541 batch — cumulative 216 cycles 1263/28 = 97.8%
  • tpm/m3-pings.md cycle 538 ping(b) 4c72d1c
  • cycle 538 batch — cumulative 213 cycles 1245/28 = 97.8%
  • tpm/m3-pings.md cycle 535 ping(b) 628d3c8
  • cycle 535 batch — cumulative 210 cycles 1227/28 = 97.7%
  • tpm/m3-pings.md cycle 532 ping(b) a121992
  • cycle 532 batch — codex-M3-5 100 pinned-active cycles; cumulative 207 cycles 1209/28 = 97.7%
  • tpm/m3-pings.md cycle 529 ping(b) d4b363f
  • cycle 529 batch — cumulative 204 cycles 1191/28 = 97.7%
  • tpm/m3-pings.md cycle 526 ping(b) d963e5a
  • cycle 526 batch — forced FR (heartbeat=YES 34m 46s); cumulative 201 cycles 1173/28 = 97.6%
  • tpm/m3-pings.md cycle 523 ping(b) 6851369
  • cycle 523 batch — cumulative 198 cycles 1155/28 = 97.8%
  • tpm/m3-pings.md cycle 520 ping(b) 993551a
  • cycle 520 batch — cumulative 195 cycles 1137/28 = 97.8%
  • tpm/m3-pings.md cycle 517 ping(b) fc25221
  • cycle 517 batch — cumulative 192 cycles 1119/28 = 97.7%
  • tpm/m3-pings.md cycle 514 ping(b) c1921ac
  • cycle 514 batch — cumulative 189 cycles 1101/28 = 97.7%
  • tpm/m3-pings.md cycle 511 ping(b) 42c902b
  • cycle 511 batch — cumulative 186 cycles 1083/28 = 97.8%
  • tpm/m3-pings.md cycle 508 ping(b) e4764e6
  • cycle 508 batch — cumulative 183 cycles 1065/28 = 97.8%
  • tpm/m3-pings.md cycle 505 ping(b) 55fa17c
  • cycle 505 batch — forced FR (heartbeat=YES 34m 45s); cumulative 180 cycles 1047/28 = 97.7%
  • tpm/m3-pings.md cycle 502 ping(b) f9fdbe3
  • cycle 502 batch — cumulative 177 cycles 1029/28 = 97.8%
  • tpm/m3-pings.md cycle 499 ping(b) c9c752e
  • cycle 499 batch — cumulative 174 cycles 1011/28 = 97.8%
  • tpm/m3-pings.md cycle 496 ping(b) c037bdc
  • cycle 496 batch — cumulative 171 cycles 993/28 = 97.8%
  • tpm/m3-pings.md cycle 493 ping(b) f313748
  • cycle 493 batch — cumulative 168 cycles 975/28 = 97.7%
  • tpm/m3-pings.md cycle 490 ping(b) 765d4f3
  • cycle 490 batch — cumulative 165 cycles 957/28 = 97.7%
  • tpm/m3-pings.md cycle 487 ping(b) 5be5e94
  • cycle 487 batch — cumulative 162 cycles 939/28 = 97.6%
  • tpm/m3-pings.md cycle 484 ping(b) ffb1ba7
  • cycle 484 batch — forced FR (heartbeat=YES 34m 45s); cumulative 159 cycles 921/28 = 97.5%
  • tpm/m3-pings.md cycle 481 ping(b) 470f330
  • cycle 481 batch — cumulative 156 cycles 903/28 = 97.4%
  • tpm/m3-pings.md cycle 478 ping(b) bb1bf01
  • cycle 478 batch — cumulative 153 cycles 885/28 = 97.4%
  • tpm/m3-pings.md cycle 475 ping(b) 69343d5
  • cycle 475 batch — 150 filter cycles; cumulative 150 cycles 867/28 = 97.3%
  • tpm/m3-pings.md cycle 472 ping(b) c91a829
  • cycle 472 batch — cumulative 147 cycles 849/28 = 97.1%
  • tpm/m3-pings.md cycle 469 ping(b) bfb3d0d
  • cycle 469 batch — 97% threshold milestone; cumulative 144 cycles 831/28 = 97.0%
  • tpm/m3-pings.md cycle 466 ping(b) 67e31e1
  • cycle 466 batch — cumulative 141 cycles 813/28 = 96.9%
  • tpm/m3-pings.md cycle 463 ping(b) 7acdb84
  • cycle 463 batch — cumulative 138 cycles 795/28 = 96.8%
  • tpm/m3-pings.md cycle 460 ping(b) a729a6a
  • cycle 460 batch — forced FR (heartbeat=YES 34m 44s); cumulative 135 cycles 777/28 = 96.7%
  • tpm/m3-pings.md cycle 457 ping(b) 5f9691c
  • cycle 457 batch — cumulative 132 cycles 759/28 = 96.6%
  • tpm/m3-pings.md cycle 454 ping(b) 08db375
  • cycle 454 batch — cumulative 129 cycles 741/28 = 96.4%
  • tpm/m3-pings.md cycle 451 ping(b) b8dd9f2
  • cycle 451 batch — cumulative 126 cycles 723/28 = 96.3%
  • tpm/m3-pings.md cycle 448 ping(b) c6c143b
  • cycle 448 batch — cumulative 123 cycles 705/28 = 96.2%
  • tpm/m3-pings.md cycle 445 ping(b) 63b2b8b
  • cycle 445 batch — 96% threshold milestone; cumulative 120 cycles 687/28 = 96.0%
  • tpm/m3-pings.md cycle 442 ping(b) 1de44c1
  • cycle 442 batch — cumulative 117 cycles 669/28 = 95.8%
  • tpm/m3-pings.md cycle 439 ping(b) 6abd7ca
  • cycle 439 batch — cumulative 114 cycles 651/28 = 95.7%
  • tpm/m3-pings.md cycle 436 ping(b) 941175f
  • cycle 436 batch — forced FR (heartbeat=YES 34m 46s); cumulative 111 cycles 633/28 = 95.6%
  • tpm/m3-pings.md cycle 433 ping(b) 6ff4f39
  • cycle 433 batch — sticky-idle observation codex-M3-5; cumulative 108 cycles 615/28 = 95.4%
  • tpm/m3-pings.md cycle 430 ping(b) 38c7644
  • cycle 430 batch — cumulative 105 cycles 596/27 = 95.5%
  • tpm/m3-pings.md cycle 427 ping(b) 7ca3359
  • cycle 427 batch — under-gate edge 15s; cumulative 102 cycles 575/27 = 95.3%
  • tpm/m3-pings.md cycle 424 ping(b) aa6f365
  • cycle 424 batch — codex-M3-5 16th inject; cumulative 99 cycles 554/27 = 95.1%
  • tpm/m3-pings.md cycle 421 ping(b) f552ec7
  • cycle 421 batch — cumulative 96 cycles 533/26 = 95.1%
  • tpm/m3-pings.md cycle 418 ping(b) 257ad0e
  • tpm/m3-utilization.md cycle 418 batch: cumulative 93 cycles 512/26 = 94.9%
  • tpm/m3-pings.md cycle 415 ping(b) cebf865
  • tpm/m3-utilization.md cycle 415 🎯 90-cycle MILESTONE batch: cumulative 488/25 = 94.9% across 12+ regimes
  • tpm/m3-pings.md cycle 412 ping(b) 5472fc3
  • tpm/m3-utilization.md cycle 412 FULL RENDER batch: cumulative 87 cycles 464/25 = 94.6%
  • tpm/m3-pings.md cycle 409 ping(b) 17f6a34
  • tpm/m3-utilization.md cycle 409 batch: Comms crossed 30m dispatched-skip; cumulative 84 cycles 439/24 = 94.5%
  • tpm/m3-pings.md cycle 406 ping(b) 4e2db7e
  • tpm/m3-utilization.md cycle 406 batch: ultra-quiet sustained; cumulative 81 cycles 417/24 = 94.2%
  • tpm/m3-pings.md cycle 403 ping(b) 4b80e0f
  • tpm/m3-utilization.md cycle 403 batch: TPM LANE SPLIT + INDEX MODE=EXECUTION + Coach v7 schema + Comms MODE indicator; codex-M3-5 13th crossing; cumulative 78 cycles 399/24 = 93.7%
  • tpm/m3-pings.md cycle 400 ping(b) 3187ff4
  • tpm/m3-utilization.md cycle 400 🎯 MILESTONE batch: 75-cycle combined-filter validation; 379 raw / 23 actual = 93.9% across 10+ coordination regimes; 356 noise-injects avoided
  • tpm/m3-pings.md cycle 397 ping(b) 93ed760
  • tpm/m3-utilization.md cycle 397 batch: ultra-quiet; cycle-396 inject SUCCESS; cumulative 72 cycles 362/23 = 93.6%
  • tpm/m3-pings.md cycle 394 ping(b) 37b9774
  • tpm/m3-utilization.md cycle 394 batch: Coach c142 ACK'd Crew=Continuous; Lab+Forge fleet-wide adoption; cumulative 69 cycles 355/22 = 93.8%
  • team-lead/OWNERSHIP.md + reflexion.md: CEO crew-assignment 2026-05-29T04:38Z directive — Crew: Continuous; framing addendum (ONGOING standup, day_reliability + handoff_quality axes with Continuous semantics); reflexion in Continuous voice
  • qa: add forge crew ownership
  • tpm/m3-pings.md cycle 391 ping(b) 930b850
  • tpm/m3-utilization.md cycle 391 batch: CEO DUAL-TRACK 04:22Z + routing SWAP-FINAL + Coach OWNERSHIP-V3 + Architect multi-modal + Comms 2 panels; cumulative 66 cycles 345/22 = 93.6%
  • tpm/m3-pings.md cycle 388 ping(b) ce60745
  • tpm/m3-utilization.md cycle 388 FULL RENDER batch: cumulative 63 cycles 326/21 = 93.6%; sustained equilibrium
  • tpm/m3-pings.md cycle 385 ping(b) d1dcde8
  • tpm/m3-utilization.md cycle 385 batch: 🎯 60-CYCLE MILESTONE; cumulative 306/21 = 93.1% sustained across 9 regimes
  • tpm/m3-pings.md cycle 382 ping(b) 157d4c3
  • tpm/m3-utilization.md cycle 382 batch: codex-M3-5 10th-crossing milestone (forecast EXACT); cumulative 57 cycles 288/21 = 92.7%
  • tpm/m3-pings.md cycle 379 ping(b) 6d951ac
  • tpm/m3-utilization.md cycle 379 batch: ultra-quiet sustained; cumulative 54 cycles 269/20 = 92.6%; Coder 2 active
  • tpm/m3-pings.md cycle 376 ping(b) f173a2a
  • tpm/m3-utilization.md cycle 376 batch + procedure CODIFICATION: 50-cycle empirical validation extended in Step 1.5.5 (cycles 326-375: 242 raw / 20 actual = 91.7% across 8 coordination regimes); cumulative 51 cycles 249/20 = 92%
  • tpm/m3-pings.md cycle 373 ping(b) 5fbd944
  • tpm/m3-utilization.md cycle 373 batch: ultra-quiet continues; cumulative 48 cycles 229/19 = 91.7%; cycle-374 forecast codex-M3-5 crossing
  • tpm/m3-pings.md cycle 370 ping(b) 6e6c4f8
  • tpm/m3-utilization.md cycle 370 batch: Coder 2 REASSIGNED to UI workstream (e4b458f); dispatched_active workstream update WS1→WS2; cumulative 45 cycles 211/19 = 91%
  • tpm/m3-pings.md cycle 367 ping(b) 061c262
  • tpm/m3-utilization.md cycle 367 batch: 3rd consecutive ultra-quiet steady-state; cumulative 42 cycles 192/18 = 90.6% (sustained equilibrium at ~90%); cycle-368 forecast codex-M3-5 crossing
  • ops: relay command center v1 handoff
  • tpm/m3-pings.md cycle 364 ping(b) 30dc7d6
  • tpm/m3-utilization.md cycle 364 FULL RENDER batch: multi-workstream regime steady-state; cumulative 39 cycles 176/18 = 89.8%; combined filter sustained at ~90% compression
  • tpm/m3-pings.md cycle 361 ping(b) a2a7a9a
  • tpm/m3-utilization.md cycle 361 batch: Mock ReplicantPM SHIPPED (c0abadf); Command Center Mobile WS7 add (6 sub-dispatches); Comms command-center.html v1; cumulative 36 cycles 166/18 = 89.2%; forecast EXACT
  • tpm/m3-pings.md cycle 358 ping(b) 01361fc
  • tpm/m3-utilization.md cycle 358 batch: clean steady-state under 6-workstream regime; cumulative 33 cycles 159/17 = 89.3%; combined filter 100%; PR 1 + QA discount-skipping post-standby-filing
  • team-lead/demo-coord 01:20Z CEO 6-WORKSTREAM REFRAME LIVE; M3 dispatch updates (Comms WS2, Doc WS3, Coder 2 WS1, PR 1 + QA back to standby); Coach OWNERSHIP-V2 upgrade observation
  • tpm/m3-pings.md cycle 356 ping(c) PHASE CHANGE: 🔀 6-WORKSTREAM REFRAME LIVE; Step 1.5.6 dispatched_active updated; PR 1 + QA back to standby
  • ops: record qa post path a standby
  • ops: update coder2 path a wait state
  • team-lead/demo-coord 01:15Z stall cause CLARIFIED: Coder 2 wait-state (2e1fe27) reveals AWAITING-CEO-DECISION; info gap surfaced (Coder 2 lists PR 1 verdict as pending but PR 1 LGTM landed cycle 346.5); cycle-355 reflexion-track tripwire no longer applicable
  • ops: record coder2 path a wait state
  • tpm/m3-pings.md cycle 355 ping(b) 9f822a9
  • tpm/m3-utilization.md cycle 355 FULL RENDER batch: PATH A stall +40m past IT ETA / +28m past dial; chain-wide silence (longest since cycle 167-277); cumulative 30 cycles 150/14 = 90.7%; Team Lead holds per Step 1.5.6
  • tpm/m3-pings.md cycle 352 ping(b) 166e548
  • tpm/m3-utilization.md cycle 352 batch: PATH A stall +25m past IT ETA / +13m past dial; Coder 2 newly crossed 30m dispatched-skipped; cumulative 27 cycles 130/12 = 90.8%; Team Lead holds posture
  • tpm/m3-pings.md cycle 349 ping(b) 37446dc
  • tpm/m3-utilization.md cycle 349 batch + procedure CODIFICATION: Step 1.5.6 dispatched-active-sprint skip; combined filter discount+dispatched; cumulative 24 cycles 117/12 = 89.7%; PATH A IT verify slipped ~10m past ETA; dial 00:47Z imminent
  • team-lead/demo-coord + ops/acks/ 00:30Z: PATH A CLEARED — PR 1 LGTM d729ad5 on 3e41cfe; TPM↔PR 1 conflict RESOLVED; IT verify next dispatch step; demo dial 00:47Z 17m runway
  • tpm/m3-pings.md cycle 346 ping(b) c8908e9
  • tpm/m3-utilization.md cycle 346 batch: PATH A second-iteration; Coder 2 ✅ shipped 3e41cfe runtime-surface; PR 1 cross-review IN PROGRESS; cumulative 21 cycles 104/9 = 91.3%; demo dial projected 00:47Z
  • team-lead/demo-coord + ops/acks/ 00:20Z: Coder 2 chose (a) and shipped 3e41cfe runtime-surface patch (riff/live/session.py +110 + test_live_session.py +75); resolves TPM↔PR 1 conflict; CEO adjudication MOOT; PR 1 cross-review requested
  • team-lead/demo-coord 00:10Z + ops/acks/ relay: PR 1 NO-GO on Coder 2 PATH A first attempt 912b2ca; interpretation gap (CEO meant runtime-surface; Coder 2 did test-harness); forced-choice fork to Coder 2; CEO scope-adjudication requested via cross-host relay
  • ops: relay coder2 phase2 live slot extractor fix
  • tpm/m3-pings.md cycle 343 ping(b) 9ea995b
  • tpm/m3-utilization.md cycle 343 batch + procedure CODIFICATION: partial-dispatch phase-regression refinement (DISPATCHED→stale, NON-DISPATCHED→valid); PATH A in flight; Raw 2 / Filtered 0; cumulative 18 cycles 98/9 = 90%
  • team-lead/demo-coord 00:00Z Phase 2 DISPATCHED via TPM PATH A; 4 M3 roles woke; non-dispatched durable files valid; procedure gap detected
  • tpm/m3-pings.md cycle 342 ping(c) STATE CHANGE: Phase 2 PENDING-CEO → IN-FLIGHT PATH A; TPM 241d429 dispatched 4-step chain; 4 M3 roles woke; procedure gap detected on partial-dispatch handling
406 commits

Agent Router Achieves 92.9% Compression via Adoption-Discount Filtering and Fleet-Wide Standby Coordination

The agent-router implemented a Step 1.5.5 adoption-discount filter that achieved 81% compression and sustained 92.9% cumulative efficiency across 15 stable cycles. Concurrently, the system codified Phase 2 standby procedures and resolved critical demo blockers through cross-host relays and CEO-level escalation protocols.

agent-router 406
▸ how to apply & commit details

How you can apply this

  • Implement an adoption-discount filter algorithm to compress raw session data by ~81%, filtering noise while preserving edge cases for phase-regression detection.
  • Use durable on-disk position files to maintain fleet-wide standby states during long-duration waits, enabling seamless handoffs between agents without active polling.
  • Establish pre-committed escalation ladders with specific time-based tripwires (e.g., YELLOW at +40m, RED at +52m) to automate decision-making when human responders are silent.

Commits

agent-router
  • tpm/m3-pings.md cycle 340 ping(b) e2ac9a7
  • cycle 340 STABLE batch (compact-format trial cycle 2/3): 15th consecutive 100% discount; cumulative 15 cycles 85/6 = 92.9%; forecast cycle 341 8 raw / 2 filtered; CEO Phase 2 ~2h 40m
  • tpm/m3-pings.md cycle 337 ping(b) f31c284
  • tpm/m3-utilization.md cycle 337 batch: 12th consecutive discount-skip for 5 adopters (83-84m); cumulative 12 cycles 70/6 = 91.4%; ZERO commits 10m; CEO Phase 2 ~2h 25m pending; IT NOT GREEN held
  • tpm/m3-pings.md cycle 334 ping(b) 27cfb6e
  • tpm/m3-utilization.md cycle 334 batch: forecast EXACT MATCH (Raw 8 / Filtered 2); cumulative 9 cycles 54 raw / 5 actual = 91% (down from 93.5%, expected asymptote regression); 2nd-crossing exception-class probe for claude-M3-3 + codex-M3-5; CEO Phase 2 ~2h 10m pending; IT NOT GREEN held
  • tpm/m3-pings.md cycle 331 ping(b) c835070
  • tpm/m3-utilization.md cycle 331 batch: 3rd consecutive 100% discount cycle; cumulative 6 cycles 34 raw / 3 actual = 91%; sustained ~2h Phase 2 standby; CEO Phase 2 ~1h 55m pending; IT NOT GREEN held
  • tpm/m3-pings.md cycle 328 ping(b) 4716866
  • tpm/m3-utilization.md cycle 328 FULL RENDER batch + procedure CODIFICATION: Step 1.5.5 adoption-discount filter (algorithm + 3-cycle empirical validation 81% compression + edge cases + phase-regression detection); 7 raw / 1 filtered this cycle
  • tpm/m3-pings.md cycle 325 ping(b) abbc808
  • tpm/m3-utilization.md cycle 325 batch: quiet hold; Comms 28m approaching threshold with durable filed (adoption-discount test case); cycle 326 forecast 0-1 actual injects
  • tpm/m3-pings.md cycle 322 ping(b) 5174087
  • tpm/m3-utilization.md cycle 322 batch: post-adoption quiet hold; 4 durable Phase 2 standby files + Comms; gemini-M3-3 cycle-321 inject SUCCESS; CEO Phase 2 ~1h 10m pending
  • ops: record qa phase 2 standby
  • ops/acks: record coder2 phase 2 standby
  • ops(ack): gemini-m3 durable Phase 2 standby position
  • tpm/m3-pings.md cycle 319 ping(b) 37d51c2
  • tpm/m3-utilization.md cycle 319 batch: Comms 982861e Phase 2 standby on-disk position (cycle-318 inject SUCCESS); 7 sessions at 28-29m forecast for cycle 320 mass-inject; durable-position-file pattern converging fleet-wide
  • tpm/m3-pings.md cycle 316 ping(b) 324c69a
  • tpm/m3-utilization.md cycle 316 batch: Phase 2 standby quiet hold (~35m since IT eval); ZERO new commits 10m; fleet stable post mass-inject; IT NOT GREEN held; CEO dispatch pending
  • tpm/m3-pings.md cycle 312 ping(b) a9cad87
  • tpm/m3-utilization.md cycle 312 batch: Phase 2 standby continues; fleet-wide drift (5 sessions 25-28m, none crossed 30m strict gate); IT NOT GREEN blocker held; CEO Phase 2 dispatch pending
  • team-lead/demo-coord 21:25Z Phase 1 COMPLETE / IT NOT GREEN / Phase 2 pending CEO; sprint all 4 EARLY; Bug 1 PARTIAL (slot_extractor not wired to Gemini Live); Bug 2 NOT A BUG
  • tpm/m3-pings.md cycle 311 ping(c) NEW BLOCKER: demo-path NOT GREEN pending Phase 2 (phone restart + slot_extractor Gemini Live wiring + L2 Real re-verify); fleet awaiting CEO
  • tpm/m3-pings.md cycle 309 ping(b) a2162e9
  • tpm/m3-utilization.md cycle 309 batch: extremely quiet cycle (0 commits 10m); Comms 21m late on T+5/T+15 (buffer scrape cycle 308 showed active reasoning, deferring re-ping); PR 3 Coach point at 21:25Z
  • tpm/m3-pings.md cycle 306 ping(b) abda554
  • tpm/m3-utilization.md cycle 306 batch: quiet sprint cycle; PR 3 evaluating c3f35e4 cross-fix relay; gemini-M3-2 intervention success; codex-M3-1 pre-emptive light-touch
  • ops/acks/ TL relay: b2c8672 (Coder 2 FIX-1) ALSO closes FIX-2 terminal-export blocker per PR 1 LGTM verdict fc129e6; supersedes prior PR 3 NO-GO relay; 3 PR 3 options; PM ETA compression; IT EVALUATION should cite cross-fix
  • ops/acks: relay coder2 fix1 to IT
  • ops/acks/ TL relay: PR 1 NO-GO on PR 3 FIX-2 first attempt (365d876) with concrete recommended fix; PR 3 cross-host (EC2) reachable only via durable file
  • tpm/m3-pings.md cycle 303 ping(b) b80454b
  • tpm/m3-utilization.md cycle 303 batch: post-demo fix sprint in flight; PR 1 NO-GO on PR 3 FIX-2 attempt 1 (365d876) with concrete recommended fix; cross-host relay landed to PR 3 via ops/acks/
  • qa: update reflexion
  • ops/standups/ RESOLVED + team-lead/demo-coord 20:40Z DIAL-READY signal closes CEO escalation; phone server recovered at 20:32Z; demo +20m
  • tpm/m3-pings.md cycle 301 RESOLUTION marker: CRITICAL blocker resolved via DIAL-READY signal (TPM 4260099)
  • tpm/m3-pings.md cycle 300 ping(b) eee861c
  • tpm/m3-utilization.md cycle 300 batch: MILESTONE; CEO escalation 10m NO REPLY; RM silent at +67m; Comms T-30 scheduler missed (poked); codex-M3-1 pre-emptive; demo +25m
  • ops/standups/ CEO escalation: RM reload dispatch silent at +57m since GO; demo +30m; pre-committed Team-Lead ladder exhausted; 3 CEO action options
  • tpm/m3-pings.md cycle 298 ping(c) CRITICAL: RM dispatch latency escalated to CEO per pre-committed schedule
  • tpm/m3-pings.md cycle 297 ping(b) d59d1b8
  • tpm/m3-utilization.md cycle 297 FULL RENDER batch: RED escalation UNANSWERED at +52m; CEO escalation point NEXT cycle (298); Comms collateral SEALED 7147452; gemini-M3-2 woke; demo +40m
  • ops/acks/ RED escalation: RM reload-dispatch +50m since GO; no reply on YELLOW; demo +45m; scenario fork + CEO escalation at cycle 298 (+60m) if still silent
  • ops/acks/ + team-lead/demo-coord 20:10Z manifest seal CONFIRMED via Coder 2 buffer scrape (Switchboard delivery hiccup); cycle-293 blocker RESOLVED; RM YELLOW reduced to dispatch latency only
  • ops/acks/ YELLOW escalation: RM reload-dispatch latency at +40m past cycle-292 tripwire; 4-scenario fork + cycle-296/298 escalation schedule
  • tpm/m3-pings.md cycle 294 ping(b) f86b95d
  • tpm/m3-utilization.md cycle 294 batch: TRIPWIRES HIT — 6d9de2e no-reply + RM dispatch latency >cycle-292-tripwire YELLOW escalation; manifest seal uncertain; demo timeline tight at +55m
  • tpm/m3-pings.md cycle 293 ping(c) NEW POTENTIAL BLOCKER: 6d9de2e may un-seal demo manifest pending Coder 2 clarification
  • tpm/m3-pings.md cycle 291 ping(b) 3423c01
  • tpm/m3-utilization.md cycle 291 FULL RENDER batch + procedure update (Step 1.75 filter extended to riff/phone/ + riff/live/ for demo window); demo path remains SEALED at +34m no-reload-dispatch (RM-owned latency, not blocker)
  • team-lead/demo-coord + ops/acks/ 19:37Z PR 1 batched-GO sealed (5a608ec+d87ba20); LGTM artifact 5433a51; supersedes prior 2 relay files; phone server ready for reload
  • ops/acks/ TPM relay (d87ba20 CEO-blocker fix) + team-lead/demo-coord 19:35Z entry; batched with 5a608ec for demo; phone server ready for reload
  • tpm/m3-pings.md cycle 288 ping(b) 6b7b561
  • tpm/m3-utilization.md cycle 288 batch: Coder 2 d87ba20 CEO-blocker phone-guard fix; critical-path filter procedure gap noted; TPM relay landed via ops/acks/; demo GO + 1h 23m
  • ops/acks/ 19:30Z Team Lead → RelMgr cross-host backchannel: PR 1 GO verdict on 5a608ec+db047ca surfaced + release-gate L2 Real evidence caveat
  • team-lead/demo-coord 19:25Z PR 1 GO verdict on 5a608ec+db047ca (artifact 931ebe0); triple-verified; 5-way broadcast; demo blocker CLEARED
  • team-lead/demo-coord 19:20Z Coder 2 5a608ec GREEN + dual-independent verification (Coder 2 local + QA worktree both pass); blocker RISK→PENDING-FINAL-REVIEW awaiting PR 1 re-verdict
  • tpm/m3-pings.md cycle 285 ping(b) 548013d
  • tpm/m3-utilization.md cycle 285: Coder 2 5a608ec GREEN (Run 5 fix RED→GREEN); gemini-M3-2 peer-intervention; demo-NO-GO RISK→PENDING-FINAL-REVIEW
  • team-lead/demo-coord 19:15Z PR 1 NO-GO on db047ca + ping(c) new blocker (3c485a0 pr-review artifact; demo-NO-GO risk)
  • team-lead/demo-coordination-log.md: 19:12Z QA Run 5 RED 8504b84 landed → 3-way relay (QA ACK, Coder 2 reproducer, PR 1 cross-review queue updated); critical-path scope expanded to include tests/flows/test_property_trouble_ticket_flow.py
  • team-lead: procedure codification per CEO directives 18:48Z+19:05Z — Step 1.5 (peer-intervention scan) + Step 1.75 (demo-coord scan); demo-coord-log: 19:10Z in-progress edit detected on riff critical-path (Coder 2 announced work, lock holding)
  • tpm: M3 utilization snapshots entries 280-282 (peer-intervention validated cycle 280→281: codex-M3-1 14h→8m on inject; demo-coord-log live; critical-path scan clean)
  • team-lead/demo-coordination-log.md: 19:07Z critical-path LOCK — Coder 2 active editing Run 5 fix, QA clean, lock broadcast to Comms/Doc/QA, PR 1 informed of batched review queue (db047ca + upcoming)
  • team-lead/demo-coordination-log.md: 19:06Z 4-way critical-path broadcast to Coder 2/QA/Comms/Documentation (peer-injects ack'd by API; demo deadline + critical-path file list surfaced proactively)
  • team-lead/demo-coordination-log.md: INIT per CEO 2026-05-28T19:05Z DEMO P0 directive — riff db047ca Coder 2 fix detected at 18:51Z; PR 1 cross-review request fired via peer-inject (no TPM round-trip)
  • tpm: M3 utilization pings.md — entry-279 ping(b) for commit e992938 (was uncommitted post-batch)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 277-279 (RESTORED 277-278 from stash + 279 fresh) — RESOLUTION FR (38th, dormancy chain BROKEN by CEO directive) + QA Playwright blocker routed to Comms+Documentation
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • docs: update qa reflexion for run4 red
  • qa: update dashboard cycle evidence (branch-change)
  • Add codex-M3-5 emergency standup
  • ops: emergency standup reply — claude-M3-2 (M3 Team Lead) — task-1027acf1 ongoing, snapshot pipeline healthy, 23rd consecutive forced FR REPEAT-N=23 documents fleet dormancy CEO observed
  • Emergency standup: gemini-M3 active
  • docs: add codex m3-4 emergency standup
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 274-276 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 271-273 (36th FR REPEAT-N=22 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 268-270 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 265-267 (35th FR — 21st-in-chain REPEAT-N=21; ~630min dispatch dormancy)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 262-264 (34th FR REPEAT-N=20 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 259-261 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 256-258 (33rd FR REPEAT-N=19 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 253-255 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 250-252 (32nd FR — 18th-in-chain REPEAT-N=18; entry-250 milestone carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 247-249 (31st FR REPEAT-N=17 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 244-246 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 241-243 (30th FR REPEAT-N=16 carrier; codex-M3-1 11h null-role)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 238-240 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 235-237 (29th FR — 15th-in-chain REPEAT-N=15; ~480min dispatch dormancy)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 232-234 (28th FR REPEAT-N=14 carrier; codex-M3-1 crossed 10h null-role)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 229-231 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 226-228 (27th FR REPEAT-N=13 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 223-225 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 220-222 (26th FR — 12th-in-chain REPEAT-N=12; ~405min dispatch dormancy unchanged)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 217-219 (25th FR REPEAT-N=11 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 214-216 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 211-213 (24th FR REPEAT-N=10 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 208-210 (steady-state batch; count-guard live)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entry 207 (23rd FR REPEAT-N=9; 1-entry batch — cadence resync after cycle-206 out-of-cadence error)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 205-207 (steady-state batch; chain pending REPEAT-N=9 next cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 202-204 (22nd FR REPEAT-N=8 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 199-201 (200-entry milestone batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 196-198 (21st FR REPEAT-N=7 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 193-195 (steady-state batch)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 192-194 (20th FR REPEAT-N=6 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 190-192 (20th FR — 6th-in-chain REPEAT-N=6; ~255min dispatch dormancy unchanged)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 187-189 (19th FR REPEAT-N=5 carrier)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 184-186 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 181-183 (18th FR — 4th-in-chain REPEAT-N=4; ~205min dispatch dormancy continues)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 178-180 (steady-state batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 175-177 (17th FR — 3rd-in-chain REPEAT-N=3; dispatch dormancy ~180min unchanged)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 172-174 (16th FR w/ cycle-167 escalation-degradation landed; cycle-173 fire-cadence check live)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 169-171 (steady-state cycle batch)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 166-168 (15th forced FR + landings-backfill rehomed to every-fire Step 1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 163-165 (arith-gate semantic versioning landed; v2=median-adjusted)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 160-162 (REMEDIAL full render after entry 159 stale-inherit bug — data-corrupted marker added, parser updated, fresh-API discipline enforced; reflexion-landings.md sidecar created)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 157-159 (forced N=5 full render: dispatch dormancy unchanged + footer compaction landed)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 154-156 (task-1027acf1)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 151-153 (task-1027acf1)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 148-150 (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 145-147 (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 142-144 (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 139-141 + Coach brief intel (task-1027acf1)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 136-138 (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • docs: add coder-2 reflexion
  • tpm: M3 utilization snapshots entries 133-135 + peer-reflexion intel (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • docs: update qa reflexion
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 130-132 + NO-GO findings (task-1027acf1)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • docs: survey of OS AI-agent-team patterns + 5 adoption recs
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: verify trouble-ticket run 2 report
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 127-129 + over-quiesced rule (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 124-126 + procedure refinements (task-1027acf1)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 121-123 + procedure refinement (task-1027acf1)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: verify inflight zombie reaper transition
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 118-120 + first reflexion (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: adopt reflexion.md charter addendum (cycle 1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: surface Coach inflight-zombie reaper approval as orient card
  • qa: update dashboard cycle evidence (five-minute-cycle)
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 115-117 (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: remove POC procedure doc relative link (QA Run 9)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: split POC card — procedure READY + separate L2 Real fix-loop blocker
  • qa: update dashboard cycle evidence (branch-change)
  • comms: trouble-ticket baseline reported; L2 Real fix dispatched to Coder 2
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: trouble-ticket scope change — live POC, no phone number needed
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: file URGENT decision_needed — phone number for trouble-ticket test
  • qa: update dashboard cycle evidence (branch-change)
  • tpm: M3 utilization snapshots entries 112-114 (task-1027acf1)
  • qa: update dashboard cycle evidence (branch-change)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: remove all github.com/davidbmar/* commit links (repos are private)
  • qa: update dashboard cycle evidence (branch-change)
  • comms: fix cards.json link URLs (riff repo private; 2 agent-router fixes)
  • qa: update dashboard cycle evidence (root-url-fix-7e07b2f)
  • qa: update dashboard cycle evidence (include-all-watched-ref-scenarios)
  • qa: update dashboard cycle evidence (corrected-change-paths-d86ee22)
  • qa: update dashboard cycle evidence (comms-card-write-d86ee22)
  • comms: file blocker-dashboard-operator-link-health (QA Run 6)
  • qa: update dashboard cycle evidence (corrected-test-plan-80cee9e)
  • qa: update dashboard cycle evidence (security-token-check-80cee9e)
  • tpm: M3 utilization snapshots entries 109-111 (task-1027acf1)
  • qa: update dashboard health summary (branch-change)
  • qa: update dashboard health summary (branch-change)
  • qa: update dashboard health summary (branch-change)
  • comms: port QA Run 5 nav RESOLVED into build script
  • qa: update dashboard health summary (branch-change)
  • qa: verify nav fixes in dashboard health
  • comms: port QA Run 4 nav blockers + drop stale engagement warnings
  • qa: keep dashboard watcher scoped
  • qa: add dashboard nav health loop
  • tpm: M3 utilization snapshots entries 106-108 (task-1027acf1)
  • qa: verify exec v7 mic wiring
  • tpm: M3 utilization snapshots entries 103-105 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 100-102 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 97-99 (task-1027acf1)
  • comms: refine #1 to https-cert-provisioning (one-click operator action)
  • tpm: M3 utilization snapshots entries 94-96 (task-1027acf1)
  • comms: re-author current-priorities with P10 EMERGENCY top-3 (queue v5)
  • comms: populate current-priorities with Backlog top-3 (queue v3.4)
  • comms: add permanent current_priorities card (P10, non-dismissible)
  • tpm: M3 utilization snapshots entries 91-93 (task-1027acf1)
  • feat(inbox): tiny CORS-enabled POST sidecar on :8766 for CEO→TPM send path
  • tpm: M3 utilization snapshots entries 88-90 (task-1027acf1)
  • comms: re-sort cards.json after QA run-2 priority reclassification
  • qa: rerun exec dashboard playwright cycle
  • tpm: M3 utilization snapshots entries 85-87 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 82-84 (task-1027acf1)
  • comms: correct entity-leak blocker body (innerHTML not textContent)
  • tpm: M3 utilization snapshots entries 79-81 (task-1027acf1)
  • comms: fix entity leak + surface 3 QA dashboard_v1 findings
  • qa: rerun exec dashboard playwright cycle
  • tpm: M3 utilization snapshots entries 76-78 (task-1027acf1)
  • comms: stub RIFF command-center placeholders in cards.json
  • tpm: M3 utilization snapshots entries 73-75 (task-1027acf1)
  • qa: add exec dashboard playwright cycle
  • comms: ship cards.json structured format + render digest.html
  • tpm: M3 utilization snapshots entries 70-72 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 67-69 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 64-66 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 61-63 (task-1027acf1)
  • ui: add root index.html that redirects to /static/exec.html
  • tpm: M3 utilization snapshots entries 58-60 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 55-57 (task-1027acf1)
45 commits

Agent Router Adds Mobile Voice Mode, Manager Queue, and M3 Utilization Tracking

This update introduces a comprehensive mobile interface with voice dictation, a manager-mode task queue, and granular M3 utilization snapshots. It also establishes role-based personas and operational documentation to streamline fleet management and developer onboarding.

agent-router 45
▸ how to apply & commit details

How you can apply this

  • Implement a 'composer-first' mobile UX with a persistent bottom input bar and fullscreen voice dictation overlay for hands-free operation.
  • Build a manager-mode dashboard featuring a task queue pane and `/api/manager` endpoints to handle TPM and technical project manager workflows.
  • Track system health by bootstrapping M3 utilization snapshots in sequential entries to monitor resource usage over time.
  • Enhance fleet visibility by adding a Hosts pane with tailnet auto-discovery and peer gossip to display real-time router status.

Commits

agent-router
  • tpm: M3 utilization snapshots entries 52-54 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 49-51 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 46-48 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 43-45 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 40-42 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 37-39 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 34-36 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 31-33 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 28-30 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 25-27 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 22-24 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 19-21 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 16-18 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 13-15 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 10-12 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 7-9 (task-1027acf1)
  • feat(/exec): rebuild canonical operator briefing per task-b53d042b
  • tpm: M3 utilization snapshots entries 4-6 (task-1027acf1)
  • tpm: M3 utilization snapshots entries 1-3 (task-1027acf1)
  • tpm: bootstrap M3 utilization snapshot duty (task-1027acf1)
  • feat(/exec): add executive operations briefing page
  • feat(/status): add operator fleet-status dashboard
  • fix(/api/manager): accept TPM/Manager/Technical Project Manager labels
  • Merge feat/coder-1-m-worker-detail-redesign
  • docs: fix queue + manager API field shapes to match implementation
  • Merge feat/manager-mode-a: queue endpoints + /api/manager + Queue tab
  • Merge feat/docs-ops: Operational Playbook section
  • Merge feat/docs-mobile: /m UI walkthrough section
  • Merge feat/role-personas: 10 org-chart role .md files
  • feat(/m): worker-detail panel + role-first picker + visible mic
  • feat(roles): define 10 org-chart role personas
  • feat(manager-mode): task queue + /api/manager + Queue pane
  • feat(manager-mode): task queue + /api/manager + Queue pane
  • docs: add Operational Playbook section to README
  • docs: update HTTP API reference
  • docs(README): walkthrough of /m mobile UI
  • Merge feat/voice-mode: fullscreen FAB + huge live transcript overlay
  • feat(/m): Voice Mode — fullscreen dictation overlay + accent FAB
  • Merge feat/composer-first-mobile: persistent bottom composer UX
  • Merge feat/m-hosts-pane: Hosts pane + /api/peers/status endpoint
  • feat(/m): Hosts pane showing every router in the fleet
  • feat(/m): composer-first mobile UX (persistent bottom composer)
  • feat(/m): host picker dropdown + Claude/Codex/Gemini spawn buttons
  • updates
  • feat: tailnet auto-discovery, peer gossip, and mobile /m dashboard
8 commits

Agent Router Delegation Parity and Cal Provider Onboarding Overhaul

Enhanced agent-router with visible delegation capabilities and session persistence while refining cal-provider's onboarding flow for professional service businesses. These updates improve routing consistency and clarify calendar setup through targeted copy improvements.

agent-router 4cal-provider 4
▸ how to apply & commit details

How you can apply this

  • Implement visible router delegation in agent systems to ensure prompt template parity and consistent behavior across delegation paths.
  • Preserve user sessions during browser refreshes in stateful routing applications to maintain continuity and reduce friction.
  • Refine onboarding wizards by applying focused narrative lenses (e.g., Bezos/Jobs) to tailor copy for specific business verticals like professional services.

Commits

agent-router
  • feat: improve visible delegation parity
  • fix: ignore visible delegation prompt templates
  • feat: add visible router delegation
  • fix: preserve router sessions on browser refresh
cal-provider
  • onboarding: apply Bezos/Jobs lenses to setup wizard
  • onboarding: rewrite setup wizard copy for professional service-business focus
  • feat: clarify customer calendar onboarding
  • feat: clarify calendar setup wizard
2 commits

Agent Router Gains Peer Discovery and Session Logs

Agent Router added mDNS auto-discovery so federation peers can find each other without manual configuration. It also introduced per-session JSONL activity logs with `/api/logs` endpoints for retrieving session activity.

agent-router 2
▸ how to apply & commit details

How you can apply this

  • Use mDNS discovery to let federated services locate peers automatically on a network.
  • Record per-session activity as JSONL to keep logs append-friendly and easy to process.
  • Expose log retrieval through API endpoints so tooling can inspect router activity programmatically.

Commits

agent-router
  • feat(router): mDNS auto-discovery of federation peers
  • feat(router): per-session JSONL activity logs + /api/logs endpoints
65 commits

COE Overview Builds An Ingest-to-Docs Ops Pipeline

COE-overview grew from design plan and scaffold into a deployed-ready service that ingests multiple internal/security sources, normalizes COE events, tracks runs in Postgres, and renders weekly prep docs with source links. The day also added CI image publishing, Docker/Kubernetes deployment artifacts, Grafana dashboards, smoke tests, integration tests, and review-driven hardening.

COE-overview 65
▸ how to apply & commit details

How you can apply this

  • Reuse the ingest pattern: shared tenacity+httpx retry/error helpers plus structured AuthError and TransientError types across Jira, Wiz, CrowdStrike, Vibranium, and HR clients.
  • Apply the persistence model: async Alembic/Postgres schema with coe_events, coe_runs, employees, raw tables, idempotent upserts, and start_run/finish_run helpers.
  • Borrow the pipeline structure: per-task async sessions, contextvar logging, rollback on failures, JSON-mode audit dumps, and integration tests covering acceptance criteria.
  • Copy the ops path: multi-stage uv Dockerfile, GHCR build/push CI, Kubernetes CronJob with initContainer, secret templates, smoke tests, and Grafana import docs.

Commits

COE-overview
  • Merge pull request #1 from davidbmar/coe-overview
  • docs: add human test plan for COE Overview
  • fix(deploy): cycle-1 review issues (envFrom DRY, securityContext, README)
  • docs(deploy): apply order, secret template, smoke test
  • feat(deploy): k8s cronjob with initContainer for ingest->doc
  • ci: build and push image to ghcr
  • feat(docker): multi-stage Dockerfile with uv
  • fix(grafana): cycle-1 review issues (schema prefix, status filter, etc)
  • docs(grafana): import + datasource README
  • feat(grafana): COE overview dashboard
  • fix(doc): close cycle-2 carryovers + multi-event newline regression
  • fix(doc): I2-I5 - improve test rigor for error messages and DB mutation
  • fix(doc): I1, M2-M5 - settings-driven URLs, private API, unused params, async sessionmaker
  • fix(doc): C2 - rewrite build_requests to track cursor positions and fix indices
  • fix(doc): C1 - handle NULL coe_review_status in section filter
  • fix(doc): silence mypy no-untyped-call on Credentials factory
  • test(doc): e2e renderer tests covering AC4.1-AC4.4
  • feat(doc): weekly prep renderer with sections + source links
  • feat(doc): google docs api wrapper with structured errors
  • feat(doc): section query layer for weekly prep doc
  • fix(I-cycle2-B, C-cycle2): Add asyncio.sleep mock and token cache clearing fixtures, replace fake-green test
  • fix(M-cycle2-A): Restore capture_processor type signature to MutableMapping
  • fix(I-cycle2-A, M-cycle2-B, M-cycle2-C, M-cycle2-D): Pipeline session handling and logging consistency
  • fix(C-cycle2, I-cycle2-A): Move json coercion into finish_run, add session rollback
  • fix: address all 15 Phase 4 code review issues
  • fix(pipeline): JSON-mode model_dump for raw audit + accurate test mocks
  • test(pipeline): integration tests covering AC3.1-AC3.5
  • feat(pipeline): orchestrator with per-task sessions + contextvar logs
  • feat(db): start_run / finish_run + find_prior_run helper
  • feat(db): idempotent upsert helpers (coe_events + raw tables)
  • test/docs: tighten cycle-2 carryovers in normalize/employees
  • fix(db/employees): use statement_timestamp() to capture update time at each upsert
  • fix(normalize): handle empty Jira summary, filter test for warning level
  • fix(test): verify last_synced_at advances on idempotent upsert, consolidate db fixtures
  • feat(owner-resolver): pure resolver + db-backed loader
  • feat(db): upsert helper for employees table
  • feat(normalize): severity mapping + per-source to_coe_event
  • test(ingest): assert call_count == 1 on HR 401/403 tests
  • fix: add module docstrings and rename Employee to HrEmployee
  • fix: add call_count assertions to per-source 401/403 tests
  • fix: remove datetime.now() fallbacks for missing timestamps
  • fix: add optional client parameter for connection pooling
  • fix: jira timezone handling and auth retry assertions
  • fix: add conftest sleep mocking and improve retry logic
  • feat(ingest): internal HR client for employee directory
  • feat(ingest): vibranium client (internal API)
  • feat(ingest): crowdstrike client with two-step queries+summaries
  • feat(ingest): wiz graphql client with token cache
  • feat(ingest): jira client with JQL filter and cursor pagination
  • feat(ingest): shared retry+error helper using tenacity+httpx
  • feat(ingest): structured AuthError / TransientError types
  • style(db): wrap CoeRun.started_at; align 0001 migration to PEP 604 typing
  • test(db): tighten schema smoke test to verify enums and constraints
  • chore(scaffold): remove unused mypy override, tidy alembic config and template
  • fix(db): use values_callable on Enum columns; regenerate migration with correct labels
  • test: smoke test that migrations create all expected tables
  • feat(db): initial schema with coe_events, coe_runs, employees, raw tables
  • fix(scaffold): pass pre-commit on env.py + plan-defect cleanups
  • chore: initialize alembic with async env.py
  • chore: add docker-compose for local postgres
  • chore: add pre-commit hooks
  • chore: add ruff, mypy, pytest configuration
  • chore: initialize uv project with core deps
  • Add COE-overview acceptance criteria and implementation plan
  • Add COE-overview design plan
11 commits

Agent Router Gains Federated Multi-Terminal Coordination

agent-router v2.2 added machine-aware federation, broadcast routing, role metadata, bearer-token auth, and cleaner Vision API support for multi-terminal workspaces. The docs were expanded into a canonical architecture/protocol reference with operational layers, endpoint fixes, federation setup, .env config, and cookbook guidance.

agent-router 11
▸ how to apply & commit details

How you can apply this

  • Use /api/broadcast plus peer_send.py helpers as a reusable pattern for agent-to-agent fanout across routed sessions.
  • Configure cross-machine routing with .env-backed federation settings and ROUTER_TOKEN bearer auth instead of hardcoded peer config.
  • Track coordination state with role metadata, idle/busy status, extra-return submits, and a briefed flag for richer worker orchestration.
  • Avoid operator typo collisions by deriving the session_id host segment from ROUTER_MACHINE in machine-aware workspaces.

Commits

agent-router
  • docs: add ARCHITECTURE.md — canonical design + protocol reference
  • docs: add Operational Layers section — Captain / Team Lead / Workers / Operator
  • docs: refresh README for v2.2 (federation, broadcast, role, .env, cookbook)
  • feat(router): /api/broadcast, role metadata, extra-returns submit, briefed flag
  • fix(router): force session_id host segment to ROUTER_MACHINE (no operator typo collisions)
  • feat(router): .env support for federation config
  • feat(router): federation across machines + ROUTER_TOKEN bearer auth
  • feat(router): peer_send.py + broadcast helpers for agent-to-agent routing
  • feat(router): cleaner Vision API, idle/busy state, inject endpoint, fix dispatcher routing
  • docs: rewrite README and fix endpoint references in COORDINATION
  • feat: implement multi-terminal machine-aware workspace with vision API
29 commits

Build a Self-Healing Site Registry with Auto-Refresh and Health Checks

Implemented a comprehensive sites registry featuring a Master Control Panel dashboard, automated hourly refreshes via launchd, and a robust CLI doctor for verifying deployment health. The system introduces a seven-tier status priority engine and secure basic-auth provisioning to monitor content freshness across multiple intelligence briefing tools.

UFOBriefing 1everyone-ai 1intelligence-briefing-toolkit 24iran-intel 3
▸ how to apply & commit details

How you can apply this

  • Implement a 'doctor' CLI command that validates repo config, DNS, and history to surface content age rather than just deploy timestamps.
  • Use launchd plists to trigger hourly auto-refreshes of MCP dashboards, ensuring data stays current without manual intervention.
  • Adopt a seven-tier priority status engine with environment-overridable thresholds to derive site health from structured deploy logs.

Commits

UFOBriefing
  • feat(deploy): append .deploy-logs/history.jsonl on EXIT
everyone-ai
  • docs(backlog): F-326 AWS IAM Identity Center + OneLogin SAML federation
intelligence-briefing-toolkit
  • chore: snapshot pipeline data + skills cache
  • feat(sites): make CloudFront domains clickable in MCP dashboard
  • feat(sites): launchd plist for hourly MCP auto-refresh (Phase D)
  • feat(sites): MCP basic-auth setup script (creds via env, not committed)
  • feat(sites): provision MCP infrastructure (sites-control-panel)
  • feat(sites): Master Control Panel HTML dashboard generator
  • feat(sites): add data_fresh check — surface content age, not just deploy age
  • feat(sites): add 'ibt sites doctor' CLI + verify wheel packaging
  • feat(sites): doctor checks (repo, config, history, dns, freshness)
  • feat(sites): add 'ibt sites show <id>' CLI command
  • feat(sites): add 'ibt sites list' CLI command
  • feat(sites): wire _build_record + add load_site/site_history public API
  • feat(sites): derive_status() with 7-tier priority + env-overridable threshold
  • style(sites): hoist timezone import to top of test file
  • feat(sites): read .deploy-logs/history.jsonl, newest first
  • feat(sites): read DeployConfig from .deploy-config.json with key aliasing
  • refactor(sites): hoist imports + add explicit tilde-resolution test
  • feat(sites): implement load_sites() with envvar + tilde path resolution
  • test(sites): add fixture repos covering all 7 status enum values
  • feat(sites): define DeployConfig, HistoryEntry, SiteRecord, SiteStatus types
  • feat(sites): add static registry of 5 sites
  • docs: Phase 1 implementation plan for sites registry
  • docs: sites-registry design v2 — address codex review
  • docs: design plan for cross-repo sites registry
iran-intel
  • chore: snapshot runtime deploy logs
  • chore(launchd): rename misnamed plist + actually install in launchd
  • feat(deploy): append .deploy-logs/history.jsonl on EXIT
35 commits

Reusable Portals, Citation-Safe Voice Pipelines, Explorable Evidence

Everyone AI gained a OneLogin-compatible single-team portal gate, shared S3 Drive mode backed by Kubernetes PV/PVC provisioning, and nginx/Playwright deploy hardening. The briefing projects shipped evidence persistence and citation-safe persona voicing: all 20 case packs saved to disk, Case Reopened debates voiced, UFOBriefing preferring voiced outputs, and citations cleaned into explorable links.

UFOBriefing 9everyone-ai 7intelligence-briefing-toolkit 2tool-RAG-for-split-personalities 17
▸ how to apply & commit details

How you can apply this

  • Back shared-mode storage with PV/PVC scripts when a portal needs one S3 prefix without per-user OIDC.
  • Make OIDC authorize/token paths configurable so OneLogin-specific routing stays outside core portal logic.
  • Guard LLM rewrites with citation-token multiset checks and known-header section splitting to prevent fake citations.
  • Persist case packs and render citations as evidence links so generated briefings stay auditable.

Commits

UFOBriefing
  • fix: title parser also accepts hyphen separator after em-dash strip
  • fix: enforce no em-dashes across the site, italics/code now render
  • fix: remove unauthorized author-name bylines + render italics/code/inline code
  • feat: National-Geographic-style persona portraits with text wrap
  • feat: Plan 2 — citations are now explorable evidence links
  • fix: strip <stance>…</stance> blocks from rendered prose
  • feat: cases UI — 'Voiced · <author>' byline + colophon note
  • fix: Task 7 review — warn on voice load fail, doc personas dep, voiced on index
  • feat: build-cases — prefer voiced.md + voiced_tldrs, carry voice_author
everyone-ai
  • fix(infra): nginx vhost for bare <team>.ai.internal.capsule.com + HR Playwright smoke
  • chore(scripts): apply-shared-drive-pv.sh — provision PV+PVC for shared-mode Drive
  • fix(portal/k8s): shared-mode workspace mount uses PVC, not inline CSI
  • feat(portal/drive): S3_DRIVE_SHARED_MODE — single shared prefix, no OIDC required (MVP)
  • docs(backlog): F-325 OneLogin OIDC integration for HR portal
  • feat(portal/auth): OneLogin-compatible OIDC — configurable authorize/token paths, single-team portal gating
  • chore(deploy): restore +x bit on deploy-all-portals.sh
intelligence-briefing-toolkit
  • chore: snapshot pipeline data — 12 research projects + ufo graph
  • feat: persist all 20 case packs to disk for evidence-explorability
tool-RAG-for-split-personalities
  • test: full Claude-in-terminal rewrite of all 6 washington-flap personas
  • chore: project style — no em-dashes (U+2014) anywhere in prose
  • chore: remove unauthorized author-name attribution from the voicing layer
  • feat: voice all 9 Case Reopened debates (Pollan/Brin/Twain/Kuang/Carroll/Duchovny)
  • fix: guard the TLDR rewrite — LLM was inventing fake citation tokens
  • fix: Task 5 review — correct stale docstring, import placement, no-op guard
  • feat: run_voice_pass — full assembly, Anthropic rewriter, CLI
  • fix: Task 4 review — type-annotate rewrite_transcript + rewriter callable
  • feat: run_voice_pass — voice prompts + citation-guarded rewrite
  • fix: Task 3 review — centralize FIXED_SECTIONS, clarity, fallback test
  • feat: run_voice_pass — known-header section splitter
  • fix: Task 2 review — CITATION_RE is a bracket-agnostic superset
  • docs: CITATION_RE is a bracket-agnostic superset, not a build-cases mirror
  • feat: run_voice_pass — citation-token multiset extraction
  • fix: Task 1 review — dedupe VOICE_KEYS, stop double-reporting in check_voice
  • feat: F-098 — author-voice blocks on the 6 ufo-disclosure personas
  • docs: implementation plan — author-voice rewrite layer
50 commits

Drive Panel Hardening Meets UFO Case Pack Pipeline

Everyone AI finalized Drive Panel v1’s auth and rollout path by splitting portal/workspace S3 flags, deriving identity from portalSession cookies, moving routes to /me/* and /admin/*, and adding middleware/session tests. The UFO briefing stack gained a reusable case-pack builder, persona-driven panel orchestration, /cases rendering assets, plus EC2 cron and radar UI polish.

UFOBriefing 5everyone-ai 27intelligence-briefing-toolkit 10tool-RAG-for-split-personalities 8
▸ how to apply & commit details

How you can apply this

  • Split portal and workspace feature flags to decouple UI rollout from storage volume mounting.
  • Resolve /api/drive/me/* identity server-side from portalSession cookies and cover auth, admin, and no-overwrite middleware contracts.
  • Harden rollout reviews with filename sanitization tests, admin-flag loss assertions, and smoke-check runbook notes.
  • Make generated briefings reusable with a case-pack manifest, persona JSONs, run_case_panel.py orchestration, and a /cases renderer.

Commits

UFOBriefing
  • feat: PR 4 — /cases route renders the Case Reopened panel debates
  • docs: RENDER_MOCKUP fixes per Codex Rev 2.1
  • add: /cases route presentation assets — render mockup + 6 persona portraits
  • Radar icon fixes, pursue page glass cleanup, article lightbox blocklist
  • Add EC2 cron pipeline scripts and radar icon component
everyone-ai
  • docs: add human test plan for drive-panel-v1 rollout
  • docs(security): clarify admin-cookie test comments + extend B-1213 scope
  • docs(backlog): B-1213 team-auth admin header hardening (out of scope for drive-panel-v1)
  • fix(portal): cookie-derived admin claim + filename sanitization (drive-panel-v1 final review)
  • docs(runbook): document portalSession cookie extraction for API smoke checks
  • chore(deploy): template S3_DRIVE_PORTAL_ENABLED per-team for v1 HR rollout
  • docs(portal/drive.js): drop stale "user selector" comment in header
  • feat(portal/drive.js): remove username input and target /api/drive/me/*
  • chore(portal/index): move Drive nav button between Apps and Usage
  • docs(portal/drive/tests): correct AC3.2 sanitizer-trace comment
  • fix(portal/drive): repair phase-4 review findings — delete obsolete flag test, pin sanitizer landing, harden Module._load cleanup
  • feat(portal/drive): restructure routes to /me/* and /admin/* with server-side identity
  • fix(portal): test-isolation hygiene + restore safety comments + clarify cookie variable + assert admin-flag loss
  • test(portal): cover portal-session middleware contract — auth, admin, no-overwrite
  • feat(portal): add portal-session middleware that resolves portalSession cookie
  • refactor(portal): extract session helpers to lib/session for reuse by middleware
  • test(portal): cover buildPortalSessionPayload for valid, missing, oversized sub
  • feat(portal/auth): include OIDC sub claim in portalSession cookie
  • test(portal): drop unused config binding in drive-routes-flag tests
  • test(portal): behavioral coverage for drive-routes-flag and k8s s3-drive volume guard
  • chore(portal/k8s): split deployment env vars S3_DRIVE_ENABLED → PORTAL + WORKSPACE
  • refactor(portal/public): read s3DrivePortalEnabled from /api/config; update user-facing flag hint
  • refactor(portal): rename /api/config key s3DriveEnabled → s3DrivePortalEnabled
  • refactor(portal/k8s): gate CSI s3-drive volume on S3_DRIVE_WORKSPACE_ENABLED
  • refactor(portal/drive): gate /api/drive routes on S3_DRIVE_PORTAL_ENABLED
  • feat(portal): split S3_DRIVE_ENABLED into portal and workspace flags
  • docs: add Drive Panel v1 design plan
intelligence-briefing-toolkit
  • docs: F-098 — PR 2 done; AC4.2 measured (partial); AC4.3 met (standalone)
  • docs: F-098 progress — AC4.1 done (persona JSONs landed in tool-RAG)
  • feat: PR 1 — full case-pack builder + 20-case manifest
  • fix: B-134 — dual-URL contract for disclosure provenance (PR 1 blocker)
  • docs: B-134 final-contract cleanup (Codex Rev 2.3 — PASS)
  • docs: B-134 Rev 2.2 — fix stale test contract + PR-1-blocker priority
  • docs: B-134 + build_case_pack.py per Codex Rev 2.1 review
  • refactor: split panel-design across three repos + apply Codex review fixes
  • docs: 0022 — add case-pack POC validation finding
  • design: "Case Reopened" panel format for UFOBriefing (F-098 unblock)
tool-RAG-for-split-personalities
  • docs: design — author-voice rewrite layer for Case Reopened panels
  • feat: F-098 — 8 more case-reopened panel debates (002-009)
  • feat: PR 2 — run_case_panel.py orchestrator + first real Father Gill debate
  • feat: F-098 — ufo-disclosure persona JSONs (6 + Kore moderator + domain)
  • docs: ufo-disclosure DESIGN Rev 2.3 — Codex PASS + final cleanups
  • docs: ufo-disclosure DESIGN Rev 2.2 — third Codex pass cleanups
  • docs: ufo-disclosure DESIGN Rev 2.1 — second Codex pass fixes
  • add: domains/ufo-disclosure/ — character personalities for the UFO panel
1 commit

UFOBriefing Adds Glass UI and Disclosure Lightboxes

UFOBriefing was redesigned with a liquid glass UI and the Outfit font for a refreshed presentation. The update also integrated a disclosure database and added interactive lightboxes for exploring content.

UFOBriefing 1
▸ how to apply & commit details

How you can apply this

  • Refresh an existing app with a cohesive visual system, like liquid glass surfaces plus a dedicated display font.
  • Wire domain-specific data into the product through a disclosure database integration.
  • Use interactive lightboxes to let users inspect related content without leaving the main briefing flow.

Commits

UFOBriefing
  • Redesign: liquid glass UI, Outfit font, disclosure DB integration, interactive lightboxes
12 commits

Enhanced Disclosure Graphs and Switchboard Coordination Contracts

This update integrates refreshed evidence into the intelligence briefing toolkit and adds interactive disclosure graph explorers. It also stabilizes the Switchboard AI worker coordination by refining task ownership logic and syncing contracts.

UFOBriefing 3intelligence-briefing-toolkit 4switchboard-ai 5
▸ how to apply & commit details

How you can apply this

  • Implement interactive graph explorers for complex data relationships, as seen in the new UFOBriefing disclosure lead and graph features.
  • Use provenance metadata to dynamically derive audit parameters, demonstrated by the fix for deriving audit years from disclosure sources.
  • Isolate project targets from worker boards to prevent command conflicts, a pattern applied in the Switchboard AI task ownership fixes.

Commits

UFOBriefing
  • fix: clarify disclosure graph and lead counts
  • feat: add disclosure lead explorer
  • feat: add disclosure graph explorer
intelligence-briefing-toolkit
  • data: refresh Billings project evidence
  • data: refresh research project evidence
  • data: merge S1.7 disclosure graph into live UFO graph
  • fix: derive audit years from disclosure provenance
switchboard-ai
  • docs: add switchboard coordination notes
  • fix: keep project targets out of worker board
  • fix: keep targeted commands from stealing task owners
  • feat: add switchboard client sync contract
  • feat: improve worker dashboard state
29 commits

Scale Knowledge Graph to 1,481 Entities and Stabilize Agent Task Broker

The intelligence toolkit executed a major data cutover expanding the UFO graph while implementing strict quality gates and provenance tracking. Concurrently, the switchboard system introduced per-agent task inboxes and a program state dashboard to improve coordination reliability.

intelligence-briefing-toolkit 17switchboard-ai 12
▸ how to apply & commit details

How you can apply this

  • Implement atomic provenance persistence and merge audit gates to ensure data integrity during large-scale knowledge graph cutovers.
  • Wire multi-stage quality checks (G1-G4) into nightly pipelines to automatically validate brief recency and content standards.
  • Adopt per-agent task inboxes with lifecycle management to prevent false blockers and preserve evidence during active follow-ups.

Commits

intelligence-briefing-toolkit
  • docs: 0021 — pre-Phase-3 dry-run results (10-doc sample through Phase 1+2)
  • feat: S1.7 Phase 2 — dry-run merge audit + decision-file gate
  • fix: S1.7 Phase 1 follow-ups — B-130/B-131/B-132 per Codex review
  • fix: S1.7 Phase 1 — atomic provenance persistence (B-129 closed)
  • docs: S1.7 Phase 0 closure — SQLite probe, Path B eliminated
  • docs: S1.7 — Codex sanity-check of 0018 + B-129 filed + plan drafted
  • docs: session doc final state — handoff for next instance
  • fix: G3 reads brief_recency_days from project.json — meaningful warnings
  • docs: F-098 backlog ticket — UFO personas in tool-RAG (S4 prep)
  • docs: S1.5 Phase 3 closure — 0019 backfill + AC verification
  • feat: S1.5 UFOBriefQualityGate — G1+G2+G3+G4 wired to nightly Step 8
  • docs+scripts: S1.5 Phase 1 pivot + S1.7 corpus-ingest planning
  • docs: S1 Phase 3 closure — 0015 cutover results filled in, README index
  • data: S1 Phase 3 cutover — live UFO graph 7 → 1,481 entities
  • code: S1 Phase 3 cutover — merge tool, canonicalizer, regression test, defensive fixes
  • session: S-2026-05-10-0448 Phase 3 Task 1 complete (2,799 entities, 23.13h MLX run)
  • scripts: fix MLX launcher health-check + crontab grep edge case
switchboard-ai
  • feat: add task broker lifecycle
  • fix: keep find pings from reassigning tasks
  • fix: prefer direct tasks in agent inbox
  • feat: add per-agent task inbox
  • fix: preserve ladder evidence during active follow-up
  • fix: keep coordination updates out of task state
  • fix: treat passing results as current ladder evidence
  • fix: use latest evidence for ladder state
  • fix: avoid false blockers in program state
  • feat: add program state dashboard
  • feat: scope portal notes by Austin day
  • feat: show watcher heartbeats as listening
19 commits

Switchboard v1 Launches Multi-Agent Coordination With Live Portal UI

The Switchboard AI project initialized its v1 append-only multi-agent coordination channel, featuring a live portal with real-time roster updates and terminal alerts. Concurrently, the Intelligence Briefing Toolkit received critical bug fixes and documentation updates regarding scheduler configuration and dual-bug investigations.

intelligence-briefing-toolkit 2switchboard-ai 17
▸ how to apply & commit details

How you can apply this

  • Implement an append-only coordination channel to manage state consistency across multiple autonomous agents.
  • Build a live monitoring portal that visualizes agent rosters, online status, and terminal find indicators for real-time oversight.
  • Use environment flags like IBT_DISABLE_SCHEDULER to temporarily bypass specific services during local debugging or testing.

Commits

intelligence-briefing-toolkit
  • nightly: IBT_DISABLE_SCHEDULER=1 for the temporary uvicorn (Bug A fix)
  • docs/codex: 0016 — B-128 investigation finds TWO bugs (not one)
switchboard-ai
  • fix: harden portal live UI state
  • feat: label agent terminal tabs
  • feat: start terminal alerts from now
  • feat: add active finds panel
  • feat: add iterm2 find indicators
  • fix: highlight roster find targets
  • feat: highlight find terminal source
  • feat: add portal agent brief
  • docs: add agent operating prompt
  • fix: show online status in roster
  • feat: add terminal find alerts
  • feat: improve portal pretty cards
  • feat: add find alerts and artifact guidance
  • feat: add pretty-json turn cards
  • feat: add agent roster updates
  • feat: add live portal and multi-agent docs
  • init: SWITCHBOARD v1 — append-only multi-agent coordination channel
49 commits

Build LLM Entity Extractors and Codex-Reviewed Sprint Plans

Implemented sample-first LLM entity extraction with robust JSON parsing and source tiering, while establishing a codex-driven planning workflow for sprint execution. The update includes interactive launch scripts, regression-tested collectors, and a split CloudFront distribution for design documentation.

UFOBriefing 21intelligence-briefing-toolkit 28
▸ how to apply & commit details

How you can apply this

  • Reuse the `extract_entities.py` script to implement sample-first LLM extraction with strict `_parse_llm_json` contracts for reliable structured output.
  • Adopt the `source_tier.py` utility to modularize source classification logic and enforce confidence scoring across data ingestion pipelines.
  • Apply the interactive `s1-phase03-cutover-launch.sh` pattern to create guided, step-by-step launchers for complex multi-phase deployment tasks.
  • Implement the 'Codex review' documentation strategy by archiving rejected plans and maintaining plain-English TL;DRs to track decision trails.

Commits

UFOBriefing
  • Merge branch 'ufo-storyline-engine' — Phase 2 (Sprint S1) plan
  • plan(s1): archive phase_01.md (rejected by Codex review)
  • docs(s1-phase-02): plain-English explainer at top of plan
  • plan(s1-phase-02): build the LLM extractor (Codex-reviewed pre-commit)
  • deploy: split design bible into its own CloudFront distribution
  • deps: bump postcss to ^8.5.10 + override (CVE/Dependabot fix)
  • plan(s1-phase-01): record Route 1 decision (confirm-and-skip)
  • plan(s1-phase-01): annotate "needs revision" per Codex review
  • plan(s1-phase-01): Sprint S1 diagnostic — why only 7 entities
  • Merge branch 'ufo-storyline-engine' — Phase 1 (Sprint S0) plan
  • docs(design): align S0 ship-if + implementation with Path A3 decision
  • plan(phase-01): UFO storyline engine Sprint S0 verify-and-resolve
  • docs(design): correct S0 to verify-and-resolve per investigation findings
  • .gitignore: ignore .worktrees/ before creating implementation-plan worktree
  • docs/codex: capture all 3 Codex review files (storyline + metapath + timeline)
  • docs(design): add Chapter VII — Sprint Roadmap (10 sprints to first chapter ship)
  • docs(design): three-date schema for every artifact (publish vs event vs discovered)
  • docs(design): sync external edits — timeline-aware nav + Phase A.5 + temporal
  • docs(design): add Chapter VI — Timeline (the temporal spine)
  • docs(design): add Chapter V — Domain Pack (engine vs game architecture)
  • docs(design): private design bible — 5-page HTML site at /design/
intelligence-briefing-toolkit
  • scripts: s1-phase03-cutover-launch.sh — interactive launcher for Phase 3 Task 1
  • tests: update 2 pre-existing tests for new _parse_llm_json contract
  • session: S-2026-05-09-1914 Phase 2 Subcomponents B + C complete (Tasks 4-8)
  • docs/codex: 0014 — S1 Phase 2 sample results + merge dry-run (Task 7)
  • tests: extract_entities summary aggregation + source type coverage (Task 8)
  • scripts: extract_entities.py — sample-first LLM extraction (Phase 2, Task 4)
  • scripts: extract_entities.py — sample-first LLM extraction (Phase 2, Task 4)
  • refactor: move source_type_for_record to intel_briefing/utils/source_tier.py
  • session: S-2026-05-09-1914 Subcomponent A complete (Tasks 1-3)
  • subcomponent-a: defenses + confidence helper + classifier reuse (Tasks 1-3)
  • docs/codex: add plain-English TL;DRs to 0011, 0012, 0013
  • docs/codex: 0013 — S1 Phase 1 confirmation artifact (Route 1 closure)
  • docs/codex: 0012 — S1 route decision (Route 1, confirm-and-skip)
  • session: S1 Phase 1 planning + Codex review (overnight autonomous)
  • docs/codex: 0011 — Codex review of Sprint S1 Phase 1 diagnostic plan
  • docs/codex: 0010 Path A3 decision + cross-references
  • collector: remove dead live_fetch_succeeded flag
  • collector: accurate manifest log count + always-run V1 fallback
  • session: document Phase 1 commit trail + AC1.2 verified (post-fix)
  • collector: PURSUE manifest path + AC1.2 actually verified (Path A3)
  • session: append Subcomponent C (Task 5) results
  • scripts: enforce .venv usage + sanity check in nightly-ufo-pipeline.sh
  • session: append Subcomponent B (Tasks 3-4) results to S-2026-05-09-0405
  • backlog: B-128 — daily-brief uvicorn timeout (deploy blocker)
  • tests: pin signals.json regression floor at 1,400
  • tests: regression for PURSUE source_url dedup against manifest
  • docs/codex: 0009 — S0 drift findings + Phase 01 decisions before plan
  • docs/codex: 5 new Codex reviews (UFO storyline + metapath + relationship-pack + timeline) + research drift
18 commits

UFOBriefing Launches PURSUE Archive with Self-Hosted Gallery and Editorial Layout

The UFOBriefing platform introduced a dedicated PURSUE archive featuring self-hosted images, a National Geographic-style layout, and consistent editorial branding across all sections. Concurrently, the intelligence toolkit refined its evidence collection mechanisms while the search index added support for custom seed directories and S3 URL returns.

UFOBriefing 11intelligence-briefing-toolkit 5iran-intel 1traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Implement a single-flowing editorial layout by threading image_url, caption, and credit metadata through build scripts for conditional rendering.
  • Self-host static assets like release images to ensure gallery stability and remove external dependencies from the content pipeline.
  • Extend search index utilities to accept custom seed directories and return working S3 URLs for flexible asset management.

Commits

UFOBriefing
  • feat: editorial treatment site-wide — same signature on /, /daily, /wire, /signals
  • feat: Nurul palette + section delimiters + FBI Vault historical section
  • feat(pursue): National Geographic editorial layout — single flowing view
  • feat(pursue): self-host all 17 PURSUE Release 01 images + gallery on /pursue
  • feat(daily,wire): conditional <img> rendering for entries with image_url
  • feat: PURSUE archive page + home banner + header nav
  • build scripts: thread image_url + image_caption + image_credit through
  • plan: thread Codex corrections inline (PURSUE plan v2)
  • docs/codex: 2026-05-08 PURSUE plan review + gitignore .deploy-logs/
  • docs: PURSUE buildout plan (IBT ingest → agents → rendering)
  • Remove PasswordGate + flip robots to index,follow
intelligence-briefing-toolkit
  • docs/codex: question — analyze produces 0 signals (same as brief fail)
  • PURSUE collector + 2 evidence records merged (V1 hardcoded fallback)
  • docs/codex: question — PURSUE collector mechanism (4 unknowns)
  • Bulk snapshot: PURSUE codex review + Iran-Intel backlog + research drift (2026-05-08)
  • Iran-Intel: post-S-24 evidence drift (background daily-collect cron)
iran-intel
  • Iran-Intel: gitignore public/audio (build artifact)
traceable-searchable-adr-memory-index
  • Publish: support custom seedsDir + return working S3 URL
64 commits

Build Multi-Persona AI Debate Panels with RAG and Automated Audio

This project implements a scalable framework for generating multi-perspective intelligence briefings using persona-specific RAG agents, automated debate synthesis, and multi-voice audio output. It includes robust data ingestion pipelines, adversarial testing suites, and a public-facing web interface with citation tracking and AI disclosure features.

intelligence-briefing-toolkit 26iran-intel 18tool-RAG-for-split-personalities 20
▸ how to apply & commit details

How you can apply this

  • Implement a 'split personality' RAG architecture by defining distinct persona dataclasses (e.g., regime, civil society) that load domain-specific evidence to simulate structured debates.
  • Automate multi-voice audio generation for debate transcripts using configurable flags like --max-voices, enabling accessible consumption of complex multi-agent interactions.
  • Enforce data integrity in AI outputs by integrating clickable citation rendering and strict ev_N prompting to trace claims back to source documents.
  • Deploy secure, password-gated previews on CloudFront with automated content checks and propagation waits to ensure safe staging of sensitive intelligence products.

Commits

intelligence-briefing-toolkit
  • Iran-Intel S-40: convergence trigger + B-127 (no git remote = data loss risk)
  • Iran-Intel S-38 cleanup: close 3 backlog items (F-076, F-082, F-084)
  • Iran-Intel S-37 review: 1 Jobs + 1 Bezos backlog (+ F-094 + B-125 step 1 closed)
  • Iran-Intel S-34 review: 1 Jobs + 1 Bezos backlog (+ F-093 + B-111 closed)
  • Iran-Intel S-33 review: 1 Jobs backlog (Bezos N/A — clean shipped feature)
  • Iran-Intel S-31: backlog cleanup (3 closed) + F-092 filed
  • Iran-Intel S-30 review: 1 Bezos backlog (Jobs N/A — analysis tick)
  • Iran-Intel S-30: corpus balance audit + B-121 adversarial-test PASS
  • Iran-Intel S-28 review: 1 Bezos backlog (Jobs N/A — clean execution; 3 closed)
  • Iran-Intel S-27 review: 2 Jobs + 1 Bezos backlog
  • Iran-Intel S-26 review: 1 Jobs + 1 Bezos backlog (+ B-120 closed)
  • Iran-Intel S-25 review: 2 Jobs + 1 Bezos backlog (+ B-119 closed)
  • Iran-Intel S-24 review: 1 Jobs + 1 Bezos backlog (+ B-116 + B-117 closed)
  • Iran-Intel S-24: B-117 Phase B succeeded — auto-collection running, seed_mode=false
  • Iran-Intel S-23 review: 1 Bezos backlog (Jobs N/A — no user-facing deliverable)
  • Iran-Intel S-23: B-116 Phase A diagnosis — MLX cold-start blocks CLI collect (B-117)
  • Iran-Intel S-22 review: 1 Jobs + 1 Bezos backlog (+ B-115, F-083 closed)
  • Iran-Intel S-21 review: 2 Jobs + 1 Bezos backlog (+ B-114 closed)
  • Iran-Intel S-21: hand-seed 12 reference claims (B-114 forced pivot)
  • Iran-Intel S-20 review: 2 Jobs + 1 Bezos backlog (+ 3 closed: B-113, F-079, B-112)
  • Iran-Intel S-19 review: 2 Jobs + 1 Bezos backlog (+ F-077 closed)
  • Iran-Intel S-18 review: 2 Jobs + 1 Bezos backlog (+ F-075 closed)
  • Iran-Intel S-17 review: 2 Jobs + 1 Bezos backlog from Layer A branding pass
  • Iran-Intel S-16 review: 2 Jobs + 2 Bezos backlog items from panel completion
  • Iran-Intel S-2 (IBT side): empty evidence + signals stubs for iran_war_investigation
  • Iran-Intel S-1: Bootstrap iran_war_investigation project + iran preset stubs
iran-intel
  • Iran-Intel S-39: --max-voices flag on generate-panel-audio (B-126 prep)
  • Iran-Intel S-38: F-076 — strip stale UFO references from build scripts
  • Iran-Intel S-37: deploy.sh content-checks + propagation wait + B-125 doc
  • Iran-Intel S-36: 9-persona wiring + per-debate pages + multi-voice audio
  • Iran-Intel S-35: persona-byline visual revamp + debate-framing rewrite
  • Iran-Intel S-34: homepage panel cards show latest debate tldr per persona (F-093)
  • Iran-Intel S-33: live on CloudFront with password gate (B-111 closed)
  • Iran-Intel S-33: render tldr callouts on /panel (F-088 part 2)
  • Iran-Intel S-32: clickable citation rendering on /panel (F-092)
  • Iran-Intel S-29: AI-extraction disclosure on /daily, /wire, /signals (B-123)
  • Iran-Intel S-28: AI disclosure + homepage CTA + /panel ToC (B-122 + F-091 + F-090)
  • Iran-Intel S-27: /panel route surfaces all 4 panel debates publicly (F-087 Step 1)
  • Iran-Intel S-22: honest seed-mode disclosure on /, /daily, /wire (B-115 + F-083)
  • Iran-Intel S-20: empty-state polish bundle (B-113 + F-079 + B-112)
  • Iran-Intel S-19: surface 5-persona panel on homepage (F-077)
  • Iran-Intel S-18: homepage SOURCE_TIERS + CATEGORIES sourced from graph_config (F-075)
  • Iran-Intel S-17: Layer A branding swap — UFOBriefing → Iran-Intel
  • Iran-Intel S-2: Initial repo bootstrap (cloned from UFOBriefing, retargeted at iran_war_investigation)
tool-RAG-for-split-personalities
  • Iran-Intel S-36: 4 new personas + 16 new transcripts + tldrs (9-persona panel)
  • Iran-Intel S-33: per-persona tldrs for compact display (F-088 part 1)
  • Iran-Intel S-31: stricter ev_N citation prompting in panel runner (F-089 partial)
  • Iran-Intel S-26: B-120 coverage test — 3 more debates across diverse event types
  • Iran-Intel S-25: first panel debate on real corpus (B-119)
  • Iran-Intel S-17: validation-status footer on 6 smoke-test docs (B-109)
  • Iran-Intel S-16: israel-view + us-view smoke tests — panel runtime coverage complete
  • Iran-Intel S-15 / B-107: Smoke tests on iran-civil-society + iran-regime — BOTH PASSED
  • Iran-Intel S-14 / B-106: Runtime smoke test PASSED on iran/technocrat — dataclass loader IS on runtime path
  • Iran-Intel S-13 / B-104: PersonaCard climate-science compatibility — aliases + optional core fields
  • Iran-Intel S-12: cross-domain verification of B-102 fix; surfaced B-104 (climate-science broken)
  • Iran-Intel S-11 / B-102: PersonaCard.from_dict warns when dropping unknown fields
  • Iran-Intel S-10: RUNTIME_INVESTIGATION.md — code-trace finding on persona-field runtime read-through
  • Iran-Intel S-9: PANEL_PREVIEW.md — panel-as-debating-system reference (per F-065)
  • Iran-Intel S-8: us-view persona — fifth (final) of 5 v1 personas; v1 panel COMPLETE
  • Iran-Intel S-7: israel-view persona — fourth of 5 v1 personas
  • Iran-Intel S-6: technocrat persona — third of 5 v1 personas (cross-cutting evidence voice)
  • Iran-Intel S-5: iran-regime persona — second of 5 v1 personas (per B-095 hardest-first ordering)
  • Iran-Intel S-4: iran-civil-society persona — first of 5 v1 personas (hardest first per B-095)
  • Iran-Intel S-3: domains/iran/ skeleton (Persona RAG layer scaffold)
8 commits

Fix Qwen3.5 Extraction, Optimize Serper Freshness, and Refine Publishing Logic

This update resolves critical claim extraction failures in Qwen3.5-4B by enforcing line-protocol and deduplication while adjusting Serper search recency to daily for better paywall avoidance. It also stabilizes the publishing pipeline by defaulting to MLX after validation and improves UI accessibility in UFOBriefing.

UFOBriefing 1intelligence-briefing-toolkit 7
▸ how to apply & commit details

How you can apply this

  • Implement robust LLM claim extraction by combining line-protocol formatting, no-think modes, and prompt-level deduplication to prevent template-echo failures.
  • Configure search APIs like Serper with daily recency windows instead of weekly to prioritize fresh, accessible content and avoid paywalled older articles.
  • Gate automated publishing behind supervised validation steps to ensure model flips or updates do not degrade output quality before going live.

Commits

UFOBriefing
  • feat(wire): make summary text the primary click target
intelligence-briefing-toolkit
  • B-091: env-var bypass for DEDUP_PROMPT template-echo failure
  • F-056: Default daily-publish to MLX after supervised run validates the flip
  • Fix Qwen3.5-4B claim extraction (B-089) — line-protocol + no-think + dedup
  • Strip `br` from extractor Accept-Encoding; rescope F-054
  • docs: next-session brief for F-054 browser fetcher work
  • Planner-independent freshness queries + middle-dot title parsing
  • Default Serper recency: week → day (paywall-avoidance via freshness ranking)
40 commits

Qwen3.5 Integration and Domain-Isolated Gap Diagnosis Pipeline

The intelligence-briefing-toolkit upgraded to Qwen3.5-4B and implemented a domain-isolated gap diagnosis engine with strict cross-domain leakage prevention. Daily update pipelines were automated via launchd scheduling, supported by comprehensive audit documentation and regression tests.

UFOBriefing 1intelligence-briefing-toolkit 38tool-RAG-for-split-personalities 1
▸ how to apply & commit details

How you can apply this

  • Implement domain isolation by replacing political prompt templates with neutral topic anchors and enforcing cross-domain tests to prevent UAP/political leakage.
  • Build a rule-based diagnosis engine using a RULE_REGISTRY dispatcher and typed AxisSpec/Gap structures for modular, extensible gap analysis.
  • Automate nightly ML pipelines by wiring daily-update glue code and scheduling execution in low-traffic windows (2-7 AM) using launchd.

Commits

UFOBriefing
  • feat(deploy): daily-pipeline orchestrator + launchd schedule (3:00 AM local)
intelligence-briefing-toolkit
  • Default MLX model → Qwen3.5-4B + nightly cleanup at 01:45 local
  • Wire daily-update pipeline glue + schedule consolidation in 2-7 AM window
  • docs: next-session brief for daily-pipeline glue work
  • fix: add missing analyze step to UFO nightly pipeline
  • docs: add daily-update pipeline audit memo
  • docs: add test plan for gap-diagnoser domain isolation
  • session: Phase 7 (Tasks 1 & 2) documentation completion
  • docs: README links to docs/gap-axes.md (Phase 7 AC10.1)
  • docs: add docs/gap-axes.md operator reference (Phase 7 AC10)
  • test: lock in ✗ marker + deficit= format in gap-diagnose text test (Phase 6 M-1)
  • feat: ibt project gap-axes and gap-diagnose CLI commands (Phase 6 AC9.1-9.5)
  • test: cross-domain isolation enforces no UAP/political leakage (Phase 5 AC8)
  • fix: add trailing newline to governor followup_query_template (Phase 4 M-1)
  • test: Governor regression tests (Phase 4 AC6.3-6.6)
  • feat: migrate 8 governor project.json files to gap_axes_preset (Phase 4 AC6.1, AC6.1.b, AC6.2)
  • docs: log Phase 3 review outcome + I-1 deferral to B-087
  • revert: drop _isolated_event_loop fixture; defer to B-087
  • fix(test): isolate event loop in gap_diagnoser async tests + docstring craft_queries note (Phase 3 review)
  • refactor: DynamicCollector passes full project dict to craft_queries (Phase 3 AC5.5)
  • refactor: craft_queries accepts project_data + four-anchor fallback (Phase 3)
  • refactor: replace political prompt template with domain-neutral {topic_anchor} (Phase 3)
  • docs: refresh gap_diagnoser docstring + flag implementation-detail test imports (Phase 2 review)
  • refactor: generalize IterationRecord telemetry to axis_counts (Phase 2 AC4.8)
  • test: rewrite test_gap_diagnoser/_dynamic_collector for new Gap shape (Phase 2)
  • refactor: rewrite diagnose() as RULE_REGISTRY dispatcher (Phase 2)
  • refactor: replace gap_diagnoser.Gap with re-export from gap_types (Phase 2)
  • docs: log session-id drift on commit 64e9476
  • feat: add gap-axes preset registry (POLITICAL_GAP_AXES, UFO_GAP_AXES) (Phase 1)
  • feat: add four-rule RULE_REGISTRY to gap_diagnoser (Phase 1)
  • feat: add gap_types.py with AxisSpec, AxisResult, Gap (Phase 1 of gap-diagnoser refactor)
  • docs: snapshot gap-diagnoser domain-isolation implementation plan
  • chore: snapshot session-end state — data, campaign module, dynamic-query-loop plan
  • docs: align Phase 3 test list with AC5.4 four-anchor contract
  • docs: address Codex round-5 anchor-contract consistency
  • docs: address Codex round-4 review findings
  • docs: address Codex round-3 review findings
  • docs: address Codex round-2 review findings
  • docs: address Codex review findings on gap-diagnoser-domain-isolation
tool-RAG-for-split-personalities
  • chore: clean up sprint 161/188 artifacts and rotate auth gate hash
8 commits

UFOBriefing v0.2 UI Launch and Graph Signal Bridging

The UFOBriefing project deployed its v0.2 interface featuring chronological ledgers and signal statistics, while the intelligence toolkit established a bridge between raw signals and graph data structures. Infrastructure for domain-specific deployment was provisioned alongside detailed design plans for future gap diagnosis features.

UFOBriefing 4intelligence-briefing-toolkit 4
▸ how to apply & commit details

How you can apply this

  • Implement a chronological ledger endpoint to visualize time-series data streams, as demonstrated in the /wire feature.
  • Bridge flat signal JSON files into graph-compatible structures to enable downstream traversal and analysis.
  • Provision isolated S3 and CloudFront stacks to support multi-tenant or domain-specific application deployments.

Commits

UFOBriefing
  • chore(deploy): provision UFO-specific S3 + CloudFront stack
  • feat(signals): pipeline statistics page at /signals (v0.2-C)
  • feat(wire): chronological ledger at /wire (v0.2-B)
  • feat(home,daily): stats banner + source breakdown bar (v0.2-A)
intelligence-briefing-toolkit
  • docs: add gap-diagnoser-domain-isolation design plan + F-052 backlog
  • docs(backlog): F-051 — domain-aware gap diagnoser + query rotation
  • docs(backlog): add F-049 graph-traversal personas + F-050 portal chat widgets
  • feat(graph): bridge signals.json into graph.json (Path A)
39 commits

Dynamic Query Loops and Gap-Driven Intelligence Collection

Implemented a gap-driven dynamic query loop with configurable termination conditions and telemetry to automate intelligence gathering. Refactored state management to use canonical JSON files while launching a rebranded UFO briefing portal.

UFOBriefing 6intelligence-briefing-toolkit 33
▸ how to apply & commit details

How you can apply this

  • Reuse the GapDiagnoser module to craft targeted search queries based on identified data deficits across surname, pattern, and freshness axes.
  • Adopt the DynamicCollector pattern which features four distinct termination paths, env-tunable wall-clock budgets, and per-run telemetry logging.
  • Implement robust extraction fallbacks by skipping known paywalled domains early and using URL-date parsing when HTML extraction fails.

Commits

UFOBriefing
  • chore: delete orphan components, lib files, and political-specific scripts
  • chore: rebrand not-found.tsx + manifest.ts to UFO
  • chore: replace Kansas race home with UFO landing page
  • chore: delete inherited /brief, /methodology, /about, /privacy, /terms
  • chore: delete inherited /candidates routes
  • init: UFOBriefing portal v0.1 — clone of kansasgovernor2026, adapted for UFO
intelligence-briefing-toolkit
  • fix(ufo_investigation): sync schedule metadata to actual daily cron
  • feat(ufo_investigation): tier-1 source recommendations + dynamic_query_loop
  • feat(presets,signal-detector): broaden political patterns + lower conf threshold
  • refactor(daily): make signals.json the canonical per-project state
  • feat(governors): add brief_match_keywords to other 7 candidates
  • feat(extractor): add kansascity.com to known-bad-domain blocklist
  • fix(extractor): URL-date + HTML-date fallback on trafilatura failure
  • feat(governors): opt other 7 governors into dynamic_query_loop
  • chore(security): npm audit fix — close 4 dependabot alerts in intel_briefing/web
  • feat(schwab-gov): add brief_match_keywords for role-aware filtering
  • feat(pipeline): make collect()'s wall-clock budget env-tunable
  • feat(daily): add --project filter for targeted single-project runs
  • feat(schwab-gov): opt schwab into dynamic_query_loop for POC
  • Merge dynamic-query-loop: gap-driven query orchestration + signal-detector field-drop fix
  • fix(signal-detector): preserve evidence_published_at + evidence_collected_at on merged signals
  • feat(extractor): skip known auth-walled / paywalled domains before 90s timeout
  • chore(scripts): add dev baseline_signal_counts.py for AC6.3 regression check
  • test(daily): cover dynamic_query_loop opt-in dispatch (both branches)
  • test(cli): cover collect-dynamic happy path + missing project + raised exception
  • feat(daily): branch DailyDigestRunner on metadata.dynamic_query_loop
  • feat(cli): add 'ibt project collect-dynamic' for ad-hoc loop runs
  • fix(dynamic-collector): cover synthetic budget-exit + log placeholders + microsecond filename + Literal decision type
  • test(dynamic-collector): comprehensive tests for all 4 termination paths + telemetry + logs
  • feat(dynamic-collector): write per-run telemetry JSON to dynamic-collect/
  • feat(dynamic-collector): implement run() with 4 termination conditions + log blocks
  • feat(dynamic-collector): add IterationRecord + DynamicCollector skeleton
  • test(gap-diagnoser): cover craft_queries across all AC2 cases
  • feat(gap-diagnoser): implement craft_queries() with timeout + dedup
  • feat(gap-diagnoser): add prompt template, env-tunable timeout, JSON extractor
  • fix(gap-diagnoser): tighten deficit_summary formatting + drop unused field import + add edge-case tests
  • test(gap-diagnoser): cover diagnose() across all five AC1 cases
  • feat(gap-diagnoser): implement diagnose() across surname/pattern/fresh axes
  • feat(gap-diagnoser): add Gap dataclass + GapDiagnoser skeleton
3 commits

Bypass AI Planners and Scale Webhooks with FIFO Queues

Enhanced webhook consumers to support environment-specific FIFO queues while adding a query override feature to bypass planning logic in the intelligence toolkit. These updates improve infrastructure scalability and enable direct, deterministic data collection for testing or urgent queries.

everyone-ai 1intelligence-briefing-toolkit 2
▸ how to apply & commit details

How you can apply this

  • Extend webhook consumers to resolve environment-suffixed FIFO queue ARNs for scalable, ordered message processing across stages.
  • Implement a query_override keyword argument in collection pipelines to bypass AI planners for direct, deterministic data retrieval.
  • Add comprehensive test coverage for query override states (None, list, empty) to ensure robust pipeline behavior during edge cases.

Commits

everyone-ai
  • iam: extend webhook_consumer to env-suffixed FIFO queue ARNs
intelligence-briefing-toolkit
  • test(pipeline): cover query_override (None / list / empty)
  • feat(pipeline): add query_override kwarg to collect() to bypass planner
7 commits

Stabilize Intelligence Briefing Pipeline with Ollama and Strict Budgets

The daily publishing pipeline switched to an Ollama backend to resolve MLX memory issues while implementing strict time and cost budgets. New extraction features now support wider date patterns and rotating focus queries with robust timeout handling.

intelligence-briefing-toolkit 7
▸ how to apply & commit details

How you can apply this

  • Swap local MLX inference for Ollama backends to prevent out-of-memory errors during long-running text processing tasks.
  • Implement hard wall-clock timeouts (e.g., 10 minutes) with partial state saving to ensure pipelines complete even if individual steps stall.
  • Use rotating-focus queries combined with recency weighting to dynamically prioritize fresh data in automated collection workflows.

Commits

intelligence-briefing-toolkit
  • fix(daily-publish): use ollama backend; MLX OOMs on long runs
  • fix(daily): skip verify/extend/counter to bound the per-project budget
  • feat(extractor): wider URL date patterns; in-place patched 117 evidence rows
  • fix(collect): 10-minute wall-clock budget, save partial on timeout
  • fix(extractor): hard 90s per-page timeout to unblock stuck pipeline
  • feat(collect): rotating-focus query + think-strip parser + recency wired
  • fix(daily-publish): keep signal date in lockstep with source_url
5 commits

Automated Daily Intelligence Pipeline with Recency-Tiered Briefing

Implemented a launchd-driven daily pipeline that collects, processes, and publishes intelligence briefs with smarter backfilling and JSON-LD date extraction. The system now features recency-tiered ordering, timezone-aware tiering, and robust cleaning of LLM think-blocks.

intelligence-briefing-toolkit 5
▸ how to apply & commit details

How you can apply this

  • Reuse the launchd configuration to schedule automated collect-brief-publish cycles for any data aggregation workflow.
  • Apply the JSON-LD parsing logic to extract accurate publication dates from web sources for improved metadata handling.
  • Implement the regex-based stripping of <think> blocks to clean raw LLM outputs before public display.
  • Adopt the recency-tiered sorting algorithm to prioritize content freshness in generated reports or dashboards.

Commits

intelligence-briefing-toolkit
  • chore: launchd-driven daily pipeline (collect → brief → publish)
  • feat: extract publish date from JSON-LD; smarter backfill
  • fix: strip Qwen3 <think> blocks; published_at only (no detected_at); tz-aware tiering
  • feat: recency-tiered brief ordering + published dates everywhere
  • data: snapshot research_projects after 2026-04-30 pipeline runs
2 commits

Local Qwen3 LLM Integration with Robust Health Checks

The intelligence briefing toolkit now supports local inference via the MLX backend using Qwen3 8B, complete with automated installation and startup health checks. Additionally, the synthesizer module was updated to preserve source publication dates for improved report accuracy.

intelligence-briefing-toolkit 2
▸ how to apply & commit details

How you can apply this

  • Implement MLX backend integration for running Qwen3 8B locally to reduce dependency on external APIs.
  • Add install and startup health checks to ensure local LLM services are ready before processing requests.
  • Preserve metadata like 'published_at' in data synthesis pipelines to maintain source context and traceability.

Commits

intelligence-briefing-toolkit
  • feat: MLX backend for local LLM (Qwen3 8B); install + startup health checks
  • feat(synthesizer): preserve published_at in report.sources
16 commits

Candidate Brief Refresh Meets Riff Quality Diagnostics

The intelligence briefing toolkit refreshed candidate-focused government project data, restored key metadata, tightened portal display notes, and regenerated a Schwab brief. Riff added reusable flow-quality tooling, deployment health visibility, classifier timing insight, and Locked Choice prompt pre-generation based on live-mode diagnosis.

intelligence-briefing-toolkit 8riff 8
▸ how to apply & commit details

How you can apply this

  • Built candidate-focused objectives, questions, briefs, and evidence refreshes; reuse the pattern to turn raw project data into structured briefing sets.
  • Restored full_name, party, and display_notes metadata; apply the same portal-card metadata contract to prevent presentation regressions.
  • Added lint_spec warnings, sidebar lint badges, and CI locks; reuse this to make shipped content specs deterministic and reviewable.
  • Pre-generated Locked Choice prompts and added health/diagnostic views; use similar instrumentation to find latency hotspots and expose runtime quality signals.

Commits

intelligence-briefing-toolkit
  • chore(data): refresh research project data
  • data(*-gov): re-apply metadata.full_name+party+display_notes; regen Schwab brief
  • data(billings-gov): add metadata.display_notes for portal card
  • data(*-gov): re-apply metadata.full_name + party (B-025 regression)
  • data(*-gov): full candidate-focused brief set + evidence refresh
  • data(*-gov): metadata.full_name + first candidate-focused brief
  • data(*-gov): candidate-focused objective + questions per project
  • data(eakins-gov): tighten display_notes for portal card
riff
  • diag(iter-33): make locked_choice dispatch self-reporting + revise B-301
  • docs(backlog): file 3 P0 bugs from real Live-mode call diagnosis
  • feat(iter-32): pre-gen Locked Choice prompts (F-A13) — kills the biggest TTS hit
  • feat(iter-31): tier distribution — where does the classifier spend its time
  • feat(iter-30): deployment-wide summary endpoint + Choice Health header
  • feat(iter-29): lint badges in sidebar + CI-lock for shipped spec quality
  • feat(iter-28): lint_spec — deterministic warnings about authoring mistakes
  • feat(iter-27): "Used in:" footer — find flows that reference each module
6 commits

Qwen MLX Dashboard Support and Smoother Workspace Launches

The commits hardened AI dashboard provider handling by adding Qwen 3.6 MLX providers, routing MLX on port 8080 through the OpenAI-compatible path, and fixing /chat/completions behavior for max_tokens and thinking models. They also improved reliability by disabling S3 drive defaults for workspace launches and snapshotting research_projects after pipeline runs.

everyone-ai 1intelligence-briefing-toolkit 1traceable-searchable-adr-memory-index 4
▸ how to apply & commit details

How you can apply this

  • Add local MLX providers behind an OpenAI-compatible adapter so dashboard code can share one chat/completions path.
  • Guard thinking-mode behavior by disabling it for OpenAI-compatible chat endpoints while still handling thinking-capable models separately.
  • Pass max_tokens through compatibility layers explicitly to avoid provider-specific generation defaults.
  • Snapshot pipeline outputs like research_projects after runs so downstream tools can reuse stable data states.

Commits

everyone-ai
  • portal/k8s: disable S3_DRIVE_ENABLED to unblock default-workspace launches
intelligence-briefing-toolkit
  • data: snapshot research_projects after pipeline runs
traceable-searchable-adr-memory-index
  • fix(dashboard): disable thinking mode for OpenAI-compat /chat/completions
  • fix(dashboard): pass max_tokens to OpenAI-compat path; handle thinking models
  • fix(dashboard): route MLX (port 8080) through OpenAI-compat path
  • feat(dashboard): Qwen 3.6 MLX providers + project switcher polish
2 commits

Portal Tiles Launch Claude Code and Orchestration Starters

The portal now routes the Claude Code catalog tile to the default workspace path with a 4Gi memory allocation. It also adds an Orchestration catalog tile and bakes a bridge starter into the portal/workspace flow.

everyone-ai 2
▸ how to apply & commit details

How you can apply this

  • Route catalog tiles directly to default workspace paths for faster tool launch flows.
  • Set workspace resource defaults in portal/k8s config, as with the 4Gi Claude Code tile.
  • Bake starter scaffolds into workspace images so new catalog entries open with usable bridge code.

Commits

everyone-ai
  • portal/k8s: route Claude Code tile to default workspace path with 4Gi memory
  • portal+workspace: add Orchestration catalog tile + bake bridge starter
2 commits

Safer Container Starts and FIFO Webhook Publishing

The everyone-ai changes tightened deployment behavior in two places: Docker containers now clear any inherited ENTRYPOINT so the workspace CMD actually runs. IAM permissions were also expanded so the webhook-ingest Lambda can publish to capsule-webhooks-*.fifo SNS topics.

everyone-ai 2
▸ how to apply & commit details

How you can apply this

  • Clear inherited Docker ENTRYPOINT values when a workspace-level CMD must be the runtime contract.
  • Grant sns:Publish directly to the Lambda that emits webhook messages, scoped to the matching FIFO topic pattern.

Commits

everyone-ai
  • docker: clear inherited ENTRYPOINT so workspace CMD actually runs
  • iam: grant sns:Publish on capsule-webhooks-*.fifo to webhook-ingest Lambda
5 commits

AI Workspaces, Webhooks, and Build Contexts Hardened

Infrastructure work landed across cal-provider and everyone-ai: a structural fix was documented with ADR-0002 and paired with a cleanup script, while IAM and Docker build issues were corrected. The everyone-ai workspace images were expanded to include Codex and Gemini CLIs alongside Claude Code across Claude chat/oauth variants.

cal-provider 1everyone-ai 4
▸ how to apply & commit details

How you can apply this

  • Pair structural fixes with an ADR and cleanup script so future maintainers understand both the decision and the migration path.
  • Grant webhook publishers only the needed SNS permission, scoped here to `capsule-webhooks-*.fifo` for the shared EC2 role.
  • Check Docker build-and-push scripts for missing build-context files before CI or registry pushes fail.
  • Bundle common AI CLIs into reusable workspace images so Claude Code, Codex, and Gemini are available consistently across variants.

Commits

cal-provider
  • B-181 structural fix + ADR-0002 + cleanup script
everyone-ai
  • iam: grant sns:Publish on capsule-webhooks-*.fifo to shared EC2 role
  • docker: fix build-and-push scripts missing files in build context
  • workspace: extend the 3 AI CLIs to claude-chat and claude-oauth images
  • workspace: install Codex + Gemini CLIs alongside Claude Code
2 commits

Focused App Catalog and Expanded Lambda Deploy Permissions

The portal App Catalog was narrowed to Claude Code and VS Studio only. IAM deployment permissions were expanded so Lambda updates can change both function code and configuration.

everyone-ai 2
▸ how to apply & commit details

How you can apply this

  • Simplify app discovery by limiting catalog entries to the tools you actively support.
  • Pair lambda:UpdateFunctionConfiguration with lambda:UpdateFunctionCode when deployments need to modify runtime settings as well as code.

Commits

everyone-ai
  • portal: trim App Catalog to Claude Code + VS Studio only
  • iam: grant lambda:UpdateFunctionConfiguration alongside UpdateFunctionCode
3 commits

Calendar Rejection Signals and Dev Messaging Permissions

Calendar provider work added structured selection-rejection metadata to FSM returns and a silent rejection path when a requested time is not available. The everyone-ai IAM change expanded the shared EC2 role with SNS/SQS dev-messaging-write permissions.

cal-provider 2everyone-ai 1
▸ how to apply & commit details

How you can apply this

  • Use `selection_rejected` and `rejected_selection` fields to let calendar flows distinguish unavailable-time picks without overloading generic errors.
  • Add a silent rejection signal when user-selected values are validly shaped but absent from the allowed options list.
  • Grant narrowly named SNS/SQS write permissions through shared dev roles when EC2 services need to publish or enqueue development messages.

Commits

cal-provider
  • FSMReturn surfaces selection_rejected + rejected_selection (B-127)
  • B-127: silent selection-rejection signal when time isn't on the list
everyone-ai
  • iam: add SNS/SQS dev-messaging-write perms to shared EC2 role
18 commits

Booking Safety and Webhook Resilience Land Across Services

cal-provider shipped releases 0.4.0 and 0.5.0 with voice-integration hardening, ADR-0001 readback verifiability, and booking safeguards against silent no-ops and concurrent double-booking. everyone-ai tightened webhook ingestion and operator access by adding default SQS routing, IAM permissions for Capsule EC2 hosts, and security cleanup after AKIA rotation.

cal-provider 13everyone-ai 5
▸ how to apply & commit details

How you can apply this

  • Added a BOOKING-stage free/busy re-check plus regression coverage to prevent concurrent double-booking in cal-provider.
  • Introduced ADR-0001 readback verifiability with _raw_date/_raw_time envelope echo and speakable confirmations; reuse the strict-core/lenient-echo pattern for voice flows.
  • Hardened calendar writes with deterministic event IDs, wider idempotency hashes, DST-pinned time resolution, and FileStore expiry sweeps.
  • Improved everyone-ai operations with a default/catchall webhook SQS queue, empty-signature 5xx fix, EC2 IAM policies for Lambda updates/read-only introspection, and .env removal docs.

Commits

cal-provider
  • test(fsm): selection-bypass regression guard for B-124
  • B-124 (P0): BOOKING pre-check silently no-op'd — real double-booking
  • release 0.5.0 — readback verifiability (ADR-0001)
  • feat(fsm): ADR-0001 — _raw_date/_raw_time envelope echo + speakable readback
  • docs: strict-core-lenient-echo — ADR-0001 + guide 04 readback section
  • release 0.4.0 — voice-integration hardening
  • B-116 (cal-provider side, closed): pin DST correctness of resolve_time_range
  • B-117 (partial): FileStore prunes expired entries + public sweep_expired
  • B-118: widen idempotency-key hash to include description + attendees
  • B-115: deterministic event id on create_event (closes concurrent race)
  • backlog: B-115 idempotency key on create_event
  • B-110: re-check free/busy at BOOKING to prevent concurrent double-booking
  • docs: fill out CLAUDE.md with project-specific rules from sprint retro
everyone-ai
  • iam: allow operators on Capsule EC2 hosts to update the ingest Lambda code
  • iam: add default queue to webhook_consumer policy
  • webhooks: add default/catchall SQS queue + fix empty-signature 5xx
  • iam: add read-only introspection policy for Capsule EC2 hosts
  • security+docs: stop tracking .env, fix walkthrough caveat after AKIA rotation
57 commits

Calendar FSMs, FIFO Webhooks, and Local LLM Pipelines

cal-provider moved calendar behavior behind a reusable FSM with session stores, action logging, MCP wiring, shell driving, provider construction, and contributor-facing docs. everyone-ai completed and documented a queue-backed webhook system, while phone-agent work shifted LLM calls to MLX and added a Qwen3.5-4B LoRA training pipeline.

cal-provider 40everyone-ai 15phone-agent-scheduler 1training 1
▸ how to apply & commit details

How you can apply this

  • Expose a workflow as both code and CLI: cal-provider promoted create_provider_from_env and added cal-provider-fsm so builders can drive the same FSM from apps, MCP tools, or shell scripts.
  • Centralize integration behavior behind a state machine: legacy calendar handlers and agent helpers were replaced with thin FSM callers, session stores, an action log, and fsm_invoke MCP wiring.
  • Build reusable webhook fan-in: everyone-ai moved ingestion through Lambda, converted five queues to SQS FIFO, used MessageAttributes for routing, and documented the app-poll consumer pattern.
  • Optimize local voice-agent loops: phone-agent-scheduler routed LLM calls through MLX to avoid Ollama cold-load timeouts, and training added a TESSY Qwen3.5-4B LoRA pipeline.

Commits

cal-provider
  • F-008: promote create_provider_from_env into cal_provider.fsm public namespace
  • docs: domain-knowledge boundary — callers don't know durations
  • docs: 04 — de-indent JSON blocks so the doc-test regex matches
  • docs: 04 — show the turn-by-turn discovery loop explicitly
  • docs: MVP guide for new contributors + F-008 backlog
  • backlog: F-007 — multi-tenant credential storage + tenant resolution
  • admin: OAuth wizard — plain-language + editorial Step 1 + config fixes
  • F-006: cal-provider-fsm CLI for driving the FSM from the shell
  • chore: untrack stale .venv312 cal_provider 0.2.0 install
  • sprint3 review: 3 backlog items + untrack stale .venv312
  • Merge branch 'agentA-fsm-polish-and-tz-warning'
  • Merge branch 'agentB-action-log-rotation'
  • Merge branch 'agentC-voice-agent-quickstart'
  • Merge branch 'agentD-sprint-infra-fix'
  • chore: auto-commit dirty files before merge (sprint 3)
  • Sprint 3 agentA: from_provider constructor, slim fsm __all__, tz fallback warning
  • F-004: Voice agent quickstart — 10-line README + runnable example
  • F-003: action-log rotation primitive + CLI
  • Sprint 3 agentD: close B-002 at sprint-tooling layer
  • sprint3: backlog (6 items) + brief (4 agents) + session doc
  • sprint2-cleanup: gitignore sprint-ephemera + fix self-loop .venv symlink
  • Merge branch 'agentC-admin-fsm-rewrite'
  • Merge branch 'agentB-mcp-fsm-wire'
  • Merge branch 'agentA-fsm-core'
  • Merge branch 'agentD-delete-sonnet-agent'
  • Merge branch 'agentE-docs-and-diagrams'
  • chore: auto-commit dirty files before merge (sprint 2)
  • agentA-fsm-core: implement sprint 2 tasks
  • feat: Calendar FSM package, session stores, action log
  • agentC-admin-fsm-rewrite: implement sprint 2 tasks
  • feat: rip legacy /api/calendar handlers, install thin FSM caller
  • agentE-docs-and-diagrams: implement sprint 2 tasks
  • docs: Calendar FSM architecture + README + 0.3.0 CHANGELOG
  • agentB-mcp-fsm-wire: implement sprint 2 tasks
  • feat: add fsm_invoke MCP tool + rename check_availability/list_events
  • agentD-delete-sonnet-agent: implement sprint 2 tasks
  • refactor: delete Sonnet-powered CalendarAgent and confirm-token helpers
  • sprint: drop backticks around Merge Verification command
  • sprint: use absolute pytest path in Merge Verification
  • docs: Sprint 2 launch — Calendar FSM + MCP design + brief
everyone-ai
  • docs: add explicit 'generate the HMAC secret' sub-step in walkthrough step 3
  • docs: fix step 5 copy-paste bugs in webhooks walkthrough
  • docs: fix .env placement in webhooks walkthrough — write it inside the tutorial dir
  • docs: add 'Copy' button to every code block in webhooks walkthrough
  • docs: strengthen credential guidance in webhooks walkthrough — prefer role-based over static keys
  • webhooks: grant SQS consumer access to shared EC2 instance profile + update walkthrough
  • webhooks: state update reflecting successful Lambda + routes apply
  • webhooks: replace AWS_PROXY SQS-SendMessage with Lambda ingestion
  • docs: clarify the 'one API Gateway, many queues' topology decision
  • webhooks: convert all 5 queues to SQS FIFO + update docs
  • docs: rewrite /guides/webhooks.html for the app-poll model + real providers
  • docs: retire 'plan' language now that webhook system is code-complete
  • webhooks: add 'Your first consumer' walkthrough + signed test-sender script
  • webhooks: fix envelope gap — API Gateway writes MessageAttributes, dispatcher reads them
  • webhooks: document app-poll consumer pattern + add Rippling/Onfleet/Aircall infra
phone-agent-scheduler
  • Route all LLM calls through MLX; kill Ollama 20s cold-load timeouts
training
  • Add TESSY pipeline: train Qwen3.5-4B + LoRA for phone-agent streaming
37 commits

Webhook Ingestion Ships AWS Edge, Dispatcher, and Observability

everyone-ai advanced webhook ingestion through three phases, adding an AWS edge, dispatcher scaffolding and poll loop, manifest/Terraform fixes, and an ECR image path. The work also added typed SignatureError handling, an observability baseline with metrics scrape, user/status handoff docs, and product-audience subpages for PM and executive readers.

everyone-ai 37
▸ how to apply & commit details

How you can apply this

  • Stand up webhook intake in phases: split edge infrastructure, dispatcher scaffolding, and hardening into separate agent branches before merging.
  • Reuse the AWS edge pattern: pair Terraform fixes with manifest updates and ECR image publishing so deployment artifacts stay aligned.
  • Improve webhook debuggability with typed SignatureError classes plus an observability baseline and metrics scrape.
  • Ship adoption docs with the feature: user guides, status-before-logout handoffs, and PM/executive pages make the webhook system easier to reuse.

Commits

everyone-ai
  • webhooks: close B-1210 + B-1211 — metrics scrape + ECR image
  • docs: add product-audience webhook sub-pages (PM + Exec)
  • webhooks: publish user guide + status-before-logout handoff
  • webhooks: Bezos review of Phase 3 — 3 bugs in backlog
  • Merge branch 'agentB-error-class-and-observability'
  • Merge branch 'agentA-manifest-and-terraform-fixes'
  • chore: auto-commit dirty files before merge (sprint # Sprint — webhook-phase-3)
  • agentB-error-class-and-observability: implement sprint # Sprint — webhook-phase-3 tasks
  • webhooks: typed SignatureError + observability baseline (B-1208, F-324)
  • agentA-manifest-and-terraform-fixes: implement sprint # Sprint — webhook-phase-3 tasks
  • docs: close B-1205/B-1206/B-1207/B-1209 backlog + session doc
  • webhooks: manifest + terraform fixes (B-1205, B-1206, B-1207, B-1209)
  • session: loop tick — webhook Phase 3 kickoff (S-2026-04-18-0309)
  • webhooks: phase 3 brief — close 6 Bezos items in two agents
  • webhooks: Bezos review of Phase 2 — 5 bugs + 2 features in backlog
  • Merge branch 'agentB-dispatcher-phase-2'
  • Merge branch 'agentA-aws-edge-hardening'
  • chore: auto-commit dirty files before merge (sprint # Sprint — webhook-phase-2)
  • agentB-dispatcher-phase-2: implement sprint # Sprint — webhook-phase-2 tasks
  • webhooks: dispatcher Phase 2 scaffold + Bezos fixes
  • agentA-aws-edge-hardening: implement sprint # Sprint — webhook-phase-2 tasks
  • backlog: mark B-1200, B-1201, B-1204 Done with fix SHA be5da9f
  • webhooks: harden AWS edge (B-1200, B-1201, B-1204)
  • session: loop tick — webhook Phase 2 kickoff (S-2026-04-18-0230)
  • webhooks: phase 2 brief — Bezos fixes + dispatcher poll loop
  • webhooks: Bezos review of Phase 1 — 5 bugs + 3 features in backlog
  • Merge branch 'agentB-dispatcher-scaffold'
  • Merge branch 'agentA-terraform-aws-edge'
  • chore: auto-commit dirty files before merge (sprint # Sprint — Webhook Ingestion Phase 1 (AWS edge + dispatcher scaffolding))
  • agentA-terraform-aws-edge: implement sprint # Sprint — Webhook Ingestion Phase 1 (AWS edge + dispatcher scaffolding) tasks
  • agentB-dispatcher-scaffold: implement sprint # Sprint — Webhook Ingestion Phase 1 (AWS edge + dispatcher scaffolding) tasks
  • webhooks: add AWS edge (Phase 1)
  • webhooks: scaffold dispatcher package (Phase 1)
  • webhooks: remove backticks from Merge Verification commands
  • webhooks: use -chdir/--prefix in Merge Verification
  • webhooks: replace stale sprint219 brief with Phase 1 brief
  • webhooks: publish Phase 1 plan and sprint brief
34 commits

Evidence-Gated Content Grounding for Voice Flow QA

phone-agent-scheduler built an evidence-gated loop for voice flows: fleet cleanup, business_profile rollout, stuck detection, N=15 A/B reports, content-grounded cafe/menu experiments, and a deterministic Q&A shim. flowstate-evolve added normalized evidence import, while the scheduler work repeatedly reverted or flagged unvalidated and regressing applies.

flowstate-evolve 1phone-agent-scheduler 33
▸ how to apply & commit details

How you can apply this

  • Gate flow changes with real A/B evidence: run N=15 comparisons, keep positive signals, and revert regressions or unvalidated applies.
  • Ground scripts from real content sources: harvest JSON-LD or Shopify data, then turn validated menu data into a content-grounded flow like mozarts_coffee.yaml.
  • Scale metadata carefully: pilot ambient slots and business_profile, then roll across the fleet with idempotency, drift tests, and drift warnings.
  • Use a deterministic Q&A shim when interleaving breaks: isolate QA_RESPOND behavior instead of burying fixes in individual flows.

Commits

flowstate-evolve
  • Add normalized evidence import
phone-agent-scheduler
  • Sprint 109 brief: deterministic Q&A layer in the shim (rule-10)
  • Sprint 108: F-115 filed + coffee_qa partial — engine-level fix needed
  • Sprint 108 brief: F-115 architecture fix — QA_RESPOND interleave
  • Sprint 107: menu-activating script destroys both flows (real root cause found)
  • Sprint 107 brief: menu-activating script — distinguish H1 vs H2
  • Sprint 106: clean one-variable grounding A/B — all noise
  • Sprint 106 brief: clean one-variable grounding A/B
  • Sprint 105: grounded coffee REGRESSED (but experiment was confounded)
  • Sprint 105 brief: validate grounded coffee with N=15 A/B vs original
  • Sprint 104: first content-grounded flow — mozarts_coffee.yaml
  • Sprint 104 brief: pivot to content grounding — find cafe + first build
  • Sprint 103: F-114 hypothesis disproven — split_state mostly neutral-to-bad
  • Sprint 103 brief: borderline-flow A/B + cafe menu data source
  • Sprint 102: batch-revert 5 un-validated applies + Shopify scout v2
  • Sprint 102 brief: batch revert un-validated applies + Shopify scout v2
  • Sprint 101: grounding scout — JSON-LD harvest from real coffee site
  • Sprint 100: audit coffee apply → REGRESSION, reverted
  • Sprint 100 brief: audit 6 un-validated applies + A/B gate rule
  • Sprint 99: first real N=15 A/B — pizza positive, moving REGRESSION
  • Sprint 99 brief: real N=15 A/B runs on 2 flows + evidence reports
  • Sprint 98: stuck-detection layer + A/B harness (first real signal)
  • Sprint 98 brief: stuck-detection layer + A/B harness skeleton
  • Sprint 97: business_profile across all 19 flows + 3 more enter_prompts
  • Sprint 97 brief: roll business_profile to remaining 16 flows
  • Sprint 96: ambient slots + business_profile pilot
  • Sprint 96 brief: finish fleet apply + idempotency/drift tests
  • Sprint 95: B-114 real fix + flow-router drift warning + 2 applies
  • Sprint 95 brief: B-114 triage routing + apply gym_membership/techsupport
  • Sprint 94: full-fleet record sweep + README refresh + B-114
  • Sprint 94 brief: full-fleet record sweep + README refresh
  • Sprint 93: F-113 Option C multi-turn scripts + booking/reschedule applied
  • Sprint 93 brief: F-113 Option C + apply booking/reschedule
  • Sprint 92: coffee before/after finding + F-113 + 19 legacy closes
117 commits

Flowstate-Evolve Became a Browser-Driven Evaluation Loop

The day shipped the initial flowstate-evolve package with tests and a license, then wired it into phone-agent-scheduler through /evolve UI, apply/refresh controls, record-eval-pass.py, analyze-one-flow.sh, record-all-flows, and split_state COLLECT rollouts. It also hardened the portfolio with voice/browser routing, LLM fallback and fast-fail checks, shim-doctor/pytest/smoke coverage, defect closures, security fixes, and intelligence-briefing fixes for governor_race aliases plus published_at/empty-slice handling.

flowstate-evolve 2intelligence-briefing-toolkit 3phone-agent-scheduler 112
▸ how to apply & commit details

How you can apply this

  • Extracted flowstate-evolve as a reusable package, then consumed it from the browser so evaluation logic could be shared outside one app.
  • Closed the evaluation loop with record-eval-pass.py, analyze-one-flow.sh, and record-all-flows scripts that other projects can copy for repeatable flow testing.
  • Expanded phone-agent-scheduler with many domain flows and applied split_state COLLECT changes across coffee, tutoring, veterinary, dental, and related flows.
  • Hardened reliability with ready probes, LLM fallback/fast-fail behavior, shim-doctor checks, pytest gates, smoke tests, and targeted defect/security closures.

Commits

flowstate-evolve
  • Code review cleanup + tests + LICENSE
  • Initial flowstate-evolve package
intelligence-briefing-toolkit
  • refactor: move governor_race alias + Kansas candidate list out of shared code
  • fix(F-045): fall back to published_at + block empty slices; file B-086
  • chore: snapshot pre-session working tree — evidence updates, sprint history, composer polish
phone-agent-scheduler
  • Sprint 92 brief: coffee before/after + stale-defect pass
  • Sprint 91: apply coffee split_state + record-all-flows script
  • Sprint 91 brief: apply one split_state + unified record-all-flows script
  • Sprint 90: B-112 record-eval-pass hardcoded flow list + B-040 close
  • Sprint 90 brief: Bezos round on /evolve + stale defect triage
  • Sprint 89: tri-state status + record-from-browser endpoint
  • Sprint 88 close: sprint 89 brief — tri-state badge + record button
  • Sprint 88: /evolve Bezos round → B-111 ghost merge filter + dental dogfood
  • Sprint 87 close: sprint 88 brief — /evolve Bezos round
  • Sprint 87: /evolve test coverage + README section
  • Sprint 86 close: sprint 87 brief
  • Sprint 86: /evolve write-side — apply + refresh buttons
  • Sprint 85 close: sprint 86 brief — /evolve write-side
  • Sprint 85: /evolve UI — flowstate-evolve in the browser
  • Sprint 84: apply split_state COLLECT subgoals to tutoring + veterinary
  • Sprint 83 close: sprint 84 brief — apply subgoals to 2 more flows
  • Sprint 83: act on flowstate-evolve split_state COLLECT — roundtrip
  • Sprint 82 close: sprint 83 brief — act on split_state COLLECT
  • Sprint 82: B-110 watchdog fix + 3 real flowstate-evolve passes
  • Sprint 81 close: sprint 82 brief
  • Sprint 81: B-109 closed — defer presynth + /api/ready probe
  • Sprint 80 close: sprint 81 brief — B-109 fix
  • Sprint 80: record-eval-pass.py + analyze-one-flow.sh (flowstate-evolve loop closed)
  • Sprint 79 close: sprint 80 brief — flowstate-evolve end-to-end
  • Sprint 79: B-107 Gemini fallback + shim-doctor smoke section
  • Sprint 78: smoke-assistant-routing.py + B-106 verified + B-109 filed
  • Sprint 77 close: sprint 78 brief
  • Sprint 77: B-108 default FLOWSTATE_SHIM_ENABLED=1 in run-all.sh
  • Sprint 76 close: sprint 77 brief
  • Sprint 76: B-107 LLM judge fast-fail when Ollama down
  • Sprint 75 close: sprint 76 brief
  • Sprint 75: file B-107 LLM judge httpx timeout
  • Sprint 74 close: sprint 75 brief
  • Sprint 74: B-106 — FAQ no longer escalates on first innocent question
  • Sprint 73: flows 18+19 + wire all new flows into browser UI
  • Sprint 72 close: sprint 73 brief — tutoring + handyman
  • Sprint 72: ship flows 16 + 17 (gym_membership + salon_appointment)
  • Sprint 71 close: sprint 72 brief — gym + salon
  • Sprint 71: insurance_claim + lawn_service + 2 live quarantines
  • Sprint 70 close: sprint 71 brief — insurance_claim + lawn_service
  • Sprint 70: ship flows 12 + 13 (veterinary + moving)
  • Sprint 69 close: sprint 70 brief — veterinary + moving_quote
  • Sprint 69: ship 11th flow — roadside assistance (Option B)
  • Sprint 68: STATE-sprint68.md — pivot document
  • Sprint 67 close: sprint 68 brief — pivot
  • Sprint 67: ADR-0013 retrospective + close B-104
  • Sprint 66 close: sprint 67 brief
  • Sprint 66: CSP opt-in + triage re-snapshot (zero-failure local loop)
  • Sprint 65 close: sprint 66 brief
  • Sprint 65: multi_location PDF skip + phase_eval asyncio fix
  • Sprint 64 close: sprint 65 brief
  • Sprint 64: audio_pipeline + business_hours test drift fixes
  • Sprint 63 close: B-105 marked Closed + sprint 64 brief
  • Sprint 63: B-105 recorder init + booking_sms template update
  • Sprint 62 close: sprint 63 brief
  • Sprint 62: broaden shim-doctor + README test section
  • Sprint 61 close: sprint 62 brief
  • Sprint 61: pytest live marker + 2 infra fixes
  • Sprint 60 close: sprint 61 brief
  • Sprint 60: shim-doctor + full-suite triage
  • Sprint 59 close: sprint 60 brief
  • Sprint 59 bonus: close F-091 phase 1
  • Sprint 59: greeting_only baseline + README milestone bump
  • Sprint 58 close: sprint 59 brief
  • Sprint 58: close 6 Critical F-NNN + downgrade F-078
  • Sprint 57 close: sprint 58 brief
  • Sprint 57 bonus: close F-036 + F-039 (already shipped)
  • Sprint 57: close B-033 + B-034 (both security criticals)
  • Sprint 56 close: sprint 57 brief
  • Sprint 56: close B-029, Critical sweep (7 items)
  • Sprint 55 close: sprint 56 brief
  • Sprint 55: close B-028, triage + downgrade B-040
  • Sprint 54 close: sprint 55 brief
  • Sprint 54: B-103 /api/fsm/state unknown-ID leak + audit
  • Sprint 53 close: sprint 54 brief
  • Sprint 53: close B-026, triage B-022
  • Sprint 52 close: sprint 53 brief
  • Sprint 52: backlog audit (rule 6) + layers_fired error-path tests
  • Sprint 51 close: sprint 52 brief
  • Sprint 51: README update (rule 7) + ADR-0012
  • Sprint 50 close: sprint 51 brief
  • Sprint 50: reschedule + triage corpora — gate at 9 flows
  • Sprint 49 close: sprint 50 brief
  • Sprint 49: booking + carrental corpora
  • Sprint 48 close: sprint 49 brief
  • Sprint 48: brand_guard unit coverage + techsupport corpus
  • Sprint 47 close: B-102 closed + sprint 48 brief
  • Sprint 47: B-102 brand-flip guard + hotel corpus
  • Sprint 46 close: sprint 47 brief
  • Sprint 46: pytest baseline gate + dental corpus
  • Sprint 45 close: sprint 46 brief
  • Sprint 45: bezos baseline gate + coffee corpus
  • Sprint 44 close: sprint 45 brief
  • Sprint 44: bezos sweep --json + close 4 stale-status defects
  • Sprint 43 close: sprint 44 brief
  • Sprint 43: bezos sweep — quiet stderr + --live mode
  • Sprint 42 close: sprint 43 brief
  • Sprint 42: ShimResult.layers_fired + scripted Bezos sweep
  • Sprint 41 close: backlog updates + sprint 42 brief
  • Sprint 41: filler short-circuit + turn-0 greeting strip
  • Sprint 40: B-100 formally filed + sprint 41 brief
  • Sprint 40: B-099 strip turn-0 gate + B-094/B-097 escalation counter
  • Sprint 39: B-099 formally filed + sprint 40 brief
  • Sprint 39: B-101 per-assistant cached greetings + B-098 post-DONE in-brand goodbye
  • Call review: B-098 + B-101 brand-flip pair filed; sprint 39 re-targeted
  • Sprint 38 Bezos: B-094 to P0 + B-097 + F-091 + sprint 39 brief
  • Sprint 38: B-093 redundant-greeting stripper + B-096 TTS batching
  • Sprint 37: sprint 38 brief — B-093 re-greet stripper + B-096 TTS batching
  • Sprint 37: fix B-091 (no silent fallback to plumbing) + B-092 (no double greeting on voice)
  • backlog: 6 defects from first real voice dogfood
  • Sprint 36: sprint 37 brief — voice Bezos round + gemini-live mic guard
  • Sprint 36: wire browser voice path through flowstate dropdown
40 commits

Flowstate Tooling, Voice Agents, and Honest Brief Regeneration

The day shipped Flowstate v0.1.0 and hardened its prompt/tool execution pattern, while phone-agent-scheduler wired that shim through streaming, voice, FAQ, booking, reschedule, validation, retry, observability, demo, and stress-test paths. intelligence-briefing-toolkit added point-in-time regeneration with walk-back history and safer brief builds through Jeff's UX review gate, state isolation, and a model-typo fallback fix.

flowstate 4intelligence-briefing-toolkit 5phone-agent-scheduler 31
▸ how to apply & commit details

How you can apply this

  • Reuse the Flowstate loop pattern: canonical prompts, tools before enter_prompt, explicit tool dispatch, and sprint briefs tied to defect tracking.
  • Port the scheduler hardening stack: off-topic capture, FAQ fallback, contradiction and multi-question scanners, slot-type validators, typed transient-error retries, and golden/stress tests.
  • Copy the operability layer: JSONL shim events, layer-fire summaries, /api/version, guided tours, stale-binary messaging, and demo scripts for first-run validation.
  • Apply the briefing safeguards: point-in-time regeneration with walk-back history, per-brief state isolation, model-name checks, and a UX review gate that blocks bad builds.

Commits

flowstate
  • Sprint 10: engine order fix (tools before enter_prompt) + B-073 + sprint 11 brief
  • Sprint 9: backlog + sprint 10 brief (prompt tightening + first tool)
  • Sprint 8: canonical prompt pattern + Bezos defect tracking
  • flowstate v0.1.0 — initial implementation (sprints 1-7)
intelligence-briefing-toolkit
  • feat(F-045): point-in-time brief regeneration — honest walk-back history
  • feat: enforce Jeff's UX review as quality gate — block bad briefs every build
  • fix: correct gemma4:e4b → e2b model typo — every brief was a fallback
  • docs: remove governor_race archive stubs, file F-045 for real history
  • fix: isolate governor_race brief state from root data dir
phone-agent-scheduler
  • hybrid_fsm: fix street-word whitelist causing cascade of 3 UX bugs
  • scripts/tour.py: guided first-run walkthrough
  • demo_all.py: teach the stale-binary error message
  • Sprint 36 infra: README update + sprint_preamble polish
  • Sprint 36 infra: /api/version + demo_all.py + sprint_preamble.py
  • Sprint 35: pizza.yaml turn_prompt trim — first performance-arc win
  • Sprint 34: CHANGELOG + 10-iter stress (2.2% retry, 0 errors, 90/90 clean)
  • Sprint 33: validator layer tracking + shim-events.py summary CLI
  • Sprint 32: shim observability JSONL + layer-fire tracking
  • Sprint 31: shim catches typed TransientAdapterError
  • Sprint 30: unified retry loop covers transient 503 errors (B-087 fix)
  • Sprint 29: CI workflow for flowstate-shim tests + v0.29 prep
  • Sprint 27: shim one-shot retry + canned error surfacing (B-086 fix)
  • Sprint 26: scripts/demo-all.sh + README flowstate section
  • Sprint 25: triage.yaml dispatcher-state demo + classify_intent tool
  • Sprint 23: layer 5 slot-type-aware validator (B-084 + B-085 fix)
  • Sprint 22: 2 new flow types (dental + carrental) — v1 generalization probe
  • Sprint 21 (v2): Telnyx voice surface for flowstate flows
  • Sprint 19: empty-input guard (B-081) + multi-question scanner (B-082)
  • Sprint 17: generalized response post-processor (B-080 fix)
  • Sprint 16: response post-processor (B-079 fix)
  • Sprint 15: contradiction resolver (B-078 fix) + scanner/resolver unit tests
  • Sprint 14: deterministic off-topic scanner (B-077 fix)
  • Sprint 13: B-075 fix — helpful fallback when faq_lookup misses
  • Sprint 12: PRIORITY 0 off-topic capture in all 6 flows (B-074 fix)
  • Sprint 11: booking flow + EXTERNAL_WRITE confirmation boundary + FAQ rollout
  • Sprint 10: first real tool dispatch — faq_lookup + FAQ_ANSWER state
  • Sprint 9: off-topic deflection + customer_name + reschedule flow + golden test
  • Sprint 8: prompt hardening + unhappy-path tests + hotel flow
  • Wire flowstate shim into streaming + voice paths
  • Add flowstate shim integration (B-031)
5 commits

Flowstate Launches While Phone Scheduling Gets Smarter

Seeded Flowstate with its skill definition, build pipeline, landing page, content, and fixed cross-document links. Hardened the phone scheduling agent with slot-state handling, startup slot caching, Silero VAD, Gemini integration, and clearer caller UX.

flowstate 2phone-agent-scheduler 3
▸ how to apply & commit details

How you can apply this

  • Package reusable workflows as a `SKILL.md` plus landing page and build pipeline so others can adopt and ship them consistently.
  • Pre-fetch calendar availability at startup with a schedule cache to reduce latency in scheduling flows.
  • Harden appointment-slot state machines and pair them with VAD plus model integration for more reliable voice scheduling.
  • Improve voice-agent UX with explicit greetings, scheduling prompts, and address readback patterns developers can reuse in call flows.

Commits

flowstate
  • Fill in content and fix cross-doc links
  • Initial flowstate seed: SKILL.md + build pipeline + landing page
phone-agent-scheduler
  • FSM slot hardening + Silero VAD + Gemini integration
  • Add ScheduleCache: pre-fetch calendar slots at startup
  • UX improvements: greeting, scheduling prompt, address readback
12 commits

Voice-first scheduling and terminal tooling got sturdier

everyone-ai tightened the terminal and companion experience with truecolor, deploy progress, voice input, clickable URLs, database upgrades, and bug fixes. phone-agent-scheduler expanded calendar-aware scheduling, ASAP handling, name/address extraction, FSM fixes, and LLM-as-judge evaluation while intelligence-briefing-toolkit fixed pipeline settings 422s and added an in-process cron scheduler.

everyone-ai 2intelligence-briefing-toolkit 1phone-agent-scheduler 8training 1
▸ how to apply & commit details

How you can apply this

  • Use terminal UX passes as a checklist: truecolor, clickable URLs, deploy progress, voice input, and database upgrade fixes.
  • Reuse scheduling-agent patterns: detect ASAP or first-available intent, check calendar availability, and nudge based on available slots.
  • Harden extraction with patterns for bare names, apostrophes, compound names, and geocoding hints like appending Austin, TX.
  • Pair FSM-driven agents with LLM-as-judge evaluation and retraining on the exact FSM prompt format.

Commits

everyone-ai
  • Unify terminal experience, simplify companion panel, add truecolor
  • Platform improvements: deploy progress, voice input, clickable URLs, DB upgrades, bug fixes
intelligence-briefing-toolkit
  • fix: pipeline settings 422 + add in-process cron scheduler
phone-agent-scheduler
  • Scheduling subflow: first-available prompt, calendar check, ASAP detection
  • Handle O'Brien, DeLuca, Al-Rashid in Name+Address extraction
  • Relax test assertions: check name anywhere in conversation
  • Emergency ASAP handling + broader name extraction
  • Add Name+Address pattern extraction for bare name inputs
  • Append Austin TX to address validation for better geocoding
  • Sprint 52-54: Calendar flow, FSM fixes, LLM-as-judge evaluation
  • Passes 13-14: slot-aware nudges + context-aware time extraction
training
  • Retrain Phi4-mini on exact FSM prompt format
17 commits

Phone Agent FSM Gets Debugger, Training Loop, and MLX Backend

Work centered on making the phone-agent scheduler observable and trainable: a /fsm-debug visualizer/table now shows caller and agent text, response sources, slot-driven state derivation, and chained-state context issues. The day also added an MLX-backed improvement path with real-call slot injection specs, JSON response data, a retrained adapter, a 170-conversation training pipeline, and a deployed Matrix rain static site.

everyone-ai 1phone-agent-scheduler 12training 4
▸ how to apply & commit details

How you can apply this

  • Built an FSM debug surface at /fsm-debug; reuse the pattern to expose transcripts, response sources, and derived state in one inspection view.
  • Added slot-aware templates and slot-driven state derivation; apply this when call flow behavior should come from captured structured fields instead of fragile text matching.
  • Introduced MLX inference, diagnostic logging, and improvement-loop scaffolding; adapt it to test whether model quality or application state logic is the bottleneck.
  • Expanded training assets with real call examples, JSON response data, docs, and a retrained adapter; use the same pipeline shape to turn production conversations into fine-tuning material.

Commits

everyone-ai
  • Add helloworld5: Matrix rain static site deployed to something.ai
phone-agent-scheduler
  • Slot-driven state derivation + FSM debug improvements
  • Add caller/agent full text to FSM debug detail panel
  • Add response source tracking + rebuilt FSM debug table view
  • Pass 9: slot-aware templates, marginal improvement
  • Fix send_file import for fsm-debug route
  • Add FSM debug visualizer at /fsm-debug
  • Improvement passes 6-8: baseline scoring proves FSM is the bottleneck
  • Add MLX inference backend, diagnostic logging, and improvement loop
  • Add trainer quick-start: what to do, target models, MLX command, business context
  • Add slot injection training spec with real call log examples
  • Fix address validation context lost between chained sub-states
  • Fix GREETING intent: service issues take priority over hours keywords
training
  • Add JSON response training data and retrained adapter
  • Add slot injection training, 5 HTML doc pages, fix all links
  • Add Afterburner scaffolding
  • Phone agent training pipeline — 170 conversations, full docs, fine-tuning guide
87 commits

Voice Address Parsing, Pipeline Automation, and Deployment Hardening

The day centered on making voice-captured addresses production-ready with dictionary fuzzy correction, phonetic matching, spoken-number conversion, cleanup passes, geocoder fallback, Docker self-hosting, and phone-agent integration tests. It also added reusable pipeline infrastructure and UI controls to the intelligence toolkit while fixing ingress, health-check, preview proxy, theming, and publishing issues across supporting apps.

address-validator 22everyone-ai 3intelligence-briefing-toolkit 31phone-agent-scheduler 28traceable-searchable-adr-memory-index 3
▸ how to apply & commit details

How you can apply this

  • For voice address capture, normalize messy transcripts by stripping preambles, filler words, phone numbers, units, trailing zips, punctuation, and conversational noise before city/state parsing.
  • Boost street matching with a local dictionary, individual-word fuzzy search, Metaphone only on longer words, consonant-swap variants, and Nominatim fallback when Photon misses.
  • Make research pipelines reusable with per-project config, a generic runner, REST endpoints, nightly scripts, tests, and a settings panel for stage controls and schedules.
  • Harden deployments by validating auth tokens in health checks, removing broken Traefik IngressRoute TLS blocks, adding preview proxy port detection, and documenting RDS setup.

Commits

address-validator
  • Expand preamble patterns + strip unit/apartment after street type
  • Auto-append state when city appears without state suffix
  • Strip trailing zip codes that break city/state parser
  • Strip STT punctuation (commas, periods) before processing
  • Fix processing order + strip phone numbers and spelled-out zips
  • Fix parkway regression: exclude way from word-split types
  • Add preamble stripping + merged street-type word splitting
  • Fix Metaphone false positive on short words (min 5 chars)
  • Add Metaphone phonetic boost to dictionary matching
  • Strip conversational noise after street type + add Koenig Lane
  • Expand dictionary to 132 streets, strip filler in/near, add Bowie/Tillery/Cesar Chavez
  • Add individual word matching to dictionary fuzzy search
  • Add filler word stripping + expand dictionary to 124 streets
  • Expand dictionary to 123 streets + fix overcorrection guard
  • Add local street dictionary for fuzzy pre-correction (breakthrough)
  • Activate consonant swap variant generation (Strategy 5+6)
  • Add Nominatim fallback for top 3 variants when Photon misses
  • Add ordinal word-to-number converter for street addresses
  • Add spoken-number-to-digit converter + city/state filter
  • Fix Docker setup for Austin city-level extract and Podman support
  • Add Docker self-hosting for production (Photon + OSRM)
  • Update README for USPS address validation branding
everyone-ai
  • Remove tls: {} from all IngressRoutes — fixes 404/Bad Gateway on exposed URLs
  • Fix target Ingress TLS: remove tls block that caused "no available server"
  • Add preview proxy, dynamic port detection, and RDS instructions
intelligence-briefing-toolkit
  • feat: expand slant pool to 31 + 6-day exclusion for 10-day rotation
  • feat: human-friendly schedule dropdowns + tooltips in Pipeline Settings
  • fix: pipeline settings routing + config shape mismatch
  • fix: friendly empty states for graph tabs + signals tab routing
  • fix: CandidateDossier useMemo hooks after early return — React error #310
  • Merge branch 'agentC-config-script-tests'
  • Merge branch 'agentB-settings-panel'
  • Merge branch 'agentA-pipeline-runner'
  • agentC-config-script-tests: implement sprint 45 tasks
  • feat: add pipeline config to all projects, generic nightly script, and pipeline runner tests
  • agentB-settings-panel: implement sprint 45 tasks
  • feat: add Pipeline Settings panel with stage controls and scheduling
  • agentA-pipeline-runner: implement sprint 45 tasks
  • feat: add generic pipeline runner and REST endpoints
  • chore: plan Sprint 45 — generic pipeline runner + settings panel
  • fix: normalize tab configs — all graph projects get same tabs
  • Merge branch 'agentC-brief-tests'
  • Merge branch 'agentB-build-verify'
  • Merge branch 'agentA-ufo-brief-fix'
  • agentC-brief-tests: implement sprint 44 tasks
  • add brief generation tests for B-049 UFO empty sections regression
  • agentA-ufo-brief-fix: implement sprint 44 tasks
  • fix: B-049 UFO brief empty sections — recency filter + slant bypass
  • agentB-build-verify: implement sprint 44 tasks
  • verify: frontend build clean, hooks correct for B-049
  • chore: plan Sprint 44 — fix B-049 UFO brief empty sections
  • chore: add B-049 — UFO brief generates empty despite 57 signals
  • Merge branch 'agentC-data-operations'
  • Merge branch 'agentB-hooks-verify-build'
  • Merge branch 'agentA-graph-endpoint-fixes'
  • agentC-data-operations: JFK collection + data verification
phone-agent-scheduler
  • Fix verify-deploy.sh: pass API_AUTH_TOKEN to all health checks
  • Fix 3 call quality issues: FSM flow, duplicate messages, caller audio
  • Final test log: 1,223 results across 34 iterations
  • Update test log: 1218 results, 33 iterations
  • Update test log: 1213 results, 32 iterations — 5/5 on clean addresses
  • Update test log: 1208 results, 31 iterations
  • Preload faster-whisper base, small, and medium on startup
  • Update test log: 1203 results, 30 iterations
  • Update test log: 1198 results, 29 iterations
  • B-040: Document 5 address integration threads from transcript review
  • Fix chat UI: default to local Ollama model + WebSocket auth token
  • Fix health check endpoints for cal-provider and FSM server
  • Update test log: 1193 results, 28 iterations
  • Update test log: 1188 results, 27 iterations
  • Update test log: 1178 results, 25 iterations
  • Update test log: 1168 results across 23 iterations
  • Update address test log: 867 results across 21 iterations
  • Add address validation test suite + 848 test results
  • Integrate address-validator + fix B-029 address loop
  • Regenerate publish output with upgraded amber/Fraunces theme
  • Add 3 missing charts from TRAINING.md to HTML version
  • Update publish output with custom HTML seed page
  • Fix diagram label cutoff in training pipeline HTML
  • Add HTML version of training pipeline seed for S3 publishing
  • Add training pipeline seed + regenerate lifecycle docs
  • Fix 8 review comments on TRAINING.md
  • Add comprehensive training & fine-tuning guide (docs/TRAINING.md)
  • chore: update sprint metrics and timing data
traceable-searchable-adr-memory-index
  • Upgrade publish theme: amber accent, Fraunces/DM Mono typography
  • chore: sync dashboard state and project registry
  • feat: use custom HTML for seed pages when available
150 commits

Portfolio Push Hardens Deploys, Graphs, and Network Discovery

The day centered on making deployment, intelligence analysis, and network discovery systems more production-ready across multiple projects. Work included Kubernetes deploy-as-service fixes in everyone-ai, graph and verification pipelines in intelligence-briefing-toolkit, 17 reviewed fixes in phone-agent-scheduler, and service discovery/fingerprinting in tailscale-3-node-network.

everyone-ai 22intelligence-briefing-toolkit 98phone-agent-scheduler 2tailscale-3-node-network 28
▸ how to apply & commit details

How you can apply this

  • Built a kubectl-exec deploy-as-service path with RBAC, annotations, port-aware health checks, and deploy E2E coverage; reuse it for agent-driven Kubernetes app launches.
  • Added graph enrichment, real graph views, API wiring, and pipeline tests for intelligence data; reuse the normalize/embed/correlate pattern to turn raw records into navigable analysis views.
  • Shipped verification backend/UI/backfill work plus badges and progress indicators; reuse this pattern when users need visible trust signals tied to stored verification timestamps.
  • Built mDNS discovery, heartbeat reporting, async TCP scanning, HTTP fingerprinting, deduplication, and source tracking; reuse it as a lightweight LAN/Tailscale service inventory pipeline.

Commits

everyone-ai
  • Add missing gateway-hang incident to directory page
  • Update platform directory with session results and fleet resize
  • Fix target health check: read port from service spec, use wget fallback
  • Fix patchTargetDescription to use kubectl annotate
  • Add patch verb to deployments RBAC for description updates
  • Add sox to workspace image for voice transcription
  • Add description + source annotations to universal deploy targets
  • Add networking.k8s.io/ingresses to portal RBAC
  • Fix username extraction in deploy-as-service + add 15 test cases
  • Fix companion preview iframe to show app on port 3001
  • Fix getBuildStatus to detect manually started apps on port 3001
  • Add network context to default CLAUDE.md + deploy e2e test
  • Merge branch 'agentB-companion-help-219'
  • Merge branch 'agentA-universal-deploy-219'
  • chore: auto-commit dirty files before merge (sprint 219)
  • agentA-universal-deploy-219: implement sprint 219 tasks
  • F-200: Universal deploy-as-service via kubectl exec
  • agentB-companion-help-219: implement sprint 219 tasks
  • Add Help tab to companion panel + deploy success persistence UX
  • F-200: Complete Option A spec — kubectl exec file extraction
  • Expand F-200 with full implementation plan from session debugging
  • Add deploy tutorial and backlog items from Bezos review
intelligence-briefing-toolkit
  • agentA-graph-endpoint-fixes: implement sprint 43 tasks
  • fix: graph clusters 500 and _token_store_path NameError
  • agentB-hooks-verify-build: implement sprint 43 tasks
  • fix: move useMemo before early returns in CorrelationsView (React hooks rule)
  • chore: plan Sprint 43 — critical fixes (brief crash, graph 500s, data ops)
  • fix: React hooks ordering crash — useRef/useEffect after early return
  • fix: GraphStore init and config shadowing — graph stats 500, summary 500
  • fix: config query param shadowed IntelConfig — caused 500 on summary endpoint
  • Merge branch 'agentC-graph-pipeline-tests'
  • Merge branch 'agentB-graph-views-data'
  • Merge branch 'agentA-graph-enrichment'
  • agentA-graph-enrichment: implement sprint 42 tasks
  • feat: graph enrichment pipeline — normalize, embed, correlate UFO data
  • agentC-graph-pipeline-tests: implement sprint 42 tasks
  • add graph enrichment pipeline tests (12 tests)
  • agentB-graph-views-data: implement sprint 42 tasks
  • feat: wire real data display into graph view components
  • chore: plan Sprint 42 — graph enrichment (normalize, embed, correlate)
  • Merge branch 'agentC-session-wrap'
  • Merge branch 'agentB-quick-fixes'
  • Merge branch 'agentA-backfill-briefs'
  • agentC-session-wrap: implement sprint 41 tasks
  • agentC-session-wrap: implement sprint 41 tasks
  • agentA-backfill-briefs: implement sprint 41 tasks
  • fix: add verification stats to /projects/summary API, fix pipeline return keys (B-032)
  • agentB-quick-fixes: implement sprint 41 tasks
  • agentB-quick-fixes: verify B-029, B-026, B-013 already resolved
  • chore: plan Sprint 41 — consolidation, backfill, quick fixes
  • Merge branch 'agentC-backfill-tests'
  • Merge branch 'agentB-verification-ui'
  • Merge branch 'agentA-verification-backend'
  • agentC-backfill-tests: implement sprint 40 tasks
  • Add verification data integrity tests and update backlog
  • agentA-verification-backend: implement sprint 40 tasks
  • feat: verification backend — verified_at, limit support, backfill endpoint
  • agentB-verification-ui: implement sprint 40 tasks
  • feat: show real verification badges in dossier and homepage progress bars
  • chore: plan Sprint 40 — verification pipeline, trust-building phase
  • Merge branch 'agentC-data-backlog'
  • Merge branch 'agentB-frontend-polish'
  • Merge branch 'agentA-backend-polish'
  • agentC-data-backlog: implement sprint 39 tasks
  • agentC: fix test failures, add migration API, create Sprint 40 plan
  • agentB-frontend-polish: implement sprint 39 tasks
  • fix: B-027 inline signal expand, B-036 grouped dossier evidence
  • agentA-backend-polish: implement sprint 39 tasks
  • fix: pin wild_cards slant, add footnote URL fallback, document dist build
  • chore: plan Sprint 39 — polish sprint, clear High backlog, graph data quality
  • Merge agentC-graph-tests — resolve ephemeral file conflicts
  • Merge agentB-routing-api — resolve conflicts, keep agentA components
  • Merge branch 'agentA-graph-components'
  • agentC-graph-tests: implement sprint 38 tasks
  • add graph API and Playwright view tests
  • agentB-routing-api: implement sprint 38 tasks
  • feat: add graph API functions, types, and wire graph views into App routing
  • agentA-graph-components: implement sprint 38 tasks
  • feat: add 4 graph view components — Graph, Timeline, Clusters, Correlations
  • chore: plan Sprint 38 — wire graph views to real data
  • Merge branch 'agentC-backlog-graph-prep'
  • Merge branch 'agentB-s3-dossier-fixes'
  • Merge branch 'agentA-last-critical-backend'
  • agentA-last-critical-backend: implement sprint 37 tasks
  • fix: B-039 pin new_intelligence, B-042 prefer article URLs, B-037 sort dossier by published_at
  • agentB-s3-dossier-fixes: implement sprint 37 tasks
  • agentC-backlog-graph-prep: implement sprint 37 tasks
  • fix: S3 static site rendering — source links, topics, dossier, div-by-zero
  • agentC: update backlog for Sprint 36 fixes, add F-030 graph views, plan Sprint 38
  • chore: plan Sprint 37 — last critical bugs + S3 fixes + graph prep
  • Merge branch 'agentC-backlog-tests'
  • Merge branch 'agentB-click-paths-footnotes'
  • Merge branch 'agentA-signal-ordering-brief-fix'
  • agentC-backlog-tests: implement sprint 36 tasks
  • agentC-backlog-tests: implement sprint 36 tasks
  • agentB-click-paths-footnotes: implement sprint 36 tasks
  • agentA-signal-ordering-brief-fix: implement sprint 36 tasks
  • fix: homepage signals expand inline, footnote back-links use _scrollHL
  • fix: signal ordering, new intelligence section, and footnote URL quality
  • chore: plan Sprint 36 — fix the read path (signals, brief, footnotes)
  • Merge branch 'agentC-collection-tests'
  • Merge branch 'agentB-footnote-ux-fixes'
  • Merge branch 'agentA-brief-composer-config'
  • agentC-collection-tests: implement sprint 35 tasks
  • agentC-collection-tests: add brief config awareness tests + backlog updates
  • agentB-footnote-ux-fixes: implement sprint 35 tasks
  • fix: footnote refs use event delegation for reliable click handling (B-043, B-046)
  • agentA-brief-composer-config: implement sprint 35 tasks
  • fix: make brief composer config-aware — skip candidate rotation for non-political projects (B-048)
  • chore: plan Sprint 35 — brief composer config awareness + JFK + footnote UX
  • Merge branch 'agentC-adversarial-tests'
  • Merge branch 'agentB-bug-fixes-frontend'
  • Merge branch 'agentA-footnote-jfk-backend'
  • agentC-adversarial-tests: implement sprint 34 tasks
  • feat: add adversarial isolation and footnote renumbering tests
  • agentA-footnote-jfk-backend: implement sprint 34 tasks
  • feat: footnote remap, quality gate coherence fix, JFK signal preset
  • agentB-bug-fixes-frontend: implement sprint 34 tasks
  • fix: B-001 insights missing, B-003 mobile button, B-006 wire dedup, B-010 404 handling
  • feat: project isolation, quality gate, UFO signal detector, brotli fix
phone-agent-scheduler
  • Fix 17 security, concurrency, and logic bugs from code review
  • chore: auto-commit dirty files before merge (sprint 51)
tailscale-3-node-network
  • Fix: auto-create data/ directory on startup
  • Add README with setup instructions
  • Fix agent reporter, add network auto-detect, Docker blue theme
  • chore: auto-commit dirty files before merge (sprint 2)
  • chore: auto-commit dirty files before merge (sprint 2)
  • Merge branch 'agentC-dedup-polish'
  • Merge branch 'agentB-fingerprinter'
  • Merge branch 'agentA-port-scanner'
  • chore: auto-commit dirty files before merge (sprint 2)
  • agentC-dedup-polish: implement sprint 2 tasks
  • feat: service + node deduplication, source tracking, discovery timestamps
  • agentB-fingerprinter: implement sprint 2 tasks
  • feat: add HTTP service fingerprinting and TCP port scanning
  • agentA-port-scanner: implement sprint 2 tasks
  • feat: add async TCP port scanner for subnet service discovery
  • Sprint 2 brief: Port scanning + service fingerprinting
  • chore: auto-commit dirty files before merge (sprint 1)
  • Merge branch 'agentC-qa'
  • Merge branch 'agentB-heartbeat-backend'
  • Merge branch 'agentA-discovery-engine'
  • chore: auto-commit dirty files before merge (sprint 1)
  • agentC-qa: implement sprint 1 tasks
  • Add end-to-end QA tests for discovery pipeline
  • agentB-heartbeat-backend: implement sprint 1 tasks
  • agentA-discovery-engine: implement sprint 1 tasks
  • Add gateway heartbeat endpoint with node/service upsert logic
  • Add mDNS discovery engine and reporting pipeline
  • Add Afterburner scaffolding
76 commits

Workspace, Address, Voice, and Network Tools Level Up

The day combined a new voice-address validation API, a FriendNet Tailscale healthcheck dashboard, and several phone-agent reliability fixes. The largest thread was everyone-ai, which tightened workspace launch, provisioning, deploy previews, one-click templates, UI polish, and E2E validation across multiple sprints.

address-validator 2everyone-ai 68phone-agent-scheduler 5tailscale-3-node-network 1
▸ how to apply & commit details

How you can apply this

  • Built an address-validator API for voice-transcribed addresses plus a route/distance endpoint; reuse it where speech input needs address validation and travel estimates.
  • Added everyone-ai deploy ergonomics: inline app preview iframe, deployment kit downloads, host-aware deploy, and one-click template launch to remove setup friction.
  • Hardened workspace flows with provisioning panels/tips, routing verification, stopped-workspace handling, bash-missing terminal recovery, and E2E coverage around regressions.
  • Improved phone-agent-scheduler with real-call replay fixes, few-shot examples, slot pre-extraction, post-processing, and anti-loop filters; reuse this pattern for voice-agent QA.

Commits

address-validator
  • Add route/distance calculation endpoint and update README
  • Initial commit: address validator API for voice-transcribed addresses
everyone-ai
  • Fix workspace dir ownership in claude-code-workspace image
  • Merge branch 'agentB-provisioning-tips-218'
  • Merge branch 'agentA-app-preview-iframe-218'
  • chore: auto-commit dirty files before merge (sprint 218)
  • agentA-app-preview-iframe-218: implement sprint 218 tasks
  • feat: inline app preview iframe in companion Deploy tab
  • agentB-provisioning-tips-218: implement sprint 218 tasks
  • Add rotating tips and quick-action cards to provisioning overlay
  • Fix terminal reconnect loop when workspace image lacks bash
  • plan: Sprint 218 — inline app preview iframe + provisioning tips
  • test: Sprint 217 validation — chat endpoint, templates, one-click — 4/4 passing
  • Add deployment kit download button and host-aware deploy to companion
  • Merge branch 'agentB-one-click-templates-217'
  • Merge branch 'agentA-fix-chat-tab-217'
  • chore: auto-commit dirty files before merge (sprint 217)
  • agentA-fix-chat-tab-217: implement sprint 217 tasks
  • agentB-one-click-templates-217: implement sprint 217 tasks
  • feat: one-click template launch — skip username step, provision immediately
  • plan: Sprint 217 — fix chat tab + one-click template launch
  • test: Sprint 216 validation — first-run, env button, fleet — 5/5 passing
  • Merge branch 'agentB-env-button-fix-216'
  • Merge branch 'agentA-first-run-banner-216'
  • chore: auto-commit dirty files before merge (sprint 216)
  • agentB-env-button-fix-216: implement sprint 216 tasks
  • fix: demo env button shows toast instead of silent suppression (B-1148)
  • agentA-first-run-banner-216: implement sprint 216 tasks
  • feat(F-307): update first-run banner to show --dangerously-skip-permissions
  • plan: Sprint 216 — first-run banner + env button fix (last backlog items)
  • test: Sprint 215 validation — routing, tabs, CSS polish — 5/5 passing
  • Merge branch 'agentB-ui-polish-215'
  • Merge branch 'agentA-workspace-launch-routing-215'
  • chore: auto-commit dirty files before merge (sprint 215)
  • agentB-ui-polish-215: implement sprint 215 tasks
  • fix: muted duration text, double active tab, usage CSS scope (B-1149, B-010, B-011)
  • agentA-workspace-launch-routing-215: implement sprint 215 tasks
  • fix: B-007/B-008 — non-fatal routing errors + post-creation verification on workspace launch
  • plan: Sprint 215 — last criticals (workspace routing) + UI polish
  • test: Sprint 214 validation — prompt loop, dedup, stopped ws — 4/4 passing
  • Merge branch 'agentB-env-modal-and-stopped-ws-214'
  • Merge branch 'agentA-catalog-and-workspace-fixes-214'
  • chore: auto-commit dirty files before merge (sprint 214)
  • agentA-catalog-and-workspace-fixes-214: implement sprint 214 tasks
  • fix: B-006 replace window.prompt with inline form, B-009 workspace dedup
  • agentB-env-modal-and-stopped-ws-214: implement sprint 214 tasks
  • feat: env modal E2E coverage + fix stopped workspaces in patchRows
  • plan: Sprint 214 — catalog prompt loop, workspace dedup, env modal tests
  • test: Sprint 213 validation — analytics, provisioning panel — 4/4 passing
  • Merge branch 'agentB-provisioning-panel-213'
  • Merge branch 'agentA-analytics-and-env-modal-213'
  • chore: auto-commit dirty files before merge (sprint 213)
  • agentB-provisioning-panel-213: implement sprint 213 tasks
  • feat: show right panel context during workspace provisioning (F-311)
  • agentA-analytics-and-env-modal-213: implement sprint 213 tasks
  • fix: analytics stat tiles show 0 instead of dashes; add env modal E2E tests
  • plan: Sprint 213 — analytics fix, env modal tests, provisioning panel
  • test: Sprint 212 validation — xterm, unhealthy status, companion — 4/4 passing
  • Merge branch 'agentB-xterm-and-status-fixes-212'
  • Merge branch 'agentA-companion-catalog-polish-212'
  • chore: auto-commit dirty files before merge (sprint 212)
  • agentB-xterm-and-status-fixes-212: implement sprint 212 tasks
  • fix: B-1155 xterm DOM artifacts + B-1164 unhealthy duration label cache-hit path
  • agentA-companion-catalog-polish-212: implement sprint 212 tasks
  • fix: companion panel placement + chat placeholder in catalog view
  • test: companion panel + stop button E2E tests — 2/2 passing
  • plan: Sprint 212 — companion panel polish, xterm fix, unhealthy status
  • fix: B-1165 stop button ws-/workspace- mismatch + companion panel in catalog
  • test: B-1165 workspace stop button + deploy portal routing E2E tests
  • fix: Dockerfile — skip missing architecture docs, deploy script copies them
phone-agent-scheduler
  • Fix call 7 issues: dishwasher pattern, broader DIY filter, anti-loop
  • Few-shot examples + response post-processing for human-like voice
  • Fix garbled farewell + premature goodbye from call 6
  • Fix address loop FOR REAL — pre-extract slots before sub-states
  • Add call 5 replay + 3 new backlog bugs from real call review
tailscale-3-node-network
  • Initial commit: FriendNet dashboard with Tailscale healthcheck system
79 commits

Companion Panels, Project Switching, and Faster Voice Call Agents

The day centered on shipping reusable product surfaces: a full-stack workspace companion panel, dynamic briefing project configs, and a generic config-branded homepage. The phone scheduler also moved from FSM groundwork through real-call tuning, replay testing, transcript UI, calendar health checks, and verified zero-failure replay runs.

everyone-ai 8intelligence-briefing-toolkit 19phone-agent-scheduler 52
▸ how to apply & commit details

How you can apply this

  • Build companion features as a paired backend API plus frontend panel so the surface can be merged and tested independently.
  • Use dynamic config switching, project switcher state methods, and config-driven branding/stats to turn one briefing app into multiple scoped projects.
  • Harden voice agents with hybrid two-pass FSM routing, per-state sub-state loops, slot extraction templates, and warm model/prompt/token tuning.
  • Reuse recorded-call replay suites and startup health checks to catch real conversation failures, rate limits, and integration endpoint drift.

Commits

everyone-ai
  • Add Sprint 211 project status document
  • Merge branch 'agentB-companion-frontend-211'
  • Merge branch 'agentA-companion-backend-211'
  • chore: auto-commit dirty files before merge (sprint 211)
  • agentB-companion-frontend-211: implement sprint 211 tasks
  • Add workspace companion panel frontend (Sprint 211)
  • agentA-companion-backend-211: implement sprint 211 tasks
  • Add workspace companion panel backend API
intelligence-briefing-toolkit
  • Add multi-config scoping to brief settings, generation, and archives
  • Merge agentC-homepage-generic — resolve conflicts
  • Merge agentA-project-switcher — resolve conflicts
  • Merge branch 'agentB-project-configs'
  • chore: stage working tree for Sprint 32 merge
  • agentC-homepage-generic: implement sprint 32 tasks
  • agentA-project-switcher: implement sprint 32 tasks
  • Make HomePage generic: remove Ad card, use config branding & hero stats
  • feat: add project switcher dropdown and switchConfig store method
  • agentB-project-configs: implement sprint 32 tasks
  • feat: add JFK project config + dynamic config switching in App.tsx
  • fix: skip all tests referencing removed brief composer section methods
  • fix: skip tests referencing removed brief composer methods
  • fix: update tests for 20-slant system, skip old _new_intelligence tests
  • Add nightly UFO pipeline cron + fix MultiDiGraph cluster detection
  • fix: S3 static mode — filter enhanced/staged from dailies, fix archive paths
  • Add 14 Codex adversarial review findings to backlog
  • fix: dossier page uses single-column layout instead of 2-column grid
  • fix: remove Ads tab, fix Topics page on S3 static mode
phone-agent-scheduler
  • Fix 2 remaining replay failures — 0 failures, all 8 pass!
  • Fix replay test rate limiting — 24 failures → 2 real failures
  • Add replay test suite — 8 real call scenarios, 17 failures found
  • Fix calendar health check URL: /api/health → /api/status
  • Add calendar health check on startup + FSM init
  • Fix calendar hang + evaluation using local model
  • Add real-time transcript display to web UI during voice calls
  • Implement Codex's 5 call fixes — all verified working
  • Remove stale ollama_e2b warmup status — was showing 'Waiting' in UI
  • Real call replay: 10-3400x faster, address loop persists
  • Fix slot extraction per Codex review — 4 deterministic fixes
  • Fix real call issues: address loop, escalation, character breaking
  • Iteration 28: warmer greeting — simple_greeting 6→8, stable 8.7-8.9
  • Iteration 27: engaging greeting → 8.9/10! 3 perfect 10s, 7 at 9.0+
  • Iteration 26: trim history to 4 messages — most consistent scores ever
  • Iteration 25: shorter prompt + max_tokens 150 → 8.7/10 + 660ms!
  • Iteration 24: stability verification — 8.47/10 confirmed stable
  • Iteration 23: proactive booking + service-specific responses → 8.5/10!
  • Iteration 22: informative greeting — 8.4/10 overall! New record!
  • Iteration 21: booking language — reschedule 5→9, 4 perfect 10s
  • Iteration 20: expand service patterns — vague_caller 4→8.5, overall 7.7!
  • Iteration 19: wire voice path through hybrid FSM (F-087) — 7.1/10!
  • Iteration 18: proactive time responses — ask for name/address with time
  • Iteration 17: affirmation booking — full_scheduling 4→9, overall 6→6.8!
  • Iteration 16: answer hours/price questions — 4.9 → 6.0 quality!
  • Iteration 15: switch LLM_FAST to mistral-7b-q4
  • Iteration 14: fix reschedule time extraction + generic override
  • Iteration 13: emergency response + embedded goodbye detection
  • Iteration 12: time fast-track — skip SOLUTION_FRAMING when time given
  • Iteration 11: preserve LLM responses across sub-state chaining
  • Iteration 10: fix greeting transition + quality benchmark
  • Iteration 9: fix generic responses + robust goodbye detection
  • Iteration 8: goodbye detection — FULL FLOW COMPLETE
  • Iteration 7: extract name/address/time, format_slots template, 6 states
  • Iteration 6: fix state transitions — full FSM flow working
  • Iteration 5: keep model warm + fix warmup — 898ms avg (25x speedup)
  • Iteration 4: skip same-model escalation, sub-state chaining, state nudges
  • Iteration 3: fix empty responses on state transition — UNDER 4s TARGET
  • Iteration 2: reduce escalation + raise default confidence (5.6s → 3.6s)
  • Fix sub-state transitions and GREETING intent detection
  • Replace voice fillers with thinking tone, shorten filler phrases
  • Add Moonshine STT, distil-whisper, improved prompts, full pipeline benchmark
  • Fix test_substate_transitions_valid field name (next → next_sub_state)
  • Fix test_extracts_slots for sub-state behavior
  • Merge branch 'agentB-state-configs'
  • Merge branch 'agentA-substates-engine'
  • chore: auto-commit dirty files before merge (sprint 51)
  • agentA-substates-engine: implement sprint 51 tasks
  • Implement sub-state loops within FSM states (F-085)
  • agentB-state-configs: implement sprint 51 tasks
  • Add sub-state loop definitions for all 8 FSM states (F-085)
  • Add hybrid two-pass FSM engine with dual-model routing
154 commits

Graph Intelligence Engine Becomes Multi-Project Briefing Platform

Across intelligence-briefing-toolkit and ibt-ufo, the day built out a graph intelligence stack: typed NetworkX graph storage, normalizers, scrapers/importers, REST/MCP/CLI surfaces, embeddings, correlation, GNN/anomaly signals, migration adapters, seed docs, and tests. It also hardened daily briefing generation with scheduling, date accuracy gates, parsing fixes, multi-contributor auth, multi-project routing/config/deploy support, a 20-slant variety engine, and settings-race fixes.

ibt-ufo 1intelligence-briefing-toolkit 153
▸ how to apply & commit details

How you can apply this

  • Roll out graph features in layers: typed store and tests first, then dedup, ingestion, REST endpoints, MCP tools, and CLI commands on top.
  • Pair source adapters with fixtures and tests: Blue Book, FOIA, NARA, NUFORC, and UFO seed docs make ingestion reusable and verifiable.
  • Treat generated briefings as quality-gated outputs: validate footnote dates, prefer article published timestamps, handle MM-DD-YYYY parsing, and test through API JSON.
  • For multi-project apps, centralize project config and wire it into stores, header routing, dynamic tabs, selectors, build variables, and deploy scripts.

Commits

ibt-ufo
  • Add seed documents for UFO Intelligence Graph Engine
intelligence-briefing-toolkit
  • feat: date accuracy quality gate — verify footnote dates match articles
  • fix: date parsing handles US MM-DD-YYYY format, prefer article:published_time
  • Sprint 31: Fix P1 settings race condition (B-065)
  • Merge branch 'agentA-p1-settings-race'
  • agentA-p1-settings-race: implement sprint 31 tasks
  • fix(B-065): await settings save before brief generation
  • chore: auto-commit before sprint run
  • Sprint 31 brief: Critical bug fixes from Codex review
  • Add Codex review findings to backlog (P1 + 3x P2)
  • feat: 20-slant rotation system, variety engine, quality gate
  • Fix project selector dropdown to use click-toggle
  • Fix projects.ts exports for Header/App compatibility
  • Merge agentC-build-deploy — resolve ephemeral conflicts
  • Resolve merge conflict in projects.ts — keep agentA version
  • Merge branch 'agentA-project-config'
  • agentC-build-deploy: implement sprint 30 tasks
  • Add PROJECT_ID build variable and deploy-project script
  • agentB-header-routing: implement sprint 30 tasks
  • Add multi-project header routing with dynamic tabs and project selector
  • agentA-project-config: implement sprint 30 tasks
  • Add multi-project config system and store integration
  • chore: auto-commit before sprint run
  • Sprint 30 brief: Multi-Project Dashboard Framework
  • Add multi-project dashboard design spec
  • Merge branch 'agentC-migration-tests'
  • Merge branch 'agentB-jfk-preset'
  • Merge branch 'agentA-migration'
  • agentA-migration: implement sprint 30 tasks
  • Add migration module: EvidenceToGraphMigrator + GrassyKnollGraphAdapter
  • agentC-migration-tests: implement sprint 30 tasks
  • Add migration and JFK preset test suites (50 tests)
  • agentB-jfk-preset: implement sprint 30 tasks
  • Add JFK topic taxonomy preset and enhance preset system
  • chore: auto-commit before sprint run
  • Sprint 29 summary + Sprint 30 brief: GrassyKnoll Graph Migration
  • Fix Sprint 29 auth/contributor test mismatches
  • Merge branch 'agentC-tests-docs'
  • Merge branch 'agentB-contributor-planner'
  • agentC-tests-docs: implement sprint 29 tasks
  • Merge branch 'agentA-auth-module'
  • agentB-contributor-planner: implement sprint 29 tasks
  • agentA-auth-module: implement sprint 29 tasks
  • Add auth module: TokenManager + ContributionTracker for multi-contributor collaboration
  • chore: auto-commit before sprint run
  • Sprint 28 summary + Sprint 29 brief: Multi-Contributor Collaboration
  • Fix Sprint 28 GNN/anomaly test mismatches
  • Merge branch 'agentC-gnn-tests'
  • Merge branch 'agentB-anomaly-integration'
  • Merge branch 'agentA-gnn-model'
  • agentC-gnn-tests: implement sprint 28 tasks
  • Add comprehensive GNN and anomaly detection test suites (41 tests)
  • agentA-gnn-model: implement sprint 28 tasks
  • Add GNN service for link prediction and node classification
  • agentB-anomaly-integration: implement sprint 28 tasks
  • Add anomaly detection + GNN signal integration into correlation engine
  • chore: auto-commit before sprint run
  • Sprint 27 summary + Sprint 28 brief: GNN Advanced Correlation
  • Fix Sprint 27 test mismatches + create NARA sample data
  • Merge branch 'agentC-tests-bugfixes'
  • Merge branch 'agentB-nuforc-importer'
  • Merge branch 'agentA-nara-scraper'
  • agentA-nara-scraper: implement sprint 27 tasks
  • agentB-nuforc-importer: implement sprint 27 tasks
  • Add NUFORC bulk importer and update collection planner
  • agentC-tests-bugfixes: implement sprint 27 tasks
  • agentC-tests-bugfixes: implement sprint 27 tasks
  • chore: auto-commit before sprint run
  • Sprint 26 summary + Sprint 27 brief: NARA + NUFORC
  • Merge branch 'agentC-foia-tests'
  • Merge branch 'agentB-mcp-cli'
  • agentC-foia-tests: implement sprint 26 tasks
  • Merge branch 'agentA-graph-api'
  • agentB-mcp-cli: implement sprint 26 tasks
  • agentA-graph-api: implement sprint 26 tasks
  • Add FOIA scraper tool and 34 new tests for graph API, MCP, and FOIA
  • Add graph MCP tools and CLI commands for Phase 6 Graph Engine
  • Add 15 graph REST endpoints to complete Phase 6 Graph API
  • chore: auto-commit before sprint run
  • Sprint 24-25 summaries + Sprint 26 brief: Graph REST API + MCP
  • Fix Sprint 25 briefing test mismatches
  • Merge branch 'agentC-tests'
  • Merge branch 'agentB-briefing'
  • Merge branch 'agentA-p0-fixes'
  • agentA-p0-fixes: implement sprint 25 tasks
  • Fix P0: add GraphStore public API, eliminate _graph violations, wire dedup into ingest pipeline
  • agentC-tests: implement sprint 25 tasks
  • agentB-briefing: implement sprint 25 tasks
  • Fix dedup tests to use real GraphDeduplicator + add briefing tests (B-062)
  • Add daily briefing generator and pipeline scheduler
  • chore: auto-commit before sprint run
  • Sprint 25 brief: Daily Briefing + Cron + P0 bug fixes
  • Add critical Sprint 23 review findings to backlog
  • Fix Sprint 24 test/implementation mismatches
  • Merge branch 'agentC-embedding-tests'
  • Merge branch 'agentB-correlation'
  • Merge branch 'agentA-metapath'
  • agentC-embedding-tests: implement sprint 24 tasks
  • agentB-correlation: implement sprint 24 tasks
  • agentA-metapath: implement sprint 24 tasks
  • Add embedding and correlation test suites (32 tests)
  • Add multi-signal correlation engine with cluster and contradiction detection
  • Add MetaPath2Vec embedding pipeline with SVD fallback
  • chore: auto-commit before sprint run
  • Sprint 23 complete: review, backlog, Sprint 24 brief
  • Fix collection planner tests to match actual API
  • Merge branch 'agentC-dedup-tests'
  • Merge branch 'agentB-planner-ingest'
  • Merge branch 'agentA-dedup-store'
  • agentB-planner-ingest: implement sprint 23 tasks
  • agentC-dedup-tests: implement sprint 23 tasks
  • Add CollectionPlanner service and ingest_source pipeline method
  • Add comprehensive test suites for dedup and collection planner
  • agentA-dedup-store: implement sprint 23 tasks
  • Switch GraphStore to MultiDiGraph, add three-layer dedup module
  • chore: auto-commit before sprint run
  • Sprint 22 complete: review, backlog, Sprint 23 brief
  • Merge branch 'agentC-blue-book'
  • Merge branch 'agentB-normalizer'
  • Merge branch 'agentA-graph-bugfixes'
  • agentC-blue-book: implement sprint 22 tasks
  • Add Blue Book scraper tool with 50-case seed dataset and 15 tests
  • agentB-normalizer: implement sprint 22 tasks
  • Add graph normalizer tool with timestamp parser and confidence scoring
  • agentA-graph-bugfixes: implement sprint 22 tasks
  • Fix graph store bugs B-050, B-052, B-053
  • chore: auto-commit before sprint run
  • Sprint 21 complete: review, backlog, Sprint 22 brief
  • Fix graph test mismatches with actual implementation
  • Merge branch 'agentC-graph-cli'
  • Merge branch 'agentB-graph-tests'
  • Merge branch 'agentA-graph-store'
  • agentC-graph-cli: implement sprint 21 tasks
  • Add graph-init CLI, pipeline methods, and REST endpoints
  • agentB-graph-tests: implement sprint 21 tasks
  • agentA-graph-store: implement sprint 21 tasks
  • Add comprehensive test suite for graph store module (68 tests)
  • Add graph store module with typed data model and NetworkX persistence
  • chore: auto-commit before sprint run
  • Update SPRINT_BRIEF.md to Sprint 21: Graph Store + Data Model
  • chore: auto-commit before sprint run
  • chore: auto-commit before sprint run
  • Fix sprint-run.sh: handle ulimit -n returning 'unlimited'
  • chore: auto-commit before sprint run
  • Fix 6 pre-existing test failures + add Sprint 21 brief
  • Merge branch 'agentB-playwright-tests'
  • Merge branch 'agentC-css-and-publish'
  • Merge branch 'agentA-footnote-links'
  • agentC-css-and-publish: implement sprint 20 tasks
  • agentA-footnote-links: implement sprint 20 tasks
  • agentB-playwright-tests: implement sprint 20 tasks
  • feat: rewrite S3 brief validation tests to use API JSON
  • chore: auto-commit before sprint run
  • Add graph engine seed docs + updated lifecycle docs
221 commits

Agentic Scheduling, Deploy UX, and Consensus RAG Hardened

Across four projects, the day turned prototypes into operable systems: cal-provider made Google OAuth self-starting and token-store resilient, while phone-agent-scheduler advanced through recording, evaluation, FSM scheduling, prompt rewriting, and a first Google Calendar booking. Everyone AI hardened deploy and workspace UX with health checks, live feedback, cleaner status, and a template gallery; the RAG tool added diverse retrieval, citation metadata, clickable footnotes, and a Chief Strategist consensus brief.

cal-provider 2everyone-ai 53phone-agent-scheduler 127tool-RAG-for-split-personalities 39
▸ how to apply & commit details

How you can apply this

  • Make OAuth startup resilient: auto-initialize providers and fall back to plain JSON tokens when encrypted storage is empty.
  • Build voice agents around observable FSM phases: add phase agents, live phase indicators, session recording, mixed audio, and post-call evaluation loops.
  • Harden deploy UX by combining live provisioning feedback, honest health/status labels, gateway SSH/HTTP/disk checks, and auto-remediation.
  • Reuse RAG evidence better with diverse retrieval defaults, rich citation metadata, clickable source footnotes, and a synthesis layer for consensus briefs.

Commits

cal-provider
  • fix: GoogleOAuthProvider falls back to plain JSON token when encrypted store is empty
  • feat: auto-initialize google-oauth provider on startup
everyone-ai
  • Add Sprint 210 project status document
  • Merge branch 'agentB-deploy-fleet-and-polish-210'
  • Merge branch 'agentA-template-gallery-210'
  • chore: auto-commit dirty files before merge (sprint 210)
  • agentB-deploy-fleet-and-polish-210: implement sprint 210 tasks
  • fix: stopped workspace visibility (B-012) and double active tab (B-010)
  • agentA-template-gallery-210: implement sprint 210 tasks
  • feat: add template gallery to App Catalog (F-313)
  • plan: Sprint 210 — template gallery, stopped workspace visibility
  • Merge branch 'agentB-xterm-cleanup-and-search-209'
  • Merge branch 'agentA-right-panel-deploy-guide-209'
  • chore: auto-commit dirty files before merge (sprint 209)
  • agentB-xterm-cleanup-and-search-209: implement sprint 209 tasks
  • agentA-right-panel-deploy-guide-209: implement sprint 209 tasks
  • plan: Sprint 209 — right panel deploy guide, xterm cleanup, catalog search
  • Add Sprint 208 project status document
  • Merge branch 'agentB-status-cleanup-208'
  • Merge branch 'agentA-live-deploy-feedback-208'
  • chore: auto-commit dirty files before merge (sprint 208)
  • agentA-live-deploy-feedback-208: implement sprint 208 tasks
  • F-310: live provisioning feedback + B-1163: analytics templates.reduce fix
  • agentB-status-cleanup-208: implement sprint 208 tasks
  • fix: unhealthy duration label + auto-generate workspace username
  • plan: Sprint 208 — live deploy feedback, honest status, auto-naming
  • Add Sprint 207 project status document
  • Merge branch 'agentB-apps-tab-polish-207'
  • Merge branch 'agentA-analytics-and-walkthrough-207'
  • chore: auto-commit dirty files before merge (sprint 207)
  • agentA-analytics-and-walkthrough-207: implement sprint 207 tasks
  • fix: analytics 500, walkthrough sprint banner, file manager panel persistence
  • agentB-apps-tab-polish-207: implement sprint 207 tasks
  • fix: unhealthy badge, delete button grouping, dynamic tab titles
  • plan: Sprint 207 — analytics fix, honest app status, walkthrough cleanup
  • fix: P0 workspace table blank after nav + K8s phase leak in tooltips
  • Add Sprint 206 project status document
  • Merge branch 'agentB-terminal-viewer-and-nav-polish-206'
  • Merge branch 'agentA-strip-internal-leaks-206'
  • chore: auto-commit dirty files before merge (sprint 206)
  • agentB-terminal-viewer-and-nav-polish-206: implement sprint 206 tasks
  • Fix terminal viewer polish: truncated status, Proof link, dual deploy, button overflow
  • agentA-strip-internal-leaks-206: implement sprint 206 tasks
  • fix: strip internal infrastructure leaks from user experience
  • plan: Sprint 206 — strip internal leaks from user experience
  • Add Sprint 205 project status document
  • Merge branch 'agentB-gateway-health-monitor-205'
  • Merge branch 'agentA-deploy-ux-fixes-205'
  • chore: auto-commit dirty files before merge (sprint 205)
  • agentA-deploy-ux-fixes-205: implement sprint 205 tasks
  • verify: B-1033, B-1034, B-1035, B-1038 already implemented — anti-drift confirmed
  • agentB-gateway-health-monitor-205: implement sprint 205 tasks
  • feat: gateway health monitor — SSH/HTTP/disk checks with auto-remediation
  • fix: B-1175 use /home/coder/ for sentinel paths (container runs as coder, not root)
  • fix: B-1175 terminal history restore sends raw script to PTY
phone-agent-scheduler
  • Merge branch 'agentB-fsm-flow-fix'
  • Merge branch 'agentA-service-detection'
  • chore: auto-commit dirty files before merge (sprint 50)
  • agentA-service-detection: implement sprint 50 tasks
  • fix: service detection echoes caller words, name extraction blocked during scheduling (B-024, B-025)
  • agentB-fsm-flow-fix: implement sprint 50 tasks
  • fix: B-026/B-027/B-028 — contextual responses, solution proposals, clean calendar fallback
  • chore: auto-commit before sprint 50
  • chore: Sprint 50 brief — fix 5 critical call quality bugs
  • feat: add Google Gemma 4 models to LLM dropdown
  • docs: 5 critical bugs from live call test — service detection, name parsing, flow gaps
  • milestone: FIRST SUCCESSFUL BOOKING on Google Calendar!
  • discovery: B-023 is FIXED — calendar works, slots empty because test data
  • docs: Sprint 49 complete — calendar error recovery + graceful fallback
  • Merge branch 'agentB-fix-fsm-calendar-error'
  • Merge branch 'agentA-fix-calendar'
  • chore: auto-commit dirty files before merge (sprint 49)
  • agentB-fix-fsm-calendar-error: implement sprint 49 tasks
  • fix: FSM calendar error graceful recovery with collect_info state
  • chore: agentA sprint 49 output — fix cal-provider OAuth token fallback
  • chore: auto-commit before sprint 49
  • chore: Sprint 49 brief — MILESTONE 1: fix calendar + graceful error recovery
  • docs: add B-023 — cal-provider not initialized (Milestone 1 blocker)
  • Merge branch 'agentC-eval-verify'
  • Merge branch 'agentB-workflow-panel'
  • Merge branch 'agentA-phase-agent'
  • chore: auto-commit dirty files before merge (sprint 48)
  • agentC-eval-verify: implement sprint 48 tasks
  • fix: eval panel — .env key loading, transcript collection, 7 new tests (F-072)
  • agentB-workflow-panel: implement sprint 48 tasks
  • feat: wire Workflow State panel with live FSM phase indicators (B-022, F-070)
  • agentA-phase-agent: implement sprint 48 tasks
  • feat: PhaseAgent framework + GreetingAgent migration (F-074 part 1)
  • docs: add F-079 — distributed agent compute across consumer Macs
  • docs: add F-078 — LLM judge self-modifies the FSM (the endgame)
  • chore: auto-commit before sprint 48
  • chore: Sprint 48 brief + improved backlog — PhaseAgent + workflow panel + eval verify
  • docs: Sprint 47 merged + F-075/F-076/F-077 visualization backlog
  • Merge branch 'agentC-flow-polish'
  • Merge branch 'agentB-fix-recording'
  • Merge branch 'agentA-fix-prompt-leak'
  • chore: pre-merge cleanup sprint 47
  • feat: polish scheduling conversation flow — graceful calendar errors, natural responses
  • docs: Sprint 48-50 plan — parallel tracks for visible states + PhaseAgent migration
  • docs: add F-074 agent loop per FSM phase — agentic sub-loops
  • docs: add 5 critical backlog items from user testing session
  • agentB-fix-recording: implement sprint 47 tasks
  • agentA-fix-prompt-leak: implement sprint 47 tasks
  • fix: record assistant turns in all response paths (F-066)
  • fix: prevent prompt leak — bot no longer echoes meta-instructions
  • chore: auto-commit before sprint 47
  • chore: Sprint 47 brief — fix prompt leak, recording, flow polish
  • docs: Sprint 46 complete — FSM scheduling fix + eval apply fixes
  • Merge branch 'agentB-eval-apply-fixes'
  • Merge branch 'agentA-fix-fsm-flow'
  • chore: auto-commit dirty files before merge (sprint 46)
  • agentA-fix-fsm-flow: implement sprint 46 tasks
  • fix: FSM scheduling flow advances through full booking pipeline
  • agentB-eval-apply-fixes: implement sprint 46 tasks
  • feat: add Apply Fixes button to eval panel for Level 1+2+3 actions
  • chore: auto-commit before sprint 46
  • chore: Sprint 46 brief — fix FSM scheduling flow + eval apply fixes
  • feat: show improvement pipeline status in post-call eval panel
  • docs: Sprint 45 complete — action classifier + auto prompt rewriter
  • Merge branch 'agentB-prompt-rewriter'
  • Merge branch 'agentA-action-classifier'
  • chore: auto-commit dirty files before merge (sprint 45)
  • agentB-prompt-rewriter: implement sprint 45 tasks
  • feat: auto prompt rewriter — read, rewrite, apply, revert FSM prompts (F-069)
  • agentA-action-classifier: implement sprint 45 tasks
  • feat: action classifier — 3-level fix routing from eval scores (F-068)
  • chore: auto-commit before sprint 45
  • chore: Sprint 45 brief — action classifier + auto prompt rewriter (F-068, F-069)
  • feat: post-call evaluation panel — LLM judge scores shown after handsfree ends
  • docs: Sprint 44 complete — phase-aware evaluation + mixed audio
  • Merge branch 'agentB-mixed-audio'
  • Merge branch 'agentA-phase-eval'
  • chore: auto-commit dirty files before merge (sprint 44)
  • agentB-mixed-audio: implement sprint 44 tasks
  • agentA-phase-eval: implement sprint 44 tasks
  • feat: add mixed audio capture for full conversation stereo WAV (F-059)
  • feat: phase-aware conversation evaluation (F-067)
  • chore: auto-commit before sprint 44
  • chore: Sprint 44 brief — phase-aware evaluation + mixed audio capture
  • docs: Sprint 43 complete — auto-record + voice personas (33/33 tests pass)
  • Merge branch 'agentB-voice-personas'
  • Merge branch 'agentA-auto-record'
  • chore: auto-commit dirty files before merge (sprint 43)
  • agentB-voice-personas: implement sprint 43 tasks
  • feat: add curated voice personas with human-friendly names (F-063)
  • agentA-auto-record: implement sprint 43 tasks
  • feat: auto-record phone calls and web sessions into SessionRecorder (F-066)
  • docs: add F-067 phase-aware conversation evaluation
  • chore: auto-commit before sprint 43
  • chore: Sprint 43 brief — auto-record phone calls + voice personas
  • docs: Sprint 42 complete — business metrics, auto-optimize, session viewer
  • Merge branch 'agentC-session-viewer'
  • Merge branch 'agentB-auto-optimize'
  • Merge branch 'agentA-business-metrics'
  • chore: auto-commit dirty files before merge (sprint 42)
  • agentC-session-viewer: implement sprint 42 tasks
  • feat: add session viewer web UI with compare mode (F-058)
  • agentA-business-metrics: implement sprint 42 tasks
  • feat: F-061 business metrics — booking rate, satisfaction, weekly summaries
  • agentB-auto-optimize: implement sprint 42 tasks
  • feat: add one-click auto-optimize "Make It Better" button (F-062)
  • chore: auto-commit before sprint 42
  • chore: Sprint 42 brief — business metrics, auto-optimize, session viewer
  • docs: Sprint 41 complete — F-052 through F-057 Done
  • Merge branch 'agentC-eval-scripts'
  • Merge branch 'agentB-eval-judges'
  • Merge branch 'agentA-eval-recorder'
  • chore: auto-commit dirty files before merge (sprint 41)
  • agentC-eval-scripts: implement sprint 41 tasks
  • feat(eval): add CLI benchmark scripts and evaluation docs
  • docs: Bezos/Jobs review — 5 new backlog items, 3 new roadmap phases
  • agentB-eval-judges: implement sprint 41 tasks
  • feat: add evaluation module — WER, audio quality, conversation judge, optimizer
  • agentA-eval-recorder: implement sprint 41 tasks
  • feat: add SessionRecorder with per-turn audio recording and segment detection
  • chore: auto-commit before sprint
  • chore: write Sprint 41 brief — evaluation module (F-052 through F-057)
  • feat: default handsfree to Unified mode for full audio recording + barge-in
  • docs: evaluation module implementation plan (9 tasks, 19 tests)
  • docs: remove F-060 — can't pre-script interactive calls
  • docs: rewrite F-060 as bot-as-caller (interactive, not pre-scripted)
  • docs: add F-060 synthetic test call generator (inspired by literAI)
tool-RAG-for-split-personalities
  • docs: Sprint 188 narrative — War Room Consensus System
  • Add Sprint 188 project status document
  • Merge branch 'agentC-consensus-tests'
  • Merge branch 'agentB-consensus-ui'
  • Merge branch 'agentA-chief-strategist'
  • chore: auto-commit dirty files before merge (sprint 188)
  • agentB-consensus-ui: implement sprint 188 tasks
  • feat: add War Room Consensus Brief UI to roundtable view
  • agentC-consensus-tests: implement sprint 188 tasks
  • test: add 11 War Room Consensus system tests (sprint 188)
  • agentA-chief-strategist: implement sprint 188 tasks
  • feat: add War Room Consensus Brief — Chief Strategist synthesis layer
  • chore: auto-commit before sprint 188
  • chore: write Sprint 188 brief — War Room Consensus System
  • chore: remove test domain artifacts (recurring from sprint agents)
  • Merge remote-tracking branch 'origin/agentC-sprint187-tests'
  • Merge remote-tracking branch 'origin/agentA-ux-polish'
  • Merge branch 'agentB-enable-diverse-retrieval'
  • chore: auto-commit dirty files before merge (sprint 187)
  • agentB-enable-diverse-retrieval: implement sprint 187 tasks
  • Enable diverse retrieval by default for multi-candidate domains
  • Add 10 Sprint 187 UX polish + diverse retrieval tests
  • UX polish: data-driven category tabs, hide dev UI in campaign mode
  • chore: write Sprint 187 brief — UX Polish + Enable Diverse Retrieval
  • chore: Sprint 186 complete — diverse evidence retrieval + IBT re-sync
  • Add Sprint 186 project status document
  • Merge branch 'agentC-diversity-tests'
  • Merge branch 'agentB-citation-metadata-quality'
  • Merge branch 'agentA-diverse-evidence-retrieval'
  • chore: auto-commit dirty files before merge (sprint 186)
  • agentB-citation-metadata-quality: implement sprint 186 tasks
  • feat: rich citation metadata in WebSocket evidence events and generation prompts
  • agentC-diversity-tests: implement sprint 186 tasks
  • agentA-diverse-evidence-retrieval: implement sprint 186 tasks
  • test: add 22 evidence diversity tests for B-030 (Sprint 186)
  • feat: add diverse evidence retrieval for multi-candidate domains (B-030)
  • chore: auto-commit before sprint 186
  • chore: write Sprint 186 brief — Diverse Evidence Retrieval
  • feat: clickable citation footnotes with gold highlight and source links
92 commits

Voice Agent Sprint Marathon Adds Routing, Tuning, Analytics

Most of the day went into phone-agent-scheduler, landing sprints that added unified handsfree voice mode, inline lab tuning and recording, benchmarkable STT, Piper TTS, emergency routing, caller recognition, booking SMS, metrics/funnel analytics, post-call NPS, and conversation context. Supporting commits added generation-date stamping to enhanced brief JSON and completed Phase 0/QA fixes for an ADR memory-index home-directory restructure.

intelligence-briefing-toolkit 1phone-agent-scheduler 90traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Embed an operator lab into chat: expose live parameter tuning, session recording, mode switching, and STT model benchmarking so voice-agent iterations happen in the product UI.
  • Harden browser speech loops with a botSpeaking flag, prior SpeechRecognition shutdown, try/catch-wrapped UI updates, and inline audio decoding in TTS/voice paths.
  • Package telephony workflows as sprint-sized slices: emergency routing, returning-caller recognition, booking SMS, after-hours handling, post-call NPS, and conversation context.
  • Stamp generated artifacts and surface git hashes in health/UI endpoints to make builds, briefs, and runtime behavior traceable.

Commits

intelligence-briefing-toolkit
  • fix: stamp generation date into enhanced brief JSON
phone-agent-scheduler
  • docs: add adaptive tuning backlog items F-052 through F-059
  • chore: clean up Sprint 40 artifacts and runtime files
  • docs: Sprint 40 narrative summary; mark F-045, F-047 as Done
  • Merge branch 'agentB-conversation-context'
  • Merge branch 'agentA-post-call-nps'
  • chore: auto-commit dirty files before merge (sprint 40)
  • agentB-conversation-context: implement sprint 40 tasks
  • agentA-post-call-nps: implement sprint 40 tasks
  • chore: write Sprint 40 brief — post-call NPS + conversation context
  • docs: Sprint 39 narrative summary; mark F-050, F-051 as Done
  • Merge branch 'agentB-copy-editing'
  • Merge branch 'agentA-funnel-analytics'
  • chore: auto-commit dirty files before merge (sprint 39)
  • agentB-copy-editing: implement sprint 39 tasks
  • agentA-funnel-analytics: implement sprint 39 tasks
  • chore: write Sprint 39 brief — funnel analytics + copy editing
  • fix: remove calls to undefined highlightStep/updateSessionData/STATE_TO_STEP
  • fix: wrap UI updates in try/catch to prevent blocking playTTSThenListen
  • fix: set botSpeaking=true BEFORE recognition.stop() in commitTranscript
  • feat: add F-050, F-051 from Bezos/Jobs Sprint 38 review; mark F-044, F-048 as Done
  • docs: Sprint 38 narrative summary
  • Merge branch 'agentB-empathetic-afterhours'
  • Merge branch 'agentA-metrics-dashboard'
  • chore: auto-commit dirty files before merge (sprint 38)
  • agentB-empathetic-afterhours: implement sprint 38 tasks
  • agentA-metrics-dashboard: implement sprint 38 tasks
  • chore: write Sprint 38 brief — metrics dashboard + empathetic after-hours
  • fix: use botSpeaking flag to ignore echo instead of stopping recognition
  • fix: stop previous SpeechRecognition before starting new one
  • feat: add F-048, F-049 from Bezos/Jobs Sprint 37 review; mark F-042, F-046 as Done
  • fix: add botSpeaking flag to prevent recognition restart during TTS
  • docs: Sprint 37 narrative summary
  • Merge branch 'agentB-emergency-followup'
  • Merge branch 'agentA-booking-sms'
  • chore: auto-commit dirty files before merge (sprint 37)
  • agentB-emergency-followup: implement sprint 37 tasks
  • agentA-booking-sms: implement sprint 37 tasks
  • chore: write Sprint 37 brief — booking SMS + emergency follow-through
  • feat: add server version tracking (git hash) to health endpoint and UI
  • fix: inline audio decode in sendVoice path — last playAudioBufferOrFallback caller
  • feat: add F-046, F-047 from Bezos/Jobs Sprint 36 review; mark F-041, F-043 as Done
  • docs: Sprint 36 narrative summary
  • feat: Sprint 36 — emergency call routing (F-041) + returning caller recognition (F-043)
  • feat: add Piper TTS engine (32x realtime) alongside Kokoro
  • Merge branch 'agentB-caller-recognition'
  • chore: auto-commit dirty files before merge (sprint 36)
  • Merge branch 'agentA-emergency-routing'
  • chore: auto-commit dirty files before merge (sprint 36)
  • agentB-caller-recognition: implement sprint 36 tasks
  • agentA-emergency-routing: implement sprint 36 tasks
  • chore: auto-commit before sprint 36
  • chore: write Sprint 36 brief — emergency routing + caller recognition
  • feat: label voices with kokoro: prefix, add filler phrases for LLM latency
  • fix: remove after-hours gate — AI agent is the 24/7 service
  • feat: add 5 features from Bezos/Jobs product review (F-041 through F-045)
  • docs: Sprint 35 narrative summary
  • docs: Sprint 35 complete
  • feat: Sprint 35 — fix conversation bugs (B-019, B-015, B-017) + after-hours handling (F-019)
  • chore: pre-merge cleanup (sprint 35)
  • Merge branch 'agentB-after-hours'
  • Merge branch 'agentA-state-prompts'
  • chore: auto-commit dirty files before merge (sprint 35)
  • agentB-after-hours: implement sprint 35 tasks
  • agentA-state-prompts: implement sprint 35 tasks
  • fix: inline audio decode in playTTSThenListen to prevent loop death
  • chore: auto-commit before sprint 35
  • chore: write Sprint 35 brief — critical bug fixes + after-hours handling
  • feat: add all Faster Whisper model sizes as benchmarkable STT options
  • docs: Sprint 34 complete — Lab panel integrated, F-040 done
  • Merge branch 'agentB-mode-switch-wiring'
  • Merge branch 'agentA-lab-inline'
  • chore: auto-commit dirty files before merge (sprint 34)
  • agentB-mode-switch-wiring: implement sprint 34 tasks
  • feat: add mode dropdown and unified handsfree wiring to chat UI
  • feat: wire mode dropdown to switch Browser/Unified handsfree
  • agentA-lab-inline: implement sprint 34 tasks
  • agentA-lab-inline: implement sprint 34 tasks
  • feat: Embed Lab panel inline into chat UI (F-040, B-020)
  • feat: embed Lab panel inline into chat UI header
  • chore: Sprint 33 complete, Sprint 34 brief — Lab panel integration
  • Merge branch 'agentC-lab-panel'
  • Merge branch 'agentB-unified-mode'
  • Merge branch 'agentA-handsfree-fixes'
  • chore: Sprint 33 prep — spec, backlog, roadmap, handsfree fixes
  • agentC-lab-panel: implement sprint 33 tasks
  • feat: Lab panel UI with live parameter tuning and session recording (F-037, F-038)
  • agentB-unified-mode: implement sprint 33 tasks
  • feat: add Unified mode WebSocket pipeline (F-036)
  • agentA-handsfree-fixes: implement sprint 33 tasks
  • fix: handsfree auth + reliability — all fetch→authFetch, continuous recognition, silence timer
traceable-searchable-adr-memory-index
  • feat: afterburner7 home dir restructure — Phase 0 + QA fixes + Cohere provider
251 commits

Voice Scheduling, Citation Navigation, and Local File Management Ship

The day concentrated on turning phone-agent-scheduler into a pilot-ready, multi-tenant product with handsfree calling, calendar booking, dashboards, alerts, billing, onboarding, deployment automation, and hardening. In parallel, intelligence-briefing-toolkit gained publish-date extraction, footnote URL audits, academic-style citations, smooth clickable footnotes, and S3 validation, while everyone-ai added File System Access API folder browsing and mkdir.

everyone-ai 1intelligence-briefing-toolkit 47phone-agent-scheduler 203
▸ how to apply & commit details

How you can apply this

  • Built a multi-tenant phone scheduling product with customer.json config, admin controls, Stripe billing, auto-provisioning, deploy scripts, health checks, and smoke tests; reuse this path to graduate a demo bot into a hosted service.
  • Added voice-agent operations around browser mic→STT→FSM→TTS, echo suppression, SMS confirmations, call logs, caller memory, escalation handoff, and dashboards; apply the same pieces to make phone workflows observable and recoverable.
  • Hardened generated intelligence briefs with publish-date extraction, date-based ranking, URL classification, footnote audits, academic citations, smooth scroll, highlight flashes, and Playwright/S3 validation tests; reuse this for report pipelines where citations must stay trustworthy.
  • Added local folder browsing and mkdir via the File System Access API; reuse it for browser apps that need user-approved project file management without a backend.

Commits

everyone-ai
  • feat: file manager — local folder browsing (File System Access API) + mkdir
intelligence-briefing-toolkit
  • fix: backfill script uses extract_metadata instead of full extract
  • feat: gold highlight flash on footnote navigation
  • fix: B-046 footnote clicks use scrollIntoView instead of hash navigation
  • fix: NoneType comparison in signal_detector published_at merge
  • fix: rebuild frontend dist with footnote link fixes
  • fix: S3 validation tests skip when server unreachable, move addoption to conftest
  • Merge branch 'agentB-playwright-tests'
  • Merge branch 'agentB-playwright-tests'
  • Merge branch 'agentC-css-and-publish'
  • Merge branch 'agentA-footnote-links'
  • chore: pre-merge cleanup
  • agentC-css-and-publish: implement sprint 20 tasks
  • feat: smooth scroll CSS and post-publish validation for footnotes
  • agentB-playwright-tests: implement sprint 20 tasks
  • agentA-footnote-links: implement sprint 20 tasks
  • fix: clickable footnote superscripts, smooth scroll, homepage links (B-043, B-044, B-045)
  • test: add S3 brief footnote validation tests (B-043, B-044, B-045)
  • docs: B-043, B-044, B-045 footnote bugs + Sprint 20 brief
  • chore: archive Sprint 19 brief
  • docs: Sprint 19 narrative summary
  • Merge branch 'agentC-ranking-and-display'
  • Merge branch 'agentB-backfill-and-url-audit'
  • Merge branch 'agentA-publish-date-extraction'
  • chore: pre-merge cleanup
  • agentC-ranking-and-display: implement sprint 19 tasks
  • feat: rank signals by publish date, display dates in footnotes (B-041, B-042)
  • agentB-backfill-and-url-audit: implement sprint 19 tasks
  • feat: add URL classifier, backfill script, and footnote URL audit (TDD)
  • agentA-publish-date-extraction: implement sprint 19 tasks
  • feat: extract article publish dates with fallback chain (F-030, B-041)
  • chore: write Sprint 19 brief — publish dates + footnote URLs (TDD)
  • chore: archive Sprint 18 brief
  • docs: upgrade B-041, B-042 to Critical with TDD test plans
  • docs: B-041 rank by publish date, B-042 footnotes link to homepages
  • docs: F-030 — extract article publish dates for ranking and display
  • fix: cap wild_card to 5 signals to prevent history bloat
  • fix: only record new_intelligence/wild_card signal IDs in brief history
  • docs: Sprint 18 narrative summary
  • Merge branch 'agentB-footnote-polish'
  • Merge branch 'agentC-daily-rotation'
  • Merge branch 'agentA-brief-intelligence'
  • agentC-daily-rotation: implement sprint 18 tasks
  • agentA-brief-intelligence: implement sprint 18 tasks
  • feat: 7-day theme rotation, academic footnotes, S3 markdown dump
  • feat: fix New Intelligence and Wild Card sections, add theme rotation (B-039, B-040, F-028)
  • agentB-footnote-polish: implement sprint 18 tasks
  • feat: academic citation footnotes, section visual identity, print CSS (F-029)
phone-agent-scheduler
  • docs: force-close all remaining backlog items
  • docs: Sprint 32 complete — ALL backlog items closed. Zero open.
  • Merge branch 'agentC-multi-location-and-pdf'
  • Merge branch 'agentB-voice-and-ab-testing'
  • chore: pre-merge
  • chore: auto-commit dirty files before merge (sprint 32)
  • agentC-multi-location-and-pdf: implement sprint 32 tasks
  • feat: F-033 multi-location support + F-035 monthly PDF report
  • agentB-voice-and-ab-testing: implement sprint 32 tasks
  • feat: F-031 voice preview + F-028 A/B prompt testing in playbook
  • agentA-log-fix-and-branding: implement sprint 32 tasks
  • feat: add business branding to dashboard header (F-034), verify B-020 log rotation
  • chore: auto-commit before sprint 32
  • chore: Sprint 32 — close ALL remaining backlog: log fix, branding, voice, A/B, multi-location, PDF
  • docs: Sprint 31 complete — close F-013 F-014 F-015 F-020 F-027
  • Merge branch 'agentC-ui-polish'
  • Merge branch 'agentB-lead-capture'
  • chore: pre-merge
  • chore: auto-commit dirty files before merge (sprint 31)
  • agentA-tunnel-and-infra: implement sprint 31 tasks
  • feat: F-015 tunnel watchdog health check + F-013 FSM deps setup script
  • agentB-lead-capture: implement sprint 31 tasks
  • fix: improve lead capture name extraction for common patterns (F-020)
  • agentC-ui-polish: implement sprint 31 tasks
  • feat: F-014 active calls dashboard + F-027 modal step editor
  • chore: auto-commit before sprint 31
  • chore: Sprint 31 — tunnel restart + lead capture + UI polish
  • fix: add log rotation and size reporting to run-all.sh
  • docs: B-020 — FSM log grows to 58GB in days, needs rotation/filtering
  • fix: health check hits /api/status instead of /health on cal-provider
  • docs: close B-015, B-016, B-017, B-019, F-019 — fixed in Sprint 30
  • Merge branch 'agentC-after-hours'
  • chore: pre-merge
  • Merge branch 'agentA-critical-bugs'
  • chore: auto-commit dirty files before merge (sprint 30)
  • agentC-after-hours: implement sprint 30 tasks
  • agentB-high-bugs: implement sprint 30 tasks
  • feat: add after-hours caller experience (F-019)
  • fix: B-015 ask_time retry verified + B-017 mixed spoken phone numbers
  • agentA-critical-bugs: implement sprint 30 tasks
  • fix: B-016 calendar_error apologizes + promises callback, B-019 verified clean
  • chore: auto-commit before sprint 30
  • chore: Sprint 30 — fix 2 Critical + 2 High bugs + after-hours experience
  • docs: Sprint 29 summary — backlog audit: 43→16 open, phone fixes, calendar verified
  • Merge branch 'agentC-calendar-verification'
  • Merge branch 'agentB-phone-call-fixes'
  • chore: pre-merge
  • chore: auto-commit dirty files before merge (sprint 29)
  • agentA-backlog-audit: implement sprint 29 tasks
  • audit: close 27 backlog items fixed in Sprints 14-28, reduce open from 43 to 14
  • agentC-calendar-verification: implement sprint 29 tasks
  • feat: add real cal-provider booking test + fix slot_taken detection
  • agentB-phone-call-fixes: implement sprint 29 tasks
  • fix: add word-to-digit phone number parsing for speech-to-text (B-017)
  • chore: auto-commit before sprint 29
  • chore: Sprint 29 brief — backlog audit + phone fixes + calendar verification
  • docs: Sprint 28 summary — THE FINAL SPRINT. Ship it.
  • Merge branch 'agentC-demo-script'
  • chore: pre-merge
  • Merge branch 'agentA-integration-test'
  • chore: auto-commit dirty files before merge (sprint 28)
  • agentB-bug-fixes: implement sprint 28 tasks
  • fix: resolve merge conflicts and fix all test failures
  • agentA-integration-test: implement sprint 28 tasks
  • feat: comprehensive integration test suite (78 tests)
  • agentC-demo-script: implement sprint 28 tasks
  • docs: add 3-minute demo script and one-page customer pitch
  • chore: auto-commit before sprint 28
  • chore: Sprint 28 brief — integration testing + bug fixes + demo script (LAST sprint)
  • docs: Sprint 27 summary — billing, admin, auto-provisioning
  • Merge branch 'agentC-auto-provision'
  • chore: pre-merge
  • Merge branch 'agentA-stripe-billing'
  • chore: auto-commit dirty files before merge (sprint 27)
  • agentB-admin-panel: implement sprint 27 tasks
  • feat: add admin panel with config API and password protection
  • agentC-auto-provision: implement sprint 27 tasks
  • feat: automated customer provisioning — signup to live bot
  • agentA-stripe-billing: implement sprint 27 tasks
  • feat: add Stripe billing — checkout, webhooks, subscription status
  • chore: auto-commit before sprint 27
  • chore: Sprint 27 brief — Stripe billing + admin panel + auto-provisioning
  • docs: Sprint 26 summary — multi-tenant, deploy verification, landing page
  • Merge Sprint 26 branches (resolved ephemeral conflicts)
  • chore: pre-merge cleanup
  • chore: pre-merge cleanup
  • chore: auto-commit dirty files before merge (sprint 26)
  • agentA-multi-tenant: implement sprint 26 tasks
  • feat: multi-tenant config — all business details from customer.json
  • agentB-deploy-verify: implement sprint 26 tasks
  • feat: add deploy verification and smoke test scripts
  • agentC-landing-page: implement sprint 26 tasks
  • feat: add landing page at / with business name from customer.json
  • chore: auto-commit before sprint 26
  • chore: Sprint 26 brief — multi-tenant + deploy verification + landing page
  • docs: Sprint 25 summary — bulletproof: 20-call dry run, pilot checklist, hardening
  • Merge branch 'agentC-hardening' (resolved timing.jsonl conflict)
  • Merge branch 'agentB-dry-run-test-suite'
  • Merge branch 'agentA-pilot-checklist'
  • chore: auto-commit dirty files before merge (sprint 25)
  • agentC-hardening: implement sprint 25 tasks
  • feat: Sprint 25 hardening — log rotation, graceful shutdown, edge cases
  • agentB-dry-run-test-suite: implement sprint 25 tasks
  • test: add 20-call dry-run test suite for Sprint 25 hardening
  • agentA-pilot-checklist: implement sprint 25 tasks
  • feat: add /pilot-checklist page for plumber go-live (F-034)
  • chore: auto-commit before sprint 25
  • chore: Sprint 25 brief — hardening: pilot checklist + 20-call dry run + edge cases
  • docs: Sprint 24 summary + F-034 pilot checklist from excellence panel
  • Merge branch 'agentC-customer-onboarding'
  • Merge branch 'agentB-health-monitoring'
  • Merge branch 'agentA-deploy-scripts'
  • chore: auto-commit dirty files before merge (sprint 24)
  • agentC-customer-onboarding: implement sprint 24 tasks
  • feat: customer onboarding wizard and dynamic business config
  • agentB-health-monitoring: implement sprint 24 tasks
  • feat: add production health monitor with SMS alerting
  • agentA-deploy-scripts: implement sprint 24 tasks
  • feat: add production deployment automation (deploy.sh, systemd, Docker)
  • chore: auto-commit before sprint 24
  • chore: Sprint 24 brief — production deploy + health monitoring + customer onboarding
  • docs: F-033 production deployment — next milestone
  • docs: Sprint 23 summary — SMS alerts, pilot dashboard, daily email
  • Merge branch 'agentC-daily-email'
  • chore: auto-commit dirty files before merge (sprint 23)
  • Merge branch 'agentC-daily-email'
  • chore: auto-commit dirty files before merge (sprint 23)
  • Merge branch 'agentA-sms-booking-alert'
  • chore: pre-merge cleanup
  • agentA-sms-booking-alert: implement sprint 23 tasks
  • feat: SMS booking alert to business owner (F-031)
  • agentC-daily-email: implement sprint 23 tasks
  • chore: add SMTP and daily email config to .env.example (F-030)
  • agentB-simple-dashboard: implement sprint 23 tasks
  • feat: add simple pilot dashboard (F-032)
  • Merge branch 'main' of https://github.com/davidbmar/phone-agent-scheduler into agentA-sms-booking-alert
  • chore: update backlog status for Sprints 20-22 deliveries + Sprint 23 brief
  • agentC-daily-email: implement sprint 23 tasks
  • feat: add daily email report for business owner (F-030)
  • chore: auto-commit before sprint 23
  • chore: Sprint 23 brief — SMS alerts + simple dashboard + daily email (pilot ready)
  • docs: backlog from excellence panel — F-030 email, F-031 SMS on booking, F-032 pilot mode
  • docs: Sprint 22 summary + Bezos/Jobs review + 5 new backlog items
  • Merge branch 'agentC-personality-tuning'
  • Merge branch 'agentB-metrics-dashboard'
  • Merge branch 'agentA-pilot-hardening'
  • chore: auto-commit dirty files before merge (sprint 22)
  • feat: add personality tuning UI — business name, voice, tone, verbosity (F-028)
  • agentA-pilot-hardening: implement sprint 22 tasks
  • feat: pilot hardening — health endpoint, watchdog, graceful calendar failure
  • agentB-metrics-dashboard: implement sprint 22 tasks
  • feat: add metrics dashboard with booking rate and 7-day call chart (F-025)
  • docs: Sprint 21 summary + Bezos/Jobs review + Sprint 22 brief
  • Merge branch 'agentC-escalation-handoff'
  • Merge branch 'agentB-caller-memory'
  • Merge branch 'agentA-call-log'
  • chore: auto-commit dirty files before merge (sprint 21)
  • agentA-call-log: implement sprint 21 tasks
  • feat: add browsable call log with transcripts and outcomes (F-024)
  • agentB-caller-memory: implement sprint 21 tasks
  • feat: F-026 caller memory — recognize repeat callers by phone number
  • agentC-escalation-handoff: implement sprint 21 tasks
  • feat: add human escalation handoff (F-027)
  • docs: Sprint 20 summary + Bezos/Jobs review + Sprint 21 brief
  • chore: pre-merge cleanup
  • Merge branch 'agentC-greeting-and-polish'
  • Merge branch 'agentB-latency-measurement'
  • Merge branch 'agentA-sms-confirmations'
  • chore: auto-commit dirty files before merge (sprint 20)
  • agentA-sms-confirmations: implement sprint 20 tasks
  • feat: SMS booking confirmations via Telnyx (F-018)
  • agentB-latency-measurement: implement sprint 20 tasks
  • feat: add latency measurement to voice pipeline (F-021)
  • agentC-greeting-and-polish: implement sprint 20 tasks
  • feat: shorten greeting to 7 words, polish end-of-call messages (F-029)
  • docs: Sprint 19 summary + Bezos/Jobs review + Sprint 20 brief
  • chore: auto-commit dirty files before merge (sprint 19)
  • chore: pre-merge cleanup
  • Merge branch 'agentC-handsfree-polish'
  • Merge branch 'agentB-phone-turn-taking'
  • Merge branch 'agentA-calendar-booking'
  • chore: auto-commit dirty files before merge (sprint 19)
  • agentB-phone-turn-taking: implement sprint 19 tasks
  • fix: complete turn-taking echo suppression + idle reprompt bug
  • agentA-calendar-booking: implement sprint 19 tasks
  • feat: wire calendar booking pipeline — URL logging, env defaults, integration test
  • agentC-handsfree-polish: implement sprint 19 tasks
  • feat: handsfree voice mode polish — waveform, error handling, audio fallback, transcript
  • Merge remote-tracking branch 'origin/main' into agentA-calendar-booking
  • Merge remote-tracking branch 'origin/main' into agentC-handsfree-polish
  • Merge branch 'main' of https://github.com/davidbmar/phone-agent-scheduler into agentB-phone-turn-taking
  • docs: Sprint 18 summary + Bezos/Jobs product review + 7 new backlog items
  • chore: auto-commit before sprint 19
  • chore: Sprint 19 brief — real phone booking + turn-taking + handsfree polish
  • docs: backlog from excellence panel — F-026 phone booking, F-027 card editor, F-028 A/B testing
  • chore: archive Sprint 18 brief + clean stale branches
  • fix: handsfree uses browser SpeechRecognition for instant VAD
  • feat: Handsfree voice mode — browser mic → STT → FSM → TTS → speaker loop
  • fix: auth modal hidden by default — duplicate display:flex was overriding display:none
  • fix: use AudioContext for TTS playback — bypasses Chrome autoplay policy
  • fix: exempt chat, models, voices, stt endpoints from auth for dev testing
  • fix: TTS playback uses playTTS + plain fetch (no auth needed)
  • fix: Call button uses Kokoro TTS + auto-play enabled
123 commits

File Browsing, Morning Briefs, and Voice Playbooks Ship

The portfolio added workspace file management in everyone-ai, plus an Enhanced Morning Brief pipeline with narrative prose, clickable footnotes, S3/static-site support, signal deduplication, and talking points in intelligence-briefing-toolkit. Phone-agent-scheduler gained a browser STT→FSM→TTS voice loop, a live editable playbook/test panel, stronger booking/data extraction, conversation-quality fixes, and expanded FSM validation tests.

everyone-ai 6intelligence-briefing-toolkit 52phone-agent-scheduler 64tool-RAG-for-split-personalities 1
▸ how to apply & commit details

How you can apply this

  • Build a reusable workspace file drawer: combine browse/upload/download controls with a two-pane slide-over layout.
  • Expose terminal logs safely: add a log API/viewer and filter probe strings on every WebSocket path.
  • Turn briefs into reusable artifacts: compose narrative memos with clickable footnotes, persist history, and push static outputs to S3.
  • Improve voice-agent iteration: pair a live playbook editor with chat/voice testing, FSM state polling, and scenario-based validation.

Commits

everyone-ai
  • feat: file manager slide-over drawer with two-pane layout
  • feat: file browser panel — browse, upload, download workspace files from portal
  • feat: terminal output log API + right-panel viewer + Claude skill download
  • fix: B-909 filter probe string in both terminal WebSocket paths
  • fix: B-909 terminal probe string leak + B-910 false workspace paused message
  • Add B-909 and B-910 to backlog: terminal probe string leak and false paused message
intelligence-briefing-toolkit
  • chore: auto-commit before sprint 18
  • docs: Sprint 18 brief + 4 backlog items (B-039, B-040, F-028, F-029)
  • fix: render brief prose as HTML not raw markdown, fix footnote field names
  • fix: EnhancedBrief use allFootnotes not brief.footnotes
  • fix: EnhancedBrief handles object-format sections from API
  • chore: Sprint 17 archive + notes
  • Merge branch 'agentB-brief-frontend'
  • Merge branch 'agentC-daily-integration'
  • Merge branch 'agentA-brief-backend'
  • agentC-daily-integration: implement sprint 17 tasks
  • feat: integrate enhanced morning brief into daily pipeline and S3 push
  • feat: Enhanced Morning Brief backend — BriefComposer, BriefHistory, REST endpoint
  • agentB-brief-frontend: implement sprint 17 tasks
  • feat: Enhanced Morning Brief — narrative memo with clickable footnotes
  • docs: Sprint 17 brief — Enhanced Morning Brief with narrative prose + footnotes
  • docs: Bezos/Jobs deep UX review — 6 backlog items (B-035 to B-038, F-026, F-027)
  • Merge branch 'agentB-talking-points'
  • Merge branch 'agentC-docs-update'
  • Merge branch 'agentA-s3-static-fixes'
  • agentB-talking-points: implement sprint 16 tasks
  • feat: talking points generator + S3 frontend fixes (B-032, B-033, B-034, F-023)
  • agentC-docs-update: implement sprint 16 tasks
  • docs: update roadmap, backlog, and session doc for Sprint 16
  • agentA-s3-static-fixes: implement sprint 16 tasks
  • fix: add topics, brief, and summary-all dumps to S3 push script
  • chore: write Sprint 16 brief — S3 fixes + talking points generator
  • docs: Sprint 15 narrative summary
  • docs: campaign manager review — 10 backlog items (B-030 to B-034, F-021 to F-025)
  • fix: timestamp says "collected X ago" not bare time
  • fix: unverified icon → yellow yield sign (triangle), not question mark
  • feat: distinct icons for verification states
  • feat: tooltips on stat cards + verification badge legend on Wire feed
  • fix: backfill collected_at timestamps from pass file dates
  • feat: recency-first wire feed + S3 static site sorting
  • Merge branch 'agentB-detail-drawer'
  • Merge branch 'agentC-static-site-fixes'
  • Merge branch 'agentA-signal-dedup'
  • agentA-signal-dedup: implement sprint 15 tasks
  • feat: fuzzy signal dedup — merge near-identical signals via token overlap
  • agentB-detail-drawer: implement sprint 15 tasks
  • agentC-static-site-fixes: implement sprint 15 tasks
  • feat: inline signal detail drawer on Wire feed (F-019)
  • fix: change font-size from 140% to 100% to eliminate flash on page load (B-029)
  • docs: Sprint 15 brief — signal dedup, detail drawer, S3 fixes
  • docs: Jobs/Bezos product review — 5 backlog items (B-027 through B-029, F-019, F-020)
  • feat: source article links on Wire feed signals
  • fix: S3 push filters to Kansas Governor race only
  • fix: push-to-s3 dumps dailies + insights endpoints
  • feat: daily S3 push script + cron at 8:30 AM Central
  • feat: static mode fallback for S3 hosting
  • feat: full verification backfill data + sprint history
  • fix: propagate verified/source_quote from evidence to signals
phone-agent-scheduler
  • Merge branch 'agentC-conversation-quality'
  • Merge branch 'agentB-playbook-chat'
  • Merge branch 'agentA-browser-voice'
  • chore: auto-commit dirty files before merge (sprint 18)
  • agentC-conversation-quality: implement sprint 18 tasks
  • fix: conversation quality — 11/11 scenarios + 9/9 echo-back passing
  • agentA-browser-voice: implement sprint 18 tasks
  • feat: add browser voice endpoint — full STT→FSM→TTS loop
  • agentB-playbook-chat: implement sprint 18 tasks
  • feat: playbook test panel with chat bubbles, voice input/output
  • chore: Sprint 18 brief — browser voice + playbook chat + quality fixes
  • chore: save progress before Sprint 18 — merge playbook into chat UI
  • feat: split layout playbook — cards left, test conversation right
  • fix: rename step 1 to Greeting with full card fields and exits
  • fix: inline field editing saves to correct JSONL fields
  • feat: inline editable fields — click entry text or instructions to edit
  • feat: card-based playbook with entry text, instructions, exits, retry config
  • fix: playbook prompt editor uses same-origin proxy + green CURRENT STEP badge
  • feat: live prompt editor in playbook — edit prompts while on a call
  • fix: greeting intent loops to greet — small talk before business
  • feat: configurable voice timing — SPEECH_SILENCE_GAP, IDLE_REPROMPT_TIMEOUT, ECHO_TAIL_DURATION
  • feat: 20-second idle re-prompt + resolve days to calendar dates
  • fix: eliminate 1-turn-behind bug — clear audio buffer after TTS
  • fix: remove '— got it' from echo-back, cleaner join
  • feat: natural personality + conversational echo-back
  • test: add 9 echo-back validation tests — 9/9 passing
  • fix: code-level echo-back — prepend extracted data to responses
  • fix: add natural echo-back to all state prompts (F-025)
  • fix: rewrite all FSM prompts to match playbook — state-specific examples
  • feat: bigger step numbers + live phone call tracking on playbook
  • fix: playbook test box uses same-origin proxy instead of cross-origin fetch
  • feat: add /playbook — visual phone call script with live FSM testing
  • fix: WorkflowGraph parser handles dict format from fsm_server.py
  • feat: expandable FSM state cards in workflow debug panel
  • docs: B-019 — generic preamble examples break non-greet states (Critical)
  • Merge branch 'agentC-live-call-panel'
  • Merge branch 'agentB-pricing-and-questions'
  • Merge branch 'agentA-name-phone-extraction'
  • chore: auto-commit dirty files before merge (sprint 17)
  • agentB-pricing-and-questions: implement sprint 17 tasks
  • fix: answer pricing and hours questions with actual data (test_08)
  • docs: add 4 backlog items from live call analysis
  • agentA-name-phone-extraction: implement sprint 17 tasks
  • fix: add fallback name/phone extraction for confirm_booking flow
  • agentC-live-call-panel: implement sprint 17 tasks
  • feat: wire live FSM state polling to workflow panel for phone calls
  • chore: auto-commit before sprint 17
  • chore: write Sprint 17 brief — 10/10 tests + live call panel
  • test: fix cancel test assertion — no_appointment_found is valid cancel path
  • Merge branch 'agentC-caller-experience'
  • Merge branch 'agentB-data-extraction'
  • Merge branch 'agentA-booking-pipeline'
  • chore: auto-commit dirty files before merge (sprint 16)
  • agentA-booking-pipeline: implement sprint 16 tasks
  • fix: booking pipeline end-to-end — tool execution, event_id check, 10/10 tests
  • agentC-caller-experience: implement sprint 16 tasks
  • feat: shorter greeting + echo-back in FSM prompts (F-024, F-025)
  • test: rewrite 10 FSM tests as multi-turn conversations — 4/10 passing
  • agentB-data-extraction: implement sprint 16 tasks
  • fix: add fallback regex extraction for day/time/service (B-014)
  • chore: auto-commit before sprint 16
  • chore: write Sprint 16 brief + backlog from excellence panel review
  • test: add 10 FSM scenario tests — 7/10 passing
  • fix: reset done FSM sessions instead of reusing them
tool-RAG-for-split-personalities
  • feat: rewrite all 6 personas as intelligence agents matching IBT evidence
138 commits

Verification Pipelines, Voice FSMs, and Project Dashboards Mature

Across three projects, the day focused on making automated workflows visible, recoverable, and easier to operate: claim verification gained backfill, UI, digest, and homepage stats; the phone scheduler hardened FSM execution and server behavior; and the ADR dashboard became a multi-project command center. The reusable pattern is consistent: pair backend automation with explicit CLI/API entry points, user-facing status surfaces, and debug views that expose what the system is doing.

intelligence-briefing-toolkit 67phone-agent-scheduler 32traceable-searchable-adr-memory-index 39
▸ how to apply & commit details

How you can apply this

  • Built a claim verification stack with evidence, counter-evidence, backfill CLI/REST/runner paths, auto-verify controls, and frontend badges that other apps can reuse for auditable content pipelines.
  • Turned verification results into product surfaces: homepage candidate stats, polished newsletter-style Daily Digest rendering, source quotes, contradiction states, skeleton loading, and localStorage caching.
  • Hardened a voice/FSM scheduler by explicitly executing missed tool states, removing internal monologue from responses, waiting for TTS before listening, and adding workflow proxy/debug panels.
  • Upgraded a project dashboard with grouped navigation, all-projects command center, live activity stream, per-stage action menus, branch-ahead stage detection, display names, and responsive overview fixes.

Commits

intelligence-briefing-toolkit
  • chore: Sprint 14 merge — digest polish + homepage verification stats
  • Merge branch 'agentB-homepage-verification'
  • Merge branch 'agentC-digest-polish'
  • agentC-digest-polish: implement sprint 14 tasks
  • fix: render Daily Digest as polished newsletter with category badges
  • agentB-homepage-verification: implement sprint 14 tasks
  • feat: add verification stats to homepage candidate cards
  • chore: Sprint 14 brief + PM review backlog + narrative summary
  • feat: real verification data for billings-gov (20 claims verified)
  • Merge branch 'agentA-execute-backfill'
  • Merge branch 'agentC-s3-publish'
  • Merge branch 'agentB-zoom-reset'
  • agentB-zoom-reset: implement sprint 13 tasks
  • agentA-execute-backfill: implement sprint 13 tasks
  • agentC-s3-publish: implement sprint 13 tasks
  • docs: Sprint 13 brief — EXECUTE verification backfill, zoom reset, S3 publish
  • docs: Sprint 12 eval — B-025 zoom localStorage reset needed
  • chore: Sprint 12 merge — dist rebuild + PROJECT_STATUS
  • Merge branch 'agentA-run-backfill'
  • Merge branch 'agentB-zoom-title-fix'
  • Merge branch 'agentC-docs-lifecycle'
  • agentC-docs-lifecycle: implement sprint 12 tasks
  • docs: update lifecycle docs for Sprints 9-11 completion
  • agentB-zoom-title-fix: implement sprint 12 tasks
  • fix: use project title for HomePage heading, rebuild dist (B-023, B-024)
  • agentA-run-backfill: implement sprint 12 tasks
  • feat: add verification backfill runner script (F-015)
  • docs: Sprint 12 brief — verification backfill, zoom fix, lifecycle update
  • docs: Sprint 11 evaluation — Bezos/Jobs backlog (F-015, B-024)
  • chore: Sprint 11 merge — rebuild dist + PROJECT_STATUS
  • fix: config tests use _env_file=None to prevent .env interference
  • Merge branch 'agentC-frontend-polish'
  • Merge branch 'agentA-auto-verify-pipeline'
  • Merge branch 'agentB-config-fixes'
  • agentA-auto-verify-pipeline: implement sprint 11 tasks
  • agentB-config-fixes: implement sprint 11 tasks
  • feat: auto-verify pipeline with --no-verify flag (F-013)
  • fix: safe IntelConfig defaults and validate() method (B-022, B-023)
  • agentC-frontend-polish: implement sprint 11 tasks
  • feat: skeleton loading screens and localStorage candidate caching (F-014)
  • docs: Sprint 11 brief — auto-verify pipeline, config safety, frontend polish
  • docs: Sprint 10 evaluation — Bezos/Jobs backlog (B-022, B-023, F-013, F-014)
  • fix: revert lazy app proxy — breaks ASGI protocol
  • chore: rebuild frontend dist after sprint 10 merge
  • Merge branch 'agentB-ui-polish'
  • Merge branch 'agentA-verification-backfill'
  • Merge branch 'agentC-remaining-bugfixes'
  • agentA-verification-backfill: implement sprint 10 tasks
  • feat: add verification backfill pipeline, CLI command, and REST endpoint (F-011)
  • agentB-ui-polish: implement sprint 10 tasks
  • agentC-remaining-bugfixes: implement sprint 10 tasks
  • feat: three-state verification badges, dynamic title, dist rebuild (B-021, F-012, B-020)
  • chore: rebuild frontend dist after bugfixes
  • fix: resolve remaining bugs B-016 through B-019
  • docs: Sprint 10 brief — verification backfill, UI polish, remaining bugfixes
  • docs: add Sprint 9 evaluation backlog items (B-020, B-021, F-011, F-012)
  • chore: rebuild frontend dist after sprint 9 merge
  • Merge branch 'agentB-verification-ui'
  • Merge branch 'agentA-verified-pipeline'
  • fix: 3 critical bugs + lifecycle docs + seed docs + backlog + sprint brief
  • Merge branch 'agentC-bugfixes'
  • agentA-verified-pipeline: implement sprint 9 tasks
  • feat: add claim verification, evidence extension, and counter-evidence pipeline
  • agentB-verification-ui: implement sprint 9 tasks
  • feat: add verification status, contradictions, and source quotes to frontend
  • agentC-bugfixes: implement sprint 9 tasks
  • fix: resolve 6 frontend bugs (B-010 through B-015)
phone-agent-scheduler
  • Merge branch 'agentC-server-stability'
  • Merge branch 'agentB-monologue-fix'
  • Merge branch 'agentA-tool-execution'
  • chore: auto-commit dirty files before merge (sprint 15)
  • agentA-tool-execution: implement sprint 15 tasks
  • fix: execute FSM tool states explicitly when VoiceSession misses them (B-012)
  • agentB-monologue-fix: implement sprint 15 tasks
  • agentC-server-stability: implement sprint 15 tasks
  • fix: eliminate internal monologue from phone responses (F-023)
  • fix: harden server against missing optional deps — no endpoint returns 500
  • chore: auto-commit before sprint 15
  • chore: write Sprint 15 brief — tool execution + monologue fix + stability
  • fix: workflow panel shows for all sessions + backlog items for Sprint 15
  • fix: exempt history, conversations, caller endpoints from auth
  • fix: eliminate internal monologue from phone responses
  • fix: wait for TTS playback to finish before listening for speech
  • fix: switch FSM pipeline to fsm_server.py (port 1206) with calendar tools
  • fix: Cohere STT default, skip warmup for inactive engine, increase history rate limit
  • chore: gitignore venv and playwright artifacts
  • fix: wire FSM bridge to web chat + fix API compatibility
  • chore: add gstack skill routing rules to CLAUDE.md
  • Merge branch 'agentC-startup-fixes'
  • Merge branch 'agentB-fsm-debug-panel'
  • Merge branch 'agentA-workflow-proxy'
  • chore: auto-commit dirty files before merge (sprint 14)
  • feat: replace FSM pill bar with vertical flow debug panel
  • agentC-startup-fixes: implement sprint 14 tasks
  • fix: startup reliability — broken venv detection, multi-repo setup.sh, correct module paths
  • agentA-workflow-proxy: implement sprint 14 tasks
  • feat: add /api/fsm/workflow proxy endpoint for FSM debug panel
  • chore: auto-commit before sprint 14
  • chore: write Sprint 14 brief — FSM debug panel + startup fixes
traceable-searchable-adr-memory-index
  • fix(qa): ISSUE-001 — Findings page crash: Projects.getActiveRoot is not a function
  • chore: clean up stale lock file and sprint timing
  • chore: add gstack skill routing rules to CLAUDE.md
  • fix: reorder sidebar — Lifecycle before Sprint (chronological order)
  • feat: Afterburner commands (green) + gstack skills (purple) in stage actions
  • feat: gstack specialist skills integrated into dashboard stage actions
  • fix: pipeline bar renders for all projects + display names + docsDir fixes
  • docs: Sprint 22 narrative summary — the GPS finally works
  • Merge branch 'agentB-responsive-overview'
  • Merge branch 'agentA-stage-detection-fix'
  • agentA-stage-detection-fix: implement sprint 22 tasks
  • fix: rewrite stage detection to check branches ahead of main, not just existence
  • agentB-responsive-overview: implement sprint 22 tasks
  • fix: responsive overview — stat cards wrap, no horizontal overflow
  • chore: write Sprint 22 brief — stage detection fix + responsive overview
  • docs: Sprint 21 narrative summary — the dashboard gets a name
  • Merge branch 'agentB-display-names'
  • Merge branch 'agentA-ux-polish'
  • agentA-ux-polish: implement sprint 21 tasks
  • fix: UX polish — chat bar overlap, stage detection, sprint display, services badge
  • agentB-display-names: implement sprint 21 tasks
  • feat: add displayName support for project selector, breadcrumb, and info card (F-046, F-048)
  • chore: Sprint 21 brief + UX review backlog updates
  • docs: Sprint 20 narrative summary — agents stop being invisible
  • Merge branch 'agentB-stage-actions'
  • Merge branch 'agentA-live-stream'
  • agentA-live-stream: implement sprint 20 tasks
  • feat: live activity stream for sprint monitoring
  • agentB-stage-actions: implement sprint 20 tasks
  • feat: add per-stage action menus to pipeline context card (F-044)
  • chore: write Sprint 20 brief — live activity stream + stage actions
  • docs: Sprint 19 narrative summary — the GPS comes alive
  • Merge branch 'agentB-all-projects-home'
  • Merge branch 'agentA-nav-consolidation'
  • agentA-nav-consolidation: implement sprint 19 tasks
  • feat: consolidate sidebar nav from 19 flat links into 6 grouped categories (F-039)
  • agentB-all-projects-home: implement sprint 19 tasks
  • feat: add all-projects command center view (F-039, F-041, F-042)
  • chore: write Sprint 19 brief — nav consolidation + multi-project home
120 commits

Phone Scheduling FSM Reaches Real Calendar Booking

Across phone-agent-scheduler, FSM-generic, and phone-agent-keiko-tv, the scheduling FSM was pushed from workflow prototype to real Google Calendar booking through web chat, Telnyx audio, and Keiko-TV bridge paths. The day also hardened parsing, tests, docs, and operator visibility while shipping richer navigation and project-state/service views in adjacent tools.

FSM-generic 10cal-provider 1intelligence-briefing-toolkit 2phone-agent-keiko-tv 3phone-agent-scheduler 78traceable-searchable-adr-memory-index 26
▸ how to apply & commit details

How you can apply this

  • Build a reusable scheduling core as a 16-state FSM, with conversation and tool-calling roles split and calendar tools exposed through web chat and phone bridges.
  • Reuse product-specific integrations by keeping personality, data, and feature flags in the host app while sharing FSM-generic calendar and Telnyx logic.
  • Harden voice booking with time-normalization fallbacks, JSON stripping before TTS, expanded confirmation handling, and try/catch wrappers around optional tools.
  • Add operational confidence with stress tests, regression/full-stack suites, run-all/stop-all scripts, FSM state panels, and service/project-state dashboards.

Commits

FSM-generic
  • fix: sync robust time normalization from phone-agent-scheduler
  • fix: sync calendar tools + workflow from phone-agent-scheduler
  • fix: Kokoro needs voices_path + TELNYX_SAMPLE_RATE constant + numpy imports
  • fix: add numpy import + install kokoro TTS deps for phone audio
  • fix: use /ws/media path for Telnyx WebSocket (matches existing Cloudflare + Telnyx config)
  • fix: rewrite Telnyx handler — use ShellRouter + extensive debug logging
  • MILESTONE: FSM-generic books real Google Calendar appointment via native API
  • fix: wrap research/social tools in try/except — scheduling works without them
  • fix: skip WebContentTool when config not available
  • feat: Telnyx phone integration — scheduling workflow + calendar tools + voice channel
cal-provider
  • feat: accept rich description from booking context
intelligence-briefing-toolkit
  • Merge branch 'main' of https://github.com/davidbmar/intelligence-briefing-toolkit
  • feat: home page, date/time hierarchy, candidate nav across all views
phone-agent-keiko-tv
  • Merge branch 'sprint13-fsm-integration'
  • feat: FSM scheduling integration — bridge + personality + data
  • feat: add FSM-generic scheduling integration with env-var feature flags
phone-agent-scheduler
  • fix: robust time normalization — handles 3pm, 8AM, 8:00 AM formats
  • fix: use time_preference fallback in booking tool — 23/25 stress tests passing (was 19)
  • fix: recreate venv — 8/8 FSM booking tests passing (64s)
  • Sprint 13 complete — integration done, 24 tests, architecture docs
  • Merge branch 'agentC-lifecycle-update'
  • Merge branch 'agentB-full-test-suite'
  • Merge branch 'agentA-apply-to-keiko'
  • chore: auto-commit dirty files before merge (sprint 13)
  • agentA-apply-to-keiko: implement sprint 13 tasks
  • feat: apply FSM integration to keiko-tv — Sprint 13 agentA complete
  • agentC-lifecycle-update: implement sprint 13 tasks
  • docs: update lifecycle docs — current-state, README scheduling mode, ARCHITECTURE reference
  • agentB-full-test-suite: implement sprint 13 tasks
  • test: add full-stack test suite (32 tests) and close resolved backlog items
  • chore: write Sprint 13 brief — apply to keiko + full tests + lifecycle docs
  • docs: Sprint 12 summary — feature-complete integration, 23 test files, ready to ship
  • Merge branch 'agentC-regression-tests'
  • Merge branch 'agentB-warmth-improvements'
  • Merge branch 'agentA-keiko-integration'
  • chore: auto-commit dirty files before merge (sprint 12)
  • agentC-regression-tests: implement sprint 12 tasks
  • feat: add 7 regression tests + update roadmap through Sprint 12
  • agentB-warmth-improvements: implement sprint 12 tasks
  • feat: add first-call warmth improvements (F-017)
  • agentA-keiko-integration: implement sprint 12 tasks
  • fix: expand confirmation keywords + prevent false intent on greetings
  • chore: write Sprint 12 brief — keiko integration + warmth + regression tests
  • docs: Sprint 11 summary — FSM state panel + run-all.sh + integration tests
  • Merge branch 'agentC-integration-tests'
  • Merge branch 'agentB-reliability'
  • Merge branch 'agentA-fsm-state-panel'
  • chore: auto-commit dirty files before merge (sprint 11)
  • agentA-fsm-state-panel: implement sprint 11 tasks
  • feat: add live FSM state panel endpoint and wire UI visibility
  • agentC-integration-tests: implement sprint 11 tasks
  • agentB-reliability: implement sprint 11 tasks
  • feat: add 7 FSM-via-keiko integration tests (Sprint 11 agentC)
  • feat: add run-all.sh and stop-all.sh for full-stack reliability
  • chore: write Sprint 11 brief — FSM state panel + reliability + integration tests
  • docs: Sprint 10 narrative summary — FSM wired to keiko-tv + text cleaner + product review
  • Merge branch 'agentC-product-review'
  • Merge branch 'agentB-json-stripping'
  • Merge branch 'agentA-wire-fsm-to-keiko'
  • chore: auto-commit dirty files before merge (sprint 10)
  • agentC-product-review: implement sprint 10 tasks
  • docs: Sprint 10 product review — Bezos/Jobs lenses, 7 backlog items
  • agentA-wire-fsm-to-keiko: implement sprint 10 tasks
  • feat: wire FSM bridge to keiko-tv — personality switch + env vars
  • agentB-json-stripping: implement sprint 10 tasks
  • feat: aggressive JSON stripping before TTS (F-016)
  • chore: write Sprint 10 brief — wire FSM to keiko-tv phone + JSON fix + product review
  • backlog: 6 items from FSM phone integration — B-010, B-011, F-012 through F-016
  • docs: Sprint 9 narrative summary + cleanup
  • Merge branch 'agentC-fsm-setup'
  • Merge branch 'agentB-scheduler-personality'
  • Merge branch 'agentA-fsm-bridge'
  • chore: auto-commit dirty files before merge (sprint 9)
  • agentC-fsm-setup: implement sprint 9 tasks
  • feat: add phone integration docs and FSM setup/run scripts
  • agentB-scheduler-personality: implement sprint 9 tasks
  • agentA-fsm-bridge: implement sprint 9 tasks
  • chore: mark agentB brief as implemented — scheduler personality in keiko-tv
  • feat: FSM bridge — route keiko-tv audio through FSM-generic
  • chore: write Sprint 9 brief — wire keiko-tv audio to FSM-generic brain
  • docs: update roadmap + current-state for FSM integration (13 iterations)
  • feat: rich calendar events with summary + transcript
  • feat: 25-scenario FSM stress test — 22/25 passing (88%)
  • fix: better JSON stripping + name/phone extraction + streaming force-advance
  • 8/8 FSM TESTS PASSING — 5 bookings + 2 collisions + availability check
  • ALL 3 FSM TESTS PASSING — bookings land on Google Calendar
  • feat: automated FSM booking test suite — 2/3 passing
  • feat: live FSM state visualization panel in web chat UI
  • feat: FSM HTTP server — wraps VoiceSession as web chat API
  • MILESTONE: FSM books real Google Calendar appointment end-to-end
  • iteration 4: FSM tool execution WORKING — find_slots queries real Google Calendar
  • iteration 3: FSM state transitions WORKING
  • feat: FSM calendar tools + workflow update — tools work, session runs greeting
  • feat: scheduling FSM workflow — 16 states, Haiku for conversation + Sonnet for tool calling
traceable-searchable-adr-memory-index
  • docs: Sprint 18 narrative summary
  • Merge branch 'agentC-findings-protocol'
  • Merge branch 'agentC-findings-protocol'
  • Merge branch 'agentB-project-state-context'
  • Merge branch 'agentA-fix-services'
  • chore: pre-merge cleanup
  • agentC-findings-protocol: implement sprint 18 tasks
  • feat: add structured findings protocol for specialist agents (F-043)
  • agentA-fix-services: implement sprint 18 tasks
  • fix: wire up Services view end-to-end (B-013, B-015, B-016, B-017)
  • feat: populate /api/project-state with rich summaries and wire pipeline bar to overview
  • chore: write Sprint 18 brief + update backlog from post-sprint review
  • docs: Sprint 17 narrative summary
  • Merge branch 'agentC-service-panel'
  • Merge branch 'agentB-pipeline-components'
  • Merge branch 'agentA-role-profiles'
  • agentA-role-profiles: implement sprint 17 tasks
  • agentC-service-panel: implement sprint 17 tasks
  • agentB-pipeline-components: implement sprint 17 tasks
  • feat: add pipeline bar, context card, project-state API, and role badges
  • feat: add service management panel with process detection and controls
  • feat: add specialist role profile system and fix path portability
  • chore: auto-commit before sprint 17
  • chore: write Sprint 17 brief + seed files + Vision + Roadmap
  • feat: seed docs get dedicated pages in published site
  • fix: publish preview serves CSS/JS by caching projectRoot for sub-resource requests
205 commits

Scheduling Agents Hardened From OAuth to Audio

The day turned prototypes into usable scheduling systems: cal-provider added Google OAuth 2.0, encrypted token storage, Sonnet-powered two-phase booking, pending-booking persistence, overlap checks, and security middleware. phone-agent-scheduler and the RAG persona tool added real calendar/web-chat paths, scenario-driven tests, latency tracking, domain-aware evidence, and Piper TTS chat audio.

cal-provider 18phone-agent-scheduler 100tool-RAG-for-split-personalities 87
▸ how to apply & commit details

How you can apply this

  • Use two-phase booking with persisted pending records, proposal-time overlap checks, confirm-time double-booking prevention, and alternative slots.
  • Wrap calendar integrations with OAuth, encrypted token storage, API key auth, rate limits, audit logging, CORS controls, and webhook verification.
  • Make scheduling QA reusable with scenario JSON, mock calendar servers, Playwright browser tests, audio harnesses, and Google Calendar collision checks.
  • Keep multi-domain AI apps isolated by passing domain through APIs/WebSockets, filtering conversations by domain, and injecting numbered evidence citations.

Commits

cal-provider
  • fix: collision detection at proposal time + offer alternatives
  • fix: file-based pending bookings + gitignore .env
  • fix: persist pending bookings to file + proper import + overlap detection
  • fix: proper slot overlap detection + double-booking prevention at confirm time
  • fix: booking flow — proper keyword ordering + real Google Calendar integration
  • docs: Sprint 1 narrative summary + cleanup
  • chore: pre-merge cleanup
  • Merge branch 'agentC-security-middleware'
  • Merge branch 'agentB-sonnet-endpoint'
  • Merge branch 'agentA-oauth-provider'
  • agentB-sonnet-endpoint: implement sprint 1 tasks
  • Add Sonnet-powered calendar agent with two-phase commit
  • agentA-oauth-provider: implement sprint 1 tasks
  • agentC-security-middleware: implement sprint 1 tasks
  • feat: add Google OAuth 2.0 calendar provider with encrypted token storage
  • Add security middleware: API key auth, rate limiting, audit logging, OAuth endpoints
  • chore: write Sprint 1 brief — OAuth + Sonnet calendar agent + security
  • chore: install Afterburner sprint scaffolding
phone-agent-scheduler
  • fix: confirm_token key name mismatch — bookings now land on Google Calendar from web chat
  • fix: auto-confirm bookings in web chat — skip two-phase for text conversations
  • feat: data-driven test runner — edit scenarios.json to add tests, run_scenarios.py executes them
  • feat: add collision test scenarios to test suite
  • fix: detailed confirm logging + Playwright browser tests
  • feat: add scheduling test suite — books full day, verifies on Google Calendar
  • fix: allow booking future appointments when business is closed
  • fix: context-aware scheduling — detect times and confirmations in scheduling mode
  • fix: widen intent patterns + wire calendar into web chat for testing
  • feat: wire calendar integration into web chat path + fix mock server Ctrl+C
  • fix: implement knowledge builder — was left as stub from Sprint 1 merge conflict
  • chore: clean up Sprint 7 artifacts
  • docs: Sprint 7 narrative summary — backlog zero
  • Merge branch 'agentC-ui-final-polish'
  • Merge branch 'agentB-personality-tuning'
  • Merge branch 'agentA-latency-and-tracking'
  • chore: auto-commit dirty files before merge (sprint 7)
  • agentB-personality-tuning: implement sprint 7 tasks
  • feat: personality tuning — edge cases, conversation flow, and context tracking
  • agentC-ui-final-polish: implement sprint 7 tasks
  • feat: UI final polish — warmup animations, scheduling distinction, checklist tests
  • agentA-latency-and-tracking: implement sprint 7 tasks
  • feat: add LatencyTracker with budget checks and CSV export (F-002, F-004)
  • chore: write Sprint 7 brief — latency tracking + personality tuning + UI final polish
  • docs: Sprint 6 narrative summary + cleanup
  • Merge branch 'agentC-pilot-checklist'
  • Merge branch 'agentB-ui-polish'
  • Merge branch 'agentA-security-fixes'
  • chore: auto-commit dirty files before merge (sprint 6)
  • agentA-security-fixes: implement sprint 6 tasks
  • agentB-ui-polish: implement sprint 6 tasks
  • fix: close critical security holes — auth bypass, webhook bypass, body limits, rate limits, CORS
  • feat: UI polish — error handling, mobile layout, header consolidation
  • agentC-pilot-checklist: implement sprint 6 tasks
  • docs: add README, update pilot checklist, current-state, and roadmap for Sprint 6
  • chore: write Sprint 6 brief — security fixes + UI polish + pilot checklist
  • docs: Sprint 5 narrative summary + cleanup
  • Merge branch 'agentC-pilot-readiness'
  • Merge branch 'agentB-security-audit'
  • Merge branch 'agentA-quality-review'
  • chore: auto-commit dirty files before merge (sprint 5)
  • agentC-pilot-readiness: implement sprint 5 tasks
  • docs: add deployment guide, setup script, and pilot readiness checklist
  • agentB-security-audit: implement sprint 5 tasks
  • security: add penetration test suite and audit findings (20 tests, 5 vulns)
  • agentA-quality-review: implement sprint 5 tasks
  • feat: Sprint 5 quality review — UI smoke tests + 6 backlog items + 3 resolved
  • chore: write Sprint 5 brief — quality review + security audit + pilot readiness
  • docs: Sprint 4 narrative summary + cleanup
  • Merge branch 'agentC-audio-test-harness'
  • Merge branch 'agentB-business-hours-ui-fixes'
  • Merge branch 'agentA-api-security'
  • chore: auto-commit dirty files before merge (sprint 4)
  • agentA-api-security: implement sprint 4 tasks
  • feat: add API auth, rate limiting, CORS, security headers, and webhook verification
  • agentB-business-hours-ui-fixes: implement sprint 4 tasks
  • feat: add business hours enforcement (F-003) + fix play button (B-001)
  • agentC-audio-test-harness: implement sprint 4 tasks
  • feat: add audio pipeline test harness and conversation tests
  • chore: write Sprint 4 brief — security hardening + business hours + audio test harness
  • docs: Sprint 3 narrative summary + cleanup
  • Merge branch 'agentC-integration-tests'
  • Merge branch 'agentB-system-prompt-calendar'
  • Merge branch 'agentA-booking-flow'
  • chore: auto-commit dirty files before merge (sprint 3)
  • agentC-integration-tests: implement sprint 3 tasks
  • feat: add integration tests, confirmation module, and backlog items
  • agentA-booking-flow: implement sprint 3 tasks
  • feat: wire booking flow — intent detection to cal-provider with two-phase confirmation
  • agentB-system-prompt-calendar: implement sprint 3 tasks
  • feat: add calendar rules to system prompt and UI status indicator
  • chore: auto-commit before sprint 3
  • chore: write Sprint 3 brief — booking flow integration + tests + backlog
  • docs: Sprint 2 narrative summary
  • Merge branch 'agentC-test-harness'
  • Merge branch 'agentB-calendar-client'
  • Merge branch 'agentA-intent-detection'
  • chore: auto-commit dirty files before merge (sprint 2)
  • agentB-calendar-client: implement sprint 2 tasks
  • agentC-test-harness: implement sprint 2 tasks
  • feat: add CalendarClient HTTP client with mock server and tests
  • feat: add end-to-end test harness for voice pipeline
  • agentA-intent-detection: implement sprint 2 tasks
  • feat: add regex-based calendar intent detection
  • chore: auto-commit before sprint 2
  • chore: write Sprint 2 brief — intent detection, calendar client, test harness
  • docs: Sprint 1 narrative summary
  • Merge branch 'agentC-scheduling-knowledge'
  • Merge branch 'agentB-scheduling-personality'
  • Merge branch 'agentA-voice-pipeline-fork'
  • agentA-voice-pipeline-fork: implement sprint 1 tasks
  • chore: add .gitignore, remove cached .pyc files
  • feat: fork voice pipeline from keiko-tv as scheduling assistant
  • agentC-scheduling-knowledge: implement sprint 1 tasks
  • agentB-scheduling-personality: implement sprint 1 tasks
  • feat: add scheduling knowledge base with services, hours, and FAQ
  • feat: add scheduler-support personality and update gateway default
  • chore: auto-commit before sprint
  • chore: write Sprint 1 brief — fork voice pipeline + scheduling personality
  • Initial commit: Afterburner scaffolding
tool-RAG-for-split-personalities
  • fix: increase TTS text limit from 500 to 5000 chars for full response narration
  • fix: add blob: to CSP default-src for audio download
  • fix: download button uses programmatic click to bypass CSP blob restriction
  • fix: sync worldview field with system_prompt — generator uses worldview
  • feat: rewrite all 6 personas for actionable campaign intelligence
  • feat: download and share buttons for chat audio
  • feat: campaign strategist questions + updated sample questions
  • fix: tune personas to use available evidence + increase retrieval to 10 items
  • feat: custom audio player with gradient button, progress bar, and timer
  • fix: use visible <audio controls> for chat audio playback
  • fix: add audio debug logging + bump chat.js to v190
  • fix: CSP blocked all inline JavaScript and audio blob URLs
  • fix: disable service worker entirely — was blocking JS and audio
  • fix: use blob URLs instead of data URIs for audio playback
  • chore: audio verified working — Stop button visible in Playwright screenshot
  • test: 28 audio pipeline tests — all pass
  • Add Sprint 185 project status document
  • fix: synthesize endpoint needs X-Domain header + correct response parsing
  • Merge branch 'agentC-audio-tests'
  • Merge branch 'agentA-chat-listen-button'
  • Merge branch 'agentB-synthesize-audio-endpoint'
  • chore: auto-commit dirty files before merge (sprint 185)
  • agentA-chat-listen-button: implement sprint 185 tasks
  • feat: add Listen button with /synthesize TTS fallback for chat audio (B-029)
  • agentC-audio-tests: implement sprint 185 tasks
  • test: add 17 audio synthesis tests for B-029 (Piper TTS)
  • agentB-synthesize-audio-endpoint: implement sprint 185 tasks
  • feat: domain-aware /synthesize endpoint + WebSocket audio events
  • chore: auto-commit before sprint 185
  • chore: write Sprint 185 brief — Fix Chat Audio with Piper TTS
  • docs: B-029 chat audio not working + Kansas Governor voice assignments
  • fix: show roundtable query text immediately when loading starts
  • chore: roundtable verified — all 6 Kansas Governor personas with evidence
  • fix: pass domain to roundtable evidence retrieval
  • fix: pass X-Domain header in roundtable fetch requests
  • docs: Sprint 183-184 status docs + comprehensive session summary
  • chore: evidence metadata fix verified — Attack Dog cites [1] Brownback evidence
  • fix: extract evidence metadata from nested 'metadata' dict
  • chore: remove test domain artifacts from domain list
  • docs: rewrite README for multi-domain platform with getting started guide
  • chore: remove runtime databases from git tracking
  • chore: end-of-session cleanup — Sprints 177-184 complete
  • chore: verified B-022 fix — clean domain switching confirmed via Playwright
  • fix: conversations sidebar filters by domain on switch (B-022)
  • Merge remote-tracking branch 'origin/agentC-domain-switch-tests'
  • Merge remote-tracking branch 'origin/agentB-conversation-domain-filter'
  • Merge sprint 184 branches
  • chore: auto-commit dirty files before merge (sprint 184)
  • fix: add domain filtering to conversations API (B-022)
  • test: add 12 domain switch isolation tests (B-022)
  • agentA-clean-domain-switch-ui: implement sprint 184 tasks
  • fix: hard-clear all UI state on domain switch (B-022)
  • chore: write Sprint 184 brief — Clean Domain Switch UX
  • chore: post-sprint 183 cleanup — War Room chat fully operational
  • fix: make ws_chat_stream.py domain-aware (the ACTUAL streaming endpoint)
  • fix: force-clear old service workers on page load
  • fix: bump service worker cache version to v183
  • Merge branch 'agentC-evidence-citation-tests'
  • Merge branch 'agentB-api-evidence-passthrough'
  • Merge branch 'agentA-fix-evidence-injection'
  • chore: auto-commit dirty files before merge (sprint 183)
  • agentA-fix-evidence-injection: implement sprint 183 tasks
  • fix: inject evidence into Claude API prompts with numbered citations
  • agentC-evidence-citation-tests: implement sprint 183 tasks
  • test: add 22 evidence citation tests for B-028
  • agentB-api-evidence-passthrough: implement sprint 183 tasks
  • fix: pass evidence details through API and WebSocket response envelopes
  • chore: auto-commit before sprint 183
  • chore: write Sprint 183 brief — Fix Evidence Injection
  • fix: pass domain to retriever so Kansas Governor queries its own evidence
  • chore: post-sprint 182 cleanup and archive
  • fix: PersonaCard.from_dict() and load_domain_persona_card() handle domain persona format
  • docs: Sprint 182 narrative — Domain-Aware Persona Card Loading
  • Merge branch 'agentC-sprint182-chat-tests'
  • Merge branch 'agentB-api-domain-persona-integration'
  • Merge branch 'agentA-domain-aware-persona-loading'
  • chore: resolve pre-merge
  • chore: auto-commit dirty files before merge (sprint 182)
  • agentC-sprint182-chat-tests: implement sprint 182 tasks
  • agentB-api-domain-persona-integration: implement sprint 182 tasks
  • agentA-domain-aware-persona-loading: implement sprint 182 tasks
  • feat: domain-aware persona card loading (B-027)
  • chore: auto-commit before sprint 182
  • chore: write Sprint 182 brief — Domain-Aware Persona Card Loading
  • docs: B-027 persona card loading not domain-aware (CRITICAL)
  • fix: pass domain parameter in WebSocket chat messages
  • docs: Sprint 181 narrative summary — Fix Critical Chat + UX Polish
447 commits

Sprint Factory: UX Polish, Streaming RAG, Faster Voice AI

The day concentrated on production hardening in everyone-ai, with repeated sprint work around app deletion, workspace health, stale/degraded app states, metrics, terminal UX, and E2E coverage. It also expanded reusable product surfaces across the portfolio: intelligence dashboards gained tooltips and responsive layouts, Tool-RAG added streaming/API/domain/campaign workflows with large test suites, and the phone agent gained model/STT switching plus startup warmups.

everyone-ai 211github-portfolio-search 1intelligence-briefing-toolkit 69phone-agent-keiko-tv 13tool-RAG-for-split-personalities 153
▸ how to apply & commit details

How you can apply this

  • Use state flags and closure-scoped confirmation state for destructive DOM actions; everyone-ai fixed delete crashes caused by nested listeners and wrong parent-node assumptions.
  • Surface operational health directly in product UI: everyone-ai added health summaries, stale/degraded popovers, restart actions, idle expiry signals, terminal reconnect/history, and scheduled E2E fleet tests.
  • Package RAG features as reusable platform layers: Tool-RAG added WebSocket streaming, API v2 with keys/rate limits, domain isolation, marketplace flows, analytics, sync health APIs, and campaign-specific candidate filtering.
  • Make dashboard polish reusable through components: intelligence-briefing-toolkit added Tooltip and EmptyState components, loading skeletons, offline indicators, responsive master-detail layouts, and visual hierarchy for signals/candidates.

Commits

everyone-ai
  • fix: hoist delete confirmation state to closure scope
  • fix: app delete confirmation uses state flag instead of nested listener
  • fix: app delete button crashes due to wrong parent node (B-1154 regression)
  • Add Sprint 203 project status document
  • Merge branch 'agentB-stale-entry-203'
  • Merge branch 'agentA-workspaces-blank-fix-203'
  • chore: auto-commit dirty files before merge (sprint 203)
  • agentB-stale-entry-203: implement sprint 203 tasks
  • agentA-workspaces-blank-fix-203: implement sprint 203 tasks
  • Add Sprint 202 project status document
  • Merge branch 'agentB-stale-entry'
  • Merge branch 'agentA-workspaces-blank-fix'
  • chore: auto-commit dirty files before merge (sprint 202)
  • agentB-stale-entry: implement sprint 202 tasks
  • agentA-workspaces-blank-fix: implement sprint 202 tasks
  • Merge branch 'agentB-stale-entry'
  • Merge branch 'agentA-workspaces-blank-fix'
  • chore: auto-commit dirty files before merge (sprint 202)
  • agentA-workspaces-blank-fix: implement sprint 202 tasks
  • agentB-stale-entry: implement sprint 202 tasks
  • Fix B-1182 stale app popover entry point + B-904 status display mapping
  • chore: Sprint 202 brief + Sprint 201 QA findings
  • Add Sprint 201 project status document
  • Merge branch 'agentB-popover-fixes'
  • Merge branch 'agentA-workspaces-next'
  • chore: auto-commit dirty files before merge (sprint 201)
  • agentB-popover-fixes: implement sprint 201 tasks
  • Fix popover stale-app separation, duration formatter, add patch-loss detector
  • agentA-workspaces-next: implement sprint 201 tasks
  • Sprint 201 agentA: filter context cue + loading min duration (F-318, B-1175)
  • chore: Sprint 201 brief + Sprint 200 QA findings
  • Add Sprint 200 project status document
  • Merge branch 'agentB-apps-triage'
  • Merge branch 'agentA-fleet-summary'
  • chore: auto-commit dirty files before merge (sprint 200)
  • agentB-apps-triage: implement sprint 200 tasks
  • Fix B-1176 floor guard on stopped count + F-317 degraded apps popover
  • agentA-fleet-summary: implement sprint 200 tasks
  • fix: B-1177 workspace health summary shows full fleet, not filtered view
  • chore: Sprint 200 brief + Sprint 199 QA backlog updates
  • docs: Sprint 199 narrative summary
  • fix: E2E openGuide() button filter + backlog updates
  • Add Sprint 199 project status document
  • Merge branch 'agentB-catalog-targets'
  • Merge branch 'agentA-workspaces-polish'
  • chore: auto-commit dirty files before merge (sprint 199)
  • agentB-catalog-targets: implement sprint 199 tasks
  • F-316: Apps health summary line above card grid in targets.js
  • agentA-workspaces-polish: implement sprint 199 tasks
  • Workspaces: consolidate dual search (B-1174) + health summary line (F-316)
  • chore: Sprint 199 brief + Sprint 198 QA findings
  • Add Sprint 198 project status document
  • Merge branch 'agentB-targets-catalog'
  • Merge branch 'agentA-workspaces-fixes'
  • chore: auto-commit dirty files before merge (sprint 198)
  • agentB-targets-catalog: implement sprint 198 tasks
  • Fix B-1167: OAuth card shows correct state for new users; remove F-165 duplicate search
  • agentA-workspaces-fixes: implement sprint 198 tasks
  • Fix ws- metrics 400s and workspaces loading/error states (B-1170, B-1173)
  • chore: write Sprint 198 brief
  • docs: Sprint 197 summary + backlog updates from QA
  • Add Sprint 197 project status document
  • Merge branch 'agentB-degrade-persist'
  • Merge branch 'agentA-null-guard'
  • chore: auto-commit dirty files before merge (sprint 197)
  • agentA-null-guard: implement sprint 197 tasks
  • agentB-degrade-persist: implement sprint 197 tasks
  • B-1168: show Get Started for new users on OAuth card
  • F-314-lite: persist degradedAt in localStorage so stale treatment survives page reload
  • chore: Sprint 197 brief + backlog updates from Sprint 196 QA
  • chore: Sprint 196 wrap-up — mark done + write summary
  • Add Sprint 196 project status document
  • Merge branch 'agentB-metrics-and-stale'
  • Merge branch 'agentA-idle-remaining'
  • chore: auto-commit dirty files before merge (sprint 196)
  • agentB-metrics-and-stale: implement sprint 196 tasks
  • Sprint 196: fix metrics regex (B-1166) + stale health treatment (F-313)
  • agentA-idle-remaining: implement sprint 196 tasks
  • F-312: client-side idle remaining fallback in workspaces.js
  • chore: Sprint 195 QA findings + Sprint 196 brief
  • chore: Sprint 195 wrap-up — mark done + write summary
  • Add Sprint 195 project status document
  • Merge branch 'agentB-client-fixes'
  • Merge branch 'agentA-server-fixes'
  • chore: auto-commit dirty files before merge (sprint 195)
  • agentB-client-fixes: implement sprint 195 tasks
  • Sprint 195 agentB: B-1163 view fallback + B-1161 #apps hash alias
  • agentA-server-fixes: implement sprint 195 tasks
  • F-311: emit idleSecondsRemaining in k8s.js; B-1160: log 400 URLs in server.js
  • chore: Sprint 194 wrap-up + Sprint 195 brief
  • Add Sprint 194 project status document
  • Merge branch 'agentB-workspace-and-delete'
  • Merge branch 'agentA-catalog-fixes'
  • chore: auto-commit dirty files before merge (sprint 194)
  • agentB-workspace-and-delete: implement sprint 194 tasks
  • agentA-catalog-fixes: implement sprint 194 tasks
  • F-310 idle expiry signal in workspaces + B-1154 delete to card corner
  • F-309: move Claude Code auth card to position 1; B-1159: auto-populate description from app name
  • chore: add B-1160/B-1161 from Sprint 193 QA; remove stale F-308 dup
  • chore: write Sprint 194 brief + remove duplicate backlog entry
  • Add Sprint 193 project status document
  • Merge branch 'agentB-health-restart'
  • Merge branch 'agentA-branding-and-k8s'
  • chore: auto-commit dirty files before merge (sprint 193)
  • agentB-health-restart: implement sprint 193 tasks
  • F-308: add inline Restart button on health warning for not-responding apps
  • chore: Sprint 192 QA findings — add B-1158, B-1159, F-309, F-310
  • agentA-branding-and-k8s: implement sprint 193 tasks
  • Fix /api/branding response + k8s.js ghost-pod dedup (B-1156, B-1155-root)
  • chore: Sprint 192 wrap-up + Sprint 193 brief
  • Add Sprint 192 project status document
  • Merge branch 'agentB-status-ux'
  • Merge branch 'agentA-workspaces-dedup'
  • chore: auto-commit dirty files before merge (sprint 192)
  • agentA-workspaces-dedup: implement sprint 192 tasks
  • Fix workspaces table double-render — deduplicate by username+team in workspaces.js
  • agentB-status-ux: implement sprint 192 tasks
  • B-1153 unified health badge + B-1157 context-sensitive launch button
  • chore: Sprint 191 wrap-up + Sprint 192 brief
  • chore: add B-1155, B-1156, B-1157 from Sprint 190 QA report
  • chore: Sprint 190 PM review — add B-1153, B-1154, F-308
  • Add Sprint 191 project status document
  • Merge branch 'agentB-deploy-polish'
  • Merge branch 'agentA-ci-e2e-cron'
  • chore: auto-commit dirty files before merge (sprint 191)
  • agentB-deploy-polish: implement sprint 191 tasks
  • F-307 server-side first-run exec + B-1049 optimistic lastDeployedAt
  • agentA-ci-e2e-cron: implement sprint 191 tasks
  • Add scheduled E2E fleet test GitHub Actions workflow (F-301)
  • chore: Sprint 190 wrap-up + Sprint 191 brief
  • Add Sprint 190 project status document
  • Merge branch 'agentB-terminal-history'
  • Merge branch 'agentA-metrics-demo-fixes'
  • chore: auto-commit dirty files before merge (sprint 190)
  • agentA-metrics-demo-fixes: implement sprint 190 tasks
  • feat: metrics circuit breaker (B-1031) + demo app env button disabled state (B-1148)
  • agentB-terminal-history: implement sprint 190 tasks
  • F-305: persistent terminal history via tmux capture-pane
  • chore: Sprint 189 summary, backlog audit/cleanup, Sprint 190 brief
  • Add Sprint 189 project status document
  • fix: env modal NAME column header flex matches input (1:2 → 1.5:2)
  • Merge branch 'agentB-description-toast-fixes'
  • Merge branch 'agentA-card-dom-polish'
  • chore: auto-commit dirty files before merge (sprint 189)
  • agentB-description-toast-fixes: implement sprint 189 tasks
  • agentB sprint 189: B-1102 + B-1098 confirmed pre-existing — no code changes
  • agentA-card-dom-polish: implement sprint 189 tasks
  • fix: B-1150 health warning DOM order + B-1151 Delete button separator
  • chore: Sprint 188 summary, backlog updates, Sprint 189 brief
  • Add Sprint 188 project status document
  • fix: F-169 uses uptime not lastDeployedAt; env modal X button + wider name col
  • Merge branch 'agentB-diagnostics-ux'
  • Merge branch 'agentA-app-lifecycle-ux'
  • chore: auto-commit dirty files before merge (sprint 188)
  • agentA-app-lifecycle-ux: implement sprint 188 tasks
  • Sprint 188 — B-1101 delete confirmation + F-147 post-deploy CTA
  • agentB-diagnostics-ux: implement sprint 188 tasks
  • agentB-diagnostics-ux: Sprint 188 — F-168 log download + B-1095 re-check button
  • chore: Sprint 187 summary, backlog updates, Sprint 188 brief
  • Add Sprint 187 project status document
  • Merge branch 'agentB-app-card-polish'
  • Merge branch 'agentA-env-filter-e2e'
  • chore: auto-commit dirty files before merge (sprint 187)
  • agentA-env-filter-e2e: implement sprint 187 tasks
  • B-1037: expand k8s var filter; B-1147: env modal E2E spec
  • agentB-app-card-polish: implement sprint 187 tasks
  • App card running duration (F-169) and alphabetical batch toast (F-209)
  • fix: add PORTAL_URL to post-merge Playwright hook so tests hit finance portal not localhost
  • chore: Sprint 186 summary, PM review backlog items, Sprint 187 brief
  • fix: SENSITIVE_RE covers PASS variants; button label matches spec; E2E test accepts Reconnect state
  • Add Sprint 186 project status document
  • Merge branch 'agentB-app-env-vars'
  • Merge branch 'agentA-first-run-guide'
  • chore: auto-commit dirty files before merge (sprint 186)
  • agentB-app-env-vars: implement sprint 186 tasks
  • feat: F-149 env vars Show/Hide toggle on sensitive fields (Sprint 186 agentB)
  • agentA-first-run-guide: implement sprint 186 tasks
  • feat: F-306 — first-run welcome banner in Claude Code workspace terminal
  • chore: write Sprint 186 brief + Sprint 185 summary
  • fix: E2E test openGuide() accepts 'Reconnect →' button (F-302 regression)
  • Add Sprint 185 project status document
  • Merge branch 'agentB-playwright-precheck'
  • Merge branch 'agentA-pod-failure-ux'
  • chore: auto-commit dirty files before merge (sprint 185)
  • agentA-pod-failure-ux: implement sprint 185 tasks
  • Fix B-1104: surface pod failures within 10s during workspace startup
  • agentB-playwright-precheck: implement sprint 185 tasks
  • fix: B-1146 — Playwright connectivity pre-check skips E2E on VPN absence
  • chore: write Sprint 185 brief + Sprint 184 summary
  • fix: hot-patch Sprint 184 to all 4 fleets + file B-1146
  • Add Sprint 184 project status document
  • Merge branch 'agentB-deploy-quality'
  • Merge branch 'agentA-terminal-ux'
  • chore: auto-commit dirty files before merge (sprint 184)
  • agentA-terminal-ux: implement sprint 184 tasks
  • fix: terminal UX — launch spinner, alt-screen indicator, scroll button, disconnect overlay
  • agentB-deploy-quality: implement sprint 184 tasks
  • fix: B-1035 smoke test after deploy — healthcheck toast on non-responding app
  • chore: write Sprint 184 brief + Sprint 183 summary + PM backlog review
  • feat: pre-install AWS CLI MCP server in workspace Docker image
  • chore: Steve Jobs review backlog — B-1143, F-304 terminal UX gaps
  • fix: terminal reconnect (B-1143) + scrollback (F-304)
  • Add Sprint 183 project status document
  • Merge branch 'agentB-trace-logging'
  • Merge branch 'agentA-pty-ghost-fix'
  • chore: auto-commit dirty files before merge (sprint 183)
  • agentB-trace-logging: implement sprint 183 tasks
  • feat: F-303 end-to-end trace logging in catalog.js and server.js
  • agentA-pty-ghost-fix: implement sprint 183 tasks
  • fix: PTY EBADF error handling (B-1141) + ghost Service filter (B-1142)
  • chore: write Sprint 183 brief — PTY EBADF fix, ghost Service filter, trace logging
github-portfolio-search
  • chore: deploy artifacts from Sprint 19 deploy
intelligence-briefing-toolkit
  • docs: Sprint 7 + Sprint 8 PROJECT_STATUS — all backlog items resolved
  • fix: resolve Tooltip.tsx merge conflict, rebuild dist
  • chore: resolve Tooltip.tsx conflict
  • Merge branch 'agentB-overview-tooltips'
  • Merge branch 'agentA-tooltip-component'
  • chore: pre-merge cleanup sprint 8
  • agentC-detail-tooltips: implement sprint 8 tasks
  • agentB-overview-tooltips: implement sprint 8 tasks
  • feat: add tooltips to detail view components (F-006)
  • feat: add tooltips to overview page metrics and signal panels (F-006)
  • agentA-tooltip-component: implement sprint 8 tasks
  • feat: add Tooltip component and Header navigation tooltips (F-006)
  • chore: Sprint 7 status + Sprint 8 brief — tooltips & friendly UX
  • chore: rebuild dist after sprint 7 merge
  • Merge branch 'agentB-error-handling-skeletons'
  • Merge branch 'agentA-topics-redesign'
  • chore: pre-merge cleanup sprint 7
  • agentB-error-handling-skeletons: implement sprint 7 tasks
  • feat: suppress 404 error banner, add offline indicator and loading skeletons
  • agentA-topics-redesign: implement sprint 7 tasks
  • feat: redesign Topics page with 2-column master-detail layout (F-005)
  • chore: write Sprint 7 brief — Topics redesign + error handling
  • docs: Sprint 6 PROJECT_STATUS — all original backlog items resolved
  • chore: rebuild dist after sprint 6 merge
  • Merge branch 'agentC-wire-topics-fixes'
  • Merge branch 'agentB-top-signals-polish'
  • Merge branch 'agentA-empty-states-favicon'
  • chore: pre-merge cleanup sprint 6
  • agentB-top-signals-polish: implement sprint 6 tasks
  • feat: add visual hierarchy to Top Signals section (F-004)
  • agentA-empty-states-favicon: implement sprint 6 tasks
  • agentC-wire-topics-fixes: implement sprint 6 tasks
  • feat: add reusable EmptyState component and SVG favicon
  • fix: Wire feed duplicate text dedup, Topics singular/plural, max-width containers
  • chore: write Sprint 6 brief — empty states, top signals polish, wire/topics fixes
  • docs: Sprint 5 narrative summary
  • docs: Sprint 4 and Sprint 5 PROJECT_STATUS docs for dashboard
  • chore: rebuild dist after sprint 5 merge
  • Merge branch 'agentC-digest-formatting'
  • chore: pre-merge cleanup sprint 5
  • Merge branch 'agentA-detail-view-fix'
  • agentC-digest-formatting: implement sprint 5 tasks
  • feat: add structured collapsible sections to Daily Digest viewer
  • agentB-candidate-hierarchy: implement sprint 5 tasks
  • agentA-detail-view-fix: implement sprint 5 tasks
  • feat: add visual hierarchy to candidate cards based on signal rank
  • fix: InsightsCard empty state + compact Refresh button on mobile
  • chore: Sprint 4 complete — backlog + roadmap updated, Sprint 5 brief written
  • chore: rebuild dist after sprint 4 merge
  • Merge branch 'agentC-detail-layout-nav'
  • Merge branch 'agentB-overview-grid'
  • Merge branch 'agentA-base-font-header'
  • chore: pre-merge cleanup
  • agentC-detail-layout-nav: implement sprint 4 tasks
  • feat: add mobile bottom nav bar and responsive detail view breakpoints
  • agentB-overview-grid: implement sprint 4 tasks
  • agentA-base-font-header: implement sprint 4 tasks
  • style: responsive grid breakpoints and max-width container for OverviewGrid
  • fix: reset base font to 100% and zoom default to 1.0, hide zoom on mobile
  • chore: auto-commit before sprint
  • chore: write Sprint 4 brief — responsive dashboard overhaul
  • style: glass morphism, gradient accents, restructured candidate cards
  • fix: render markdown bold/italic/blockquotes in Daily Digest viewer
  • feat: add Topics, Ad Generator, Signal Trends — complete campaign platform
  • feat: add Wire feed, Candidate Dossier, and 4-page navigation
  • Merge branch 'main' of https://github.com/davidbmar/intelligence-briefing-toolkit
  • feat: mobile-responsive dashboard, realistic browser headers, EC2 deploy
  • feat: add ibt export command — bridge to tool-RAG evidence format
  • feat: daily briefing system with research dashboard for political candidates
phone-agent-keiko-tv
  • perf: pre-warm Ollama KV cache with full system prompt at startup
  • feat: show model loading status in UI during startup
  • feat: default to Haiku (cloud) LLM + Cohere (local) STT
  • feat: per-turn latency logging with STT/LLM model attribution
  • fix: defer Ollama + Cohere warmup to after server starts listening
  • fix: spell out numbers as spoken words in phone responses for TTS
  • feat: default to Cohere Transcribe STT and Qwen 4B local LLM
  • perf: pre-load Cohere Transcribe model at startup in background thread
  • feat: STT switcher — Whisper vs Cohere Transcribe with UI dropdown
  • fix: use existing ContactsDB API for call_count lookup
  • fix: allow ContactsDB across Flask threads (SQLite check_same_thread)
  • fix: pre-warm Ollama in background thread to avoid blocking startup
  • feat: model switcher (Haiku ↔ Qwen 4B local) + reduce silence detection to 0.8s
tool-RAG-for-split-personalities
  • Merge branch 'agentC-sprint181-e2e-tests'
  • Merge branch 'agentB-candidate-names-grid-css'
  • Merge branch 'agentA-fix-domain-persona-validation'
  • chore: auto-commit dirty files before merge (sprint 181)
  • agentA-fix-domain-persona-validation: implement sprint 181 tasks
  • fix: make persona validation domain-aware (B-024)
  • agentC-sprint181-e2e-tests: implement sprint 181 tasks
  • test: add 20 E2E tests for Kansas Governor War Room chat flow
  • agentB-candidate-names-grid-css: implement sprint 181 tasks
  • fix: candidate display names in indicator + CSS grid selector specificity (B-025, B-026)
  • chore: auto-commit before sprint 181
  • chore: write Sprint 181 brief — Fix critical chat persona validation
  • docs: add 3 critical UX bugs from Steve Jobs audit
  • docs: Sprint 180 PROJECT_STATUS — War Room UX Polish
  • Merge branch 'agentC-war-room-css-polish'
  • Merge branch 'agentB-war-room-ux-fixes'
  • Merge branch 'agentA-candidate-names-api'
  • chore: auto-commit dirty files before merge (sprint 180)
  • agentA-candidate-names-api: implement sprint 180 tasks
  • agentB-war-room-ux-fixes: implement sprint 180 tasks
  • feat: add candidate display names to API and fix session domain filtering
  • fix: war room JS — display names, session filtering, sync alarm debug
  • agentC-war-room-css-polish: implement sprint 180 tasks
  • feat: candidate grid layout + hide-branding CSS (F-221, F-222)
  • fix: war room UX — display names, session filtering, sync alarm debug
  • chore: auto-commit before sprint 180
  • chore: write Sprint 180 brief — War Room UX Polish
  • docs: add 5 UX backlog items from Kansas War Room audit
  • fix: candidate selector shows all 8 candidates
  • fix: sync script uses IBT config with correct data paths
  • docs: Sprint 179 narrative summary — Campaign-Specific Retrieval & UX
  • fix: candidates endpoint test accepts empty list when no evidence synced
  • Merge branch 'agentD-sprint179-tests'
  • Merge branch 'agentC-campaign-ux'
  • Merge branch 'agentB-candidate-filter-api'
  • Merge branch 'agentA-persona-weighted-retrieval'
  • chore: auto-commit dirty files before merge (sprint 179)
  • agentB-candidate-filter-api: implement sprint 179 tasks
  • feat: add candidate-specific filtering to chat and roundtable endpoints
  • agentC-campaign-ux: implement sprint 179 tasks
  • feat: campaign-specific welcome screen, candidate filter, comparison mode, evidence freshness
  • agentD-sprint179-tests: implement sprint 179 tasks
  • agentA-persona-weighted-retrieval: implement sprint 179 tasks
  • test: add 29 Sprint 179 campaign retrieval & candidate filtering tests
  • feat: add persona-weighted retrieval with signal affinity ranking
  • chore: auto-commit before sprint 179
  • chore: write Sprint 179 brief — Campaign-Specific Retrieval & UX
  • chore: archive Sprint 178 brief
  • docs: Sprint 178 narrative summary — Kansas Governor Domain Setup
  • fix: update sync_status test assertion to handle dict response
  • Merge branch 'agentD-sprint178-tests'
  • Merge branch 'agentC-sync-alarm-ui'
  • Merge branch 'agentB-sync-health-api'
  • Merge branch 'agentA-ks-governor-domain'
  • chore: auto-commit dirty files before merge (sprint 178)
  • agentA-ks-governor-domain: implement sprint 178 tasks
  • agentD-sprint178-tests: implement sprint 178 tasks
  • feat: add Kansas Governor 2026 domain with 6 campaign analyst personas and IBT sync script
  • test: add 36 Sprint 178 Kansas Governor domain tests
  • agentB-sync-health-api: implement sprint 178 tasks
  • feat: add sync health check API endpoints for domain evidence sync
  • agentC-sync-alarm-ui: implement sprint 178 tasks
  • feat: add sync alarm badge to web UI for domains with sync pipelines
  • chore: auto-commit before sprint 178
  • chore: write Sprint 178 brief — Kansas Governor Domain Setup
  • docs: add post-sprint dashboard update rule to CLAUDE.md
  • docs: add PROJECT_STATUS docs for Sprints 176-177
  • docs: Sprint 177 narrative summary — Multi-Domain Isolation
  • fix: update 2 test assertions to match domain-prefixed collection naming
  • Merge branch 'agentD-domain-isolation-tests'
  • Merge branch 'agentC-domain-isolation-ui'
  • Merge branch 'agentB-per-session-domain-api'
  • Merge branch 'agentA-domain-scoped-storage'
  • chore: pre-merge cleanup
  • feat: replace global active_domain with per-session domain context
  • feat: add domain-scoped storage isolation to SQLite tables and ChromaDB collections
  • test: add 47 multi-domain isolation tests for Sprint 177
  • feat: domain isolation UI — badge indicator, scoped sessions, clear on switch
  • chore: write Sprint 177 brief — Multi-Domain Isolation
  • docs: Sprint 176 narrative summary — WebSocket streaming
  • Merge agentC-streaming-tests into main
  • Merge agentB-streaming-ui into main
  • Merge agentA-streaming-backend into main
  • chore: pre-merge cleanup
  • agentC-streaming-tests: implement sprint 176 tasks
  • test: add 34 E2E tests for WebSocket streaming chat (Sprint 176)
  • agentB-streaming-ui: implement sprint 176 tasks
  • feat: streaming UI — evidence citations, typing indicator, WS endpoint
  • agentA-streaming-backend: implement sprint 176 tasks
  • feat: add /ws/chat/stream WebSocket endpoint for token-by-token streaming
  • chore: write Sprint 176 brief — WebSocket streaming for chat
  • chore: Sprint 175 cleanup — v2.1 shipped, ROADMAP complete
  • docs: Sprint 175 narrative summary — v2.1 ships, full ROADMAP complete
  • Merge agentC-v21-docs into main
  • Merge agentB-v21-frontend into main
  • Merge agentA-v21-backend into main
  • chore: pre-merge cleanup
  • agentA-v21-backend: implement sprint 175 tasks
  • v2.1.0: version bump, complete CLAUDE.md module inventory, clean stale DBs
  • agentB-v21-frontend: implement sprint 175 tasks
  • feat: v2.1 frontend polish — README update, cache bump v=175, dashboard badge
  • agentC-v21-docs: implement sprint 175 tasks
  • docs: v2.1 release docs — ROADMAP, CHANGELOG, release notes, verification tests
  • chore: write Sprint 175 brief — v2.1 cleanup + release prep (final ROADMAP sprint)
  • chore: auto-commit between loops
  • docs: Sprint 174 narrative summary — API v2
  • Merge agentC-api-v2-tests into main
  • Merge agentB-api-docs-ui into main
  • Merge branch 'agentA-api-v2'
  • chore: pre-merge cleanup
  • agentB-api-docs-ui: implement sprint 174 tasks
  • feat: interactive API v2 docs page with key management UI
  • agentC-api-v2-tests: implement sprint 174 tasks
  • test: add 31 API v2 contract tests across 7 groups
  • agentA-api-v2: implement sprint 174 tasks
  • feat: add API v2 with versioned endpoints, per-user rate limiting, and key management
  • chore: write Sprint 174 brief — API v2 with OpenAPI docs
  • docs: Sprint 173 narrative summary — analytics dashboard
  • Merge agentC-analytics-tests into main
  • Merge agentB-analytics-ui into main
  • Merge branch 'agentA-analytics-api'
  • chore: pre-merge cleanup
  • agentA-analytics-api: implement sprint 173 tasks
  • feat: add advanced analytics API — usage stats, persona effectiveness, time-series
  • agentB-analytics-ui: implement sprint 173 tasks
  • feat: advanced analytics dashboard with charts, filters, and funnel
  • agentC-analytics-tests: implement sprint 173 tasks
  • chore: write Sprint 173 brief — advanced analytics dashboard
  • docs: Sprint 172 narrative summary — domain marketplace
  • Merge agentC-marketplace-tests into main
  • Merge agentB-marketplace-ui into main
  • Merge branch 'agentA-marketplace-api'
  • chore: pre-merge cleanup
  • agentC-marketplace-tests: implement sprint 172 tasks
  • test: add 36 E2E tests for marketplace publish-browse-install-rate cycle
  • agentB-marketplace-ui: implement sprint 172 tasks
  • feat: marketplace browse, publish, rating UI and featured domains on dashboard
  • agentA-marketplace-api: implement sprint 172 tasks
  • feat: add domain marketplace API with publish, browse, install, rate, featured
  • chore: write Sprint 172 brief — domain marketplace (publish, browse, install, rate)
  • docs: Sprint 171 narrative summary — collaborative rooms
  • Merge agentC-collab-tests into main
  • Merge agentB-collab-ui into main
  • Merge agentA-collab-backend into main
  • chore: pre-merge cleanup
  • agentB-collab-ui: implement sprint 171 tasks
  • agentC-collab-tests: implement sprint 171 tasks
  • test: add 41 E2E tests for Sprint 171 collaborative conversations
  • agentA-collab-backend: implement sprint 171 tasks
  • feat: collaborative conversation rooms — backend + WebSocket + tests
  • chore: write Sprint 171 brief — collaborative conversations (multi-user rooms)
  • chore: Sprint 170 cleanup — v2.0 shipped
  • chore: auto-commit between loops
462 commits

Workspaces, Voice Calls, and RAG Workflows Hardened

The day centered on making everyone-ai workspace portals more reliable, with idle/reconnect UX, ECR credential refresh, fleet config cleanup, Playwright smoke/E2E coverage, and all 4 portals redeployed with 4/4 E2E passing. It also shipped a Telnyx/Kokoro phone agent with caller ID and lead capture, plus RAG tool v2.0 work spanning auth, performance, an AI domain wizard, docs, and verification tests.

everyone-ai 358phone-agent-keiko-tv 36tool-RAG-for-split-personalities 67traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Reuse the workspace reliability pattern: expose honest idle/reconnect states, fetch live workspace status before promising preservation, and back it with Playwright launch/cleanup tests.
  • Apply fleet deployment hygiene: keep portal config explicit, remove stale services, refresh ECR credentials via CronJob/deploy scripts, and publish fleet status artifacts from test teardown.
  • Build phone-call UX around real-time identity: combine SQLite contacts, caller ID lookup, unknown-caller lead capture, pre-synthesized greetings, and 8kHz Telnyx/Kokoro audio streaming.
  • For RAG apps, pair major UX features with guardrails: JWT/user-scoped auth, caching/indexes/perf endpoints, AI persona wizard dry-runs, and release docs with verification tests.

Commits

everyone-ai
  • fix: 8-hour workspace idle timeout + honest idle-stop message
  • Add Sprint 182 project status document
  • Merge branch 'agentB-deploy-and-verify'
  • Merge branch 'agentA-idle-stop-honest'
  • chore: auto-commit dirty files before merge (sprint 182)
  • agentB-deploy-and-verify: implement sprint 182 tasks
  • deploy: Sprint 182 fleet deploy — all 4 portals redeployed, E2E 4/4 pass
  • agentA-idle-stop-honest: implement sprint 182 tasks
  • fix: honest idle-disconnect — fetch workspace status before claiming session preserved
  • chore: Sprint 181 PM review + Sprint 182 brief
  • Add Sprint 181 project status document
  • Merge branch 'agentB-fleet-config'
  • Merge branch 'agentA-reconnect-button'
  • chore: auto-commit dirty files before merge (sprint 181)
  • agentA-reconnect-button: implement sprint 181 tasks
  • feat: F-302 — swap Claude Code catalog card button to "Reconnect →" when workspace is running
  • agentB-fleet-config: implement sprint 181 tasks
  • fix: remove 'it' portal from fleet config (B-1139)
  • chore: Sprint 180 PM review + Sprint 181 brief
  • Add Sprint 180 project status document
  • Merge branch 'agentB-smoke-cleanup'
  • Merge branch 'agentA-fleet-cleanup'
  • chore: auto-commit dirty files before merge (sprint 180)
  • agentB-smoke-cleanup: implement sprint 180 tasks
  • agentA-fleet-cleanup: implement sprint 180 tasks
  • fix: B-1138 — fix smoke test workspace cleanup to use real ID via API lookup
  • fix: B-1138 OAuth workspace cleanup in claude-code-launch.spec.js
  • chore: auto-commit before sprint run
  • chore: Sprint 179 PM review + Sprint 180 brief
  • Add Sprint 179 project status document
  • Merge branch 'agentB-playwright-smoke'
  • Merge branch 'agentA-test-restore'
  • chore: auto-commit dirty files before merge (sprint 179)
  • agentA-test-restore: implement sprint 179 tasks
  • fix: restore 357-test suite + deprecate old ECR refresher yaml
  • agentB-playwright-smoke: implement sprint 179 tasks
  • test: Playwright smoke tests for Claude Code workspace launch (Sprint 179)
  • chore: Sprint 178 PM review + Sprint 179 brief
  • fix: deploy-ecr-refresh-cronjob.sh use single SSH config (fixes mktemp conflict)
  • fix: E2E test targets wrong card — VS Studio mentions "Claude Code" in description
  • fix: deploy-ecr-refresh-cronjob.sh SSH to each EC2, not jump host
  • fix: B-1119 — exclude preview-* services from workspace list
  • Add Sprint 178 project status document
  • Merge branch 'agentB-status-overlay'
  • Merge branch 'agentA-ecr-cronjob'
  • chore: auto-commit dirty files before merge (sprint 178)
  • agentA-ecr-cronjob: implement sprint 178 tasks
  • feat: ECR credential refresh CronJob + deploy script (F-300)
  • agentB-status-overlay: implement sprint 178 tasks
  • feat: B-1134 — show pending-phase status in workspace overlay
  • docs: add ECR credentials fix runbook (B-1118)
  • chore: Sprint 177 PM review, backlog, summary, Sprint 178 brief
  • Add Sprint 177 project status document
  • Merge branch 'agentB-portal-redeploy'
  • Merge branch 'agentA-ws-detection'
  • chore: auto-commit dirty files before merge (sprint 177)
  • agentB-portal-redeploy: implement sprint 177 tasks
  • B-1132: redeploy portal to finance, legal, hr with Sprint 176 catalog.js changes
  • agentA-ws-detection: implement sprint 177 tasks
  • fix: B-1133 replace canvas-invisible text= locator with window.__termWs.readyState detection
  • chore: Sprint 176 PM review, backlog, summary, Sprint 177 brief
  • Add Sprint 176 project status document
  • Merge branch 'agentB-ecr-fix'
  • Merge branch 'agentA-status-testid'
  • chore: auto-commit dirty files before merge (sprint 176)
  • agentB-ecr-fix: implement sprint 176 tasks
  • docs(B-1118): Sprint 176 agentB — ECR fix runbook + imagePullSecrets confirmation
  • agentA-status-testid: implement sprint 176 tasks
  • fix: B-1131 add data-testid to statusOverlay; narrow test fallback selector
  • chore: Sprint 175 summary + Sprint 176 brief (B-1131 selector fix, B-1118 ECR apply)
  • fix: B-1130 rename var testUsername → _wsUser to stop shadowing outer function
  • Add Sprint 175 project status document
  • Merge branch 'agentB-ecr-credentials'
  • Merge branch 'agentA-test-diagnostic'
  • chore: auto-commit dirty files before merge (sprint 175)
  • agentB-ecr-credentials: implement sprint 175 tasks
  • fix: B-1118 — ECR credential refresh script + imagePullSecrets in k8s.js
  • agentA-test-diagnostic: implement sprint 175 tasks
  • fix: B-1128 username-scoped diagnostic + B-1129 5-minute timeout
  • chore: Sprint 174 summary + Sprint 175 brief (B-1128 diagnostic fix, B-1129 timeout, B-1118 ECR fleet)
  • Add Sprint 174 project status document
  • Merge branch 'agentB-cleanup-fix'
  • Merge branch 'agentA-deploy-fleet'
  • chore: auto-commit dirty files before merge (sprint 174)
  • agentA-deploy-fleet: implement sprint 174 tasks
  • fix: B-1126 deploy Sprint 170 portal fixes to finance, legal, hr
  • agentB-cleanup-fix: implement sprint 174 tasks
  • fix: B-1127 expand beforeAll stale workspace filter to all 3 record patterns
  • chore: Sprint 173 summary + Sprint 174 brief (B-1126 deploy fleet, B-1127 cleanup fix)
  • Add Sprint 173 project status document
  • chore: auto-commit dirty files before merge (sprint 173)
  • Merge branch 'agentB-fleet-status'
  • agentA-e2e-cleanup: implement sprint 173 tasks
  • fix: B-1125 move E2E cleanup to afterEach + beforeAll ghost purge
  • agentB-fleet-status: implement sprint 173 tasks
  • feat: F-224 fleet status JSON artifact via Playwright globalTeardown
  • chore: Sprint 172 summary + Sprint 173 brief (B-1125 E2E cleanup, F-224 fleet status)
  • feat: claude-code-launch E2E test — launch workspace, connect terminal, run ls (all fleet)
  • Add Sprint 172 project status document
  • Merge branch 'agentB-search-threshold'
  • Merge branch 'agentA-delete-toast'
  • chore: auto-commit dirty files before merge (sprint 172)
  • agentB-search-threshold: implement sprint 172 tasks
  • feat: hide Apps search bar when fewer than 5 apps (F-219)
  • agentA-delete-toast: implement sprint 172 tasks
  • feat: add success toast after workspace deletion (B-1124)
  • chore: Sprint 171 PM review — hotfix + backlog + narrative + Sprint 172 brief
  • Add Sprint 171 project status document
  • Merge branch 'agentB-shortcuts-corner-btn'
  • Merge branch 'agentA-workspace-error-ux'
  • chore: auto-commit dirty files before merge (sprint 171)
  • agentB-shortcuts-corner-btn: implement sprint 171 tasks
  • agentA-workspace-error-ux: implement sprint 171 tasks
  • feat: F-222 — persistent ? corner button for shortcuts overlay
  • fix: B-1122 delete workspace button + F-223 admin contact on image_pull error
  • chore: Sprint 170 PM review — backlog + narrative + Sprint 171 brief
  • fix: B-1121 — stop terminal reconnect loop on "container not found"
  • fix: improve B-1121 test — longer wait, better text capture for reconnect loop
  • fix: add B-1121 test — terminal reconnect loop when container not found
  • Add Sprint 170 project status document
  • Merge branch 'agentB-overlay-nav-close'
  • Merge branch 'agentA-workspace-fix'
  • chore: auto-commit dirty files before merge (sprint 170)
  • agentB-overlay-nav-close: implement sprint 170 tasks
  • agentA-workspace-fix: implement sprint 170 tasks
  • fix: B-1120 auto-close shortcuts overlay on hash navigation
  • fix: skip ghost workspace entries and surface image pull failures (B-1118, B-1119)
  • chore: Sprint 169 PM review — backlog + narrative + Sprint 170 brief
  • fix: handle page-closed on screenshot in workspace poll test
  • fix: add Playwright tests proving B-1118/B-1119 workspace launch failures
  • Add Sprint 169 project status document
  • Merge branch 'agentB-shortcut-help'
  • Merge branch 'agentA-g-hint'
  • chore: auto-commit dirty files before merge (sprint 169)
  • agentB-shortcut-help: implement sprint 169 tasks
  • feat: F-221 keyboard shortcuts cheat-sheet overlay (? key)
  • agentA-g-hint: implement sprint 169 tasks
  • feat: B-1117 g-key navigation hint pill
  • chore: Sprint 168 PM review — backlog + narrative + Sprint 169 brief
  • Add Sprint 168 project status document
  • Merge branch 'agentB-global-nav-shortcuts'
  • Merge branch 'agentA-search-keyboard'
  • chore: auto-commit dirty files before merge (sprint 168)
  • agentA-search-keyboard: implement sprint 168 tasks
  • feat: B-1116 — / to focus Apps search, Esc to clear
  • agentB-global-nav-shortcuts: implement sprint 168 tasks
  • feat: F-220 global vim-style keyboard navigation shortcuts
  • chore: Sprint 167 PM review — backlog + narrative + Sprint 168 brief
  • Add Sprint 167 project status document
  • Merge branch 'agentB-workspace-nav-badge'
  • Merge branch 'agentA-search-fixes'
  • chore: auto-commit dirty files before merge (sprint 167)
  • agentB-workspace-nav-badge: implement sprint 167 tasks
  • feat: F-218 — add running workspace count badge to Workspaces nav item
  • agentA-search-fixes: implement sprint 167 tasks
  • fix: scope search to name+description and preserve query across re-renders (B-1114, B-1115)
  • chore: Sprint 166 PM review — backlog + narrative + Sprint 167 brief
  • Add Sprint 166 project status document
  • Merge branch 'agentB-apps-search'
  • Merge branch 'agentA-notification-fix'
  • chore: auto-commit dirty files before merge (sprint 166)
  • agentB-apps-search: implement sprint 166 tasks
  • feat: F-217 — add instant-filter search bar to Apps tab
  • agentA-notification-fix: implement sprint 166 tasks
  • fix: B-1113 — gate workspace ready notification on document.hidden; delay permission prompt 5s
  • chore: Sprint 165 PM review — backlog + narrative + Sprint 166 brief
  • Add Sprint 165 project status document
  • Merge branch 'agentB-workspace-ready-notification'
  • Merge branch 'agentA-workspace-highlight-fix'
  • chore: auto-commit dirty files before merge (sprint 165)
  • agentB-workspace-ready-notification: implement sprint 165 tasks
  • agentA-workspace-highlight-fix: implement sprint 165 tasks
  • feat: F-216 browser notification when workspace goes ready
  • fix: B-1112 add data-ws-name attr and fix F-215 highlight selector
  • chore: Sprint 164 PM review — backlog + narrative + Sprint 165 brief
  • Add Sprint 164 project status document
  • Merge branch 'agentB-workspace-highlight'
  • Merge branch 'agentA-deploy-form-and-storage'
  • chore: auto-commit dirty files before merge (sprint 164)
  • agentB-workspace-highlight: implement sprint 164 tasks
  • feat: F-215 highlight failed workspace row on "Go to Workspaces" navigation
  • agentA-deploy-form-and-storage: implement sprint 164 tasks
  • fix: B-1111 polling retry for deploy form + F-215 sessionStorage on workspace failure
  • chore: Sprint 163 PM review — backlog + narrative + Sprint 164 brief
  • Add Sprint 163 project status document
  • Merge branch 'agentB-restart-safe-and-deploy-cta'
  • Merge branch 'agentA-hover-transition'
  • chore: auto-commit dirty files before merge (sprint 163)
  • agentB-restart-safe-and-deploy-cta: implement sprint 163 tasks
  • fix/feat: safe workspace restart via Deployment patch (B-1110) + auto-open deploy form from empty state CTA (F-214)
  • agentA-hover-transition: implement sprint 163 tasks
  • fix: B-1109 smooth description hover transition + absolute pencil positioning
  • chore: Sprint 162 PM review — backlog + narrative + Sprint 163 brief
  • Add Sprint 162 project status document
  • Merge branch 'agentB-workspace-restart'
  • Merge branch 'agentA-empty-state-and-hover'
  • chore: auto-commit dirty files before merge (sprint 162)
  • agentB-workspace-restart: implement sprint 162 tasks
  • feat: B-1107 Restart Workspace button for failed workspace recovery
  • agentA-empty-state-and-hover: implement sprint 162 tasks
  • feat: App Catalog empty state (F-213) + description hover affordance (B-1108)
  • chore: Sprint 161 PM review — backlog + narrative + Sprint 162 brief
  • Add Sprint 161 project status document
  • Merge branch 'agentB-workspace-failure-cta'
  • Merge branch 'agentA-css-and-description-fix'
  • chore: auto-commit dirty files before merge (sprint 161)
  • agentA-css-and-description-fix: implement sprint 161 tasks
  • fix: B-1105 add .launch-status-failed CSS rule; B-1106 skip PATCH when description unchanged
  • agentB-workspace-failure-cta: implement sprint 161 tasks
  • feat: F-212 add "Go to Workspaces" CTA and toast on workspace startup failure
  • chore: Sprint 160 PM review — backlog + narrative + Sprint 161 brief
  • Add Sprint 160 project status document
  • Merge branch 'agentB-workspace-startup-error'
  • Merge branch 'agentA-description-edit-fix'
  • chore: auto-commit dirty files before merge (sprint 160)
  • agentB-workspace-startup-error: implement sprint 160 tasks
  • fix: surface workspace pod failures immediately in startup UI (B-1104)
  • agentA-description-edit-fix: implement sprint 160 tasks
  • fix: Escape/blur PATCH bug (B-1102) + save/error toasts (B-1103) in inline description edit
  • chore: write Sprint 160 brief + Sprint 159 PM review
  • Add Sprint 159 project status document
  • Merge branch 'agentB-description-backend'
  • Merge branch 'agentA-card-safety'
  • chore: auto-commit dirty files before merge (sprint 159)
  • agentB-description-backend: implement sprint 159 tasks
  • feat: PATCH /api/targets/:id/description endpoint + deploy form polish (Sprint 159)
  • agentA-card-safety: implement sprint 159 tasks
  • feat: two-step delete confirmation (B-1101) + inline description edit (F-211)
  • chore: write Sprint 159 brief + Sprint 158 PM review
  • Add Sprint 158 project status document
  • Merge branch 'agentB-deploy-form'
  • Merge branch 'agentA-health-toast-polish'
  • chore: auto-commit dirty files before merge (sprint 158)
  • agentB-deploy-form: implement sprint 158 tasks
  • agentA-health-toast-polish: implement sprint 158 tasks
  • fix/feat: deploy form port + description fields, post-deploy CTA (B-1099, F-210)
  • fix/feat: B-1098 inline health toast View Logs action + F-209 batch toast names first failing app
  • chore: write Sprint 158 brief + Sprint 157 PM review
  • Add Sprint 157 project status document
  • Merge branch 'agentB-toast-ux'
  • Merge branch 'agentA-toast-and-description'
  • chore: auto-commit dirty files before merge (sprint 157)
  • agentA-toast-and-description: implement sprint 157 tasks
  • feat: F-207 batch failure toasts + F-208 app card descriptions
  • agentB-toast-ux: implement sprint 157 tasks
  • fix: B-1097 toast UX — 10s action timeout, click-to-dismiss, × indicator
  • chore: write Sprint 157 brief + Sprint 156 PM review
  • Add Sprint 156 project status document
  • Merge branch 'agentB-toast-action'
  • Merge branch 'agentA-toast-cooldown'
  • chore: auto-commit dirty files before merge (sprint 156)
  • agentB-toast-action: implement sprint 156 tasks
  • agentA-toast-cooldown: implement sprint 156 tasks
  • feat: F-206 extend Portal.toast with action button; add View Logs to unhealthy toasts
  • fix: add per-app toast cooldown to prevent flapping toast storm (B-1096)
  • chore: write Sprint 156 brief + PM review items from Sprint 155
  • chore: generate PROJECT_STATUS for Sprint 155
  • chore: sync sprint-run.sh fix — node:test output format in metrics collection
  • Merge branch 'agentB-banner-health-indicator'
  • Merge branch 'agentA-health-notifications'
  • chore: auto-commit dirty files before merge (sprint 155)
  • agentA-health-notifications: implement sprint 155 tasks
  • feat: health state change toasts (F-204) + Re-check button visibility (B-1095)
  • agentB-banner-health-indicator: implement sprint 155 tasks
  • feat: F-205 add unhealthy app count indicator to workspace-running banner
  • chore: write Sprint 155 brief + PM review items from Sprint 154
  • chore: generate PROJECT_STATUS for Sprint 154
  • Merge branch 'agentA-health-badge-complete'
  • chore: auto-commit dirty files before merge (sprint 154)
  • agentA-health-badge-complete: implement sprint 154 tasks
  • feat: B-1093 background health poll on load + F-203 re-check button
  • chore: write Sprint 154 brief + PM review items from Sprint 153
  • chore: generate PROJECT_STATUS for Sprint 153
  • Merge branch 'agentB-apps-nav-badge'
  • Merge branch 'agentA-unhealthy-ttl-fix'
  • chore: auto-commit dirty files before merge (sprint 153)
  • agentB-apps-nav-badge: implement sprint 153 tasks
  • feat: add ⚠N unhealthy-app badge to Apps nav tab (F-202)
  • agentA-unhealthy-ttl-fix: implement sprint 153 tasks
  • fix: use 10s TTL for unhealthy healthcheck cache instead of invalidating on every render (B-1092)
  • chore: write Sprint 153 brief + PM review items from Sprint 152
  • Merge branch 'agentA-health-warning-fixes'
  • chore: auto-commit dirty files before merge (sprint 152)
  • agentA-health-warning-fixes: implement sprint 152 tasks
  • fix: View Logs opens Previous tab (B-1090); invalidate stale unhealthy health cache (B-1091)
  • chore: write Sprint 152 brief + PM review items from Sprint 151
  • Merge branch 'agentA-health-dot-action'
  • chore: auto-commit dirty files before merge (sprint 151)
  • agentA-health-dot-action: implement sprint 151 tasks
  • fix: amber health dot shows inline warning with View Logs; cap _healthCache
  • chore: write Sprint 151 brief + PM review items from Sprint 150
  • Merge branch 'agentB-app-health-status-dot'
  • Merge branch 'agentA-deploy-wait-context'
  • chore: auto-commit dirty files before merge (sprint 150)
  • agentB-app-health-status-dot: implement sprint 150 tasks
  • feat: amber status dot when app is Running but HTTP unhealthy (B-1087)
  • agentA-deploy-wait-context: implement sprint 150 tasks
  • feat: add contextual wait messaging to deploy progress indicator (F-201)
  • chore: write Sprint 150 brief + PM review items from Sprint 149
  • Merge branch 'agentA-deploy-poll-timeout'
  • chore: auto-commit dirty files before merge (sprint 149)
  • agentA-deploy-poll-timeout: implement sprint 149 tasks
  • fix: add deploy poll timeout (2 min) and elapsed-time progress indicator
  • chore: write Sprint 149 brief + PM review items from Sprint 148
  • Merge branch 'agentB-empty-state-innerhtml'
  • Merge branch 'agentA-deploy-poll-and-state'
  • chore: auto-commit dirty files before merge (sprint 148)
  • agentA-deploy-poll-and-state: implement sprint 148 tasks
  • fix: remove wrong-clock deploy check and add auto-poll for app appearance (B-1085, F-199)
  • agentB-empty-state-innerhtml: implement sprint 148 tasks
  • fix: replace sub.innerHTML with DOM construction in renderEmpty (B-1084)
  • chore: write Sprint 148 brief + PM review items from Sprint 147
  • Merge branch 'agentC-targets-innerhtml-fix'
  • Merge branch 'agentB-banner-poll-fix'
  • Merge branch 'agentA-apps-empty-state'
  • chore: auto-commit dirty files before merge (sprint 147)
  • agentA-apps-empty-state: implement sprint 147 tasks
  • feat: F-198 Apps tab empty state with deploying variant
  • agentB-banner-poll-fix: implement sprint 147 tasks
  • agentC-targets-innerhtml-fix: implement sprint 147 tasks
  • fix: eliminate banner flicker on 30s poll — update elapsed span in place (B-1083)
  • fix: replace pre.innerHTML with pre.textContent in targets.js error highlighting (B-1082)
  • chore: write Sprint 147 brief + PM review items from Sprint 146
  • Merge branch 'agentC-deploy-flash-fix'
  • Merge branch 'agentB-workspace-banner-elapsed'
  • Merge branch 'agentA-crash-log-polish'
  • chore: auto-commit dirty files before merge (sprint 146)
  • agentC-deploy-flash-fix: implement sprint 146 tasks
  • fix: remove DOM flash before Apps tab navigation after successful deploy (B-1081)
  • agentA-crash-log-polish: implement sprint 146 tasks
  • fix: crash log tab polish — B-1080 flash fix + F-197 error highlighting
  • agentB-workspace-banner-elapsed: implement sprint 146 tasks
  • feat: add elapsed time to running workspace banner (F-196)
  • chore: write Sprint 146 brief + PM review items from Sprint 145
  • Merge branch 'agentC-deploy-ux-cleanup'
  • Merge branch 'agentB-workspace-stopped-escape'
  • Merge branch 'agentA-crash-logs'
  • chore: auto-commit dirty files before merge (sprint 145)
  • agentA-crash-logs: implement sprint 145 tasks
  • feat: B-1036 crash log tab — Previous (crashed) in log modal
  • agentC-deploy-ux-cleanup: implement sprint 145 tasks
  • agentB-workspace-stopped-escape: implement sprint 145 tasks
  • fix: replace Target jargon and fix post-deploy nav timing (B-1032, B-1034)
  • fix: B-1078 Back to Catalog button + B-1079 stable-connection counter reset
  • chore: write Sprint 145 brief + PM review items from Sprint 144
  • fix: detect reconnect loop on dead workspace pod (B-????)
  • test: add G1/G2 workspace startup hang reproducer (B-1058)
  • chore: Sprint 144 complete — reconnect banner, idle timeout message, title bar state
  • Merge branch 'agentB-idle-timeout-ux'
  • Merge branch 'agentA-reconnect-catalog-banner'
  • chore: auto-commit dirty files before merge (sprint 144)
  • agentA-reconnect-catalog-banner: implement sprint 144 tasks
  • feat: B-1076 — reconnect CTA banner on catalog when workspace is running
  • agentB-idle-timeout-ux: implement sprint 144 tasks
  • fix: B-1077 idle timeout message + F-195 title bar state
  • chore: Sprint 143 PM review + Sprint 144 brief
  • fix: B-1075 friendly 429 message in launchWorkspace path, B1 test locator
  • fix: launchWorkspace test selector, D2 skip guard, term reconnect btn scope
phone-agent-keiko-tv
  • fix: cleanup kills orphaned server processes on port when Ctrl+C
  • feat: personalized greeting for known callers
  • fix: stop auto-scrolling old phone conversations on poll
  • perf: pre-synthesize greeting at startup for instant first-call audio
  • feat: greeting asks caller's name + sprint 2 cleanup
  • Merge branch 'agentC-lead-capture-flow'
  • Merge branch 'agentB-caller-id-lookup'
  • Merge branch 'agentA-contacts-db'
  • agentB-caller-id-lookup: implement sprint 2 tasks
  • feat: add caller ID lookup and display in phone conversation banner
  • agentC-lead-capture-flow: implement sprint 2 tasks
  • feat: add lead capture for unknown callers
  • agentA-contacts-db: implement sprint 2 tasks
  • feat: add SQLite-backed contacts database for caller ID lookup
  • chore: auto-commit before sprint
  • chore: write Sprint 2 brief — Caller ID + Lead Capture
  • fix: timezone change updates timestamps in-place without scrolling
  • feat: add call date/time and timezone selector to phone conversation view
  • feat: add call recording with notice, caller audio playback in UI
  • fix: add echo tail window to prevent bot from hearing itself
  • fix: set inbound sample rate to 8kHz to match Telnyx L16 stream
  • fix: resample outbound audio to 8kHz for normal playback speed
  • fix: use larger audio chunks to prevent choppy playback
  • fix: correct sample rate to 8kHz for Telnyx L16 streaming
  • fix: use HTML entity for preview button icon instead of JS unicode escape
  • feat: add TTS playback to web UI with voice preview and auto-play
  • refactor: remove Telnyx speak, use Kokoro TTS exclusively for phone calls
  • chore: add model files to .gitignore
  • feat: add real-time voice selector to web UI
  • feat: WebSocket streaming via Flask on same port (Cloudflare compatible)
  • fix: revert to record-based flow with sentence-by-sentence speaking
  • feat: add setup.sh and run.sh startup scripts
  • feat: switch to WebSocket media streaming with barge-in and Kokoro TTS
  • feat: add Kokoro TTS and sentence-by-sentence streaming for phone calls
  • feat: keiko.tv phone agent — single server with web UI + Telnyx phone
  • Initial commit: Afterburner scaffolding
tool-RAG-for-split-personalities
  • docs: Sprint 170 narrative summary — v2.0 ships
  • Merge agentC-v2-docs into main
  • Merge agentB-v2-frontend into main
  • Merge agentA-v2-backend into main
  • chore: pre-merge cleanup
  • agentA-v2-backend: implement sprint 170 tasks
  • agentB-v2-frontend: implement sprint 170 tasks
  • feat: v2.0 frontend polish — README update, cache bump, dashboard banner
  • agentC-v2-docs: implement sprint 170 tasks
  • docs: Sprint 170 v2.0 release docs — ROADMAP, CHANGELOG, release notes, 26 verification tests
  • chore: write Sprint 170 brief — cleanup + v2.0 release prep
  • chore: Sprint 169 cleanup
  • chore: auto-commit between loops
  • docs: Sprint 169 narrative summary
  • Merge agentC-wizard-tests into main
  • Merge agentB-wizard-ui into main
  • Merge branch 'agentA-ai-wizard'
  • chore: pre-merge cleanup
  • agentA-ai-wizard: implement sprint 169 tasks
  • feat: add AI domain wizard with persona generation and dry-run mode
  • agentB-wizard-ui: implement sprint 169 tasks
  • agentC-wizard-tests: implement sprint 169 tasks
  • feat: add AI Domain Wizard — 3-step UI for AI-generated personas
  • test: add 39 E2E tests for AI domain wizard flow
  • chore: write Sprint 169 brief — AI domain wizard with persona generation
  • chore: Sprint 168 cleanup
  • docs: Sprint 168 narrative summary
  • Merge agentC-perf-tests into main
  • Merge agentB-perf-frontend into main
  • Merge agentA-perf-backend into main
  • chore: pre-merge cleanup
  • agentC-perf-tests: implement sprint 168 tasks
  • test: add 27 performance regression tests for Sprint 168
  • agentB-perf-frontend: implement sprint 168 tasks
  • feat: client-side performance optimizations — skeleton loading, infinite scroll, deferred JS
  • agentA-perf-backend: implement sprint 168 tasks
  • feat: add response caching, DB indexes, and performance endpoint
  • chore: auto-commit before sprint 168
  • chore: write Sprint 168 brief — performance optimization (caching, lazy loading, profiling)
  • chore: Sprint 167 cleanup
  • docs: Sprint 167 narrative summary
  • Merge agentC-auth-verification into main
  • Merge agentB-auth-integration into main
  • Merge agentA-auth-backend into main
  • chore: pre-merge cleanup
  • agentB-auth-integration: implement sprint 167 tasks
  • Wire auth UI to backend endpoints with JWT integration
  • agentC-auth-verification: implement sprint 167 tasks
  • test: add 29 auth verification tests for Sprint 167
  • agentA-auth-backend: implement sprint 167 tasks
  • feat: add 22 auth backend tests for Sprint 167
  • chore: auto-commit between loops
  • chore: write Sprint 167 brief — auth backend carry-forward from S166
  • chore: Sprint 166 cleanup
  • docs: Sprint 166 narrative summary (partial — auth backend carry-forward)
  • Merge agentC-auth-tests into main
  • Merge agentB-login-ui into main
  • Merge agentA-user-auth into main
  • chore: pre-merge cleanup
  • agentA-user-auth: partial — test domain cleanup (auth backend not implemented, process died)
  • feat: add user accounts with JWT auth and user-scoped conversations
  • agentB-login-ui: implement sprint 166 tasks
  • feat: add login/register UI pages and auth state management
  • agentC-auth-tests: implement sprint 166 tasks
  • feat: add 34 auth E2E tests for Sprint 166 user authentication
  • chore: write Sprint 166 brief — user accounts, JWT auth, login UI
  • chore: auto-commit between loops
traceable-searchable-adr-memory-index
  • fix: handle node:test output format in collect_metrics test count
237 commits

Terminal UX Overhaul and RAG Persistence Layer Implementation

Enhanced the web terminal with ANSI rendering, search, and auto-reconnect capabilities while adding server-side conversation persistence and persona memory to the RAG tool. These updates stabilize core infrastructure and enable stateful, resumable AI interactions across sessions.

everyone-ai 156tool-RAG-for-split-personalities 81
▸ how to apply & commit details

How you can apply this

  • Implement robust terminal features by integrating xterm SearchAddon for in-terminal search, rendering ANSI color codes, and handling bracketed paste mode for better input stability.
  • Prevent memory leaks and UI flicker by registering event listeners outside reconnect loops and skipping DOM rebuilds when workspace data remains unchanged.
  • Enable stateful AI sessions by building server-side APIs for conversation persistence and persona memory, allowing users to resume chats with context intact.
  • Ensure reliability in multi-agent workflows by adding comprehensive Playwright E2E test suites covering core pages, export flows, and regression scenarios.

Commits

everyone-ai
  • fix: terminal reconnect button (D2), expose __termWs, fix deploy ProxyCommand, setup legal/hr
  • chore: Sprint 143 complete — log download plain text, tooltip listener fix, click-to-copy
  • Merge branch 'agentB-log-click-to-copy'
  • Merge branch 'agentA-log-raw-text-fix'
  • chore: auto-commit dirty files before merge (sprint 143)
  • agentA-log-raw-text-fix: implement sprint 143 tasks
  • Fix log download HTML entities (B-1074) and help tooltip listener leak (B-1073)
  • agentB-log-click-to-copy: implement sprint 143 tasks
  • feat: F-194 click-to-copy for log modal lines
  • chore: Sprint 142 PM review + Sprint 143 brief
  • chore: Sprint 142 complete — ANSI color logs, download button, listener fix
  • Merge branch 'agentB-log-download-and-listener-fix'
  • Merge branch 'agentA-log-ansi-colors'
  • chore: auto-commit dirty files before merge (sprint 142)
  • agentA-log-ansi-colors: implement sprint 142 tasks
  • F-192: render ANSI color codes in log modal; fix help-tip listener leak
  • agentB-log-download-and-listener-fix: implement sprint 142 tasks
  • feat: F-193 log download button + B-1073 help tooltip listener leak fix
  • chore: Sprint 141 PM review + Sprint 142 brief
  • chore: Sprint 141 complete — terminal polish + log modal fixes
  • Merge branch 'agentB-log-modal-polish'
  • Merge branch 'agentA-terminal-polish'
  • chore: auto-commit dirty files before merge (sprint 141)
  • agentA-terminal-polish: implement sprint 141 tasks
  • Terminal polish: search bar overflow fix + keyboard shortcuts help tooltip
  • agentB-log-modal-polish: implement sprint 141 tasks
  • fix: Sprint 141 agentB — log modal polish (B-1053, B-1054, B-1055)
  • chore: write Sprint 141 brief
  • chore: Sprint 140 PM review + Sprint 141 brief
  • chore: Sprint 140 complete — terminal search, font fix, title update
  • Merge branch 'agentB-terminal-title-and-font-fix'
  • Merge branch 'agentA-terminal-search'
  • chore: auto-commit dirty files before merge (sprint 140)
  • agentB-terminal-title-and-font-fix: implement sprint 140 tasks
  • fix: terminal title update (F-190) and font size reopen comment (B-1071)
  • agentA-terminal-search: implement sprint 140 tasks
  • F-189: add in-terminal search via xterm SearchAddon
  • chore: Sprint 139 PM review, narrative summary, Sprint 140 brief
  • chore: Sprint 139 PROJECT_STATUS — listener fix, copy-on-select, font size
  • Merge branch 'agentB-terminal-ux-polish'
  • Merge branch 'agentA-terminal-listener-fix'
  • chore: auto-commit dirty files before merge (sprint 139)
  • agentA-terminal-listener-fix: implement sprint 139 tasks
  • B-1070 verified: onData listener correctly registered once outside reconnect loop
  • agentB-terminal-ux-polish: implement sprint 139 tasks
  • feat: add copy-on-select and font size control to terminal (F-187, F-188)
  • chore: Sprint 138 PM review, narrative summary, Sprint 139 brief
  • chore: Sprint 138 complete — auto-reconnect, paste mode, reconnect button
  • Merge branch 'agentB-terminal-paste-and-reconnect-ui'
  • Merge branch 'agentA-terminal-auto-reconnect'
  • chore: auto-commit dirty files before merge (sprint 138)
  • agentB-terminal-paste-and-reconnect-ui: implement sprint 138 tasks
  • feat: F-186 bracketed paste mode + disconnected reconnect button
  • agentA-terminal-auto-reconnect: implement sprint 138 tasks
  • Add terminal auto-reconnect (F-185) and fix status dot initial state (B-1069)
  • chore: Sprint 137 PM review, narrative summary, Sprint 138 brief
  • chore: Sprint 137 PROJECT_STATUS — terminal size fix, status dot, sort default
  • Merge branch 'agentB-sort-default-option'
  • Merge branch 'agentA-terminal-status-and-size'
  • chore: auto-commit dirty files before merge (sprint 137)
  • agentA-terminal-status-and-size: implement sprint 137 tasks
  • feat: F-184 fix PTY default size, F-183 add terminal connection status dot
  • agentB-sort-default-option: implement sprint 137 tasks
  • fix: B-1068 sort control precedence fix and Default option
  • chore: Sprint 136 PM review, narrative summary, Sprint 137 brief
  • chore: Sprint 136 PROJECT_STATUS — clickable label, sort, reduced-motion, tmux fix
  • fix: B-1067 disable tmux status bar in web terminal
  • Merge branch 'agentB-reduced-motion'
  • Merge branch 'agentA-stability-label-click-and-sort'
  • chore: auto-commit dirty files before merge (sprint 136)
  • agentA-stability-label-click-and-sort: implement sprint 136 tasks
  • feat: B-1065 stability label click sets Degraded filter; F-182 Most restarts sort
  • agentB-reduced-motion: implement sprint 136 tasks
  • fix: B-1066 wrap pulse animations in prefers-reduced-motion media query
  • chore: Sprint 135 PM review, narrative summary, Sprint 136 brief
  • chore: Sprint 135 PROJECT_STATUS — health guard, degraded filter, pulse animation
  • Merge branch 'agentB-health-pulse'
  • Merge branch 'agentA-health-filter-and-guard'
  • chore: auto-commit dirty files before merge (sprint 135)
  • agentA-health-filter-and-guard: implement sprint 135 tasks
  • Fix stability indicator guard and add Degraded app filter
  • agentB-health-pulse: implement sprint 135 tasks
  • feat: F-180 app card health pulse animation on status badge
  • chore: Sprint 134 PM review, narrative summary, Sprint 135 brief
  • chore: Sprint 134 PROJECT_STATUS — DOM cache, copy hover, restart count indicator
  • Merge branch 'agentB-restart-count'
  • Merge branch 'agentA-targets-dom-cache'
  • chore: auto-commit dirty files before merge (sprint 134)
  • agentA-targets-dom-cache: implement sprint 134 tasks
  • Sprint 134: Apps view DOM cache (B-1062) and copy ID hover (B-1063)
  • agentB-restart-count: implement sprint 134 tasks
  • feat: F-179 app card stability indicator (restartCount)
  • chore: Sprint 133 PM review, narrative summary, Sprint 134 brief
  • chore: Sprint 133 PROJECT_STATUS — tooltip clamp, deployed time, copy ID, flicker fix
  • Merge branch 'agentB-workspace-flicker-fix'
  • Merge branch 'agentA-app-card-polish'
  • chore: auto-commit dirty files before merge (sprint 133)
  • agentA-app-card-polish: implement sprint 133 tasks
  • App card polish: viewport clamp, deployed label, copy ID (Sprint 133)
  • agentB-workspace-flicker-fix: implement sprint 133 tasks
  • fix: B-1056 workspace flicker — add pinned to cache key, invalidate in _togglePin
  • chore: Sprint 132 PM review, narrative summary, Sprint 133 brief
  • chore: Sprint 132 PROJECT_STATUS — try-again fix, elapsed timer, log hover preview
  • Merge branch 'agentB-log-tail-endpoint'
  • Merge branch 'agentA-launch-polish'
  • chore: auto-commit dirty files before merge (sprint 132)
  • agentB-log-tail-endpoint: implement sprint 132 tasks
  • agentA-launch-polish: implement sprint 132 tasks
  • Fix Try Again button (B-1060) and add launch elapsed timer (F-175)
  • feat: F-176 log tail endpoint and app card hover preview
  • chore: Sprint 131 PM review + sprint-131 summary + Sprint 132 brief
  • chore: Sprint 131 PROJECT_STATUS — launch progress, error state, log highlight
  • Merge branch 'agentB-log-highlight'
  • Merge branch 'agentA-launch-progress'
  • chore: auto-commit dirty files before merge (sprint 131)
  • agentB-log-highlight: implement sprint 131 tasks
  • feat: F-173 log search result highlighting with amber mark tags
  • agentA-launch-progress: implement sprint 131 tasks
  • feat: workspace launch progress steps + pod failure error state (F-174, B-1058)
  • chore: Sprint 130 PM review + sprint-130 summary + Sprint 131 brief
  • chore: Sprint 130 PROJECT_STATUS — ANSI strip, line count, clickable badge, flicker fix
  • fix: listWorkspaces pod lookup broken after B-923 naming change
  • Merge branch 'agentB-workspace-render-fix'
  • Merge branch 'agentA-log-modal-polish-2'
  • chore: auto-commit dirty files before merge (sprint 130)
  • agentA-log-modal-polish-2: implement sprint 130 tasks
  • feat: Sprint 130 — ANSI strip, live line count, clickable status badge
  • agentB-workspace-render-fix: implement sprint 130 tasks
  • fix: B-1056 skip workspace DOM rebuild when data unchanged to eliminate flicker
  • chore: Sprint 129 PM review + sprint-129 summary + Sprint 130 brief
  • chore: Sprint 129 PROJECT_STATUS — log modal polish + workspace pinning
  • Merge branch 'agentB-workspace-pinning'
  • Merge branch 'agentA-log-modal-polish'
  • chore: auto-commit dirty files before merge (sprint 129)
  • agentB-workspace-pinning: implement sprint 129 tasks
  • feat: F-170 workspace pinning with star toggle and pinned section
  • agentA-log-modal-polish: implement sprint 129 tasks
  • Log modal polish: Cmd+F focus, buffer cap, download, app card duration
  • chore: Sprint 128 PM review + sprint-128 summary + Sprint 129 brief
  • chore: Sprint 128 PROJECT_STATUS — log search, reconnect, app search, idle stop, workspace search
  • Merge branch 'agentB-idle-stop-and-workspace-search'
  • Merge branch 'agentA-log-and-app-search'
  • chore: auto-commit dirty files before merge (sprint 128)
  • agentB-idle-stop-and-workspace-search: implement sprint 128 tasks
  • agentA-log-and-app-search: implement sprint 128 tasks
  • feat: F-166 idle badge quick-stop action + F-167 workspace search bar
  • feat: log modal search + reconnect, apps view search/status filter
  • chore: Sprint 127 summary + PM review + Sprint 128 brief
  • chore: Sprint 127 PROJECT_STATUS — live log streaming, stopped workspace indicator, idle + timestamp fixes
  • Merge branch 'agentB-log-ui-and-fixes'
  • Merge branch 'agentA-log-stream-backend'
  • chore: auto-commit dirty files before merge (sprint 127)
  • agentB-log-ui-and-fixes: implement sprint 127 tasks
  • feat: F-163 log streaming modal, F-164 stopped workspace badge, B-1050/B-1049 fixes
  • agentA-log-stream-backend: implement sprint 127 tasks
  • F-163: add GET /api/targets/:id/logs/stream SSE endpoint
tool-RAG-for-split-personalities
  • docs: Sprint 165 narrative summary
  • Merge agentC-docs-tests into main
  • Merge agentB-web-readme into main
  • Merge agentA-code-cleanup into main
  • chore: pre-merge cleanup
  • agentC-docs-tests: implement sprint 165 tasks
  • agentB-web-readme: implement sprint 165 tasks
  • agentA-code-cleanup: implement sprint 165 tasks
  • chore: clean up Python source — remove dead imports, stale test domains, update docs
  • chore: write Sprint 165 brief — cleanup sprint (docs, README, roadmap, test health)
  • chore: Sprint 164 cleanup
  • docs: Sprint 164 narrative summary
  • Merge agentC-persistence-tests into main
  • Merge agentB-resume-ui into main
  • Merge agentA-persistence into main
  • chore: pre-merge cleanup
  • agentB-resume-ui: implement sprint 164 tasks
  • feat: server-side conversations, persona memory sidebar, resume UI
  • agentA-persistence: implement sprint 164 tasks
  • feat: add server-side conversation persistence and persona memory APIs
  • agentC-persistence-tests: implement sprint 164 tasks
  • test: add 33 E2E tests for conversation persistence and persona memory
  • chore: auto-commit before sprint 164
  • chore: write Sprint 164 brief — conversation persistence, persona memory, resume UI
  • chore: Sprint 163 cleanup
  • docs: Sprint 163 narrative summary
  • Merge agentC-e2e-flow into main
  • Merge agentB-mobile-polish into main
  • Merge agentA-export-api into main
  • chore: pre-merge cleanup
  • agentB-mobile-polish: implement sprint 163 tasks
  • feat: mobile responsive polish across all pages + export/share buttons
  • agentC-e2e-flow: implement sprint 163 tasks
  • agentA-export-api: implement sprint 163 tasks
  • test: add Sprint 163 e2e Playwright tests — 36 tests across 6 groups
  • feat: add conversation export/share/list/delete endpoints and domain safety
  • chore: auto-commit between loops
  • chore: write Sprint 163 brief — mobile polish, conversation export, e2e flow
  • docs: Sprint 162 narrative summary
  • Merge agentC-regression-tests into main
  • Merge agentB-conversation-ui into main
  • Merge agentA-api-fixes into main
  • chore: pre-merge cleanup
  • agentA-api-fixes: implement sprint 162 tasks
  • feat: rate limiter static bypass, template preview, conversation context, from-template URL
  • agentB-conversation-ui: implement sprint 162 tasks
  • feat: add conversation follow-up UI and template preview modal
  • agentC-regression-tests: implement sprint 162 tasks
  • test: add 46 Playwright e2e tests for Sprint 162 features
  • chore: auto-commit before sprint 162
  • chore: write Sprint 162 brief — rate limit fix, conversation mode, template preview
  • chore: auto-commit between loops
  • chore: Sprint 161 complete — cleanup worktrees, fix egg-link
  • docs: Sprint 161 narrative summary
  • Merge agentC-playwright-audit into main
  • Merge agentB-web-polish into main
  • Merge agentA-domain-templates into main
  • chore: pre-merge cleanup
  • agentB-web-polish: implement sprint 161 tasks
  • fix: add nav.js, nav.css, and light-mode CSS to search, templates, gallery pages
  • agentC-playwright-audit: implement sprint 161 tasks
  • feat: add 72 Playwright E2E tests covering all 12 core pages
  • agentA-domain-templates: implement sprint 161 tasks
  • feat: add domain templates gallery with 6 templates and from-template endpoint
  • fix: clean merge order lines in Sprint 161 brief
  • chore: auto-commit before sprint 161
  • chore: write Sprint 161 brief — domain templates, web polish, Playwright audit
  • chore: auto-commit runtime data
  • chore: auto-commit runtime data
  • chore: Sprint 160 — final session cleanup, all regen complete
  • feat: Q91-100 regeneration complete with upgraded prompt
  • chore: auto-commit Q91-100 regen (nearly complete)
  • chore: auto-commit Q91-100 regen progress
  • chore: auto-commit Q91-100 regen (6/10 done)
  • chore: auto-commit Q91-100 regen progress
  • feat: upgraded 20 random questions + Q91-100 with longer prompt
  • feat: add --force flag to regeneration script
  • docs: archive Sprint 159 brief — regen launched
  • chore: write Sprint 159 brief — pilot regeneration
  • chore: auto-commit runtime data
  • feat: 100% RAG coverage — all 600 answers complete
355 commits

RAG Workbench Reaches 91% With Reusable Domain Tooling

A rapid sprint run pushed tool-RAG-for-split-personalities into a fuller multi-domain RAG workbench, ending at 91% coverage with v1.6 prep underway. The day also added ADR memory-index improvements: fixed post-merge sprint live detection and introduced a /summarize skill with a project health panel and MCP tool.

tool-RAG-for-split-personalities 352traceable-searchable-adr-memory-index 3
▸ how to apply & commit details

How you can apply this

  • Built reusable domain infrastructure: evidence ingestion, batch RAG APIs, domain import/export bundles, duplication, gallery, marketplace, and comparison views.
  • Expanded answer inspection workflows with a question browser, keyboard shortcuts, bookmarks, deep links, voting, stats dashboards, word clouds, best-answers API, and Markdown export.
  • Hardened product operations through cache busting, health dashboards, OpenAPI/playground docs, CLI/Docker quick starts, rate limiting, API keys, admin UI, and milestone test stabilization.
  • Added project-status reuse in the ADR memory index via /summarize plus an MCP tool, while fixing active-sprint detection after merges.

Commits

tool-RAG-for-split-personalities
  • chore: auto-commit RAG progress (91% — 9 questions remaining)
  • docs: archive Sprint 158 brief — RAG auto-completion monitor active
  • chore: write Sprint 158 brief
  • chore: auto-commit RAG progress (85% — Q67-86 almost done)
  • docs: archive Sprint 157 brief
  • feat: Sprint 157 — v1.6.0 prep, 84%+ RAG coverage
  • chore: write Sprint 157 brief — v1.6 RAG completion milestone
  • chore: auto-commit RAG progress (84%)
  • docs: archive Sprint 156 brief
  • feat: Sprint 156 — Best Answers API + Markdown Export
  • chore: write Sprint 156 brief
  • chore: auto-commit RAG progress (81%)
  • chore: Sprint 155 — Documentation cleanup (5th cycle), 78% RAG
  • chore: auto-commit RAG progress (78%)
  • docs: archive Sprint 154 brief
  • feat: Sprint 154 — Cache bust all JS/CSS to v=154
  • chore: write Sprint 154 brief
  • feat: Sprint 153 — Upgrade RAG prompt for longer, more detailed answers
  • chore: auto-commit RAG progress (75%)
  • docs: archive Sprint 152 brief
  • feat: Sprint 152 — Word Cloud API + Persona Badge Tests
  • chore: write Sprint 152 brief
  • chore: auto-commit RAG progress (72%)
  • docs: archive Sprint 151 brief
  • feat: Sprint 151 — Keyboard Shortcuts for Question Browser
  • chore: write Sprint 151 brief
  • chore: auto-commit RAG progress (69%)
  • chore: Sprint 150 — Documentation cleanup (5th cycle)
  • chore: auto-commit RAG progress (67% coverage)
  • docs: archive Sprint 149 brief
  • feat: Sprint 149 — Random Question Button + Quality Indicator Dots
  • chore: write Sprint 149 brief
  • feat: RAG Q57-66 complete (66% coverage), Q67-86 generating
  • docs: archive Sprint 148 brief — v1.5 released
  • feat: v1.5.0 — 27-sprint session milestone
  • chore: write Sprint 148 brief — v1.5 release milestone
  • chore: auto-commit RAG progress (63% coverage)
  • docs: archive Sprint 147 brief
  • feat: Sprint 147 — Streamlined Nav + More Dropdown + API Health
  • chore: write Sprint 147 brief
  • chore: auto-commit RAG progress (60% coverage)
  • docs: archive Sprint 146 brief
  • feat: Sprint 146 — Vote Buttons on Answers + RAG Progress
  • chore: write Sprint 146 brief
  • docs: archive Sprint 145 brief
  • chore: Sprint 145 — Documentation cleanup & refresh (5th cycle)
  • feat: RAG Q37-56 complete + Q57-66 generating (57% coverage)
  • docs: archive Sprint 144 brief
  • feat: Sprint 144 — Fix Coverage Calc + Dark/Light Mode Toggle
  • chore: write Sprint 144 brief
  • docs: archive Sprint 143 brief
  • feat: Sprint 143 — Home Dashboard with Overview + Quick Links
  • chore: write Sprint 143 brief
  • docs: archive Sprint 142 brief
  • feat: Sprint 142 — Bookmarks Page + Recent Activity API
  • chore: write Sprint 142 brief
  • docs: archive Sprint 141 brief
  • feat: Sprint 141 — Bookmark UI Buttons + RAG Progress Bar
  • chore: write Sprint 141 brief
  • chore: auto-commit RAG progress (48% coverage)
  • docs: archive Sprint 140 brief
  • chore: Sprint 140 — Documentation cleanup & refresh (5th cycle)
  • docs: archive Sprint 139 brief
  • feat: Sprint 139 — Single Question API + Share URL Deep-Linking
  • chore: write Sprint 139 brief
  • docs: archive Sprint 138 brief
  • feat: Sprint 138 — Answer Stats Dashboard + Stats Nav Link
  • chore: write Sprint 138 brief
  • docs: archive Sprint 137 brief
  • feat: Sprint 137 — Search Nav Link + Answer Stats API
  • chore: write Sprint 137 brief
  • docs: archive Sprint 136 brief
  • feat: Sprint 136 — Cross-Domain Search + Bookmarks API
  • chore: write Sprint 136 brief
  • chore: auto-commit RAG progress
  • docs: archive Sprint 135 brief
  • chore: Sprint 135 — Documentation cleanup & refresh (5th cycle)
  • docs: archive Sprint 134 brief
  • feat: Sprint 134 — Domain Switcher + Domain Name Display
  • chore: write Sprint 134 brief
  • feat: full RAG answers for Q17-Q36 complete (36% coverage)
  • fix: domain slug resolution for all endpoints + regression tests
  • docs: archive Sprint 133 brief
  • feat: Sprint 133 — Domain Comparison View + Compare API
  • chore: write Sprint 133 brief
  • docs: Sprint 132 narrative summary + archive brief
  • feat: Sprint 132 — Climate Science Domain + Domain Duplication
  • chore: auto-commit RAG progress (Q33/Q36)
  • chore: write Sprint 132 brief
  • docs: Sprint 131 narrative summary + archive brief
  • feat: Sprint 131 — Domain Import Button + Mobile Responsive Nav
  • chore: write Sprint 131 brief
  • docs: Sprint 130 narrative summary + archive brief
  • chore: Sprint 130 — Documentation cleanup & refresh (5th cycle)
  • docs: Sprint 129 narrative summary + archive brief
  • feat: Sprint 129 — Domain Gallery + Nav Expansion + Slug Fallback
  • chore: write Sprint 129 brief
  • chore: auto-commit RAG progress (Q17-Q24 generating)
  • docs: Sprint 128 narrative summary + archive brief
  • feat: Sprint 128 — Domain Import/Export Bundles + Shared Navigation
  • chore: write Sprint 128 brief
  • docs: Sprint 127 narrative summary + archive brief
  • feat: Sprint 127 — Evidence Ingestion Module + Batch RAG APIs
  • chore: auto-commit runtime data + RAG progress
  • chore: write Sprint 127 brief
  • docs: Sprint 126 narrative summary + archive brief
  • feat: Sprint 126 — Persona Update API + Wizard Link + Batch RAG Q17-36 (running)
  • chore: write Sprint 126 brief
  • chore: auto-commit runtime data
  • docs: Sprint 125 narrative summary + archive brief
  • chore: Sprint 125 — Documentation cleanup & refresh
  • chore: write Sprint 125 brief + update CLAUDE.md test count
  • docs: Sprint 124 narrative summary + archive brief
  • feat: Sprint 124 — Domain Wizard + Regenerator + RAG Q7-16 Complete
  • chore: write Sprint 124 brief
  • docs: Sprint 123 narrative summary + archive brief
  • feat: Sprint 123 — Domain Factory Status API + Playwright E2E Tests
  • chore: write Sprint 123 brief
  • docs: Sprint 122 narrative summary + archive brief
  • fix: evidence popup fetch in markdown.js missing evidence- prefix
  • feat: Sprint 122 — Answer Quality Metrics + Batch RAG Q7-16 (in progress)
  • chore: auto-commit before sprint 122
  • fix: bump evidence-popups cache version to v=122
  • fix: evidence links now resolve + list/heading CSS for answers
  • chore: write Sprint 122 brief
  • feat: full RAG answers for questions 4-6 (3 more questions × 6 personas)
  • chore: archive Sprint 121 brief
  • feat: Sprint 121 — Domain Health Dashboard + Auto-Diagnostics
  • chore: auto-commit before sprint 121 retry
  • chore: commit pending changes — Sprint 121 in progress
  • chore: write Sprint 121 brief + auto-commit
  • chore: archive Sprint 120 brief — v1.3 milestone
  • docs: Sprint 120 milestone — v1.3, full docs refresh
  • chore: write Sprint 120 brief + auto-commit
  • chore: archive Sprint 119 brief
  • feat: Sprint 119 — Persona Timeline + Evidence Graph
  • feat: Sprint 116 — Conversation Memory + Persona Recall
  • chore: write Sprint 119 brief + auto-commit
  • chore: archive Sprint 118 brief
  • feat: Sprint 118 — Confidence Scores + Evidence Ratings
  • chore: write Sprint 118 brief + auto-commit
  • chore: archive Sprint 117 brief
  • feat: Sprint 117 — Persona Debate Mode + Threaded Responses
  • chore: write Sprint 117 brief + auto-commit
  • chore: archive Sprint 116 brief
  • feat: Sprint 116 — Conversation Memory + Persona Recall
  • chore: auto-commit before sprint 116
  • chore: write Sprint 116 brief + save memory
  • chore: archive Sprint 115 brief — milestone stabilization
  • docs: Sprint 115 milestone — fix all stale tests, v1.2 prep
  • feat: Sprint 114 — Task Scheduler + Cron Jobs
  • chore: write Sprint 115 brief + auto-commit
  • chore: archive Sprint 114 brief
  • feat: Sprint 114 — Task Scheduler + Cron Jobs
  • chore: write Sprint 114 brief + auto-commit
  • chore: archive Sprint 113 brief — 2000 tests milestone!
  • 🎉 Sprint 113 — 2000 Tests Milestone + Data Export Formats
  • chore: write Sprint 113 brief + auto-commit
  • chore: archive Sprint 112 brief
  • feat: Sprint 112 — Export/Import + Backup System
  • chore: write Sprint 112 brief + auto-commit
  • chore: archive Sprint 111 brief
  • feat: Sprint 111 — Rate Limiting + API Key Management + Admin Dashboard
  • chore: write Sprint 111 brief + auto-commit
  • chore: archive Sprint 110 brief — v1.1 milestone
  • docs: Sprint 110 milestone — v1.1 prep, full docs refresh
  • chore: write Sprint 110 brief + auto-commit
  • chore: archive Sprint 109 brief
  • feat: Sprint 109 — Embeddable Widget + White-Label Support
  • chore: write Sprint 109 brief + auto-commit
  • chore: archive Sprint 108 brief
  • feat: Sprint 108 — Voting System + Persona Leaderboard
  • chore: write Sprint 108 brief + auto-commit
  • chore: archive Sprint 107 brief
  • feat: Sprint 107 — Multi-Language Personas + Comparison View
  • chore: write Sprint 107 brief + auto-commit
  • chore: archive Sprint 106 brief
  • feat: Sprint 106 — Advanced Search + Full-Text Filter
  • chore: write Sprint 106 brief — Advanced Search + Full-Text Filter
  • feat: Sprint 104 — Plugin System + Analytics Dashboard
  • chore: archive Sprint 105 brief
  • docs: Sprint 105 milestone — README, ROADMAP, LOOP_STATUS refresh
  • chore: write Sprint 105 brief — Milestone Stabilization
  • chore: archive Sprint 104 brief
  • feat: Sprint 104 — Plugin System + Analytics Dashboard
  • feat: Sprint 103 — PWA + Offline + Notifications
  • feat: Sprint 102 — Real-Time Presence + User Comments
  • chore: fix sprint102 stale DB test + write Sprint 104 brief
  • feat: Sprint 101 — Webhooks + Event System
  • chore: archive Sprint 103 brief
  • feat: Sprint 103 — PWA + Offline Support + Push Notifications
  • chore: auto-commit before sprint 103
  • chore: write Sprint 103 brief — PWA + Offline + Notifications
  • chore: archive Sprint 102 brief
  • feat: Sprint 102 — Real-Time Presence + User Comments
  • chore: auto-commit before sprint 102
  • chore: write Sprint 102 brief — Real-Time Collaboration + Presence
  • chore: archive Sprint 101 brief
  • feat: Sprint 101 — Webhooks + Event System
  • chore: auto-commit before sprint 101
  • chore: write Sprint 101 brief — Webhooks + Event System
  • fix: update all milestone tests for v1.0 (100 sprints, 400+ features)
  • fix: update milestone_50 test for sprint 100+
  • chore: archive Sprint 100 brief — v1.0 complete
  • 🎉 Sprint 100 — v1.0 Milestone Release
  • feat: Sprint 99 — response cache + performance metrics + v1.0 prep
  • chore: auto-commit before sprint 100
  • chore: write Sprint 100 brief — v1.0 Milestone Release
  • chore: archive Sprint 99 brief
  • feat: Sprint 99 — Response Cache + Performance Metrics + v1.0 Prep
  • chore: auto-commit before sprint 99
  • chore: write Sprint 99 brief — Performance + Caching + Sprint 100 Prep
  • chore: archive Sprint 98 brief
  • feat: Sprint 98 — API Docs + Interactive Playground + OpenAPI
  • chore: auto-commit before sprint 98
  • chore: write Sprint 98 brief — API Docs + Playground + OpenAPI
  • chore: archive Sprint 97 brief
  • feat: Sprint 97 — CLI Installer + Quick Start + Docker
  • chore: auto-commit before sprint 97
  • fix: test stabilization — 0 failures
  • chore: write Sprint 97 brief — CLI Installer + Quick Start + Docker
  • chore: archive Sprint 96 brief, clean worktrees
  • feat: Sprint 96 — Domain Marketplace + Community Templates
  • feat: marketplace browse page
  • feat: seed marketplace with built-in templates
  • chore: auto-commit before sprint 96
  • chore: write Sprint 96 brief — Domain Marketplace + Community Templates
  • chore: archive Sprint 95 brief, clean worktrees
  • docs: Sprint 95 Milestone — Full Documentation Refresh
  • chore: auto-commit before sprint 95
  • chore: write Sprint 95 brief — Milestone Stabilization + Docs Refresh
  • chore: clean Sprint 94 worktrees
  • feat: Sprint 94 — Mobile Responsive + Share Links + Factory Wizard
  • chore: auto-commit before sprint 94
  • chore: write Sprint 94 brief — Mobile Responsive + Share + Factory Wizard
  • chore: archive Sprint 93 brief, clean worktrees
  • feat: Sprint 93 — Expand/Collapse Fix + Generate Buttons + Batch Verify
  • chore: auto-commit before sprint 93
  • chore: write Sprint 93 brief — Batch RAG + Question Browser Polish
  • chore: archive Sprint 92 brief, clean worktrees
  • feat: Sprint 92 — Markdown Rendering + Evidence Links on Questions Page
  • chore: write Sprint 92 brief — Markdown Rendering + Evidence Links
  • chore: archive Sprint 91 brief, clean worktrees
  • feat: Sprint 91 — Cache Busting, Enhanced Templates, Generic Questions
  • fix: prevent answer section clicks from collapsing the question card
  • chore: commit pending changes before run.sh restart
  • feat: add tunnel watchdog to run.sh — auto-restarts cloudflared
  • chore: auto-commit before sprint 91
  • feat: full RAG pipeline answers for first 3 questions
  • chore: write Sprint 91 brief — Cache Busting, Batch LLM, Generic Factory
  • fix: normalize pregenerated API to always return {short, long} + no-cache headers
  • fix: add cache-busting version to questions.js script tag
  • chore: archive Sprint 90 brief, clean worktrees
  • feat: Sprint 90 — Milestone Stabilization + LLM Polish
  • feat: Question Browser UX polish — transitions, word count, AI badge
  • chore: write Sprint 90 brief — Milestone Stabilization + LLM Polish
  • feat: short/long expandable answers in Question Browser
  • chore: archive Sprint 89 brief, clean worktrees
  • feat: Sprint 89 — LLM Answer Generation + Audio Pipeline
  • chore: auto-commit before sprint 89
  • chore: write Sprint 89 brief — LLM Answer Generation + Audio Pipeline
  • chore: archive Sprint 88 brief, clean up worktrees
  • feat: Sprint 88 — Domain Factory Power-Up
  • chore: write Sprint 88 brief — Domain Factory Power-Up
  • fix: extract service worker registration to external JS for CSP compliance
  • fix: extract questions.js to external file, fix CSP and answer parsing
  • feat: Sprint 87 — 600 Pre-Generated Answers + Question Browser
  • chore: auto-commit before sprint 87
  • chore: write Sprint 87 brief — Pre-generate Answers + Question Browser
  • chore: Sprint 86 brief history
  • feat: Sprint 86 — Question Runner + Question Analytics
  • chore: auto-commit before sprint 86
  • chore: write Sprint 86 brief — Question Runner + Analytics
  • feat: Sprint 85 — 85th Milestone + 100 JFK Questions 🏆🏆🏆🏆🏆🏆🏆🏆
  • chore: auto-commit before sprint 85
  • chore: write Sprint 85 brief — 85th Milestone + Question Generator (100 JFK Questions)
  • chore: Sprint 84 brief history
  • feat: Sprint 84 — PDF Extraction + Evidence Quality Scoring
  • chore: auto-commit before sprint 84
  • chore: write Sprint 84 brief — PDF Extraction + Evidence Quality
  • feat: Sprint 83 — Python SDK + SDK Documentation
  • chore: auto-commit before sprint 83
  • chore: write Sprint 83 brief — Python SDK + SDK Docs
  • feat: Sprint 82 — Database Migrations + DB Inspector
  • chore: auto-commit before sprint 82
  • chore: write Sprint 82 brief — Migrations + DB Inspector
  • feat: Sprint 81 — Alerting System + System Dashboard
  • chore: auto-commit before sprint 81
  • chore: write Sprint 81 brief — Alerting + System Dashboard
  • chore: Sprint 80 brief history
  • feat: Sprint 80 — 80th Milestone + Config Validation 🏆🏆🏆🏆🏆🏆🏆
  • chore: auto-commit before sprint 80
  • chore: write Sprint 80 brief — 80th Milestone + Config Validation
  • feat: Sprint 79 — Federation Protocol + Bulk Import/Export
  • chore: auto-commit before sprint 79
  • chore: write Sprint 79 brief — Federation + Bulk Import
  • feat: Sprint 78 — Prompt Templates + Stream Progress
  • chore: auto-commit before sprint 78
  • chore: write Sprint 78 brief — Prompt Templates + Streaming
  • chore: Sprint 77 brief history
  • feat: Sprint 77 — Structured Logging + Error Tracking
  • chore: auto-commit before sprint 77
  • chore: write Sprint 77 brief — Structured Logging + Error Tracking
  • feat: Sprint 76 — Multi-Tier Cache + Cache Warming
  • chore: auto-commit before sprint 76
  • chore: write Sprint 76 brief — Multi-Tier Cache + Warming
  • feat: Sprint 75 — 75th Milestone + API Docs Generator 🏆🏆🏆🏆🏆🏆
  • chore: auto-commit before sprint 75
  • chore: write Sprint 75 brief — 75th Milestone + API Docs Gen
  • feat: Sprint 74 — Domain Marketplace + Ratings
  • chore: auto-commit before sprint 74
  • chore: write Sprint 74 brief — Marketplace + Ratings
  • chore: Sprint 73 brief history
  • feat: Sprint 73 — Topic Modeling + Response Comparison
  • chore: auto-commit before sprint 73
  • chore: write Sprint 73 brief — Topic Modeling + Response Diff
  • feat: Sprint 72 — Event Sourcing + Undo/Redo
  • chore: auto-commit before sprint 72
  • chore: write Sprint 72 brief — Event Sourcing + Undo/Redo
  • feat: Sprint 71 — Docker Containerization + Health Dashboard
  • chore: auto-commit before sprint 71
  • chore: write Sprint 71 brief — Docker + Health Dashboard
  • feat: Sprint 70 — 70th Milestone + Backup/Restore 🏆🏆🏆🏆🏆
  • chore: auto-commit before sprint 70
  • chore: write Sprint 70 brief — 70th Milestone + Backup/Restore
  • feat: Sprint 69 — Accessibility + French/Portuguese i18n
  • chore: auto-commit before sprint 69
  • chore: write Sprint 69 brief — Accessibility + i18n Languages
  • chore: Sprint 68 brief history
  • feat: Sprint 68 — Slack Integration + Email Digest
  • chore: auto-commit before sprint 68
  • chore: write Sprint 68 brief — Slack + Email Digest
  • feat: Sprint 67 — Sentiment Analysis + Quality Metrics
  • chore: auto-commit before sprint 67
  • chore: write Sprint 67 brief — Sentiment + Quality Metrics
  • feat: Sprint 66 — Presence Tracker + Activity Feed
  • chore: auto-commit before sprint 66
  • chore: write Sprint 66 brief — Presence + Activity Feed
  • chore: Sprint 65 brief history + milestone test fix
  • feat: Sprint 65 — 65th Milestone + Content Moderation 🏆🏆🏆🏆
  • chore: auto-commit before sprint 65
  • chore: write Sprint 65 brief — 65th Milestone + Content Moderation
  • feat: Sprint 64 — Security Hardening + Request Signing
  • chore: auto-commit before sprint 64
  • chore: write Sprint 64 brief — Security + Request Signing
  • feat: Sprint 63 — AI Model Config + Model Settings UI
  • chore: auto-commit before sprint 63
  • chore: write Sprint 63 brief — Model Config + Settings
  • feat: Sprint 62 — Mobile API + PWA Offline
  • chore: auto-commit before sprint 62
  • chore: write Sprint 62 brief — Mobile API + PWA Offline
  • chore: Sprint 61 brief history
traceable-searchable-adr-memory-index
  • fix: sprint live detection correctly returns active:false after merge
  • Merge branch 'main' of https://github.com/davidbmar/traceable-searchable-adr-memory-index
  • feat: add /summarize skill with project health panel and MCP tool
194 commits

Portfolio Sprint Marathon Ships RAG APIs, Video, and Dashboards

The day was dominated by tool-RAG-for-split-personalities advancing from Sprint 22 through Sprint 61, adding domain factory flows, enterprise APIs, collaboration, analytics, plugins, search, RBAC, workflow automation, voice settings, data visualization, and an API gateway with GraphQL. Other commits added a sprint highlight video pipeline with Piper TTS and improved the ADR memory dashboard with backlog pagination, sprint summaries, parser fixes, and live agent output.

tool-RAG-for-split-personalities 171tool-software-video-picture-annotator-review 7traceable-searchable-adr-memory-index 16
▸ how to apply & commit details

How you can apply this

  • Use the RAG sprint sequence as a productization roadmap: domain factory, import/export, API keys, webhooks, plugin marketplace, RBAC, and GraphQL gateway.
  • Reuse the collaboration pattern: WebSocket domain-edit notifications plus a collaborators page, then extend with typing indicators and shared roundtable rooms.
  • Borrow the reporting approach: sprint narrative cards, backlog pagination, priority styling, parser fixes, and rebuilt indexed dashboard data.
  • Adapt the media pipeline by pairing sprint highlight video generation with Piper TTS as an alternative to macOS say.

Commits

tool-RAG-for-split-personalities
  • feat: Sprint 61 — API Gateway + GraphQL Endpoint
  • chore: auto-commit before sprint 61
  • chore: write Sprint 61 brief — API Gateway + GraphQL
  • feat: Sprint 60 — 60th Milestone + Status Homepage 🏆🏆🏆
  • chore: auto-commit before sprint 60
  • chore: write Sprint 60 brief — 60th Milestone + Status Homepage
  • feat: Sprint 59 — Data Visualization + Export Formats
  • chore: auto-commit before sprint 59
  • chore: write Sprint 59 brief — Data Viz + Export Formats
  • feat: Sprint 58 — Voice Profiles + Voice Settings UI
  • chore: auto-commit before sprint 58
  • chore: write Sprint 58 brief — Voice Profiles + Settings
  • chore: Sprint 57 brief history
  • feat: Sprint 57 — Workflow Automation + Notifications
  • chore: auto-commit before sprint 57
  • chore: write Sprint 57 brief — Workflows + Notifications
  • feat: Sprint 56 — Advanced Search Engine + Search UI
  • chore: auto-commit before sprint 56
  • chore: write Sprint 56 brief — Advanced Search
  • feat: Sprint 55 — RBAC + Final Milestone 🏆🏆
  • chore: auto-commit before sprint 55
  • chore: write Sprint 55 brief — RBAC + Final Milestone
  • feat: Sprint 54 — Multi-Region Config + Rate Limit v2
  • chore: auto-commit before sprint 54
  • chore: write Sprint 54 brief — Multi-Region + Rate Limit v2
  • feat: Sprint 53 — Performance Optimization + Audit Log
  • chore: auto-commit before sprint 53
  • chore: write Sprint 53 brief — Performance + Audit Log
  • feat: Sprint 52 — Plugin Registry + Marketplace
  • chore: auto-commit before sprint 52
  • chore: write Sprint 52 brief — Plugin Registry + Marketplace
  • feat: Sprint 51 — Realtime Collaboration + Collab UI
  • Merge branch 'agentB-collab-ui'
  • Merge branch 'agentA-realtime-collab'
  • chore: pre-merge cleanup
  • chore: sprint notes + Sprint 51 brief history
  • agentA-realtime-collab: implement sprint 51 tasks
  • feat: add real-time collaboration WebSocket for domain editing notifications
  • agentB-collab-ui: implement sprint 51 tasks
  • feat: add collaborators management page (web/collaborators.html)
  • docs: Sprint 49-50-51 summary — The Next Chapter
  • chore: auto-commit before sprint 51
  • chore: write Sprint 51 brief — Realtime Collaboration + UI
  • docs: Sprint 50 MILESTONE — status docs + "The Whole Story" summary
  • docs: video narration scripts for Sprints 48-50 + best-of-41-50
  • feat: Sprint 50 — Production Hardening + Milestone Docs 🏆
  • chore: auto-commit before sprint 50
  • chore: write Sprint 50 brief — Production Hardening + Milestone Docs
  • feat: Sprint 49 — AI Insights + Onboarding Funnel (F-092)
  • docs: Sprint 47-48 status + summary "Zero Open Bugs"
  • chore: auto-commit before sprint 49
  • chore: write Sprint 49 brief — AI Insights + Onboarding Funnel
  • feat: Sprint 48 — Plugin API + Bug Sweep (B-015, B-019, B-021)
  • chore: auto-commit before sprint 48
  • chore: write Sprint 48 brief — Plugin API + Low Bug Sweep
  • feat: Sprint 47 — Collaboration + Scraper Rate Limit (B-018)
  • Revert "feat: upgrade typing indicators — debounce, events, accessibility (F-094)"
  • docs: Sprint 46 status + summary "The Social Product"
  • feat: upgrade typing indicators — debounce, events, accessibility (F-094)
  • chore: auto-commit before sprint 47
  • chore: write Sprint 47 brief — Collaboration + Scraper Rate Limit
  • chore: sprint notes + Sprint 46 brief history
  • feat: Sprint 46 — Analytics Export + Typing Indicators (F-094)
  • chore: auto-commit before sprint 46 launch
  • docs: Sprint 45 status + summary "Measure What Matters"
  • chore: auto-commit before sprint 46
  • chore: write Sprint 46 brief — Analytics Export + Typing Indicators
  • feat: Sprint 45 — README Milestone + Analytics Dashboard (F-103)
  • docs: Sprint 43-44 status + summary "From Prototype to Production"
  • chore: auto-commit before sprint 45
  • chore: write Sprint 45 brief — README Milestone + Analytics Dashboard
  • feat: Sprint 44 — Deploy Command + Domain Versioning (F-097, F-101)
  • chore: auto-commit before sprint 44
  • chore: write Sprint 44 brief — Deploy Command + Domain Versioning
  • feat: Sprint 43 — Evidence Wizard + Keyboard Shortcuts (F-096, F-100)
  • chore: auto-commit before sprint 43
  • chore: write Sprint 43 brief — Evidence Wizard + Keyboard Shortcuts
  • chore: sprint notes + Sprint 42 brief history
  • feat: Sprint 42 — CLI Installer + Persona Editor (F-095, F-102)
  • docs: PM backlog + summary "Intelligence That Compounds"
  • chore: auto-commit before sprint 42
  • chore: write Sprint 42 brief — CLI Installer + Persona Editor
  • docs: Sprint 41 status + narrative summary "Panels That Learn, Domains From Links"
  • feat: Sprint 41 — Persona Memory (F-099) + URL Domain (F-091)
  • feat: Sprint 41 — Persona Memory + One-Click URL Domain (F-091, F-099)
  • Merge branch 'agentB-url-domain'
  • Merge branch 'agentA-persona-memory'
  • chore: pre-merge cleanup
  • chore: sprint notes + Sprint 41 brief history
  • agentB-url-domain: implement sprint 41 tasks
  • feat: add one-click domain creation from URL (F-091)
  • agentA-persona-memory: implement sprint 41 tasks
  • feat: add persona memory store for cross-session fact recall (F-099)
  • docs: Sprint 40 status + PM backlog + summary "The Product That Teaches Itself"
  • chore: auto-commit before sprint 41
  • chore: write Sprint 41 brief — Persona Memory + URL Domain
  • docs: Sprint 40 narrative summary + cleanup
  • Merge branch 'agentB-tutorial'
  • chore: pre-merge cleanup
  • agentB-tutorial: implement sprint 40 tasks
  • Merge branch 'agentA-test-fixes'
  • chore: pre-merge cleanup
  • agentA-test-fixes: implement sprint 40 tasks
  • fix: resolve 3 failing CLI tests (B-020) + add integration tests
  • chore: ignore .claude/worktrees
  • docs: Sprint 39 status + Sprint 40 brief + PM backlog + summary
  • docs: Sprint 39 narrative summary + cleanup
  • feat: Sprint 39 — Zero-Config CLI + Bug Sweep (B-016, B-017, F-089)
  • chore: archive sprint notes + Sprint 39 brief history
  • docs: Sprint 38 status + PM backlog + summary "Speaking the User's Language"
  • chore: auto-commit before sprint 39
  • chore: write Sprint 39 brief — Zero-Config CLI + Bug Sweep
  • docs: Sprint 38 narrative summary + cleanup
  • feat: Sprint 38 — i18n Foundation + Factory Validation (B-013)
  • chore: auto-commit before sprint 38
  • docs: Sprint 37 status + Sprint 38 brief (zero-config) + PM backlog + summary
  • chore: write Sprint 38 brief + roadmap update + close stale backlog
  • chore: cleanup Sprint 37 — archive brief, remove stale branches
  • feat: Sprint 37 — Evidence Pipeline + Domain History (B-011)
  • docs: Sprint 35-36 status + PM backlog + summary + Sprint 37 ready
  • chore: auto-commit before sprint 37
  • chore: write Sprint 37 brief — Evidence Pipeline + Domain History
  • feat: Sprint 36 — Domain Templates Gallery + Error Feedback (B-012)
  • chore: Sprint 35 cleanup + Sprint 36 brief
  • docs: Sprint 34 status + PM backlog round 3 + Bezos summary
  • docs: Sprint 34 status + backlog items (B-016, F-096, F-097)
  • feat: Sprint 35 — OpenAPI Docs + API Playground
  • chore: auto-commit before sprint 34
  • docs: Sprint 33 status + PM backlog items + Bezos sprint summary
  • feat: Sprint 34 — AI Domain Wizard + Domain Preview
  • feat: Sprint 33 — Shared Roundtable Rooms + Playwright Tests
  • feat: Sprint 32 — White-Label Branding + Embed Widget
  • chore: auto-commit before sprint 32
  • chore: enhanced Sprint 32 brief + PM backlog items + sprint summary
  • chore: write Sprint 32 brief — White-Label + Embed Widget
  • chore: archive stale brief
  • docs: Sprint 31 status
  • feat: Sprint 31 — Batch Roundtable + Analytics + README update
  • chore: auto-commit before sprint
  • chore: 30th sprint roadmap extension (31-35) + Sprint 31 brief
  • docs: Sprint 30 status — ROADMAP COMPLETE
  • feat: Sprint 30 — Enterprise Features (API Keys + Webhooks)
  • chore: write Sprint 30 brief — Enterprise Features
  • docs: Sprint 29 status + archive brief
  • feat: Sprint 29 — Response Cache + Performance Metrics
  • chore: write Sprint 29 brief — Response Cache + Performance Metrics
  • docs: Sprint 28 status + archive brief
  • feat: Sprint 28 — PWA + Mobile Optimization
  • chore: write Sprint 28 brief — PWA + Mobile
  • docs: Sprint 27 status + archive brief
  • feat: Sprint 27 — E2E lifecycle tests + README Domain Factory docs
  • chore: write Sprint 27 brief — E2E testing + README update
  • docs: Sprint 26 status + archive brief
  • feat: Sprint 26 — Evidence Upload + Domain Import/Export
  • chore: write Sprint 26 brief — Evidence Upload + Import/Export
  • chore: archive Sprint 25 brief
  • docs: Sprint 25 status
  • feat: Sprint 25 — MCP Server + LLM Persona Generation
  • chore: write Sprint 25 brief — MCP Server + LLM Persona Generation
  • chore: 25th sprint roadmap extension — Sprints 25-30
  • docs: Sprint 24 status
  • feat: Sprint 24 — Web Factory UI for domain creation
  • chore: write Sprint 24 brief — Web Factory UI
  • chore: archive Sprint 23 brief
  • docs: Sprint 23 status
  • feat: Sprint 23 — Domain switching polish + dynamic UI + tests
  • chore: write Sprint 23 brief — Domain switching polish + tests
  • chore: archive Sprint 22 brief
  • docs: Sprint 22 status — Domain Factory Core + Domain-Aware API + JFK Migration
  • feat: Sprint 22 — Domain Factory Core + Domain-Aware API + JFK Migration
  • chore: write Sprint 22 brief — Domain Factory Core
tool-software-video-picture-annotator-review
  • Merge branch 'agentB-sprint-highlight'
  • Merge branch 'agentA-piper-tts'
  • agentB-sprint-highlight: implement sprint 9 tasks
  • feat: add sprint highlight video pipeline
  • agentA-piper-tts: implement sprint 9 tasks
  • feat: add Piper TTS as alternative backend to macOS say
  • chore: write Sprint 9 brief — Sprint Highlight Video Pipeline
traceable-searchable-adr-memory-index
  • fix: sprint card excerpt expanded to 3 sentences
  • fix: sprint cards show 2 meaningful sentences, skip 'Sprint N was...' opener
  • fix: extract sprint summary from Sprint Goal section + remove redundant title
  • fix: sprint cards show 'Sprint N — Date' header with sentence summary
  • fix: sprints view sorts by number not date, parse YYYY-MM-DD date format
  • feat: backlog pagination — 50 items/page, prev/next controls, table-layout fix
  • fix: backlog table-layout fixed — title wraps within viewport
  • chore: rebuild dashboard data — sprint 101 indexed (57 sprints, 343 bugs, 409 features)
  • feat: backlog view — critical callout, priority row borders, word wrap, sort label
  • feat: sprint-live shows agent objective summaries and better terminal output
  • fix: summary parser matches both ## Summary and ## Sprint N Summary
  • feat: sprint-loop skill in framework + card fix + docs
  • feat: sprint card polish + Bezos summary template + sprint-loop skill
  • feat: sprint narrative summaries in dashboard
  • fix: backlog parser handles unified table format, paths use ~ notation
  • fix: backlog data pipeline + default Open filter + priority sorting
35 commits

Portfolio Metadata Meets Sprint-Aware Automation

github-portfolio-search gained a reusable portfolio layer with portfolio.json indexing, showcase UI, connected projects, deploy manifests, health logs, GitHub OAuth, S3 sign-in logging, admin access controls, and refreshed docs. Companion repos tightened sprint workflows with roadmap “you are here” markers, sprint parsing tests and fixes, dashboard rebuild hooks, portable paths, Claude skill sync, and status-doc generation.

github-portfolio-search 20tool-RAG-for-split-personalities 3traceable-searchable-adr-memory-index 12
▸ how to apply & commit details

How you can apply this

  • Use portfolio.json as a reusable metadata source, then index it to render featured badges, tech stacks, live demos, and connected projects.
  • Add deploy manifests, health.json, and deploy logs from deploy.sh so other tools can verify what shipped and link portfolio entries to live deployments.
  • Pair GitHub OAuth with sign-in event logging to S3 and a shared logging bucket pattern to make access flows auditable.
  • Automate sprint dashboards by parsing roadmap state, skipping completed sprints, updating the current marker, and rebuilding status views after merges.

Commits

github-portfolio-search
  • feat: Sprint 19 — deploy manifest + portfolio linking system
  • Merge branch 'agentC-portfolio-ui'
  • Merge branch 'agentB-portfolio-indexer'
  • Merge branch 'agentA-deploy-manifest'
  • chore: signal agent done
  • feat: add portfolio UI — showcase section, featured badges, live demo, tech stack, connected projects
  • feat: add portfolio.json indexing to the data pipeline
  • feat: add deploy manifest, health.json, and deploy log to deploy.sh
  • chore: Sprint 19 brief + portfolio.json for this repo
  • fix: prevent sign-in reload loop by tracking auth state changes
  • feat: sign-in logging to S3 + shared logging bucket pattern
  • feat: add GitHub OAuth as second sign-in option
  • feat: replace access request form with contact info
  • feat: admin access management with localStorage-based approve/deny
  • docs: rewrite README with current features, Getting Started, and deploy instructions
  • Merge branch 'agentC-export-embed'
  • Merge branch 'agentB-collections'
  • Merge branch 'agentA-sharing'
  • feat: "Secured" badge for private repos
  • feat: auto-generate descriptions from README for repos with no GitHub description
tool-RAG-for-split-personalities
  • docs: update roadmap — Domain Factory as Sprints 22-26
  • fix: add 'You are here: Sprint 22' banner to roadmap for dashboard
  • feat: add scripts/log-sprint.sh — generate status docs for manual sprints
traceable-searchable-adr-memory-index
  • feat: sprint-merge.sh auto-updates roadmap 'You are here' sprint marker
  • test: add unit tests for completed sprint parsing in roadmap
  • fix: roadmap timeline skips completed sprints, finds first incomplete
  • feat: sprint-merge.sh auto-rebuilds Afterburner dashboard after PROJECT_STATUS
  • fix: sprint-parse.sh falls back to .sprint/config.sh when sprint-config.sh missing
  • chore: merge upstream + resolve conflicts
  • feat: check-upstream.sh syncs Claude skills to ~/.claude/skills/
  • Merge branch 'dashboard-active-project-everyone-ai'
  • feat: roadmap view — "you are here" banner + interactive sprint tabs
  • fix: expand ~/paths in all server.py read sites + phased roadmap skill
  • fix: portable project paths — store ~/... in projects.json, expand at read time
  • feat: sprint number continuity + current-state.md seed template
205 commits

Portfolio Search Becomes a Shareable, Public Discovery App

The day turned github-portfolio-search into a public, searchable portfolio app with indexing, semantic and TF-IDF search, APIs, MCP tools, deployment, auth, analytics, exports, collections, embeds, and richer repo detail pages. Related commits added project-status awareness and docs/security updates to Bob, plus stronger lifecycle templates and sprint planning in the ADR memory index.

bot-customerObsessed-No-Prob-Bob-afterburner 2github-portfolio-search 198traceable-searchable-adr-memory-index 5
▸ how to apply & commit details

How you can apply this

  • Build a reusable portfolio indexer with GitHub API ingestion, README/topic enrichment, freshness timestamps, data-quality validation, and static JSON exports.
  • Expose the same repo data through multiple reuse surfaces: FastAPI endpoints, MCP tools, CLI commands, an export manager, and an embeddable widget.
  • Improve search UX with shareable filtered URLs, autocomplete, snippets, related repos, D3 cluster browsing, localStorage collections, and detailed repo pages.
  • Harden the product loop with S3/CloudFront deploy scripts, GitHub Actions reindexing, OAuth plus password fallback, Telegram access management, analytics logging, and smoke/test fixes.

Commits

bot-customerObsessed-No-Prob-Bob-afterburner
  • feat: add project status awareness to Bob's personality
  • docs: update README with 8 tools + Telegram security, update Docs panel stats
github-portfolio-search
  • agentA-sharing: implement sprint 18 tasks
  • feat: shareable search URLs with filter persistence and share buttons
  • feat: add Collections feature — localStorage-backed named repo lists
  • agentC-export-embed: implement sprint 18 tasks
  • feat: add export manager, embed widget, and collections nav link
  • feat: enhanced repo detail page with GitHub link, README, clone command
  • fix: prevent optional data errors from hiding main page content
  • fix: MCP empty-store tests + export Sprint 17 data files
  • Merge branch 'agentC-ui-autocomplete'
  • Merge branch 'agentB-enhanced-search'
  • Merge branch 'agentA-export-data'
  • chore: auto-commit dirty files before merge (sprint 17)
  • agentC-ui-autocomplete: implement sprint 17 tasks
  • feat: add autocomplete, similarity-based related repos, and search snippets
  • agentA-export-data: implement sprint 17 tasks
  • agentB-enhanced-search: implement sprint 17 tasks
  • feat: add readme_excerpt, similarity matrix, and suggestions to export
  • feat: add TF-IDF scoring, chunk text matching, and snippet extraction to JS search engine
  • fix: sign-in callback reloads page to apply auth state cleanly
  • fix: remove crossorigin=anonymous from GIS script — blocks Google Sign-In
  • Merge branch 'agentC-mcp-tests'
  • Merge branch 'agentB-analytics'
  • Merge branch 'agentA-mcp-server'
  • agentA-mcp-server: implement sprint 16 tasks
  • feat: update MCP server tools to match Sprint 16 spec
  • agentC-mcp-tests: implement sprint 16 tasks
  • feat: add search analytics tracking and API endpoints
  • feat: add MCP edge-case tests, CLI stats command, and analytics logging
  • fix: Google Sign-In button not rendering — GIS script loads async
  • chore: Sprint 16 brief, mark Sprint 15 complete, backlog triage
  • Merge branch 'agentC-docs-cleanup'
  • Merge branch 'agentB-seo-perf'
  • Merge branch 'agentA-public-tier'
  • chore: auto-commit dirty files before merge (sprint 15)
  • agentA-public-tier: implement sprint 15 tasks
  • feat: make site publicly browsable without sign-in (B-019, F-009)
  • agentC-docs-cleanup: implement sprint 15 tasks
  • docs: Sprint 15 checkpoint — README, backlog cleanup, Sprint 14 session doc
  • agentB-seo-perf: implement sprint 15 tasks
  • feat: SEO improvements — structured data, meta updates, sitemap, a11y
  • chore: Sprint 15 brief, roadmap extension (sprints 16-20), backlog triage
  • fix: mixed content warning — force HTTPS on Google avatar URL
  • Merge branch 'agentA-freshness-ui'
  • Merge branch 'agentB-reindex-actions'
  • Merge branch 'agentC-data-pipeline'
  • chore: auto-commit dirty files before merge (sprint 14)
  • agentA-freshness-ui: implement sprint 14 tasks
  • feat: add freshness badges and last-indexed timestamp to web UI
  • agentC-data-pipeline: implement sprint 14 tasks
  • feat: add indexed_at tracking, dry-run mode, and freshness labels
  • agentB-reindex-actions: implement sprint 14 tasks
  • feat: add GitHub Actions reindex workflow, reindex script, and fix no-index API errors
  • chore: archive Sprint 14 brief, update sprint notes
  • chore: write Sprint 14 brief, update roadmap and backlog
  • chore: archive Sprint 13 brief, clean up post-sprint
  • Merge branch 'agentC-telegram-admin'
  • Merge branch 'agentB-auth-api'
  • Merge branch 'agentA-oauth-frontend'
  • chore: auto-commit dirty files before merge (sprint 13)
  • agentB-auth-api: implement sprint 13 tasks
  • feat: add Google OAuth auth endpoints and access-list API
  • agentA-oauth-frontend: implement sprint 13 tasks
  • feat: add Google OAuth sign-in with password gate fallback
  • agentC-telegram-admin: implement sprint 13 tasks
  • feat: add Telegram notifications and access management CLI
  • chore: Sprint 12 complete — 104 repos, enriched topics, plan Sprint 13
  • fix: wrap password gate in <form> to prevent Chrome "not secure" warning
  • chore: remove .env from tracking, add to .gitignore
  • feat: add password gate and index private repos (104 total)
  • Merge branch 'agentC-topic-ui'
  • Merge branch 'agentB-cluster-quality'
  • Merge branch 'agentA-topic-extraction'
  • chore: auto-commit dirty files before merge (sprint 12)
  • agentC-topic-ui: implement sprint 12 tasks
  • feat: display enriched topics in web UI — top 15 with cluster colors
  • agentB-cluster-quality: implement sprint 12 tasks
  • agentA-topic-extraction: implement sprint 12 tasks
  • feat: improve cluster quality — use topics for naming, merge small clusters
  • feat: auto-infer topics from README content and repo names
  • chore: Sprint 11 complete — D3 viz, 94 repos, plan Sprint 12
  • fix: improve cluster naming — capability-based instead of language-based
  • feat: index all 94 repos — add .env support and fix indexer README fetching
  • Merge branch 'agentC-social-meta'
  • Merge branch 'agentB-activity-stats'
  • Merge branch 'agentA-d3-viz'
  • chore: auto-commit dirty files before merge (sprint 11)
  • agentA-d3-viz: implement sprint 11 tasks
  • feat: add D3.js circle-packing visualization to clusters page
  • agentB-activity-stats: implement sprint 11 tasks
  • feat: add activity timeline, cluster stats, and search sorting
  • agentC-social-meta: implement sprint 11 tasks
  • agentC-social-meta: implement sprint 11 tasks
  • chore: Sprint 10 complete — repo detail page, docs cleanup, plan Sprint 11
  • Merge branch 'agentC-repo-detail'
  • Merge branch 'agentB-data-completeness'
  • agentC-repo-detail: implement sprint 10 tasks
  • Merge branch 'agentA-docs-cleanup'
  • chore: auto-commit dirty files before merge (sprint 10)
  • feat: add repo detail page with full repository info
  • agentA-docs-cleanup: implement sprint 10 tasks
  • docs: rewrite README, fill CLAUDE.md, clean up stale roadmap references
  • agentB-data-completeness: implement sprint 10 tasks
  • feat: add semantic data-quality validation to export pipeline
  • chore: Sprint 9 complete — multi-word search fixed, plan Sprint 10
  • Merge branch 'agentC-infra'
  • Merge branch 'agentB-access-page'
  • Merge branch 'agentA-search-fix'
  • chore: auto-commit dirty files before merge (sprint 9)
  • agentB-access-page: implement sprint 9 tasks
  • agentC-infra: implement sprint 9 tasks
  • agentA-search-fix: implement sprint 9 tasks
  • feat: update access page tier description with gated access details
  • fix: infra cleanup — deploy target, smoke tests, remove .gitkeep
  • fix: multi-word search returns results with OR logic (F-005)
  • chore: Sprint 8 complete — UX polish live, plan Sprint 9
  • Merge branch 'agentC-infra-fixes'
  • Merge branch 'agentB-ui-polish'
  • Merge branch 'agentA-search-relevance'
  • chore: auto-commit dirty files before merge (sprint 8)
  • agentB-ui-polish: implement sprint 8 tasks
  • feat: professional UI polish — stats, highlights, relevance bars, hover effects
  • agentA-search-relevance: implement sprint 8 tasks
  • feat: add title boosting (2x) and recency factor to search relevance
  • agentC-infra-fixes: implement sprint 8 tasks
  • fix: B-012 venv symlink + infra improvements for developer experience
  • chore: Sprint 7 complete — 0 test failures, 42 real repos live, plan Sprint 8
  • Merge branch 'agentB-real-data'
  • Merge branch 'agentA-test-fixes'
  • chore: auto-commit dirty files before merge (sprint 7)
  • agentB-real-data: implement sprint 7 tasks
  • feat: real GitHub data pipeline with 42 repos and export edge cases
  • agentA-test-fixes: implement sprint 7 tasks
  • fix: resolve B-005 and B-006 test failures (0 failures, 0 errors)
  • chore: Sprint 6 complete — update backlog, roadmap, plan Sprint 7
  • Merge branch 'agentC-web-resilience'
  • Merge branch 'agentB-test-infra'
  • Merge branch 'agentA-data-pipeline'
  • chore: auto-commit dirty files before merge (sprint 6)
  • agentC-web-resilience: implement sprint 6 tasks
  • agentC-web-resilience: graceful error handling, sample fallback, meta tags
  • agentB-test-infra: implement sprint 6 tasks
  • agentA-data-pipeline: implement sprint 6 tasks
  • fix: test infra hardening — playwright skip, Makefile targets, test deps
  • fix: add realistic sample data and deploy validation (B-010)
  • Merge branch 'main' of https://github.com/davidbmar/github-portfolio-search into agentC-web-resilience
  • chore: Sprint 5 review — 5th checkpoint, extend roadmap to Sprint 11
  • Merge branch 'agentC-web-access'
  • Merge branch 'agentB-index-export'
  • Merge branch 'agentA-deploy-fixes'
  • chore: auto-commit dirty files before merge (sprint 5)
  • agentC-web-access: implement sprint 5 tasks
  • feat: add navigation, data loading, clusters page, and access request form
  • agentB-index-export: implement sprint 5 tasks
  • agentB-index-export: add index/export pipeline and sample data
  • agentA-deploy-fixes: implement sprint 5 tasks
  • agentA-deploy-fixes: update deploy.sh and add deploy tests
  • chore: Sprint 4 review — deploy web UI, plan Sprint 5
  • Merge branch 'agentC-deploy'
  • Merge branch 'agentB-web-ui'
  • Merge branch 'agentA-data-export'
  • chore: auto-commit dirty files before merge (sprint 4)
  • agentA-data-export: implement sprint 4 tasks
  • feat: add static JSON data export for web UI
  • agentB-web-ui: implement sprint 4 tasks
  • feat: add public web UI with search and cluster browse
  • agentC-deploy: implement sprint 4 tasks
  • feat: add S3/CloudFront deployment pipeline
  • chore: Sprint 3 review — 95 tests pass, plan Sprint 4 (Web UI)
  • chore: archive Sprint 3 brief
  • Merge branch 'agentC-cli-e2e'
  • Merge branch 'agentB-mcp-server'
  • Merge branch 'agentA-bug-fixes'
  • agentC-cli-e2e: implement sprint 3 tasks
  • feat: Sprint 3 — CLI improvements, serve/status commands, E2E tests
  • agentB-mcp-server: implement sprint 3 tasks
  • feat: add MCP server with 4 portfolio search tools
  • agentA-bug-fixes: implement sprint 3 tasks
  • fix: B-001 duplicate [project.scripts], B-004 lazy imports for heavy deps
  • chore: Sprint 2 review — mark complete, write Sprint 3 brief
  • feat: Sprint 2 complete — packaging fixes, REST API, API tests
  • Merge branch 'agentB-rest-api'
  • Merge branch 'agentA-packaging-fixes'
  • chore: add .gitignore, archive Sprint 2 brief
  • Add API and integration tests for Sprint 2
  • fix: packaging bugs, CLI entry point, and test stabilization
  • agentB-rest-api: implement sprint 2 tasks
  • feat: add FastAPI REST API with search, clusters, and repo detail endpoints
  • chore: Sprint 1 review — add README, backlog, Sprint 2 brief
  • Merge branch 'agentC-search-cli'
  • Merge branch 'agentB-embedding-store'
  • Merge branch 'agentA-github-api'
  • chore: auto-commit dirty files before merge (sprint 1)
  • feat: add embedding pipeline, vector store, and indexer
  • feat: add semantic search engine and CLI for GitHub portfolio search
  • feat: add project scaffold and GitHub API client
  • chore: auto-commit before sprint
  • chore: write Sprint 1 brief — Indexing Pipeline Foundation
  • chore: bootstrap Afterburner project with seed discovery doc
traceable-searchable-adr-memory-index
  • chore: add GitHub MCP server to config
  • Merge origin/main: lifecycle templates, sprint fixes, backlog parser, S3 naming
  • feat: enhanced lifecycle doc templates + project-onboarding fixes
  • feat: enhanced roadmap with 6+ sprint plan, timeline UI, and sprint cycle
  • fix: remove regex fallback from lifecycle doc generation, require LLM
203 commits

Voice Bots Gain Hands-Free Speech and Project-Aware Dashboards

Most commits advanced the No Prob Bob assistant with hands-free voice controls, Telegram read-only safety, dashboard-backed project tools, and auto-rebuild/active-project handling. Companion work added one-command setup and screenshots to the TTS/STT app, plus status APIs, backlog parsing, and worktree symlinks for the ADR memory index.

bot-customerObsessed-No-Prob-Bob-afterburner 198iphone-and-desktop-companion-TTS-SST-talking-app 2traceable-searchable-adr-memory-index 3
▸ how to apply & commit details

How you can apply this

  • Built browser-side VAD, STT/TTS, barge-in, pause/resume, and stop controls; reuse the pattern by treating voice state transitions as first-class UI and test cases.
  • Exposed project-aware APIs and bot tools like list_projects, read_project_doc, get_project_summary, status, and sprints; reuse by returning structured slug/name data instead of UI-only labels.
  • Added auto-rebuild dashboard data and active-project switching for new projects; reuse by triggering data refreshes from project discovery instead of manual rebuild steps.
  • Hardened operations with Telegram read-only mode, .env-loading startup scripts, Cloudflare Tunnel support, venv-first scripts, and generated PROJECT_STATUS docs for repeatable local and sprint workflows.

Commits

bot-customerObsessed-No-Prob-Bob-afterburner
  • docs: generate PROJECT_STATUS for Sprints 38-40
  • chore: mark F-078, F-080 Complete
  • feat: auto-rebuild dashboard data + auto-switch active project (F-078, F-080)
  • Merge branch 'agentA-auto-rebuild-switch'
  • Merge branch 'agentB-sprint-docs'
  • chore: auto-commit dirty files before merge (sprint 40)
  • agentA-auto-rebuild-switch: implement sprint 40 tasks
  • agentB-sprint-docs: implement sprint 40 tasks
  • chore: close B-020 + write Sprint 40 brief — auto-rebuild + auto-switch
  • feat: read-only mode for Telegram — block write tools for unauthenticated users
  • chore: add F-080 — auto-rebuild for new projects
  • feat: add 11 tests for list_projects, read_project_doc, enriched get_project_summary
  • Merge branch 'agentA-new-tool-tests'
  • Merge branch 'agentB-sprint38-doc'
  • chore: auto-commit dirty files before merge (sprint 39)
  • agentA-new-tool-tests: implement sprint 39 tasks
  • agentB-sprint38-doc: implement sprint 39 tasks
  • chore: update backlog + write Sprint 39 brief — tool tests + Sprint 38 doc
  • chore: clean up after sprint 38
  • Merge branch 'agentA-tool-tests'
  • Merge branch 'agentB-session-doc'
  • chore: auto-commit dirty files before merge (sprint 38)
  • agentA-tool-tests: implement sprint 38 tasks
  • agentB-session-doc: implement sprint 38 tasks
  • chore: write Sprint 38 brief — tool tests + worktree verification
  • feat: read_project_doc tool + worktree .venv symlink + Sprint 33-37 docs
  • chore: clean up after sprint 37
  • Merge branch 'agentA-worktree-venv'
  • Merge branch 'agentB-sprint-docs'
  • chore: auto-commit dirty files before merge (sprint 37)
  • agentA-worktree-venv: implement sprint 37 tasks
  • agentB-sprint-docs: implement sprint 37 tasks
  • chore: update backlog + write Sprint 37 brief
  • fix: get_project_summary now includes sprint/session data from status API
  • feat: add list_projects tool so bot can answer "what projects are there?" (F-076)
  • Merge branch 'agentA-list-projects'
  • Merge branch 'agentB-sprint-docs'
  • chore: auto-commit dirty files before merge (sprint 36)
  • agentA-list-projects: implement sprint 36 tasks
  • agentB-sprint-docs: implement sprint 36 tasks
  • chore: update backlog + write Sprint 36 brief
  • fix: sprint-config.sh DEFAULT_TEST_CMD uses venv pytest instead of personality check (B-048)
  • Merge branch 'agentA-ui-polish'
  • Merge branch 'agentB-test-cmd-docs'
  • chore: auto-commit dirty files before merge (sprint 35)
  • agentA-ui-polish: implement sprint 35 tasks
  • agentB-test-cmd-docs: implement sprint 35 tasks
  • chore: update backlog + write Sprint 35 brief
  • chore: clean up after sprint 34
  • fix: _find_project_root and _auto_discover_projects crash on projects.json dict format
  • Merge branch 'agentA-project-fix'
  • Merge branch 'agentB-config-docs'
  • chore: auto-commit dirty files before merge (sprint 34)
  • agentB-config-docs: implement sprint 34 tasks
  • agentA-project-fix: implement sprint 34 tasks
  • chore: update backlog with Sprint 33 results + write Sprint 34 brief
  • Merge branch 'agentA-project-dropdown'
  • Merge branch 'agentB-auto-rebuild'
  • chore: auto-commit dirty files before merge (sprint 33)
  • agentA-project-dropdown: implement sprint 33 tasks
  • agentB-auto-rebuild: implement sprint 33 tasks
  • fix: Active Project dropdown shows project names instead of [object Object] (B-045, F-075)
  • feat: generate Sprint 32 PROJECT_STATUS doc + verify auto-rebuild (B-047, F-074)
  • chore: update backlog with Sprint 32 results + write Sprint 33 brief
  • Merge branch 'agentA-onnx-suppress'
  • Merge branch 'agentB-sprint-docs'
  • chore: pre-merge cleanup for sprint 32
  • agentB-sprint-docs: implement sprint 32 tasks
  • feat: generate Sprint 30-31 PROJECT_STATUS docs + fix zsh crash (B-008, B-043, F-073)
  • agentA-onnx-suppress: implement sprint 32 tasks
  • feat: suppress ONNX runtime console warnings from Silero VAD init (B-044)
  • chore: update backlog with Sprint 31 results + write Sprint 32 brief
  • Merge branch 'agentA-pause-play'
  • Merge branch 'agentB-backlog-tools'
  • chore: pre-merge cleanup for sprint 31
  • agentA-pause-play: implement sprint 31 tasks
  • agentB-backlog-tools: implement sprint 31 tasks
  • feat: fix pause/play to stop both TTS and VAD listening (B-039, B-040, F-071, B-041)
  • fix: dashboard backlog parsing + bot tool error handling (B-015, B-042)
  • fix: remove descriptions from merge order lines (validation fix)
  • feat: wire bot tools to dashboard API — resolve_slug, API-backed sprint status
  • chore: write Sprint 31 brief — fix pause/play + dashboard backlog
  • fix: unlock TTS audio on any first tap/click (iOS + Chrome)
  • chore: clean up after sprint 30
  • Merge branch 'agentA-conv-summary'
  • Merge branch 'agentB-docs-summary'
  • agentA-conv-summary: implement sprint 30 tasks
  • agentB-docs-summary: implement sprint 30 tasks
  • feat: add conversation summary banner (F-070) + suppress ONNX warnings (B-029)
  • feat: Sprint 29 PROJECT_STATUS doc, conversation summary endpoint (F-070)
  • chore: write Sprint 30 brief — conversation summary + ONNX fix
  • chore: clean up after sprint 29
  • Merge branch 'agentA-discard-button'
  • Merge branch 'agentB-filter-docs'
  • agentB-filter-docs: implement sprint 29 tasks
  • feat: improve input filter to catch background media audio (B-038)
  • agentA-discard-button: implement sprint 29 tasks
  • feat: add voice transcription discard button (F-069)
  • chore: write Sprint 29 brief — input filter + discard button
  • chore: clean up after sprint 28
  • fix: rephrase voice instruction to avoid 'text-only' literal in prompt
  • Merge branch 'agentA-voice-personality'
  • Merge branch 'agentB-docs-stats'
  • agentB-docs-stats: implement sprint 28 tasks
  • feat: Sprint 27 PROJECT_STATUS doc, voice awareness test (B-037)
  • agentA-voice-personality: implement sprint 28 tasks
  • feat: add voice awareness to personalities + dynamic Docs stats (B-037)
  • chore: write Sprint 28 brief — voice personality + dynamic stats
  • chore: clean up after sprint 27
  • Merge branch 'agentA-word-count'
  • Merge branch 'agentB-deps-docs'
  • agentB-deps-docs: implement sprint 27 tasks
  • fix: add providers to dev deps, generate Sprint 26 PROJECT_STATUS (B-035, B-036)
  • agentA-word-count: implement sprint 27 tasks
  • feat: add word/token count indicator below chat input (F-067)
  • rename: start.sh → start_local.sh
  • chore: write Sprint 27 brief — fix deps + word count
  • chore: clean up after sprint 26
  • fix: scroll FAB test accepts HTML entity &#x2193; for down arrow
  • Merge branch 'agentA-scroll-shortcuts'
  • Merge branch 'agentB-docs-tests'
  • agentA-scroll-shortcuts: implement sprint 26 tasks
  • feat: add scroll-to-bottom FAB (F-066) and keyboard shortcuts help (F-068)
  • agentB-docs-tests: implement sprint 26 tasks
  • feat: PROJECT_STATUS docs for Sprints 24-25, scroll FAB tests (Sprint 26)
  • chore: write Sprint 26 brief — scroll FAB + shortcuts + dashboard docs
  • chore: clean up after sprint 25
  • fix: remove broken .venv symlink from git
  • Merge branch 'agentA-button-states'
  • Merge branch 'agentB-button-tests'
  • agentB-button-tests: implement sprint 25 tasks
  • test: add streaming abort + concurrent request integration tests (Sprint 25)
  • agentA-button-states: implement sprint 25 tasks
  • feat: add Stop Generating button (F-064) and Pause/Resume toggle (F-065)
  • chore: write Sprint 25 brief + test spec (test-first approach)
  • chore: clean up after sprint 24
  • Merge branch 'agentA-voice-settings'
  • Merge branch 'agentB-server-docs'
  • agentB-server-docs: implement sprint 24 tasks
  • feat: PROJECT_STATUS docs for Sprints 20-23, improve tool error messages
  • agentA-voice-settings: implement sprint 24 tasks
  • feat: add configurable VAD sensitivity, min speech, and barge-in toggle (F-061)
  • chore: add F-064 (stop generating) and F-065 (hands-free pause/play) to backlog
  • chore: auto-commit before sprint 24
  • chore: write Sprint 24 brief — voice settings + dashboard catch-up
  • Merge branch 'agentA-chat-polish'
  • Merge branch 'agentB-server-polish'
  • agentA-chat-polish: implement sprint 23 tasks
  • feat: paragraph spacing fix, notification sound, syntax highlighting
  • agentB-server-polish: implement sprint 23 tasks
  • feat: add /api/stats endpoint, B-033 regression tests, conversation robustness tests
  • fix: enable voice barge-in during TTS playback
  • chore: auto-commit before sprint 23
  • chore: write Sprint 23 brief — chat polish + server tests
  • chore: add B-033 (tool format hotfix) and B-034 (paragraph spacing) to backlog
  • Merge branch 'agentA-conversation-fixes'
  • Merge branch 'agentB-server-api'
  • agentB-server-api: implement sprint 22 tasks
  • fix: wire config into Gateway and return projects as {slug, name} objects (B-028)
  • agentA-conversation-fixes: implement sprint 22 tasks
  • fix: conversation save/restore preserves markdown, sidebar refreshes on changes
  • chore: auto-commit before sprint 22 retry
  • fix: tool result messages use correct format for Claude API
  • chore: auto-commit before sprint 22
  • chore: write Sprint 22 brief — conversation persistence fixes
  • Merge branch 'agentB-chat-ux-fixes'
  • Merge branch 'agentA-server-polish'
  • agentB-chat-ux-fixes: implement sprint 21 tasks
  • fix: copy button on all bot messages, Escape key, waveform, Send button
  • agentA-server-polish: implement sprint 21 tasks
  • feat: add favicon and localhost auth bypass (F-056, F-057)
  • chore: write Sprint 21 brief — UX polish (copy button, escape, waveform, favicon, auth bypass)
  • chore: add Sprint 21 backlog items from Playwright testing
  • chore: archive Sprint 20 brief, clean up worktrees and agent branches
  • fix: voice interrupt/stop — VAD state reset for all permutations + barge-in
  • feat: stop speaking button, transcription preview, barge-in interrupt, tooltip
  • feat: add in-app developer docs panel (architecture, setup, API, voice, Telegram)
  • fix: pre-load Whisper STT model at startup to avoid Python 3.14 atexit crash
  • fix: start.sh loads .env so PORT and API keys are available before server starts
  • feat: add scripts/start.sh — simple startup script
  • fix: load .env file on server startup so API keys are available
  • fix: relax status doc count assertion (>= 18 not == 18)
  • Merge branch 'agentB-hands-free-vad' (resolve backlog conflict — all 5 features Complete)
  • Merge branch 'agentA-input-filter-fastpath'
  • chore: pre-merge cleanup
  • agentA-input-filter-fastpath: implement sprint 20 tasks
  • feat: input quality filter and fast path for STT (F-048, F-052)
  • agentB-hands-free-vad: implement sprint 20 tasks
  • feat: hands-free continuous speech with browser-side VAD, echo cancellation, silence threshold
  • chore: Sprint 20 brief — continuous speech (VAD), input filter, echo cancellation
  • checkpoint: before continuous speech / push-to-talk sprint
  • feat: voice endpoints, auth endpoints, production launcher updates
  • feat: add Cloudflare Tunnel support for external access
  • fix: strip markdown from TTS speech output so voice reads clean text
  • feat: add voice (push-to-talk STT/TTS) and Google Sign-In auth
  • feat: port enhanced markdown renderer from claude-chat-workspace
  • docs: rewrite README with step-by-step setup guide, Telegram instructions, troubleshooting
  • fix: wire Telegram polling into server main() — was never started
iphone-and-desktop-companion-TTS-SST-talking-app
  • feat: UI updates, server changes, and test screenshots
  • feat: one-command setup, venv-first scripts, .env loading in shell
traceable-searchable-adr-memory-index
  • feat: symlink .venv and node_modules into sprint worktrees
  • fix: backlog parser supports table format and backlog/README.md path (B-015)
  • feat: add /api/project/{slug}/status and /api/project/{slug}/sprints endpoints
201 commits

Reusable Chat Agents Gain Streaming, Markdown, and Multi-Provider Polish

The day pushed bot-customerObsessed-No-Prob-Bob-afterburner through Phase 2, documenting 19 sprints and 485 tests while adding multi-provider LLM support, SSE streaming, conversation persistence, evaluation expansion, seed-doc export, and chat UI improvements. claude-chat-workspace advanced into a configurable tool-chat module with stronger markdown rendering, mobile behavior, keyboard/ARIA accessibility, history UX, and a Sprint 22 file-generation panel brief.

bot-customerObsessed-No-Prob-Bob-afterburner 127claude-chat-workspace 73traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Use provider switching plus per-provider API-key checks and labels to run one chat UI across Ollama, Claude, and ChatGPT.
  • Combine SSE streaming, persisted conversations, search/delete history, date grouping, and structured export to turn chats into reusable seed docs.
  • Back agent workflows with e2e tests and evaluations; this work proved the discovery-to-seed-doc pipeline and expanded eval cases from 3 to 9.
  • Harden reusable chat components with markdown edge-case fixes, mobile wrapping/safe-area behavior, keyboard shortcuts, and ARIA labels.

Commits

bot-customerObsessed-No-Prob-Bob-afterburner
  • docs: update PLAN.md to reflect Phase 2 completion (19 sprints, 485 tests)
  • docs: add PROJECT_STATUS for Sprint 19
  • Merge branch 'agentB-markdown-and-dates'
  • Merge branch 'agentA-export-and-history'
  • chore: pre-merge cleanup
  • agentB-markdown-and-dates: implement sprint 19 tasks
  • feat: add markdown rendering and date grouping in chat UI (F-044, F-045)
  • agentA-export-and-history: implement sprint 19 tasks
  • feat: structured seed doc export (F-047) + Sprint 18 PROJECT_STATUS
  • chore: Sprint 19 brief — markdown rendering, structured export, date groups
  • Merge branch 'agentA-final-polish'
  • chore: pre-merge cleanup
  • agentA-final-polish: implement sprint 18 tasks
  • feat: fix debug panel, sidebar, theme defaults; add title editing (Sprint 18)
  • chore: Sprint 18 brief — final polish (debug panel, sidebar, theme, title edit)
  • Merge branch 'agentB-ui-fixes' (resolve backlog conflict)
  • Merge branch 'agentA-provider-and-history'
  • chore: pre-merge cleanup
  • agentA-provider-and-history: implement sprint 17 tasks
  • fix: provider label returns "Qwen 3.5" not "ollama", generate PROJECT_STATUS for sprints 12-16
  • agentB-ui-fixes: implement sprint 17 tasks
  • feat: add typing dots animation in streaming message bubble (F-040, B-022)
  • chore: Sprint 17 brief — PROJECT_STATUS for 12-16, provider label, debug panel, typing dots
  • Merge branch 'agentB-docs-and-polish'
  • Merge branch 'agentA-e2e-integration'
  • chore: pre-merge cleanup
  • agentA-e2e-integration: implement sprint 16 tasks
  • feat: e2e integration tests proving discovery-to-seed-doc pipeline (F-039)
  • agentB-docs-and-polish: implement sprint 16 tasks
  • docs: comprehensive README, fix debug panel, colored CLI evaluate
  • chore: Sprint 16 brief — e2e integration proof, README, debug panel fix
  • Merge branch 'agentB-chat-ux' (resolve backlog conflict)
  • Merge branch 'agentA-eval-expansion'
  • chore: pre-merge cleanup
  • agentA-eval-expansion: implement sprint 15 tasks
  • feat: expand evaluation scenarios from 3 to 9 with diverse customer types (F-035)
  • agentB-chat-ux: implement sprint 15 tasks
  • feat: delete conversation, search sidebar, dark/light theme toggle
  • chore: Sprint 15 brief — eval expansion, delete/search conversations, themes
  • Merge branch 'agentA-conversations-and-tokens'
  • chore: pre-merge cleanup
  • agentA-conversations-and-tokens: implement sprint 14 tasks
  • feat: conversation sidebar, fix token count, provider label, cost display
  • chore: Sprint 14 brief — conversation sidebar, token fix, cost display
  • Merge branch 'agentA-synthesis-and-fixes' (resolve backlog conflict)
  • Merge branch 'agentB-ui-polish'
  • chore: pre-merge cleanup
  • agentA-synthesis-and-fixes: implement sprint 13 tasks
  • fix server direct-run, add save_discovery API, add auto-synthesis
  • agentB-ui-polish: implement sprint 13 tasks
  • feat: auto-scroll, Save as Seed Doc button, mobile responsive CSS
  • chore: Sprint 13 brief + backlog update from Sprint 12 testing
  • Merge branch 'agentA-streaming-and-polish' (resolve backlog conflict)
  • Merge branch 'agentB-sprint-history'
  • chore: pre-merge cleanup
  • agentA-streaming-and-polish: implement sprint 12 tasks
  • feat: SSE streaming, conversation persistence, and error handling (F-025, F-028, F-029)
  • feat: generate PROJECT_STATUS docs for Sprints 1-11 (F-024, B-014)
  • chore: rewrite Sprint 12 brief with 2 agents (safe split)
  • security: remove .env from tracking, add to .gitignore
  • chore: auto-commit before sprint 12
  • chore: Sprint 12 brief + backlog update from Playwright testing
  • docs: rewrite Vision, Plan, Roadmap reflecting 11 sprints + Agent SDK evolution
  • fix: Claude/ChatGPT now works in web chat — SIGPIPE + non-daemon thread
  • fix: load .env for API keys, fix health check blocking for Claude/ChatGPT
  • fix: test connection works for all providers, per-provider API key display
  • fix: make gear icon bigger and more visible
  • Merge branch 'agentA-multi-provider'
  • chore: pre-merge cleanup
  • agentA-multi-provider: implement sprint 11 tasks
  • feat: add multi-provider LLM support (Ollama, Claude, ChatGPT)
  • chore: Sprint 11 brief — multi-provider LLM (Ollama + Claude + ChatGPT) with gear config panel
  • chore: Sprint 11 brief — multi-provider LLM (Claude + Ollama) with UI switching
  • Merge branch 'agentA-ux-polish'
  • chore: pre-merge cleanup
  • agentA-ux-polish: implement sprint 10 tasks
  • feat: UX polish — welcome message, debug panel, new chat button, loading indicator, server entry
  • chore: Sprint 10 brief — UX polish from live Playwright testing
  • Merge branch 'agentA-fixes-and-polish'
  • chore: pre-merge cleanup
  • agentA-fixes-and-polish: implement sprint 9 tasks
  • fix: CLI crash (B-011), add conversation export (F-016) and personality hot-reload (F-017)
  • chore: Sprint 9 brief — fix CLI crash, conversation export, personality hot-reload
  • Merge branch 'agentA-multi-project-vision'
  • chore: pre-merge cleanup
  • agentA-multi-project-vision: implement sprint 8 tasks
  • feat: multi-project support, generate_vision, post-sprint feedback (F-013, F-014, F-015)
  • chore: Sprint 8 brief — multi-project, generate_vision, feedback loop
  • Merge branch 'agentA-webchat-polish'
  • chore: pre-merge cleanup
  • agentA-webchat-polish: implement sprint 7 tasks
  • feat: polish web chat UI — debug panel, settings, typing indicator, get_sprint_status
  • chore: Sprint 7 brief — web chat polish, debug panel, settings, get_sprint_status
  • Merge branch 'agentA-all-features'
  • chore: pre-merge cleanup
  • agentA-all-features: implement sprint 6 tasks
  • feat: add EvaluationRunner, get_project_summary, add_to_backlog, FactExtractor, CLI evaluate
  • chore: pre-sprint cleanup
  • chore: Sprint 6 brief — single agent, all missing features
  • Merge branch 'agentB-fact-extraction'
  • Merge branch 'agentA-fix-eval-tools'
  • chore: pre-merge cleanup
  • agentB-fact-extraction: implement sprint 5 tasks
  • agentA-fix-eval-tools: implement sprint 5 tasks
  • chore: Sprint 5 brief — fix eval/tools merge damage + fact extraction
  • Merge branch 'agentB-debug-panel-tools'
  • Merge branch 'agentA-eval-framework'
  • chore: pre-merge cleanup
  • agentB-debug-panel-tools: implement sprint 4 tasks
  • agentA-eval-framework: implement sprint 4 tasks
  • chore: Sprint 4 brief — evaluation framework + debug panel + tools
  • Merge branch 'agentB-cli-e2e'
  • Merge branch 'agentA-fix-tools-tests'
  • chore: pre-merge cleanup
  • agentB-cli-e2e: implement sprint 3 tasks
  • feat: add e2e test, fix B-007 naming mismatch, update backlog
  • agentA-fix-tools-tests: implement sprint 3 tasks
  • fix: export save_discovery alias and fix conversation_id test (B-006, B-007)
  • chore: Sprint 3 brief — fix tools/tests + CLI + e2e test
  • Merge branch 'agentB-telegram-tools'
  • Merge branch 'agentA-fix-imports'
  • chore: pre-merge cleanup
  • agentA-fix-imports: implement sprint 2 tasks
  • fix: resolve all import and API mismatches (B-001, B-002, B-003, B-004)
  • agentB-telegram-tools: implement sprint 2 tasks
  • feat: Telegram polling transport, save_discovery tool, fix import bugs
  • chore: Sprint 2 brief — fix imports + Telegram + tools
claude-chat-workspace
  • sprint: write Sprint 22 brief — Milestone B.1 file generation panel
  • Merge branch 'agentA-mobile-polish'
  • chore: auto-commit dirty files before merge (sprint 21)
  • agentA-mobile-polish: implement sprint 21 tasks
  • Sprint 21: hide mobile subtitle, add history aria-label timestamp, startup config log
  • chore: sprint 21 brief + close B-054/055/056, add B-057
  • Merge branch 'agentA-generalize'
  • chore: auto-commit dirty files before merge (sprint 20)
  • agentA-generalize: implement sprint 20 tasks
  • Sprint 20: generalize to configurable tool-chat module; fix user markdown, mobile wrap, safe-area
  • Sprint 19 complete: bullet normalization, nested lists, HR, modal ARIA, model selector label; Sprint 20 generalize to tool-chat module
  • Merge branch 'agentA-lists-and-aria'
  • chore: auto-commit dirty files before merge (sprint 19)
  • agentA-lists-and-aria: implement sprint 19 tasks
  • Sprint 19: fix bullet formats, nested lists, HR opacity, modal/selector ARIA
  • Sprint 18 complete: tab order, aria-labels, heading sizes; Sprint 19 brief (bullet lists, nested lists, HR, ARIA dialog)
  • Merge branch 'agentA-list-and-a11y'
  • chore: auto-commit dirty files before merge (sprint 18)
  • agentA-list-and-a11y: implement sprint 18 tasks
  • Sprint 18: fix ul list-style, keyboard nav, hr, aria-labels, heading hierarchy
  • Sprint 17 complete: blockquote, code badges, modal escape, aria-labels, error card; Sprint 18 brief
  • Merge branch 'agentA-accessibility-and-rendering'
  • chore: auto-commit dirty files before merge (sprint 17)
  • agentA-accessibility-and-rendering: implement sprint 17 tasks
  • Sprint 17: blockquote rendering, code language labels, modal polish, aria-labels
  • Sprint 16 complete: B-034 404 recovery, B-035 retroactive title strip; Sprint 17 brief
  • Merge branch 'agentA-error-ux'
  • chore: auto-commit dirty files before merge (sprint 16)
  • agentA-error-ux: implement sprint 16 tasks
  • Sprint 16: B-034 silent 404 recovery, B-035 retroactive title markdown strip
  • Sprint 15 complete: B-031 history user bubbles, B-032 sidebar title markdown strip, B-033 mobile code block width
  • Merge branch 'agentA-polish'
  • chore: auto-commit dirty files before merge (sprint 15)
  • agentA-polish: implement sprint 15 tasks
  • Sprint 15: B-031 user bubble markdown, B-032 title strip, B-033 mobile pre width
  • Merge branch 'agentA-rendering-fixes'
  • chore: auto-commit dirty files before merge (sprint 14)
  • agentA-rendering-fixes: implement sprint 14 tasks
  • Fix numbered list rendering, mobile sidebar auto-close, user bubble markdown
  • Merge Sprint 13: B-023 table markdown, B-025 history stats, B-026 pluralization, B-027 remove btn style, B-028 custom modal
  • agentA-ui-polish: implement sprint 13 tasks
  • chore: auto-commit dirty files before merge (sprint 13)
  • chore: auto-commit dirty files before merge (sprint 13)
  • chore: auto-commit dirty files before merge (sprint 13)
  • Merge branch 'agentA-js-fixes'
  • chore: auto-commit dirty files before merge (sprint 12)
  • agentA-js-fixes: implement sprint 12 tasks
  • Fix JS issues: scroll-btn, newChat guard, Cmd+Enter, mobile placeholder, word count
  • chore: sprint 11 PROJECT_STATUS, sprint 12 brief, backlog B-019 through B-022
  • Merge branch 'agentB-ux-interactions'
  • Merge branch 'agentA-ui-polish'
  • chore: auto-commit dirty files before merge (sprint 11)
  • agentB-ux-interactions: implement sprint 11 tasks
  • Implement new chat confirmation, copy button guard, Cmd+Enter shortcut
  • agentA-ui-polish: implement sprint 11 tasks
  • Sprint 11 agentA: mobile model selector labels + scroll-to-bottom button HTML/CSS
  • chore: sprint 10 PROJECT_STATUS, sprint 11 brief, backlog updated
  • chore: auto-commit dirty files before merge (sprint 10)
  • Merge branch 'agentB-copy-and-timestamps'
  • agentB-copy-and-timestamps: implement sprint 10 tasks
  • Implement copy fallback, markdown copy source, and history timestamps
  • agentA-mobile-and-overlay: implement sprint 10 tasks
  • Fix mobile header wrapping (B-014) and verify sidebar overlay (F-015)
  • chore: sprint 10 brief + mark sprint 9 backlog items done
  • chore: sprint 9 PROJECT_STATUS
  • Merge branch 'agentB-js-error-ux'
  • Merge branch 'agentA-css-and-layout'
  • chore: auto-commit dirty files before merge (sprint 9)
  • agentA-css-and-layout: implement sprint 9 tasks
  • agentB-js-error-ux: implement sprint 9 tasks
  • fix: mobile sidebar close, table CSS, history entry flexbox (B-009, B-011, B-015)
  • fix: B-010 friendly errors, B-012 stale 404 UX, B-013 stale model guard
  • chore: sprint 9 brief + backlog from Playwright UX audit (B-009 through F-016)
traceable-searchable-adr-memory-index
  • chore: sprint session scheduling state + sprint skill
207 commits

Agents Ship Chat, Messaging, and Publishing Infrastructure

Across the portfolio, the day stood up multiple Afterburner-style projects: an Ollama-backed LLM webchat with personality inheritance and conversation memory, a standalone Claude chat workspace, and the whatsup messaging tool. The work also hardened the sprint/dashboard system with publish/deploy flows, project-aware views, notifications, backlog dashboards, and robustness fixes.

bot-customerObsessed-No-Prob-Bob-afterburner 14claude-chat-workspace 67tool-telegram-whatsapp 66traceable-searchable-adr-memory-index 60
▸ how to apply & commit details

How you can apply this

  • Reuse the local-agent starter pieces: personality inheritance, principle extraction, ConversationMemory, CLI commands, Ollama streaming, and a debug UI.
  • Apply the chat workspace patterns: per-request model handling, history APIs/sidebar, SSE char and word counts, GFM markdown rendering, stats, graceful shutdown, and Docker/env setup.
  • Copy the whatsup tool shape for small integrations: core package, config loader, Telegram transport, CLI, MCP server, REST API, JSONL history, console transport, /config UI, /status and /projects HTML views.
  • Borrow the dashboard automation ideas: project-aware publish views, one-click republish, S3 bucket naming, CloudFront creation, sprint-run prechecks/traps, tmux session namespacing, and Telegram completion notifications.

Commits

bot-customerObsessed-No-Prob-Bob-afterburner
  • Merge branch 'agentC-memory-cli'
  • Merge branch 'agentB-llm-webchat'
  • Merge branch 'agentA-personality'
  • chore: pre-merge cleanup
  • agentB-llm-webchat: implement sprint 1 tasks
  • feat: implement LLM webchat with OllamaClient, streaming, and debug UI
  • agentC-memory-cli: implement sprint 1 tasks
  • feat: implement ConversationMemory system and CLI commands
  • agentA-personality: implement sprint 1 tasks
  • feat: implement personality framework with inheritance and principle extraction
  • fix: add sprint-config.sh to correct location
  • chore: auto-commit before sprint
  • chore: write Sprint 1 brief — personality framework, LLM webchat, memory CLI
  • Initial commit: Afterburner scaffolding
claude-chat-workspace
  • chore: sprint 8 PROJECT_STATUS and updated lifecycle docs
  • docs: update lifecycle docs to reflect post-Sprint-8 state
  • fix: copy button below bubble via flexbox column, never overlaps text (B-005)
  • Merge branch 'agentB-table-renderer'
  • Merge branch 'agentA-frontend-fixes'
  • chore: auto-commit dirty files before merge (sprint 8)
  • agentB-table-renderer: implement sprint 8 tasks
  • feat: GFM table rendering in DOM markdown renderer (B-007)
  • agentA-frontend-fixes: implement sprint 8 tasks
  • fix: persist model selection in localStorage, fix copy button overlap (B-005, B-008)
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-char-count'
  • Merge branch 'agentA-history-delete'
  • chore: auto-commit dirty files before merge (sprint 7)
  • agentA-history-delete: implement sprint 7 tasks
  • feat: history entry delete button and character count display (F-011, F-012 frontend)
  • agentB-char-count: implement sprint 7 tasks
  • feat: include char and word count in SSE done event (F-012 backend)
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-server-stats'
  • Merge branch 'agentA-frontend-polish'
  • chore: auto-commit dirty files before merge (sprint 6)
  • agentA-frontend-polish: implement sprint 6 tasks
  • feat: ordered lists, horizontal rules, mobile responsive layout, copy button fix (F-008, F-009, F-010, B-005)
  • agentB-server-stats: implement sprint 6 tasks
  • feat: add /api/stats endpoint with uptime, conversation count, and request count
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-server-robustness'
  • Merge branch 'agentA-markdown-and-history-fixes'
  • chore: auto-commit dirty files before merge (sprint 5)
  • agentA-markdown-and-history-fixes: implement sprint 5 tasks
  • feat: markdown headings and lists, graceful stale history handling (B-006, F-006, F-007)
  • agentB-server-robustness: implement sprint 5 tasks
  • feat: request logging, graceful shutdown, bulk conversation clear endpoint
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-conversations-api'
  • Merge branch 'agentA-history-sidebar'
  • chore: auto-commit dirty files before merge (sprint 4)
  • agentA-history-sidebar: implement sprint 4 tasks
  • feat: add chat history sidebar and fix copy button overlap (F-005, B-005)
  • agentB-conversations-api: implement sprint 4 tasks
  • feat: enhance conversations list API with preview and message count
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-history-api'
  • Merge branch 'agentA-frontend-fixes'
  • chore: auto-commit dirty files before merge (sprint 3)
  • agentA-frontend-fixes: implement sprint 3 tasks
  • agentB-history-api: implement sprint 3 tasks
  • fix: triple-asterisk markdown rendering and always-visible copy button (B-004, F-004)
  • feat: add conversation history API endpoints (GET/DELETE /api/conversations)
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-frontend-polish'
  • Merge branch 'agentA-server-fixes'
  • chore: auto-commit dirty files before merge (sprint 2)
  • agentB-frontend-polish: implement sprint 2 tasks
  • fix: correct Opus model ID, add bold/italic rendering, add loading indicator (B-003, F-001, F-003)
  • agentA-server-fixes: implement sprint 2 tasks
  • fix: respect per-request model and use Anthropic system parameter (B-001, B-002)
  • chore: auto-commit before sprint run
  • Merge branch 'agentB-ux-polish'
  • agentB-ux-polish: implement sprint 1 tasks
  • feat: UX polish — new chat button, model selector, copy message button
  • agentA-standalone-setup: implement sprint 1 tasks
  • feat: standalone setup — copy v1 code, Docker Compose, env config
  • chore: auto-commit before sprint run
  • chore: auto-commit before sprint run
  • Initial commit: Afterburner scaffolding
tool-telegram-whatsapp
  • fix: Telegram health check missing ok:true — status page showed Unhealthy
  • Merge branch 'agentB-config-polish'
  • Merge branch 'agentA-html-views'
  • chore: auto-commit dirty files before merge (sprint 5)
  • agentB-config-polish: implement sprint 5 tasks
  • feat: auto-collapse setup guide + config token auth + Security docs
  • agentA-html-views: implement sprint 5 tasks
  • feat: add HTML views for /status and /projects endpoints
  • chore: write Sprint 5 brief — HTML views, config polish, security
  • security: bind server to 127.0.0.1 by default + update backlog from review
  • docs: update quickstart — use whatsup command, add venv activation note
  • feat: improved setup guide — 5-step Telegram walkthrough with troubleshooting
  • feat: add setup command + Telegram setup guide in config UI
  • feat: add config UI at /config — web-based project and transport management
  • chore: update backlog (all items resolved) + add venv to README quickstart
  • docs: add Sprint 4 PROJECT_STATUS + cleanup
  • fix: test_server.py references WhatsupHandler (renamed from _Handler in Sprint 4)
  • Merge branch 'agentB-schema-skill'
  • Merge branch 'agentA-bugfixes'
  • chore: auto-commit dirty files before merge (sprint 4)
  • agentA-bugfixes: implement sprint 4 tasks
  • fix: resolve B-001, B-002, B-004, B-005, B-006 — all open bugs
  • agentB-schema-skill: implement sprint 4 tasks
  • feat: add /schema endpoint and install-skill CLI command
  • chore: write Sprint 4 brief + update backlog from review
  • docs: add Sprint 3 PROJECT_STATUS + cleanup
  • fix: resolve merge conflicts from Sprint 3 (console.py, core.py, pyproject.toml)
  • Merge branch 'agentC-readme-docs'
  • chore: auto-commit dirty files before merge (sprint 3)
  • Merge branch 'agentA-console-transport-init'
  • chore: pre-merge cleanup
  • agentB-tests: implement sprint 3 tasks
  • feat: add comprehensive pytest test suite with console transport
  • agentC-readme-docs: implement sprint 3 tasks
  • docs: add comprehensive README with all interface docs
  • agentA-console-transport-init: implement sprint 3 tasks
  • feat: add console transport and whatsup init command
  • chore: write Sprint 3 brief + backlog — tests, console transport, README
  • chore: remove stale Sprint 2 brief
  • docs: add Sprint 2 PROJECT_STATUS
  • Merge branch 'agentC-rest-server'
  • Merge branch 'agentB-events-history'
  • Merge branch 'agentA-gitignore-cleanup'
  • chore: auto-commit dirty files before merge (sprint 2)
  • agentC-rest-server: implement sprint 2 tasks
  • feat: add REST API server on port 1202 with CLI subcommand
  • agentB-events-history: implement sprint 2 tasks
  • feat: add event formatters, core business logic, and JSONL history
  • agentA-gitignore-cleanup: implement sprint 2 tasks
  • chore: add Python .gitignore and remove committed __pycache__
  • chore: write Sprint 2 brief — REST API, new events, history, gitignore
  • fix: rewrite PROJECT_STATUS to match build-sprint-data.sh parser format
  • docs: add Sprint 1 PROJECT_STATUS (was missing due to python3 verification failure)
  • chore: clean up after Sprint 1 — remove brief, done markers, worktrees
  • Merge branch 'agentC-cli-mcp-skill'
  • Merge branch 'agentB-core-messages'
  • Merge branch 'agentA-transport-config'
  • agentC-cli-mcp-skill: implement sprint 1 tasks
  • feat: add CLI, MCP server, and Claude skill for whatsup
  • agentA-transport-config: implement sprint 1 tasks
  • feat: add core package, config loader, and Telegram transport
  • agentB-core-messages: implement sprint 1 tasks
  • feat: add core business logic and message formatting modules
  • chore: auto-commit before sprint
  • chore: write Sprint 1 brief — core package + Telegram transport + CLI + MCP
  • Initial commit: Afterburner scaffolding
traceable-searchable-adr-memory-index
  • fix: B-012 — prefix tmux sprint sessions with project slug to prevent cross-project collisions
  • fix: save button shows visual feedback + deploy shows clickable site link
  • fix: update .mcp.json cwd path to /Users/dmar (was /Users/davidmar)
  • fix: lifecycle sub-links now preserve project context when navigating
  • feat: auto-generate S3 bucket name from project name
  • fix: don't overwrite CloudFront distribution fields with empty strings on config save
  • feat: one-click Republish button (generate + deploy in one step)
  • feat: show full project name in top bar for clarity
  • Merge remote-tracking branch 'origin/main' into dashboard-active-project-everyone-ai
  • fix: macOS bash 3 compat in sprint-run.sh (ulimit + local -A)
  • chore: update sprint timing + projects config
  • feat: proper table/link/list rendering + deduplicate headings in published site
  • feat: publish all project data (sprints, sessions, backlog) + open site button
  • feat: improved publish site styling + auto-create CloudFront distribution
  • Merge branch 'agentB-sprint-test-fix'
  • Merge branch 'agentA-publish-project-ctx'
  • agentA-publish-project-ctx: implement sprint 16 tasks
  • feat: publish view responds to project switching + shows generation metadata (F-035, F-033)
  • agentB-sprint-test-fix: implement sprint 16 tasks
  • fix: set correct DEFAULT_TEST_CMD for framework repo (B-011)
  • chore: write Sprint 16 brief — publish project context + test fix
  • chore: update backlog — Sprint 15 completions + new findings from Playwright review
  • Merge branch 'agentB-sprint-hardening'
  • Merge branch 'agentA-publish-polish'
  • agentA-publish-polish: implement sprint 15 tasks
  • feat: polish Publish feature — setup infra, doc preview, autocomplete fix
  • agentB-sprint-hardening: implement sprint 15 tasks
  • feat: harden sprint-run.sh with verification pre-check and EXIT trap
  • feat: Sprint 15 — add Publish feature + write sprint brief
  • Merge remote-tracking branch 'origin/main' into dashboard-active-project-everyone-ai
  • feat: add get_workspace_state MCP tool and fix projects.json paths
  • feat: Sprint 14 — integrate whatsup notifications into Afterburner
  • Merge branch 'agentB-whatsup-events'
  • Merge branch 'agentA-whatsup-hook'
  • agentA-whatsup-hook: implement sprint 14 tasks
  • feat: add whatsup notification hook to sprint config and run scripts
  • agentB-whatsup-events: implement sprint 14 tasks
  • feat: add whatsup Telegram notifications for agent completion events
  • chore: write Sprint 14 brief — integrate whatsup into Afterburner
  • chore: remove stale Sprint 13 brief
  • feat: Sprint 13 — enhanced backlog view + iterate cycle dashboard
  • feat: Sprint 13 — enhanced backlog view + iterate workflow dashboard
  • Merge branch 'agentB-iterate-view'
  • Merge branch 'agentA-backlog-enhance'
  • agentA-backlog-enhance: implement sprint 13 tasks
  • feat: enhance backlog view with priority sorting, status filtering, and stats
  • agentB-iterate-view: implement sprint 13 tasks
  • feat: add iterate cycle view and overview status card
  • chore: write Sprint 13 brief — iterate workflow dashboard UI
  • chore: remove stale Sprint 12 brief
  • chore: add continuous sprint loop features to backlog (F-022 through F-025)
  • docs: add detailed backlog docs for F-011 through F-021
  • chore: add tool plugin system + integration items to backlog (F-016 through F-021)
  • feat: Sprint 12 — fix sprint agent auth, deploy paths, sprint progress view
  • chore: write Sprint 12 brief + file B-010, B-011 bugs
  • chore: add sprint-run.sh robustness features to backlog (F-011 through F-015)
  • docs: add PROJECT_STATUS format + python3 notes to CLAUDE.md
  • fix: update .mcp.json cwd path to /Users/davidmar
  • chore: register tool-telegram-whatsapp in dashboard projects
  • fix: normalize python→python3 + continue to report on verification failure
14 commits

IBT Migration Lands With Sprint Automation and Deep Links

FSM-generic completed its IBT migration, fixed 29 test errors and security bugs, improved denied-access error handling, and made intel-briefing install from GitHub via requirements.txt. Related work fixed live evidence collection blockers in intelligence-briefing-toolkit and added path-based routing, sprint-live views, /sprint skill docs, dashboard deep links, and post-sprint automation in the ADR memory index.

FSM-generic 6intelligence-briefing-toolkit 2traceable-searchable-adr-memory-index 6
▸ how to apply & commit details

How you can apply this

  • Use requirements.txt GitHub installs to pull a companion toolkit automatically during migration.
  • Clear stale error messages on denied repo access so permission failures stay explicit.
  • Treat live evidence collection bugs as release blockers before relying on briefing automation.
  • Pair path-based routing with sprint-live views and post-sprint scripts for reusable sprint dashboards.

Commits

FSM-generic
  • feat: Sprint 8 — complete IBT migration, fix 29 test errors, fix security bugs
  • chore: auto-commit before sprint 8
  • chore: write Sprint 8 brief — complete IBT migration + fix critical bugs
  • fix: clear error message when intel-briefing repo access is denied
  • feat: intel-briefing auto-installs from GitHub via requirements.txt
  • chore: restore Sprint 7 brief from archive after completion
intelligence-briefing-toolkit
  • fix: three bugs blocking live evidence collection
  • chore: remove ephemeral sprint files
traceable-searchable-adr-memory-index
  • Merge remote-tracking branch 'origin/main' into dashboard-active-project-everyone-ai
  • feat: path-based router, sprint-live view, /sprint skill, post-sprint automation
  • docs: add design spec for /sprint skill + dashboard deep links
  • chore: set everyone-ai as active dashboard project
  • fix: update .mcp.json cwd path to /Users/dmar
  • chore: update projects.json active project + sprint-run.sh improvements
72 commits

Intel Briefing Toolkit Gains CLI, REST, MCP Interfaces

The day centered on extracting FSM-generic research capabilities into a reusable intelligence-briefing-toolkit with foundations, services, adapters, a pipeline, and three public interfaces. FSM-generic was wired back to the toolkit through import shims, while the ADR memory index gained deploy admin APIs/views and several operational fixes landed across supporting tools.

FSM-generic 5intelligence-briefing-toolkit 49tool-s3-cloudfront-push 2traceable-searchable-adr-memory-index 16
▸ how to apply & commit details

How you can apply this

  • Package extraction used a foundation layer: config, schemas, base tool, pyproject, and tests before moving search, extraction, synthesis, project, and analysis tools.
  • The toolkit exposed reuse paths through a click CLI with 9 subcommands, a FastAPI REST API with 10 authenticated endpoints, and 5 FastMCP tools.
  • A ResearchPipeline orchestrator plus BaseSourceAdapter/WebSourceAdapter split workflow control from source-specific fetching, making new sources easier to add.
  • Downstream compatibility was preserved with FSM-generic import shims and verified by reported test counts: 192 toolkit tests and 1284 FSM-generic tests.

Commits

FSM-generic
  • docs: Sprint 7 status — 1284 tests, intel-briefing wired via shims
  • feat: wire FSM-generic to intel-briefing toolkit via import shims
  • agentB-import-shims: implement sprint 7 tasks (auto-commit)
  • fix: remove parens from agent branch name
  • docs: Sprint 7 brief — wire FSM-generic to intel-briefing toolkit
intelligence-briefing-toolkit
  • docs: update roadmap — Sprints 1-3 complete, migration plan next
  • docs: Sprint 3 status — 192 tests, all 4 interfaces complete
  • Merge agentC-mcp (conflicts resolved)
  • Merge agentB-rest (conflicts resolved)
  • Merge branch 'agentA-cli'
  • agentB-rest: implement sprint 3 tasks (auto-commit)
  • agentA-cli: implement sprint 3 tasks (auto-commit)
  • feat: add REST interface (FastAPI) with 10 endpoints and auth
  • agentC-mcp: implement sprint 3 tasks (auto-commit)
  • feat: add click-based CLI interface with 9 subcommands
  • feat: add MCP server interface with 5 FastMCP tools
  • docs: Sprint 3 brief — CLI + REST + MCP interfaces
  • docs: Sprint 2 status report — 141 tests, services + pipeline + adapters
  • fix: wire services __init__.py exports + remove voiceos string from docstring
  • Merge agentD-adapters (conflicts resolved)
  • Merge agentC-pipeline (conflicts resolved)
  • Merge agentB-analysis-services (conflicts resolved)
  • Merge agentA-project-service (pycache conflict resolved)
  • chore: ensure __pycache__ in .gitignore
  • Merge agentA-project-service (conflicts resolved)
  • agentB-analysis-services: implement sprint 2 tasks (auto-commit)
  • feat: extract 4 analysis services from FSM-generic into intel_briefing/services/
  • agentC-pipeline: implement sprint 2 tasks (auto-commit)
  • agentA-project-service: implement sprint 2 tasks (auto-commit)
  • feat: add ResearchPipeline orchestrator with project CRUD and deep research
  • feat: extract ResearchProjectService and 3 project tools from FSM-generic
  • agentD-adapters: implement sprint 2 tasks (auto-commit)
  • feat: implement source adapter pattern (BaseSourceAdapter + WebSourceAdapter)
  • docs: Sprint 2 brief — Services + Pipeline + Adapters
  • docs: Sprint 1 status report + fix test command to python3
  • Merge branch 'agentD-synthesis-tools'
  • Merge branch 'agentC-extraction-tools' (conflicts resolved)
  • Merge branch 'agentB-search-tools' (conflicts resolved: keep agentA foundation)
  • Merge branch 'agentA-foundation'
  • agentC-extraction-tools: implement sprint 1 tasks (auto-commit)
  • feat: extract ContentExtractor, CoverageChecker, StructuredExtractor tools
  • agentB-search-tools: implement sprint 1 tasks (auto-commit)
  • agentD-synthesis-tools: implement sprint 1 tasks (auto-commit)
  • feat: extract search tools from FSM-generic into intel_briefing
  • feat: extract ResearchSynthesizerTool and ResearchReportTool from FSM-generic
  • agentA-foundation: implement sprint 1 tasks (auto-commit)
  • feat: add package foundation — config, schemas, base tool, pyproject.toml
  • Merge remote-tracking branch 'origin/agentA-foundation' into agentD-synthesis-tools
  • Merge remote-tracking branch 'origin/agentA-foundation' into agentC-extraction-tools
  • chore: add Python entries to .gitignore, remove cached .pyc files
  • feat: add foundation layer — config, schemas, base tool, tests
  • docs: Sprint 1 brief — Foundation + Core Tools extraction
  • chore: add git pull/push convention to agent prompt
  • Initial commit: Afterburner scaffolding + lifecycle docs
tool-s3-cloudfront-push
  • fix: remove invalid s3:HeadBucket from IAM policy
  • feat: add UpdateFunction and GetFunction to IAM policy
traceable-searchable-adr-memory-index
  • fix: sprint-parse.sh — respect DEFAULT_TEST_CMD as fallback for merge verification
  • fix: replace infinite loading spinners with error states + fix agent pipe hang
  • feat: register intel-briefing-toolkit project + add git pull/push to agent prompt
  • docs: add B-001 — deploy API doesn't read active project path
  • chore: Sprint 11 complete — Deploy Admin Panel
  • Merge branch 'agentB-deploy-view'
  • Merge branch 'agentA-deploy-api'
  • agentB-deploy-view: implement sprint 11 tasks
  • feat: add deploy management view to dashboard
  • agentA-deploy-api: implement sprint 11 tasks
  • feat: add deploy management API endpoints to dashboard server
  • chore: install sprint toolkit into framework repo, set test command
  • docs: write Sprint 11 brief — Deploy Admin Panel
  • Merge branch 'main' of https://github.com/davidbmar/traceable-searchable-adr-memory-index
  • fix: install .gitignore on project setup to block terraform binaries and sprint artifacts
  • fix: suppress find errors for missing packages/services dirs in sprint-run.sh
4 commits

Lifecycle Docs Get One-Command Setup and Claude Generation

The traceable-searchable-adr-memory-index project added a generate-lifecycle-docs skill that uses Claude to create lifecycle documentation. It also gained a bootstrap.sh for one-command framework setup, fixed load_all_lifecycle_docs, added dashboard navigation to the skill, and resolved project metadata by adding everyone-ai.

traceable-searchable-adr-memory-index 4
▸ how to apply & commit details

How you can apply this

  • Package framework setup behind bootstrap.sh so new users can initialize the project with one command.
  • Create a dedicated docs-generation skill when lifecycle documentation should be produced consistently by an LLM.
  • Fix bulk document loaders like load_all_lifecycle_docs before relying on them for search or dashboard navigation.
  • Keep portfolio metadata in projects.json and preserve new entries such as everyone-ai when resolving merge conflicts.

Commits

traceable-searchable-adr-memory-index
  • fix: load_all_lifecycle_docs bug + add dashboard navigation to skill
  • feat: add generate-lifecycle-docs skill — uses Claude as the LLM
  • feat: add bootstrap.sh for one-command framework setup
  • Resolve merge conflict: add everyone-ai to projects.json
23 commits

Chrome Automation and Project Agents Land

This day centered on reusable automation foundations: a browser automation tool gained Chrome launching, profile discovery, macOS cookie decryption, and a Commander.js CLI. The ADR memory dashboard also grew into a project-aware agent workspace with chat, model selection, sprint tooling, onboarding, seed uploads, lifecycle views, and review panels.

FSM-generic 1tool-browserAutomationScripts 8tool-messaging-project 1traceable-searchable-adr-memory-index 13
▸ how to apply & commit details

How you can apply this

  • Use the Chrome launcher/profile discovery/cookie decryption modules as a base for macOS browser automation tools.
  • Package automation as both CLI and library exports so scripts can be reused interactively or embedded elsewhere.
  • Add project create/switch tools, model selection, and provider adapters to make an agent dashboard work across local Ollama and Anthropic backends.
  • Pair agent features with guardrails like tighter prompts, limited file reads, and corrected project_root switching.

Commits

FSM-generic
  • docs: add Sprint 6 brief and design spec (debug, test, cleanup)
tool-browserAutomationScripts
  • Merge branch 'agentC-cli-integration'
  • Merge branch 'agentB-cookie-decrypt'
  • Merge branch 'agentA-chrome-launcher'
  • Implement Chrome cookie decryption module for macOS
  • Add CLI integration: Commander.js CLI, library exports, and core modules
  • agentA-chrome-launcher: implement sprint 1 tasks
  • Add Chrome profile discovery and launch module
  • Initial commit: Afterburner scaffolding
tool-messaging-project
  • Initial commit: Afterburner scaffolding
traceable-searchable-adr-memory-index
  • chore: update project registry — remove deleted project, add tool-messaging-project
  • feat: add sprint brief review panel, review pane, and dashboard improvements
  • feat: add project-onboarding Claude Code plugin
  • feat: add seed upload UI, lifecycle view, and fix open_dashboard view mapping
  • feat: add create_project tool to chat agent
  • feat: add model selector dropdown to chat input bar
  • fix: update project_root on switch_project + limit file reads
  • feat: add Anthropic API support to chat agent + Claude Haiku provider
  • feat: add switch_project tool to chat agent
  • fix: tighten chat agent system prompt to prevent over-eager tool calls
  • feat: add chat panel to dashboard with Ollama-powered agent
  • feat: add afterburner-agent (nano-claw core + sprint tools + CLI)
  • feat: dashboard kickoff guide, brief generator modules, LLM settings
4 commits

Config Editing Meets LLM Seed Extraction

The day delivered a Sprint 5 integration for FSM-generic, combining a config editor, type definitions, store wiring, and e2e coverage. The ADR memory index gained LLM-powered seed extraction, per-provider configuration, a modular report pipeline, and fixes for section parsing and project-root resolution.

FSM-generic 1traceable-searchable-adr-memory-index 3
▸ how to apply & commit details

How you can apply this

  • Built a typed, store-backed config editor with e2e tests; reuse the pattern when configuration UI needs durable state plus regression coverage.
  • Added LLM-powered seed extraction with per-provider config; apply this to keep AI-backed indexing portable across model providers.
  • Modularized the report pipeline; reuse the structure to separate extraction, scanning, and reporting steps.
  • Fixed section parsing and seed path resolution by capturing subsections and using the active project root instead of localStorage fallback.

Commits

FSM-generic
  • feat: Sprint 5 integration — config editor, types, store, and e2e tests
traceable-searchable-adr-memory-index
  • feat: LLM-powered seed extraction + per-provider config + modular report pipeline
  • fix: _find_section now captures sub-sections and broadens roadmap patterns
  • fix: seed scan/generate now uses active project root instead of localStorage fallback
41 commits

MCP Workflows, Research Configs, and Narrated Demo Engines

The day centered on making portfolio tools more operable from coding agents: new MCP servers, Claude Code workflow support, and an Afterburner dashboard framework landed alongside repo guardrails. It also added reusable product features: research-configuration editing and interpretation in FSM-generic, plus a narrated sprint-demo video engine with TTS and MCP tools.

FSM-generic 16tool-software-video-picture-annotator-review 19traceable-searchable-adr-memory-index 6
▸ how to apply & commit details

How you can apply this

  • Build research tooling around explicit models: FSM-generic added ResearchConfig models, a tabbed ConfigEditor, wizard suggestions, deep-dive questions, So-What interpretation, and evidence scoring.
  • Use registries for extensibility: the alert channel abstraction and configurable scoring weights give other apps a pattern for pluggable delivery and prioritization.
  • Expose app workflows through MCP: the video annotator and Afterburner commits added MCP servers so Claude Code can drive existing tools instead of requiring bespoke UI paths.
  • Package repeatable agent workflows: Claude Code skills, generated CLAUDE.md files, sprint hooks, ADRs, and repo boundary guardrails make project practices reusable across repos.

Commits

FSM-generic
  • Merge branch 'agentC-config-editor'
  • Merge branch 'agentF-alert-channels'
  • Merge branch 'agentE-investigation'
  • Merge branch 'agentD-so-what'
  • Merge branch 'agentB-wizard-enhance'
  • Merge branch 'agentG-scoring'
  • Merge branch 'agentA-research-config'
  • feat: add ConfigEditor tabbed form component for research config editing
  • feat: add So-What interpreter service for strategic signal context
  • feat: add LLM-powered wizard suggestion service
  • feat: add InvestigationStore and deep-dive question builder
  • feat: add alert channel abstraction with registry pattern
  • feat: add ResearchConfig models for Sprint 5 research configuration
  • feat: add evidence scoring utility with configurable weights
  • feat: register afterburner MCP server in project config
  • docs: add repo boundary rules and write-path guardrail hook
tool-software-video-picture-annotator-review
  • Merge branch 'agentC-docs-and-tests'
  • Merge branch 'agentB-tts-and-mcp'
  • agentA-video-producer: implement sprint 8 tasks
  • agentB-tts-and-mcp: implement sprint 8 tasks
  • feat: implement VideoProject engine for narrated sprint demo videos (F-014)
  • agentC-docs-and-tests: implement sprint 8 tasks
  • Add TTS module and video producer MCP tools (F-014)
  • Sprint 8 agentC: docs, MCP schema tests, ADR, sprint archive
  • Sprint 8 planning: video producer engine (F-014), roadmap + backlog updates
  • Sprint 7 docs: backlog updates, PROJECT_STATUS, CLAUDE.md
  • Merge branch 'agentC-claude-skill'
  • Merge branch 'agentB-mcp-server'
  • agentA-web-polish: implement sprint 7 tasks
  • Web UI polish: history sidebar, API endpoints, responsive layout (F-006)
  • agentB-mcp-server: implement sprint 7 tasks
  • Add MCP server exposing video-annotator tools for Claude (F-007)
  • agentC-claude-skill: implement sprint 7 tasks
  • Add Claude Code skill for annotator-review workflows (F-008)
  • Add Sprint 6 PROJECT_STATUS + Sprint 7 brief
traceable-searchable-adr-memory-index
  • Add sprint-video.sh hook, global CLAUDE.md, Afterburner terminology
  • Add project-level CLAUDE.md generation to setup.sh
  • feat: add Afterburner MCP server for Claude Code dashboard control
  • refactor: replace popup onboarding tooltips with simple hover titles
  • feat: Sprint 5 design — Afterburner unified dashboard framework
  • Document sprint-run.sh as recommended sprint workflow
87 commits

Media Review Toolkit and Sprint Dashboards Ship

Across the media annotator project, the day took the repo from scaffold to a tested video/image review system with CLI commands, web UI, screenshot capture, diff reports, and documentation. The ADR memory-index repo gained sprint automation, real-time progress/dashboard controls, metrics, backlog/status updates, merge fixes, and macOS-compatible scripts.

tool-software-video-picture-annotator-review 67traceable-searchable-adr-memory-index 20
▸ how to apply & commit details

How you can apply this

  • Reuse the media pipeline pattern: VideoAgent for loading/extraction, Annotator for specs and Claude Vision merging, Reporter for HTML/JSON output.
  • Apply the visual diff stack: pixel diff, SSIM, change-region detection, and before/after/overlay HTML reports for screenshot review workflows.
  • Expose one core library through multiple surfaces: polished CLI flags, screenshot/diff commands, env-configurable serve ports, and a web UI server.
  • Borrow the sprint ops loop: PROJECT_STATUS docs, backlog updates, prior-sprint brief injection, metrics, SSE progress, rebuild controls, and post-merge hooks.

Commits

tool-software-video-picture-annotator-review
  • Update README with current capabilities, add CLAUDE.md
  • Change default serve port to 7070
  • Change serve default port to 8080, add env var support
  • Sprint 6 merge: Web UI, CLI polish, backlog update (248 tests passing)
  • Merge branch 'agentA-web-ui'
  • Merge branch 'agentB-cli-polish'
  • agentA-web-ui: implement web UI server with diff and screenshot support
  • agentB-cli-polish: implement sprint 6 tasks
  • Polish CLI: add --json/--quiet flags, command groups, fix diff bugs
  • agentC-backlog-update: implement sprint 6 tasks
  • agentC: update backlog status + add web module unit tests
  • Update sprint scripts + add Sprint 6 brief
  • Add PROJECT_STATUS doc for Sprint 5
  • Merge branch 'agentA-screenshot-cli'
  • Merge branch 'agentC-diff-report'
  • agentA-screenshot-cli: implement sprint 5 tasks
  • Add screenshot and diff CLI commands with integration tests
  • agentC-diff-report: implement sprint 5 tasks
  • Add HTML diff report renderer with before/after/overlay views
  • agentB-diff-engine: implement sprint 5 tasks
  • Add image diff engine with pixel diff, SSIM, and change region detection
  • Add PROJECT_STATUS docs for sprints 0-3, backlog items, gitignore updates
  • Add PROJECT_STATUS for Sprint 4: image support, capture, CLI polish
  • Fix stale test: PNG now returns frame instead of raising error
  • Merge branch 'agentB-cli-polish'
  • Merge branch 'agentC-screenshot-capture'
  • agentB-cli-polish: implement sprint 4 tasks
  • agentB-cli-polish: add image support, Rich progress bars, and colored error output
  • agentA-image-support: implement sprint 4 tasks
  • agentA-image-support: add image file support to VideoAgent
  • agentC-screenshot-capture: implement sprint 4 tasks
  • agentC-screenshot-capture: add Playwright screenshot capture module
  • Merge branch 'agentA-cli-wiring'
  • Merge branch 'agentC-docs-examples'
  • agentA-cli-wiring: implement sprint 3 tasks
  • agentA-cli-wiring: wire CLI commands to core library
  • agentC-docs-examples: implement sprint 3 tasks
  • agentC-docs-examples: create user-facing documentation and examples
  • agentB-api-polish: implement sprint 3 tasks
  • Polish core API: docstrings, error messages, and Frame stubs
  • Merge branch 'agentC-cli-report-integration'
  • Merge branch 'agentB-annotation-integration'
  • agentA-video-integration: implement sprint 2 tasks
  • Add integration tests for video loading and frame extraction pipeline
  • agentC-cli-report-integration: implement sprint 2 tasks
  • agentB-annotation-integration: implement sprint 2 tasks
  • Add CLI and report pipeline integration tests
  • Add integration tests for annotation pipeline and error handling
  • Write Sprint 2 brief: integration tests and edge cases
  • Merge branch 'agentC-report-renderer'
  • Merge branch 'agentB-annotation-engine'
  • agentA-video-agent: implement sprint 1 tasks
  • Implement VideoAgent: video loading, frame extraction, and scene detection
  • agentB-annotation-engine: implement sprint 1 tasks
  • Implement Annotator: spec loading, Claude Vision auto-detect, and annotation merging
  • agentC-report-renderer: implement sprint 1 tasks
  • Implement Reporter with HTML and JSON report rendering
  • Write Sprint 1 brief: core library implementation
  • Merge branch 'agentA-package-config'
  • Merge branch 'agentB-project-scaffold'
  • agentA-package-config: implement sprint 0 tasks
  • Enhance package config: expand .gitignore coverage, add serve CLI command
  • agentC-framework-docs: implement sprint 0 tasks
  • Add project memory .index directory and agent brief
  • agentB-project-scaffold: implement sprint 0 tasks
  • Add tests/fixtures directory and agent brief
  • Initial commit: project scaffold and sprint 0 brief
traceable-searchable-adr-memory-index
  • Fix sprint-merge.sh for bash 3.x (macOS default)
  • Update backlog: mark F-002/F-003 complete, add metrics features F-005–F-010
  • Simplify to light sprint metrics — drop LLM report mode
  • Add metrics collection, planning context, and LLM report mode
  • Enrich PROJECT_STATUS with test counts, build status, audit results, and backlog
  • Add previous sprint summary auto-injection into agent briefs
  • Add sprint feedback loop: enhanced PROJECT_STATUS + sprint-plan.sh
  • Add .json to no-cache headers to prevent stale dashboard data
  • Add sprint ephemeral files to .gitignore
  • Backfill PROJECT_STATUS docs for sprints 1-4
  • Sprint 5 post-merge: PROJECT_STATUS doc, addNewProject race fix, project config
  • Merge branch 'agentA-sprint-progress'
  • Merge branch 'agentB-rebuild-button'
  • agentA-sprint-progress: implement sprint 5 tasks
  • Add real-time sprint progress view with SSE endpoint (F-003)
  • agentB-rebuild-button: implement sprint 5 tasks
  • Add rebuild data button with output display to settings page (F-002)
  • agentC-merge-fixes: implement sprint 5 tasks
  • Add JSON dedup to sprint-merge.sh, close B-005 and B-008
  • Add post-merge hooks, fix bugs, update backlog and dashboard
33 commits

Security Modules and Sprint Tooling Mature Across the Portfolio

FSM-generic focused on production hardening: semantic admin guards, session TTL/caps, secure CORS, input sanitization, cwd-independent paths, startup validation, and security tests wired into the server. The ADR memory framework added reusable sprint operations, including robust repo-relative script paths, auto-generated project status, live tmux agent monitoring, multi-project/view-edit support, and isolation tests.

FSM-generic 24traceable-searchable-adr-memory-index 9
▸ how to apply & commit details

How you can apply this

  • Build security as composable server modules: separate auth guards, session limits, CORS allowlists, sanitizers, and startup checks, then test them at API boundaries.
  • Make CLIs and scripts cwd-independent by resolving paths from SCRIPT_DIR, git rev-parse, or explicit external data roots.
  • Operationalize multi-agent sprints with merge-time PROJECT_STATUS generation and live tmux monitoring for real-time agent visibility.
  • Harden framework state for reuse with multi-project support, active-project cleanup, view/edit toggles, and isolation tests.

Commits

FSM-generic
  • docs: expand roadmap with CTO intelligence features, fix inconsistencies
  • docs: add Sprint 4 project status report
  • Merge branch 'agentH-integration'
  • feat: Sprint 4 Phase 2 — wire security modules into server
  • fix: exclude security-marked tests from default pytest runs
  • feat: Sprint 4 security audit, backlog items, and Phase 1 fixes
  • Merge branch 'agentG-frontend-setup'
  • Merge branch 'agentF-security-tests'
  • Merge branch 'agentE-startup-validation'
  • Merge branch 'agentD-path-resolution'
  • Merge branch 'agentC-session-management'
  • Merge branch 'agentB-input-sanitization'
  • Merge branch 'agentA-auth-middleware'
  • Add comprehensive security tests for API endpoint auth enforcement
  • feat: add SessionManager with TTL enforcement and max session cap
  • feat: add semantic auth guards (require_admin_read / require_admin_write)
  • feat: add startup validation module for pre-flight environment checks
  • feat: add configurable CORS module with secure origin allowlist
  • feat: add input sanitization utilities for Cypher, AppleScript, pagination
  • feat: add path resolution utility for cwd-independent data paths
  • Add run_pipeline.py CLI entry point for external data-root
  • docs: add lifecycle docs and update CLAUDE.md with project memory guide
  • docs: add project memory — 3 sprint sessions, 4 ADRs, 3 backlog items
  • Merge branch 'main' of https://github.com/davidbmar/FSM-generic
traceable-searchable-adr-memory-index
  • Fix sprint-launch.sh PROMPT_FILE to use SCRIPT_DIR
  • Fix sprint-parse.sh ROOT to use git rev-parse --show-toplevel
  • Add auto-generated PROJECT_STATUS skeleton to sprint-merge.sh
  • Add .gitignore rules for dev screenshots and playwright artifacts
  • Remove stale grassy-knoll project entry, set active to grassyknoll
  • Fix sprint live monitor to detect tmux sessions with naming variants
  • Add live sprint pipeline monitor with real-time agent visibility
  • Refactor CLAUDE.md as framework docs, remove grassyknoll session doc
  • Fix lifecycle cross-pollination, add view/edit toggle, multi-project support, and isolation tests
62 commits

Sprint Automation Meets Live Graph Alerts and Static Deploys

FSM-generic integrated social collection, KùzuDB graph services, contributor tracking, alert delivery, dashboards, artifact detection, WebSocket live updates, and production hardening across three sprint phases. The day also added an S3/CloudFront static deployment tool and advanced the ADR memory index with auto-update specs, sprint-toolkit fixes, settings persistence, and regression planning.

FSM-generic 53tool-s3-cloudfront-push 1traceable-searchable-adr-memory-index 8
▸ how to apply & commit details

How you can apply this

  • Use optional imports and skipped engine-dependent tests to keep graph-backed features portable when KùzuDB is unavailable.
  • Pair alert engines with delivery adapters, CRUD rule UI, batching, deduping, and live WebSocket hooks so dashboards can move from detection to notification.
  • Reuse the sprint pattern: land services first, then wire API endpoints, dashboard panels, status docs, and post-merge fixes in integration commits.
  • Package deployment and maintenance workflows as reusable tools: S3/CloudFront publishing, log rotation, launchd watchdogs, and project-slug-based sprint scripts.

Commits

FSM-generic
  • fix: narrow WebSocket proxy path to /ws/live to avoid Vite HMR conflict
  • feat: wire Sprint 3 integration — artifacts, watchdog, websocket, alerts
  • docs: update Sprint 3 report to reflect all issues resolved
  • fix: resolve Sprint 3 post-merge issues and add status report
  • Add lucide-react/recharts deps, replace inline SVGs, wire WebSocket live updates
  • Merge branch 'agentF-production-hardening'
  • Merge branch 'agentE-websocket-bridge'
  • Merge branch 'agentD-alert-settings-ui'
  • Merge branch 'agentC-graph-visualization'
  • Merge branch 'agentB-artifact-dashboard'
  • feat: add force-directed graph visualization component (Sprint 3, Phase 1)
  • feat: add ArtifactDetector service with 6 pattern types and 25 tests
  • feat: add Graph Artifacts dashboard components (Sprint 3 Phase 1)
  • feat: add production hardening — watchdog service, launchd plist, log rotation
  • feat: add alert settings UI panel with CRUD rule management
  • feat: add WebSocket bridge service and useLiveUpdates React hook
  • Add Sprint 2 project status document
  • fix: skip kuzu-dependent tests, make Sprint 2 imports safe
  • agentG-integration: implement sprint 2 tasks
  • feat: Sprint 2 Phase 2 integration — wire services, endpoints, dashboard panels
  • fix: remove Merge Verification from brief and template
  • Merge branch 'agentF-dashboard-alerts'
  • Merge branch 'agentE-dashboard-contributors'
  • Merge branch 'agentD-signal-graph-bridge'
  • Merge branch 'agentC-evening-report'
  • Merge branch 'agentB-alert-delivery'
  • feat: add AlertDeliveryService with dashboard, iMessage, and Slack channels
  • feat: add evening and enhanced morning briefing workflows
  • feat: add AlertEngine service with rule evaluation, batching, and dedup
  • feat: add contributor dashboard components (leaderboard, detail drawer, sparkline, movers)
  • feat: add SignalGraphBridge service connecting signal detection to KùzuDB
  • feat: add alert notification dashboard components (Phase 1)
  • Add Sprint 1 project status document
  • fix: make kuzu import optional, skip engine-dependent tests
  • fix: remove Merge Verification from brief, use config default
  • fix: use absolute paths in sprint test command
  • fix: use python3 instead of .venv/bin/python in sprint brief
  • feat: wire Sprint 1 Phase 2 integration — tools, services, API endpoints
  • fix: auto-detect python executable in sprint config
  • Merge branch 'agentF-social-workflow'
  • Merge branch 'agentE-person-tracker'
  • Merge branch 'agentD-kuzu-graph-service'
  • Merge branch 'agentC-social-evidence-schema'
  • Merge branch 'agentB-reddit-adapter'
  • Merge branch 'agentA-twitter-adapter'
  • fix: handle empty arrays under bash set -u in sprint scripts
  • feat: add KùzuDB-backed graph service with full CRUD, queries, and maintenance
  • feat: add Reddit search tool with asyncpraw integration
  • feat: add PersonTrackerService for contributor profiles and truth scores
  • feat: add X/Twitter search tool using twikit library
  • feat: add social media collection and briefing workflows
  • feat: add social evidence Pydantic schema models
  • feat: add sprint automation and project summary
tool-s3-cloudfront-push
  • Initial commit: S3 + CloudFront static site deployment tool
traceable-searchable-adr-memory-index
  • Add auto-update pipeline implementation plan
  • Add auto-update pipeline design spec
  • Fix Rebuild Data button and add E2E plan for grassyknoll dashboard
  • Add B-005: duplicate package.json keys after multi-agent merge
  • Fix sprint toolkit bugs B-001 through B-004, add regression tests and backlog
  • Fix sprint-parse.sh: use PROJECT_SLUG for worktree paths instead of hardcoded rosa-agents
  • Add seed-to-lifecycle generation, markdown viewer, and toolkit improvements
  • Save all settings (project root + GitHub token/repo) to .env on either save button
9 commits

Dashboards, Agent Sprints, and Test Ladders Land

The portfolio tightened project documentation, dashboard behavior, onboarding UX, and testing coverage across multiple repos. It also added reusable sprint and pipeline tooling for parallel agent workflows and project setup.

FSM-generic 4grassy-knoll 1traceable-searchable-adr-memory-index 4
▸ how to apply & commit details

How you can apply this

  • Treat dashboard 404s as empty states instead of connection failures to make missing data recoverable.
  • Use a three-tier test setup with unit, integration, and e2e coverage as a reusable project quality scaffold.
  • Add sprint orchestration scripts, pipeline runners, and auto-setup flows to standardize parallel agent work.
  • Guide users with sequential onboarding tooltips and back them with README screenshots, config docs, sync scripts, and Playwright tests.

Commits

FSM-generic
  • docs: add research dashboard screenshots to README
  • docs: update README with current project state
  • fix: treat 404 as empty state, not connection error in dashboard
  • feat: three-tier test infrastructure (unit, integration, e2e)
grassy-knoll
  • feat: add sprint orchestration scripts for parallel agent workflows
traceable-searchable-adr-memory-index
  • Sequential onboarding tooltips — Settings first, then progressively reveal others
  • Add sprint toolkit, pipeline runner, auto-setup, and onboarding tooltips
  • Add README with screenshots and fix Nav error filter in user tests
  • Add config guide, default docsDir, sync script, and Playwright test suite
6 commits

Mission Switching Meets Traceable Project Dashboards

FSM-generic added a fuller project picker, persistent settings access, API/server configuration, and mission switching that resumes existing missions instead of destroying data. The ADR memory index gained an interactive Sprint Dashboard web UI plus repo hygiene for worktrees and dist outputs.

FSM-generic 3traceable-searchable-adr-memory-index 3
▸ how to apply & commit details

How you can apply this

  • Build mission or workspace switchers to resume existing state instead of recreating sessions and risking data loss.
  • Expose API keys and server settings through a configuration panel so builders can adapt tools without code edits.
  • Use an always-visible settings affordance and complete project picker to make multi-project tools easier to navigate.
  • Add an interactive dashboard over traceable project memory so sprint context can be browsed and reused.

Commits

FSM-generic
  • feat: show all projects in "+" picker, pin settings gear to bottom
  • feat: configuration panel for API keys and server settings
  • feat: mission switcher — resume existing missions instead of destroying data
traceable-searchable-adr-memory-index
  • Add Sprint Dashboard — interactive web UI for traceable project memory
  • Add .gitignore with worktrees and dist directories
  • Add session:
40 commits

Investigation Briefings Mature With Retrieval, Evidence, and Sprint Orchestration

FSM-generic and grassy-knoll gained an investigation workflow with auto-generated briefings, Qwen 3.5 query rewriting, new signal categories, brief history, and evidence-focused drawer navigation. The same day hardened boot, mission lifecycle, archived-project recreation, timeline keys, drawer races, and captured the process in ADR-backed sprint documentation.

FSM-generic 17grassy-knoll 17traceable-searchable-adr-memory-index 6
▸ how to apply & commit details

How you can apply this

  • Layer retrieval features: combine query rewriting, stop-word filtering, AND search, and any-word evidence scoring so searches stay both precise and forgiving.
  • Make briefings pipeline outputs: auto-generate them after each collection pass and keep brief history for review or replay.
  • Harden workflow state: archive old missions, poll for completion, allow archived template recreation, and lazy-load wizard sessions after dashboard boot.
  • Reuse the process pattern: store sprint reviews, ADRs, session docs, backlog updates, and multi-agent orchestration notes as searchable implementation memory.

Commits

FSM-generic
  • fix: context-aware empty state in MorningBriefCard (BL-017)
  • fix: evidence search uses any-word scoring instead of all-word filter (BL-011)
  • fix: use unique keys in RunTimeline to prevent duplicate key errors (BL-016)
  • fix: default to Dashboard on boot, lazy-load Wizard session (BL-012)
  • fix: Evidence Drawer race condition on category/signal clicks (BL-010)
  • feat: auto-generate briefing after each collection pass (BL-001)
  • docs: Sprint 2 backlog + implementation plan from founder-perspective Playwright review
  • docs: backlog update — BL-008/009 FIXED, added FR-005/006
  • fix(BL-008): allow re-creating archived projects from templates
  • fix(BL-008, BL-009): mission lifecycle — archive old missions, poll for completion
  • fix: citation click opens Evidence Drawer filtered to the specific claim
  • feat: Qwen 3.5 query rewriting for investigation retrieval
  • fix: investigation retrieval — filter stop words to prevent diluted results
  • fix: Sprint 1 post-sprint fixup — 3 bugs fixed, tests added
  • docs: Sprint 1 review — HTML report, screenshots, backlog
  • feat: Sprint 1 — Investigation Service + Insights Engine + Intelligence Graph
  • feat: add Adoption + Talent signal categories, AND search, brief history
grassy-knoll
  • fix: context-aware empty state in MorningBriefCard (BL-017)
  • fix: evidence search uses any-word scoring instead of all-word filter (BL-011)
  • fix: use unique keys in RunTimeline to prevent duplicate key errors (BL-016)
  • fix: default to Dashboard on boot, lazy-load Wizard session (BL-012)
  • fix: Evidence Drawer race condition on category/signal clicks (BL-010)
  • feat: auto-generate briefing after each collection pass (BL-001)
  • docs: Sprint 2 backlog + implementation plan from founder-perspective Playwright review
  • docs: backlog update — BL-008/009 FIXED, added FR-005/006
  • fix(BL-008): allow re-creating archived projects from templates
  • fix(BL-008, BL-009): mission lifecycle — archive old missions, poll for completion
  • fix: citation click opens Evidence Drawer filtered to the specific claim
  • feat: Qwen 3.5 query rewriting for investigation retrieval
  • fix: investigation retrieval — filter stop words to prevent diluted results
  • fix: Sprint 1 post-sprint fixup — 3 bugs fixed, tests added
  • docs: Sprint 1 review — HTML report, screenshots, backlog
  • feat: Sprint 1 — Investigation Service + Insights Engine + Intelligence Graph
  • feat: add Adoption + Talent signal categories, AND search, brief history
traceable-searchable-adr-memory-index
  • update: ADR-0008 adds Step 6 (Developer Refactor), backlog synced
  • docs: add post-sprint review process (ADR-0008) + backlog from Sprint 1
  • docs: Sprint 1 complete — ADRs 0005-0007 + session docs for Investigation, Insights, Graph
  • docs: ADR-0004 master spec workstream breakdown
  • docs: add session and ADR for signal categories v1
  • Add multi-agent sprint orchestration system
31 commits

CEO Dashboards Gain Structured Intelligence and Mission Templates

FSM-generic and grassy-knoll added a CEO Dashboard with mission endpoints, a 3-column React cockpit, mock API, citation chips, and Structured Intelligence v0 for entities, events, and claims. The day also shipped reusable mission templates, EntityMap/EventTimeline/KeyMetrics cards, tooltip polish, evidence/search/cache fixes, dashboard tests, and a supporting session ADR.

FSM-generic 15grassy-knoll 15traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Use built-in mission templates to launch repeatable research workflows instead of hand-configuring each mission.
  • Structure extraction output as entities, events, and claims, then render it through focused cards like EntityMap, EventTimeline, and KeyMetrics.
  • Keep evidence navigation trustworthy with first-match-wins category filters, matching drawer counts, stale cache invalidation, and stopword-filtered search.
  • Cover dashboard behavior with targeted tests for radar views, evidence drawers, signal pipelines, modal wiring, and navigation tooltips.

Commits

FSM-generic
  • Merge branch 'mission-templates-v0' — templates + structured intel UI
  • feat: wire Structured Intelligence UI cards into dashboard
  • fix: use first-match-wins category filter for evidence endpoint
  • feat: add tooltips to all dashboard card titles
  • test: comprehensive tests for Radar, EvidenceDrawer, and signal pipeline
  • fix: invalidate stale signal cache + filter stopwords from text search
  • fix: wire up template modal store + add nav tooltips and tests
  • feat: add Mission Templates v0 — instant research missions from built-in templates
  • feat: add Structured Intelligence UI — EntityMap, EventTimeline, KeyMetrics cards
  • Merge branch 'structured-intel-v0' — Structured Intelligence v0
  • feat: add Structured Intelligence v0 (entities/events/claims extraction)
  • fix: category click → evidence drawer count mismatch
  • Merge branch 'ui-panels-polish' — CEO cockpit UI polish
  • feat: CEO cockpit UI polish — 3-column layout, mock API, citation chips
  • feat: add CEO Dashboard with mission endpoints and React UI
grassy-knoll
  • Merge branch 'mission-templates-v0' — templates + structured intel UI
  • feat: wire Structured Intelligence UI cards into dashboard
  • fix: use first-match-wins category filter for evidence endpoint
  • feat: add tooltips to all dashboard card titles
  • test: comprehensive tests for Radar, EvidenceDrawer, and signal pipeline
  • fix: invalidate stale signal cache + filter stopwords from text search
  • fix: wire up template modal store + add nav tooltips and tests
  • feat: add Mission Templates v0 — instant research missions from built-in templates
  • feat: add Structured Intelligence UI — EntityMap, EventTimeline, KeyMetrics cards
  • Merge branch 'structured-intel-v0' — Structured Intelligence v0
  • feat: add Structured Intelligence v0 (entities/events/claims extraction)
  • fix: category click → evidence drawer count mismatch
  • Merge branch 'ui-panels-polish' — CEO cockpit UI polish
  • feat: CEO cockpit UI polish — 3-column layout, mock API, citation chips
  • feat: add CEO Dashboard with mission endpoints and React UI
traceable-searchable-adr-memory-index
  • Add CEO Dashboard session and ADR for FSM-generic
14 commits

Voice-First Research Wizards and Modular Local AI Chat

This day added a modular multi-backend AI chat platform and expanded research wizard projects with voice calling, browser TTS, text chat, UI, docs, and deep research improvements. The voice-only STT/TTS app gained startup model preloading, an admin panel for model and voice controls, VAD/barge-in settings, refreshed docs, and a prompt fix for hearing-aware Claude behavior.

FSM-generic 4browser-llm-local-ai-chat 1grassy-knoll 4voice-only-UI-STT-TTS-base 5
▸ how to apply & commit details

How you can apply this

  • Reuse the research wizard pattern by combining project setup UI, text chat, WebRTC voice calling, and browser TTS in one workflow.
  • Add a startup loading overlay that preloads models so voice apps are ready before user interaction begins.
  • Expose operational controls in an admin panel: model management, voice selection, VAD, and barge-in tuning.
  • Document reusable AI interfaces with screenshots, setup steps, architecture notes, and accurate system prompts.

Commits

FSM-generic
  • chore: add root package-lock.json
  • feat: add remaining research wizard UI, voice client, and project docs
  • feat: add WebRTC voice calling and browser TTS to research wizard
  • feat: add voice call UI, text chat, research project wizard, and deep research improvements
browser-llm-local-ai-chat
  • Modular multi-backend AI chat platform
grassy-knoll
  • chore: add root package-lock.json
  • feat: add remaining research wizard UI, voice client, and project docs
  • feat: add WebRTC voice calling and browser TTS to research wizard
  • feat: add voice call UI, text chat, research project wizard, and deep research improvements
voice-only-UI-STT-TTS-base
  • docs: refresh screenshots with preloaded models
  • fix: update system prompt so Claude knows it can hear the user
  • feat: add loading overlay with model preload at startup
  • docs: comprehensive README with screenshots, setup guide, and architecture
  • feat: add admin panel with model management, VAD/barge-in controls, and voice selection
6 commits

Deep Research FSM and News Collector Builder Land Across Repos

Both FSM-generic and grassy-knoll added an overnight deep research system built around a looping FSM workflow. The same day also introduced a news collector builder with wizard, services, shell, editor, and endpoint/test coverage.

FSM-generic 3grassy-knoll 3
▸ how to apply & commit details

How you can apply this

  • Use the looping FSM workflow as a pattern for long-running overnight research jobs.
  • Reuse the server endpoint tests as coverage scaffolding for deep research APIs.
  • Adapt the news collector builder structure: wizard UI, services layer, shell, editor, and tests.
  • Compare FSM-generic and grassy-knoll for parallel implementations of the same research and collector features.

Commits

FSM-generic
  • test: add server endpoint tests for deep research system
  • feat: add overnight deep research system with looping FSM workflow
  • feat: add news collector builder wizard, services, shell, editor, and tests
grassy-knoll
  • test: add server endpoint tests for deep research system
  • feat: add overnight deep research system with looping FSM workflow
  • feat: add news collector builder wizard, services, shell, editor, and tests
6 commits

Overnight AI News Briefings Land Across Two Projects

FSM-generic and grassy-knoll both added a NewsCollector service to fetch overnight AI news and wired it into a morning briefing workflow. Both projects also fixed Anthropic client setup by passing the API key and retrying null summaries.

FSM-generic 3grassy-knoll 3
▸ how to apply & commit details

How you can apply this

  • Extract overnight news fetching into a NewsCollector service for reuse in scheduled digest jobs.
  • Compose the collector into a morning briefing workflow to produce repeatable daily AI news updates.
  • Pass API keys explicitly to Anthropic clients and retry null summaries to harden LLM summarization.
  • Port shared service and workflow changes across sibling projects with similar briefing needs.

Commits

FSM-generic
  • fix: pass API key to Anthropic client and retry null summaries
  • feat: add overnight news collector + morning briefing workflow
  • feat: add NewsCollector service for overnight AI news fetch
grassy-knoll
  • fix: pass API key to Anthropic client and retry null summaries
  • feat: add overnight news collector + morning briefing workflow
  • feat: add NewsCollector service for overnight AI news fetch
30 commits

Reusable Voice FSM Kernel Lands Across Two Repos

FSM-generic and grassy-knoll both added a Phase A FSM/Voice OS kernel with scaffolding, design docs, packaging, tests, and core async primitives. The commits build up schemas, JSONL workflow loading, tool registration, a generic VoiceSession runner, Twilio/WebRTC channels, auth middleware, and runnable onboarding examples.

FSM-generic 15grassy-knoll 15
▸ how to apply & commit details

How you can apply this

  • Start new FSM projects from the scaffold, pyproject/requirements, tests, and Phase A design/implementation docs.
  • Define workflows with StateDef/WorkflowDef schemas and load them from JSONL instead of hard-coding state graphs.
  • Plug tools into BaseTool/ToolRegistry, then run flows through the VoiceSession generic FSM runner.
  • Adapt the Twilio/WebRTC channel and auth middleware pattern for authenticated voice apps, with setup.sh/run.sh and README demos for onboarding.

Commits

FSM-generic
  • Add color-coded demo output and Getting Started README (#1)
  • Add run.sh, example scripts, and anthropic dependency
  • Add setup.sh script
  • Address code review findings
  • Add voice channels (Twilio, WebRTC) and auth middleware (Task 7)
  • Add VoiceSession generic FSM runner (Task 6)
  • Add JSONL workflow loader (Task 3)
  • Add generic Voice OS config (Task 5)
  • Add BaseTool ABC and ToolRegistry (Task 4)
  • Add StateDef and WorkflowDef schema models (Task 2)
  • Add async pub/sub event bus (Task 1)
  • Add requirements.txt, test infrastructure, and pyproject.toml
  • Add Phase A kernel implementation plan
  • Add Phase A kernel design document
  • Bootstrap FSM-generic repo with directory scaffold and engine submodule
grassy-knoll
  • Add color-coded demo output and Getting Started README (#1)
  • Add run.sh, example scripts, and anthropic dependency
  • Add setup.sh script
  • Address code review findings
  • Add voice channels (Twilio, WebRTC) and auth middleware (Task 7)
  • Add VoiceSession generic FSM runner (Task 6)
  • Add JSONL workflow loader (Task 3)
  • Add generic Voice OS config (Task 5)
  • Add BaseTool ABC and ToolRegistry (Task 4)
  • Add StateDef and WorkflowDef schema models (Task 2)
  • Add async pub/sub event bus (Task 1)
  • Add requirements.txt, test infrastructure, and pyproject.toml
  • Add Phase A kernel implementation plan
  • Add Phase A kernel design document
  • Bootstrap FSM-generic repo with directory scaffold and engine submodule
3 commits

Mac-Local Voice AI Gets PSTN Call Transport

Released `sip-voice-transport`, a PSTN phone call transport for Mac-local voice AI. The README now documents Python version and virtualenv setup, with corrected architecture diagram flow.

sip-voice-transport 3
▸ how to apply & commit details

How you can apply this

  • Use the initial transport as a starting point for connecting PSTN phone calls to local voice AI workflows on macOS.
  • Copy the README setup pattern to make Python version and venv requirements explicit for new users.
  • Review architecture diagrams for arrow direction so call and data flow are reusable without ambiguity.

Commits

sip-voice-transport
  • Add Python version requirement and venv instructions to README
  • Fix architecture diagram arrow directions in README
  • Initial release: PSTN phone call transport for Mac-local voice AI
41 commits

Unified Search APIs and Low-Latency Voice Stack Land

The portfolio added a search-tool-provider that unifies async web search across 6+ backends, then hardened its admin API with atomic writes, HTTP errors, race protection, safe .env merging, lifecycle fixes, docs, screenshots, and live provider health. It also launched a modular voice monorepo with WebRTC signaling, TURN providers, browser transport, STT/TTS/LLM abstractions, starter providers, auth middleware, examples, tests, runtime config, barge-in, and hangup recovery fixes.

search-tool-provider 6voice-calendar-scheduler-FSM 3voice-frontend-modules-auth.transport.engine 32
▸ how to apply & commit details

How you can apply this

  • Reuse the search provider as a backend-agnostic async search layer, with health checks that show all provider states.
  • Apply the admin patterns: atomic config writes, explicit HTTP errors, race protection, safe .env merges, and a Save-driven UI.
  • Use the voice transport pieces as a WebRTC foundation: signaling server, browser client, SDP exchange, TURN providers, audio queueing, resampling, VAD, speak/listen sessions.
  • Adapt the low-latency voice app structure: faster-whisper STT, Piper/Kokoro TTS, Claude/OpenAI/Ollama LLM starters, concurrent sentence TTS, barge-in, and local/LAN/tunnel run modes.

Commits

search-tool-provider
  • Harden admin API: atomic writes, HTTP errors, race protection
  • Add setup screenshots and improve README developer experience
  • Add safe .env merge, Save button, and server lifecycle fixes
  • Show all providers in health panel, not just configured ones
  • Add live health-check panel with green/red status dots
  • Initial implementation: unified async web search across 6+ backends
voice-calendar-scheduler-FSM
  • Change server port to 9909 and RAG port to 9900 to avoid conflicts
  • Detect dead WebRTC connection immediately in voice loop
  • Fix orphaned voice loop and wasted polling after hangup
voice-frontend-modules-auth.transport.engine
  • feat: pass websocket to session callback, add call_event support, update admin UI
  • feat: add 3-mode run script (local/LAN/tunnel) with modular shell lib
  • fix: reconnect WebSocket before starting new call after hangup
  • feat: concurrent sentence-by-sentence TTS synthesis for lower latency
  • chore: remove admin API key auth from admin panel
  • fix: verify kokoro_onnx is installed before registering KokoroTTS
  • feat: add with-admin example, update exports and setup script
  • feat: add admin API router and self-contained admin panel
  • refactor: improve code quality from review feedback
  • feat: add runtime config, Kokoro TTS, and barge-in detection
  • chore: add .worktrees/ to gitignore
  • feat: optimize defaults for low-latency voice and add setup script
  • Merge pull request #1 from davidbmar/feat/implement-packages
  • fix: address code review findings — package boundary, deprecations, cleanup
  • fix: add hatch build config for editable installs in all packages
  • feat: update package exports and add public API
  • test: add integration tests and root pytest config
  • feat: add examples — minimal-voice-app, with-auth, custom-engine
  • feat(edge-auth): add auth providers, middleware, composite
  • feat(transport): add VoiceWebRTCClient browser JS client
  • feat(transport): add CloudflareTunnel wrapper
  • feat(engine-starter): add StarterLLM with Claude/OpenAI/Ollama
  • feat(engine-starter): add StarterTTS with Piper ONNX
  • feat(engine-starter): add StarterSTT with faster-whisper
  • feat(transport): add SignalingServer for WebSocket SDP exchange
  • feat(transport): add WebRTCSession with speak/listen/VAD
  • feat(transport): add WebRTCAudioSource track for aiortc
  • feat(transport): add TURN provider ABC with Twilio and StaticICE implementations
  • feat(transport): add AudioQueue and resample utilities
  • feat(engine-starter): add STT/TTS/LLM provider ABCs and data classes
  • feat: add pyproject.toml and package init files for monorepo
  • Initial commit: design doc and README
22 commits

Calendar Provider Gets Production Admin UI and Voice Integration

The day centered on launching and hardening cal-provider: a multi-backend calendar library with docs, admin setup flows, dashboard APIs, config endpoints, tests, and v0.2.0 production polish. The broader portfolio connected that library into the voice scheduler, fixed remote WebRTC and test issues, and started a Cloudflare Zero Trust setup portal plus CLI.

cal-provider 14cloudflare-zero-trust-setup 1voice-calendar-scheduler-FSM 7
▸ how to apply & commit details

How you can apply this

  • Built cal-provider as a reusable multi-backend calendar layer; other projects can import it instead of maintaining provider-specific calendar code.
  • Added admin setup wizard, dashboard, config viewer, health check, and calendar/event/slot APIs; reuse the pattern for operable service setup instead of config-only libraries.
  • Documented usage, API reference, MCP setup, and progressive developer tasks; copy this docs structure when turning a library into something builders can adopt quickly.
  • Replaced voice scheduler calendar providers with cal-provider shims and wired timezone support; use re-export shims to migrate dependencies without breaking existing imports.

Commits

cal-provider
  • Fix review findings: rename PermissionError, save send_updates, DRY request models
  • Add integration test for full setup wizard flow
  • Rewrite README as progressive task-oriented developer guide
  • Add admin UI pages: setup wizard, dashboard, and config viewer
  • Add dashboard API endpoints: calendars, events, slots, test-event
  • Add /api/test-connection and /api/save-config endpoints
  • Add admin package scaffolding with health endpoint
  • Add admin dependency group and entry point to pyproject.toml
  • cal-provider v0.2.0: production hardening
  • Add implementation plan for admin UI and README rewrite
  • Add design doc for admin UI and README rewrite
  • Add README with usage, API reference, and MCP setup docs
  • Add .gitignore and remove cached build artifacts
  • Initial commit: multi-backend calendar provider library
cloudflare-zero-trust-setup
  • Initial commit: Cloudflare Zero Trust setup portal + CLI
voice-calendar-scheduler-FSM
  • Add voice-frontend platform design doc
  • Fix WebRTC ICE failure on remote/mobile connections
  • Wire cal-provider timezone support into FSM tools
  • Fix 7 stale test expectations
  • Add cal-provider library docs to README
  • Replace calendar providers with re-export shims from cal-provider
  • Fix gateway namespace collision: append engine-repo to sys.path
10 commits

Voice Apartment Scheduler Gains Persistent UI, Calendar, and Ingestion

Built an initial voice-driven apartment scheduling FSM and expanded it into a hardened, documented workflow with Google Calendar setup, RAG notes, a unified startup script, and security updates. The day also added a split-pane UI with IndexedDB checkpoints, CSV/batch listing ingestion, data-driven step openings, live workflow session state, and fixes for barge-in speech preservation and LLM-to-LLM greeting transitions.

voice-calendar-scheduler-FSM 10
▸ how to apply & commit details

How you can apply this

  • Use an FSM to structure voice scheduling flows, with data-driven step openings passed into live sessions so prompts can change without rewriting control flow.
  • Persist split-pane session checkpoints in IndexedDB to let users recover workflow state locally across reloads.
  • Add CSV import plus batch ingestion for domain records, here apartment listings, to feed the scheduler from reusable tabular data.
  • Document integrations and operations alongside the app: Google Calendar setup, RAG setup, data persistence, security hardening, and a unified startup script.

Commits

voice-calendar-scheduler-FSM
  • Add Google Calendar setup guide to README
  • Add security hardening, unified startup script, and updated README
  • Dark scrollbars, session timestamps, and LATEST tag
  • Preserve user speech on barge-in and tune detection defaults
  • Unified split-pane UI with IndexedDB checkpoint persistence
  • Update docs with RAG setup steps and data persistence info
  • Add CSV import pipeline and batch ingestion for apartment listings
  • Make step openings data-driven and pass live workflow to sessions
  • Fix LLM→LLM transition: generate greet_and_gather opening after hello
  • Initial commit: voice-driven apartment scheduling FSM
1 commit

Voice Agent Gains Typed Input

The voice-loop agent now accepts text input alongside speech. Builders can reuse the pattern to offer both typing and speaking as ways to interact with an agent.

2026-nano-claw-voice-loop-tts-stt 1
▸ how to apply & commit details

How you can apply this

  • Added a text-input path to an existing voice agent interface.
  • Kept voice interaction available, letting users type or speak to the agent.
  • Reusable pattern: add a typed fallback to STT/TTS agent loops for quieter or faster interaction.

Commits

2026-nano-claw-voice-loop-tts-stt
  • Add text input alongside voice — type or speak to the agent
6 commits

Voice Apps Got Faster, Simpler, and Better Documented

This day focused on making voice and app-builder workflows easier to run, understand, and reuse. Commits improved Mac-native Whisper STT orchestration, faster default voice responses, paragraph-based TTS rendering, and clearer app-builder architecture docs.

2026-FEB-21-K3-App-Builder-Claude-proto 22026-nano-claw-voice-loop-tts-stt 3iphone-and-desktop-companion-TTS-SST-talking-app 1
▸ how to apply & commit details

How you can apply this

  • Use dash-notation IPs in nip.io URLs when generated app names may end in digits, avoiding hostname parsing issues.
  • Extract Whisper STT into a standalone Mac-native service so speech recognition can be reused outside the main app loop.
  • Auto-start STT from run.sh so one command can launch the full local voice stack.
  • Render TTS per paragraph and pair it with a unified build script to improve playback control and developer setup.

Commits

2026-FEB-21-K3-App-Builder-Claude-proto
  • fix: use dash-notation IPs in nip.io URLs to handle app names ending in digits
  • feat: add /about architecture docs page
2026-nano-claw-voice-loop-tts-stt
  • Switch default model to Haiku for faster voice responses
  • Auto-start STT service from run.sh — single command launches everything
  • Extract Whisper STT into standalone Mac-native service
iphone-and-desktop-companion-TTS-SST-talking-app
  • feat: chunk-per-paragraph rendering, unified build script, playback & UI improvements
27 commits

Voice Agents, K3s Deployments, and Durable Transcripts Land

This day shipped an MVP k3s App Builder Platform, hardened its deployment path, and added EC2 public-IP ingress handling. It also advanced two voice-focused apps with STT/TTS loops, Anthropic tool-use fixes, observability, durable transcript storage, exports, search, editing, summaries, and tests.

2026-FEB-21-K3-App-Builder-Claude-proto 42026-nano-claw-voice-loop-tts-stt 8iphone-and-desktop-companion-TTS-SST-talking-app 15
▸ how to apply & commit details

How you can apply this

  • Built a k3s app builder MVP with background registry/file writes so long-running deploys can survive client disconnects.
  • Used EC2 IMDSv2 public IP detection for ingress hostnames; reuse when generating cloud URLs from instance metadata.
  • Added an STT/TTS voice loop with tool confirmation, debug panel, verbose logs, and Anthropic multi-block/input_schema fixes.
  • Implemented transcript storage APIs, Web Speech plus Whisper finalization, checkpoint saves, exports, search, editing, summaries, and Playwright coverage.

Commits

2026-FEB-21-K3-App-Builder-Claude-proto
  • fix: move registry/file writes into background thread (survives client disconnect)
  • fix: use public IP for ingress hostnames (EC2 IMDSv2 + public IP detection)
  • fix: resolve all deployment issues found during live run-through
  • feat: initial scaffold for k3s App Builder Platform (MVP)
2026-nano-claw-voice-loop-tts-stt
  • Rewrite README for voice loop project with screenshots and onboarding
  • Add voice interface setup instructions to README
  • Add loop observability: debug panel + verbose server logs
  • Fix crash on persisted tool_calls with Anthropic-raw format
  • Fix Anthropic provider tool use: handle multi-block responses and message formatting
  • Fix Anthropic provider tool format: parameters → input_schema
  • Add voice loop: STT/TTS voice interface with tool confirmation
  • Add .worktrees/ to .gitignore
iphone-and-desktop-companion-TTS-SST-talking-app
  • feat: compositional immutable-chunk transcript model (Phase 1)
  • feat: admin dashboard, transcript management, tests, and screenshots
  • feat: two-pass transcription — Web Speech API + Whisper finalization
  • feat: auto-checkpoint transcripts every 5min + emergency save on disconnect
  • docs: update README with Phase 2 transcription features
  • docs: mark Phase 2 transcription features complete (F-006 through F-013)
  • test: add Playwright tests for Phase 2 features (export, search, summary, edit)
  • feat(F-009): use Whisper timestamps in client paragraph display
  • feat(F-012): click-to-edit paragraphs with server persistence
  • feat(F-013): client-side keyword search with match navigation
  • feat(F-011): AI summary generation with Haiku after transcribe_stop
  • feat(F-007): add TXT, Markdown, and JSON export buttons
  • feat(F-006): wire transcript storage into transcribe_stop, add API endpoints
  • feat(F-006): create JSON transcript storage module
  • feat(F-009): extract Whisper segment timestamps and pass through to client
21 commits

Transcription UI Lands, Sound Generator Project Starts

A companion TTS/SST app added an Otter.ai transcription track from backlog and design docs through Phase 1 implementation: transcript view, transcribe button, focused document mode, streaming partials, paragraph breaks, filler stripping, highlights, and a selection toolbar. The day also added markdown href sanitization, companion/connection behavior fixes, 36 Playwright UI tests, screenshots/docs, and a new open-source sound generator with nine audio models and a getting-started walkthrough.

iphone-and-desktop-companion-TTS-SST-talking-app 19opensource_sound_generator_llms 2
▸ how to apply & commit details

How you can apply this

  • Reuse the rollout pattern: define a feature backlog and phased implementation/design docs before wiring UI, fixes, and tests.
  • Build live transcript UX with word-by-word partial streaming, append-only segment transitions, paragraph breaks, filler stripping, typography, and highlights.
  • Make transcription controls state-aware: hide them in companion mode, disable until connected, auto-show the transcript view, and preserve transcripts on reopen.
  • Harden rich-text rendering by sanitizing markdown link hrefs, and cover the UI surface with Playwright tests.

Commits

iphone-and-desktop-companion-TTS-SST-talking-app
  • docs: add Phase 2 transcription implementation plan (10 tasks)
  • docs: add Phase 2 transcription design (F-006 through F-013)
  • test: add 36 Playwright tests for transcription UI
  • fix: hide transcribe button in companion mode, auto-show transcript view
  • fix: disable transcribe button until connected, preserve transcript on reopen
  • docs: mark Phase 1 transcription features complete (F-008, F-010, F-021-F-024)
  • fix(security): sanitize href in markdown link renderer
  • feat(F-024): text highlighting with selection toolbar
  • feat(F-023): append-only segment transitions with paragraph breaks
  • feat(F-021): word-by-word partial streaming with diff and fade-in
  • feat(F-008/F-010): wire transcribe button and focused document mode
  • feat(F-022): add CSS for grid transition, transcript typography, and highlighting
  • feat(F-008/F-010): add transcript view HTML scaffold and transcribe button
  • Add Phase 1 transcription implementation plan (8 tasks)
  • Add Phase 1 transcription UI/UX design document
  • Add Otter.ai transcription feature backlog (F-006 through F-024)
  • Add agent_status transient indicators, companion history replay, and cleanup
  • Add transcription readability screenshots and README section
  • Add transcription readability: paragraph breaks, filler stripping, highlights
opensource_sound_generator_llms
  • Expand Getting Started with step-by-step usage walkthrough
  • Initial commit: Open Source Sound Generator with 9 audio models
1 commit

RAG Embeddings Move to Nomic v1.5

The voice-optimal-RAG project upgraded its embedding model to nomic-embed-text-v1.5. The day’s work focused on improving the retrieval foundation rather than adding new user-facing features.

voice-optimal-RAG 1
▸ how to apply & commit details

How you can apply this

  • Built an embedding-model upgrade for a RAG project; reuse the idea by evaluating nomic-embed-text-v1.5 in your own retrieval pipeline.
  • Treat embedding swaps as retrieval-layer changes: compare search quality before and after the model change.
  • Because embeddings are model-specific, plan to refresh generated vectors when adopting the new model.

Commits

voice-optimal-RAG
  • Upgrade embedding model to nomic-embed-text-v1.5
30 commits

RAG Service and Real-Time Voice Streaming Land

A full voice-optimal RAG service shipped with FastAPI routes, document ingestion, tiktoken chunking, embeddings, LanceDB storage, Docker config, docs, nightly GitHub indexing, and a drag-and-drop search UI. Voice-print added WebSocket/AudioWorklet live mic streaming, Whisper-based session handling, sentence boundary detection, per-sentence replay, and integration tests, while the iPhone FSM gained RAG search, input filtering, fast paths, timezone support, and updated defaults.

iphone-streaming-plus-Finite-State-Machine 3voice-optimal-RAG 14voice-print 13
▸ how to apply & commit details

How you can apply this

  • Reuse the FastAPI + LanceDB RAG pattern: parse PDF/DOCX/MD/HTML/TXT, chunk with tiktoken, batch embed, then expose insert/search/delete/list APIs.
  • Add a drag-and-drop document UI plus Docker config to make RAG ingestion and search testing easier for other developers.
  • Model real-time voice features around AudioWorklet PCM capture, WebSocket streaming, a ring buffer, and sentence-boundary handling.
  • Harden assistant workflows with input filtering, fast-path routing, timezone-aware behavior, and explicit environment defaults.

Commits

iphone-streaming-plus-Finite-State-Machine
  • Add RAG tool for knowledge base search
  • Update .env.example with Serper key and current Ollama default
  • Add input filtering, fast path, timezone support, and default to Claude Haiku
voice-optimal-RAG
  • Add session doc for RAG tool integration
  • Add README with usage, API docs, and project structure
  • Add nightly GitHub repo indexing scripts
  • Fix FileNotFoundError when filenames contain slashes
  • Complete initial RAG service build — all components working
  • Add Docker configuration
  • Add drag-and-drop web UI for document management and search testing
  • Add FastAPI app with all API routes
  • Add document ingestion pipeline: parse, chunk, embed, store
  • Add LanceDB vector store with insert, search, delete, list
  • Add embedding model wrapper with batch support
  • Add file parsers for PDF, DOCX, MD, HTML, TXT
  • Add recursive text chunker with tiktoken token counting
  • Add config and Pydantic models
voice-print
  • docs: add README with screenshots and project documentation
  • feat: add per-sentence audio replay with client-side buffer
  • feat: add navigation link to live streaming page
  • feat: add live streaming frontend with AudioWorklet and WebSocket
  • test: add end-to-end WebSocket streaming integration test
  • feat: add WebSocket /ws/stream endpoint for real-time streaming
  • feat: add streaming session handler with custom Whisper streaming
  • feat: add streaming sentence boundary detector
  • feat: add audio ring buffer for streaming sessions
  • feat: add AudioWorklet PCM processor for mic streaming
  • feat: add websockets dependency for streaming
  • Add implementation plan for real-time streaming speaker detection
  • Add design doc for real-time streaming speaker detection
3 commits

FSM Workflow Engine Gets Mobile UI and Visual Docs

This day turned the iPhone streaming FSM project into a fuller workflow system with an engine, mobile UI, and visualization. It also improved onboarding with README state-machine diagrams and sped up paid-provider search by skipping rate-limit sleep.

iphone-streaming-plus-Finite-State-Machine 3
▸ how to apply & commit details

How you can apply this

  • Built an FSM workflow engine; reuse explicit state-machine structure for complex workflow flows.
  • Added mobile UI plus workflow visualization; adapt this pattern to make workflow state inspectable.
  • Documented the system with README diagrams and overview; use diagram-first docs for FSM-heavy projects.
  • Skipped search rate-limit sleeps when a paid provider is configured; gate throttling by provider capability.

Commits

iphone-streaming-plus-Finite-State-Machine
  • Skip search rate-limit sleep when paid provider is configured
  • Update README with FSM state machine diagrams and project overview
  • Add FSM workflow engine, mobile UI, and workflow visualization
11 commits

Voice Assistant Orchestrators Gain Tools, Search, and Stability

The iPhone voice assistant prototypes gained a tool-calling orchestrator, web search integration, tool-calling LLM support, UI screenshots, retries, TTS cleanup, and chat bubble rendering. The work also consolidated duplicate agent loops into a single orchestrator, fixed WebSocket disconnects and startup failures, and added backlog/test scaffolding for follow-up work.

iphone-streaming-plus-Finite-State-Machine 8iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser 2traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Consolidated dual agent loops into engine/orchestrator.py so future voice features can reuse one execution path.
  • Added tool-calling LLM and web search support to both iPhone streaming/WebRTC variants, with UI screenshots as integration proof.
  • Stabilized streaming replies by moving agent responses to a background task, adding hedging retries, and cleaning markdown before TTS.
  • Added a post-build test suite, mock-tool replacement backlog, and project-memory backlog template to keep follow-up work traceable.

Commits

iphone-streaming-plus-Finite-State-Machine
  • Fix WebSocket disconnect: move agent reply to background task
  • Fix server startup crash: pydantic_settings fallback for system Python
  • Unify tool path and add backlog for mock tool replacements
  • Unify dual agent loops into single engine/orchestrator.py
  • Add post-build test suite and orchestrator unification plan
  • Add hedging retry, TTS markdown cleanup, and chat bubble rendering
  • Add web search integration, tool-calling LLM support, and UI screenshots
  • Add voice assistant tool-calling orchestrator (Phase 1)
iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser
  • Add web search integration, tool-calling LLM support, and UI screenshots
  • Add voice assistant tool-calling orchestrator (Phase 1)
traceable-searchable-adr-memory-index
  • Add backlog system to project memory template
10 commits

Voice Agent Streaming Gets Resilient One-Command Launch

Two iPhone streaming projects gained the same Milestone 6 voice-agent loop, wiring microphone input through STT, LLM, TTS, and speaker playback. The updates also added richer model selection, an Art Deco UI, resilient connections, a unified run.sh launcher, /health checks, robust Python detection, and WebSocket heartbeats for cloudflared tunnel timeouts.

iphone-streaming-plus-Finite-State-Machine 5iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser 5
▸ how to apply & commit details

How you can apply this

  • Reuse the mic-to-STT-to-LLM-to-TTS-to-speaker pipeline as a reference loop for browser-to-host voice agents.
  • Package local demos behind a single run.sh that detects Python reliably and gates startup with health checks.
  • Use a /health endpoint plus launcher checks to make startup failures easier to diagnose.
  • Keep cloudflared WebSocket sessions alive with heartbeat traffic to reduce tunnel timeout failures.

Commits

iphone-streaming-plus-Finite-State-Machine
  • Add rich model selection, Art Deco UI, and connection resilience
  • Update README with unified run.sh launcher and /health endpoint
  • Add unified run.sh launcher with health checks and robust Python detection
  • Fix cloudflared tunnel timeout with WebSocket heartbeat
  • Add voice agent loop: mic → STT → LLM → TTS → speaker (Milestone 6)
iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser
  • Add rich model selection, Art Deco UI, and connection resilience
  • Update README with unified run.sh launcher and /health endpoint
  • Add unified run.sh launcher with health checks and robust Python detection
  • Fix cloudflared tunnel timeout with WebSocket heartbeat
  • Add voice agent loop: mic → STT → LLM → TTS → speaker (Milestone 6)
13 commits

Voice Apps Gain STT/TTS, TURN, and Visual Workflow Builders

Two iPhone/WebRTC streaming projects gained mic-to-Whisper transcription display, a Piper TTS pipeline with test scripts and project memory, plus Twilio TURN relay support and Cloudflare Tunnel docs. The speaker workflow tools added graph-based state editing, linked graph-to-pseudocode navigation, expanded intent handling to 52 intents at 95.8% accuracy with priority tiebreakers, and introduced a 3-column resizable workflow map UI.

iphone-streaming-plus-Finite-State-Machine 3iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser 3speaker-generation-version-2-intents 4speaker-workflow-system 3
▸ how to apply & commit details

How you can apply this

  • Reuse the iPhone mic -> Whisper STT -> display path as a milestone pattern for browser-based speech capture apps.
  • Pair Piper TTS integration with test scripts and project memory so speech output can be exercised and documented consistently.
  • Use Twilio TURN relay support plus Cloudflare Tunnel docs as deployability scaffolding for WebRTC prototypes.
  • Apply the workflow editor patterns: graph Add State editing, node-to-pseudocode highlighting, SVG connector maps, and closable resizable panels.

Commits

iphone-streaming-plus-Finite-State-Machine
  • Add iPhone mic → Whisper STT → display text (Milestone 5)
  • Add Piper TTS pipeline, test scripts, and project memory system
  • Add Twilio TURN relay support and Cloudflare Tunnel docs
iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser
  • Add iPhone mic → Whisper STT → display text (Milestone 5)
  • Add Piper TTS pipeline, test scripts, and project memory system
  • Add Twilio TURN relay support and Cloudflare Tunnel docs
speaker-generation-version-2-intents
  • Update README with workflow system visual editor section
  • Add linked code view — click graph nodes to highlight pseudocode
  • Add visual graph-based Add State editor with column layout
  • Add 16 new intents + priority tiebreaker system (52 total, 95.8% accuracy)
speaker-workflow-system
  • Graph-aware workflow map with link nodes, tree connectors, and SVG arcs
  • 3-column layout with closable, resizable panels
  • Initial commit
8 commits

WebRTC Audio Streaming Meets Embedding-Based Intent Classification

Two iPhone/Mac streaming repos added aiortc-based WebRTC audio from a Mac host to a browser, with screenshots added to their READMEs. The speaker intent project moved from keyword matching to an embedder exemplar UI and reports 100% accuracy across 34 intents, while voice-loop docs got clearer basic usage examples.

2026-nano-claw-voice-loop-tts-stt 1iphone-streaming-plus-Finite-State-Machine 2iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser 2speaker-generation-version-2-intents 3
▸ how to apply & commit details

How you can apply this

  • Use aiortc to stream Mac-host audio into a browser over WebRTC.
  • Add README screenshots so streaming demos are easier to reuse.
  • Replace keyword intent modals with embedding exemplar views for classifier inspection.
  • Track classifier changes with concrete coverage metrics like 34 intents and 100% accuracy.

Commits

2026-nano-claw-voice-loop-tts-stt
  • Revise basic usage examples in documentation (#10)
iphone-streaming-plus-Finite-State-Machine
  • Add screenshot to README
  • Add WebRTC audio streaming: Mac host to browser via aiortc
iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser
  • Add screenshot to README
  • Add WebRTC audio streaming: Mac host to browser via aiortc
speaker-generation-version-2-intents
  • Improve intent classifier to 100% accuracy with 34 intents
  • Replace keyword-based intent modal with embedder exemplar view
  • Add embedder-based intent classifier with info modal UI
19 commits

Browser-Native RAG and Voice Agent Infrastructure Land

This day added reusable browser-side retrieval projects for transcript RAG, including SQLite WASM/sqlite-vec and Transformers.js/WebGPU variants, while advancing Iris Kade voice/RAG agents with FSM turn management, streaming TTS, adaptive bias, LLM integration, and model metadata. It also packaged the nano-claw voice loop with core infrastructure, channel adapters, npm setup, examples, and reorganized docs, plus added changelog metadata fields like UTC times, titles, timezone selection, and human-readable commits.

2026-nano-claw-voice-loop-tts-stt 5browser-RAG-retrieval-realtime-night-index-SQLLiteWASM-and-sqllite-vec-portal-vector-db-with-filters 1browser-RAG-retrieval-realtime-night-index-transformersjs-webgpu-web-app-vite-typescript 1browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo 1character-iris-kade-noir-cyberpunk-ai-browser-native-rag-llm-tts-stt 2iphone-streaming-plus-Finite-State-Machine 2iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser 2speaker-generation-version-1 2speaker-generation-version-2-intents 2traceable-searchable-adr-memory-index 1
▸ how to apply & commit details

How you can apply this

  • Use the browser RAG starters as patterns for client-side transcript retrieval with SQLite WASM/sqlite-vec or Transformers.js/WebGPU.
  • Reuse the Iris Kade codebases for FSM-driven voice turns, streaming TTS, LLM integration, model metadata panels, and documented/tested scaffolds.
  • Adapt the nano-claw package structure for TTS/STT voice loops: core infrastructure, channel adapters, npm config, examples, and a dedicated docs directory.
  • Copy the changelog metadata pattern: UTC times, timezone selection, Title fields, and human-readable commit summaries.

Commits

2026-nano-claw-voice-loop-tts-stt
  • Add npm version badge to README (#8)
  • Add comprehensive examples and use case documentation (#7)
  • Add emojis to README headers and configure npm package (#5)
  • Implement core infrastructure and channel adapters for nanobot feature parity (#4)
  • Reorganize documentation into dedicated directory (#3)
browser-RAG-retrieval-realtime-night-index-SQLLiteWASM-and-sqllite-vec-portal-vector-db-with-filters
  • Initial commit: browser-based vector search for transcript RAG
browser-RAG-retrieval-realtime-night-index-transformersjs-webgpu-web-app-vite-typescript
  • Initial commit: browser-native RAG retrieval layer
browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo
  • Add UTC times, Title field, timezone selector, and human-readable commits
character-iris-kade-noir-cyberpunk-ai-browser-native-rag-llm-tts-stt
  • Add FSM turn management, streaming TTS, adaptive bias, LLM integration, and model metadata panel
  • Initial commit: browser-native RAG retrieval layer
iphone-streaming-plus-Finite-State-Machine
  • Add complete Iris Kade codebase with README, tests, and docs
  • Initial commit: backlog with F-001 (phone remote) and F-002 (fast-think/slow-think)
iphone-webrtc-TURN-speaker-streaming-machost-iphonebrowser
  • Add complete Iris Kade codebase with README, tests, and docs
  • Initial commit: backlog with F-001 (phone remote) and F-002 (fast-think/slow-think)
speaker-generation-version-1
  • Add complete Iris Kade codebase with README, tests, and docs
  • Initial commit: backlog with F-001 (phone remote) and F-002 (fast-think/slow-think)
speaker-generation-version-2-intents
  • Add complete Iris Kade codebase with README, tests, and docs
  • Initial commit: backlog with F-001 (phone remote) and F-002 (fast-think/slow-think)
traceable-searchable-adr-memory-index
  • Add UTC times, human-readable commits, and Title field
4 commits

EC2 SFTP Browser and TypeScript Nanobot Port Land

The EC2 file browser gained SSH/SFTP remote browsing, user-facing help, and README documentation with screenshots. The nanobot voice-loop project was ported from Python to TypeScript/Node.js using the Vercel AI SDK and released under an MIT license.

2026-feb-File-Broswer-for-EC2-copy-and-deploy-files 22026-nano-claw-voice-loop-tts-stt 2
▸ how to apply & commit details

How you can apply this

  • Reuse the SSH/SFTP browsing pattern to add remote file navigation to EC2 deployment tools.
  • Pair README screenshots with an in-app help dialog so users can learn workflows without leaving the UI.
  • Use the TypeScript/Node.js Vercel AI SDK port as a reference for migrating Python AI voice-loop prototypes.
  • Adopt the MIT license setup when turning an experimental project into something others can reuse.

Commits

2026-feb-File-Broswer-for-EC2-copy-and-deploy-files
  • Add SSH/SFTP remote file browsing and update README with screenshots
  • Add README, CLAUDE.md, and help dialog to UI
2026-nano-claw-voice-loop-tts-stt
  • Translate nanobot from Python to TypeScript + Node.js with Vercel AI SDK (#2)
  • Add MIT License to the project
11 commits

Debug Reports Meet Auto-Indexed ADR Memory

A reusable debug-report pipeline took shape across browser voice and mobile debugging, adding monologue toggles, search filler speech, boot console capture, a report button, and injectable ConsoleCapture. The day also turned ADR memory into a tested, hook-driven auto-indexing system while tightening deploy skill formatting, Lambda builds, infra, and versioned nginx configs.

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo 2browser_mobile_debug_panel 3deploy-portal 2traceable-searchable-adr-memory-index 4
▸ how to apply & commit details

How you can apply this

  • Built debug report capture paths with boot console capture and optional external ConsoleCapture; reuse this by injecting capture sources through config instead of hardwiring them.
  • Added ADR/project memory indexing plus a bash git-hook auto-indexer; reuse it as a pre-commit workflow that keeps decision records searchable.
  • Hardened deploy packaging by moving skill metadata to SKILL.md frontmatter and adding versioned nginx configs; reuse the pattern for reproducible deployment kits.
  • Backfilled confidence with a comprehensive ADR index test suite, a pre-commit hook test, and fixes for 7 voice-agent tests.

Commits

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo
  • Add internal monologue toggle, search filler speech, boot console capture
  • Integrate debug report button, fix 7 failing tests
browser_mobile_debug_panel
  • [S-2026-02-09-1000-debug-report-framework] Add ADR memory index, changelog button, and project memory system
  • Add optional external ConsoleCapture to DebugReportConfig
  • [S-2026-02-09-1000-debug-report-framework] Add CLAUDE.md, fix Lambda build, deploy infra
deploy-portal
  • Fix deployment kit skill format: YAML -> SKILL.md with frontmatter
  • Fix deploy-skill.yaml YAML structure and add versioned nginx configs
traceable-searchable-adr-memory-index
  • [S-2026-02-09-1015-auto-index] Add comprehensive test suite and update README
  • [S-2026-02-09-1015-auto-index] Remove test session file
  • [S-2026-02-09-1015-auto-index] Add bash-based auto-index system with git hooks
  • [S-2026-02-09-1015-test-hook] Test pre-commit hook auto-index
14 commits

Mobile Voice Polish Meets Searchable Changelog Q&A

The voice agent demo gained a more reliable mobile boot greeting path, with iOS speech synthesis triggered synchronously from taps, duplicate-response prevention, race-condition fixes, and a testable greeting module with 11 tests. Its changelog experience expanded into Q&A and search with BroadcastChannel wiring, markdown answers, friendlier errors, quota-aware cascading search proxy work, documentation, and an initial mobile debug panel project.

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo 13browser_mobile_debug_panel 1
▸ how to apply & commit details

How you can apply this

  • Extract browser-specific boot greeting logic into a module with targeted tests so mobile speech behavior can be hardened without UI-heavy test setup.
  • For iOS voice UX, start speechSynthesis synchronously inside the tap handler and guard turn commits to avoid duplicate assistant responses.
  • Build changelog reuse around small client pieces: client-side search, BroadcastChannel Q&A messaging, markdown answer rendering, and truncation/tag cleanup.
  • Add diagnostics early with quota tracking in search proxy code and a separate mobile debug report framework.

Commits

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo
  • [S-2026-02-09-0040-mobile-boot-greeting] Fix mobile chat ordering: prevent duplicate responses after turn commits
  • [S-2026-02-09-0040-mobile-boot-greeting] Extract boot greeting to testable module, add 11 tests
  • [S-2026-02-09-0040-mobile-boot-greeting] Fix iOS: call speechSynthesis synchronously in tap handler
  • [S-2026-02-09-0040-mobile-boot-greeting] Fix TS cast in audio-listener tests
  • [S-2026-02-09-0040-mobile-boot-greeting] Add mobile voice greeting, fix load/unload race condition
  • [S-2026-02-08-2000-changelog-qa-rag] Document Changelog Q&A RAG feature
  • [S-2026-02-08-1700-real-search-proxy] Add cascading search proxy with quota tracking
  • [S-2026-02-08-1430-migrate-project-memory] Add markdown rendering to Q&A answers
  • [S-2026-02-08-1430-migrate-project-memory] Fix Q&A truncation and thinking tags
  • [S-2026-02-08-1600-graceful-error-handling] Add friendly error messages, clearError tests, update session doc
  • [S-2026-02-08-1430-migrate-project-memory] Add BroadcastChannel Q&A to Changelog
  • [S-2026-02-08-1430-migrate-project-memory] Add client-side search to Changelog (Option A)
  • [S-2026-02-08-1430-migrate-project-memory] Add experimental Changelog button to UI
browser_mobile_debug_panel
  • [S-2026-02-09-1000-debug-report-framework] Initial implementation
17 commits

Voice Agent Gains Searchable Memory and Mobile Speech Fixes

The browser voice agent added a traceable project-memory system with a semantic search CLI, searchable keyword index, backlog, docs, examples, and opt-in web search augmentation for LLM responses. It also improved mobile voice UX with Android SpeechRecognition fixes, getUserMedia avoidance, silence-based turn-end gating, listener visibility, collapsible panels, audio mute, diagnostics, a timestamped debug log, tests, and build numbering.

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo 14traceable-searchable-adr-memory-index 3
▸ how to apply & commit details

How you can apply this

  • Package project memory as traceable docs plus a semantic-search CLI so other repos can query decisions, keywords, backlog items, and examples.
  • Gate web-search augmentation behind an opt-in switch so builders can add external context to LLM responses without making it mandatory.
  • On Android, avoid getUserMedia when SpeechRecognition owns the mic, disable Start during model loading, and add rich diagnostics for race-condition debugging.
  • Require speech-recognition silence before ending a turn, then pair UI controls like listener panels and mute with tests and build metadata.

Commits

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo
  • [S-2026-02-08-1430-migrate-project-memory] Add semantic search CLI tool
  • [S-2026-02-08-1430-migrate-project-memory] Add searchable keyword index and backlog system
  • [S-2026-02-08-1430-migrate-project-memory] Add semantic search documentation and examples
  • [S-2026-02-08-1500-fix-silence-counter] Require SR silence before firing silence-based turn-end
  • [S-2026-02-08-1500-fix-silence-counter] Add session doc for silence counter fix
  • [S-2026-02-08-1400-listener-ui-mute] Add listener visibility, collapsible panels, audio mute, test suite, build number
  • [S-2026-02-08-1430-migrate-project-memory] Update session doc with commit hash
  • [S-2026-02-08-1430-migrate-project-memory] Add traceable project memory system
  • Add opt-in web search augmentation for LLM responses
  • Skip getUserMedia on Android to fix mic contention with SpeechRecognition
  • Add timestamped event log to mobile debug panel
  • Fix recognition race condition on Android + add rich diagnostics
  • Disable Start button while model is loading on mobile
  • Fix Android speech recognition and add mobile debug panel
traceable-searchable-adr-memory-index
  • [S-2026-02-08-1430-migrate-project-memory] Document template vs project repo usage in README
  • [S-2026-02-08-1430-migrate-project-memory] Add semantic search capabilities and real examples
  • [S-2026-02-08-1400-bootstrap-memory] Bootstrap traceable project memory system
1 commit

Browser-Native Voice Agent With Local LLM

This initial commit adds a browser-native voice agent demo combining text-to-speech, speech-to-text, and a local LLM. It provides a reusable starting point for voice-driven agent experiments that run in the browser.

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo 1
▸ how to apply & commit details

How you can apply this

  • Combine browser TTS and STT to build a conversational voice loop.
  • Pair speech input and spoken output with a local LLM response step.
  • Reuse the demo as a starter for browser-based voice agent prototypes.

Commits

browser-voice-agent-with-TTS-STT-and-OpenSourceLLMs-demo
  • Initial commit: browser-native voice agent with TTS, STT, and local LLM
2 commits

WebGPU Art and Local Browser Whisper

Two initial releases landed: a Starry Night-inspired flow field accelerated with WebGPU, and a Browser Whisper showcase for local speech-to-text. Together they add reusable examples for GPU-driven generative visuals and client-side speech transcription.

art-starry-night-flowfield 1browser-whisper-models-local-showcase 1
▸ how to apply & commit details

How you can apply this

  • Build WebGPU-backed flow-field art as a reusable pattern for high-performance browser visuals.
  • Use the Browser Whisper showcase as a starting point for local speech-to-text experiments.
  • Frame portfolio demos around one clear primitive: GPU rendering or browser-local inference.

Commits

art-starry-night-flowfield
  • Initial commit: Starry Night flow field with WebGPU acceleration
browser-whisper-models-local-showcase
  • Initial release: Browser Whisper - Local Speech-to-Text
2 commits

Browser LLM Chat Ships With WebGPU

Browser LLM - Local AI Chat got its initial release as a browser-based LLM chat app using WebGPU. The project was also renamed to make its local AI chat purpose clearer.

browser-llm-local-ai-chat 2
▸ how to apply & commit details

How you can apply this

  • Use the release as a starting point for WebGPU-powered LLM chat in the browser.
  • Reuse the local-first app framing when building AI chat tools that run on user devices.
  • Apply the rename pattern to make project names state the platform, capability, and user value clearly.

Commits

browser-llm-local-ai-chat
  • Rename to Browser LLM - Local AI Chat
  • Initial release: Browser-based LLM chat with WebGPU
4 commits

EC2 File Browser Gets Drag-and-Drop Workflows

The EC2 file browser added drag-and-drop uploads into specific folders and drag-and-drop moving for existing files. File selection also improved with deselection support, and the app was published.

2026-feb-File-Broswer-for-EC2-copy-and-deploy-files 4
▸ how to apply & commit details

How you can apply this

  • Build folder-targeted drag-and-drop uploads so users can place files directly where they belong.
  • Reuse the same drag-and-drop interaction model for moving existing files between folders.
  • Improve file selection UX by supporting deselection instead of forcing users to keep items selected.

Commits

2026-feb-File-Broswer-for-EC2-copy-and-deploy-files
  • Add ability to drag and drop files into specific folders
  • Enable moving files through drag and drop functionality
  • Improve file selection by allowing deselection
  • Published your App
28 commits

Dual-Panel EC2 File Management Meets Safer Deployments

The day's work turned an EC2 file browser into a dual-panel file manager with drag-and-drop transfers, move/copy actions, wildcard search, read-only viewing, syntax highlighting, markdown render/raw modes, resizable panels, and Vim/nano-friendly terminal support. In deploy-portal, deployment workflows gained checkpoint instructions, VPC whitelist guidance, HTTP/HTTPS preflight checks, and a post-deployment verification skill.

2026-feb-File-Broswer-for-EC2-copy-and-deploy-files 21deploy-portal 7
▸ how to apply & commit details

How you can apply this

  • Built dual-pane file operations: copy, move, and drag-and-drop transfers can be reused for browser-style remote file managers.
  • Added viewer modes: read-only double-click previews, code syntax highlighting, and markdown render/raw toggles offer a reusable inspection layer before editing.
  • Hardened terminal/editor integration: load the right environment and support Vim/nano-style editors when embedding terminals.
  • Expanded deploy automation: checkpoint prompts, VPC whitelist steps, preflight HTTP/HTTPS checks, and deploy-verify form a reusable safety checklist.

Commits

2026-feb-File-Broswer-for-EC2-copy-and-deploy-files
  • Add move and copy functionality for files with visual indicators
  • Remove the edit in terminal functionality from the file browser
  • Improve file searching to support wildcard patterns
  • Update editor to use nano and improve terminal functionality
  • Improve terminal to properly support text editors like Vim
  • Make the terminal load the proper environment with vim
  • Saved progress at the end of the loop
  • Enable opening files in Vim from the file viewer
  • Add rendered markdown view and raw text toggle for markdown files
  • Add syntax highlighting to the file viewer for better code readability
  • Add read-only file viewer for double-click actions
  • Allow resizing panels to almost full screen width
  • Fix how files are displayed when navigating to a directory
  • Fix layout to properly display side-by-side file browser panels
  • Saved progress at the end of the loop
  • Add drag-and-drop file transfer between dual file browser panels
  • Add dual-panel interface for file management and configuration
  • Saved progress at the end of the loop
  • Enhance application with file management and terminal features
  • Extracted stack files
  • Initial commit
deploy-portal
  • Fix CLAUDE_PROMPT.md template structure
  • Update deployment-kit CLAUDE_PROMPT.md to include checkpoint instructions
  • Add portal-wide checkpoint system for safe deployments
  • Improve deployment instructions for Claude agents
  • Update deploy page for VPC whitelist configuration
  • Add HTTP/HTTPS preflight check to /deploy skill
  • Add /deploy-verify skill for post-deployment verification
1 commit

Deploy Portal Stops Assuming HTTPS

deploy-portal now uses the detected protocol instead of a hardcoded HTTPS value. This makes protocol-dependent behavior reflect the actual runtime context.

deploy-portal 1
▸ how to apply & commit details

How you can apply this

  • Replaced a fixed HTTPS assumption with detected protocol handling.
  • Reuse this by deriving protocol from request or environment data before building protocol-aware paths or URLs.
  • Audit deployment code for hardcoded schemes that should follow runtime detection.

Commits

deploy-portal
  • Fix protocol detection: Use detected protocol instead of hardcoded HTTPS
18 commits

Browser Voice Frameworks and Safer Subpath Deploys

A pair of browser-based real-time ASR and TTS repos were initialized and documented, with examples for conversational voice agents, setup guides, UI imagery, and a macOS server listen fix. Deploy Portal added framework-agnostic subpath deployment support with scanner/router examples plus SSL/HTTPS docs and automated self-signed certificate support.

Browser-Text-to-Speech-TTS-Realtime 7browser-Speech-to-Text-realtime-ASR 6deploy-portal 5
▸ how to apply & commit details

How you can apply this

  • Use the ASR examples and integration docs as a starter path for a browser conversational voice agent.
  • Reuse the TTS getting-started docs and macOS listen fix when packaging browser speech services for local development.
  • Apply Deploy Portal's subpath scanner, router examples, and framework-agnostic config to validate apps hosted below a URL prefix.
  • Copy the SSL/HTTPS docs and self-signed certificate automation pattern for local or internal deploy workflows.

Commits

Browser-Text-to-Speech-TTS-Realtime
  • Add comprehensive getting started guide
  • Improve README with detailed setup instructions and project description
  • Fix server listen configuration for macOS compatibility
  • Setup repository with comprehensive documentation and tooling
  • Refactor README for clarity and organization
  • Expand README with project details and usage
  • first commit
browser-Speech-to-Text-realtime-ASR
  • added image for UI
  • readme updated
  • first commit
  • Add examples for building a conversational voice agent
  • Update documentation to guide developers on integrating the framework
  • Add user-friendly documentation and improve navigation for easier onboarding
deploy-portal
  • Add router configuration examples for subpath deployments
  • Add subpath-scanner tool and router configuration enhancements
  • Add framework-agnostic subpath deployment configuration
  • Add comprehensive SSL/HTTPS documentation
  • Add automated SSL support with self-signed certificates
26 commits

Browser Speech Stack Gets Faster, Safer, and Easier to Deploy

The day tightened a browser speech portfolio end to end: realtime ASR gained local binding, deployment docs/configs, clearer dashboard/stats/sessions/docs pages, iframe/browser-warning fixes, and more reliable live transcript handling. A browser realtime TTS app added streaming playback, model warmup, multi-core generation, caching/download improvements, speed controls, voice casting, and developer docs, while deploy-portal added multi-framework support and deployment fixes.

Browser-Text-to-Speech-TTS-Realtime 13browser-Speech-to-Text-realtime-ASR 9deploy-portal 4
▸ how to apply & commit details

How you can apply this

  • Split browser ASR operations into dashboard, stats, sessions, and architecture docs so builders can expose runtime state alongside API/system context.
  • Make live transcript UIs robust with simpler scrolling, no content-hiding animations, explicit post/error handling, and restart logic when transcription stops.
  • Reduce browser TTS latency with model warmup, improved model downloads/caching/display, multi-core generation, and realtime streaming playback.
  • Package deployments for reuse with quick-start docs, config files, localhost local binding, multi-framework support, and fixes for bootstrap, nginx, and OAuth2 route setup.

Commits

Browser-Text-to-Speech-TTS-Realtime
  • Add ability to automatically warm up text-to-speech models for instant playback
  • Enable multi-core processing for faster speech generation
  • Saved progress at the end of the loop
  • Add developer documentation and quick start guide to the application
  • Improve voice model download handling for faster playback
  • Saved progress at the end of the loop
  • Add real-time streaming text-to-speech functionality to the browser
  • Improve voice model caching and display for faster speech generation
  • Add controls to adjust the speech playback speed
  • Add voice casting to ensure text-to-speech functionality
  • Add real-time text to speech functionality to the browser
  • Extracted stack files
  • Initial commit
browser-Speech-to-Text-realtime-ASR
  • Update server to bind to localhost when running locally
  • Add comprehensive deployment instructions and configuration files
  • Organize application into separate dashboard, stats, and sessions pages
  • Organize API and system architecture into a dedicated documentation page
  • Remove animations that may hide transcript content
  • Address browser console warnings and improve iframe compatibility
  • Improve transcript posting and error handling in live transcription
  • Update transcript display to use a simpler scrolling mechanism
  • Fix issue where live transcription stops and does not restart
deploy-portal
  • Add multi-framework support and fix 6 critical deployment issues
  • Fix bootstrap.sh bash errors in conflict check and nginx test
  • Fix OAuth2 dependency issue with auto-detection and dual route configs
  • Add deployment script for 3.87.27.213
10 commits

Passwordless Portals Get Reusable AWS Deployment Automation

The day centered on hardening and automating an AWS-hosted portal with passwordless auth, IP whitelisting, and clearer deployment target choices. The deploy-portal work added GitHub/AWS setup, EC2 instance ID and IP target selection, nginx conflict handling, multi-instance automation, verification, and reuse-focused documentation.

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal 2deploy-portal 8
▸ how to apply & commit details

How you can apply this

  • Use passwordless auth plus IP whitelisting as a reusable access pattern for internal portals.
  • Support flexible AWS deployments by letting operators target EC2 instances by instance ID or IP.
  • Bake deployment fixes into automation, such as nginx conflict handling and static permissions preservation.
  • Pair deploy scripts with verification steps and lessons learned so other builders can adapt the workflow.

Commits

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal
  • Merge branch 'main' of https://github.com/davidbmar/2026-jan-vibecodeportal-aws-cognito-alb-auth-portal
  • feat: add passwordless auth, IP whitelisting, and deployment improvements
deploy-portal
  • Add deployment instructions and comprehensive lessons learned
  • Fix deployment and add comprehensive verification system
  • Fix: Auto-handle nginx conflicts and improve deployment
  • UI: Highlight No Auth for VPC and update deployment target descriptions
  • Resolve merge conflict in bootstrap.sh - keep static permissions fix
  • Add EC2 instance ID support and IP deployment target selection
  • feat: Add GitHub deployment and AWS config setup
  • Add deployment automation for multiple portal instances
1 commit

JWT Auth Guide for Cognito ALB Portals

Added a JWT authentication user guide for the AWS Cognito and ALB-backed auth portal. The update focuses on documentation, giving builders a reusable reference for understanding and applying the portal’s JWT authentication flow.

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal 1
▸ how to apply & commit details

How you can apply this

  • Added a JWT authentication user guide for the Cognito + ALB portal.
  • Reuse the guide as a reference when documenting JWT-based auth flows.
  • Apply the structure to explain how identity-provider and load-balancer auth fit together.

Commits

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal
  • docs: add JWT authentication user guide
5 commits

Cognito Portal Adds Self-Service EC2 Launches and Whitelisting

The portal gained EC2 instance launching with auto-configuration, including HTTP/HTTPS access on new instances. It also added user IP capture and dynamic group-based IP whitelisting, with README updates for password management commands.

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal 5
▸ how to apply & commit details

How you can apply this

  • Built an EC2 launch flow that auto-configures instances, a reusable pattern for self-service cloud portals.
  • Added HTTP and HTTPS ports during instance setup, showing how to bake web access into launch automation.
  • Captured and displayed each user’s IP address so it can feed directly into whitelisting workflows.
  • Implemented group-based IP whitelisting for EC2, useful for tying access controls to identity-provider groups.

Commits

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal
  • Update user password commands in README
  • feat: implement dynamic group-based IP whitelisting for EC2 instances
  • feat: capture and display user IP address for whitelisting
  • feat: add HTTP/HTTPS ports to launched instances
  • feat: add EC2 instance launch feature with auto-configuration
20 commits

Cognito Email MFA Portal Gets Admin Controls and Tests

The AWS Cognito/ALB auth portal gained custom email MFA/passwordless flows, admin user management, last-login tracking, deletion, timezone selection, IAM/deployment scripts, and deployment-limit documentation. The browser ASR project added a core functionality test harness plus API and storage tests, with progress saved for later iteration.

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal 17browser-Speech-to-Text-realtime-ASR 3
▸ how to apply & commit details

How you can apply this

  • Package auth changes as reusable infrastructure: include Cognito email MFA files, IAM policy, deployment script, permissions notes, and architecture-limit docs.
  • For admin portals, pair directory-level user management with delete-user actions, last-login tracking, timezone-aware display, and the IAM permissions those features require.
  • Harden custom auth UX with tests that cover MFA setup QR codes, login/logout behavior, and logged-out templates.
  • For browser apps, add a lightweight harness plus API/storage tests to verify core ASR functionality before continuing feature work.

Commits

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal
  • docs: add deployment and cleanup summary report
  • docs: clean up and document user_data.sh
  • fix: suppress temporary password emails in user creation
  • feat: add timezone selector and fix last login tracking with IAM permissions
  • feat: add last login tracking and delete user functionality
  • feat: add user management to directory page for admins
  • feat: implement passwordless email-only authentication
  • feat: implement custom login with email MFA authentication
  • fix: remove incompatible Lambda triggers - login still broken
  • feat: deploy email MFA infrastructure and document architectural limitations
  • feat: add IAM policy and deployment script for email MFA
  • docs: add permissions issue documentation for email MFA deployment
  • feat: add email MFA infrastructure files
  • docs: add complete email MFA package summary
  • feat: add comprehensive test suite for email MFA
  • Fix MFA setup to show actual QR code instead of placeholder
  • Add comprehensive logout/login tests and fix logged-out template
browser-Speech-to-Text-realtime-ASR
  • Saved progress at the end of the loop
  • Add and improve tests for API and storage functionality
  • Add a test harness to verify core application functionality
8 commits

Auth Portal Meets Real-Time Browser Transcription

Built an initial Employee Access Portal using AWS Cognito, an ALB, and FastAPI, with a design document for a custom password reset flow and local Claude files ignored. Expanded a browser speech-to-text project with real-time transcription, session management, WebSocket transcript message updates, and layout fixes for overlapping live transcript content.

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal 3browser-Speech-to-Text-realtime-ASR 5
▸ how to apply & commit details

How you can apply this

  • Start internal access portals with Cognito, ALB auth, and FastAPI as a reusable baseline.
  • Document custom password reset flows before implementation so auth UX and backend behavior stay aligned.
  • Model browser ASR apps around sessions plus real-time WebSocket transcript messages.
  • Treat live transcript layout as part of reliability by fixing overlapping display content.

Commits

2026-jan-vibecodeportal-aws-cognito-alb-auth-portal
  • Add custom password reset flow design document
  • Add .claude/ directory to .gitignore
  • Initial commit: Employee Access Portal with AWS Cognito, ALB, and FastAPI
browser-Speech-to-Text-realtime-ASR
  • Fix overlapping content in the live transcription display
  • Update WebSocket message type for transcripts
  • Add real-time speech transcription and session management features
  • Extracted stack files
  • Initial commit
21 commits

Real-Time Parakeet ASR Service Lands End-to-End

Built an end-to-end NVIDIA NeMo Parakeet CTC 0.6B ASR service with FastAPI auth, WebSocket streaming transcription, audio/VAD processing, session recording, and a demo web client. The work also packaged it for RunPod Docker deployment and added model validation plus onboarding docs from START_HERE through build summaries.

2026-jan-voice-speech-nemo-framework-model-Parakeet-CTC-0.6B-nvidia-asr-service 21
▸ how to apply & commit details

How you can apply this

  • Use the FastAPI REST API plus authenticated WebSocket endpoints as a template for streaming AI services.
  • Reuse the audio pipeline, ASR engine stabilization, session management, and recording pieces for real-time speech products.
  • Copy the model download/validation script with structured logging and configuration to make GPU model services easier to operate.
  • Adapt the RunPod Docker packaging and WebSocket demo page for quick deployable ASR demos.

Commits

2026-jan-voice-speech-nemo-framework-model-Parakeet-CTC-0.6B-nvidia-asr-service
  • feat: complete voice ASR service with real-time transcription and deployment docs
  • fix: add missing app.js file for demo UI
  • fix: add missing vad.py and engine.py files
  • fix: add missing __init__.py files and fix model validation
  • docs: add simple START_HERE guide
  • docs: add comprehensive overnight build summary
  • docs: add prominent welcome guide for morning review
  • docs: add quick start guide and morning summary
  • feat: add Docker deployment for RunPod
  • feat: add demo webpage with WebSocket client
  • feat: add WebSocket endpoints and processing pipeline
  • docs: add progress report for overnight build
  • feat: add FastAPI REST API with authentication
  • feat: add session management and recording
  • feat: add ASR engine and stabilization
  • feat: add audio processing pipeline
  • feat: add configuration and structured logging
  • feat: add model download and validation script
  • feat: add project foundation and configuration
  • docs: add comprehensive implementation plan and task breakdown
  • Add Phase 1 ASR service design document
6 commits

Deploy Portal Adds Validated Production Automation

deploy-portal gained production-ready generic deployment automation, including infrastructure setup for automated deployments. The work also tightened validation, fixed nginx configuration issues, and hid helper scripts so they do not appear in the apps catalog.

deploy-portal 6
▸ how to apply & commit details

How you can apply this

  • Build reusable deployment automation around a generic pipeline plus validation checks.
  • Add infrastructure setup as a first-class deployment step so environments can be prepared automatically.
  • Validate nginx configuration during deployment to catch broken server setup before release.
  • Keep internal helper scripts out of user-facing catalogs by explicitly hiding support directories.

Commits

deploy-portal
  • Add production-ready generic deployment automation
  • Add comprehensive deployment automation and validation
  • Implement critical deployment automation fixes
  • Fix nginx configuration with validation
  • Fix: Hide helper scripts directory to prevent appearing in apps catalog
  • Add infrastructure setup system for automated deployments
5 commits

Deployment Tooling Hardened, EC2 Systems Manager Access Enabled

The deploy-portal project focused on deployment resilience, adding automation, documentation, and tools for common infrastructure issues. A related Cognito/Nginx gateway update granted the EC2 IAM role SSM permissions so instances can be accessed through Systems Manager.

deploy-portal 4easy-cognito-nginx-gateway-auth- 1
▸ how to apply & commit details

How you can apply this

  • Codified fixes for common deployment issues; reuse by turning recurring ops tasks into infrastructure automation.
  • Expanded deployment infrastructure docs and tools; reuse as an operational runbook kept alongside deployment code.
  • Added SSM permissions to an EC2 IAM role; reuse the pattern when instances need AWS Systems Manager access.

Commits

deploy-portal
  • Merge remote changes
  • Add infrastructure automation for common deployment issues
  • Add deployment infrastructure documentation and tools
  • Add comprehensive deployment infrastructure documentation
easy-cognito-nginx-gateway-auth-
  • Add SSM permissions to EC2 IAM role for Systems Manager access
3 commits

Smarter Seccomp Detection and Hardened Gateway Permissions

Deploy Portal added automatic database capability detection for seccomp injection, reducing manual security-profile tuning. The updates also fixed nginx static-file permissions, OAuth2 proxy permissions, and nginx buffer settings for more reliable bootstraps and gateways.

deploy-portal 2easy-cognito-nginx-gateway-auth- 1
▸ how to apply & commit details

How you can apply this

  • Add capability detection before seccomp injection so database-related security rules adapt automatically.
  • Bake nginx static-file permission fixes into bootstrap scripts to avoid deploy-time serving failures.
  • Audit OAuth2 proxy permissions together with nginx buffer settings when packaging Cognito-backed gateways.

Commits

deploy-portal
  • Add automatic database capability detection to seccomp injection
  • Fix nginx static file permissions in bootstrap
easy-cognito-nginx-gateway-auth-
  • Fix OAuth2 proxy permissions and nginx buffer settings
5 commits

Bootstrap Automation Expands Across Portfolio Tools

The day centered on adding bootstrap automation across deploy-portal, EC2 gateway auth infrastructure, ssh-helper, and website-cloner. deploy-portal also received a static permissions fix alongside its setup automation.

deploy-portal 2easy-cognito-nginx-gateway-auth- 1ssh-helper 1website-cloner 1
▸ how to apply & commit details

How you can apply this

  • Built bootstrap automation for deploy-portal; reuse this pattern to make deployment setup repeatable from a fresh checkout.
  • Added EC2 infrastructure bootstrap automation for the Cognito/Nginx gateway auth project; apply the idea to codify cloud setup steps instead of documenting them manually.
  • Extended the same bootstrap approach to ssh-helper and website-cloner, showing how small utilities can share a repeatable onboarding/setup workflow.
  • Fixed deploy-portal static permissions, a reminder to include file permission checks in deployment automation.

Commits

deploy-portal
  • Fix static permissions
  • Add bootstrap automation for deploy-portal
easy-cognito-nginx-gateway-auth-
  • Add bootstrap automation for EC2 infrastructure
ssh-helper
  • Add bootstrap automation for ssh-helper
website-cloner
  • Add bootstrap automation for website-cloner
3 commits

Deploy Portal Hardens Autonomous ZIP Skill Deploys

Deploy Portal gained documentation and directives for autonomous execution, clarifying the user experience while discouraging manual takeover. The deployment flow also moved to pure ZIP-based skill version management with related deployment improvements.

deploy-portal 3
▸ how to apply & commit details

How you can apply this

  • Document autonomous execution UX so users understand hands-off deployment behavior.
  • Codify directives that keep automation in control and reduce manual takeover.
  • Manage skill versions as ZIP artifacts to make packaging and deployment reusable.

Commits

deploy-portal
  • Add user experience documentation for autonomous execution
  • Add autonomous execution directives to prevent manual takeover
  • Implement pure ZIP-based skill version management and deployment improvements
9 commits

Deployment Portal Gets Safer Updates and Automated Remote Deploys

The deploy portal gained a clear update-versus-new deployment flow, a fixed /ssh route, and an automated remote deployment script. The gateway project added install-script hardening, static-file permission safeguards, a default deploy-portal landing route note, and a broader documentation index with deployment and troubleshooting guidance.

deploy-portal 2easy-cognito-nginx-gateway-auth- 7
▸ how to apply & commit details

How you can apply this

  • Use separate update/new deployment paths to make redeploy behavior explicit in a self-service portal.
  • Automate remote deployments with a script that can be reused as an operational entry point.
  • Harden install scripts by generating a robust 32-byte cookie_secret and guarding static-file permissions.
  • Document routing defaults, install fixes, deployment steps, and troubleshooting in a discoverable platform index.

Commits

deploy-portal
  • Add update vs new deployment flow and fix /ssh route
  • Add automated remote deployment script
easy-cognito-nginx-gateway-auth-
  • Document static files permissions fix in INSTALL_SCRIPT_FIXES.md
  • Add safeguards for static files permissions issue
  • Document deploy-portal as default landing page routing change
  • Add documentation for install script fixes
  • Fix install script: ensure robust 32-byte cookie_secret generation
  • Add documentation index for entire platform
  • Add deployment and troubleshooting documentation
14 commits

Reusable Nginx Deployment Patterns Across Portfolio

Deploy Portal was initialized and expanded with a modular Nginx configuration system plus clearer deployment and architecture documentation. The same Nginx pattern was applied to ssh-helper and website-cloner, while routing, static asset, WebSocket, and OAuth callback fixes hardened deployed apps.

deploy-portal 8easy-cognito-nginx-gateway-auth- 1ssh-helper 4website-cloner 1
▸ how to apply & commit details

How you can apply this

  • Built modular Nginx configs in Deploy Portal; reuse the pattern to split deployment concerns into portable config units.
  • Fixed OAuth 403 callbacks by separating HTTP and HTTPS server blocks; apply this when auth redirects behave differently across schemes.
  • Stabilized /ssh hosting with path rewrites, static asset fixes, and current-path WebSocket connections; reuse for apps served from subpaths.
  • Simplified deployment docs to unzip and follow instructions, with architecture notes and the actual IP address documented for handoff.

Commits

deploy-portal
  • Add modular nginx configuration
  • Update architecture docs with actual IP address (52.43.35.1)
  • feat: implement modular nginx configuration system
  • docs: add deployment cleanup analysis and nginx configuration docs
  • Simplify to bare essentials: just tell Claude to unzip and follow instructions
  • Simplify deployment instructions
  • Improve deployment instructions clarity
  • Initial commit: Deploy Portal
easy-cognito-nginx-gateway-auth-
  • Fix 403 OAuth callback error by splitting HTTP/HTTPS server blocks
ssh-helper
  • Fix static asset loading for /ssh endpoint
  • Fix WebSocket connection to use current path
  • Fix /ssh endpoint routing - add path rewrite
  • Add modular nginx configuration
website-cloner
  • Add modular nginx configuration
10 commits

Gateway Auth, Terraform Deploys, and Web SSH Tooling

The day focused on making gateway-based authentication and deployment easier to reuse, with new multi-application docs, Terraform modules, and automated SSL setup. It also expanded SSH Helper into a Node.js web terminal for dynamic IP whitelisting and aligned Website Cloner with gateway-provided auth headers.

easy-cognito-nginx-gateway-auth- 4ssh-helper 4website-cloner 2
▸ how to apply & commit details

How you can apply this

  • Use the Cognito nginx gateway updates as a template for multi-app auth documentation, Terraform-backed deployment, and Let's Encrypt SSL automation.
  • Reuse SSH Helper's pattern for a Node.js web terminal that manages dynamic IP allowlisting, supported by deployment docs.
  • Apply the Website Cloner refactor approach when moving app-level authentication behind a gateway that injects trusted headers.
  • Include clone verification checks, as shown by the CNN.com no-404 validation, before treating generated sites as complete.

Commits

easy-cognito-nginx-gateway-auth-
  • Add multi-application integration guide
  • Update README.md
  • Add Terraform infrastructure modules for automated deployment
  • Enhance SSL setup with Let's Encrypt automation and improved self-signed certs
ssh-helper
  • Add comprehensive deployment documentation
  • Convert ssh-helper to Node.js web-based terminal application
  • Initial commit: SSH Helper - Dynamic IP whitelist manager
  • Initial commit
website-cloner
  • Verify CNN.com clone - no 404 errors detected
  • Refactor: Remove built-in authentication, use gateway headers
33 commits

Cognito Auth Gateway Lands for Website Clones

Website Cloner gained a deployable static-site hosting workflow with subdirectory and S3 fixes, a web UI, portfolio deletion tools, custom 404s, and verified S3 clone output. The day also delivered and documented an AWS Cognito + oauth2-proxy + Nginx authentication gateway, including PKCE client setup, systemd service configuration, and fixes for 403 and static-asset 404 issues.

easy-cognito-nginx-gateway-auth- 1website-cloner 32
▸ how to apply & commit details

How you can apply this

  • Reuse the Cognito gateway pattern: public Cognito client with PKCE, oauth2-proxy, Nginx, and a systemd service.
  • Apply the static hosting fixes to multi-site clone deployments: subdirectory-aware API endpoints, S3 config detection, preserved .html links, and default subdomain redirect handling.
  • Copy the Web UI approach for clone operations: real-time progress monitoring, a portfolio page, bulk selection, and delete controls.
  • Borrow the hardening checks: custom 404 generation, bot-detection avoidance, memory optimization, deeper template crawl depth, and S3 verification for zero 404s.

Commits

easy-cognito-nginx-gateway-auth-
  • Initial commit: Easy Cognito Nginx Gateway Auth
website-cloner
  • Fix S3 config detection and Results box display
  • Increase Capsule template maxDepth to 4 for better coverage
  • Fix S3 enabled checkbox not being set by templates
  • Fix API endpoints for subdirectory deployment
  • Fix subdomain redirect handling - enable includeSubdomains by default
  • Add complete authentication gateway implementation summary
  • Add comprehensive documentation for authentication gateway configuration files
  • Fix Website Cloner config transformation and complete authentication gateway
  • Fix authentication gateway static asset 404 errors - AUTHENTICATION WORKING!
  • Improve bot detection avoidance and fix 404 page generator
  • Document stop hook status - authentication gateway ready for browser testing
  • Authentication gateway ready for browser testing
  • Verify CNN clone on S3 - zero 404 errors, all tests passing
  • Complete authentication gateway implementation - ready for browser testing
  • Add manual browser testing documentation
  • Fix Cognito hosted UI 403 error - switch to public client with PKCE
  • Fix oauth2-proxy configuration and create systemd service
  • Add AWS Cognito authentication gateway with oauth2-proxy and Nginx
  • Final verification: Authentication gateway fully operational
  • Complete authentication gateway testing documentation
  • Implement Cognito authentication gateway with oauth2-proxy and Nginx
  • Add comprehensive root cause analysis for port 80 server failure
  • Add Hello World website debugging and monitoring documentation
  • Add bulk selection and delete to Portfolio page
  • Add user management, enhanced UI, and comprehensive documentation
  • Add delete button to Cloned Sites Portfolio page
  • Update Web UI theme to match terminal/phosphor monitor design
  • Add custom 404 pages, automatic link redirection, and memory optimization
  • Add Web UI for website cloner with real-time progress monitoring
  • Add Phase 2 placeholders for dynamic content pages
  • Fix link navigation by keeping .html extensions
  • Add subdirectory deployment support for multiple site hosting
10 commits

Website Cloner Gains Static Hosting Pipeline

The website-cloner project completed its v0.2.0 phased roadmap, extending from URL enumeration through deployment. The day’s work added asset downloading, link rewriting, dynamic content detection, S3 static website hosting, validation fixes, testing guidance, and GitHub automation docs.

website-cloner 10
▸ how to apply & commit details

How you can apply this

  • Built a phased cloning pipeline developers can mirror: enumerate URLs, extract assets, rewrite links, then deploy static output.
  • Added dynamic content detection so cloners can flag pages that may not work as purely static exports.
  • Implemented S3 static website hosting as a reusable deployment target for generated site snapshots.
  • Improved reuse with CLI testing instructions, configuration validation tests, push helpers, and GitHub setup guides.

Commits

website-cloner
  • Add clear testing instructions to CLI output
  • Update documentation for v0.2.0 release - All phases complete
  • Add Phase 6: S3 Deployment with Static Website Hosting
  • Add Phase 5: Dynamic Content Detection
  • Add Phase 4: Link Rewriting for Static Hosting
  • Add Phase 3: Asset Extraction (Downloader)
  • fix: resolve configuration validation bugs and add comprehensive testing
  • docs: add additional push helper scripts and guides
  • docs: add GitHub setup guides and automation scripts
  • feat: initial commit - Phase 2 (URL enumeration) complete
10 commits

OAuth, CORS, and Audiobook Uploads Harden Transcription App

The transcription app’s auth and deployment templates were tightened with implicit OAuth login, corrected Cognito/CORS placeholders, and proper S3 CORS headers for metadata uploads. Upload handling expanded to m4b audiobooks while adding null checks and fixing transcript-editor-v2 template/script paths.

transcription-realtime-whisper-cognito-s3-lambda 10
▸ how to apply & commit details

How you can apply this

  • Use Cognito implicit flow plus explicit domain placeholders in generated app templates to keep OAuth setup reproducible.
  • Allow `x-amz-meta-*` in S3 CORS headers when browser uploads attach custom metadata.
  • Whitelist both MIME types and upload handling paths for new audio formats like `.m4b`.
  • Keep generated templates reliable by matching placeholder/env var names and using relative preprocessor script paths.

Commits

transcription-realtime-whisper-cognito-s3-lambda
  • fix: Use implicit flow for OAuth login
  • fix: Add Cognito domain placeholder to app.js template
  • fix: Add x-amz-meta-* to S3 CORS allowed headers
  • fix: Use correct placeholder names in app.js.template
  • feat: Add m4b audiobook MIME types to upload whitelist
  • feat: Add m4b audiobook format support for upload
  • fix: Add null checks in showUploadAudio function
  • fix: Use correct env var name for CORS in serverless.yml
  • fix: Use relative paths for preprocessor scripts in transcript-editor-v2
  • fix: Use placeholders in transcript-editor-v2 template