Skip to content

Add producer mode to mc-prompter: rundown, replanning rail, and evidence-gated LLM coverage (Phase C) - #6

Closed
bmadcode wants to merge 6 commits into
feat-prompter-bfrom
feat-prompter-c
Closed

Add producer mode to mc-prompter: rundown, replanning rail, and evidence-gated LLM coverage (Phase C)#6
bmadcode wants to merge 6 commits into
feat-prompter-bfrom
feat-prompter-c

Conversation

@bmadcode

Copy link
Copy Markdown
Contributor

What this is

Phase C plus the docs, PR 3 of 3 (PR 1: #4 classic teleprompter, PR 2: #5 voice-follow). This adds producer mode: a rundown file, a deterministic show-clock state machine with live replanning, rate-limited visual cues, and an opt-in local LLM (Ollama) that judges talking-point coverage under a hard evidence gate. This is the free-talk show feature: "I have 30 minutes, these 5 points in this order, an intro, and a wrap; keep me on track."

What you get

  • The rundown artifact: a markdown file with frontmatter (duration, cue density, wrap reserve) and segments that are either scripted prose (prompted normally) or bullet talking points (tracked for coverage). Spec in references/rundown-spec.md, starter template shipped through mc-setup's assets, exact time-suffix parsing that rejects rather than guesses.
  • The producer state machine (pure stdlib, fake-clock tested): GO LIVE / hold / resume / end show clock; sticky monotonic coverage where the human is always the authority; and real replanning: remaining time is redistributed across pending segments every tick with the wrap reserve protected, green/yellow/red always computed against the replan, and a "DROP: segment, or Ns each" suggestion when the math stops working. A producer that only turns red is a nag; this one re-plans.
  • The cue engine: one active cue, per-density budgets (hands-off to chatty), release at VAD pauses, attention tier for time-critical calls, 15 s expiry, broadcast vocabulary (WRAP, STRETCH, 30 seconds, OVER). The binding contract lives in references/cueing.md.
  • The Ollama tick (opt-in, [llm] lane, default qwen3:4b): structured outputs, no thinking tokens, prefix-cache-friendly prompt split, adaptive cadence that backs off under CPU pressure, and a deterministic evidence gate: every coverage claim must carry a verbatim transcript quote that (a) actually appears in the transcript and (b) relates to the point, so a hallucinated judgment cannot silently swallow a reminder. Without Ollama the deterministic rail and all time cues still work; the skill never pretends otherwise.
  • UI: the ambient rail (show clock, current segment and its replanned time, NEXT point, timing colors) on the prompter and as a transparent OBS overlay; bullets segments get a large-type talking-points view with covered points struck through; the phone remote gains a producer tab (GO LIVE, hold, end, and per-point done/skip/make-current taps); scripted-to-bullets segment handoff is manual or anchor-driven with stale-anchor protection.
  • Integration and docs: [prompter] and [llm] studio config tables with a surgical backfill for existing 1.0 studios (the 0.x classifier is untouched), an optional mc-setup interview step, an ollama row in the dependency check, Manny routing, PIPELINE.md and mc-script handoff notes, the user-guide walkthrough, README row, and TODO fast-follows.

Verification

  • 460+ unit tests green under the CI quality gate command across the module; genericity lint clean; the shipped rundown template parses under the shipped parser
  • Live end-to-end on this machine with the full real stack (nemotron ASR + qwen3:4b via Ollama): GO LIVE, voice-follow through a scripted intro, automatic segment handoff, two genuinely spoken talking points covered while a never-mentioned point was correctly left uncovered (the evidence gate blocked a persistent 0.9-confidence hallucinated claim from the real model), a DROP replan cue under overrun, and human skip/make-current overrides from the phone remote
  • Adversarial 3-lens review found 20 issues (show-clock corruption at end-show, off-air speech permanently covering points, a stale-anchor handoff cascade, the template parse failure); all fixed with regression tests, then the live end-to-end was re-run green

🤖 Generated with Claude Code

https://claude.ai/code/session_01BbneC1PckyV8vkDzhGYkpN

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3362b931-4d06-4c2c-a616-ede7f03431a1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-prompter-c

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@bmadcode bmadcode closed this Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant