# Project Documentation

Central index for design decisions, mission, editor framework docs, and repository workflow.
Before treating any document as current guidance, read [`authority.toml`](authority.toml).

## Core

| Document | Purpose |
|----------|---------|
| [authority.toml](authority.toml) | Machine-readable current/plan/evidence/historical/superseded classification |
| [mission.md](mission.md) | Why the editor framework exists, principles, audience, non-goals |
| [../README.md](../README.md) | Run/build instructions, controls, implementation checklist |

## Repository workflow

| Document | Purpose |
|----------|---------|
| [workflow/codex-workflow.md](workflow/codex-workflow.md) | Task lifecycle, scope deltas, and completion states |
| [workflow/documentation-policy.md](workflow/documentation-policy.md) | Authority hierarchy, lifecycle classes, and integrity audit |
| [workflow/verification-policy.md](workflow/verification-policy.md) | Fast, slice, and candidate verification tiers |
| [workflow/build-storage-policy.md](workflow/build-storage-policy.md) | Managed Cargo lanes, budgets, and safe pruning |
| [workflow/gitea-tracking-policy.md](workflow/gitea-tracking-policy.md) | Tracker state and mutation boundaries |
| [archive/](archive/) | Preserved non-current documentation records |

## Architecture Decision Records (ADRs)

Immutable-style log of significant decisions. Add a new numbered ADR when changing boundaries, formats, or policies.

| ADR | Topic |
|-----|-------|
| [0001](adr/0001-roadmap-architecture.md) | Crate split, sim/protocol direction, milestone north star |
| [0002](adr/0002-bevy-version-and-migration-policy.md) | Bevy upgrade cadence and verification |
| [0003](adr/0003-editor-framework-mission.md) | Editor as reusable in-process framework |
| [0004](adr/0004-editor-hot-reload.md) | Dev-only `game_hot` dylib hot reload |
| [0005](adr/0005-prefab-instance-and-asset-registry.md) | Prefab instances + stable asset registry |
| [0006](adr/0006-scene-schema-versioning.md) | Scene schema versioning and validation |
| [0007](adr/0007-editor-plugin-extensibility.md) | EditorPlugin extensibility surface |
| [0008](adr/0008-editor-module-boundaries.md) | Editor domain modules, lib/bin split, plugin group |
| [0009](adr/0009-authoring-vs-hydrated.md) | Authoring vs hydrated components; strip-on-save |
| [0010](adr/0010-actor-kind-and-inspector.md) | ActorKind, validation, actor inspector |
| [0011](adr/0011-scene-sun-policy.md) | Project sun vs scene directional policy |
| [0012](adr/0012-zero-tech-debt-editor.md) | Zero tech debt / no dual inspector |
| [0013](adr/0013-rendering-tiers-and-post-process-volumes.md) | GI tiers, post-process volumes, editor model |
| [0014](adr/0014-unified-viewport-model.md) | Unified viewport render target and clean game-view overlay |
| [0015](adr/0015-viewport-camera-stack-ownership.md) | Viewport camera FX ownership and Solari local-light authoring policy |
| [0016](adr/0016-unified-rendering-contract.md) | Requested/effective render stack, Solari eligibility, emissive materials |
| [0017](adr/0017-normalized-static-mesh-assets.md) | Normalized static mesh assets and renderer placement |
| [0018](adr/0018-componentized-actor-inspector-and-materials.md) | Componentized actor inspector, imported asset refs, collider split, material overrides |
| [0019](adr/0019-local-bevy-render-timeout-patch.md) | Superseded local `bevy_render` patch for transient Linux swapchain timeouts |
| [0020](adr/0020-jackdaw-inspired-editor-roadmap.md) | Jackdaw-inspired roadmap source policy and attribution requirements |
| [0021](adr/0021-brush-authoring-schema.md) | Brush authoring schema and hydration contract |
| [0022](adr/0022-bevy-0-19-upgrade.md) | Bevy 0.19 / Avian 0.7 upgrade and compatibility patches |
| [0023](adr/0023-transactional-scene-persistence-and-recovery.md) | Atomic scene writes, user-local recovery snapshots, and restore/discard policy |
| [0024](adr/0024-versioned-editor-session-state.md) | Versioned machine-local session state and safe abnormal-shutdown resume |
| [0025](adr/0025-project-root-is-a-startup-boundary.md) | Pre-engine project validation, activation, and sandbox contract |
| [0026](adr/0026-stable-scene-composition-and-active-document.md) | Stable scene IDs, subscene ownership, tabs, and active-world materialization |
| [0027](adr/0027-stable-prefab-ownership-and-variants.md) | Stable prefab ownership, nested override identity/layering, transactional source writes, variants, and local conversion |
| [0028](adr/0028-authoritative-project-content-validation.md) | Shared editor/headless dependency manifest and project content findings |
| [0029](adr/0029-validation-gated-build-profiles-and-packaging.md) | Shared validation-gated build profiles, runtime packaging, and metadata |
| [0030](adr/0030-audio-authoring-and-bus-schema.md) | Serializable audio sources/listeners, stable clip references, and project bus graph |
| [0031](adr/0031-animation-authoring-runtime-contract.md) | glTF animation artifacts, stable controller states, runtime hydration, and exact-signature retargeting |
| [0032](adr/0032-versioned-navigation-bake-and-runtime-query.md) | Rerecast bake artifacts, Polyanya runtime queries, and editor/runtime ownership |
| [0033](adr/0033-dedicated-skinned-mesh-renderer.md) | Dedicated skinned renderer, static/skinned import boundary, and scene migration |
| [0034](adr/0034-registry-driven-authoring-components.md) | Stable component IDs, reflected lifecycle/history, composition, and independent active state |
| [0035](adr/0035-shared-material-assets-and-renderer-slots.md) | Shared Material/Material Instance assets, stable renderer slots, and runtime-only property blocks |
| [0036](adr/0036-surface-abi-and-solari-parity.md) | Constrained Surface ABI v1, raster/Solari evaluator parity, and deformed-geometry boundary |
| [0037](adr/0037-collaborative-authored-file-safety.md) | Exact authored-file revisions, observational Git status, and optional ownership providers |
| [0038](adr/0038-non-blocking-native-dialog-broker.md) | Worker-owned native waits with one-shot main-thread workflow completion |
| [0039](adr/0039-inline-height-grid-terrain-foundation.md) | Inline authored height grids with deterministic runtime-only chunk hydration |
| [0040](adr/0040-terrain-material-layer-weights.md) | Four-channel terrain material layers, compact normalized weights, and raster transport |
| [0041](adr/0041-transactional-editor-physics-placement.md) | Paused editor physics ownership and transactional gravity placement |
| [0042](adr/0042-guarded-editor-shutdown-and-document-savepoints.md) | Guarded native editor exit and canonical per-document clean checkpoints |
| [0043](adr/0043-content-addressed-import-fingerprints.md) | Content-addressed imported-source identity and byte-preserving artifact publication |
| [0044](adr/0044-sandboxed-fbx-external-texture-dependencies.md) | Sandboxed FBX texture bundles, validation policy, and deduplicated loading |
| [0045](adr/0045-content-workspace-and-material-fallback-contract.md) | Path-agnostic content workspace, registry v3, model material defaults, and DefaultGrid fallback |
| [0046](adr/0046-schema-driven-material-inputs-and-processed-textures.md) | Schema-driven Material inputs, registry v3 Texture settings, ARM packing, and deterministic runtime textures |
| [0047](adr/0047-editor-authored-asset-documents.md) | Editor-dirty asset documents, explicit saves, recovery, and background derived publication |
| [0048](adr/0048-modular-editor-composition-and-debt-ratchet.md) | Thin editor composition, registry-only Inspector dispatch, and automated architecture debt ratchet |
| [0049](adr/0049-penpot-led-editor-visual-system.md) | Penpot-led visual tokens, responsive editor components, Source Sans Pro typography, and picker interaction |

