Skip to content

Check code samples, unfired events, Flows and the pipecat CLI against the source - #1506

Merged
markbackman merged 2 commits into
mainfrom
docs/checker-extensions
Oct 15, 2026
Merged

markbackman merged 2 commits into
mainfrom
docs/checker-extensions

Conversation

@markbackman

@markbackman markbackman commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The read-through behind #1505 found that most high-impact errors on reference pages are things check-reference couldn't see. About half of them are mechanical, so the checker now catches them:

  • Unfired events. An event a page documents that the class registers but nothing fires: no _call_event_handler("<name>") reachable in the class or its bases (unfired-event). Pages are no longer asked to document such events. Across all 293 reference pages it reports exactly the five never-fired events Fix what a read-through of the most-edited server reference pages found #1505 removes, and no false positives.
  • Python samples, on every page except pipecat/migration/ (which shows the old API on purpose), community pages included, since their samples still call pipecat classes. For calls to pipecat classes: keywords the constructor doesn't take, required arguments left out, deprecated arguments, methods the object doesn't have, event names the class never registers (sample-*). Classes are resolved from the page's imports, or by name when exactly one pipecat class has it.
  • Flows reference pages (api-reference/pipecat-flows), with quoted and Required[...] annotations unwrapped.
  • The pipecat CLI pages (api-reference/cli/init.mdx, eval.mdx) against the Typer commands in src/pipecat/cli: flags and short forms, defaults, deprecations, commands without a section (cli-*).
  • Defaults a base __init__ fills in when a setting is unset (if not is_given(self._settings.x): self._settings.x = ...), which removes five ignore entries.

The second commit fixes what the new checks found on 36 pages: deprecated model=/voice=/voice_id= arguments moved to settings=Service.Settings(...), settings frames using delta=, VAD moved from transport params to LLMUserAggregatorParams (Fire VAD, TEN VAD, guides), arguments that don't exist (Exotel, Genesys, Cartesia speed, Deepgram vad_events), missing required arguments, and the two deprecated eval run flags marked.

The workflow runs on any .mdx change, since samples are on every page, and its comment no longer mentions the removed nightly run.

What to review

  1. Policy: the check now runs on every docs PR that touches a page, so a sample finding can block a contributor's guide edit. The update-docs bot's reviewer fixes every finding on pages it edits, so bot PRs will also fix samples on guide pages they touch.
  2. The import-less resolution heuristic: a sample that uses TransportParams without importing it is still checked as TransportParams. It caught the Speechmatics and VAD samples, and produced no false positives here.
  3. Content choices beyond the finding: eval samples use CartesiaHttpTTSService instead of RimeHttpTTSService (Rime requires an aiohttp_session a factory has nowhere to own; pipecat's eval helpers use Cartesia); pipecat-flows/types.mdx drops the RESET_WITH_SUMMARY example; the Exotel guide sample loses account_sid/api_key/api_token, which the serializer doesn't take; the Fire VAD and TEN VAD samples no longer build a transport.

Testing

  • python3 scripts/check-reference.py --pipecat <pipecat main>: 0 findings on 535 pages; three "Before" halves of migration samples are recorded in the ignore list
  • Planted a renamed flag, a dropped short flag and a wrong default in eval.mdx: each reported
  • node scripts/check-imports.mjs, node scripts/docs-meta-lint.mjs, npx mint broken-links --check-anchors --check-redirects: clean

🤖 Generated with Claude Code

… the source

scripts/check-reference.py now also:
- checks Python samples on every page (except the migration guides) for
  keywords a pipecat constructor doesn't take, required arguments left
  out, deprecated arguments, methods called on objects that don't have
  them, and event names a class never registers
- reports events a page documents that nothing fires, and no longer
  asks pages to document those
- covers api-reference/pipecat-flows (quoted and Required[] annotations
  are unwrapped)
- compares api-reference/cli/{init,eval} with pipecat's Typer commands:
  flags, short forms, defaults, deprecations, missing commands
- reads defaults a base __init__ fills in when a setting is unset

The workflow runs on any .mdx change, since samples live on every page,
and no longer refers to the nightly run.
- deprecated constructor arguments (model=, voice=, voice_id=,
  image_size=) moved to settings=Service.Settings(...)
- settings frames use delta= instead of settings= or bare keywords
- VAD moved from transport params to LLMUserAggregatorParams on the
  VAD, Exotel, Genesys and guide pages; removed options dropped
- required arguments added (FastAPIWebsocketTransport websocket,
  RimeHttpTTSService session, replaced by Cartesia as pipecat's eval
  helpers use)
- the deprecated eval run flags marked deprecated
@markbackman
markbackman force-pushed the docs/checker-extensions branch from 65cf93c to ee90c54 Compare October 15, 2026 02:03
@markbackman
markbackman changed the base branch from docs/readthrough-fixes to main October 15, 2026 02:03
@github-actions

Copy link
Copy Markdown
Contributor

🔍 Mintlify preview for this branch: https://daily-docs-checker-extensions.mintlify.site

@markbackman
markbackman merged commit 03c1966 into main Oct 15, 2026
6 checks passed
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