BS-JD-ROADMAP - Jackdaw-inspired editor production roadmap #1
Labels
No Label
area:animation
area:assets
area:audio
area:brushes
area:build-release
area:extensions
area:governance
area:hierarchy
area:inspector
area:navigation
area:operators
area:physics
area:project-ux
area:quality
area:rendering
area:runtime
area:scene-io
area:terrain
area:viewport
priority:P0
priority:P1
priority:P2
priority:P3
roadmap:jackdaw
roadmap:production
type:architecture
type:docs
type:epic
type:feature
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Falling-Metal-Interactive/Blacksite#1
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Purpose
Track the Blacksite editor production program from the Jackdaw-inspired authoring foundation through a release-ready indie game workflow.
The M0-M5 program remains the historical foundation: it adapts useful Jackdaw patterns without cloning its format or architecture. M6-M7 extend that foundation with the reliability, content, and shipping capabilities required to call Blacksite a production editor.
Milestone sequence
M1-M5 can advance in parallel where dependencies permit. M6 P0 reliability work is required before production signoff. M7 closes only through the objective acceptance gate in #50.
Operating rules
Cross-cutting production checklist
Production gate
Issue #50 is the release criterion. “Feature exists” is not enough: the representative project, soak, performance, recovery, content-validation, packaging, and first-hour QA evidence must all be linked before the editor is called production-ready.
Created issue index
M0 - Foundation and polish seams
M1 - Brush-based blockout
M2 - Materials and asset pipeline
M3 - Terrain and physics placement
M4 - Extensibility and runtime integration
M5 - Regression, docs, and first-hour UX
M0 progress update from local commits
19c4d01and2fa6410:Next active M0 work: BS-JD-002 Scene document abstraction above DynamicScene RON.
M0 progress update after
2054fa2:Closed:
Additional foundation work landed:
LightDesccomponents are runtime-disabled with an inline inspector message instead of switching the whole viewport to Forward.InspectorOrderimport path.Verified with focused tests plus workspace and all-features checks.
Next active M0 ticket: BS-JD-004 / #6 Unified operator/action framework.
M0 progress update after
d77cc6a:BS-JD-004 / #6 has its first operator bridge committed:
Next #6 implementation slice: migrate representative scene mutation paths (asset drop/material apply/component add/gizmo commit) onto explicit operators and add targeted undo/cancel tests.
M0 closeout: foundation cut is complete and pushed through:
19c4d01Start M0 editor workflow polish2fa6410Polish inspector add component workflow2054fa2Advance M0 scene and rendering foundationsd77cc6aAdd editor operator lifecycle bridgecc6acb1Complete M0 editor asset workflowM0 delivered the adoption policy, SceneDocument foundation, component metadata/inspector foundation, operator lifecycle bridge, asset operator routing, consolidated actor material UI, texture picker/drop controls, JPEG texture support, and related docs.
Remaining broad launcher/command-palette/selection/viewport productivity items have been carried forward to M5 instead of being closed as completed.
Production-readiness expansion (2026-07-10)
M6 - Reliability, recovery, and project workflow
M7 - Content production and shipping
The immediate implementation order is #40 current hierarchy/drag work, then #39 transactional save/recovery, while existing M2/M5 asset and regression items continue to close foundational gaps.
M7 roadmap checkpoint — #46 dedicated skinned-renderer follow-up
The skeletal-animation workflow's acceptance remains recorded on #46. A corrective architecture slice is now implemented locally so rigged, skinned, and animated geometry uses its own authored and hydrated renderer path instead of reusing static-mesh components.
Evidence and the complete change/verification record: #46 corrective follow-up.
Architecture documentation: ADR 0033 — Dedicated skinned mesh renderer.
Roadmap impact:
SkinnedMeshRendererand its dedicated hydration root now own animated/skinned model placement and runtime hierarchy preservation.Renderer/material/component foundation intake
M2 now has a P0 foundation item: #51 (
BS-JD-207).It establishes the shared contract needed by #16 and #18: stable material slots on both static and skinned renderers, shared Material assets, explicit one-level Material Instances, transient property blocks, a transactional legacy upgrader, and exact custom Surface WGSL semantics across raster and Solari. It also depends on the registry-driven component lifecycle being expanded in #27.
The actor-pose regression found during this intake has reopened #46. These links record planned dependencies only; implementation, tests, documentation, and screenshot evidence remain pending.
Renderer/material/component foundation checkpoint
The M2/M4/M7 cross-cutting foundation from #51 is implemented and locally accepted:
Canonical evidence: #51 comment 865.
The branch, docs, and screenshots remain local and unpublished. #51 intentionally remains open because dynamic post-skin/morph BLAS updates are not available; deformed actors are omitted from RT instead of producing bind-pose ghosts.
Foundation branch published
Commit
0798aa5is now available oncodex/renderer-material-component-foundation, including LFS-backed fixtures and evaluation screenshots.Rendered evidence and immutable documentation links are on #51's published-evidence comment. The deformed-BLAS limitation remains explicitly open.
Codex lineage integrated into main
The verified Codex work from yesterday and today is now one linear published main history:
0798aa5renderer/material/component foundationb4aa61eproduction navigation workflow5a82a9ecollaborative authored-file safetyf2ad88fproduction-readiness matrix and next material/drop plan3931de1hot-reload feature-matrix integration fixorigin/mainnow points to3931de1. The integrated tree passes the full workspace source test/lint/check gate, launch-feature Clippy, content validation with 0 blocking findings, and navigation artifact validation. Packaged tests remain deferred by owner instruction; the objective production gate in #50 remains open.Material authoring slice integrated
Main advanced from
3931de1to3794faa.Completed and closed:
The implementation includes indexed live acceptance evidence, full workspace source verification, level validation with 0 blockers, and current navigation artifacts. Packaged testing remains owner-deferred.
The production gate update is recorded in #50 comment 910. The roadmap is still active: next P0 quality/governance work remains #32, #33, #35, and the unresolved V1 boundary in #51; terrain/physics/brush workflows also remain before G2 can pass.
#35 governance/documentation structure is closed after the M0-M7 audit in comment 928. The audit deliberately leaves partial/unimplemented capability tickets open. Remaining P0 capability/quality work is #51, #33, and #32; production status remains tracked as Not ready in #50.
Progress update: collaborative file safety #49 passed live acceptance, closed, and landed on
mainat61be244. The next robustness slice is removing main-thread blocking from native file dialogs after live QA exposed a Hyprland “Application Not Responding” prompt while a picker was open.Progress update: #52 non-blocking native dialogs is closed and landed on
mainatba59f57. Scene, asset, prefab, composition, collaboration, Project Browser, and dirty-confirmation dialogs no longer block Bevy's event loop; live Hyprland acceptance and source-only verification passed.Progress update: #22 terrain schema and chunked hydration is closed and landed on
mainated21bcc. The committed terrain showcase, runtime-only chunk/collider ownership, first-class editor identity, inspector/history path, ADR 0039, and full source verification are complete. Next terrain slice is #23 grouped sculpt strokes.Terrain production workflow update: #23 is accepted and closed in
293811a.The representative terrain fixture now has modal Raise/Lower/Flatten/Smooth/Noise tools, exact cancel restoration, one history transaction per stroke, terrain-following visual feedback, exclusive viewport input ownership, and no transform-gizmo overlap. Full workspace source gates, content validation, navigation freshness, and native Wayland acceptance pass. Evaluation record.
Packaged acceptance remains deferred by owner direction. Terrain material layers/weight painting (#24), broader representative workflow signoff, performance budgets, soak, clean-checkout CI, and independent first-hour QA remain open, so the production gate stays open.
Roadmap progress: closed #24 (terrain material layers and texture painting MVP) on
mainatd1a56f7. Terrain now has up to four shared material layers, compact normalized sample weights, blended PBR rendering, inspector assignment, and modal Paint/Erase in the existing horizontal toolbar. Source gates and live native-Wayland acceptance passed; evidence is attached natively on #24.M3 progress: physics placement (#25) is complete and published on
mainat 0e7aed4.This closes the transactional drop/settle workflow with grouped history, exact cancel, deterministic Edit-mode physics ownership, explicit prerequisite feedback, a regression fixture, live Wayland evidence, and current documentation. The remaining open M3 work is collider authoring diagnostics and overlays (#26), which is the next milestone item.
M3 - Terrain and physics placement is complete and the milestone is closed with 5/5 issues resolved.
The final item, collider authoring diagnostics (#26), is published on
mainat 0ce43fc. It adds shared authored/runtime health across the inspector, Collider viewport, Diagnostics, and physics placement, with live native evidence and a committed fixture. Full workspace tests and all-target Clippy are green; project validation has 0 blocking errors.P0 renderer/material foundation #51 is now closed on
main.The issue's prior scope was corrected rather than overstated: shipped stable renderer slots, shared Material/Instance assets, Surface ABI parity for eligible geometry, migration, and bind-pose-safe Solari exclusion remain accepted. Runtime property blocks/promotion are now #53 (P1/M2), and dynamic skinned/morph Solari BLAS updates are #54 (P2/M7). Acceptance-boundary documentation is commit 9a67a25.
BS-JD-502 / #33 is complete on
mainat1ab3886. The production operator contract now covers stable terminal status, exact failure/cancel/no-op rollback, helper cleanup, atomic grouping/lighting, modal command ownership, read-only CSG, terrain/physics interruptions, and repeated semantic undo/redo. Full workspace tests, strict all-target Clippy, format/diff checks, and level validation passed. G3 is source-complete but remains Partial until the nominated release candidate is rerun from a clean checkout. The remaining open P0 implementation blocker is #32 (sample scenes and regression pack).Roadmap update (2026-07-13):
mainat62b5389.d52cc2e; full-resolution Gitea attachments and the five-workflow interaction matrix are in #32 comment 1057.c55f347.Packaged tests remain owner-deferred.
Production-roadmap checkpoint at
a048233fceab86649f8c1004137a59f0cd62ac12:Roadmap checkpoint: deterministic asset integrity shipped
#56 is complete and published on
mainat7e99243a78ee99207763ec92e80bcf6dd03f7151.The imported asset registry and generated static-mesh/animation manifests now use shared content-addressed fingerprints, preserve equivalent RON bytes, normalize registry order, and keep validators read-only. A fresh LFS checkout remained clean through native startup, asset scan, mtime-only drift,
validate-levels, andvalidate-samples; direct native attachments and exact hashes are linked from #56.The overall program remains active rather than production-ready. #50 is still the release gate, packaged acceptance remains owner-deferred, and native QA opened P1 #58 for missing external painted-chair FBX textures and repeated asset-server errors.
Roadmap checkpoint: deterministic FBX dependency handling shipped
#58 is complete and published on
mainat931f561e7ff1489f897e22ebb3cc7545fcfef702.The FBX pipeline now uses one sandboxed external-texture resolver from parse through import, manifest generation, validation, and Asset Browser preview. Imports publish sidecars transactionally; known-missing dependencies become one stable preflight state instead of repeated asset-server requests. Exact-commit native evidence covers both the normalized committed chair and a deliberately broken Source Materials fixture.
The overall program remains active and not production-ready. #50 remains the release gate; #37 still requires collective M1 brush signoff, and #53 remains the open P1 material property-block implementation item. Packaged acceptance remains owner-deferred, and no release candidate is nominated.
Roadmap update: the existing M2 milestone has been broadened to M2 - Content workspace and asset pipeline rather than adding a duplicate milestone. Epic #59 tracks the refactor, with storage contract #60, destination-first import #61, path-agnostic catalog #62, editable material extraction #63, static/skinned model material mappings #64, and acceptance signoff #65; existing #17, #19, #20, and #21 remain in the milestone.