Verification of the ETS27 research documents

Adversarial check of research/claude-wiring.md and research/genui-landscape.md, carried out on 2026-10-13. Every concrete, checkable claim was tested against an authoritative source. Verdicts are "confirmed", "wrong" or "unverifiable"; nothing is marked confirmed from memory.

Method

Results in brief

107 claims checked: 99 confirmed, 7 wrong, 1 unverifiable. The 7 wrong claims are corrected in place (17 line edits, listed at the end).

  1. Claude Sonnet 5.5 cache reads cost $0.10 per MTok, not $0.20. The bundled skill still says $0.20; the live pricing page ("0.05x the base input price") and the Sonnet 5.5 migration guide ("$0.10 USD per million tokens, half the Claude Sonnet 5 rate") say $0.10. Every Sonnet figure in the wiring doc's cost model changed: $0.0729 per 8-turn session at low (was $0.0815) and $0.1326 at medium (was $0.1425).
  2. Claude Haiku 5.5 (claude-haiku-5-5) was released on 2026-10-07, after the skill's model table was cached. It is the current Haiku ($0.10 / $0.50 per MTok for prompts up to 100,000 tokens, "Fastest", structured outputs, 512-token cache minimum), and Claude Haiku 4.5, the wiring doc's router, is now listed as a legacy model. A note was added to the wiring doc; the router design was not changed.
  3. Two cost-model statements were wrong even at the doc's own prices. Cost is close to linear in the number of turns, not quadratic (each doubling of turns multiplies cost by 2.08 on Opus 5.5 at low). Caching saves 69% at low but 58% at medium, not "65 to 69%" across the board.
  4. One overclaim in the landscape doc. GitHub code search for "Open-JSON-UI" returns about 480 matches, many in third-party repositories, not only CopilotKit and ag-ui-protocol. The conclusion still holds: there are no matches in any OpenAI organization repository.
  5. Everything else held up. The wiring doc's code compiles under strict with 0 errors and passes 19 of 19 tests in the clean-room rebuild. All four SDK pitfalls are confirmed in the 0.133.0 sources, and pitfall 3 was reproduced independently. Every version, publish date, star count, licence and redirect in the landscape doc matches the registries, and every quoted sentence that could be checked matches its source.

Claim table

