---
title: "AI World Build Contract"
description: "Sources: `packages/world-build-contract/src/index.ts`, `packages/protocol/src/index.ts`, `packages/engine-version/src/index.ts`."
engineVersion: v1.0.234
date: 2026-09-28
license: "(c) Gessa, proprietary. Cite with attribution to https://gessa.ai/docs/. Terms: https://gessa.ai/terms/."
canonical: https://gessa.ai/docs/spec/generated/world-build-contract/
---
<!-- GENERATED FILE: do not edit by hand. -->
<!-- Regenerate with `npm run gen-docs`. -->

Sources: `packages/world-build-contract/src/index.ts`, `packages/protocol/src/index.ts`, `packages/engine-version/src/index.ts`.

# AI World Build Contract

This generated snapshot is derived from `packages/world-build-contract`. It is the Milestone 4B contract projection for prompt-to-world build contracts, renderer/material capabilities, deterministic demo recipes, QA eval receipts, and execution timeline coordinates.

## Coordinates

| Coordinate | Version | Hash |
| --- | --- | --- |
| AI World Build Contract | `ai-world-build-contract.v1.bistro-canonical-rebuild-phase1` | `sha256:b05d3d5d36c6606b3310195ad75cb4d9194b748af1ba69c0ef62f50c5dedab3d` |
| Workbench Product Claim Contract | `workbench-product-claim-contract.v1` | `sha256:2d9e79129fe980df390ee04acf077b633f3591e7d3ed9322a782c4a1bc73163d` |
| Workbench Semantic Product Spec | `workbench-semantic-product-spec.v2` | `sha256:50f30e3771b5dd2779f2f57ca1f8cc16352f6fd684a16a8d1cd29b5a6097024d` |
| Renderer/Material Capability Catalog | `renderer-material-capability-catalog.v1.bistro-canonical-rebuild-phase1` | `sha256:3de48da98d3e9d29116fde017e7a95c75ebf7f887c4c149119677dba95d3cfed` |
| Demo Recipe Catalog | `world-build-demo-recipe-catalog.v1.bistro-canonical-rebuild-phase1` | `sha256:47570f24b7b2e0a1504205f08ad56d46cefce542c4845bfe62788c4feebd93fe` |
| QA/Eval Catalog | `world-build-qa-eval-catalog.v1.spatial-proxy-proof` | `sha256:c45215b495e1dd9c226f8f26cf46ddd6fdee9471d3d679ba080a356ab61e7bda` |
| Execution Timeline | `world-build-execution-timeline.v1` | `sha256:96f461e7c45f82b3a76ee383c2b1bd05f34e38b0e69ee3e9ca01a433ea6d3456` |
| Catalog Coordinates | composite | `sha256:d6ce5f9e6709fb40c82898d9a10656a2e453ece7f180ecc564ae900bab417f0d` |

## Acceptance Policy

- `world.build.from_prompt` is the canonical action for prompt-to-world build execution.
- `world.build.from_spatial_asset` is the canonical action for turning imported/generated spatial assets into executable worlds.
- Playable spatial world acceptance requires collision proxy, nav/query proxy, semantic anchor, and `playability.accepted` receipts; renderability alone is not playable proof.
- Accepted build proof requires semantic contract proof, Project Graph validation, visible unsupported requirements, passing QA receipts, and a timeline receipt.
- Generated assets may iterate through placeholders, but accepted final proof only permits `terminal_success`, `substituted`, or `degraded` asset receipts.
- Renderer/material choices must reference cataloged capability ids; raw shader/pass fields such as `shaderSource`, `fragmentShader`, `vertexShader`, `wgsl`, `glsl`, `renderPassCode`, and `customPassSource` are forbidden.
- Workbench product claims use explicit terminal states and proof tri-state; missing proof is `not_run`, not pass.

## Workbench Product Claim Contracts

