feat: close stage 0-2 audit groundwork

Remove legacy SDL/OpenGL adapters from the workspace and introduce winit/Vulkan adapter boundaries for the rendered composition root.

Add reproducible toolchain and xtask CI coverage for formatting, tests, clippy, docs, policy, deny, acceptance auditing, and hosted OS matrix evidence.

Strengthen Stage 1 data contracts with byte-first paths, VFS hardening, structured diagnostics, RsLi writer/edit scaffolding, corpus reporting, and resource error classification.

Advance Stage 2 asset preparation by moving mission loading through assets/runtime boundaries, materializing prototype graph data, preserving provenance, and adding inspection/viewer integration.

Record the Stage 0-2 audit input, acceptance roadmap, coverage updates, and documentation notes for follow-up evidence.
This commit is contained in:
2026-06-23 22:05:16 +04:00
parent 83d763dd70
commit f8e447ffee
40 changed files with 5323 additions and 1342 deletions
+4 -2
View File
@@ -21,7 +21,7 @@ S0-CORPUS-005 covered cargo test -p fparkan-corpus --offline fingerprint_changes
S0-CORPUS-006 covered cargo test -p fparkan-corpus --offline atomic_report_write
S0-CLI-001 covered cargo test -p fparkan-cli --offline stable_exit_codes_are_mapped
S0-CLI-002 covered cargo test -p fparkan-cli --offline accepts_json_format_option archive_json_has_schema_version
S0-GL-001 covered cargo test -p fparkan-platform-sdl -p fparkan-render-gl --offline adapter_boundary_is_project_owned_unsafe_free
S0-GL-001 covered cargo test -p fparkan-render-vulkan --offline backend_tracks_render_request_and_presents
S0-LIMIT-001 covered cargo test -p fparkan-binary --offline rejects_count_stride_overflow
S0-LIMIT-002 covered cargo test -p fparkan-binary --offline rejects_oversized_declared_allocation_before_read
L1-P1-NRES-001 covered cargo test -p fparkan-nres --offline licensed_corpora_nres_roundtrip_gates
@@ -71,6 +71,8 @@ S1-PATH-005 covered cargo test -p fparkan-path --offline rejects_escape
S1-PATH-006 covered cargo test -p fparkan-path --offline rejects_absolute_drive_and_nul_paths
S1-PATH-007 covered cargo test -p fparkan-path --offline join_under_keeps_normalized_path_below_root
S1-PATH-008 covered cargo test -p fparkan-path --offline original_separators_and_raw_bytes_are_preserved
S1-H02 covered cargo test -p fparkan-path --offline accepts_non_utf8_legacy_bytes
S1-M01 covered cargo test -p fparkan-vfs --offline memory_vfs_list_prefix_is_boundary_safe
S1-RSLI-001 covered cargo test -p fparkan-rsli --offline parses_minimal_empty_library
S1-RSLI-002 covered cargo test -p fparkan-rsli --offline rejects_invalid_header_fields
S1-RSLI-003 covered cargo test -p fparkan-rsli --offline rejects_entry_table_bounds
@@ -222,7 +224,7 @@ S3-RENDER-008 covered cargo test -p fparkan-render --offline recording_backend_s
S3-RENDER-009 covered cargo xtask policy
S3-GL-001 omitted permanent macOS Desktop GL 3.3 adapter is not implemented; historical CGL probe is retained as external evidence only
S3-GL-002 omitted outside the current macOS-focused goal scope; GLES2 remains documented for portable/non-macOS targets
S3-GL-003 covered cargo test -p fparkan-render-gl --offline shader_compile_failure_diagnostic_contains_profile_and_log
S3-GL-003 blocked legacy fparkan-render-gl adapter removed while Vulkan renderer path is being brought in as the stage-3 backend
S3-VIEWER-001 covered cargo test -p fparkan-viewer --offline model_fixture_uses_viewer_service_and_render_commands
S4-ANIM-001 covered cargo test -p fparkan-animation --offline anim_key24_decodes_signed_quaternion
S4-ANIM-002 covered cargo test -p fparkan-animation --offline frame_map_decodes_u16_and_uses_attr_frame_count
1 # Acceptance coverage manifest.
21 S0-CORPUS-006
22 S0-CLI-001
23 S0-CLI-002
24 S0-GL-001
25 S0-LIMIT-001
26 S0-LIMIT-002
27 L1-P1-NRES-001
71 S1-PATH-006
72 S1-PATH-007
73 S1-PATH-008
74 S1-H02
75 S1-M01
76 S1-RSLI-001
77 S1-RSLI-002
78 S1-RSLI-003
224 S3-RENDER-009
225 S3-GL-001
226 S3-GL-002
227 S3-GL-003
228 S3-VIEWER-001
229 S4-ANIM-001
230 S4-ANIM-002
+367
View File
@@ -0,0 +1,367 @@
# Stage 0-2 acceptance IDs
`L0-COPYRIGHT-001`
`L0-P1-001`
`L0-P1-002`
`L0-P2-001`
`L0-P2-002`
`S0-ARCH-001`
`S0-ARCH-002`
`S0-ARCH-003`
`S0-ARCH-004`
`S0-ARCH-005`
`S0-ARCH-006`
`S0-DIAG-001`
`S0-DIAG-002`
`S0-CORPUS-001`
`S0-CORPUS-002`
`S0-CORPUS-003`
`S0-CORPUS-004`
`S0-CORPUS-005`
`S0-CORPUS-006`
`S0-CLI-001`
`S0-CLI-002`
`S0-GL-001`
`S0-LIMIT-001`
`S0-LIMIT-002`
`L1-P1-NRES-001`
`L1-P2-NRES-001`
`L1-P1-NRES-002`
`L1-P2-NRES-002`
`L1-P1-NRES-003`
`L1-P2-NRES-003`
`L1-P1-RSLI-001`
`L1-P2-RSLI-001`
`L1-RSLI-QUIRK-001`
`L1-P1-PATH-001`
`L1-P2-PATH-001`
`S1-NRES-001`
`S1-NRES-002`
`S1-NRES-003`
`S1-NRES-004`
`S1-NRES-005`
`S1-NRES-006`
`S1-NRES-007`
`S1-NRES-008`
`S1-NRES-009`
`S1-NRES-010`
`S1-NRES-020`
`S1-NRES-021`
`S1-NRES-011`
`S1-NRES-012`
`S1-NRES-013`
`S1-NRES-014`
`S1-NRES-015`
`S1-NRES-016`
`S1-NRES-017`
`S1-NRES-018`
`S1-NRES-019`
`S1-NRES-022`
`S1-NRES-023`
`S1-NRES-024`
`S1-NRES-025`
`S1-NRES-PROP-001`
`S1-NRES-PROP-002`
`S1-NRES-FUZZ-001`
`S1-PATH-001`
`S1-PATH-002`
`S1-PATH-003`
`S1-PATH-004`
`S1-PATH-005`
`S1-PATH-006`
`S1-PATH-007`
`S1-PATH-008`
`S1-H02`
`S1-M01`
`S1-RSLI-001`
`S1-RSLI-002`
`S1-RSLI-003`
`S1-RSLI-004`
`S1-RSLI-005`
`S1-RSLI-006`
`S1-RSLI-007`
`S1-RSLI-008`
`S1-RSLI-009`
`S1-RSLI-010`
`S1-RSLI-011`
`S1-RSLI-012`
`S1-RSLI-013`
`S1-RSLI-014`
`S1-RSLI-015`
`S1-RSLI-016`
`S1-RSLI-017`
`S1-RSLI-018`
`S1-RSLI-019`
`S1-RSLI-020`
`S1-RSLI-021`
`S1-RSLI-022`
`S1-RSLI-023`
`S1-RSLI-PROP-001`
`S1-RSLI-FUZZ-001`
`S1-RES-001`
`S1-RES-002`
`S1-RES-003`
`S1-RES-004`
`S1-VFS-001`
`S1-VFS-002`
`S1-VFS-003`
`S1-VFS-004`
`L2-P1-UNIT-001`
`L2-P2-UNIT-001`
`L2-P1-REG-001`
`L2-P2-REG-001`
`L2-P1-GRAPH-001`
`L2-P2-GRAPH-001`
`L2-P1-INHERIT-001`
`L2-P2-INHERIT-001`
`L2-P1-NONGEO-001`
`L2-P2-NONGEO-001`
`L2-P1-GRAPH-002`
`L2-P2-GRAPH-002`
`S2-REG-001`
`S2-REG-002`
`S2-REG-003`
`S2-REG-004`
`S2-UNIT-001`
`S2-UNIT-002`
`S2-UNIT-003`
`S2-UNIT-004`
`S2-UNIT-005`
`S2-UNIT-006`
`S2-UNIT-007`
`S2-PROTO-001`
`S2-PROTO-002`
`S2-PROTO-003`
`S2-PROTO-004`
`S2-PROTO-005`
`S2-PROTO-006`
`S2-PROTO-007`
`S2-PROTO-008`
`S2-PROTO-009`
`S2-PROTO-010`
`S2-PROTO-011`
`S2-PROTO-012`
`S2-PROTO-013`
`S2-PROTO-014`
`S2-GRAPH-001`
`S2-GRAPH-002`
`S2-GRAPH-003`
`S2-GRAPH-004`
`S2-GRAPH-005`
`S2-GRAPH-006`
`S2-PROP-001`
`S2-FUZZ-001`
`L3-P1-MSH-001`
`L3-P2-MSH-001`
`L3-P1-TEXM-001`
`L3-P2-TEXM-001`
`L3-P1-MAT0-001`
`L3-P2-MAT0-001`
`L3-P1-WEAR-001`
`L3-P2-WEAR-001`
`L3-P1-ASSET-001`
`L3-P2-ASSET-001`
`L3-P1-CAPTURE-001`
`L3-P2-CAPTURE-001`
`S3-WEAR-001`
`S3-WEAR-002`
`S3-WEAR-003`
`S3-WEAR-004`
`S3-WEAR-005`
`S3-MAT0-001`
`S3-MAT0-002`
`S3-MAT0-003`
`S3-MAT0-004`
`S3-MAT0-005`
`S3-MAT0-006`
`S3-MSH-001`
`S3-MSH-002`
`S3-MSH-003`
`S3-MSH-004`
`S3-MSH-005`
`S3-MSH-006`
`S3-MSH-007`
`S3-MSH-008`
`S3-MSH-009`
`S3-MSH-010`
`S3-MSH-011`
`S3-MSH-012`
`S3-MSH-013`
`S3-MSH-014`
`S3-MSH-015`
`S3-MSH-016`
`S3-MSH-017`
`S3-MSH-PROP-001`
`S3-MSH-FUZZ-001`
`S3-TEXM-001`
`S3-TEXM-002`
`S3-TEXM-003`
`S3-TEXM-004`
`S3-TEXM-005`
`S3-TEXM-006`
`S3-TEXM-007`
`S3-TEXM-008`
`S3-TEXM-009`
`S3-TEXM-010`
`S3-TEXM-011`
`S3-TEXM-012`
`S3-TEXM-013`
`S3-TEXM-FUZZ-001`
`S3-MAT0-007`
`S3-MAT-RESOLVE-001`
`S3-MAT-RESOLVE-002`
`S3-MAT-RESOLVE-003`
`S3-MAT-RESOLVE-004`
`S3-MAT-RESOLVE-005`
`S3-RENDER-001`
`S3-RENDER-002`
`S3-RENDER-003`
`S3-RENDER-004`
`S3-RENDER-005`
`S3-RENDER-006`
`S3-RENDER-007`
`S3-RENDER-008`
`S3-RENDER-009`
`S3-GL-001`
`S3-GL-002`
`S3-GL-003`
`S3-VIEWER-001`
`S4-ANIM-001`
`S4-ANIM-002`
`S4-ANIM-003`
`S4-ANIM-004`
`S4-ANIM-005`
`S4-ANIM-006`
`S4-ANIM-007`
`S4-ANIM-008`
`S4-ANIM-009`
`S4-ANIM-010`
`S4-ANIM-011`
`S4-ANIM-012`
`S4-ANIM-013`
`S4-ANIM-014`
`S4-ANIM-PROP-001`
`S4-MAT-001`
`S4-MAT-002`
`S4-MAT-003`
`S4-MAT-004`
`S4-MAT-005`
`S4-MAT-006`
`S4-FX-001`
`S4-FX-002`
`S4-FX-011`
`S4-FX-012`
`S4-FX-013`
`S4-FX-014`
`S4-FX-015`
`S4-FX-016`
`S4-FX-017`
`S4-FX-018`
`S4-FX-019`
`S4-FX-020`
`S4-FX-021`
`S4-FX-022`
`S4-FX-023`
`S4-FX-024`
`S4-FX-FUZZ-001`
`L4-P1-ANIM-001`
`L4-P2-ANIM-001`
`L4-P1-CAPTURE-001`
`L4-P2-CAPTURE-001`
`L4-P1-FX-001`
`L4-P2-FX-001`
`L4-P1-FX-002`
`L4-P2-FX-002`
`L4-FX-OP6-001`
`L4-P1-EFFECT-001`
`L4-P2-EFFECT-001`
`S5-LMESH-001`
`S5-LMESH-002`
`S5-LMESH-003`
`S5-LMESH-004`
`S5-LMESH-005`
`S5-LMESH-006`
`S5-LMESH-007`
`S5-LMESH-008`
`S5-LMESH-009`
`S5-LMAP-001`
`S5-LMAP-002`
`S5-LMAP-003`
`S5-LMAP-004`
`S5-LMAP-005`
`S5-LMAP-006`
`S5-LMAP-007`
`S5-LMAP-008`
`S5-LMAP-009`
`S5-LMAP-010`
`S5-LMAP-011`
`S5-TERRAIN-001`
`S5-TERRAIN-002`
`S5-TERRAIN-003`
`S5-TERRAIN-004`
`S5-TMA-001`
`S5-TMA-002`
`S5-TMA-003`
`S5-TMA-004`
`S5-TMA-005`
`S5-TMA-006`
`S5-TMA-007`
`S5-TMA-008`
`S5-TMA-009`
`S5-TMA-010`
`S5-TMA-011`
`S5-TMA-012`
`S5-TMA-013`
`S5-TMA-014`
`S5-TMA-015`
`S5-TMA-016`
`S5-TMA-017`
`S5-TMA-PROP-001`
`S5-TMA-FUZZ-001`
`S5-LOAD-001`
`S5-LOAD-002`
`S5-LOAD-003`
`S5-LOAD-004`
`S5-LOAD-005`
`S5-LOAD-006`
`S5-LOAD-007`
`S5-LOAD-008`
`S5-LOAD-009`
`S5-LOAD-010`
`S5-WORLD-001`
`S5-WORLD-002`
`S5-WORLD-003`
`S5-WORLD-004`
`S5-WORLD-005`
`S5-WORLD-006`
`S5-WORLD-007`
`S5-WORLD-008`
`S5-WORLD-009`
`S5-WORLD-010`
`S5-WORLD-011`
`S5-WORLD-012`
`S5-WORLD-013`
`S5-WORLD-014`
`S5-WORLD-015`
`S5-WORLD-016`
`S5-WORLD-017`
`S5-WORLD-018`
`S5-WORLD-019`
`S5-WORLD-PROP-001`
`L5-P1-LMESH-001`
`L5-P2-LMESH-001`
`L5-P1-LMAP-001`
`L5-P2-LMAP-001`
`L5-LMAP-POLY-001`
`L5-P1-TMA-001`
`L5-P2-TMA-001`
`L5-P1-MISSION-001`
`L5-P2-MISSION-001`
`L5-P1-MISSION-002`
`L5-P2-MISSION-002`
`L5-P1-HEADLESS-001`
`L5-P2-HEADLESS-001`
`L5-P1-RENDER-001`
`L5-P2-RENDER-001`
`L3-DEVICE-001`
`L5-RG40-001`