## Editor framework

| Document | Purpose |
|----------|---------|
| [editor/release-notes.md](editor/release-notes.md) | Historical editor framework 1.0 snapshot |
| [editor/evaluations/](editor/evaluations/) | Dated acceptance evidence and Gitea evidence-publishing policy; not product specification |
| [editor/architecture.md](editor/architecture.md) | Viewport / PIE / settings data flow |
| [editor/visual-language.md](editor/visual-language.md) | Editor chrome, viewport, selection, gizmo, and visualizer language |
| [editor/design-system.md](editor/design-system.md) | Penpot-led visual tokens, reusable controls, responsive geometry, and material-inspector presentation |
| [editor/roadmap.md](editor/roadmap.md) | Phased editor roadmap and status |
| [editor/brp.md](editor/brp.md) | BRP automation and authoring-only policy |
| [editor/debt-audit.md](editor/debt-audit.md) | Zero-debt phase gates |
| [editor/brushes.md](editor/brushes.md) | Brush authoring schema, hydration behavior, and MVP limits |
| [editor/operator-regression-testing.md](editor/operator-regression-testing.md) | Reusable modal-tool and operator invariant harness |
| [editor/session-recovery.md](editor/session-recovery.md) | Clean restart, abnormal shutdown, session schema, and privacy boundary |
| [editor/project-launcher.md](editor/project-launcher.md) | Project manifests, explicit startup roots, recents, and sandbox scaffolding |
| [editor/build-and-package.md](editor/build-and-package.md) | Editor/headless package profiles, output, exclusions, and metadata |
| [editor/multi-scene-composition.md](editor/multi-scene-composition.md) | Independent scene tabs, composition ownership, validation, and recovery |
| [editor/prefab-authoring.md](editor/prefab-authoring.md) | Linked instances, scoped overrides/source Apply, conflicts, variants, unpacking, and local conversion |
| [editor/audio-authoring.md](editor/audio-authoring.md) | Audio clips, source/listener authoring, audition, buses, runtime parity, and validation |
| [editor/animation-authoring.md](editor/animation-authoring.md) | glTF rigs/clips, controller states, preview, runtime requests, stable moves, and validation |
| [editor/navigation-authoring.md](editor/navigation-authoring.md) | Bounds/obstacles/areas/links, deterministic bake, overlay, path preview, and runtime queries |
| [editor/extensibility.md](editor/extensibility.md) | Static authoring component registration, lifecycle, composition, and history contract |
| [editor/material-system.md](editor/material-system.md) | Shared material assets and instances, renderer-slot assignment, Surface evaluators, migration, and diagnostics |
| [editor/content-workspace.md](editor/content-workspace.md) | File-manager content organization, destination-first import, stable IDs, and model material authoring |
| [editor/collaborative-file-safety.md](editor/collaborative-file-safety.md) | Guarded authored writes, compact Git/read-only status, conflict recovery, and ownership providers |
| [editor/native-dialogs.md](editor/native-dialogs.md) | Non-blocking native dialog acquisition and main-thread result application |
| [editor/terrain.md](editor/terrain.md) | Terrain schema, inspector workflow, chunk hydration, collision, and follow-on boundaries |
| [editor/physics-placement.md](editor/physics-placement.md) | Transactional gravity placement, diagnostics, isolation, and undo workflow |
| [editor/collider-authoring.md](editor/collider-authoring.md) | Collider shape authoring, hydration diagnostics, semantic overlays, and placement prerequisites |
| [editor/sample-regression-pack.md](editor/sample-regression-pack.md) | Five-area sample catalog, editor workflow, validation gates, and visual QA contract |
| [editor/evaluations/material-renderer-foundation/](editor/evaluations/material-renderer-foundation/) | Live screenshots and acceptance results for the renderer/material/component foundation |
| [editor/evaluations/terrain-sculpt-tools/](editor/evaluations/terrain-sculpt-tools/) | Live screenshot and acceptance results for modal terrain sculpt tools |
| [editor/evaluations/terrain-material-layers/](editor/evaluations/terrain-material-layers/) | Live screenshot and acceptance results for terrain material assignment, blending, painting, and history |
| [editor/evaluations/physics-placement/](editor/evaluations/physics-placement/) | Live screenshot and acceptance results for physics settling, cancel, commit, undo, and redo |
| [editor/evaluations/collider-diagnostics/](editor/evaluations/collider-diagnostics/) | Live screenshot and acceptance results for collider overlays, diagnostics, shape history, and placement preflight |
| [editor/evaluations/navigation-authoring/](editor/evaluations/navigation-authoring/) | Live screenshots and acceptance results for navigation authoring and runtime parity |
| [editor/evaluations/operator-invariants/](editor/evaluations/operator-invariants/) | Source acceptance results for production operator lifecycle, rollback, cleanup, and undo/redo invariants |
| [editor/evaluations/sample-regression-pack/](editor/evaluations/sample-regression-pack/) | Exact-implementation source and native acceptance evidence for the editor sample regression pack |
| [editor/evaluations/guarded-shutdown-savepoints/](editor/evaluations/guarded-shutdown-savepoints/) | Source and native acceptance evidence for guarded editor exit and per-document clean checkpoints |
| [editor/evaluations/scoped-ui-actions/](editor/evaluations/scoped-ui-actions/) | Exact-implementation source and native acceptance evidence for actions invoked during scoped egui rendering |
| [editor/evaluations/deterministic-asset-fingerprints/](editor/evaluations/deterministic-asset-fingerprints/) | Source, fresh-checkout, hash-stability, and native acceptance evidence for imported-source fingerprints |
| [editor/evaluations/fbx-external-texture-dependencies/](editor/evaluations/fbx-external-texture-dependencies/) | Source, validation, and native acceptance evidence for sandboxed FBX texture dependencies and override states |
| [editor/evaluations/content-workspace-m2/](editor/evaluations/content-workspace-m2/) | Native M2 evidence for Content Browser file-manager selection, context menus, managed-folder visibility, and Details resizing |
| [editor/evaluations/production-readiness/](editor/evaluations/production-readiness/) | Current versioned production gate, evidence matrix, candidate commands, soak protocol, and independent sign-off requirements |

## Plans

Plans describe desired scope and acceptance, never current implementation truth. Their authoritative
classification is in [`authority.toml`](authority.toml); completed plans are frozen as historical
records instead of being rewritten as status diaries.

Current active plans:

- [Content workspace and import authoring](../.cursor/plans/content_workspace_and_import_authoring_2026-07-13.plan.md)
- [Production-readiness program](../.cursor/plans/blacksite_production_readiness_2026-07-10.plan.md)
- [Production-readiness acceptance gate](../.cursor/plans/production_readiness_acceptance_2026-07-12.plan.md)

## Crate responsibilities (quick reference)

```
crates/protocol/   Tick rate, input intent, message shapes
crates/sim/        Fixed-step gameplay; no rendering
crates/shared/     Authoring components + hydration
crates/content_pipeline/ UI-independent content catalog, transaction, import, and processing engine
crates/game/       Client presentation, GamePlugin, rendering
crates/editor/     In-process egui editor, BRP, PIE
crates/settings/   Project settings, active/effective render profile contracts
```

When adding a crate or moving responsibilities, update this table and ADR 0001 (or a follow-up ADR).
