Repository navigation
AI Render Shared Definition and Host Workflow
Status: completed; required scoped integrated checks passed, 2026-10-10. Product is @barocss/render in packages/barocss-render; existing Execute Render 01a10fde-6879-7c31-ab5c-8055d9fe3158 is the suitable owner. Its prior TanStack Start result proves a bounded authored host, not AI generation. This scope is distinct from the 3D Render Editor and from the barocss-editor repository.
Planner read local Integration commit 1713840d7d0b34239580dbcac29aab3635b79ee0. Current contract.mjs has five fixed component definitions, fixed style choices, host-declared text bindings/actions and strict graph/size rules. examples/ai-ui/scenario.mjs separately copies the same component/prop/style/limit declarations into SCREEN_DECLARATIONS. The concrete gap is duplicated renderer-definition metadata, not a missing host binding/action contract.
Reuse completed #488 host declarations, #489 repeated session/revision/cancellation, #490 actual browser host and #491 generation-boundary preparation. Do not rebuild those systems from an older /name-save summary. Historical #460 two-turn form/save/confirmation evidence and its invalid props.on sample stay immutable. #497's retired AG-UI adapter direction remains closed; no protocol adoption follows from reading OpenIntelligentUI.
- Keep Renderer/validateSpec/classesFor and host-owned React components, state access, actions, transitions, transport and session authority.
- Establish one renderer-owned definition for the existing five components, prop requirements, finite style options, event placement, graph/size/text/ID rules. Runtime validation/style mapping and a serializable copied public definition consume that same data.
- Tentative additive API
getRenderSpecDefinition(contract?)and a typed descriptor. The primary freezes exact exported names/shape/version, paths and compatible source/compiled graph before code. The descriptor describes existing permissions; generated screens cannot add component types, permissions or arbitrary props/styles. - Replace duplicated renderer metadata in scenario SCREEN_DECLARATIONS with the public descriptor plus host-owned scenario fields/TRANSITIONS. Stage semantics and business exact-text checks remain host rules. Explicitly describe Button.on at node level; props.on still fails. No silent repair/normalization of historical model output.
- Preserve default /name/save, configured bindings/actions, existing accepted screens, error locations, CSS mappings and callable-action guards. Returned metadata is detached; caller mutation cannot modify validation or rendering. Type declarations and docs must agree with the actual admitted shape.
- No new component family, state interpreter, arbitrary JS/HTML/CSS, external runtime dependency, partial patch/streaming engine, CLI/model run, transport rewrite or CAD command layer.
- Owned paths: package src definition/contract/index/declarations/README and narrowly necessary package build config; examples/ai-ui/scenario.mjs plus one new bounded contract-catalog-flow.mjs and example README. Historical scripts/barocss-render-loop and raw evidence remain unchanged. Root/shared/lock/dev/policy belong to Integration; inherited package.json WIP is preserved and any proposal reported separately.
Build the affected package with Node22 and run one short real local flow using controlled complete-screen fixtures through the existing host. Proposed command: node examples/ai-ui/contract-catalog-flow.mjs; author freezes the exact driver/host/commands before code. No new model dispatch.
Check a valid default form -> enter name -> registered save -> confirmation, then a configured name/topic screen with typed values retained across a compatible complete-screen label/layout update and existing review/edit/confirm path. The fixture/generator mode must be labeled authored/offline, not actual AI generation. Same stable IDs/host state preserve input; the result does not imply focus survives arbitrary reparent/remount.
Record public descriptor/validator agreement, legal node-level on versus rejected props.on, unsupported component/action, truncated response, canceled late result and stale revision through current host guards. Refusal preserves the last accepted screen/input. Reach actual public compiled import after affected build; source versus compiled graphs and browser UI evidence remain distinct. Use the existing host/session behavior, not a new orchestration framework or broad old-suite replay. Honor any actual tool/policy denial.
Exact immutable parent/child and clean owned delta, actual first failures, affected build/flow and limits go in the Issue. Integration adopts once and immediately reports code availability; later current integrated screen/recovery checks are tracked separately. No npm/product push/PR/deploy or release permission.
- Complete definition/AI-description alignment above.
- Audit existing #489 typed host events/session/revision/duplicate/cancel boundaries for a concrete remaining gap before a new child; already delivered behavior is not missing.
- Full-screen input/focus continuity across named allowed updates, with actual reconciliation/host-state limits.
- Additional registered component or property family only after a real user workflow and native renderer contract justify it.
- Partial patch/streaming only after complete-screen correctness and an observed user need; historical deferred research is not implementation approval.
OpenIntelligentUI is a generative UI product reference. Its UI/product patterns do not authorize importing its arbitrary generated execution or AG-UI/runtime architecture. Our contract and host semantics come from our code and evidence.
Tracking: #1126. Existing Execute Render received the implementation handoff once; startup is not native completion.
Actual completion receipt
binds clean range 235164d3e0200ada546b82e03cd33559346533d4..d2227e884417caa2cc386969f7046ae3f7e12fa8
on codex/render-definition-1126. Eight owned files; no manifest/root/lock/policy changes.
Integration's inherited manifest/kiosk data and old TanStack evidence are preserved.
Public getRenderSpecDefinition(contract?) and typed RenderSpecDefinition<Binding, Action>
return detached serializable metadata with definitionVersion: 1. Validation, finite styles and
scenario AI declarations use one private frozen renderer definition. The host still owns state,
permissions, callbacks, transitions, transport and session authority. Button.on remains node-level.
The new descriptor changes prepared declaration digests; historical packets are not rewritten.
Affected build and ONE focused authored/offline API/browser driver passed on Node22.19.0 and Chromium148.0.7778.96. Source graph contains the shared definition; actual consumer graph imports the compiled public root, without renderer source fallback. New declaration types, detached mutation, finite mappings and representative error paths passed. Actual default name/save confirmation and configured five-display review/edit/confirm retained Alice 민지 / Tea 차. Changed labels/layout, invalid props.on/component/action, truncated JSON, cancelled late result and stale revision were observed through existing host guards. Page errors/external requests/CSP violations were zero. First driver path/type-environment/revision-wait failures and repairs remain in the Issue.
This is native authored evidence, not a new model observation, general focus/remount guarantee, performance/release acceptance or current integrated UI proof. Integration #674 adopts the exact native delta once. Record merge SHA before calling it available on integrated develop; later integrated checks remain pending until actually run. No product push/PR/npm/deploy occurred.
Next candidate remains a bounded audit of existing session/revision/duplicate/cancel boundaries, or a named complete-screen continuity requirement supported by an observed failure. No new child is claimed from this receipt, and delivered #488–#491 behavior is not relabeled missing.
Sole Integration adopted the exact native range once at 3751c01ae6d71c5d4028479cca0ea20880a5399b. Eight current bases matched; all merged owned blobs equal native d2227e88. Inherited private render manifest/kiosk/root/lock/policy remain. Current adoption receipt, focused pending checks. Execute Render and Planner immediately received exact SHA/range/code notices; delivery tools accepted, read acknowledgment not observed.
Actual Root Node22.22.0 affected build and actual compiled public descriptor/scenario import passed first. The duplicate metadata gap described in the earlier source checkpoint is now implemented. Host permissions/transitions remain authoritative. Current added type consumer/browser/session flow acceptance is pending; native Node22.19.0 authored evidence above and first failures remain separate. No model call, release, streaming or general focus/remount guarantee follows.
#1126 final current receipt
closes the scoped follow-up. Actual Integration HEAD before/after the one existing driver was
6cb37048c08ee5c99266111d4fd710636b38e25f; renderer source/scenario/driver match native child
d2227e884417caa2cc386969f7046ae3f7e12fa8, adopted at 3751c01ae6d71c5d4028479cca0ea20880a5399b.
No second adoption or product edit occurred. Prior integration build/import smoke is retained.
The focused current compiled API/type/browser flow passed on its first run, Node22.19.0 and Chromium148.0.7778.96. Default typed name/save confirmation and configured five authored displays preserved Alice 민지 / Tea 차. Metadata copy mutation, invalid props.on/component/action/truncated JSON, cancellation with late response and stale revision were checked with current host/session retention. Actual public compiled entry and standalone descriptor types passed. Page errors, external requests and CSP violations were zero. Owned resources were closed.
Status: merged; required scoped integrated checks passed; #1126 closed. This is authored/offline UI evidence, not actual AI quality/latency, arbitrary remount focus, broad Root/Save/Open recovery, registry/release or streaming acceptance. #674 remains open for other integration scope. No new feature Issue is claimed; the next direction still needs an observed gap in existing session boundaries or a named full-screen continuity requirement.