| Intent | Surface | Hash | Required children | Project Graph artifacts | Script/state/UI artifacts | Proof lanes | Partial draft |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `read_only` | chat | `sha256:28078b57591ab5812a4f5ee64ea8b7c6d8770fb961b50ea65b91ba59584fdadc` | None | None | None | None | no |
| `small_edit` | workbench_build | `sha256:9dece67541828ac9457408da146f5ed8c1ab52e8281cfa44864dfbf6413d06c0` | None | None | None | `project_graph` | yes |
| `script_edit` | script_fix | `sha256:ba0baee70777ae079fbfcf5e7cd72ff07941d8cb6d50f49574b8c8d4a8e7ef69` | None | None | `script_behavior` | `script_behavior` | yes |
| `visual_world_build` | world_build | `sha256:7817d2f9f1ff5b30ed5830cf58e09be738e5a2a6ec9b6e2ca2b666c7fbe1d107` | `creative-world-layout`<br>`creative-visual-style`<br>`creative-proof-plan`<br>`foundation`<br>`scene`<br>`visual-qa-repair` | `world`<br>`visible_scene_entities`<br>`active_camera`<br>`lighting` | None | `project_graph`<br>`observer_visual_qa`<br>`renderer_visual_qa` | yes |
| `playable_game_factory` | factory_build | `sha256:6d1e07fb985b99609e4b4132f5833fbdc91b095d567416f28d14e2a65fabd893` | `creative-gameplay-plan`<br>`creative-world-layout`<br>`creative-visual-style`<br>`creative-proof-plan`<br>`foundation`<br>`scene`<br>`factory-content`<br>`factory-script-attach`<br>`visual-qa-repair`<br>`factory-proof` | `world`<br>`visible_scene_entities`<br>`active_camera`<br>`lighting`<br>`smart_asset_package`<br>`player_spawn`<br>`player_control_path`<br>`runtime_controller` | `script_behavior`<br>`typed_score_win_state`<br>`hud_binding` | `project_graph`<br>`script_behavior`<br>`typed_state`<br>`hud`<br>`player_control`<br>`observer_visual_qa`<br>`renderer_visual_qa`<br>`runtime_play`<br>`factory_acceptance` | yes |
| `organic_playable_world` | world_build | `sha256:53bd306f1fadf0a49fbbb3dd93af173a2043b6565c3a9aabac94344ffdf3a33d` | None | `world`<br>`visible_scene_entities` | None | `project_graph`<br>`runtime_play` | yes |
| `debug_repair` | debug_repair | `sha256:aa5318b8570991f25b6f0e3beedb616514867a02d67153ae35441bb2b4e2918b` | None | None | None | `project_graph` | yes |
| `qa_or_publish_proof` | qa_proof | `sha256:6080a2fd04ec8102c154e53b423f521bca790c3a59bd529d2010e86ef6c783a5` | None | None | None | `observer_visual_qa`<br>`renderer_visual_qa`<br>`runtime_play`<br>`factory_acceptance` | no |
| `unknown_or_unsupported` | chat | `sha256:d4f94ced9df30c21248877c3deb9e6f424ca6acf1a8420cae2dc74365706c1bd` | None | None | None | None | no |

## Workbench Semantic Product Spec

Normal Workbench AI build paths must produce a prompt-specific Semantic Product Spec before lowering to canonical world-build operations. Deterministic fixture defaults are only permitted in explicit test/demo fixture paths.

