QA - M1 Brush-based blockout acceptance signoff #37
Labels
No Label
area:assets
area:brushes
area:extensions
area:governance
area:inspector
area:operators
area:physics
area:project-ux
area:quality
area:runtime
area:scene-io
area:terrain
area:viewport
priority:P0
priority:P1
priority:P2
priority:P3
roadmap:jackdaw
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#37
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?
Summary
Milestone-level QA/signoff ticket for M1 - Brush-based blockout. This ticket intentionally reopens milestone tracking even though implementation tickets #10-#15 are closed, so acceptance can be approved as a collective editor workflow.
Scope
Validate the shipped brush milestone end-to-end in the editor, including brush schema/hydration, draw workflow, edit modes, CSG, per-face material/UV authoring, validation, repair, save behavior, undo/redo, and docs/workflow coherence.
Combined Acceptance Checklist
BS-JD-101 - Brush authoring schema and hydration MVP (#10)
BS-JD-102 - Quick add and draw-brush tool (#11)
QA-approved and committed locally as
48b1448(Improve quick brush creation workflow). Enhancements include concave-to-convex composition, duplicate point normalization, optimized convex part merging, viewport key hints, and two-step height selection before final commit.BS-JD-103 - Brush element edit modes (#12)
BS-JD-104 - Brush CSG operations (#13)
BS-JD-105 - Per-face material and UV controls (#14)
BS-JD-106 - Brush validation, repair, and diagnostics (#15)
Suggested QA Pass
.scn.ronto confirm generated brush mesh children are stripped.Signoff Notes
Use this ticket for QA findings and final M1 approval. If any checklist item fails, open or link a follow-up issue and leave this ticket open until the milestone is accepted.
BS-JD-103 / #12 checklist hardening update:
Committed locally as
1b9fbeb(Group brush clip history edits). Clip mode now commits transform + brush changes as one grouped history command, so one undo/redo step should restore/apply the whole clip operation together.Verification passed:
cargo fmt --checkcargo test -p editor brush_editcargo check -p editor --all-targetscargo check --workspace --all-targetscargo check --workspace --all-targets --all-featuresLeaving the #37 checklist unchecked until interactive QA confirms the edit-mode flow.
BS-JD-104 / #13 checklist hardening update:
Committed locally as
3f85d25(Group brush CSG history edits). CSG commit now records the primary transform/brush update and merge/intersect operand deletion as one grouped history command, so undo/redo should step the whole CSG operation together.Verification passed:
cargo fmt --checkcargo test -p editor brush_csgcargo check -p editor --all-targetscargo check --workspace --all-targetscargo check --workspace --all-targets --all-featuresLeaving the #37 checklist unchecked until interactive QA confirms subtract/intersect/merge behavior.
BS-JD-105 / #14 checklist audit:
No additional local code changes were needed in this pass. Face-mode inspector controls, Asset Browser-aware material/texture picker/drop rows, persisted
BrushFaceDescrefs/UV fields, and shared hydration face grouping are present. Verification rerun withcargo test -p shared brushandcargo check -p editor --all-targets.Leaving the #37 checklist unchecked until interactive QA confirms material/texture assignment, UV preview, and save/reload persistence.
BS-JD-106 / #15 checklist audit:
No additional local code changes were needed in this pass. Shared validation, hydration skip, save blocking, inspector diagnostics, Window -> Brush Diagnostics, and undoable Reset Cube repair are present.
Verification rerun:
cargo test -p shared brushcargo test -p shared actorcargo check -p editor --all-targetsLeaving the #37 checklist unchecked until interactive QA confirms diagnostics selection/reset and invalid-brush save blocking.
Brush edit mode QA finding from #12 has a local QA-ready fix awaiting user validation. The M1 signoff checklist remains open.
Specific items to re-test before checking off BS-JD-103:
Esc/Object mode.No push has been performed.
BS-JD-103 QA retest scope changed: the brush element fix now uses the standard transform gizmo on the selected vertex/edge/face set.
Retest additions:
Wtranslates selected brush vertices/edges/faces.Erotates selected brush vertices/edges/faces around the selection pivot.Rscales selected brush vertices/edges/faces around the selection pivot.No push has been performed.
M1 continuation checkpoint on 2026-06-24 after the Bevy 0.19 upgrade:
Closed implementation ticket #12 after re-verifying the brush element edit path on the current tree.
Automated checks run:
cargo test -p editor brush_edit-> 5 passedcargo test -p editor brush_csg-> 3 passedcargo test -p shared brush-> 17 passedcargo test -p shared actor-> 8 passedcargo check -p editor --all-targets-> passedCurrent status:
Corrective M1 audit after Bevy 0.19 / Avian 0.7 upgrade:
Implemented locally:
uv_rotationis actually applied to generated mesh UVs. UV offset/scale/rotation now sanitize non-finite authoring values before mesh emission, with diagnostics for invalid UV data.MeshPipelineinit panic. The gizmo pipeline key now follows mesh-view requirements for target format, atmosphere, SSAO, distance fog, tonemap-in-shader, tonemapping mode, and deband dithering.Verification run locally:
cargo fmtcargo test -p shared-> 44 passedcargo test --workspace brush-> editor 13, scene 1, shared 18 brush-filtered tests passedcargo check --workspace --all-targets-> passed with existing egui deprecation warningscargo build -p editor --features dev-> passed after cleaning staleshared/game_hotartifactstimeout 25s cargo run -p editor --features dev-> editor reached runtime, Solari became ready, no transform-gizmo render validation panic, no atmosphere/device-loss crash, and no B0004 hierarchy warnings before timeoutResidual scope:
liblsfg-vk-layer.soVulkan loader warning, and expected MSAA-disabled warnings under deferred rendering.