4.2 KiB
4.2 KiB
Editor Sample Regression Pack
Date: 2026-07-13 Issue: BS-JD-501 / Gitea #32 Milestone: M5 - Regression, docs, and first-hour UX
Goal
Ship a deterministic five-scene editor regression pack that is easy to open from the editor and that fails headless validation when its catalog, authored data, or referenced assets drift. The pack must cover Brush, Material, Terrain, Physics Placement, and Rendering workflows.
Decisions
assets/samples/editor_samples.ronis the conventional, versioned pack manifest. This remains a QA/editor convention and does not extendProjectSettings.- The manifest is parsed and validated in the
scenecrate. Editor UI and headless tooling consume that one representation. - Every entry has a stable ID, label, area, project-relative
.scn.ronpath, summary, and nonempty operator checks. Manifest order is menu and report order. - Exactly one entry for each required area is release-gated. Scene paths must remain regular files
inside
assets/levels/; traversal, absolute paths, symlink escapes, duplicates, and future schemas are blocking. - Existing accepted terrain, physics-placement, and rendering fixtures remain canonical entries.
Add dedicated brush and material scenes under
assets/levels/samples/and strengthen weak visual anchors in the existing fixtures instead of duplicating them. cargo validate-samples --project .combines pack-specific structure/feature checks with the authoritativevalidate_projectreport. It verifies stable actor IDs, required area components, authoring-only scene documents, and referenced content.- Terrain descriptors and their shared material layers become first-class project-validation input. Actor-owned invalid descriptors or missing material references are blocking findings.
File > Open Sampleis backed by a cached project catalog and opens through normal scene-tab I/O. Invalid or unavailable catalogs produce a disabled, actionable row rather than a panic.- CI hydrates Git LFS before content validation and runs both validation commands. Packaged-runtime tests remain deferred by project-owner request.
Implementation
- Add the manifest schema, deterministic report, safe path resolver, and sample feature checks to
scene::sample_pack, with malformed/missing/duplicate/path-escape fixture tests. - Add typed
TerrainDescvalidation and base/layer material dependency collection to authoritative project validation, including owner-attributed tests. - Add the
validate-samplesxtask binary, Cargo alias, JSON mode, stable console summary, and CI steps. Enable LFS hydration at checkout and verify hydrated objects. - Add the five-entry manifest,
brush_blockout.scn.ron, andmaterial_lab.scn.ron. Give every sample actor a stableActorId; add visible rendering anchors and distinct physics shapes where the current fixtures are ambiguous. - Load the catalog after project startup, render
File > Open Samplein manifest order, and route a selected stable ID through scene I/O. Add unknown-entry and deterministic-row tests. - Add a no-GPU typed-deserialization test over every manifest scene so unknown Bevy component registrations fail before native QA.
- Document pack contracts, per-scene checks, release commands, and the editor workflow. Update ADR 0028, the root README checklist/controls, editor/docs indexes, feature guides, roadmap status, debt audit, and production-readiness evidence.
- Run source gates, open all five samples through the native menu, exercise one representative tool interaction per area, inspect logs, and attach representative native issue images when useful.
Acceptance
- Five manifest entries cover all required areas and open through
File > Open Sample. - Every entry type-deserializes and has stable actor IDs plus its required authored feature.
validate-levelsreports terrain material dependencies and has no blocking findings.validate-samplesis deterministic, CI-backed, and exits nonzero for pack or project blockers.- Native viewport captures are nonblank, correctly framed, and free of missing-reference, hydration, render, or operator errors.
- Documentation gives contributors a single release-use workflow and explains every sample check.