Skip to content

Repo weight + licensing: ShareTextures compliance, OGG music, orphan assets - #29

Merged
proggeramlug merged 1 commit into
mainfrom
chore/audit-repo-weight
Jul 16, 2026
Merged

Repo weight + licensing: ShareTextures compliance, OGG music, orphan assets#29
proggeramlug merged 1 commit into
mainfrom
chore/audit-repo-weight

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Second slice of the 2026-07-16 audit. ~220 MB leaves the working tree, and one genuine licensing problem is fixed.

Licensing fix (important)

robinia/ + platanus/ (66 MB) were committed since rounds 5–7, and ShareTextures is not plain CC0: CC0 applies only to direct downloads from their site, and their terms forbid redistribution in collections and automated downloads (license). So:

  • both packs are now untracked + gitignored (kept on disk locally for rebuilds);
  • they are deliberately not added to fetch-external-textures.ts (automated downloads are also disallowed) — SOURCES.md documents the manual path;
  • the baked leaf cards inside prop_tree2/3.glb are fine to ship — transformed derivatives used in the product;
  • build-props.ts falls back to the CC0 LeafSet004 compositor, so fresh checkouts still build all props.

Weight

What Before After
assets/music/src (Suno masters, tool-input only) 94 MB committed untracked ⚠️ archive these outside the repo — they are not re-derivable
ShareTextures packs 66 MB committed untracked (license)
Music beds + stingers 33.9 MB WAV 4.9 MB OGG q8
Fallback beds game/menu.wav (never-taken path) 23.4 MB 3.2 MB OGG, contract intact
Orphan GLBs (arena, building_wall/floor) + convert-arena.ts 2.6 MB deleted

prop_barrel/flower/grasstuft deliberately stay — they're the authoring palette for the second arena.

Verification

  • Engine decode path read end-to-end: load_music_bytesdecode_audioparse_ogg (lewton) — same decoder as loadSound; ambient.ogg had shipped through it all along.
  • New boot line [music] menu=1 calm=2 combat=3 (live handles; 0 = failed decode) — verified in a batch run, so a music-format regression can never ship silently again.
  • bun tools/encode-music.ts added so the mastering pipeline still produces what the game loads.
  • DXC DLLs gitignored + documented (boot log confirms ray_query=true with them beside the exe).

…s compliance

Licensing (the part that matters):
- assets/textures/external/robinia + platanus (66 MB) are UNTRACKED now.
  They are ShareTextures packs, and ShareTextures is NOT plain CC0: their
  terms grant CC0 only for direct downloads and forbid redistribution 'as
  part of collections' and automated downloads. Committing them to a
  public repo was a violation; so would adding them to the fetch script.
  SOURCES.md now documents the real license, the manual download path,
  and why the BAKED leaf cards inside prop_tree2/3.glb are fine to ship
  (transformed derivatives used in the product). build-props.ts falls
  back to the CC0 LeafSet004 compositor without the packs, so fresh
  checkouts still build everything.

Weight:
- assets/music/src (94 MB of untrimmed Suno masters) untracked - only
  music-master.ts reads it. The masters are NOT re-derivable: archive
  them outside the repo (note added to the tool header).
- Music ships as OGG q8 (~256 kbps VBR, transparent): six files
  33.9 MB -> 4.9 MB. The engine's decode_audio handles Vorbis for both
  loadMusic and loadSound (same decoder, verified in audio/mod.rs), and
  ambient.ogg had shipped that way all along. New tools/encode-music.ts
  closes the pipeline: music-master.ts writes WAV, encode-music.ts
  encodes + removes the intermediates. Boot now logs the three bed
  handles ([music] menu=1 calm=2 combat=3 verified in a batch run) so a
  decode failure can never ship silently.
- The never-taken fallback beds game.wav/menu.wav (23.4 MB) are OGG too
  (3.2 MB) - the fallback contract from SH-036 is intact, just cheaper.
- Orphans deleted: arena.glb (nothing loaded it since the runtime world
  replaced the textured hall), building_wall/floor.glb (the house draws
  through the baked material shell; the only live reference was a
  comment about a z-fighting bug), and convert-arena.ts + its doc rows.
  build-props.ts stops EMITTING the building GLBs - dead output has to
  stop being produced, not just be swept up (its own words).
  prop_barrel/flower/grasstuft stay: they are the authoring palette the
  second arena will want, not orphans.