| Field | Meaning |
| --- | --- |
| `prompt` | Original user prompt used for traceability and prompt-specific hashing. |
| `intent` | Workbench product claim intent such as `visual_world_build` or `playable_game_factory`. |
| `genreOrWorldType` | Planner-selected semantic product category for this prompt. |
| `targetExperience` | Short user-facing experience goal that all projections derive from. |
| `visualStyle` | Mood, palette, and density for renderer/material planning. |
| `regions` | Named semantic areas such as districts, lanes, routes, water, or parks. |
| `entityClasses` | Prompt-specific entity classes that expand into semantic batch items. |
| `gameplayLoops` | Gameplay loop descriptions and proof requirements for playable builds. |
| `scriptBehaviors` | Script Semantic Patch behavior intents; not raw Script IR or source. |
| `typedState` | Typed score/win/runtime state contract for playable builds. |
| `uiHud` | HUD bindings backed by typed state, not renderer-only claims. |
| `camera` | Semantic camera mode, framing, transform, and fov. |
| `lighting` | Semantic lighting rig and atmosphere. |
| `materials` | Catalog capability ids and material direction; raw shader/pass fields are forbidden. |
| `proofPlan` | Required visual/runtime/factory proof lanes. |
| `acceptanceRubric` | Planner acceptance criteria that product-claim proof must satisfy. |
| `budget` | Planner budget for provider calls, cost, and child workers. |

## Renderer/Material Capabilities

