Skip to content

docs: accuracy audit of the 89 docs-only pages; fix the example defects the reviews found - #1042

Merged
blove merged 29 commits into
mainfrom
blove/docs-accuracy-audit
Sep 6, 2026
Merged

docs: accuracy audit of the 89 docs-only pages; fix the example defects the reviews found#1042
blove merged 29 commits into
mainfrom
blove/docs-accuracy-audit

Conversation

@blove

@blove blove commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Accuracy audit of the 89 docs pages the example-first program never reviewed (every page without a running example), plus the example-app defects those reviews surfaced. Nine read-only factual reviewers audited each page against libs/, packages/, and cockpit/ source; nine fix agents applied the findings, re-verifying each cited source line before changing the page. Roughly 160 wrong or stale claims corrected; about 60 pages gained a description frontmatter; every Card icon= (rendered as literal text) and contraction removed.

Pages rewritten from source (the old page's organizing premise was wrong): a2ui/reference/parser-resolver-guards (now covers the function registry), ag-ui/api/provide-agent (both overloads, last-ref-wins rule), the backend half of ag-ui/guides/custom-events (adispatch_custom_event is the path that reaches customEvents() under ag-ui-langgraph; get_stream_writer is dropped), chat/components/chat-select (menu is portaled to a body-level container; panelClass is the styling seam), the API section of chat/components/chat, chat/getting-started/changelog (was at 0.0.52; now through 0.0.66 from tags), langgraph/api/langgraph-threads-adapter (its only example had three compile errors), langgraph/guides/testing (every spec fence was executed in a temporary vitest file before publishing), render/api/views (the ui-field detection section did not describe anything real), render/guides/lifecycle, and the walk-through sections of the three runtime quickstarts (prompts now match the shipped welcome suggestions).

Highest-impact corrections: error() is AgentError | undefined (documented as unknown or HttpErrorResponse on six pages); retry() restored to every contract table; provideChat()/CHAT_CONFIG is read by no library component (three pages presented it as required setup); the app-wide MARKDOWN_VIEW_REGISTRY override cannot work (section deleted, CHANGELOG corrected); <chat> renders no interrupt banner; the middleware quickstart skeleton could not compile (routing to a tools node that the state channel forbids in LangGraph JS — docs now use server_tools with toolsNode); peer tables now carry exact pins and the missing @threadplane/telemetry; runtime quickstarts state Python 3.12 / Node 22; CHAT_LIFECYCLE is component-scoped; signalStateStore paths need the leading slash (JSDoc fixed too).

Example apps fixed (cockpit/**): durable-execution generate no longer fabricates a user turn from the plan node; time-travel Fork now submits { checkpointId } (Replay renamed Select, since it only moved a pointer); memory graph gains add_messages and a thread-scoped docstring; repeat-loops finally emits a repeat (its e2e now adds an item and asserts a rendered row); chat/debug mounts <chat> beside the dock so a run is possible; threads renders an archived list so unarchive is reachable; aws-strands and spec-rendering prompts describe what the code does. Sixteen prompt/graph mismatches corrected (six prompts claimed an aviation dataset their graphs never bind); eleven orphaned prompt files under langgraph/streaming deleted after a repo-wide reference check. scripts/examples/serve-example.ts no longer spawns the retired cockpit project. Deployment mirrors regenerated; api-docs.json regenerated after the JSDoc fixes in libs/a2ui and libs/render.

Library defects the docs now describe truthfully (follow-up candidates, not changed here):

  • CHAT_CONFIG/provideChat() is dead weight: nothing reads avatarLabel/assistantName.
  • MARKDOWN_VIEW_REGISTRY is always shadowed by <chat-streaming-md>'s own provider; <chat> does not forward [viewRegistry].
  • clientToolsRouter()/routeAfterAgent() default toolsNode to 'tools', which LangGraph JS rejects as a node name when clientToolsChannel() is in the state.
  • AGENT_LIFECYCLE is exported but never provided; streamErrorAt().classification is always 'AgentError'; AgentLifecycleRegistry registration is construction-ordered.
  • Ref-less injectAgent() silently resolves the last ref when several provideAgent(ref, …) share an injector (both adapters).
  • FakeAgent's script option is constructor-only, unreachable through provideFakeAgent().
  • get_stream_writer output is silently dropped under ag-ui-langgraph.
  • Agent.interrupt is optional, so agent.interrupt() fails under strictNullChecks; example apps build with strict: false.
  • MockAgentTransport.emit() cannot be awaited; every spec hand-rolls a macrotask flush.
  • ContentType has a 'mixed' member the classifier never produces; messageContent() is typed against LangChain BaseMessage while consumers hold Message.
  • render: parsePointer drops segment 0 without validating the slash; element-scope lifecycle events gate on an undeclared lifecycle field; stateChange hardcodes path: '/'; ActionBinding.confirm/onSuccess/onError/preventDefault are never read; params are spread unresolved; visible is skipped on repeating elements.
  • chat-popup launcher position is hard-coded rather than tokenized.

Verification: website unit suite 1290/1290; nx run-many -t test,lint for scripts, a2ui, render, chat, langgraph, cockpit-registry all green; both deployment generators and generate-api-docs show no drift; production build renders every docs page (include counts equal tag counts on the six re-edited example pages); touched example apps build and their e2e suites pass (durable-execution, time-travel, memory, repeat-loops, threads); nx e2e website 124 passed.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Sep 6, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
threadplane Ignored Ignored Preview Sep 6, 2026 10:35pm UTC

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove enabled auto-merge (squash) September 6, 2026 22:30
blove and others added 26 commits September 6, 2026 15:30
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…on-context claims

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…er signature, the standard function set, and expand the runtime reference

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…eclared environment reference, and retire the directory label

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ract

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Installation now installs and lists @threadplane/telemetry; introduction
and quickstart describe the real recursion, visibility and internal-store
behavior; the registry, store, views, events and lifecycle pages document
what the code actually does. api/views.mdx and guides/lifecycle.mdx are
rewritten. Also fixes the signalStateStore JSDoc example, which omitted
the required leading slash on the pointer path.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… expansion and pending status

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…fallback semantics

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Covers LANGGRAPH_THREADS_CONFIG including titleFallback, the Thread
mapping, every adapter method, archivedThreads(), refreshOnRunEnd(),
and a compiling <chat-thread-list> pairing that uses threadSelected
and a consumer-owned thread-id signal.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… API pages

Custom-transport example now reports created thread ids; error() typed as
AgentError; retry()/events$/clientTools added to the neutral table; mock
error test asserts signal state instead of a rejection that never happens;
telemetry default, factory config, and multi-agent caveat corrected.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Peer table pins @threadplane/chat exactly and lists @threadplane/telemetry;
adds the note on what npm pulls in transitively; FormsModule imported where
ngModel is used; ApplicationConfig type imports added; the Python graph is
no longer attributed to a repository file it does not match.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…FECYCLE

threadPersistedAt is derived from history$, not hooked; six of eight derive;
classification is the error constructor name, so error()?.kind is the
discriminator; the library never provides AGENT_LIFECYCLE; registry must be
provided at or above the injector that calls provideAgent().

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…rface across the API pages

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ph and correct the guides

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… in getting-started and architecture

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ate-management snippets in the concepts pages

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…rrupt, template and scroll claims

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s inert on getting-started

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…token, markdown override point, adapter contract

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…uickstart walk-throughs from the shipped examples

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e export tables, add page descriptions

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…zes, drop contractions and first person

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- durable-execution: the generate node fabricated a user turn from the
  plan node's AIMessage. It now carries the newest human message forward
  alongside the answer, so the thread holds the real question.
- memory: MemoryState.messages gains an add_messages reducer (the graph
  was wiping the transcript every turn), the extraction excerpt is
  guaranteed to include the newest human turn, and the module docstring
  no longer claims cross-thread persistence for thread state.
- time-travel: Replay and Fork were byte-identical setBranch() calls.
  Replay becomes Select (what setBranch does), and Fork now submits with
  { checkpointId } so it actually starts a run from the past checkpoint.
- render/repeat-loops: the Simple List spec declared three literal Text
  elements and no repeat at all, so + Add Item changed nothing on screen.
  It is now one repeated element over /items, and the e2e adds an item
  and asserts the new rendered row.
- chat/debug: the page mounted only the devtools dock, with no composer,
  so no run could be started. It now composes <chat> beside <chat-debug>.
- chat/threads: archiving was one-way because the Unarchive action is
  built only for a list in archived mode. A second, archived-mode list
  renders when archived threads exist.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sixteen prompt/code contradictions, plus eleven orphans:

- render/state-management: get(path) returns a value, not a Signal, and
  update() takes a Record of path->value, not a callback.
- render/registry: the accessor is getEntry(name), not get(type).
- render/repeat-loops: RepeatScope fields are item/index/basePath, not
  repeatItem/repeatIndex/repeatBasePath; adds the $item/$index forms.
- render/spec-rendering: a spec is { root, elements } with capitalized
  registered type names and children as element KEYS, not a nested
  { type, props, children } tree.
- client-tools (langgraph and ag-ui): "three client tools" then listed
  five; five are registered.
- generative-ui and ag-ui/json-render: the residual "raw JSON only, no
  code fences" rule predates the render_spec tool — the spec now travels
  as that tool's arguments.
- chat/{debug,input,messages,theming,threads,timeline}: dropped the
  "10 US airports and 4 airlines" note; those graphs bind no tools and
  have no aviation dataset. It stays only where it is true.
- runtimes/aws-strands: the build spec forbade the very subagent
  delegation the backend ships; it now describes research_availability,
  the tool-less specialist, and why the native multi-agent routes are
  avoided.
- chat/a2ui and ag-ui/a2ui: these are published assets, not runtime
  prompts (both graphs use inline structured-output templates), so they
  now document how the graph routes and wraps envelopes itself.
- deleted eleven orphaned prompts under langgraph/streaming/python that
  nothing loads, references in promptAssetPaths, or ships in a
  descriptor; only streaming.md is wired.

deployments/ag-ui-dev/deps regenerated with
scripts/generate-ag-ui-deployment-config.ts.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
blove and others added 3 commits September 6, 2026 15:30
…ot exist

serve-example.ts unconditionally ran `npx nx serve cockpit --port 4201`;
there is no `cockpit` project in the workspace, so every invocation
printed a failing child and advertised a port that never answered. The
script now starts the Angular example and, when the capability declares
a pythonDir, its backend — nothing else. COCKPIT_RUNTIME_ENV existed
only to configure that child and is gone with it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… defects

- langgraph/guides/durable-execution: the generate node no longer
  fabricates a user turn, so the page says what it now carries forward
  and what the thread holds afterwards.
- langgraph/guides/time-travel: Replay is now Select, and Fork actually
  submits from the checkpoint, so the demo walkthrough, the handler
  section, and the callout describe two distinct behaviors.
- langgraph/guides/memory: the demo now declares add_messages, so the
  short-term memory paragraph states it rather than describing it in
  the abstract.
- render/guides/repeat-loops: Simple List is a real repeat now, so the
  walkthrough, the callout, and the two conditional sentences say that
  adding an item adds a rendered row.
- chat/components/chat-debug: the demo composes chat beside the dock, so
  the page drops the missing-composer framing; the graph binds no tools,
  so the prompt description no longer claims an aviation dataset.
- chat/guides/thread-routing: the demo renders a second archived-mode
  list, so archive is a round trip and the menu callout says which list
  offers Unarchive.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… MultipleChoice claim

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@blove
blove force-pushed the blove/docs-accuracy-audit branch from 728de70 to 2ddba0f Compare September 6, 2026 22:30
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove merged commit 9fbaf8f into main Sep 6, 2026
76 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