Daily

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

3 commits

Riff Adds Loop Guards and SQLite Quality Tracking

Turn handling now catches no-progress state oscillation such as A<->B, not just stalled states. The eval stack adds a SQLite quality database for tracking scores over time by judge, model, and feature.

riff 3
▸ how to apply & commit details

How you can apply this

  • Add no-progress guards that detect alternating state loops, not only repeated identical states.
  • Filter bookkeeping slots out of progress checks so metadata churn does not keep a loop alive.
  • Use a small SQLite quality DB to compare eval scores over time across judge, model, and feature dimensions.

Commits

riff
  • fix(turn): no-progress backstop catches state oscillation (A<->B), not just stalls
  • fix(turn): no-progress backstop excludes bookkeeping slots — breaks the #1 loop
  • feat(eval): SQLite quality DB — scores over time by judge/model/feature (Codex plan)
42 commits

Daily Digests, Typed Slots, and Resilient Eval Pipelines

github-portfolio-search gained an apply-focused /daily headline digest powered by a free in-process MLX engine, plus unified search over the projects corpus, per-project docs, and regenerated navigation. riff shipped a large reliability pass: semantic slot types, typed date intent/readback fixes, scheduling collision fixes, held-out persona evals, multi-judge provenance, live report cards, and trend tracking.

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

