Back to Raylib Rs

Rustdoc rewrite — per-file stub inventory

docs/superpowers/notes/rustdoc-rewrite-stub-inventory.md

6.0.030.8 KB
Original Source

Rustdoc rewrite — per-file stub inventory

Snapshot of single-line /// stubs (added by WS6a, not enriched by WS7) that the Wave 1 implementers will enrich. Each Wave-1 dispatch brief includes its file's section verbatim.

Total stubs across all files: 207 (spec quotes ~183; actual count is ~13% higher because WS7's enrichment primarily targeted items that already had docs before WS6a — Color, Rectangle, Image, Texture2D, RenderTexture2D, Mesh, Model, Material, ModelAnimations, Wave, Sound, Music, AudioStream, Shader, Font, the math types — rather than WS6a's minimal one-liners. Only one WS6a stub was enriched by WS7: RaylibDraw in core/drawing.rs. Spec §5 may want to update ~183~207).

Per-batch totals:

BatchFilesStubs
B1core/error.rs96
B2ease.rs28
B3core/drawing.rs16
B4core/camera.rs13
B5core/models.rs11
B6core/window.rs7
B7core/mod.rs5
B8core/macros.rs4 (special; macro-internal #[allow(missing_docs)] — not /// stubs)
B9 + B1013 small files27
Total21 files207

Source of truth for "WS6a-added" status: the three WS6a commits 5a297e8 (Batch 1 — error.rs), 131a1b0 (Batch 2 — ease/drawing/ camera/models/window/mod/macros), 3a928b3 (Batch 3 — 13 small files). Anything in those three diffs that is still in stub state today (one /// line, no # Examples, no multi-paragraph prose) is in scope.

WS7-enriched items (out of scope, do NOT re-enrich):

  • lib.rs crate-level + prelude.rs
  • core/window.rs: RaylibHandle, RaylibThread, RaylibBuilder (NB: these are not WS6a stubs; they live in core/mod.rs)
  • core/drawing.rs: RaylibDraw trait
  • core/mod.rs: Color, Rectangle (NB: these are not WS6a stubs; the types themselves live in raylib-sys not mod.rs)
  • core/texture.rs: Image, Texture2D, RenderTexture2D
  • core/models.rs: Mesh, Model, Material, ModelAnimations
  • core/audio.rs: RaylibAudio, Wave, Sound, Music, AudioStream
  • core/shaders.rs: Shader
  • core/text.rs: Font
  • core/math.rs: Vector2/3/4, Matrix, Quaternion
  • core/collision.rs: module-level family example
  • test_harness.rs: module-level + BGRA/Y-flip quirk note
  • rgui/mod.rs: module-level
  • rlgl/mod.rs: module-level

raylib/src/core/error.rs (Wave-1 dispatch B1)

WS6a-added stubs: 96 (target: enrich all to Template A — variant prose with **Cause:** + **Recovery:** paragraphs; parent enums keep their existing one-liner AND get a Flavor-3 # Examples block).

WS7-enriched items in this file: none.

Parent enums (require Flavor-3 # Examples block on the enum itself; one example per parent enum, NOT per variant):

LineEnum
7AudioInitError
18ExportWaveError
29LoadSoundError
64UpdateAudioStreamError
90AllocationError
105InvalidMeshError
134GenMeshError
145CompressionError
153Base64Error
164LoadModelError
178LoadModelAnimError
189SetMaterialError
200LoadMaterialError
211LoadFontError
230InvalidImageError
262UpdateTextureError
281LoadTextureError
304RaylibError

Variant stubs (Template A: summary + Cause + Recovery):

LineItemFlavorNotes
5AudioInitError (enum doc)parent-summaryparent enum line 7
8AudioInitError::DoubleInitTemplate A
11AudioInitError::InitFailedTemplate A
16ExportWaveError (enum doc)parent-summaryparent enum line 18
19ExportWaveError::QoaBadSamplesTemplate Atuple variant
22ExportWaveError::ExportFailedTemplate A
27LoadSoundError (enum doc)parent-summaryparent enum line 29
30LoadSoundError::LoadFailedTemplate Astruct variant
33LoadSoundError::LoadFailed::pathfield-docfield of struct variant
36LoadSoundError::LoadFromWaveFailedTemplate A
39LoadSoundError::LoadWaveFromFileFailedTemplate Astruct variant
42LoadSoundError::LoadWaveFromFileFailed::pathfield-doc
45LoadSoundError::NullTemplate A
48LoadSoundError::LoadMusicFromFileFailedTemplate Astruct variant
51LoadSoundError::LoadMusicFromFileFailed::pathfield-doc
54LoadSoundError::MusicNullTemplate A
59UpdateAudioStreamError (enum doc)parent-summary (multi-line already; leave existing prose, add Flavor-3 # Examples)parent enum line 64; this enum already has a multi-line note block from WS6a-prior; orchestrator triage: treat as enriched-summary + add # Examples only
65UpdateAudioStreamError::SampleSizeMismatchTemplate Astruct variant
68UpdateAudioStreamError::SampleSizeMismatch::expectedfield-doc
70UpdateAudioStreamError::SampleSizeMismatch::providedfield-doc
73UpdateAudioStreamError::TooManyFramesTemplate Astruct variant
76UpdateAudioStreamError::TooManyFrames::maxfield-doc
78UpdateAudioStreamError::TooManyFrames::providedfield-doc
81UpdateAudioStreamError::CallbackSlotBusyTemplate A
88AllocationError (enum doc)parent-summaryparent enum line 90
(91)AllocationError::NullAllocalready-enrichedpre-existing multi-line doc (see line 91); NOT a WS6a stub
(94)AllocationError::IntoUIntFailedalready-enrichedpre-existing multi-line doc; NOT a WS6a stub
(98)AllocationError::ZeroBytesalready-enrichedpre-existing one-liner but with [MemAlloc] intra-doc link; orchestrator triage: counts as enriched? If R1 disagrees, treat as Template A
103InvalidMeshError (enum doc)parent-summaryparent enum line 105
106InvalidMeshError::TrianglePointMiscountTemplate A
109InvalidMeshError::IndexOutOfBoundsTemplate A
112InvalidMeshError::VertexUnindexibleTemplate Atuple variant with TryFromIntError payload
115InvalidMeshError::TexcoordsMiscountTemplate A
118InvalidMeshError::Texcoords2MiscountTemplate A
121InvalidMeshError::NormalsMiscountTemplate A
124InvalidMeshError::TangentsMiscountTemplate A
127InvalidMeshError::ColorsMiscountTemplate A
132GenMeshError (enum doc)parent-summaryparent enum line 134
135GenMeshError::InvalidMeshTemplate A#[from] InvalidMeshError
138GenMeshError::AllocationTemplate A#[from] AllocationError
143CompressionError (enum doc)parent-summaryparent enum line 145
146CompressionError::CompressionFailedTemplate A
151Base64Error (enum doc)parent-summaryparent enum line 153
154Base64Error::DecodeFailedTemplate A
157Base64Error::EncodeFailedTemplate A
162LoadModelError (enum doc)parent-summaryparent enum line 164
165LoadModelError::LoadFromFileFailedTemplate Astruct variant
168LoadModelError::LoadFromFileFailed::pathfield-doc
171LoadModelError::LoadFromMeshFailedTemplate A
176LoadModelAnimError (enum doc)parent-summaryparent enum line 178
179LoadModelAnimError::NoAnimationsLoadedTemplate Astruct variant
182LoadModelAnimError::NoAnimationsLoaded::pathfield-doc
187SetMaterialError (enum doc)parent-summaryparent enum line 189
190SetMaterialError::MeshIdOutOfBoundsTemplate A
193SetMaterialError::MaterialIdOutOfBoundsTemplate A
198LoadMaterialError (enum doc)parent-summaryparent enum line 200
201LoadMaterialError::NoneLoadedTemplate Astruct variant
204LoadMaterialError::NoneLoaded::pathfield-doc
209LoadFontError (enum doc)parent-summaryparent enum line 211
212LoadFontError::LoadFromFileFailedTemplate Astruct variant
217LoadFontError::LoadFromFileFailed::pathfield-doc
220LoadFontError::LoadFromImageFailedTemplate A
223LoadFontError::LoadFromMemoryFailedTemplate A
228InvalidImageError (enum doc)parent-summaryparent enum line 230
231InvalidImageError::ZeroWidthTemplate A
234InvalidImageError::ZeroHeightTemplate A
237InvalidImageError::NullDataTemplate A
240InvalidImageError::NullDataFromFileTemplate A
243InvalidImageError::InvalidFileTemplate A
246InvalidImageError::NullDataFromMemoryTemplate A
249InvalidImageError::NullDataFromTextureTemplate A
252InvalidImageError::UnsupportedFormatTemplate A
255InvalidImageError::NonSquareKernelTemplate A
260UpdateTextureError (enum doc)parent-summaryparent enum line 262
263UpdateTextureError::WrongDataSizeTemplate Astruct variant
266UpdateTextureError::WrongDataSize::expectfield-doc
268UpdateTextureError::WrongDataSize::actualfield-doc
271UpdateTextureError::OutOfBoundsTemplate A
274UpdateTextureError::NegativeSizeTemplate A
279LoadTextureError (enum doc)parent-summaryparent enum line 281
282LoadTextureError::TextureFromFileFailedTemplate Astruct variant
285LoadTextureError::TextureFromFileFailed::pathfield-doc
288LoadTextureError::CubemapFromImageFailedTemplate A
291LoadTextureError::TextureFromImageFailedTemplate A
294LoadTextureError::CreateRenderTextureFailedTemplate A
297LoadTextureError::InvalidDataTemplate A
302RaylibError (enum doc)parent-summaryparent enum line 304
305RaylibError::AudioInitTemplate A#[from] variant
308RaylibError::ExportWaveTemplate A#[from] variant
311RaylibError::LoadSoundTemplate A#[from] variant
314RaylibError::AllocationTemplate A#[from] variant
317RaylibError::CompressionTemplate A#[from] variant
320RaylibError::LoadModelTemplate A#[from] variant
323RaylibError::LoadModelAnimTemplate A#[from] variant
326RaylibError::SetMaterialTemplate A#[from] variant
329RaylibError::LoadMaterialTemplate A#[from] variant
332RaylibError::LoadFontTemplate A#[from] variant
335RaylibError::InvalidImageTemplate A#[from] variant
338RaylibError::UpdateTextureTemplate A#[from] variant
341RaylibError::LoadTextureTemplate A#[from] variant

Inventory counts for B1: 18 parent-enum summaries (already present, keep + add # Examples) + 96 variant/field stubs = 114 items requiring touch. Spec §5 quotes "96" — that refers to the variant+field count; the 18 parent-enum summaries are not "stubs" per the strict definition (they already exist and serve as headers), but each one needs a Flavor-3 # Examples block added per §4.2's Template A directive. Orchestrator triage: the brief should clarify whether the 96 count is correct (variants/fields only) or should be 114 (including parent-enum # Examples additions).

Anomalies / judgment calls:

  • AllocationError::NullAlloc, ::IntoUIntFailed, ::ZeroBytes (lines 91, 94, 98) already had multi-line docs before WS6a — they contain intra-doc links to [MemAlloc]. Not strictly WS6a stubs; may be best left as-is. (Counted in the 96 above for completeness.)
  • UpdateAudioStreamError (line 59–63) parent-enum doc has a multi-paragraph note already; this is "partially enriched" prose with a **Notes** block. Flag for orchestrator: leave prose or rewrite to match Template A's parent-enum summary shape?

raylib/src/ease.rs (Wave-1 dispatch B2)

WS6a-added stubs: 28 (target: Flavor 1 — pure-compute # Examples that execute under cargo test --doc).

WS7-enriched items in this file: none.

LineItemFlavorNotes
105linear_noneFlavor 1NB: existing tests in mod tests already cover boundaries — examples can mirror those assertions
109linear_inFlavor 1
113linear_outFlavor 1
117linear_in_outFlavor 1
122sine_inFlavor 1
126sine_outFlavor 1
130sine_in_outFlavor 1
135circ_inFlavor 1
141circ_outFlavor 1
147circ_in_outFlavor 1
158cubic_inFlavor 1
164cubic_outFlavor 1
170cubic_in_outFlavor 1
181quad_inFlavor 1
187quad_outFlavor 1spec §4.3 cites this as the canonical Flavor-1 example
193quad_in_outFlavor 1
203expo_inFlavor 1
212expo_outFlavor 1
221expo_in_outFlavor 1
237back_inFlavor 1
244back_outFlavor 1
251back_in_outFlavor 1known boundary quirk per the existing test comment — examples should test mid-interpolation, not boundary
265bounce_outFlavor 1
282bounce_inFlavor 1
287bounce_in_outFlavor 1
296elastic_inFlavor 1
314elastic_outFlavor 1
330elastic_in_outFlavor 1

Anomalies / judgment calls: none. All 28 are pure-math easing fns; Flavor 1 is a clean fit. The EaseFn type alias (line 26) and Tween struct (line 29) are pre-existing and already documented; out of scope.


raylib/src/core/drawing.rs (Wave-1 dispatch B3)

WS6a-added stubs: 16 (down from spec's quoted 17; RaylibDraw trait on line 546 was enriched by WS7 with full prose + a # Examples block).

WS7-enriched items in this file: RaylibDraw (line 523/546).

Target: Flavor 2 (harness-runnable doctests where the item is a drawing primitive; otherwise Flavor 3). Mode-guard structs and their extension traits are documentation-only; their # Examples should demonstrate the with begin_X / end_X RAII pattern using no_run-style demos with # #[cfg(feature = "software_renderer")] gates where they exercise pixel state.

LineItemFlavorNotes
63RaylibDrawHandleFlavor 3RAII guard for begin_drawing; demo via no_run
110RaylibTextureModeFlavor 2 or 3RAII guard for render-texture; harness-friendly
132RaylibTextureModeExtFlavor 3trait — example via guard usage
172RaylibVRModeFlavor 3VR — no harness coverage; no_run only
191RaylibVRModeExtFlavor 3trait — no_run
227RaylibMode2DFlavor 2 or 32D camera; harness-friendly
247RaylibMode2DExtFlavor 3trait — example via guard usage
287RaylibMode3DFlavor 33D camera; window-required
307RaylibMode3DExtFlavor 3trait — example via guard usage
348RaylibShaderModeFlavor 3shader — window-required
369RaylibShaderModeExtFlavor 3trait — example via guard usage
405RaylibBlendModeFlavor 2 or 3blend mode; harness-friendly
425RaylibBlendModeExtFlavor 3trait — example via guard usage
461RaylibScissorModeFlavor 2 or 3scissor; harness-friendly
481RaylibScissorModeExtFlavor 3trait — example via guard usage
1714RaylibDraw3DFlavor 33D drawing trait; window-required

Anomalies / judgment calls:

  • RaylibDraw (line 523/546) is WS7-enriched and OUT OF SCOPE. Leave untouched.
  • Per spec §5, Batch 2 drawing.rs target is "Flavor 2 (harness- runnable)", but several items here are window-only (VR, 3D camera, shader mode). Implementer should use Flavor 2 where harness- exerciseable, Flavor 3 where window-required.

raylib/src/core/camera.rs (Wave-1 dispatch B4)

WS6a-added stubs: 13 (target: mix of Flavor 1 for math accessors and Flavor 3 for camera-init / mutating ops).

WS7-enriched items in this file: none.

LineItemFlavorNotes
98Camera3D::camera_typeFlavor 1pure accessor
129Camera3D::forwardFlavor 1math accessor
136Camera3D::upFlavor 1math accessor
143Camera3D::move_forwardFlavor 3mutating op
149Camera3D::move_upFlavor 3mutating op
155Camera3D::move_rightFlavor 3mutating op
161Camera3D::move_to_targetFlavor 3mutating op
167Camera3D::yawFlavor 3mutating op
173Camera3D::pitchFlavor 3mutating op
193Camera3D::rollFlavor 3mutating op
199Camera3D::view_matrixFlavor 1math accessor
205Camera3D::projection_matrixFlavor 1math accessor
216Camera3D::update_camera_proFlavor 3mutating op

Anomalies / judgment calls:

  • Camera3D::perspective (line 109), ::orthographic (line 123), and ::update_camera (line 213) are pre-existing doc-stubs from before WS6a (the WS6a diff did not touch them); strictly out of scope but the Wave-1 implementer may want to update them in passing for consistency. Flag for orchestrator: explicitly allow drive-by enrichment on the 3 pre-existing one-liners, or strictly leave alone? Recommendation: enrich them too — they're in the same impl block and visually adjacent.

raylib/src/core/models.rs (Wave-1 dispatch B5)

WS6a-added stubs: 11 (target: Flavor 3 — model-loading and mesh/animation ops require a window).

WS7-enriched items in this file: Model, Mesh, Material, ModelAnimations (the top-level types).

LineItemFlavorNotes
363RaylibModel traitFlavor 3extension trait
372RaylibModel::set_transformFlavor 3trait method
389RaylibModel::meshes_mutFlavor 3trait method
527RaylibMesh traitFlavor 3extension trait
879RaylibMaterial traitFlavor 3extension trait
936FramePoseIterFlavor 1 or 3iterator type — pure-data, but ModelAnimation behind it is window-loaded
1014FramePoseIterMutFlavor 1 or 3iterator type
1111RaylibModelAnimation traitFlavor 3extension trait
1130RaylibModelAnimation::frame_poses_iterFlavor 3trait method
1160RaylibModelAnimation::frame_poses_iter_mutFlavor 3trait method
1254MeshBuilderFlavor 3builder — window required for upload

Anomalies / judgment calls:

  • The RaylibModel, RaylibMesh, RaylibMaterial, RaylibModelAnimation extension traits are conceptual companions to the WS7-enriched parent types. Their # Examples blocks should reference the parent type's example, not duplicate it.
  • FramePoseIter / FramePoseIterMut are pure-data iterators but the data they iterate is window-loaded; either flavor works.

raylib/src/core/window.rs (Wave-1 dispatch B6)

WS6a-added stubs: 7 (target: Flavor 3 — window/monitor inspection requires a window).

WS7-enriched items in this file: none (note: RaylibHandle, RaylibThread, RaylibBuilder were enriched in WS7 but they live in core/mod.rs, not core/window.rs).

LineItemFlavorNotes
15MonitorInfo::widthfield-docstruct field; consider expanding MonitorInfo's parent-struct doc with a # Examples showing monitor enumeration
17MonitorInfo::heightfield-doc
19MonitorInfo::physical_widthfield-doc
21MonitorInfo::physical_heightfield-doc
23MonitorInfo::namefield-doc
25MonitorInfo::positionfield-doc
29WindowStateFlavor 3bitmask wrapper — example via get_window_state + flag inspection

Anomalies / judgment calls:

  • All 6 MonitorInfo field docs are single-line and adequately descriptive; per §4.3 "Skip # Examples" guidance for items where examples are contrived, these may stay as one-liners but should be expanded slightly (e.g., "Monitor width in pixels (virtual/logical)" → "Monitor width in virtual pixels — distinct from physical_width which is reported in millimetres."). Orchestrator triage: enrich prose-only, no examples?

raylib/src/core/mod.rs (Wave-1 dispatch B7)

WS6a-added stubs: 5 (4 module-level pub mod docs + 1 macro doc).

WS7-enriched items in this file: RaylibThread (line 188), RaylibHandle (line 208), RaylibBuilder (line 250).

Per spec §5: "Flavor 1 (Color/Rectangle helpers)". Drift note: the WS6a stubs in mod.rs are NOT Color/Rectangle helpers — they're module-level docs + the rstr! macro. Color and Rectangle live in raylib-sys and are re-exported. Spec §5's flavor assignment for this file is mis-targeted; Template C (module-level doc) is the correct fit for items 5/7/13/18 and Flavor-skip-with-prose for the macro.

LineItemFlavorNotes
5pub mod automationTemplate Cmodule-level — expand to "Automation event recording and playback. See the Automation chapter of the book."
7pub mod callbacksTemplate Cmodule-level
13pub mod color (inline mod)Template Cinline pub mod color { pub use crate::ffi::Color; }
18pub mod dataTemplate Cmodule-level
171rstr! macroSkip # Examples per §4.3, prose-onlyalready has descriptive one-liner; expand with usage note inline in prose

Anomalies / judgment calls:

  • Spec §5's Flavor 1 (Color/Rectangle helpers) for mod.rs is inaccurate. Orchestrator should clarify when dispatching B7 — use Template C for module docs + prose-only for rstr!.

raylib/src/core/macros.rs (Wave-1 dispatch B8)

WS6a-added "stubs": 4 (special case — these are #[allow(missing_docs)] attributes inside macro templates, NOT /// doc stubs. They suppress the missing-docs lint on macro-generated struct fields, where attaching a /// to a pub(crate) $t positional field is awkward.)

WS7-enriched items in this file: none.

Per spec §5: "Skip # Examples; prose-only". This file is macro plumbing; the public-API stubs do not actually exist as items implementers can attach /// blocks to in a useful way.

LineItemFlavorNotes
9make_thin_wrapper arm-1 #[allow(missing_docs)]special — leave alone or improve macro contract docsthe macro itself already has no doc-comment; consider adding a brief macro-level /// describing what make_thin_wrapper! generates
19make_thin_wrapper arm-2 #[allow(missing_docs)]same
35make_thin_wrapper_lifetime arm-1 #[allow(missing_docs)]same
43make_thin_wrapper_lifetime arm-2 #[allow(missing_docs)]same
141make_rslice #[allow(missing_docs)]sameNB: WS6a done-note said "4 macros.rs" — this is a 5th #[allow(missing_docs)] instance, but the original commit 131a1b0 shows 5 added (4 to make_thin_wrapper* + 1 to make_rslice). Spec §5's count of 4 is slightly off; actual count is 5

Anomalies / judgment calls:

  • These are not /// doc-block stubs — they are #[allow(missing_docs)] attribute insertions inside macro_rules! arms. Standard Template B prose enrichment does not apply. Per §4.3 "Skip # Examples", the Wave-1 implementer should add /// macro-level docs to each of make_thin_wrapper!, make_thin_wrapper_lifetime!, impl_wrapper!, gen_from_raw_wrapper!, deref_impl_wrapper!, make_rslice!, impl_rslice! (the publicly-exposed macros) and consider whether the #[allow(missing_docs)] can be removed if the generated struct fields receive a doc-comment via the $(#[$attrs])* passthrough.
  • Orchestrator triage: consider rolling this file into a small-files batch (B9/B10) — its scope is degenerate and the enrichment work is qualitatively different from the rest of B8's charter.

Batch 3 — 13 small files (Wave-1 dispatches B9 + B10)

Total WS6a stubs across all Batch 3: 27 (matches WS6a done-note). Subagent decides flavor per item. Suggested split:

  • B9 (math/data-adjacent, ~14 stubs): consts.rs, core/math.rs, core/misc.rs, core/file.rs, core/input.rs, lib.rs, core/automation.rs.
  • B10 (audio/callbacks/render-adjacent, ~13 stubs): core/audio.rs, core/callbacks.rs, core/callbacks/audio_stream_callback.rs, core/shaders.rs, core/text.rs, core/texture.rs.

raylib/src/consts.rs (B9, 2 stubs)

WS7-enriched items in this file: none.

LineItemFlavorNotes
24MAX_MATERIAL_MAPSFlavor 1pure constant; can show assert_eq!(MAX_MATERIAL_MAPS, 12)
26MAX_SHADER_LOCATIONSFlavor 1pure constant

raylib/src/core/audio.rs (B10, 2 stubs)

WS7-enriched items in this file: RaylibAudio, Wave, Sound, Music, AudioStream (lines elsewhere; these are out of scope).

LineItemFlavorNotes
99WaveSamplesFlavor 3RAII wrapper for LoadWaveSamples; window-required to load a Wave
828SoundAliasFlavor 3borrowed alias to a Sound; window-required

raylib/src/core/automation.rs (B9, 1 stub)

WS7-enriched items in this file: none.

LineItemFlavorNotes
9AutomationEventIterFlavor 3iterator over loaded automation events; window-required for context

raylib/src/core/callbacks.rs (B10, 3 stubs)

WS7-enriched items in this file: none.

LineItemFlavorNotes
15pub mod audio_stream_callbackTemplate Cmodule-level
127SetLogError<'a>Flavor 3error returned from callback registration
365attach_audio_stream_processor_to_musicFlavor 3window+audio-device required

raylib/src/core/callbacks/audio_stream_callback.rs (B10, 1 stub)

WS7-enriched items in this file: none.

LineItemFlavorNotes
64unset_audio_stream_callbackFlavor 3window+audio required

raylib/src/core/file.rs (B9, 1 stub)

WS7-enriched items in this file: none.

LineItemFlavorNotes
9FilePathIterFlavor 3iterator over a FilePathList; loaded via window

raylib/src/core/input.rs (B9, 1 stub)

WS7-enriched items in this file: none.

LineItemFlavorNotes
417key_from_i32Flavor 1pure conversion fn i32 -> Option<KeyboardKey>

raylib/src/core/math.rs (B9, 3 stubs)

WS7-enriched items in this file: Vector2, Vector3, Vector4, Matrix, Quaternion (these are NOT in core/math.rs — they live in raylib-sys/src/vector_math.rs; out of scope).

LineItemFlavorNotes
130Ray::newFlavor 1constructor — pure-math
139pub type RectangleFlavor 1 or Template Ctype alias; explain why it's re-exported from ffi here
155BoundingBox::newFlavor 1constructor — pure-math

raylib/src/core/misc.rs (B9, 3 stubs)

WS7-enriched items in this file: none.

LineItemFlavorNotes
44RandSeqIteratorFlavor 1pure iterator
115AsF32 traitFlavor 1numeric conversion trait
117AsF32::as_f32Flavor 1trait method

raylib/src/core/shaders.rs (B10, 3 stubs)

WS7-enriched items in this file: Shader (the type itself is enriched in texture.rs/shaders.rs parent file; verify per WS7 done-note).

LineItemFlavorNotes
147ShaderV traitFlavor 3shader-uniform trait; window+shader required
149ShaderV::UNIFORM_TYPE constFlavor 3trait const
327RaylibShader traitFlavor 3shader extension trait

raylib/src/core/text.rs (B10, 3 stubs)

WS7-enriched items in this file: Font.

LineItemFlavorNotes
64RSliceGlyphInfoFlavor 3RAII slice from LoadFontData; window+font required
323RaylibFont traitFlavor 3font extension trait
409Font::make_weakFlavor 3converts owned to weak

raylib/src/core/texture.rs (B10, 3 stubs)

WS7-enriched items in this file: Image, Texture2D, RenderTexture2D.

LineItemFlavorNotes
229RaylibRenderTexture2D traitFlavor 3render-texture extension trait
1070Image::gen_image_textFlavor 2image generation — harness-runnable
1237RaylibTexture2D traitFlavor 3texture extension trait

raylib/src/lib.rs (B9, 1 stub)

WS7-enriched items in this file: crate-level //! doc.

LineItemFlavorNotes
67pub mod coreTemplate Cmodule-level — "Core raylib functionality — window, drawing, input, audio, and other subsystems." Expand with a paragraph and # See also referencing the book.

Summary — orchestrator action items

  1. Total count (207) is ~13% above spec §5's "~183". Trigger the "differs by more than 10%, flag in inventory's intro" rule. Spec §5's ~183 is undercount; recommend updating it to ~207 when reconciling. The drift is because WS7 enriched mostly pre-existing-doc items (Color, Image, etc.) rather than WS6a one-liners — only one WS6a stub (RaylibDraw) was enriched by WS7.

  2. Spec §5 flavor mis-assignments to clarify in Wave-1 briefs:

    • B7 (core/mod.rs): spec says "Flavor 1 (Color/Rectangle helpers)". Actual stubs are module-level docs + the rstr! macro; use Template C + prose-only.
    • B8 (core/macros.rs): spec says "Skip # Examples; prose-only" for 4 items. Actual file has 5 #[allow(missing_docs)] annotations inside macro arms (not /// stubs); the Wave-1 implementer should add macro-level /// docs to each public macro AND consider whether the #[allow]s can be removed.
  3. B1 (core/error.rs) item-count nuance: 96 variant/field stubs as stated, plus 18 parent-enum summaries that need # Examples blocks added per Template A. Wave-1 brief should make this explicit (96 enrichments + 18 example-block additions = 114 touch points; not 96).

  4. B3 (core/drawing.rs) headcount: spec quotes 17; actual is 16 (RaylibDraw enriched by WS7).

  5. Drive-by enrichment of pre-existing one-liners adjacent to WS6a stubs (B4 camera.rs, B6 window.rs MonitorInfo fields, B1 AllocationError variants): orchestrator should explicitly allow or forbid this in each Wave-1 brief to avoid scope drift. Recommendation: allow drive-by in B4 and B6 where the item is visually adjacent and the enrichment is trivial; forbid in B1 (the pre-existing AllocationError variants already use a distinct style with intra-doc links).

  6. B8 (core/macros.rs) may belong in a Batch-3 dispatch given its degenerate scope. Orchestrator triage.