docs/superpowers/ws3-kickoff.md
You are resuming the raylib 6.0 upgrade. WS0, WS1, WS2a, WS2b are done and CI-green on branch 6.0-rc. This brief is your starting point for WS3. (Background context is in CLAUDE.md — loaded every session — and in the roadmap spec; this file is the WS3-specific working brief.)
Bring the safe raylib crate back to green against raylib 6.0 and make it 6.0-parity:
raylib-sys types as the public API — raylib::Vector2/3/4/Matrix/Quaternion become the raylib_sys types (WS2 built these). This retires glam from the safe crate's public surface.Done = the raylib crate compiles clean, tests pass, and the fork 3-OS CI is green (the full safe-API surface, not just raylib-sys).
docs/superpowers/notes/ws1-breakage-baseline.md — grouped by category with per-symbol action items. This is your primary checklist.docs/superpowers/specs/2026-05-25-raylib-rs-6.0-roadmap-design.md.docs/superpowers/inventory.md.raylib-sys/src/{math.rs,vector_math.rs,matrix_quat_math.rs}, plus optional mint_conv.rs/glam_conv.rs.raylib-6.0-effort.md (state) + prefer-bindgen-generated-types.md (a standing preference).raylib/src/core/math.rs currently aliases Vector2 = glam::Vec2 (lines ~25–27) and hand-rolls Quaternion (struct+impl ~54–470) and Matrix (~451–960). In 6.0 those types + their math live in raylib-sys. WS3: re-export the sys types (pub use ffi::{Vector2, Vector3, Vector4, Matrix, Quaternion};) and delete the redundant hand-rolled safe Matrix/Quaternion (the sys versions have the raymath methods now). Keep Ray/BoundingBox/RayCollision/Transform/Rectangle wrappers.MintVec* indirection collapses. raylib/src/lib.rs defines MintVec2=ffi::Vector2 … and the API threads impl Into<MintVec2> through ~172 call sites across 9 files (105 MintVec2, 57 MintVec3, 8 MintMatrix, …; heaviest in core/drawing.rs). Since the public Vector2 now is ffi::Vector2, MintVec2 == Vector2. Decide (see Open Decisions) whether to deprecate MintVec* as aliases or remove them; either way sweep impl Into<MintVec2> → impl Into<Vector2>.math.rs + ~10 method calls (.normalize(), .dot(), …) that now resolve to the native raymath-wrapper methods WS2a added. Remove the hard glam dep from raylib/Cargo.toml; expose glam/mint/serde as optional features that forward to raylib-sys/<feat>.Model.bones/boneCount/bindPose → Model.skeleton.{...}; ModelAnimation.frameCount→keyframeCount, framePoses→keyframePoses (ModelAnimPose = Transform*). The Drop/unload paths must use UnloadModelAnimations (plural) — get this right to avoid use-after-free. Add a focused RAII test.DrawModelPoints/DrawModelPointsEx (remove/retire the safe wrappers).UnloadModelAnimation→UnloadModelAnimations; DrawCircleGradient now takes a Vector2 center; LoadFontData gained a trailing glyphCount: *mut i32; UpdateModelAnimation frame is f32; SetSaveFileTextCallback text arg is *const i8; DecodeDataBase64 pointer type.core/math.rs to re-export sys types; delete redundant hand-rolled Matrix/Quaternion; fix the ~10 internal glam method calls (they map to native methods).MintVec* in lib.rs (deprecate or remove per decision) + sweep impl Into<MintVec2> → impl Into<Vector2> across the 9 files.raylib/Cargo.toml: drop hard glam; add optional glam/mint/serde features forwarding to raylib-sys.ws1-breakage-baseline.md list to zero.raylib.h (the repo has checklist.md + find_unimplemented.py to help).inventory.md): #272, #268, #266, #263, #259, #252, #250, #257, #277, #282, #275, #270, … — verify each still applies to 6.0 before taking.baseline.yml to cargo build/test the workspace, not just raylib-sys).MintVec* fate: deprecate as #[deprecated] aliases for one release (courtesy), or remove outright (it's a 6.0 major bump, so removal is allowed)?DrawModelPoints/Ex: remove from the safe API, or keep deprecated stubs?Branch 6.0-rc in the fork (fork remote). Push to the fork to run CI; one merge to raylib-rs/unstable only at the very end (WS8). Workflow: confirm decisions → writing-plans (per the split) → subagent-driven-development (fresh subagent per task, spec + quality review, controller verifies, frequent commits with Co-Authored-By: Claude Opus 4.7 <[email protected]>). Cherry-picked PRs keep their author via Co-authored-by.