How you can apply this

  • Build reusable digests by pairing codex-generated summaries with local MLX backfill and a project corpus searchable across generated pages and docs.
  • Use a semantic slot-type registry with type-first extraction, build-time lint gates, and ratchets to migrate flows incrementally without reintroducing untyped behavioral slots.
  • Model dates as typed DateExpr intent, block ambiguity before confirmation, and render dates as speakable text to avoid leaking ISO/schema details.
  • Make evals operational with held-out personas, structured judge provenance, multi-judge fallback, live per-flow report cards, and quality-trend tracking.

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
riff
  • feat(eval): structured judge provenance on FlowScore + report card (Codex plan #3)
  • feat(eval): quality-trend tracker v0 + tracking-DB plan (for Codex review)
  • fix(eval): over-promising tag ignores negations (was inflated 16/20 -> true 4/20)
  • test(slot-types): cross-flow accuracy guard (was built earlier, uncommitted)
  • feat(eval): incremental per-flow report card (live refresh + crash survival)
  • feat(eval): readable, searchable use-case summaries of report cards
  • feat(eval): add codex CLI as a third panel judge (model-family diversity)
  • feat(eval): resilient multi-judge — Alibaba then local qwen+gemma, with provenance
  • fix(scheduling): possible/blocked service days are mutually exclusive (collision fix)
  • fix(readback): speak ISO dates naturally, never raw — H2 for the date leak
  • fix(scheduling): bind calendar-date service days — stop the collect loop (Bug B)
  • fix(date): stop the agent leaking date_expr schema + raw ISO into speech (H1)
  • fix(date): commit orphaned FSM date-confirmation gate (Stage 3 follow-up)
  • eval(splits): rebalance to ~1/4 holdout with 12 diverse personas
  • feat(date): speakable DateExpr adapter — typed date intent + ambiguity-blocking (Stages 1-3)
  • feat(slot-types): migrate apartment_viewing.caller_email->email (baseline 21->20)
  • feat(slot-types): migrate tutorial flows + bellas/math stragglers (baseline 34->21)
  • feat(slot-types): implement email type (7th type)
  • feat(slot-types): migrate address slots (Codex-APPROVED) — baseline 40->34
  • feat(slot-types): implement address type + fix type-first name allow_bare
  • feat(slot-types): migrate scheduling flows' name/phone/time (baseline 51->40)
  • fix(slot-types): quantity type per Codex review + migrate 4 flows
  • feat(slot-types): implement the quantity type (re-homes _extract_quantity)
  • feat(slot-types): migrate batch 3 — coffee/pizza customer_name, dental_clinic full
  • fix(slot-types): contact extractor preflight validates by semantic type (Codex r3)
  • fix(slot-types): Codex re-review round 2 — production path + locked_choice + ratchet
  • fix(slot-types): address Codex implementation review (5 required changes)
  • feat(slot-types): build-time gate — untyped-behavioral-slot lint rule + ratchet
  • feat(slot-types): migrate batch 2 (amazon/it_helpdesk/bellas/math name+phone)
  • feat(slot-types): migrate taco_truck + restaurant; add verified slot-types tutorial
  • feat(slot-types): migrate dog_grooming to typed slots (slice 2 — hypothesis holds)
  • feat(slot-types): type-first extraction dispatch + filtered name fallback (slice 1)
  • feat(slot-types): registry + loader build-time gate (slice 1 foundation)
  • docs(slot-types): Codex-APPROVED design spec for the semantic slot-type registry
  • fix(readback): rephrase the 'Got it!' filler into an echo of captured values
  • fix(readback): kill 'pickup or delivery delivery' render + the phone area-code dance
  • feat(eval): live mid-run judge fallback — Alibaba 403 -> ALERT + switch to Codex
  • feat(flow-pipeline): held-out persona split — gate on generalization, not overfit
17 commits

Local LLMs, Safer Judges, and Reusable Collect Flows

generate_title_headline_hooks added verbose faithful summary/spine reporting plus a local MLX Qwen3.5-9B provider with reliable no-think JSON output. riff hardened extraction and evaluation, gated Collect Pattern flows across caller paths, shipped several converted flows, and documented GTM cost and revenue plans.

generate_title_headline_hooks 3riff 14
▸ how to apply & commit details

How you can apply this

  • Reuse a local MLX Qwen provider behind a strict JSON contract when you need offline or cheaper generation with auditable verbose reports.
  • Harden extractors with deterministic time handling, phone-accumulation fixes, and garbage-rejection validator tests before tuning prompts.
  • Make evals resilient with retry/backoff, surfaced judge failures, and a Codex CLI fallback when the primary judge fails.
  • Gate reusable flow patterns on both paced and front-load paths before converting winners like taco_truck, pizza, returns, and pet_store.

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
riff
  • fix(extract): phone accumulation no longer doubles a 555 prefix
  • feat(eval): Codex CLI judge as a graceful fallback (qwen-max -> codex)
  • docs(gtm): add cost model + path-to-revenue (referenced by roadmap.html)
  • test(validators): name-validator garbage-rejection tests (pairs with R3)
  • fix(extract): deterministic time + phone-accumulation extractors (the #1 re-ask loop)
  • docs(gtm): add showcase-flow plan (the demo call + path to first customer)
  • fix(flow-eval): judge retry+backoff, and SURFACE judge failures instead of hiding them
  • chore(flows): property_trouble_ticket is NOT a Collect Pattern candidate
  • feat(flow-pipeline): gate new flows on BOTH caller paths (paced + front-load)
  • chore(flows): record 4 no-lift re-judges (dental/it_helpdesk/bellas/math), rm throwaway
  • feat(flows): ship amazon_returns + pet_store to Collect Pattern (batch 2 winners)
  • feat(engine): front-load handling algorithm (R2 skip-if-filled + R3 garbage validators)
  • feat(flows): convert pizza + restaurant_reservation to Collect Pattern (batch 1)
  • feat(flows): convert taco_truck to the Collect Pattern (+1.5 quality, seeded)
56 commits

Flow Eval Hardening Meets Reusable Portfolio Docs

Published per-project portfolio documentation with cleaner routing, docs HTML output, recency/title findability, and Mermaid/dark-mode fixes. In riff, built a fuller flow-evaluation and contact-extraction toolkit with deterministic guardrails, model-provider comparison, repeatable judging, and loop-prevention fixes.

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

How you can apply this

  • Reuse the docsgen pattern to publish `/projects/<slug>/docs` pages, expose per-project HTML docs, and improve findability with recency/title metadata.
  • Use `flow-pipeline.sh`, `--repeat N`, `RIFF_EVAL_AGENT`, Qwen failover, and the Anthropic adapter as a template for lower-variance flow evaluation across models.
  • Apply the Collect Pattern plus double-ask-line and clears hygiene linters to keep conversational states deterministic and prevent repeated questions or bare-denial loops.
  • Adapt the gated contact-extractor approach for names, emails, and phones: ground extraction in exact candidates or contiguous digit runs, then validate with A/B sweeps before enabling broadly.

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
riff
  • feat(flow-eval): flow-pipeline.sh — the flow bring-up pipeline
  • feat(flow-eval): --repeat N to kill n=1 judge variance
  • docs(tutorials): teach the Collect Pattern + close 5 tutorial teaching gaps
  • feat(flows): the Collect Pattern — validated split design + deterministic guardrails
  • docs(design): one-act-per-state — Moore-act vs one-slot, Codex-reviewed
  • docs(flow-eval): contact-extractor complete (name+email+phone); dental A/B +3.7
  • feat(extract): extend gated contact-extractor to PHONE (contiguous digit-run grounded, A/B +3.7)
  • docs(flow-eval): email extension shipped (+1.0 apartment); phone deferred, enable-in-eval next
  • feat(extract): extend gated contact-extractor to EMAIL (exact-candidate grounded)
  • docs(flow-eval): record shipped LLM name-extractor + A/B lift (+1.4 restaurant) + follow-ups
  • feat(extract): gated LLM name-extractor for the #1 judged defect (default-OFF, A/B +1.4)
  • docs(flow-eval): rule out prompt-strengthening for the contact-miss (it's model compliance, not instruction)
  • docs(flow-eval): VERIFIED engine-clean post-all-fixes (24/24 terminal, P1/P3/repr-leak 0)
  • docs(flow-eval): last engine P1 fixed; engine lints fully clean, only the gated extractor remains
  • fix(turn): drop mid-text questions at a terminal — the last engine P1 double-beat
  • docs(flow-eval): raw-dict repr-leak fixed + verified; engine lints now clean
  • fix(directive): humanize must_include container slots — stop the model echoing raw dict reprs
  • docs(flow-eval): VALIDATE the LLM contact-extractor — qwen-flash 7/7 on the blocked cases
  • docs(flow-eval): full 19-flow judged map; contact-extraction is the #1 lever (operator decision)
  • docs(flow-eval): graceful handoff shipped; remaining low-quality flows are structural
  • fix(turn): graceful no-progress/max-turns handoff line — apologize, don't dismiss
  • docs(flow-eval): root-cause the name stale-ask; heuristic extraction Codex-blocked
  • docs(flow-eval): judged ranking of 10 originals; repr-leak fixed; repetition is next target
  • fix(slot_format): speak the KEYS of a {label: bool} set, never vocalize 'True'
  • docs(flow-eval): JUDGED A/B refutes one-thing-per-state decomposition; next = judge originals
  • docs(flow-eval): bellas confirm-recognition loop fixed; re-sweep to re-rank next
  • fix(turn): deterministic confirm on silent 'yes' at a gate — breaks bellas P3/P4 loop
  • docs(flow-eval): P3 phone-loop fixed; bellas confirm-recognition is the next target
  • fix(validators): specific re_ask on short phone — breaks the P3 collect-loop
  • docs(flow-eval): record one-slot-per-state A/B verdict + double-ask-line linter
  • feat(linter): double-ask-line — enforce one read-aloud question per state
  • docs(flow-eval): first real-data defect map — P1 fixed, P3 collect-loops next
  • fix(turn): suppress redundant entry-line when model already asked (P1 double-beat)
  • fix(eval): unblock real sweeps — fast qwen-flash persona/deriver + escalate NameError
  • feat(eval): latency-triggered failover to fast Qwen (qwen-flash) when Gemini is slow
  • docs(flow-eval): map the remaining judge complaints as MODEL-layer, not engine bugs
  • docs(flow-eval): correct slot_hold 'loop' — NOT a bug (locked_choice clears it); thread closed
  • docs(flow-eval): root-cause the slot_hold bare-denial loop (real, backstop-bounded, deferred)
  • docs(flow-eval): retract the deny-ack double-beat (FakeAdapter artifact, real path clean)
  • docs(flow-eval): model comparison runnable via RIFF_EVAL_AGENT (blocked on funding)
  • feat(eval): RIFF_EVAL_AGENT provider toggle — compare Gemini / Claude / Qwen
  • feat(adapters): AnthropicAdapter (Claude) — answer 'would a stronger model help?'
  • Merge pull request #17 from davidbmar/docs/night-shift-pricing
  • docs(html): night-shift pricing ($1/hr) marketing page + roadmap reframe
  • Merge pull request #16 from davidbmar/docs/portfolio-html
  • docs(html): publish the Path-to-Revenue / economics page to the portfolio
  • feat(linter): clears hygiene checks — guard the bare-denial primitive at build time
  • docs(flow-eval): bare-denial clears primitive shipped + 4 scoped follow-ups
  • fix(engine): TransitionDef.clears — break the bare-denial loop (austin focus flow)
  • docs(authoring): capture the session's engine patterns for flow authors
79 commits

Riff Flow Eval Hardens Branching, Lints, and Recovery

The day centered on making riff's flow-eval system more reliable: branch-aware fill-rate, no-progress backstops, provider failover, timeouts, transcript persistence, and static/trace lints for fake completions, address gaps, raw repr leaks, final statuses, and one-beat turns. It also remediated concrete flow bugs across delivery, scheduling, denial, callbacks, and read-back behavior, while github-portfolio-search kept local .gstack security reports out of the public repo and refreshed generated docs.

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

How you can apply this

  • Build branch-aware eval scoring so conditional slots only count on the branch a caller actually took.
  • Add layered sweep resilience with SDK timeouts, wall-clock deadlines, provider failover, deriver retries, and incremental transcript writes.
  • Codify conversation defects as gates: no-progress loops, fake completions, missing delivery addresses, invalid final statuses, and raw repr/read-back leaks.
  • Convert audit findings into reusable flow fixes: collect addresses and timeslots before closing, re-read corrected slots, and use distinct denial language.

Commits

github-portfolio-search
  • chore: gitignore .gstack/ to keep local security reports out of the public repo
  • chore: regenerate L0 project docs [skip ci]
riff
  • docs(flow-eval): mark abtest branch-aware fill-rate fixed (eba8bf2)
  • fix(abtest): branch-aware fill-rate so conditional slots don't penalize the untaken branch
  • docs(flow-eval): record reprompt run-on fix + deferred vagueness/detector-sync work
  • fix(rules): clean sentence boundary in the require_question slot-less fallback
  • docs(flow-eval): mark rung 2 (Alibaba MAX bump) shipped; value-verification awaits live run
  • feat(eval): rung 2 — bump to Alibaba MAX (qwen-max) on the 2nd no-progress stall
  • docs(flow-eval): no-progress backstop shipped; rung-2 (Alibaba MAX) + live-wiring next
  • feat(engine): no-progress backstop — no flow can loop to max_turns (rungs 1+3)
  • docs(flow-eval): ceo_command_center triage-loop root cause + Codex-vetted fix design (not applied)
  • docs(flow-eval): log pre-existing plumbing-debug test failure + abtest branch-unaware fill-rate
  • fix(generic_inquiry): honest capture-for-callback, kill the confirm-loop (quality 1->)
  • docs(flow-eval): self-contained HTML scores table (3 runs x 20 flows)
  • fix(coffee+extractor): delivery-address branch for coffee + stop pickup mis-fill
  • fix(pizza): collect a delivery address on the delivery branch (judge-penalized defect)
  • docs(flow-eval): note deriver-truncation retry covers another contamination source
  • fix(eval): retry the deriver on truncated JSON (slow-API quality contamination)
  • docs(flow-eval): record provider-failover infra + table-blocked-on-slow-API status
  • feat(eval): auto-failover Gemini -> Alibaba/DashScope when the primary flaps
  • test(focus-flow): pin austin's clean object-slot read-backs end-to-end
  • docs(flow-eval): document the repr-leak runtime trace-lint sentinel
  • feat(trace-lint): repr-leak sentinel — flag raw container reprs spoken aloud
  • feat(linter): object-slot-no-readback — guard silent container slots in confirms
  • docs(authoring-lessons): object-slot read-back trilogy + deny language + hand-driving technique
  • docs(flow-eval): austin focus-flow full happy path verified clean end-to-end
  • docs(flow-eval): record bare-denial loop follow-up (deny-distinct-language shipped)
  • fix(deny): distinct language for deny_order — stop acking a rejection as acceptance
  • docs(flow-eval): record 3rd container-leak fix + Claude-subbing-in eval technique
  • fix(template): humanize container slots in the BARE {{name}} path (austin repr leak)
  • docs(flow-eval): resolve post-confirm watch-for — eval path already acks
  • docs(flow-eval): triage caller-repeat in 221255Z (stale P3 + degraded confirm_order)
  • docs(flow-eval): record full triage of the 00:40 audit (1 real defect fixed, rest stale)
  • docs(flow-eval): mark live-path nested-repr leak fixed (72b8dcf)
  • fix(slot-format): flatten nested containers so live read-back never speaks raw repr
  • docs(flow-eval): record P4 container-slot fix + live-path nested-repr follow-up
  • fix(P4): stale-ask guard skips container-valued slots (austin double-speak)
  • docs(flow-eval): convergence note — verified state, blockers, M5 handoffs
  • docs(record): restore Invariants section — unblocks 48 primitives tests
  • fix(flow-eval): persist transcripts incrementally so a killed sweep keeps evidence
  • docs(flow-eval): record path_explorer needs_callback overload bug (M5 decision)
  • docs(flow-eval): record FinalStatus-contract lesson + invalid-final-status gate
  • fix(flows): enforce FinalStatus contract + add invalid-final-status lint
  • test(flow-eval): end-to-end correction re-read-back through run_turn
  • docs(flow-eval): AUTHORING-LESSONS P4 section covers all 3 guard shapes
  • docs(flow-eval): P4 guard now covers slot corrections at confirmation
  • fix(flow-eval): P4 guard re-reads-back a slot CORRECTION at await_confirmation
  • docs(flow-eval): P4 extended to greeting-turn front-load
  • fix(flow-eval): P4 guard also fires on front-load at the GREETING turn
  • test(flow-eval): fix stale deriver assertion (max_tokens 900->600)
  • docs(flow-eval): refresh AUTHORING-LESSONS linter table with 5 new checks
  • docs(flow-eval): delivery-no-address lint shipped (pizza + coffee)
  • feat(flow-eval): static lint for delivery-with-no-address (pizza/coffee)
  • docs(flow-eval): P2 CLOSED — 5/5 flows fixed, lint promoted to error gate
  • fix(apartment_scheduler): honest callback close + promote scheduler-no-timeslot to error (5/5)
  • fix(flows): math_tutoring + bellas_hair_salon collect a time — P2 remediation (4/5)
  • docs(flow-eval): P2 remediation 2/5 (dental + dog_grooming fixed)
  • fix(dog_grooming): collect appointment_time — P2 fake-completion remediation (2/5)
  • fix(dental_clinic): collect appointment_time — no more "scheduled" with no time (P2)
  • docs(flow-eval): record P2 fake-completion across 5 flows + pizza-no-address finding
  • feat(flow-eval): static lint for P2 fake-completion (scheduler flow with no date/time slot)
  • fix(flow-eval): deriver requests 3 personas, backfills archetypes — stop derivation timeouts
  • fix(flow-eval): give the deriver a 50s timeout so slow derivations don't fall back contentless
  • docs(flow-eval): eval-reliability now two-layer (SDK timeout + deadline backstop)
  • fix(flow-eval): per-conversation wall-clock deadline — guaranteed sweep-hang backstop
  • fix(flow-eval): hard Gemini request timeout so a hung read can't stall a sweep
  • docs(flow-eval): record eval-sweep hang + loop tooling added this round
  • feat(flow-eval): caller-repeat detector — the caller tells us the agent failed
  • docs(flow-eval): record the P3 tool-call hole fix + new --audit/persona tooling
  • fix(flow-eval): close P3 hole — slot-specific reprompt when a tool call doesn't fill the missing slot
  • feat(flow-eval): `--audit` — rank P1/P3/P4 defects by frequency over transcripts
  • feat(flow-eval): add 3 diverse caller personas (terse / oversharer / corrector)
  • feat(flow-eval): P4 stale-ask-after-fill guard — read back, don't re-ask filled slots
  • docs(codex): answer P3 collect-loop review
  • feat(flow-eval): P3 deterministic collect-state re-ask — no more "Could you tell me?"
  • docs(flow-eval): live Alibaba sweep verifies P1 jam fixed; unmasks P3
  • feat(flow-eval): one-beat-per-turn invariant — engine guard + trace-lint + static check
  • docs(flow-eval): next-steps handoff for a fresh session
  • docs(flow-eval): full arc summary + honest A+B-1 verification results
47 commits

Riff Gets Reusable Flow Evaluation and Read-Back Hardening

Riff added an agent-driveable flow evaluator with typed specs, a public evaluate() API, CLI descriptors, persona-driven conversation runs, rubric scoring, and versioned markdown/JSON reports. The same day hardened runtime read-backs, silent-success terminals, text-mode flow behavior, judge parsing, and test isolation so evaluation failures are easier to reproduce and classify.

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

How you can apply this

  • Build evaluators as reusable layers: model flow specs/results/scores, expose evaluate(), and add a CLI --describe path for automation.
  • Make reports triageable: persist transcripts, separate infra errors from flow failures, include stop_reason, and aggregate worst-first markdown/JSON cards.
  • Keep slow AI judging optional and robust: add --no-judge fast mode, parse reasoning-model JSON defensively, and skip judging errored conversations.
  • Improve confirmation UX with reusable slot formatting: use format_slots/slots_voiced, require non-empty summaries for fallbacks, and lint silent-success terminals.

Commits

github-portfolio-search
  • chore: regenerate L0 project docs [skip ci]
riff
  • fix(flows): author closing lines on all 30 silent success terminals (Fix B-1)
  • fix: post-confirmation acks + silent-success-terminal linter (Codex-reviewed)
  • docs(flow-eval): post-confirmation loop root cause (investigation, not applied)
  • fix(runtime): gate read-back fallback on non-empty summary (keiko regression)
  • fix(runtime): address Codex review of the P1 read-back fix
  • fix(runtime): tool_only_fallback speaks a real read-back via format_slots (P1/P2/P3)
  • docs(flow-eval): P1 root cause — tool_only_fallback synthesizes the canned collapse
  • feat(flow): read-back micro-experience — format_slots + slots_voiced
  • docs(flow-eval): generic remedies from the first full judged sweep
  • flow-eval: persist transcripts per run + keep runner tests hermetic
  • flow-eval: fix four harness-fidelity bugs + add linter, ratchet gate, DashScope judge
  • docs(flow_eval): set wall-clock expectations (full sweep is a batch job)
  • docs(flow_eval): document --no-judge fast mode + judge-speed wall (milestone 4)
  • feat(flow_eval): --no-judge fast mode (skip the slow judge)
  • feat(flow_eval): stop_reason makes incomplete runs interpretable
  • fix(flow_eval): skip judge on errored convs (preserve error) + de-parrot judge note
  • feat(flow_eval): parse reasoning-model judge output (balanced-brace scan) + stricter prompt
  • feat(flow_eval): robust judge JSON parsing + explicit heuristic-fallback note
  • fix(flow_eval): resolve FlowLlmConfig model + correct judge adapter call (live bugs)
  • feat(flow_eval): compact stdout summary + live smoke test (Bezos/Jobs milestone 2)
  • docs(flow_eval): L0 llms.txt + AGENTS.md entry + L2 README (progressive discovery)
  • feat(flow_eval): CLI + L1 capability descriptor (--describe) + scripts shim
  • feat(flow_eval): runner + public evaluate() API (flow->derive->personas->drive->score->report)
  • feat(flow_eval): explicit errored flag — distinguish infra errors from flow failures
  • feat(flow_eval): report aggregator + versioned schema (worst-first card, md+json)
  • feat(flow_eval): rubric — deterministic success + judge-adapter quality/robustness
  • feat(flow_eval): conversation driver (persona <-> run_turn + autostate, error-isolated)
  • feat(flow_eval): goal_deriver — flow -> caller goal/facts/3 personas (override > LLM > fallback)
  • feat(flow_eval): data types (FlowEvalSpec, ConversationResult, FlowScore, ReportCard)
  • refactor: extract advance_text_autostates to riff/turn_autostate.py
  • Merge branch 'fix/text-mode-audio-gated-flows' into feat/flow-evaluator
  • Merge branch 'feat/alibaba-persona-utterance' into feat/flow-evaluator
  • docs(plan): flow evaluator implementation plan (TDD, 10 tasks + Bezos/Jobs gate)
  • docs(spec): clarify rubric reuses judge adapter, not session_judge.py
  • docs(spec): flow evaluator design (human-like report card, agent-driveable)
  • feat(persona): caller utterances via Alibaba (DashScope/Qwen) by default
  • test(web): text-mode auto-advance through static/act states
  • fix(web): run audio-gated flows in text mode + clean up flow picker
  • docs: upgrade Record tutorial and add operator guide for Record-with-export (#11)
  • Merge pull request #10 from davidbmar/feat/grounding-gate
  • Merge remote-tracking branch 'origin/main' into feat/grounding-gate
  • test: stop cwd leaks from poisoning the full-suite run (932 Errno-2 errors)
  • test(sim-harness): drive real greeting trigger instead of assuming utterance-advance
  • test(sim-harness): exclude underscore configs from all-flows parametrization
  • test: fix 6 collection errors via consider_namespace_packages
  • test(b-003): assert confirm_record_issue gate, not stale clarify state
16 commits

Grounding Gate Ships With Reusable CI and Demo Plumbing

Riff landed a deterministic grounding gate workflow with staged shadow wiring, offered-then-affirmed checks, failure classification, surface-form and word-boundary matching, plus regression tests and docs. The portfolio search repo standardized CI authentication on GHPS_PAT for docs and reindex jobs, added nightly reindexing, and Riff patched web/flow-editor dependency alerts.

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

How you can apply this

  • Build grounding checks as pure deterministic gates first, then shadow-wire them behind a kill switch before enforcing behavior.
  • Reduce false positives with word-boundary matching, negator/hedge handling, and offered-then-affirmed validation.
  • Make demos reusable with bare python3 execution, --list-flows, per-run JSONL logs, and --review diagnostics.
  • Unify scheduled CI jobs around one repo-scoped token and keep dependency-alert patches in the same maintenance flow.

Commits

github-portfolio-search
  • fix(ci): gen-docs uses GHPS_PAT (unify with reindex)
  • fix(ci): reindex uses GHPS_PAT (repo scope) + nightly schedule
riff
  • chore(grounding-gate): land working set — docs, scenario data, audio, tests
  • fix(deps): patch 6 Dependabot alerts in web/flow-editor (esbuild RCE, vitest, brace-expansion) (#9)
  • docs: add plain-English grounding gate guide
  • Add grounding failure classification (i) + surface-form matching (Option C)
  • Add --list-flows, per-run JSONL logging, and --review diagnosis to gate demo
  • Make grounding_gate_demo runnable with bare python3 from any directory
  • Fix is_affirmation false-positive on negators/hedges + add live demo and e2e test
  • docs(integrity): runbook + Phase 0-1 complete; loop stop note
  • feat(integrity): Phase 1b — wire offered-then-affirmed grounding (cut shadow FPs)
  • docs(integrity): progress — Phase 1a shadow wiring done, Phase 1b/2 next
  • feat(integrity): Phase 1a — shadow wiring behind kill switch (observe-only)
  • docs(integrity): progress log — Phase 0 done, Phase 1 next
  • fix(integrity): word-boundary matching + harden type; apply Gates/Jobs review
  • feat(integrity): Phase 0 — pure deterministic grounding gate + design/plan
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
26 commits

Riff Gained Intent Routing, Stereo Blends, and Weather Flows

The recording app moved Riff's launcher toward browser-side "hey riff" routing by hydrating an intent registry from `GET /intents`, while improving capture with raw mic input, two-track stereo blending, combined transcripts, and synced read-along highlights. The Riff service added a guarded Open-Meteo weather flow backed by a JSON preference store, with docs, specs, and tests updated around weather's live/in-flight status.

recording_app 11riff 15
▸ how to apply & commit details

How you can apply this

  • Expose an intent catalog with `GET /intents`, hydrate it in the browser, and route wake-phrase commands like `hey riff <X>` client-side.
  • Capture narration as raw mic audio, then blend it with playback into Telnyx-style stereo plus a combined transcript for reusable call-style recordings.
  • Write and hydrate transcripts before blending so downstream lensing/highlighting can run faster and stay synced to playback.
  • Model a reusable weather flow as YAML: ask once for city, store preferences in JSON, fetch via injectable Open-Meteo tools, and protect execution with guards.

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)
riff
  • Merge pull request #8 from davidbmar/feat/weather-flow
  • fix(test): skip non-flow config in test_existing_flows_still_parse
  • feat(weather): weather.yaml flow (ask-once city -> fetch -> speak)
  • feat(weather): register guards at boot, wire tools into registry, gate-exempt read-only tools
  • feat(weather): weather tools + guards (Open-Meteo, injectable fetch)
  • feat(preferences): global JSON-backed preference store
  • docs(plan): weather riff implementation plan (TDD, 5 tasks)
  • docs(spec): weather riff flow (ask-once city, global pref, Open-Meteo)
  • fix(test): skip non-flow config in test_existing_flows_still_parse
  • feat(weather): weather.yaml flow (ask-once city -> fetch -> speak)
  • feat(weather): register guards at boot, wire tools into registry, gate-exempt read-only tools
  • feat(weather): weather tools + guards (Open-Meteo, injectable fetch)
  • feat(preferences): global JSON-backed preference store
  • docs(plan): weather riff implementation plan (TDD, 5 tasks)
  • docs(spec): weather riff flow (ask-once city, global pref, Open-Meteo)
26 commits

Wake-Launched Riff Flows Got Secure Live Audio

recording_app gained concurrent recording, live transcript wake-word UI, editable hydration items, and a Qwen-backed hydration pipeline with backfill support. The Riff integration added scoped launch-token minting, Live WebSocket token gating, client token plumbing, /live and /flow-audio glue, plus event-driven S3-to-SQS worker intake and deploy IAM updates.

recording_app 23riff 3
▸ how to apply & commit details

How you can apply this

  • Build a browser wake flow by matching bounded wake phrases like "Hey Riff" and "Hey Cass", streaming live transcript alongside recording, then launching a prepared flow.
  • Protect live sidecars with scoped launch tokens: mint via auth.py and /api/riff-token, pass as ?token= from the client, and verify at the Live WebSocket.
  • Reuse the audio handoff pattern: expose /live and /flow-audio, grant deployer writes to flow-audio/*, and sync Announce WAV assets for launch flows.
  • Move transcript processing off the request path with S3 ObjectCreated -> SQS intake, a polling fallback, and degraded-safe Qwen hydration/backfill workers.

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)
riff
  • feat(live-client): send launch token as ?token= when present (#7)
  • feat(flows): hey_riff_test — pre-rendered Announce intro flow (#5)
  • feat(live): launch-token gate on the Live WS sidecar (TDD) (#6)
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
79 commits

Agent Work Queues and QR Photo Albums Ship

A Postgres-backed agent work queue landed in agent-router with worker registration, filtered claims, routing, wakeups, metrics, cancellation, expiration, dead letters, demos, and deployment docs. The day also shipped a Lambda/S3 QR photo album app with token-gated uploads, gallery, delete flows, printable cards, and riff feature-request store-and-forward scenarios.

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

How you can apply this

  • Use Postgres for durable agent jobs with claim/reaper logic, LISTEN/NOTIFY wakeups, target_worker routing, action filters, JSONB search, and latency/throughput metrics.
  • Wrap agent execution as capture->shape->confirm->execute, then enforce an action allowlist at the confirm gate before work reaches execution.
  • Build event photo drops as a mobile SPA backed by Lambda routes, S3 presigned PUTs, HMAC tokens, thumbnails, newest-first pagination, and owner-only delete.
  • Make small apps reproducible with pytest scaffolding, README docs, QR generator scripts, AWS CLI deploy automation, and print-shop-ready PDF assets.

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
riff
  • 512 line: add multi-request L2 scenario (plural case validated)
  • 512 line: add L2 feature_request voice scenario; record live-voice PASS
  • 512 line: feature-request flow + store-and-forward to M3 DB
219 commits

Phone Routing Hardens While Agent Filter Metrics Hit 300 Cycles

Riff added caller-ID and per-number flow routing, per-flow preferred model selection, routing normalization, audit logs, CEO command-center tooling, and live-session context/slot-extraction fixes. Agent-router extended its M3 validation run through cycle 625, reaching 300 filter cycles and ~97.9% cumulative filtering while codifying dispatch edge cases.

agent-router 205riff 14
▸ how to apply & commit details

How you can apply this

  • Use caller-ID/per-number routing tables with per-flow preferred_model fields to steer phone traffic without hard-coded flow selection.
  • Pair routing-table normalization with test-number config and audit logs so routing changes are reproducible and testable.
  • Add a command-center flow with model and decision-tool wiring when operators need a live control plane for phone workflows.
  • Track agent coordination with batch utilization logs and milestones, then codify edge cases like partial dispatch and dispatched-active sprint skips.

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
riff
  • release: demo runbook for 2026-05-28 trouble-ticket external-system path
  • ceo: add verbal transfer control plane
  • tests/phone: fix 2 committed-yaml tests for SWAP-FINAL routing
  • flows/_routing.yaml: SWAP-FINAL geo-correct (CEO 2026-05-29T04:18Z)
  • phone: inject prior call context before live session
  • feat: wire CEO command center model and decision tools
  • phone: per-number routing + per-flow preferred_model (CEO 01:54-01:58Z)
  • phone: routing-table normalization + test-number config + audit log
  • feat: add CEO command center flow
  • phone: caller-ID-based flow routing (CEO 2026-05-29T01:40Z Option B)
  • docs(codex): trouble-ticket-2 Run 8 — Path A re-verify against 3e41cfe (NOT-GREEN)
  • docs(codex): trouble-ticket-2 Path A follow-on verification — NOT GREEN
  • fix: run live slot extractor for service days
  • fix: seed live text turns for l2 slot extraction
451 commits

Demo-Critical Agent Ops for Trouble-Ticket Hardening

The day centered on coordinating a demo-critical RIFF trouble-ticket path through agent-router pings, utilization snapshots, escalation relays, dashboard evidence, and Phase 2 standby tracking. RIFF added live-mic support, property-ticket routing and gate fixes, phone guards, red tests, generated trouble-ticket corpora, and run-by-run release evidence.

agent-router 406riff 45
▸ how to apply & commit details

How you can apply this

  • Use durable ack, standup, and ops/acks files as reusable cross-host relays when agent channels or review handoffs are unreliable.
  • Track multi-agent utilization with recurring snapshots, strict gates, and adoption-discount filters so standby noise does not look like real work.
  • Harden demo paths by pairing fixes with red E2E captures, generated scenario corpora, and release-criteria docs for each verification run.
  • Build operator dashboards from structured cards and Playwright health loops, then keep link hygiene and private-repo leakage checks in the loop.

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)
riff
  • ops: record codex M3 phase 2 standby ack
  • docs(codex): trouble-ticket-2 L1+L2 eval — FINAL (L1 partial, L2 unfixed, restart still needed)
  • docs(codex): trouble-ticket-2 L1+L2 eval (PROVISIONAL — L1/L2 in flight)
  • docs(review): draft post-demo cross-fix observation retrospective
  • fix: extract service day buckets
  • postcall: log all hook fires to jsonl + per-hook persist file
  • test: capture day-list and replicantpm postcall bugs
  • test(generated): copy austin_plumbing scenarios as trouble_ticket_2 corpus
  • docs(review): approve 6d9de2e gate-hardening hardening
  • fix: harden property ticket record issue gate
  • docs(demo-corpus): amend two residual wrong claims per Architect ack
  • docs(demo-corpus): amend headline per Architect correction (de04203)
  • docs(demo-corpus): aggregate trouble-ticket Runs 1-6 for demo data lead
  • docs: update morning-operator-bundle with --live-mic instructions
  • docs(codex): Run 6 — d87ba20 phone-server guard-wiring (FAIL pending restart)
  • fix: register property ticket phone guards
  • fix: bridge trouble ticket record confirmation
  • docs(codex): trouble-ticket Run 5 evidence bundle — FAIL signal-1 (CEO) + FAIL signal-2 (IT)
  • test: capture run5 confirm record live stall
  • docs(codex): trouble-ticket release criteria — Run 5 FAIL, demo BLOCKER
  • docs(codex): trouble-ticket release criteria — credit Run-4 IT re-verification (1a7fa5f)
  • docs(codex): trouble-ticket release criteria — evening refresh (post-db047ca)
  • docs(codex): trouble-ticket Run 4 — IT independent re-verification (FAIL @ confirm_record_issue)
  • fix: route trouble ticket run4 scheduling gate
  • feat: add --live-mic support to Tier B driver (T-GEMINI-M3-LIVE-MIC-063)
  • test: capture trouble ticket run4 verification stall
  • docs: add emergency standup status
  • Fix trouble ticket relation fallback
  • test: capture L2 real duplicate request routing stall
  • docs(codex): E2E Run 3 — post-3196ac4 L2-Real re-run (FAIL, new stall point + safety-gate warning)
  • docs(codex): trouble-ticket release criteria — post-3196ac4 L2 Real re-run + HIGH nav-token clearance
  • docs(codex): E2E Run 2 — post-3196ac4 L2-Real sweep (FAIL, new failure point)
  • docs(codex): trouble-ticket release criteria — Charter v2 signal columns
  • docs: add reflexion for coder3
  • Fix property ticket new issue routing
  • Add red test for open request new issue routing
  • docs(codex): L1+L2 review, promotion ladder ground-truth, release criteria
  • docs(codex): trouble-ticket live POC — operator short form
  • docs(codex): trouble-ticket live POC procedure (M3 mic+speakers)
  • docs(codex): trouble-ticket phone test procedure (inbound)
  • docs(codex): property_trouble_ticket e2e test run report
  • fix(docs): correct AIR gate runbook commands
  • fix(flow_validation): classify clean l2 failures as fail
  • fix(flow_validation): keep metrics cost sources canonical
  • fix(flow_validation): record l2 stub summary status
67 commits

Agent Ops Dashboards and Flow Validation Land

agent-router added fleet operations surfaces: /exec briefings, a /status dashboard, mobile /m hosts/worker/voice/composer workflows, manager queue APIs, peer status, tailnet auto-discovery, peer gossip, role personas, and M3 utilization snapshots. riff advanced flow validation with state models, SHA-256 flow hashing, static/L1/L2/L3/L4 runners, run/run-status routes, metrics emitters, and docs/test coverage for integration and slot fallback behavior.

agent-router 45riff 22
▸ how to apply & commit details

How you can apply this

  • Build operator-facing agent tools as paired UI and API layers: agent-router added /api/manager queue endpoints, a Queue pane, /status fleet dashboard, /exec briefing pages, and docs aligned to implementation.
  • Reuse the mobile control pattern: /m combined a persistent composer, host picker, spawn buttons, Hosts pane backed by /api/peers/status, worker-detail panel, and fullscreen dictation overlay.
  • Model validation as progressive levels: riff introduced ValidationState/LevelState plus static, L1, L2, stub L3/L4 runners and run-status endpoints.
  • Instrument validation output early: riff added metrics emitters for L1, L2 stub, and L2 real results, with SHA-256 flow hashing for stable identifiers.

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
riff
  • feat(flow_validation): emit L2 real metrics from variants
  • chore: docs and tools hardening from previous session
  • feat(validation): implement stub L3 and L4 runners
  • feat(flow_validation): emit L2 stub metrics from quality gate
  • feat(flow_validation): emit L1 metrics from quality gate
  • feat(flow_validation): add metrics emitter
  • docs(codex): add accumulated handoffs, plans, and design docs
  • docs(integration-tests): M3 HTTPS smoke + post-M3 federation recount
  • docs(codex): property_trouble_ticket L1+L2 stub+L2 real test run results
  • docs(integration-tests): EC2 HTTPS smoke + HTTP federation baseline
  • feat(flow_validation): Task 9 stub — run + run-status endpoints
  • feat(flow_validation): add L2 runners
  • feat(flow_validation): add L1 runner
  • feat(flow_validation): add static runner
  • fix(web_server): mount /api/flow-validation/ route handler
  • feat(flow_validation): GET /api/flow-validation/<flow_id> route (Task 3)
  • feat(flow_validation): hash_flow_file SHA-256 helper (Task 2)
  • feat(flow_validation): ValidationState + LevelState + derivations (Task 1)
  • fix(slots): extract caller name fallbacks
  • test: cover property caller name semantic ack
  • fix(slots): extract entry permission fallbacks
  • test: cover property entry permission semantic ack
6 commits

Observed Trouble Tickets Get Safer, More Measurable Runs

Riff added an observed property trouble ticket L3 run path, backed by absolute run-root handling and catalog-based issue category inference. The day also tightened user flow and observability by preventing premature SMS sends, serving live probe-room audio on the timing page, and exposing expected reality whisper metrics.

riff 6
▸ how to apply & commit details

How you can apply this

  • Build observed evaluation runs with stable absolute root paths so runtime artifacts resolve consistently across environments.
  • Infer issue categories from a catalog to reduce manual classification logic in trouble ticket workflows.
  • Gate manual phone collection before SMS dispatch to avoid contacting users too early.
  • Expose live audio and whisper metrics on timing/diagnostic pages so developers can debug probe behavior directly.

Commits

riff
  • fix: keep manual phone collection from sending sms early
  • fix: infer trouble ticket issue category from catalog
  • fix: use absolute runs root for observed L3
  • feat: run observed property trouble ticket L3
  • fix: serve live probe room audio on timing page
  • feat: expose expected reality whisper metrics
65 commits

RIFF Gets Truth-Gated Live Speech Timing

RIFF added an AIR/realtime speech timing stack: bootstrap/control CLI, agent-router bridge, live dashboards, speaker swim lanes, audio editor timeline, and handoff metrics. It tightened measurement quality with Whisper-derived truth lanes, room-clock alignment, transcript validation, evidence bundles, and gates that block self-improvement when truth quality is weak.

riff 65
▸ how to apply & commit details

How you can apply this

  • Built an AIR bootstrap/control path for reproducible realtime-agent environments, including M1 service startup, internal mode, macOS detach support, tailnet UI exposure, and an agent-router bridge.
  • Added source-of-truth speech timelines from room audio, live Whisper observer artifacts, distilled word timestamps, and synced playheads so debugging can anchor to captured audio instead of app events.
  • Shipped timing dashboards with swim lanes, hover transcripts, silence gaps, overlap causality, human review notes, and AI-readable logs as reusable patterns for inspecting voice-agent turns.
  • Introduced transcript validation, evidence bundles, truth-quality metrics, and flow/OTA audio harness gates to keep automated improvement tied to measurable signal quality.

Commits

riff
  • feat: add repeatable whisper metrics campaign
  • feat: show world model agreement on timing page
  • fix: keep requested observed-world session on timing page
  • fix: treat live observer artifacts as timing truth
  • feat: add M3 live Whisper observer lane
  • feat: add room audio activity truth lane
  • feat: bundle timing evidence for metric accuracy
  • feat: add remote playwright screenshot capture
  • feat: gate self improvement on truth quality
  • feat: expose truth quality metrics for speech timing
  • feat: add distilled whisper word timestamp evidence
  • feat: add fast deterministic whisper truth preview
  • feat: expose audio truth metrics for auto improvement
  • fix: sync timing markers to room audio clock
  • fix: clarify compressed timing callouts
  • feat: enrich timing hover overlays
  • feat: use single compressed timing graph
  • feat: show spoken text on timing hover
  • feat: compare caller playback with RIFF voice timing
  • fix: align audio validation with room clock
  • feat: validate audio transcript against timing graph
  • feat: sync audio playhead across timing timelines
  • feat: add human review notes to speech timing
  • feat: expose AI-readable speech timing log
  • fix: find audio truth artifacts across run roots
  • feat: add audio source-of-truth timeline
  • fix: suppress hidden RIFF audio and show silence gaps
  • fix: use wall clock spans for speech timing
  • chore: expose speaker busy time in AIR status
  • fix: show transcripts on timing hover and gate speaker busy
  • fix: measure RIFF voice duration from audio output
  • fix: show estimated speech overlap causality
  • fix: clarify speech timing labels
  • chore: label dashboard as speech timing
  • feat: annotate AIR timeline clips
  • fix: align property L3 verification expectation
  • fix: harden property L3 caller handoff
  • feat: make AIR dashboard true swim lanes
  • fix: accept spoken verification code words
  • fix: preserve AIR verification code override on boot
  • feat: add audio editor timeline to AIR dashboard
  • feat: show AIR timing as speaker swim lanes
  • fix: clarify AIR dashboard speaker perspective
  • docs: explain realtime AIR speech dashboard
  • fix: expose M1 RIFF web UI on AIR tailnet
  • feat: add live speech timing dashboard
  • feat: log live speech handoff timing metrics
  • fix: start M1 AIR service in internal mode
  • fix: support macOS AIR bootstrap detach
  • fix: add AIR provider speech handoff signal
  • fix: add AIR state-sync settle delay
  • fix: avoid AIR state-sync greeting overlap
  • fix: make AIR trouble ticket phone line clearer
  • fix: add service-state synced AIR caller mode
  • fix: allow initial AIR no-speech tolerance
  • fix: restart RIFF during M1 AIR bootstrap
  • fix: harden RIFF AIR bootstrap startup
  • feat: add RIFF AIR bootstrap foundation
  • fix: align AIR property scenario with browser caller ID
  • feat: add AIR control CLI
  • feat: add RIFF AIR agent-router bridge
  • test: correct property trouble ticket L3 turn count
  • fix: remove empty maintenance action enum
  • test: add property trouble ticket L3 scenario
  • feat: add RIFF flow quality gates and OTA audio harness
9 commits

Visible Delegation Gets Refresh-Safe, Service Onboarding Sharpens

Agent Router gained visible delegation support while preserving router sessions through browser refreshes and ignoring prompt templates that should not count as visible delegation. Cal Provider’s setup wizard was recast around professional service businesses and clearer customer calendar setup, while Riff added stable phone host modes.

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

How you can apply this

  • When adding visible delegation to an agent router, pair the feature with refresh-safe session preservation.
  • Filter prompt templates out of visible-delegation handling so routing state reflects real delegation paths.
  • Shape onboarding copy around the customer’s domain, as with service-business calendar setup.
  • Stabilize phone host modes to make voice/session behavior predictable across flows.

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
riff
  • feat: support stable phone host modes
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
40 commits

Sites Control Panel, Deploy History, and Record Exports

May 16 focused on turning deployment visibility into reusable infrastructure: a typed sites registry, MCP dashboard, CLI commands, freshness checks, launchd refresh, and basic-auth setup landed in intelligence-briefing-toolkit. Related repos added JSONL deploy history logging, while riff hardened recording flows with postcall exports, keyword-based endings, and stricter LLM silence controls.

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

How you can apply this

  • Built a cross-repo sites registry with DeployConfig, HistoryEntry, SiteRecord, SiteStatus, 7-tier status derivation, and data freshness checks; reuse this pattern for deploy dashboards that track content age as well as deploy age.
  • Added operational surfaces: ibt sites list/show/doctor, clickable CloudFront dashboard links, hourly launchd auto-refresh, env-backed basic auth, and MCP infrastructure provisioning; adapt these as a lightweight control panel for static-site fleets.
  • Standardized deploy audit trails by appending .deploy-logs/history.jsonl on EXIT in iran-intel and UFOBriefing; reuse JSONL histories as a simple source for freshness, status, and rollback tooling.
  • Hardened riff call recording/export with postcall record bundles, public-slots webhook passthrough, caller keyword termination, dispatcher wiring, and LLM tool-call blocking; reuse the approach for safer voice capture workflows.

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
riff
  • chore(static-audio): regenerate tutorial_record greeting + announce_summary
  • fix(record): block LLM tool calls, bypass echo filter, postcall safety-net
  • fix(record): UI gold-box, expand end phrases, force LLM silence
  • feat(tutorial_record): caller-driven end-of-recording via keyword detection
  • fix(postcall): wire dispatcher into live/browser transport
  • feat(postcall): export record bundles after calls
  • docs(handoff): brief for two-agent Record-export doc collaboration
  • feat(call_export): add public-slots passthrough to webhook payload
  • fix(tutorial_record): announce_summary readback + harden summarize prompt
  • feat(tutorial_record): rebuild Record building-block flow per spec §2
  • chore: checkpoint riff workspace
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
28 commits

Disclosure Graphs, Scheduling Scenarios, and Switchboard Worker Sync

The portfolio advanced UFO disclosure tooling by refreshing project evidence, merging an S1.7 disclosure graph into the live UFO graph, deriving audit years from provenance, and adding graph and lead explorers. It also hardened Riff scheduling and air-call scenario coverage while tightening Switchboard worker coordination with sync contracts, dashboard state, and ownership safeguards.

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

How you can apply this

  • Build provenance-aware data refreshes: merge curated disclosure graphs into live graphs, derive audit metadata from provenance, then expose lead and graph explorers for research interfaces.
  • Codify call-flow edge cases as scenario YAMLs: add manifests, generated variations, Tier A regressions, and readiness docs so scheduling bugs can be replayed.
  • Bound conversational loops explicitly: handle vague first-slot deferrals and locked-choice scheduling offers with tests before deploying offer logic.
  • Protect multi-worker orchestration: document pickup contracts, add client sync expectations, improve dashboard state, and prevent targeted commands from stealing task ownership.

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
riff
  • docs(l3): record Austin Plumbing timeout retry requirement
  • test(l3): add Austin Plumbing OTA scenario manifest
  • fix(scheduling_offer): T-CLAUDE-M3-OFFER-SLOT-VAGUE-20260512A — vague deferral aliases for first slot
  • fix: align worker checker with task broker
  • docs(codex): T-CLAUDE-M3-STORY-LADDER-SWEEP-20260512A — Austin Plumbing L1/L2 story sweep report
  • fix: strengthen air call story harness
  • test(scenarios): add 29 generated Austin Plumbing variation YAMLs
  • docs: update Switchboard URL references to current LAN IP
  • fix: recover air call browser context
  • docs: add Austin Plumbing L3 readiness summary (T-GEMINI-M3-L3-DOCS-098)
  • fix: explain switchboard watcher network failures
  • docs: clarify switchboard worker pickup contract
  • test(scenarios): T-CLAUDE-M3-AUSTIN-SCENARIOS-195434 — 3 Tier A regression cases closing 3/4 L2 gaps
  • docs(coverage): T-CLAUDE-M3-AUSTIN-COVERAGE-193957 — propose 5 L2 scenarios + scheduling_commit decision
  • fix: keep stub ladder runs off local ML fallbacks
  • feat: bound scheduling offer locked-choice loops
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
99 commits

Quality Gates, Task Brokers, and Voice-Agent Evidence Ladders

The day advanced the intelligence briefing toolkit from corpus cutover into guarded merge workflows: a live UFO graph expanded from 7 to 1,481 entities, nightly G1-G4 quality gates were wired, and S1.7 added atomic provenance plus dry-run merge audits with a decision-file gate. Riff and switchboard-ai focused on operationalizing voice-agent validation with task broker/inbox workflows, ladder evidence checks, OTA artifact bundles, and Austin Plumbing runbooks and matrices.

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

How you can apply this

  • Built a reusable corpus-ingest cutover pattern with merge tooling, canonicalization, regression tests, and before/after entity counts for verifying graph migrations.
  • Added quality gates and dry-run merge audits that other projects can adapt as nightly checks plus explicit decision files before mutating shared data.
  • Hardened voice-agent test ladders by grouping failures by signal, tightening L3 evidence checks, exporting service bundles, and adding machine-readable ladder metrics.
  • Introduced Switchboard-style task broker mechanics: per-agent inboxes, worker roster checks, heartbeat/listening states, and safeguards that keep coordination notes from corrupting task state.

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
riff
  • feat: group ladder failures by signal
  • feat: tighten FSM ladder L3 evidence checks
  • fix: ignore broker events in worker roster check
  • fix: add RIFF Switchboard broker action helper
  • chore: use Switchboard task broker in worker loop
  • feat: self-verify air-call L3 runs
  • feat(M5 conductor): T-092 — auto-fetch service bundle from M3 after /stop
  • feat(tools): T-090 — extend air_call_acceptance_check with L3 bundle rows 5-8
  • fix: export complete air-call service bundle
  • Add Austin Plumbing evidence matrix
  • docs: add building-a-riff-flow-methodology
  • docs(stt): audit Whisper and choice-STT log paths and mapping
  • tools: route worker loop through switchboard inbox
  • docs(scheduling): T-080 — Austin Plumbing L1 case matrix + 6 seed tests
  • Add Austin Plumbing L3 OTA rehearsal plan (T-CLAUDE-M5-AUSTIN-L3-REHEARSAL-082)
  • Add L3 OTA artifact bundle contract (T-CLAUDE-M5-OTA-ARTIFACT-BUNDLE-075)
  • fix(scheduling): F-281d3/D2 — runtime negative constraints suppress L1+cascade
  • docs(ota): produce Austin Plumbing customer executive summary
  • docs(service): T-CLAUDE-M3-SERVICE-EXEC-SCAN-068B — daily service exec summary
  • Add customer/OTA executive summary (T-CLAUDE-M5-CUSTOMER-EXEC-SCAN-069B)
  • tools: prefer original switchboard assignment prompts
  • tools: generate execution prompts for switchboard tasks
  • docs(service): T-M3-SERVICE-ARTIFACT-CONTRACT-009 — minimum service artifact contract
  • tools: classify switchboard heartbeats as listening
  • docs: add agent switchboard lifecycle instructions
  • Add bug-handoff template (Gap 7 from M5 OTA gap checklist)
  • Add OTA preflight script (T-M5-OTA-PREFLIGHT-008)
  • docs: add voice agent hardening backlog
  • test(scheduling): align booking corpus with selected-slot guard
  • test(scheduling): add empty-offer recovery scenario
  • Add M5 OTA gap checklist (T-M5-OTA-GAP-FOLLOWUP-001)
  • test(scheduling): harden ladder harness
  • tools(switchboard): recover open task assignments
  • tools(switchboard): add standard worker loop
  • test(scheduling): guard selected slot confirmation
  • Update Gate 1 bundle for L2 fix + rule-floor evidence (seq=458)
  • test(live): extend L2 capture-mismatch regression from real-smoke evidence
  • fix(live): per-turn user_text_state guards locked_choice on state-mismatch
  • docs(guide): document Rule Floor for truthful stub results
  • Add Gate 1 no-cost validation command bundle (seq=426)
  • docs(guide): add the suppress-model-output bug chapter (Ch 23)
  • fix(verdict): fail on hard agent rule signals
  • fix(l1): honor locked-choice runtime prompts
  • docs(guide): add M5 operator guide for the test ladder (Ch 22)
  • Add gated rerun checklist for post-fix validation (seq=401)
  • docs(guide): add Chapter 21: The No-Go Decision case study
  • docs(guide): update chapters with cost-tracking and FSM loop case study
  • Add L1+L2 failure root-cause analysis
  • fix(l1): wire Anthropic cost estimates into prime summaries
  • Add machine-readable ladder artifact metrics
  • docs(guide): add L1 prime gate chapter
  • Fix L2 checklist after dry-run validation (seq=326)
  • docs(guide): cross-link hardening plan to machine-readable metrics
  • fix(voice): lower browser speaker tail 700ms -> 200ms (F-359 root cause)
  • docs(guide): add OTA call review and hardening plan chapters (Ch 17 & 18)
  • Add L2 real-Gemini operator checklist linked to task-inbox
  • Fix promoted scenario selection by level
  • Add L2 real-Gemini batch runbook (5-scenario smoke)
  • docs(guide): add machine-readable test metrics chapter
  • fix(switchboard): require explicit task inbox targets
  • tools(switchboard): add worker task inbox
  • feat(live): emit mic_gate_window per ~500ms for L3 timeline overlay
  • feat(air_call): bundle choice-STT WAVs into run-dir service export
  • docs(guide): clarify worker coordination loop and update ladder status
  • docs(guide): add worker coordination loop chapter
  • fix(switchboard): ignore proceed notes in roster status
  • fix(switchboard): ignore coordination notes in roster status
  • tools(switchboard): add worker roster checker
  • docs(guide): add gemini-live and service-artifact-map chapters
  • Add safe Switchboard env template
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
121 commits

Voice FSM Harness, Switchboard Portal, and Scheduling Fixes Land

Riff dominated the day with a full voice-agent FSM variation harness, spanning path exploration, deterministic scenario generation, multi-level execution, fault injection, verdicts, promotion ledgers, coverage reports, and service-side artifact export. Supporting work added Switchboard’s live multi-agent portal, tightened scheduling/calendar recovery flows, and fixed an IBT temporary uvicorn scheduler bug.

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

How you can apply this

  • Built reusable FSM test plumbing: export flow graphs and paths, generate deterministic scenario YAML from behavior families, and record canonical bundles for later review.
  • Added a Level 1-3 voice-agent ladder, so teams can start with scripted Persona/FakeLiveClient runs, then graduate to Gemini Live and service-side air-call artifacts.
  • Layered in fault injection, structured verdicts, promotion ledgers, and coverage regression reporting to make scenario batches comparable across runs.
  • Shipped operator tooling patterns: live agent rosters, terminal find alerts, auto agent identity inference, calendar cleanup helpers, and scheduler-disable safeguards for temporary servers.

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)
riff
  • tools(switchboard): allow auto agent identity inference
  • Add FSM ladder report tool
  • docs(guide): add voice-agent test ladder chapter + troubleshooting
  • test: tolerate austin_plumbing schema growth (F-359 added a state)
  • docs(switchboard): standardize agent check-in practice
  • docs(codex): clarify M3 service-side ladder ownership
  • docs(codex): expand voice ladder hardening roadmap
  • docs(codex): add FSM ladder report agent handoff
  • Fix locked-choice prompt suppression for calendar flow
  • fix(scenarios): skip inapplicable generator families
  • tools(calendar): add air-call residue cleanup helper
  • test(harness): repair Level 2 fixture setup
  • Merge remote-tracking branch 'origin/main'
  • Capture Level 2 Gemini audio artifacts
  • docs: add claude-m5-orchestrator switchboard intro + ignore .rephrase_cache
  • fix(scheduling): F-359 — preserve marker through F-184 sync_details modifies
  • docs(manual-tests): m5-air-call-recovery — IP placeholder + Step 1.5
  • docs(manual-tests): M5 air-call recovery walkthrough for F-359 chain
  • feat(scheduling): F-359 follow-up commit #2c — provider-backed alt-day scan
  • docs(adr): F-359 follow-up commit #4 — ADR-0007 + grep-invariant test
  • feat(scheduling): F-359 follow-up commit #2b — propose 3 alternative days
  • fix: Level2Adapter spawns live.run() task; turn_complete queue actually fires
  • docs: add human test plan for FSM variation harness
  • fix: regressions from cycle-1 critical fixes
  • fix(test_service_controller_export): C9 - fix TempDir lifecycle bug
  • fix(test_run_fsm_variants): C8 - use promotion ledger in cross-batch tests
  • fix(scenario_generator): C7 - implement --rephrase utterance polishing
  • fix(conductor): C6 - add warning for reactive STT placeholder
  • fix(level_3): C1+C2 - use set_verdict/flush and write complete canonical bundle
  • fix: AC5.4 hard-cap check before max_scenarios + test isolation
  • test: update Task 6 AC5.4 tests with fixture cleanup
  • scenario_generator: --rephrase flag with API key check and rephrased metadata
  • coverage_history: append per-batch rows + report tool with regression detection
  • run_fsm_variants: --level 3 dispatch + 5-scenario hard cap + required --select (AC5.4)
  • level_3: wrap air_call_conductor + auto-call /export to write service-side artifacts
  • service_controller+conductor: auto_export, /fetch_artifacts, --reactive persona-callback mode
  • scenarios: emit repair_prompt.md on L1/L2 failure via existing handoff writer
  • run_fsm_variants: use promotion ledger module for writes + cross-batch --select
  • promotion: append-only ledger module with cross-batch trajectory reconstruction
  • Fix I4: Enhance real-mode tee client test with actual event interception
  • Fix I2 and I3: test schedule_event fault injection with proper flow and synth
  • Fix M2, cost calibration, was_last_call_rewritten per-call tracking, and AC4 test gating
  • I4: Real-mode tee path test coverage for Level 2
  • M1: Clean up asyncio.new_event_loop fragility in _tools.py
  • I3: Add fault-injection test to Level 2 adapter stub mode
  • I5: Level 2 stub mode synthesizes tool_call events via synth_agent_turn
  • fix: restore 4 regressions from cycle-1 fixes
  • fix: relax test_fault_injected_schedule_event_timeout to allow empty tool_calls
  • fix: address Phase 4 code review Critical issue C6 and Important issues I1-I2
  • fix: address Phase 4 code review Critical issues C1-C5
  • scenarios: AC4.1/AC4.2/AC4.3 acceptance tests on Level 2 + fault injection
  • run_fsm_variants: --level 2 dispatch + --select required (auto-cascade disabled)
  • adapters: cal-provider swap via RIFF_USE_FAKE_CAL_PROVIDER and service-account env detection
  • level_2: real Gemini Live adapter with _TeeClient pattern, fault injection, cost tracking
  • scenarios: provider_failure behavior family template emits scenarios with faults blocks
  • level_1: wire FaultInjector into tool-call recording and FSM result delivery
  • fault_injection: stateful FaultInjector with on_call/failure_rate semantics
  • fault_injection: canonical failure shapes per (tool, mode)
  • fix: persona_fsm_state captured + dedupe initial state_trace record
  • test: add Level 1 adapter integration tests (C8)
  • test: add real assertions for terminal_unreached + tool_not_called signals (C7)
  • test: xfail two tests pending Codex architectural decision
  • fix: Address 5 independent Phase 3 issues
  • scenario_generator: diagonal round-robin so first N scenarios span N paths
  • Fix AC3 test hygiene: restore original thresholds, add monkeypatch, isolate batch-id
  • Add ScriptedScenarioStubClient to improve Level 1 adapter coverage
  • docs: Update AC3.1 test comments explaining coverage limitations
  • fix: Critical Phase 3 issues - restructure Level1Adapter for proper FSM traversal
  • scenarios: AC3.1/AC3.2/AC3.3 acceptance tests on Level 1 batch
  • tools: run_fsm_variants --level 1 orchestrator + batch summary/promotion ledger
  • coverage: aggregate per-scenario bundles into batch coverage.{json,md}
  • scenarios: Level 1 adapter drives Persona x FakeLiveClient and emits canonical bundle
  • scenarios: tool-call synthesis helper for Level 1 (caller utterance + state -> scripted tool calls)
  • verdict: end-of-conversation Sonnet judge with structured JSON output and AC3.4 discrimination
  • verdict: per-turn rule signals (menu reloop, refilled slot, capitulation evidence, etc.)
  • scenarios: canonical bundle records + BundleWriter (turns/tool_calls/state_trace/transcript JSONL + verdict.json)
  • fix: Phase 2 cycle 2 — 5 issues addressed
  • Fix scenario_generator cross-product iteration to properly round-robin families
  • Fix template and test issues: repeats_answer emits two consecutive repeat entries, correction uses distinct slot values with __corrected suffix, test_invalid_fact actually tests validation
  • Fix FSM critical issues: properly track locked-choice regressions across non-locked turns, improve menu matching with semantic analysis, add agent_terminal flag for goodbye transition, fix TurnPair backfill with dataclasses.replace, enforce capitulation test assertions
  • scenario_generator: AC2.4 error on flow with no terminal states
  • tools: scenario_generator CLI emits deterministic scenario YAMLs from paths.json
  • scenarios: behavior family templates (9 families: cooperative/vague/correction/ambiguous/out_of_set/asks_human/early_goodbye/over_informative/repeats_answer)
  • scenarios: typed Scenario schema + load_scenario for generated cases
  • caller_persona: AC2.3 replay test on air-20260509-144003 (FSM trajectory + capitulation utterance)
  • caller_persona: Persona integrator + Anthropic Haiku utterance client
  • caller_persona: AC2.1 FSM transition tests at documented thresholds
  • caller_persona: types + dual-FSM core (transition rules, no LLM)
  • fix: restore cap/warning test coverage and remove dead variables
  • path_explorer: fix cycle 2 issues (Critical-A, Important-A, Minor-A)
  • test: add loader error pinning, summary line check, and improvements
  • test: add comprehensive path validation and splice cap tests
  • fix: emit all states in graph.json, not just reachable ones
  • fix: correct spliced path generation and ensure determinism
  • path_explorer: AC1 acceptance tests on austin_plumbing + locked-choice flows + broken fixtures
  • tools: add flow_path_explorer CLI
  • path_explorer: write graph.json, paths.json, report.md
  • path_explorer: detect dead ends, unreachable nodes, cycles
  • path_explorer: enumerate bounded simple paths and classify happy/failure/loop
  • path_explorer: build FlowGraph from Flow with state and transition attrs
  • deps: add networkx>=3.0 for flow_path_explorer
  • Write FSM variation harness implementation plan
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
85 commits

Voice Harnesses and UFO Extraction Pipelines Land Together

The day split between hardening a UFO intelligence pipeline and building a reusable real-time voice QA harness. Commits added sample-first LLM extraction, manifest-backed collector regressions, Codex-reviewed plans, Gemini Live caller simulation, audit/export/preflight tooling, and scheduling flow fixes.

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

How you can apply this

  • Built sample-first LLM entity extraction with updated _parse_llm_json contracts, source-tier reuse, and summary/source-type tests; reuse this pattern when changing extractor prompts or model output shapes.
  • Hardened collector manifests with accurate log counts, always-run V1 fallback, source_url dedup regression, and a signals.json floor; apply manifest-backed assertions to catch pipeline drift.
  • Shipped a Gemini Live air-call harness with service controller, Caller Mac conductor, URL session/flow IDs, VAD-gated turn waits, and persona .env auto-load; adapt the split controller/conductor setup for voice-agent QA.
  • Added audit, export, preflight, acceptance, handoff, timing metrics, and FSM variation harness docs; reuse the verdict-and-bundle flow to make test runs reviewable.

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
riff
  • fix(scheduling): F-359 follow-up commit #2a — break the empty-prefetch loop
  • feat(flow): F-359 follow-up commit #1 — lifecycle metadata grammar
  • backlog: B-317 — build_tools tests stale after propose_booking shipped
  • feat(scheduling): F-359 — caller-confirmation marker on calendar events
  • Write FSM variation harness design plan v2
  • Add FSM variation harness design
  • Gate persona speech on addressed prompts
  • Clarify caller computer room recording artifacts
  • Mute persona mic during Live speech
  • Add Gemini Live multi-turn voice harnesses
  • feat(harness): audit emits baseline timing metrics on every verdict
  • feat(harness): seal flow_id in session_manifest + B-316 backlog
  • fix(harness): A4_service_advanced — flow-agnostic predicate
  • backlog: B-315 — directive-nudge already_asked gate is too strict
  • docs(harness): tools/README — refresh for shipped audit/AC/handoff
  • feat(harness): thread flow_id audit→handoff (iter 7 follow-up)
  • feat(harness): air_call_repair_handoff — close the A9 gap
  • feat(harness): air_call_acceptance_check — Codex P2-7 mechanical Day-1
  • fix(scheduling): B-314 — dedup speakable + choice-set by start-time
  • fix(live): B-313 v2 — gate directive nudge on caller_spoke + already_asked
  • feat(harness): controller /preflight real — Codex P2-6 audio device check
  • feat(harness): air_call_audit — Step 4 verdict generator
  • feat(harness): controller /export real — Step 3 service-side bundle
  • chore: ignore runs/ — air-call harness per-run artifacts
  • fix(harness): persona prompt — reframe scenario lines as facts, not a script
  • fix(harness): persona stays subscribed across turns (B-057 outer-loop)
  • feat(harness): persona auto-loads .env so GEMINI_API_KEY isn't required in shell
  • feat(harness): air-call Gemini Live persona — option C, replaces canned WAVs
  • fix(harness): wait for agent speech BEFORE every caller turn (incl. greeting)
  • feat(harness): VAD-gated inter-turn wait — talk-over stopgap
  • fix(harness): controller waits for URL-driven flow_id to apply before /start returns
  • feat(harness): air-call Caller Mac conductor — Step 2
  • feat(harness): air-call Service Mac controller — Step 1
  • feat(voice): air-call hooks — ?session_id= URL param + micFramesRecv counter
  • fix(phone): CSP allows ws://localhost for sidecar + B-312 verify-caller pre-send
  • docs: visual review batch (F-346 → F-358) + designs HTML bundle
67 commits

PURSUE Editorial Pipeline and Riff UI Hardening

May 8 focused on turning PURSUE from research backlog into published editorial surfaces while documenting the collector’s gaps and evidence flow. In parallel, Riff got a long hygiene pass across accessibility, metadata, shared UI primitives, workspace tokens, and regression scripts.

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

How you can apply this

  • Built the PURSUE path from IBT collector/evidence records into UFOBriefing plans, build scripts, archive pages, nav, and image-rich rendering; reuse by keeping ingest notes, review docs, media metadata, and public pages in one traceable flow.
  • Hardened Riff’s workspace UI with shared palette, button, select, scrollbar, anchor, selection, font, and empty-state primitives; reuse as a migration checklist for tokenizing older pages incrementally.
  • Added practical web hygiene in Riff: h1s, landmarks, aria labels, lang, charset, viewport, theme-color, color-scheme, referrer policy, noindex, favicon routing, and Playwright tour coverage.
  • Updated the ADR memory index to accept a custom seedsDir and return a working S3 URL; reuse by parameterizing seed input and surfacing deployable output links.

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)
riff
  • fix: S-065 it48 — favicon.svg route + F-346 file (FIRST Playwright tour)
  • chore: S-064 it47 — Check 14 producer-side token presence
  • fix(a11y): S-063 it46 — nav aria-label + Check 13
  • chore: S-062 it45 — script ergonomics (--help + count summary)
  • fix(a11y): S-061 it44 — h1 on monitor/flow-studio/editor + Check 12
  • chore: S-060 it43 — Check 11 html lang attribute
  • chore: S-059 it42 — charset utf-8 monitor + Check 10
  • chore: S-058 it41 — Check 8 (viewport) + Check 9 (theme-color/color-scheme)
  • fix(a11y): S-057 it40 — main landmark on voice/monitor/editor + Check 7
  • chore: S-056 it39 — refine hygiene script comment-context filter
  • chore: S-055 it38 — workspace hygiene regression script
  • docs: S-054 it37 — CHANGELOG v5.4 release entry for 36-iter UI polish
  • docs: S-053 it36 — write web/README.md workspace design system doc
  • fix(ui): S-052 it35 — drop dead Inter from fsm.css + entry-audio.html
  • fix(ui): S-051 it34 — body font baseline + drop dead Inter from .ops-shell
  • fix(ui): S-050 it33 — workspace button:disabled baseline
  • fix(ui): S-049 it32 — workspace ::selection primitive
  • fix(ui): S-048 it31 — F-342 close, workspace anchor color primitive
  • fix(ui): S-047 it30 — F-341 close, workspace scrollbar primitive
  • fix(ui): S-046 it29 — F-340 close, workspace <select> primitive
  • fix(security): S-045 it28 — robots noindex + referrer policy on 10 pages
  • feat(ui): S-044 it27 — theme-color + color-scheme meta on 10 pages
  • feat(ui): S-043 it26 — workspace favicon (10 pages branded)
  • fix(a11y): S-042 it25 — F-339 close, workspace prefers-reduced-motion
  • docs: S-041 it24 — file F-338 script defer migration audit
  • fix(ui): S-040 it23 — title pattern, viewport meta, charset; file F-337
  • fix(a11y): S-039 it22 — F-335 close, minimum-viable aria on 6 pages
  • fix(a11y): S-038 it21 — F-334 :focus-visible, F-336 aria-label, file F-335
  • fix(ui): S-037 it19 — ops.html chrome aliases workspace tokens; file F-333
  • docs: S-036 it18 — file F-332, autonomous loop has converged
  • fix(ui): S-035 it17 — link ops-shell.css from eval/agent/fsm
  • fix(ui): S-034 it16 — F-331 close, .riff-btn workspace primitive
  • fix(ui): S-033 it15 — extend F-324 to monitor/editor/agent + voice.html residuals; file F-331
  • fix(ui): S-032 it14 — F-324 batches 2+3, voice + choice-health tokenized
  • fix(ui): S-031 it13 — F-324 batch 1, voice.html status hex tokenized
  • fix(ui): S-030 it12 — F-330 close, eval.html status hex migrated
  • fix(ui): S-029 it11 — F-327 close, F-320 to monitor, F-330 filed
  • fix(ui): S-028 it10 — F-329 + F-326 close, lift :empty::before to shell
  • fix(ui): S-027 it9 — F-325 close + F-326/327/328/329 filed
  • fix(ui): S-026 it8 — F-320 close, workspace palette unification
  • fix(ui): S-025 it7 — F-321 close + F-320/F-322/F-323 filed
  • fix(ui): S-024 it6 — F-319 close (phase 1), calm empty states
  • fix(ui): S-023 it5 — F-318 close, panel-header concern palette
  • fix(flow-graph): S-022 it4 — F-314 close, dim non-active edges
  • fix(flow-graph): S-021 it3 — F-313 close, strip common state prefix
  • fix(ui): S-020 it2 — F-316 close, Title Case for nav tabs
  • feat(tier-b): S-019 — turn budget + hangup + LLM-as-a-judge
  • fix(ui): S-018 it1 — F-315 subtitle dedup + 4 Jobs/Ive backlog items
  • fix(flow-graph): S-017 — clean vertical spine for austin_plumbing
traceable-searchable-adr-memory-index
  • Publish: support custom seedsDir + return working S3 URL
85 commits

Iran-Intel Goes Public While Riff Builds Voice Evaluation Harness

Iran-Intel was bootstrapped from prior briefing infrastructure into a public, password-gated CloudFront site with persona panels, clickable citations, TLDRs, disclosures, and multi-voice audio. Riff advanced a Tier-B voice-agent evaluation stack with Dockerized Gemini Live tests, scripted dialogs, assertions, safety gates, failure classification, mitigation dispatch, reports, and latency tracking.

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

How you can apply this

  • Retargeted an existing briefing app into Iran-Intel by adding investigation/preset stubs, stripping stale UFO references, and sourcing homepage tiers/categories from graph_config; reuse this pattern to clone a briefing product across domains without hard-coded leftovers.
  • Built an evidence-backed panel UX with 9 personas, per-debate pages, TLDR cards/callouts, clickable ev_N citations, a /panel ToC, and multi-voice audio; apply the same structure for reusable multi-agent analysis pages.
  • Added trust and deployment guardrails: seed-mode and AI-extraction disclosures, polished empty states, password-gated CloudFront launch, deploy.sh content checks, and propagation waits.
  • Built a reusable Riff Tier-B eval harness around voice agents: Docker Gemini Live audio round-trips, scripted multi-turn dialogs, verdict.json assertions, fake calendar provider, safety gates, failure-mode classification, mitigation summaries, HTML reports, and latency tracking.

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)
riff
  • fix(mcp): bootstrap .env in MCP server entry point
  • feat(tier-b): S-016 — F-307 close, per-turn latency tracking
  • fix(tier-b-poc): S-015 — B-307 close, poc.py transcript paths use basenames
  • feat(tier-b): S-014 — self-contained HTML report rendering
  • test(tier-b): S-013 — inter-sprint validation of S-010/11/12 stack
  • feat(tier-b): S-012 — CLI mitigation summary on failures
  • feat(tier-b): S-011 — mitigation-agent dispatcher (FAMA stage 2)
  • feat(tier-b): S-010 — FAMA failure-mode classifier (foundation)
  • feat(tier-b): S-009 — B-310 fix + F-310 fake-mode E2E ACHIEVED
  • test(tier-b): S-008 — Docker re-validation of S-005/6/7 stack + B-310 filed
  • feat(tier-b): S-007 — Codex-guided safety gate + fake cal-provider
  • feat(tier-b): S-006 — F-310 foundation (cal-provider boot + booking.json) + B-309 fix
  • fix(tier-b): S-005 — _TeeClient unblocks B-308 timeout race
  • feat(tier-b): S-004 — Docker validation of driver + assertion layer
  • feat(tier-b): S-003 — assertion layer + verdict.json (F-308 SHIPPED)
  • feat(tier-b): S-002 — driver wires GeminiLiveSession + real Gemini end-to-end
  • feat(tier-b-poc): S-001 — multi-turn scripted dialog
  • docs(codex): handoff + sprint log for autonomous build loop
  • fix(tier-b-poc): switch to gTTS + add session_resumption — Docker now works
  • feat(tier-b-poc): Gemini Live 3.1 audio round-trip in Docker
  • feat(scenarios): Tier A v1 scenario runner — observer hook + ML-fallback gates + frozen time
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)
14 commits

Cleaner Extraction, Fresher Briefings, and Safer Scheduling

The day focused on hardening the intelligence briefing pipeline with better claim extraction, dedup handling, freshness ranking, and a default daily-publish path to MLX. Riff also tightened scheduling flows with templated recap lines, corrected slot-booking arguments, and safer phone startup, while UFOBriefing made summary text the main click target.

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

How you can apply this

  • Use env-var bypasses and line-protocol/no-think extraction modes to make LLM claim extraction easier to debug and less prone to template-echo failures.
  • Rank search freshness by defaulting recency from week to day, then pair it with planner-independent freshness queries for paywall-avoidance workflows.
  • Make scheduling actions pass canonical selected-slot args consistently, and boot phone providers before accepting calls to avoid runtime edge cases.
  • Turn recap copy into templated entry lines so scheduling read-backs can be reused and revised without changing core flow code.

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)
riff
  • docs: backlog from 2026-05-06 verification + booking-commit followup
  • feat(recap): templated entry.line for scheduling_read_back (Phase B-content)
  • fix(scheduling): canonical-full args in maybe_book_selected_slot (v3)
  • docs: rev 7 of recap design plan (post-codex review-6)
  • fix(scheduling): use selection arg in maybe_book_selected_slot
  • fix(phone): boot providers before accepting calls
46 commits

Briefing Pipelines Get Domain-Neutral Gap Axes and Voice Fixes

The main build generalized intelligence-briefing-toolkit’s gap diagnoser with typed gap axes, a rule registry, domain presets, CLI commands, governor migrations, docs, and regression tests for cross-domain isolation. The day also consolidated daily/nightly briefing schedules around local early-morning windows, set MLX’s default model to Qwen3.5-4B, fixed UFO pipeline analysis, improved Riff phone/live flow behavior, and cleaned RAG sprint/auth artifacts.

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

How you can apply this

  • Model domain-specific diagnosis as typed axes plus a rule registry so new domains can reuse the same gap engine without prompt leakage.
  • Ship operator-facing CLI commands and reference docs alongside refactors, making new abstractions reusable without reading internals.
  • Consolidate scheduled pipeline glue into explicit local-time windows and verify every nightly path includes required steps like analysis.
  • For realtime voice flows, tune transport behavior directly: remove Telnyx quiet_mode, shorten half-duplex tail latency, and conditionally suppress after early dispatch.

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
riff
  • fix(phone): drop quiet_mode on Telnyx so state-pushes reach Gemini
  • fix: half-duplex tail 500→200ms for phone + flow-graph happy-path layout
  • fix(flow-canonical): address codex review of Process A migration plan
  • docs: add implementation plan for flow canonical migration (Process A)
  • fix(live): conditional suppression after early dispatch — unblocks silence bug
  • feat(flow-canonical): visual convention for speak/route states + ⚠ for conflated
tool-RAG-for-split-personalities
  • chore: clean up sprint 161/188 artifacts and rotate auth gate hash
50 commits

Portable Call Review Stack and Briefing Surfaces Land

RIFF added a call-review pipeline spanning session manifests, sidecar Whisper truth, session indexes, raw artifact endpoints, and post-call audio playback, with tests for URL decoding, traversal blocking, manifests, dedupe, sorting, and empty states. The briefing projects advanced reuse-oriented planning and surfaces: intelligence-briefing-toolkit bridged signals.json into graph.json and documented domain-aware gap diagnosis, while UFOBriefing shipped home stats, /wire, /signals, and deployment infrastructure.

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

How you can apply this

  • Use append-only sidecars for ground-truth annotations so turns.jsonl stays immutable while analyzers merge truth fields at read time.
  • Package call artifacts with a manifest, sha256 metadata, and raw-file routes guarded by URL decoding and traversal tests for reusable review UIs.
  • Build post-call UX from the same session index: list sessions, handle empty states, show CT timestamps, and gate full-call audio on manifest probes.
  • Expose briefing data as reusable surfaces: bridge signals into graph JSON, then add stats, chronological wire, and pipeline-stat pages on deployed infrastructure.

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)
riff
  • docs: add test plan for call-review prod-finish
  • chore: address final review minors (test isolation + RIFF_LOGS_DIR backlog)
  • feat(post-call-ui): full-call audio player in detail view, gated on manifest probe
  • feat(post-call-ui): add #audio-player-row markup + CSS to detail view
  • test(phone): cover /api/sessions/<sid>/<file> + URL-decode + traversal + manifest
  • feat(phone): /api/sessions/<sid>/<file> serves raw artifacts (audio + manifest)
  • test(phone): cover URL-decode round-trip + path-traversal blocks for /api/post_call/<sid>
  • fix(phone): URL-decode session id before sanitize in /api/post_call/<sid>/<file>
  • test(phone): assert /api/post_call returns merged session-first shape
  • feat(phone): /api/post_call uses _list_call_sessions; honors RIFF_SESSIONS_DIR
  • docs: add call-review prod-finish design + implementation plan
  • feat(scheduling): min_advance_minutes filter for offer prefetch
  • fix(10dlc): public landing page at / so Telnyx reviewers can find ToS
  • docs: add test plan for call-review P0
  • fix: address final cross-phase code review issues
  • chore: remove redundant inline patch import (Phase 3 final cleanup)
  • fix: Phase 3 cycle 2 - address regression and missing tests
  • fix: Phase 3 code review feedback (9 issues)
  • feat(post-call-ui): inline audio per row + empty state + CT timestamps
  • test(web): cover /api/sessions endpoint + URL-decode round-trip
  • fix(post-call): URL-decode session id before sanitize
  • feat(web): /api/sessions/<sid>/<file> serves raw artifacts (audio + manifest)
  • test(post-call): cover index dedupe + sort + empty state
  • feat(post-call): list all call sessions, not just generated reports
  • fix: address Phase 2 code review findings (6 issues)
  • test(phone): verify both bench dir AND data/sessions populated on phone call
  • feat(phone): write data/sessions/<call_id>/ alongside bench dir via CallSessionRecorder
  • feat(audio): CallSessionRecorder writes data/sessions/<sid>/ + manifest
  • test(audio): cover session_manifest schema + write + partial manifest
  • feat(audio): session_manifest module — dataclass schema + sha256 + writer
  • fix: address code review feedback for Phase 1
  • fix(post-call-analyze): merge whisper truth from sidecar instead of expecting it in turns.jsonl
  • test(whisper-groundtruth): assert turns.jsonl unchanged + sidecar shape
  • refactor(whisper-groundtruth): write to sidecar, stop mutating turns.jsonl
  • test(whisper-truth): cover sidecar append-only + merge + malformed-row handling
  • feat(whisper-truth): add sidecar writer + merge reader for turn truth fields
  • docs(impl-plan): call-review P0 — turns.jsonl halt + SessionRecorder + index UI
  • fix(deps): bump vite 5→6.4.2, vitest 2→3.2.4 — close 2 dependabot alerts
  • wip: telnyx 10DLC + MCP server + nightly review + run inspector + verify-caller
  • wip: structured calendar review flow + scheduling triage + voice UI
  • docs: revise call-review plan absorbing 8 review findings
  • docs: add call-review design plan
45 commits

Dynamic Briefing Loops and Reusable UFO Portal Foundations

The intelligence briefing toolkit gained a gap-driven dynamic query loop with diagnoser, query crafting, budgeted collection, telemetry, CLI and daily-runner dispatch, project opt-ins, and regression tests. The day also hardened extraction/state handling, instrumented Riff’s flow graph UI, and spun up UFOBriefing by pruning and rebranding an inherited political portal.

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

How you can apply this

  • Build adaptive collection around explicit gaps: diagnose surname, pattern, and freshness deficits, craft deduped queries with timeouts, and stop loops on defined termination rules.
  • Make automation reusable with metadata-gated dynamic collection, targeted project runs, per-run telemetry JSON, and a canonical signals.json state file.
  • Harden scrapers by skipping known auth-walled or paywalled domains early and falling back to URL or HTML dates when extraction fails.
  • Reuse product shells deliberately: clone a proven portal, delete inherited routes/scripts, and rebrand manifest, not-found, and landing page for the new domain.

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
riff
  • ui(voice): swap FLOW GRAPH and CALL DIALOG positions
  • docs: session recap — FLOW GRAPH /loop, 8 iterations, 9.4/10
  • feat(flow-graph): kind tag on the box border + bigger boxes + smaller font
  • feat(flow-graph): write-only metrics-sink endpoint + client wiring
  • feat(flow-graph): progressive disclosure + persisted session metrics
  • feat(flow-graph): vertical fan-out for >3 spine siblings + render/click instrumentation
150 commits

Reusable Sweep Gates for Conversation Primitives and Scheduling

Riff turned conversational primitives into doc-as-spec modules backed by YAML scenario suites, invariant tests, and reusable sweep scripts across announce, choice, collect, confirm, end, reason, record, run_program, verify_caller, and book_appointment. The day also shipped book_appointment_v1 scheduling guards/provider state, flow-graph layout and zoom fixes, a Gemini 2.5 default migration, plus smaller updates for env-suffixed webhook FIFO ARNs and query_override pipeline coverage.

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

How you can apply this

  • Use doc-as-spec primitive docs plus invariant tests to make conversational module contracts executable and reviewable.
  • Reuse the YAML-driven _sweep_base runner pattern to gate behavior across scenario files and emit actionable defects.
  • Model appointment booking as a parameterized module with loader checks, guard registration, tentative/booked/error provider fields, and side-effect blocking in confirm states.
  • Improve flow editors with a three-column spine layout, SVG overlay edges, width-aware sibling spread, word wrapping, active-state auto-pan, and explicit zoom controls.

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
riff
  • fix live scheduling demo latency
  • fix(flow-graph): width-cap + word-wrap kills sibling overlap across all flows
  • fix(flow-graph): explicit zoom controls + gentler wheel + don't pan on first paint
  • feat(flow-graph): auto-pan to active state + label-noise reduction
  • fix(flow-graph): width-aware sibling spread + cyan active state
  • fix(flow-graph): right column = pure back-loop bridges, not back-edge targets
  • feat(flow-graph): three-column spine layout with SVG-overlay edges and zoom
  • fix(scheduling): lead with day on both offer prompt AND locked_choice retry message
  • fix(cal-provider): _offering_line leads with day once for same-day slots
  • fix(cal-provider): day-relative offer phrasing — today / this coming X / weekday + date
  • fix(cal-provider): _offered_slot_phrase always leads with weekday (defends "what day?" loop)
  • fix(validators): drop strict HH:MM check on 'preferred_time' (silently rejected '2pm'/'afternoon')
  • feat(book-appointment): redesign module — drop triage layer, add FETCH_OFFER, mirror filled_slots
  • fix(adapters/gemini): GeminiAdapter __init__ default → gemini-2.5-flash (missed in 007488e)
  • fix(adapters): default Gemini model to 2.5-flash everywhere (2.0-flash retired)
  • fix(flows): retire gemini-2.0-flash → gemini-2.5-flash across 13 tutorial flows
  • fix(cal-provider): _reground_line + _mirror handle DONE+offered_slots (no-confirmation)
  • docs(backlog): mark web/B-001 RESOLVED (commit 81c746b)
  • fix(web/css): scope fsm.css 'main' grid to .fsm-layout class (closes web/B-001)
  • docs(backlog): file web/B-001 (fsm.css main selector leak) + web/F-001 (landing follow-ups)
  • design(landing): Steve Jobs pass — kill SaaS card slop, promote Generate to hero
  • chore(audio): regenerate static-audio cache for tutorial_announce + tutorial_book_appointment greeting text changes
  • fix(web/nav): dark-mode CSS for top-nav (was white-on-white)
  • fix(web/nav): convert Docs <button> to <a> for cross-browser visibility
  • fix+tooling: 3 more final_status defects + reusable static audit script
  • docs(backlog): file book-appointment/B-006 (OFFER state structural gap; prompt-driven workaround in 75651a7)
  • fix(book-appointment): wire _scheduling_search_strategy + un-blank OFFER entry
  • fix(book-appointment): use JSON Schema-valid types in slot_types (date/phone -> string)
  • docs: add test plan for primitives-harden (10/10 audit ladder)
  • fix(announce,docs): add 2 edge scenarios to reach AC3.1 ≥20 + replace stale 'audit pending' note
  • docs(record): clarify I-3 wording — non-None not non-empty (links to F-4 by-design)
  • test(record): fix drop_mid_message expected_end_state (verbatim contract advances on non-empty)
  • test(record): replace stale pre-sweep speculation in scenarios header (Tier C, no seam reproduction)
  • docs(backlog): update end/B-005 to reflect 9th instance (record + Phase 6 closure)
  • docs(memory): sprint-190-record-harden capstone (closes 10/10 primitive audit ladder)
  • docs(backlog): file record-sweep findings as backlog items
  • feat(scripts): add sweep_record.py (gate)
  • test(primitives): author record.yaml (20 scenarios across 6 behavior classes)
  • flow(tutorial_record): tighten verbatim prompt; fictional business_profile
  • test(primitives): add test_record_invariants.py (I-1 no validator, I-2 verbatim prompt, I-3 first-write fires)
  • docs(record): rewrite 07-record.md to doc-as-spec template (3 Invariants, 4 Failure modes; preserves "pattern not primitive" disclaimer)
  • fix(cal-provider): clear _last_booking_error_kind on DONE (avoid stale guard collision after retry)
  • fix(book-appointment): wire propose_booking ToolSpec + populate _scheduling_offered_speakable
  • docs(memory): sprint-189-book-appointment-build capstone + Phase 5 closure
  • docs(backlog): file book_appointment-sweep findings as backlog items
  • feat(scripts): add sweep_book_appointment.py (gate; 30 scenarios; AC6.4)
  • test(primitives): author book_appointment.yaml (30 scenarios; 2 fabrication-attempt + 2 same-slot-race)
  • test(primitives): add test_book_appointment_invariants.py (I-1..I-5; I-3/I-4 xfailed pending hermetic wiring) + 2 backlog items
  • docs(book-appointment): add 10-book-appointment.md (5 Invariants, 6 Failure modes; defends B-181/144/105) + add to PARAMETERIZED_MODULES
  • flow(tutorial_book_appointment): fictional Sunny Side Tutoring microcosm; imports book_appointment_v1
  • feat(cal-provider): write _booked_event_id (DONE) and _last_booking_error_kind (ERROR) for book_appointment_v1 guards
  • feat(state-manager): register 6 guards for book_appointment_v1
  • feat(modules): add book_appointment_v1.yaml (parameterized via [[VAR]]; 9 states, 3 slot vars)
  • feat(cal-provider): write _tentative_event_id at CONFIRMING; clear at DONE (I-3 enables on-session-end cleanup)
  • feat(turn-controller): reject side-effect tool calls from speech_act:confirm states (I-2)
  • feat(loader): require business_tz when flow uses schedule_event (defends B-105)
  • docs(backlog): update end/B-005 to reflect 8 instances (was 4) and bump priority to High
  • docs(memory): sprint-188-run-program-harden capstone + backlog (T-BB49 surfaced)
  • docs(backlog): file run-program-sweep findings as backlog items
  • feat(scripts): add sweep_run_program.py (gate)
  • test(primitives): author run_program.yaml (20 scenarios across 6 behavior classes)
  • flow(tutorial_confirm_then_run_program): use final_status: booked (was off-Literal; 8th defect of this class)
  • flow(tutorial_run_program): insert Confirm gate, fix final_status Literal, demonstrate safe pattern
  • test(primitives): add test_run_program_invariants.py (4 test_iN_* tests; safety gate strict mode)
  • docs(run-program): rewrite 05-run-program.md to doc-as-spec template (4 Invariants, 5 Failure modes)
  • docs(memory): sprint-187-reason-harden capstone
  • docs(backlog): file reason-sweep findings as backlog items
  • feat(scripts): add sweep_reason.py (gate)
  • test(primitives): author reason.yaml (20 scenarios across 6 behavior classes)
  • flow(tutorial_reason): fix final_status (not in Literal) + expand architect_notes for I-3/I-4
  • test(primitives): add test_reason_invariants.py (4 test_iN_* tests)
  • docs(reason): rewrite 08-reason.md to doc-as-spec template (4 Invariants, 4 Failure modes)
  • docs(memory): sprint-186-verify-caller-harden capstone + module audit
  • docs(backlog): file verify-caller-sweep findings as backlog items
  • feat(scripts): add sweep_verify_caller.py (gate)
  • test(primitives): author verify_caller.yaml (24 scenarios across 6 behavior classes)
  • flow(tutorial_verify_caller): replace off-Literal final_status `caller_verified` with `transferred` (B-005 class)
  • test(primitives): add test_verify_caller_invariants.py (5 test_iN_* mirroring 09-verify-caller.md) + extend conftest with _isolated_provider_env
  • docs(verify-caller): rewrite 09-verify-caller.md to doc-as-spec template (5 Invariants, 5 Failure modes)
  • test(primitives): add test_module_parameterization.py (verify_caller_v1 PASSES; scheduling_v1 documented as anti-example)
  • test(collect): document I-3 customer_phone vs caller_phone gotcha (collect/B-004 reference)
  • docs(backlog): file end/B-005 (loader does not validate final_status against FinalStatus Literal)
  • flow(tutorial_collect): resolve B-XXX placeholder to B-001 (stale-slot-on-reentry)
  • docs(memory): sprint-185-collect-harden capstone
  • docs(backlog): file collect-sweep findings as backlog items
  • feat(scripts): add sweep_collect.py (gate)
  • test(primitives): author collect.yaml (24 scenarios across 6 behavior classes)
  • flow(tutorial_collect): multi-slot + validator paths; fictional business_profile
  • test(primitives): add test_collect_invariants.py (I-1 fill guard, I-2 lookahead, I-3 validator-aware guard)
  • docs(collect): rewrite 03-collect.md to doc-as-spec template (3 Invariants, 4 Failure modes)
  • docs(memory): sprint-184-choice-harden capstone
  • docs(backlog): file choice-sweep findings as backlog items
  • feat(scripts): add sweep_choice.py (gate)
  • test(primitives): author choice.yaml (22 scenarios across 6 behavior classes)
  • flow(tutorial_choice): use final_status: booked/not_booked (was yes_chosen/no_chosen, outside FinalStatus Literal)
  • flow(tutorial_choice): exercise off-list retry path; fictional business_profile
  • test(primitives): add test_choice_invariants.py (I-1 path validate, I-2 guard register, I-3 escalation required) + B-001 backlog
  • docs(choice): rewrite 02-choice.md to doc-as-spec template (3 Invariants, 4 Failure modes)
  • docs(memory): sprint-183-announce-harden capstone
  • docs(backlog): file announce-sweep findings as backlog items
  • feat(scripts): add sweep_announce.py (gate)
  • test(primitives): author announce.yaml (18 scenarios across 6 behavior classes)
  • flow(tutorial_announce): fictional business_profile + minimal chained audio path
  • test(primitives): add test_announce_invariants.py (loader rejects bad play_audio shapes)
  • docs(announce): rewrite 01-announce.md to doc-as-spec template (3 Invariants, 3 Failure modes)
  • fix(tutorial_announce): drop trailing junk text from play_audio narration
  • test(end): use guaranteed-invalid first utterance for pivot_no_then_yes_lands_success (token_subset would have matched "i'm not sure" via "sure"="yes" alias)
  • test(end): rewrite reframe pivot scenarios to use invalid-first-utterance (closes B-002)
  • test(confirm): assert _order_denied_reason also clears on state exit (full I-3 contract)
  • flow(tutorial_confirm): use final_status: booked (was 'confirmed', outside FinalStatus Literal — same F-2 instance Task 10 fixed in tutorial_end.yaml)
  • docs(scripts): correct sweep docstrings to describe session_id attribution (defect schema has no tags field)
  • docs(memory): sprint-182-end-harden capstone (B-003 microcosm escalation gap is the standout finding)
  • docs(backlog): file end-sweep findings as backlog items
  • feat(scripts): add sweep_end.py (gate)
  • test(primitives): author end.yaml (20 scenarios across 6 behavior classes)
  • flow(tutorial_end): set EndKit Demo profile; ensure escalate + complete terminals exist
  • test(primitives): add test_end_invariants.py (I-1 short-circuit, I-2 verdict, I-3 loader rejects) (+ B-001 backlog because loader doesn't enforce I-3)
  • docs(end): rewrite 06-end.md to doc-as-spec template (3 Invariants, 3 Failure modes)
  • docs(memory): sprint-181-confirm-harden capstone + B-004 (load-time validation gap)
  • docs(backlog): file B-001/B-002/B-003 from confirm sweep first run
  • feat(scripts): add sweep_confirm.py (gate)
  • test(primitives): author confirm.yaml (20 scenarios across 6 behavior classes)
  • feat(scripts): wire _sweep_base.run_sweep (cascade dialogue runner; reads defects.jsonl)
  • flow(tutorial_confirm): add revise_order loop-back so F-3 (deny without correction) is exercisable; rename business to BurgerBox
  • test(primitives): add test_confirm_invariants.py (I-1 forbid side effects, I-2 guards, I-3 clear on exit)
  • docs(confirm): rewrite 04-confirm.md to doc-as-spec template (3 Invariants, 4 Failure modes)
  • refactor(tests): drop redundant sys.path.insert from test_sweep_base
  • fix(web): redirect docs/ directory URLs to README.md?format=html when present
  • fix(tests): replace pytest.skip with return in session-scoped linter gate
  • fix(scripts): give load_scenarios a diagnostic error on empty YAML files
  • docs(flows): add /docs/flows/README.md (Tier 3 index)
  • docs(patterns): add /docs/tutorials/composition/README.md placeholder for Tier 2 patterns
  • docs(primitives): rebuild README.md as 10-card index with type and tier tags
  • web(nav): add top-nav with Docs dropdown to landing page (Primitives/Patterns/Business Flows/Versioning)
  • test(primitives): cover _sweep_base.load_scenarios validation
  • feat(scripts): add _sweep_base.py (Scenario, load_scenarios, SweepResult; YAML-driven runner)
  • test(primitives): gate test session on doc/test alignment
  • test(primitives): cover check_doc_test_alignment.py with happy + missing + orphan tests
  • feat(scripts): add check_doc_test_alignment.py linter (gates on doc/test drift)
  • docs(primitives): add VERSIONING.md (manual propagation default; CI gate deferred to ≥3 dependents)
  • docs(primitives): add doc-as-spec template (the contract every primitive doc must follow)
  • chore(memory): add backlog/primitives/ scaffold for per-primitive backlogs
  • chore(tests): add tests/primitives/ scaffold
  • fix(types): add required_tool field to StateDef (was parsed in loader but absent from dataclass)
  • docs(impl-plan): add 6-phase primitives-harden implementation plan + test requirements
  • chore(primitives-harden): import verify_caller_v1 baseline from feat/visual-editor-v1 WIP
  • docs: add primitives-harden design plan
8 commits

Briefing Pipelines Get Budgets, Recency, and Voice Reuse

The intelligence briefing toolkit was hardened for long-running daily publishing by switching backends, bounding costly steps, adding wall-clock and per-page timeouts, and preserving partial output. Collection and extraction also improved with rotating-focus recency queries, broader URL date parsing, signal/source date locking, and patched evidence rows, while riff added reusable voice modules and Telnyx audio fixes.

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

How you can apply this

  • Add hard wall-clock and per-page timeouts to data pipelines, then save partial results so stuck sources do not erase useful progress.
  • Bound expensive daily workflow stages by skipping optional verify/extend/counter passes when per-project budgets matter more than exhaustive analysis.
  • Improve freshness extraction by wiring recency-aware rotating queries and broader URL date patterns, then patch existing evidence in place.
  • Package voice behavior as reusable modules and fix provider-specific audio issues, such as Telnyx handling, for reuse across voice features.

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
riff
  • Add reusable voice modules and Telnyx audio fixes
47 commits

Launchd Briefings and Voice Workflow Blocks Land

The intelligence briefing toolkit gained a launchd-driven daily collect-to-brief-to-publish pipeline, JSON-LD publish-date extraction, smarter backfill, and recency-tiered briefs with published dates throughout. Riff added a building-block tutorial catalog and composition case studies while hardening its live voice path with choice_stt, MlxWhisperEngine, transcript_sources UI/state trace, audio persistence, timeout cleanup, and smoke tests.

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

How you can apply this

  • Automate daily research pipelines with launchd, explicit collect/brief/publish stages, and publish-date metadata from JSON-LD.
  • Order generated briefs by recency tiers and use timezone-aware published_at fields so backfills stay auditable.
  • Package workflow primitives as tutorials and compositions, such as Collect-to-Confirm and Record-to-Reason-to-CRM, for reusable app flows.
  • Add live STT incrementally with a transport tee, transcript comparison UI, persisted audio playback, real-engine smoke tests, warmup, and TTL cleanup.

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
riff
  • docs(tutorials): 🏁 CLOSING.md — cron loop ENDS at iter-20
  • docs+test: T-BB55 GOTCHAS.md + iter-19 final audit
  • docs(tutorials): T-BB60 user-action gate + T-BB20/32 callouts (iter-18)
  • docs+code: T-BB37/38/43/44 polish + T-BB56 citation audit (iter-17)
  • docs(tutorials): T-BB13 production diversity + T-BB27 tool reference
  • feat(tutorials): T-BB21 fake provider tool + T-BB45 starter flows
  • feat(flows): T-BB42 module retrofit + T-BB50 strict-mode audit
  • feat(loader): T-BB40 static safety-gate check (warn-by-default)
  • feat(tutorials): comp #4 case study + iter-13+ roadmap — phase 2 done
  • feat(tutorials): composition #3 (Record→Reason→CRM) + T-BB39 audit
  • feat(tutorials): composition #2 (Confirm→Run Program safety-gate) + B-303
  • feat(tutorials): composition #1 (Collect→Confirm) + T-BB31 retrofit
  • feat(tutorials): block #8 (Reason) + full-set retro — 8/8 blocks live
  • feat(tutorials): block #7 (Record) + T-BB24 guards example column
  • feat(tutorials): T-BB17 guards reference + block #6 (End)
  • feat(tutorials): T-BB8 index rewrite + block #5 (Run Program)
  • feat(tutorials): block #4 (Confirm) — half the catalog now live
  • feat(tutorials): block #3 (Collect) + T-BB14 cut-decision
  • feat(tutorials): block #2 (Choice) + close 3 iter-1 critiques
  • feat(tutorials): building-block tutorial framework + Announce iter-1
  • chore: checkpoint operator edits + regenerated static audio
  • feat(apartment_scheduler): swap collect_day for modular scheduling_triage
  • feat: render transcript_sources comparison live on voice.html
  • refactor(B-WC1): transcript-sources panel inline styles → CSS classes
  • fix(B-WC9): warm mlx-whisper synchronously at server boot
  • fix(B-WC8): trim leading + trailing silence before Whisper transcribe
  • test(F-WC2): real-engine smoke tests for MlxWhisperEngine — first slice
  • fix(B-WC3, B-WC5): whisper_timeout kwarg + audio TTL sweep at boot
  • fix(B-WC7): warm mlx-whisper on WS connect; fix kwarg passing
  • fix(B-WC6): timeout branch crashed s2b pump on first call after boot
  • docs(B-WC5): file TTL-cleanup follow-up for choice_stt audio persistence
  • feat(F-WC1 §11): persist captured audio + play button in State Trace
  • feat(F-WC1 Phase 2): assist-mode runtime swap when Whisper rescues
  • feat(F-WC3): MlxWhisperEngine — real Apple-Silicon Whisper for live path
  • fix(B-WC4): add bare proper nouns to apartment_choice_module examples
  • chore(start-riff): default choice_stt ON in shadow mode (F-WC1)
  • docs(B-WC4): apartment_choice_module missing bare proper nouns
  • docs(B-WC2): Whisper plan baseline — STT garble is 50% of no_matches
  • test(F-WC1): cover the transport tee path; address Steve Jobs review
  • feat(F-WC1): Phase 0.5 backend — choice_stt + transport tee + session emit
  • feat(state-trace): render transcript_sources for Whisper plan Phase 0.5
  • feat(static-audio): browser Live transport plays pre-rendered play_audio states
23 commits

Local LLM Briefings and a Reusable Flow Builder Bench

intelligence-briefing-toolkit added an MLX backend for a local Qwen3 8B LLM with install and startup health checks, plus preserved source published_at metadata in synthesized reports. riff advanced its Builder with Tier 1 block tooling, choice-route previews, test-bench logs/API docs/parity guards, responsive and accessible palette behavior, and boot/state/style fixes.

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

How you can apply this

  • Gate local MLX/Qwen3 runs with install and startup health checks so self-hosted LLM workflows fail fast.
  • Preserve published_at in report.sources so generated briefings can retain source timing for sorting, filtering, and citation.
  • Build flow editors around block palettes, block-aware inspectors, choice routes, and compiled-tier previews to make branching logic inspectable.
  • Pair builder test benches with JSONL examples, timeline parity guards, output logs, status sync, and keyboard-accessible responsive palettes.

Commits

intelligence-briefing-toolkit
  • feat: MLX backend for local LLM (Qwen3 8B); install + startup health checks
  • feat(synthesizer): preserve published_at in report.sources
riff
  • Fix choice keyword prompt compatibility
  • feat(builder): "Build L1" button — show compiled tiers per choice
  • fix(builder): side panel header was hidden behind .studio-top toolbar
  • fix(server): repair _interrupt_from_signal — orphan code blocked boot
  • feat(flows): apartment_scheduler — modern Builder block walkthrough
  • docs(builder): convergence tick — slice complete, awaiting direction
  • feat(builder): block-kind tooltips on side chip + palette state counts
  • feat(builder): bench log clear affordance + final-loop status sync
  • docs/test(builder): bench JSONL examples + timeline parity guard
  • feat(builder): bench event hygiene + timeline alt-branch parity
  • fix(B-BB1): owner chip loses styling on "gemini"; clarify bench API
  • feat(builder): bench output log + ambiguous-route warning
  • docs(builder): Test Bench API design + status sync for Codex
  • feat(builder): YAML preview disclaimer + prefer server runtime_owner
  • feat(builder): palette responsive collapse + close out F-BB1/F-BB2
  • test(builder): static contract tests + harvest 3 Codex review items
  • feat(builder-2): dimmed alternate branches + status-for-codex marker
  • a11y(builder): palette gets role=button + Enter/Space keyboard handler
  • backlog: file Codex review items (F-FW1/F-FW2/F-BB1)
  • feat(builder): block palette, block-aware inspector, choice routes, test bench (Tier 1)
  • fix(B-301): durable state-trace writer was dropping locked_choice_evaluated
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
243 commits

Terminal Ops, Log UX, and RAG Memory Land

everyone-ai shipped a deep operations polish pass: resilient web terminals, richer log streaming/search/download/copy flows, workspace/app filtering, stability indicators, and launch-state fixes. tool-RAG-for-split-personalities added complete RAG answer coverage, domain templates, conversation export/share APIs, server-side persistence, persona memory, resume UI, mobile polish, and large Playwright regression suites.

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

How you can apply this

  • Reuse xterm SearchAddon, bracketed paste, copy-on-select, reconnect buttons, and single-registered listeners to make browser terminals feel durable.
  • Expose logs as SSE streams, then layer modal search, ANSI rendering/stripping, raw-text downloads, line counts, hover previews, and click-to-copy lines on top.
  • Make ops dashboards more reusable with pinned workspaces, status filters, degraded/restart indicators, DOM caching, reduced-motion media queries, and explicit launch error states.
  • For RAG apps, pair template galleries and export/share/list/delete endpoints with server-side conversations, persona memory APIs, resume UI, and Playwright suites covering core flows.

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
  • chore: Sprint 126 summary + PM review + Sprint 127 brief
  • chore: Sprint 126 PROJECT_STATUS — preset template, preset delete, deploy timestamp, idle badge
  • Merge branch 'agentB-deploy-history-and-idle'
  • Merge branch 'agentA-preset-complete'
  • chore: auto-commit dirty files before merge (sprint 126)
  • agentA-preset-complete: implement sprint 126 tasks
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