Claim File Verdict Source Correction
W1. @anthropic-ai/sdk 0.133.0 is the latest npm release; built with zod 4.6.7 and TypeScript 5 claude-wiring.md confirmed npm: latest 0.133.0 (published 2026-10-09); zod latest 4.6.7 None (TypeScript's own latest is 7.0.2; the doc only claims TypeScript 5, which was used)
W2. The doc's TypeScript compiles under tsc --strict with 0 errors claude-wiring.md confirmed Clean-room rebuild from the doc's code blocks; tsc -p (strict) exit 0 None
W3. 19 offline tests (7 reader, 9 concierge, 3 route) pass with no network claude-wiring.md confirmed Clean-room rebuild, node --test: 19 pass, 0 fail None
W4. Every code block is a verbatim copy of the tested files claude-wiring.md confirmed Extracted blocks diffed against the author's harness: identical apart from the added // Source: comment lines None
W5. The wire JSON shown for agenda_day is zod 4's converter output with $schema removed claude-wiring.md confirmed Printed from MIND_FORMAT: byte-identical; the union is emitted as anyOf, enum and const are present None
W6. Opus 5.5: claude-opus-5-5, $4 / $20, cache read $0.20, cache writes $5 (5 min) / $8 (1 h), 1M context claude-wiring.md confirmed SKILL.md Current Models; shared/model-migration.md (Opus 5.5, What carries over: pricing); live pricing page None
W7. Sonnet 5.5: claude-sonnet-5-5, $2 / $10, cache writes $2.50 / $4, 1M context claude-wiring.md confirmed SKILL.md; shared/model-migration.md (Sonnet 5.5); live pricing page None
W8. Sonnet 5.5 reads the cache at "the same $0.20 per MTok" as Opus 5.5 (1.1 matrix, eval-judge row, 1.2) claude-wiring.md wrong Live pricing page: $0.10 per MTok, footnote "Cache hits and refreshes on Claude Opus 5.5 and Claude Sonnet 5.5 are priced at 0.05x the base input price"; live Sonnet 5.5 migration guide: "$0.10 USD per million tokens, half the Claude Sonnet 5 rate". The skill (cached 2026-09-25) is stale here Corrected to $0.10 in 1.1 (two rows) and 1.2; source note added under 1.1
W9. Haiku 4.5: $1 / $5, 200K context, rejects effort, no thinking by default, supports structured outputs, 4,096-token cache minimum; a 600-token router call costs about $0.0007 claude-wiring.md confirmed SKILL.md (Current Models; Thinking & Effort); shared/tool-use-concepts.md (Structured Outputs: supported models); shared/prompt-caching.md (minimum prefix table); 600 × $1 + 20 × $5 per MTok = $0.0007 None
W10. The IDs in 1.1 are the current generation (1.3: "The exact IDs in 1.1"), so claude-haiku-4-5 is the current Haiku claude-wiring.md wrong Live models overview and Haiku 5.5 page: Claude Haiku 5.5 released 2026-10-07, "Fastest", $0.10 / $0.50 per MTok up to 100,000-token prompts; Claude Haiku 4.5 listed under legacy models Note added to 1.2; design unchanged
W11. Opus 5.5 thinking is always on; disabled and budget_tokens return 400 at every effort; default effort is medium, one level below earlier Opus models claude-wiring.md confirmed SKILL.md Thinking & Effort; shared/model-migration.md (Opus 5.5, breaking change 1 and effort section) None
W12. Opus 5.5 is "much less likely than Claude Opus 5 to state a figure or cite a source the inputs don't support" claude-wiring.md confirmed shared/model-migration.md line 2040, verbatim None
W13. For time to first token: effort low, optionally the line "Answer directly without deliberating.", measured before shipping claude-wiring.md confirmed shared/model-migration.md line 1888; live Prompting Claude Opus 5.5 guide None
W14. Sonnet 5.5 effort defaults to high with recalibrated levels; at low it "skips thinking on most simple requests"; from medium it "thinks briefly before almost every reply, even a greeting" claude-wiring.md confirmed shared/model-migration.md line 2180, verbatim None
W15. between_tools turns thinking off on a tool-free route; only at effort high or below; no other field in thinking; no per-message effort; other models reject it; a server-side fallback to Sonnet 5 runs with thinking disabled claude-wiring.md confirmed shared/model-migration.md (Sonnet 5.5 breaking change 1; Safeguards and fallback); live thinking page and Sonnet 5.5 migration guide ("Without tools, the response contains only text") None
W16. Sonnet 5.5 server-side fallback: "default" form only, Claude API only, retries only cyber and frontier_llm; its target, Sonnet 5, rejects mid-conversation system messages claude-wiring.md confirmed SKILL.md; shared/model-migration.md line 2185; live Sonnet 5.5 migration guide; shared/prompt-caching.md (mid-conversation system messages: not Sonnet 5) None
W17. Caches are model-scoped; a model switch invalidates everything and drops thinking blocks the new model cannot read claude-wiring.md confirmed shared/prompt-caching.md Invalidation hierarchy; shared/model-migration.md (Opus 5.5 and Sonnet 5.5, breaking change 3) None
W18. "What not to send" table: forced tool_choice is a 400 (also on count_tokens and Batches); prefill is a 400; sampling parameters are a 400 on Opus 5.5 and non-default values on Sonnet 5.5; output_format is deprecated; citations with structured outputs are a 400; fallbacks is rejected on Batches; no Priority Tier on Opus 5.5 or Sonnet 5.5 claude-wiring.md confirmed SKILL.md (Common Pitfalls; Thinking & Effort; Citations; Fast Mode section); shared/model-migration.md line 1415; shared/tool-use-concepts.md Structured Outputs None
W19. Changing model, top-level effort, thinking or the output format mid-session invalidates the messages cache claude-wiring.md confirmed shared/prompt-caching.md Invalidation hierarchy; shared/cost-optimization.md §2.1 ("setting or changing a structured-output format"); live structured-outputs page None
W20. A max_tokens: 0 pre-warm is rejected with stream: true and with output_config.format claude-wiring.md confirmed shared/prompt-caching.md Pre-warming, rejected combinations None
W21. Batches are 50% off every token including cache reads and writes; on knowledge work low gives up a few points for a third to a half off; a one-case difference is noise claude-wiring.md confirmed shared/cost-optimization.md §2.5 and §2.6 None (§2.6 describes a same-model effort sweep; a model-by-effort grid is the hillclimb pattern noted in §2.7)
W22. The whole effort sweep costs under $20 (about $9.40 quality, $5.20 latency, $1.50 judge) claude-wiring.md confirmed Recomputed: 5 cells × 20 cases × 5 trials through Batches with no cache hits = $9.35 to $9.50; the latency and judge figures are plausible estimates None
W23. Recent Opus models "reach for tools more conservatively"; Sonnet 5.5 "sometimes answers from its own knowledge" claude-wiring.md confirmed shared/tool-use-concepts.md line 38; shared/model-migration.md line 2200 None
W24. Structured outputs reject recursive schemas, accept enum, const and anyOf, and have no array-size constraints claude-wiring.md confirmed shared/tool-use-concepts.md Structured Outputs; live structured-outputs page (only minItems of 0 or 1 is accepted, so maximum counts must live in the prompt) None
W25. An explicit 1-hour breakpoint on the system block followed by a 5-minute automatic tail is an allowed order claude-wiring.md confirmed shared/prompt-caching.md Automatic vs explicit breakpoints ("a 1-hour marker with a 5-minute tail, is allowed") None
W26. Mid-conversation system messages need no beta header on Opus 5.5 and Sonnet 5.5, are accepted by the Opus fallback targets (Opus 5, Opus 4.8), form the prompt-injection-safe operator channel, follow the placement rule, and fall back to a user-turn block on models without them claude-wiring.md confirmed SKILL.md Mid-Conversation System Messages; shared/prompt-caching.md Mid-conversation system messages None
W27. The fallbacks parameter exists only on the beta namespace claude-wiring.md confirmed SDK 0.133.0 types: fallbacks?: appears only in the beta messages.d.ts; TypeScript README Refusal Fallbacks uses client.beta.messages None
W28. On Opus 4.8 an omitted thinking means no thinking; display defaults to "omitted"; display affects visibility, not billing claude-wiring.md confirmed SKILL.md Thinking & Effort None
W29. Fallback semantics: "default" routes by refusal category (Opus 5 example: cyber to Opus 4.8); the array form needs server-side-fallback-2026-06-01 and cross-pairing is a 400; Opus 5.5 targets come from allowed_fallback_models ("expect Claude Opus 5 / claude-opus-4-8"); reasoning_extraction is not retried; message_start names the fallback model and time to first byte includes the declined attempt; a mid-stream fallback block passes only text on; fallback_message in usage.iterations; top-level model; sticky routing for about an hour; the echo rule; a final refusal means the whole chain declined claude-wiring.md confirmed shared/model-migration.md lines 990 to 1004 and 1408 to 1425, Opus 5.5 Safeguards; TypeScript README Refusal Fallbacks None
W30. Legitimate security work can go to Anthropic's Cyber Verification Program claude-wiring.md confirmed shared/model-migration.md (Sonnet 5.5 Safeguards); live Prompting Claude Opus 5.5 guide None
W31. Pitfall 1: the betaZodOutputFormat parse hook makes finalMessage() throw "Failed to parse structured output" on a split or truncated answer claude-wiring.md confirmed SDK lib/beta-parser.js parses each text block and throws AnthropicError; the doc's test passes in the rebuild None
W32. Pitfall 2: the SDK schema transform keeps only type, anyOf/allOf (oneOf becomes anyOf), properties, required, additionalProperties, $ref/$defs, title, description, listed string formats and minItems 0 or 1, and folds enum and const into description claude-wiring.md confirmed SDK lib/transform-json-schema.js, used by helpers/zod.js and helpers/beta/zod.js None
W33. Pitfall 3: the stream's async iterator does not replay events; iterating late yields 0 events and never returns claude-wiring.md confirmed SDK BetaMessageStream subscribes when iteration starts; independent reproduction with a mocked fetch: 0 events and no return after 1.5 s, with both 0 ms and 200 ms delays None
W34. Pitfall 4: an aborted stream with no listener raises an unhandled rejection claude-wiring.md confirmed SDK lib/BetaMessageStream.js calls Promise.reject when no error listener or catching promise exists None
W35. APIConnectionError and APIUserAbortError extend APIError; APIConnectionTimeoutError extends APIConnectionError; 5xx including overloaded maps to InternalServerError claude-wiring.md confirmed SDK core/error.js; shared/error-codes.md line 240 None
W36. TypeScript timeout is in milliseconds (default 10 minutes); maxRetries defaults to 2 and retries 408, 409, 429, 5xx and connection errors; worst case is timeout × (retries + 1); retries happen before streaming starts claude-wiring.md confirmed SKILL.md Client config; SDK client.js (shouldRetry) and core/streaming.js (SSE error events are thrown, not retried) None
W37. max_tokens: about 64,000 by default when streaming, lower for "cost caps" and "deliberately short outputs"; a max_tokens stop is a failed attempt claude-wiring.md confirmed SKILL.md Common Pitfalls; shared/cost-optimization.md §2.4 None
W38. The router uses client.messages.parse with zodOutputFormat from @anthropic-ai/sdk/helpers/zod; an out-of-enum verdict fails zod validation, parse throws and the router fails open claude-wiring.md confirmed typescript/claude-api/tool-use.md lines 566 to 594; SDK lib/parser.js and helpers/zod.js None
W39. Preserved thinking: accounts created on or after 2026-08-31 are enforced, Opus 5.5 on every platform and Sonnet 5.5 on the Claude API and Amazon Bedrock; staging can set block_binding.prefix_mismatch_behavior: "error" under thinking-binding-controls-2026-08-01 claude-wiring.md confirmed shared/model-migration.md (Opus 5.5 and Sonnet 5.5, breaking change 3); shared/error-codes.md line 127 None
W40. Prompt caches are isolated per workspace claude-wiring.md confirmed shared/prompt-caching.md API reference None
W41. The skill documents no new retention requirement for Opus 5.5 or Sonnet 5.5; the 30-day requirement applies to the Fable models claude-wiring.md confirmed shared/model-migration.md (Opus 5.5: "Data retention / ZDR: nothing new is documented"); SKILL.md (Fable 5.1) None
W42. The 91 speaker records fit one page at per_page=100 claude-wiring.md confirmed REST response headers captured 2026-10-13 07:18 GMT (x-wp-total: 91); WordPress REST handbook ("per_page is capped at 100"). A fresh curl today was blocked by Cloudflare (403) None
W43. A cold write of the system block costs 9,000 × $8 per MTok = $0.072 on Opus 5.5 and $0.036 on Sonnet 5.5; 150 a month cost $10.80 and $5.40 claude-wiring.md confirmed Recomputed None
W44. ΣR = 8S + 28U + 21O and ΣW = 8U + 7O, giving 86,770 / 4,870 / 5,200 tokens at low and 99,370 / 9,070 / 10,000 at medium claude-wiring.md confirmed Recomputed by script None
W45. Opus 5.5 costs: $0.1457 and $0.2652 per session; the turn 1 and turn 8 examples; the no-caching column; monthly totals $162.10 / $1,523.84 / $7,576.00 at low and $281.62 / $2,719.04 / $13,552.00 at medium claude-wiring.md confirmed Recomputed by script; Opus prices match the live pricing page None
W46. Sonnet 5.5 costs: $0.0815 and $0.1425 per session and the monthly totals built on them claude-wiring.md wrong The arithmetic is right for $0.20, but the rate is $0.10 (W8). Recomputed: $0.0729 and $0.1326 per session; monthly $83.85 / $789.92 / $3,928.00 at low and $143.61 / $1,387.52 / $6,916.00 at medium Corrected in the decisions table, 4.2 and 4.3
W47. "Output is 64 to 75% of the bill across the four configurations" claude-wiring.md wrong With the corrected Sonnet rate, output is 71% at low and 75% at medium on both models Corrected in 4.4
W48. "Caching is already worth 65 to 69%" claude-wiring.md wrong Caching saves 69% at low but 58% at medium on both models; even at the doc's own prices the medium rows were 55% to 58% Corrected in 4.4
W49. "Cost grows roughly with the square of the turn count, because each turn re-reads all earlier ones" claude-wiring.md wrong Recomputed on Opus 5.5 at low: 4 turns $0.0702, 8 turns $0.1457, 16 turns $0.3034 (×2.08 per doubling); the quadratic re-read term is 2% of an 8-turn session. The skill's "square" remark (shared/cost-optimization.md §2.1) is about long agent loops where history dominates Corrected in 4.4
W50. Fast mode: Opus 5.5 but not Sonnet 5.5, Claude API only, $8 / $40, up to 2.5× output speed, beta fast-mode-2026-02-01 with speed: "fast"; switching speed invalidates the cache claude-wiring.md confirmed SKILL.md Fast Mode; live pricing page None
W51. Cache diagnostics (beta cache-diagnosis-2026-04-07, diagnostics.previous_message_id), the standing cache check, the healthy-loop signature and usage.cache_creation.ephemeral_1h_input_tokens claude-wiring.md confirmed SKILL.md Common Pitfalls; shared/prompt-caching.md Verifying cache hits None (shared/cost-optimization.md notes the live page no longer requires the header)
W52. The smoke test costs about $0.10; a 20-case, 5-trial batch pass costs about $1 to $2.50 on Opus 5.5 at low claude-wiring.md confirmed Recomputed: a cold 1-hour write ($0.072) plus two turns is about $0.10; 100 batch requests with no cache hits cost $2.46 None
W53. usage.output_tokens_details.thinking_tokens and usage.iterations exist on the beta usage type claude-wiring.md confirmed SDK 0.133.0 beta messages.d.ts; the code that reads them compiles None
W54. Server-side fallbacks are required by the skill for these models and are switched on claude-wiring.md confirmed SKILL.md (refusal stop reason: include fallbacks by default for claude-opus-5-5 and claude-sonnet-5-5) None
G1. A2UI moved from github.com/google/A2UI to github.com/a2ui-project/a2ui (301); about 16.7k stars; Apache-2.0; README says "Early stage public preview" and its roadmap still lists React as planned genui-landscape.md confirmed GitHub API (16,675 stars, Apache-2.0); HTTP 301; repository README None
G2. a2ui.org: v0.9.1 current production, v1.0 release candidate ("previously v0.10 in draft", no final date), v0.8 legacy; the "render natively across web, mobile, and desktop" tagline genui-landscape.md confirmed a2ui.org; a2ui.org/specification/v1.0-a2ui/ None
G3. @a2ui/react and @a2ui/lit 0.13.0 and @a2ui/angular 0.12.0, last published 2026-10-09 genui-landscape.md confirmed npm registry (2026-10-09, 17:31 to 17:32 UTC) None
G4. v0.9.1 messages: version plus one of createSurface (surfaceId, catalogId, optional theme, sendDataModel), updateComponents, updateDataModel (path, value), deleteSurface; adjacency list with one root; action and error messages; supportedCatalogIds and inlineCatalogs; JSONL; rendering starts once root exists; the "prompt-first" quote genui-landscape.md confirmed a2ui.org/specification/v0.9.1-a2ui/ None
G5. The basic catalog has 18 named components plus validation and formatting functions, and its schemas use external $ref and allOf genui-landscape.md confirmed Raw catalog.json: the 18 names match; 14 functions; allOf and external https://a2ui.org/...common_types.json references present None
G6. Transport bindings: A2A, AG-UI, MCP, SSE with JSON-RPC, WebSockets and REST genui-landscape.md confirmed v0.9.1 specification ("Other transports"); the README lists only A2A, AG-UI and REST (future) None
G7. An experimental plain-text "Express" grammar compiles to the A2UI tree genui-landscape.md confirmed specification/inference_formats/express holds Express.g4 None (the folder itself does not carry an "experimental" label)
G8. v1.0 adds typed function calls both ways, whole-surface creation in one message, branding deferred to the host theme and stricter identifier rules genui-landscape.md confirmed a2ui.org/specification/v1.0-a2ui/ None
G9. Renderers: React, Lit, Angular and Flutter stable for v0.8 and v0.9.1; Compose alpha; SwiftUI planned; json-render and React Native among community renderers genui-landscape.md confirmed a2ui.org/reference/renderers/ None
G10. A2UI is shipped by Google "with contributions from CopilotKit and the community" genui-landscape.md unverifiable The README invites contributions and links CopilotKit's A2UI runtime, but does not say CopilotKit contributed None
G11. AG-UI: the "open, lightweight, event-based protocol" definition; "AG-UI is not a generative UI specification"; born from CopilotKit's partnership with LangChain and CrewAI genui-landscape.md confirmed docs.ag-ui.com/introduction; /concepts/generative-ui-specs None
G12. ag-ui repository: MIT, about 16.5k stars, date-tagged releases several times a week genui-landscape.md confirmed GitHub API (16,494 stars, MIT); releases release/2026-10-12, -10-10, -10-09, -10-08, -10-06 None
G13. @ag-ui/core 1.0.0 published 2026-09-17 and 1.0.2 on 2026-10-05 genui-landscape.md confirmed npm registry None
G14. The 1.0 specification is normative (BCP 14) with the JSON Schema authoritative for structure; "Model output is untrusted input… MUST NOT render streamed content as executable markup" genui-landscape.md confirmed docs.ag-ui.com/spec/1.0/index None
G15. Eight event families; the event names; RUN_FINISHED with an optional outcome including interrupt and cancelled; STATE_DELTA as RFC 6902; the activity quote genui-landscape.md confirmed /concepts/events (8 categories; the docs count "Draft" as one and list reasoning events separately); /spec/1.0/changelog (success, interrupt, cancelled); /spec/1.0/events/activity (quote verbatim) None
G16. Run input carries threadId, runId, messages, tools, context, state and forwardedProps; frontend tools return in the next run genui-landscape.md confirmed /spec/1.0/basic/run-input (also lists protocolVersion, parentRunId, resume) None
G17. HTTP POST answered by SSE, one protocol event per data payload, no resumption; length-prefixed protobuf alternative genui-landscape.md confirmed /spec/1.0/basic/transports/http-sse; /spec/1.0/changelog ("4-byte length-prefixed frames") None
G18. A draft extension proposes a generateUserInterface tool; a draft continues past 1.0 genui-landscape.md confirmed docs.ag-ui.com/drafts/generative-ui ("Status: Draft"); the events page has a "Draft Events" category None
G19. SDKs: TypeScript and Python first-party, .NET documented, community SDKs for Kotlin, Go, Dart, Java, Rust, Ruby and C++ genui-landscape.md confirmed /introduction (it groups .NET with the community SDKs) None
G20. Integrations include Microsoft Agent Framework, Google ADK, AWS Strands and Bedrock AgentCore, Mastra, Pydantic AI, LlamaIndex, LangChain and CrewAI; the Claude Agent SDK and Claude Managed Agents as community integrations genui-landscape.md confirmed /introduction None
G21. MCP Apps: SEP-1865, io.modelcontextprotocol/ui, ui://, text/html;profile=mcp-app, _meta.ui.resourceUri, _meta.ui.csp, a separate-origin sandbox proxy for web hosts, JSON-RPC 2.0 over postMessage, visibility of "model" or "app"; status "Stable (2026-01-26)"; MCP-UI and OpenAI's Apps SDK as inspirations genui-landscape.md confirmed ext-apps specification/2026-01-26/apps.mdx None
G22. MCP Apps is "the first official MCP extension"; at launch VS Code support was in VS Code Insiders genui-landscape.md confirmed blog.modelcontextprotocol.io, 2026-01-26 post None
G23. Proposed 2025-11-21 by MCP maintainers with authors from Anthropic, OpenAI and MCP-UI genui-landscape.md confirmed blog.modelcontextprotocol.io, 2025-11-21 post (author list) None
G24. @modelcontextprotocol/ext-apps 2.0.0 (2026-09-08) moved to the MCP TypeScript SDK 2.0 packages with the wire protocol unchanged; 2.0.3 current; MIT SDK genui-landscape.md confirmed npm registry; ext-apps README ("The wire protocol is unchanged between ext-apps 1.x and 2.x") None (GitHub reports the repository licence as NOASSERTION; npm says MIT)
G25. Clients listed: ChatGPT, Claude, VS Code, Goose, Postman, MCPJam, mcp-use and Alpic Playground genui-landscape.md confirmed ext-apps README None
G26. Anthropic's "Interactive connectors and MCP Apps" post (2026-01-26) states availability on Claude "mobile, web and desktop for Free, Pro, Max, Team, Enterprise plans" and on Claude Cowork genui-landscape.md confirmed claude.com/blog/interactive-tools-in-claude (<title> and og:title match; the H1 reads differently) None
G27. OpenAI: "ChatGPT implements the open MCP Apps standard for UI returned by an MCP server"; window.openai keeps aliases and ChatGPT-only extras (checkout, files, modals, widget state); developers.openai.com/apps-sdk redirects to /plugins genui-landscape.md confirmed developers.openai.com/plugins/build/chatgpt-ui; HTTP 301 from /apps-sdk to /plugins None
G28. AG-UI lists Open-JSON-UI with origin "OpenAI" ("An open standardization of OpenAI's internal declarative Generative UI schema"); CopilotKit's page redirects to its A2UI page; CopilotKit's example payload is labelled "illustrative" genui-landscape.md confirmed docs.ag-ui.com/concepts/generative-ui-specs; redirect chain ends at docs.copilotkit.ai/generative-ui/a2ui; CopilotKit/generative-ui README None
G29. "GitHub code search returns references only in the CopilotKit and ag-ui-protocol repositories" (also the summary's "appears only in CopilotKit and AG-UI documentation" and the sources-table row) genui-landscape.md wrong GitHub code search, 2026-10-13: about 480 matches, including third-party repositories such as skeehn/ui-schema, CSmithy89/ultimate-ai-rag and ypyl/ypyl.github.io; 0 matches in org:openai and org:openai-labs Corrected in 3 places; the "no OpenAI publication" conclusion stands
G30. ChatKit widgets: a WidgetRoot (Card or ListView) holding WidgetNode components, designed in Widget Builder, with actions handled by your backend genui-landscape.md confirmed developers.openai.com/api/docs/guides/chatkit-widgets None
G31. assistant-ui: "components, runtimes, and primitives for building AI chat interfaces in React, Vue, React Native, and the terminal"; MIT; about 12.5k stars; @assistant-ui/react 0.15.28; adapters for the AI SDK, LangGraph, LangChain, Google ADK, AG-UI and A2A genui-landscape.md confirmed assistant-ui.com/docs; GitHub API (12,503 stars, MIT); npm None
G32. @assistant-ui/generative-ui 0.0.3 (2026-10-12): a present tool, _type naming a component, children for nesting, streamProperties: true with $status "streaming" or "done", an A2UI converter over AG-UI genui-landscape.md confirmed npm (2026-10-12 00:03 UTC); assistant-ui.com/docs/tools/generative-ui None (the toolkit name JSONGenerativeUI was not seen on the fetched page)
G33. Thesys: "OpenUI Cloud — Formerly C1 API"; docs.thesys.dev redirects to openui.com/docs; thesysdev/crayon redirects to thesysdev/openui genui-landscape.md confirmed thesys.dev HTML contains "Formerly C1 API"; HTTP 308 and 301 redirects None
G34. OpenUI calls itself "the open standard for Intelligent UI"; MIT; about 10.8k stars; OpenUI Lang is "a compact, line-oriented language" (root = Stack([chart])); React, Vue, Svelte and Angular runtimes drop invalid portions genui-landscape.md confirmed openui.com/llms.txt; openui.com/docs/openui-lang; GitHub API (10,821 stars, MIT) None (the GitHub README words it as "Generative UI" and "streaming-first")
G35. @openuidev/react-lang and @openuidev/lang-core 1.0.0 published 2026-10-12; @openuidev/a2ui adds A2UI v1.0 support genui-landscape.md confirmed npm registry; llms.txt ("A2UI v1.0 protocol support") None
G36. "Up to 67% fewer tokens than JSON"; 52.8% fewer than json-render and 51.7% fewer than Thesys C1 JSON (vendor numbers) genui-landscape.md confirmed thesysdev/openui README; confirmed as vendor claims only None
G37. OpenUI Gateway: OpenAI-compatible endpoints, correction of invalid OpenUI Lang while it streams, bring-your-own OpenAI, Anthropic or Google key genui-landscape.md confirmed openui.com/llms.txt (BYOK; "automatic failover and correction"; OpenAI-compatible migration); openui.com/docs/openui-lang None
G38. json-render: the tagline; Apache-2.0; about 18.6k stars; @json-render/core 0.21.0 (2026-09-18); defineCatalog; flat { root, elements } spec; $state, $cond, $template; setState; catalog.prompt(); the renderer list; 36 shadcn/ui components genui-landscape.md confirmed vercel-labs/json-render README; GitHub API (18,632 stars, Apache-2.0); npm None
G39. json-render integrations for the AI SDK, A2UI, AG-UI, Adaptive Cards, OpenAPI and MCP Apps genui-landscape.md confirmed json-render.dev docs index and llms.txt list A2UI, AG-UI, Adaptive Cards and OpenAPI integration pages; @json-render/mcp on npm (the first four have no separate npm packages) None
G40. SpecStream is JSONL of RFC 6902 patches, compiled with createSpecStreamCompiler genui-landscape.md confirmed json-render.dev/docs/streaming None
G41. Vercel AI SDK: ai 7.0.0 (2026-06-25) and 7.0.138 (2026-10-12), Apache-2.0; tool-<toolName> parts with the listed states; Output.object partial objects and Output.array elementStream; "AI SDK RSC is currently experimental"; @ai-sdk/rsc 3.x genui-landscape.md confirmed npm registry; ai-sdk.dev chatbot-tool-usage, generating-structured-data and ai-sdk-rsc/overview pages None
G42. OpenAI's 2026-10-07 post "GPT-6 and Intelligent UI for everyone": all quoted sentences, the examples (bicycle diagram, roast plan, shopping list, bill splitter), training on "when a simple text response is enough", interleaved thinking genui-landscape.md confirmed openai.com/index/gpt-6-for-everyone (WebFetch 403; Firecrawl ingest at High confidence; exact-string matches) None (the word "stepper" is not in the text capture; the plan "scales with your headcount")
G43. Availability: Plus, Pro, Business and Enterprise (GPT-6 Sol) from 2026-10-07; Free and Go (GPT-6 Luna) from 2026-10-08; "The models powering Work and Codex are not changing as part of this release" genui-landscape.md confirmed Same ingest ("Starting tomorrow, the rollout expands to Free and Go tiers") None
G44. No developer API exposes Intelligent UI; the 2026-10-07 API changelog entry only updates chat-latest genui-landscape.md confirmed developers.openai.com/api/docs/changelog (the 2026-10-08 entry adds an unrelated Ultrafast mode for GPT-6.1 Sol) None
G45. Strict tool use "guarantees Claude's tool inputs match your JSON Schema by constraining the model's token sampling to schema-valid outputs"; both features are generally available; grammars apply to direct output, not thinking genui-landscape.md confirmed Live strict-tool-use page (verbatim); live structured-outputs page (status GA; "Grammar scope" tip) None
G46. eager_input_streaming "does not buffer or validate"; by default the API buffers and validates each parameter genui-landscape.md confirmed Live fine-grained-tool-streaming page; shared/tool-use-concepts.md None
G47. Progress updates: on Opus 5.5 and Fable 5.1, "at most one before each tool call", empty by default; on Sonnet 5.5 only notes "longer than a sentence or two"; display: "updates" returns a summary; Haiku 5.5 is not on the list; the Opus 5.5 guide names a one-line statement of intent as such an update genui-landscape.md confirmed Live thinking page (list: Fable 5.1, Mythos 5.1, Opus 5.5, Sonnet 5.5, Fable 5); live Opus 5.5 and Sonnet 5.5 migration guides; live Prompting Claude Opus 5.5 guide None (the bundled skill applies the "sentence or two" qualifier to Opus 5.5 as well; the live Opus 5.5 guide does not)
G48. Schema limits: no recursion, no numeric or string-length constraints, no array constraints beyond minItems 0 or 1, additionalProperties only false; enum, const, anyOf, allOf (with limits) and internal $ref supported; 20 strict tools, 24 optional and 16 union-typed parameters; "Schema is too complex for compilation"; grammars cached 24 hours from last use; a format change invalidates the prompt cache; required properties come first genui-landscape.md confirmed Live structured-outputs page None
G49. Forced tool_choice returns a 400 on Opus 5.5, Sonnet 5.5 and Fable 5.1 genui-landscape.md confirmed SKILL.md Common Pitfalls None
G50. Structured outputs list Fable 5.1, Opus 5.5, Sonnet 5.5 and Haiku 5.5 among supported models genui-landscape.md confirmed Live structured-outputs page (supported-model list) None
G51. Claude Haiku 5.5 was released 2026-10-07, is "for high-volume, latency-sensitive tasks", is the fastest model, and its price steps up for prompts over 100,000 tokens genui-landscape.md confirmed Live models overview; live Haiku 5.5 page ($0.10 / $0.50 up to 100,000 tokens, $0.50 / $2.50 above) None
G52. Structured-output availability differs on some cloud platforms genui-landscape.md confirmed Live structured-outputs page (Amazon Bedrock: legacy integration and older models only) None
G53. Adapter A's catalog uses one union-typed parameter and no optional parameters; adapter B would need ten strict tools genui-landscape.md confirmed Checked against the limits in G48 None

Corrections applied in place

Each edit replaced an exact string that occurred once. Code blocks were not touched: after the edits, the code extracted from claude-wiring.md is byte-identical to the verified rebuild.

research/claude-wiring.md

  1. Decisions at a glance. Before: "$0.082 on Sonnet 5.5 at low". After: "$0.073 on Sonnet 5.5 at low".
  2. Section 1.1, cache-read cell of the "Concierge (speed alternative)" and "Offline eval judge" rows. Before: "$0.20". After: "$0.10".
  3. Section 1.1, sources line. Appended: "The Claude Sonnet 5.5 cache-read rate ($0.10 per MTok, 0.05x base input) comes from the live pricing page and the Sonnet 5.5 migration guide, read 2026-10-13; the skill's cached figure of $0.20 is out of date (see research/verification.md)."
  4. Section 1.2. Before: "reads the cache at the same $0.20 per MTok". After: "reads the cache at $0.10 per MTok (also half of Opus 5.5's $0.20)".
  5. Section 1.2, after "Caching it is not worth padding the prompt." Appended: "(Verification note, 2026-10-13: Claude Haiku 5.5, claude-haiku-5-5, was released on 2026-10-07, after the skill's model table was cached. It is now the current Haiku, at $0.10 / $0.50 per MTok for prompts up to 100,000 tokens, with a 512-token cache minimum and structured outputs; Claude Haiku 4.5 is listed as a legacy model. Unlike Haiku 4.5 it thinks by default, accepting thinking: {type: "disabled"} only at effort high or below, so a switch is more than a model-string change. Evaluate it for the router before launch.)"
  6. Section 4.2, Sonnet rows. Before: "86,770 × $0.20 = $0.0174 … $0.0815 … $0.0102 … (caching saves 65%)" and "99,370 × $0.20 = $0.0199 … $0.1425 … $0.0178". After: "86,770 × $0.10 = $0.0087 … $0.0729 … $0.0091 … (caching saves 69%)" and "99,370 × $0.10 = $0.0099 … $0.1326 … $0.0166".
  7. Section 4.3, Sonnet rows. Before: "1,000 × $0.0815 = $81.53 … $815.29 … $4,076.45"; "$92.53 … $876.69 … $4,361.85"; "$142.55 + $11.00 = $153.55 … $1,425.49 + $61.40 = $1,486.89 … $7,127.45 + $285.40 = $7,412.85". After: "1,000 × $0.0729 = $72.85 … $728.52 … $3,642.60"; "$83.85 … $789.92 … $3,928.00"; "$132.61 + $11.00 = $143.61 … $1,326.12 + $61.40 = $1,387.52 … $6,630.60 + $285.40 = $6,916.00".
  8. Section 4.4, output share. Before: "Output is 64 to 75% of the bill across the four configurations (71% for Opus at low)." After: "Output is 71 to 75% of the bill across the four configurations (71% at low, 75% at medium)."
  9. Section 4.4, caching. Before: "Caching is already worth 65 to 69%." After: "Caching already saves 69% at low and 58% at medium."
  10. Section 4.4, turn count. Before: "Cost grows roughly with the square of the turn count, because each turn re-reads all earlier ones." After: "Cost grows only slightly faster than the turn count: each turn re-reads all earlier ones, but at the cache-read rate those re-reads are about 2% of an 8-turn session, so a 4-turn session costs about $0.070 on Opus 5.5 at low, roughly half the 8-turn figure."

research/genui-landscape.md

  1. Summary, Open-JSON-UI bullet. Before: "It appears only in CopilotKit and AG-UI documentation; no OpenAI publication was found,". After: "It is named in CopilotKit and AG-UI documentation and in some third-party projects on GitHub; no OpenAI publication was found,".
  2. Section 3.4, "What could be verified". Before: "GitHub code search returns references only in the CopilotKit and ag-ui-protocol repositories." After: "GitHub code search returns about 480 matches: the CopilotKit and ag-ui-protocol repositories plus third-party projects, none in an OpenAI organization repository."
  3. Section 8, sources table. Before: "References only in the CopilotKit and ag-ui-protocol repositories". After: "About 480 matches in CopilotKit, ag-ui-protocol and third-party repositories; none in the openai organization".

Left for the document owners