| Capability | Kind | Label | Owner | Protocol Fields | Required Primitives | QA Coverage |
| --- | --- | --- | --- | --- | --- | --- |
| `material.matte@1` | material_recipe | Matte Material | renderer | `ProjectMaterialPayload.baseColor`<br>`ProjectMaterialPayload.roughness` | `primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_pbr` |
| `material.metal@1` | material_recipe | Metal Material | renderer | `ProjectMaterialPayload.metallic`<br>`ProjectMaterialPayload.roughness` | `primitive.renderer.material_pbr_advanced` | `qa.renderer.material_pbr` |
| `material.glass@1` | material_recipe | Glass Material | renderer | `ProjectMaterialPayload.transmission`<br>`ProjectMaterialPayload.alphaMode` | `primitive.renderer.material_pbr_advanced` | `qa.renderer.material_pbr`<br>`qa.render_browser_qa.visual` |
| `material.emissive@1` | material_recipe | Emissive Material | renderer | `ProjectMaterialPayload.emissiveColor`<br>`ProjectMaterialPayload.emissiveIntensity` | `primitive.renderer.material_pbr_advanced` | `qa.renderer.material_pbr` |
| `material.toon@1` | material_recipe | Toon Material | renderer | `ProjectMaterialPayload.shadingModel` | `primitive.project_graph.material_asset` | `qa.renderer.surface_response_toon`<br>`qa.render_browser_qa.visual` |
| `material.holographic@1` | material_recipe | Holographic Material | renderer | `ProjectMaterialPayload.emissiveColor`<br>`ProjectMaterialPayload.alphaMode` | `primitive.renderer.material_pbr_advanced` | `qa.renderer.material_pbr`<br>`qa.render_budget` |
| `material.terrain_layered@1` | material_recipe | Layered Terrain Material | renderer | `SceneSnapshotTerrain.material` | `primitive.renderer.terrain` | `qa.renderer.terrain` |
| `material.water@1` | material_recipe | Water Material | renderer | `SceneSnapshotWater.material` | `primitive.renderer.water` | `qa.renderer.water` |
| `material.foliage@1` | material_recipe | Foliage Material | renderer | `ProjectMaterialPayload.alphaMode`<br>`ProjectMaterialPayload.doubleSided` | `primitive.renderer.asset_streaming` | `qa.renderer.material_pbr`<br>`qa.renderer.instancing` |
| `material.decal@1` | material_recipe | Decal Material | renderer | `SceneSnapshotDecal.material` | `primitive.renderer.decals` | `qa.renderer.decals` |
| `material.ui@1` | material_recipe | UI Material | renderer | `UiPanelPayload.styling` | `primitive.project_graph.ui_panel` | `qa.ui.panel_renderer` |
| `texture.base_color@1` | texture_slot | Texture base color | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `texture.normal@1` | texture_slot | Texture normal | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `texture.roughness@1` | texture_slot | Texture roughness | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `texture.metalness@1` | texture_slot | Texture metalness | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `texture.emissive@1` | texture_slot | Texture emissive | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `texture.ambient_occlusion@1` | texture_slot | Texture ambient occlusion | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `texture.skybox_equirectangular@1` | texture_slot | Texture skybox equirectangular | renderer | `ProjectMaterialPayload.textureSlots`<br>`ProjectAssetReference` | `primitive.project_graph.asset`<br>`primitive.project_graph.material_asset` | `qa.project_graph.assets`<br>`qa.renderer.material_textures` |
| `post.bloom@1` | post_processing_intent | Post bloom | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.color_grading@1` | post_processing_intent | Post color grading | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.vignette@1` | post_processing_intent | Post vignette | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.anti_aliasing@1` | post_processing_intent | Post anti-aliasing | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.ambient_occlusion@1` | post_processing_intent | Post ambient occlusion | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.contact_shadows@1` | post_processing_intent | Post contact shadows | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.screen_space_global_illumination@1` | post_processing_intent | Post screen-space global illumination | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.screen_space_reflections@1` | post_processing_intent | Post screen-space reflections | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.light_shafts@1` | post_processing_intent | Post light shafts | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.depth_of_field@1` | post_processing_intent | Post depth of field | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `post.motion_blur@1` | post_processing_intent | Post motion blur | renderer | `RendererPostProcessingIntent` | `primitive.renderer.backend_capability` | `qa.render_browser_qa.visual`<br>`qa.render_budget` |
| `scene.terrain@1` | scene_capability | Scene terrain | renderer | `SceneSnapshot` | `primitive.renderer.terrain` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.water@1` | scene_capability | Scene water | renderer | `SceneSnapshot` | `primitive.renderer.water` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.decals@1` | scene_capability | Scene decals | renderer | `SceneSnapshot` | `primitive.renderer.decals` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.particles@1` | scene_capability | Scene particles | renderer | `SceneSnapshot` | `primitive.renderer.particles` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.reflection_probe@1` | scene_capability | Scene reflection probe | renderer | `SceneSnapshot` | `primitive.renderer.environment_profiles` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.image_based_lighting@1` | scene_capability | Scene image based lighting | renderer | `SceneSnapshot` | `primitive.renderer.image_based_lighting` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.compressed_texture_variants@1` | scene_capability | Scene compressed texture variants | renderer | `SceneSnapshot` | `primitive.renderer.compressed_texture_variants` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.asset_streaming@1` | scene_capability | Scene asset streaming | renderer | `SceneSnapshot` | `primitive.renderer.asset_streaming` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.culling@1` | scene_capability | Scene culling | renderer | `SceneSnapshot` | `primitive.renderer.culling` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `scene.instancing@1` | scene_capability | Scene instancing | renderer | `SceneSnapshot` | `primitive.renderer.instancing` | `qa.render_browser_qa.visual`<br>`qa.render_device_matrix` |
| `style.pack.natural_explorer@1` | style_pack | Natural Explorer Style Pack | renderer | `ProjectWorld.environment`<br>`RendererPostProcessingIntent` | `primitive.renderer.environment_profiles` | `qa.runtime.scene_snapshot`<br>`qa.render_browser_qa.visual` |
| `style.pack.renderer_moat@1` | style_pack | Renderer Moat Style Pack | renderer | `ProjectWorld.renderer.recipeHash` | `primitive.renderer.terrain`<br>`primitive.renderer.water`<br>`primitive.renderer.particles` | `qa.renderer_moat_recipe`<br>`qa.render_browser_qa.visual` |

## Demo Recipes

| Recipe | Label | World Type | Template | Renderer/Material Plan | Generated Asset Receipts | QA Evals |
| --- | --- | --- | --- | --- | --- | --- |
| `three_d_explorer_demo@1` | 3D Explorer Demo | spatial_3d | `three_d_explorer` | `style.pack.natural_explorer`<br>`post.color_grading`<br>`post.vignette` | None | `semantic_contract`<br>`project_graph_validation`<br>`runtime_playability`<br>`renderer_nonblank`<br>`browser_no_console` |
| `first_person_explorer_demo@1` | First-Person Explorer Demo | spatial_3d | `first_person_explorer` | `style.pack.natural_explorer`<br>`post.anti_aliasing` | None | `semantic_contract`<br>`project_graph_validation`<br>`runtime_playability`<br>`browser_no_console` |
| `renderer_moat_showcase_demo@1` | Renderer Moat Showcase Demo | spatial_3d | `renderer_moat_showcase` | `style.pack.renderer_moat`<br>`material.glass`<br>`material.metal`<br>`material.emissive`<br>`scene.terrain`<br>`scene.water`<br>`scene.particles` | None | `semantic_contract`<br>`project_graph_validation`<br>`renderer_nonblank`<br>`visual_budget`<br>`browser_no_console` |
| `ai_entity_world_demo@1` | AI Entity World Demo | spatial_3d | `three_d_explorer` | `material.toon`<br>`post.color_grading` | `asset.icon.ai_actor:substituted` | `semantic_contract`<br>`project_graph_validation`<br>`script_semantic_patch`<br>`workflow_action_state`<br>`runtime_playability` |
| `asset_factory_demo@1` | Asset Factory Demo | spatial_3d | `blank_3d` | `material.matte`<br>`texture.base_color`<br>`texture.normal` | `asset.factory.model:substituted`<br>`asset.factory.texture:substituted`<br>`asset.factory.audio:substituted` | `semantic_contract`<br>`project_graph_validation`<br>`generation_terminal_or_degraded`<br>`asset_reference_resolves` |
| `spatial_asset_playable_world_demo@1` | Spatial Asset Playable World Demo | spatial_3d | `blank_3d` | `scene.asset_streaming`<br>`post.anti_aliasing` | None | `semantic_contract`<br>`project_graph_validation`<br>`spatial_import_receipts`<br>`spatial_proxy_proof`<br>`renderer_nonblank`<br>`runtime_playability`<br>`browser_no_console` |
| `abstract_workflow_world_demo@1` | Abstract Workflow World Demo | abstract_workflow | None | None | None | `semantic_contract`<br>`project_graph_validation`<br>`workflow_action_state`<br>`timeline_receipt_integrity` |

## QA Evals

| Eval | Label | Proof Surface | Required | Receipt Kind |
| --- | --- | --- | --- | --- |
| `semantic_contract@1` | Semantic Contract | semantic | yes | `semantic_contract.receipt` |
| `project_graph_validation@1` | Project Graph Validation | project_graph | yes | `project_graph.validation_receipt` |
| `script_semantic_patch@1` | Script Semantic Patch | script | yes | `script_semantic_patch.receipt` |
| `generation_terminal_or_degraded@1` | Generation Terminal Or Degraded | generation | yes | `generation.finalization_receipt` |
| `asset_reference_resolves@1` | Asset Reference Resolves | generation | yes | `asset_reference.receipt` |
| `spatial_import_receipts@1` | Spatial Import Receipts | project_graph | yes | `spatial.import_receipts` |
| `spatial_proxy_proof@1` | Spatial Proxy Proof | project_graph | yes | `spatial.proxy_receipt` |
| `renderer_nonblank@1` | Renderer Nonblank | renderer | yes | `renderer.nonblank_receipt` |
| `visual_budget@1` | Visual Budget | renderer | yes | `renderer.budget_receipt` |
| `runtime_playability@1` | Runtime Playability | runtime | yes | `runtime.playability_receipt` |
| `workflow_action_state@1` | Workflow Action State | workflow | yes | `workflow.action_state_receipt` |
| `browser_no_console@1` | Browser No Console Errors | browser | yes | `browser.no_console_receipt` |
| `timeline_receipt_integrity@1` | Timeline Receipt Integrity | timeline | yes | `timeline.integrity_receipt` |