- dxcompiler.dll/dxil.dll gitignored with a note: they are the DXC
  runtime that turns on SM6.5/HW ray query (boot log: ray_query=true
  with them present); fetch via the engine's tools/fetch-dxc.ps1.

Verified: perry compile green; 20 s batch run boots clean with all
three music handles live and nav/grass/obstacle init unchanged.
@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@proggeramlug, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 47 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 29e5162a-b289-4f38-a943-7e7e27537cb8

📥 Commits

Reviewing files that changed from the base of the PR and between bf23a71 and 92d193b.

⛔ Files ignored due to path filters (38)
  • assets/music/music_calm.ogg is excluded by !**/*.ogg
  • assets/music/music_calm.wav is excluded by !**/*.wav
  • assets/music/music_combat.ogg is excluded by !**/*.ogg
  • assets/music/music_combat.wav is excluded by !**/*.wav
  • assets/music/music_menu.ogg is excluded by !**/*.ogg
  • assets/music/music_menu.wav is excluded by !**/*.wav
  • assets/music/src/music_calm.wav is excluded by !**/*.wav
  • assets/music/src/music_combat.wav is excluded by !**/*.wav
  • assets/music/src/music_menu.wav is excluded by !**/*.wav
  • assets/music/src/sting_death.wav is excluded by !**/*.wav
  • assets/music/src/sting_victory.wav is excluded by !**/*.wav
  • assets/music/src/sting_wave_clear.wav is excluded by !**/*.wav
  • assets/music/sting_death.ogg is excluded by !**/*.ogg
  • assets/music/sting_death.wav is excluded by !**/*.wav
  • assets/music/sting_victory.ogg is excluded by !**/*.ogg
  • assets/music/sting_victory.wav is excluded by !**/*.wav
  • assets/music/sting_wave_clear.ogg is excluded by !**/*.ogg
  • assets/music/sting_wave_clear.wav is excluded by !**/*.wav
  • assets/sounds/game.ogg is excluded by !**/*.ogg
  • assets/sounds/game.wav is excluded by !**/*.wav
  • assets/sounds/menu.ogg is excluded by !**/*.ogg
  • assets/sounds/menu.wav is excluded by !**/*.wav
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_ambientocclusion-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_basecolor-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_height-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_metallic-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_normal-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_opacity-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_roughness-2K.png is excluded by !**/*.png
  • assets/textures/external/platanus/PlatanusOccidentalis_1-2K/PlatanusOccidentalis_1_translucency-2K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_ambientocclusion-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_basecolor-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_height-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_metallic-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_normal-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_opaciy-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_roughness-4K.png is excluded by !**/*.png
  • assets/textures/external/robinia/RobiniaViscosa_2-4K/RobiniaViscosa_2_translucency-4K.png is excluded by !**/*.png
📒 Files selected for processing (15)
  • .gitignore
  • CLAUDE.md
  • assets/models/arena.glb
  • assets/models/building_floor.glb
  • assets/models/building_wall.glb
  • assets/sounds/SOURCES.md
  • assets/textures/external/SOURCES.md
  • docs/asset-pipeline.md
  • docs/tickets.md
  • src/main.ts
  • tools/README.md
  • tools/build-props.ts
  • tools/convert-arena.ts
  • tools/encode-music.ts
  • tools/music-master.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/audit-repo-weight

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@proggeramlug
proggeramlug merged commit c9ad181 into main Jul 16, 2026
1 check passed
@proggeramlug
proggeramlug deleted the chore/audit-repo-weight branch July 16, 2026 10:18
proggeramlug pushed a commit that referenced this pull request Jul 16, 2026
Two things the textually-clean auto-merge would have shipped broken:
- #28 removed KIND_COUNT/ALIEN_GLB from main.ts imports; this branch's
  stageModels batch uses both. Re-added - a green Perry compile does not
  catch absent cross-module imports (ReferenceError at boot).
- This branch (and #30) accidentally committed dxcompiler.dll/dxil.dll:
  both were branched before #29's .gitignore landed, so 'git add -A'
  swept the untracked DLLs in, and #30's merge carried them onto main.
  Untracked again here (files stay on disk - the game needs them beside
  the exe; see EN-058).

Verified on the merged tree: compile green, 14 s batch run boots to the
menu with [music] menu=1 calm=2 combat=3 and [anim] clipset=2 slot0=9
slot1=10 both live.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant