makepad/apps/arcade/resources/MIRROR.toml
Admin 5f83480ae3 Arcade assets: full Kenney 3D catalogue (4442 models) + ranking fixes
52 packs, 4442 GLB models, 136 MB on disk — fetched sequentially with resume
(a hash-valid pack is skipped, so an interrupted run costs nothing) via
kenney.nl's content-hashed URLs with per-zip sha256. MIRROR.toml records
every pack's canonical URL, sha256, size and file count, so a mirror is
reproducible; --mirror=/ARCADE_ASSET_MIRROR redirects the base URL and fetch()
verifies the digest identically whatever host served the bytes — a mirror we
control is never trusted more than upstream. --packs= keeps a fresh clone from
being forced to pull everything.

Aliases restructured to survive the scale: per-pack theme rows (55) so every
model in a pack inherits its setting, filename-token parsing with variant-
marker stripping as the workhorse, and ~240 hand-curated query-time synonyms —
the layer whose curation compounds across the whole catalogue. 82-query suite
reports misses instead of being tuned green; the list is down to 2, both
defensible (a floor IS somewhere to stand; a bell IS a metal clang).

Three ranking bugs root-caused, not patched:
- No stemming, so "smashing" never reached the alias "smash" and "glass
  smashing" returned glass PIPES. Added a conservative stemmer probed at
  synonym strength (only ever adds matches), which refuses to mangle
  glass/grass/class and routes "trees" to "tree", not "tre"
- An overreaching alias: `spaceship` sat on four spaceEngine SOUND families.
  An engine hum is not a spaceship. Removed; "spaceship engine" still resolves
- Kind confusion on ties: spacecraft models tied with spaceTrash sounds and
  lost the alphabetical tie-break. Added kind-aware tie-breaking driven by
  query intent — deliberately a TIE-BREAK, not a score bonus, so it cannot
  drag a weak model above a strong sound (laser gun / explosion / coins scores
  verified unchanged)

Repo-policy violation fixed: all three asset .gitignore files were deny-lists
covering only .glb/.png/.jpg, leaving 302 .gltf files from 3d-road-tiles fully
committable. Converted to allow-lists — 4,744 asset files are now unstageable
by accident.

Scale at 4,999 entries: build 120 ms, search ~0.2 ms, 2.1 MB heap, and the
prompt summary still 479 chars — flat as the catalogue grows, which is what
keeps it affordable in every AI turn.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-03 09:17:03 +02:00

522 lines
16 KiB
TOML

# Mirror manifest for Makepad Arcade's Kenney asset library.
#
# Every pack below is CC0 (public domain), which is what makes mirroring legal:
# anyone can re-host these bytes. This file is the reproducible description of
# the mirror — slug, canonical upstream URL, sha256 and size — so a mirror can
# be rebuilt or verified by anyone, and so a mirrored byte stream is checked
# exactly as strictly as an upstream one. A mirror is never trusted more than
# upstream; the hash is the authority, not the host.
#
# Generated by tools/scrape (see README). Columns are fixed-width for diffing.
#
# core = fetched by default; the rest need --packs=all or --packs=<slug>,...
# usable = ships glTF/GLB. The three animated-character packs are FBX-only and
# we have no FBX loader, so they are recorded but never fetched.
[meta]
source = "kenney.nl"
license = "CC0-1.0"
credit = "Kenney (kenney.nl) — CC0"
packs = 50
models = 4669
bytes = 173943741
[[pack]]
slug = "3d-road-tiles"
title = "3D Road Tiles"
url = "https://kenney.nl/media/pages/assets/3d-road-tiles/3fbfaa7ec8-1677581262/kenney_3d-road-tiles.zip"
sha256 = "93af3af6d2cef287a0eca7efb936a515574151d3cb32c202f14d8f6a99518c40"
bytes = 3683526
models = 302
core = false
usable = true
[[pack]]
slug = "animated-characters-protagonists"
title = "Animated Characters Protagonists"
url = "https://kenney.nl/media/pages/assets/animated-characters-protagonists/608191acc4-1774773108/kenney_animated-characters-protagonists.zip"
sha256 = "ec3787de70fa2200256848d74201b10f6b6c3126594e9857bf989753312c2b84"
bytes = 581441
models = 0
core = false
usable = false
[[pack]]
slug = "animated-characters-retro"
title = "Animated Characters Retro"
url = "https://kenney.nl/media/pages/assets/animated-characters-retro/93305a3c49-1774772819/kenney_animated-characters-retro.zip"
sha256 = "1d03f1fb001f3cf629425b69c898df58261a316616220ea25b58bd35298e6882"
bytes = 706472
models = 0
core = false
usable = false
[[pack]]
slug = "animated-characters-survivors"
title = "Animated Characters Survivors"
url = "https://kenney.nl/media/pages/assets/animated-characters-survivors/27b16052a7-1774772958/kenney_animated-characters-survivors.zip"
sha256 = "fdadced07a0454c9b7f0b46507be6144a072b4d03b4ffa37f225893c76c62845"
bytes = 718027
models = 0
core = false
usable = false
[[pack]]
slug = "blaster-kit"
title = "Blaster Kit"
url = "https://kenney.nl/media/pages/assets/blaster-kit/261d80a716-1753959510/kenney_blaster-kit_2.1.zip"
sha256 = "91e3093e95427d59625e7e2ce2d0399b861600160fd0b4ada7714796b67cea8c"
bytes = 1724676
models = 40
core = false
usable = true
[[pack]]
slug = "blocky-characters"
title = "Blocky Characters"
url = "https://kenney.nl/media/pages/assets/blocky-characters/8369c0cf30-1749547469/kenney_blocky-characters_20.zip"
sha256 = "5e123859aa0c1598342b600c6db197024a1d63eb9ec531398b310725f589887e"
bytes = 2148510
models = 18
core = true
usable = true
[[pack]]
slug = "brick-kit"
title = "Brick Kit"
url = "https://kenney.nl/media/pages/assets/brick-kit/46a22f3d08-1716981002/kenney_brick-kit.zip"
sha256 = "b303d293c278fab713eed28395829b18513b171d2562f7f518c3355c2896861a"
bytes = 4668567
models = 296
core = false
usable = true
[[pack]]
slug = "building-kit"
title = "Building Kit"
url = "https://kenney.nl/media/pages/assets/building-kit/0de7aaa492-1743244741/kenney_building-kit.zip"
sha256 = "2740ef5772fb5fb3d7aab881db22d129f6b68afe711b1a79e6d5e9e19cf3eec6"
bytes = 1598905
models = 79
core = false
usable = true
[[pack]]
slug = "car-kit"
title = "Car Kit"
url = "https://kenney.nl/media/pages/assets/car-kit/1a312ec241-1775131960/kenney_car-kit.zip"
sha256 = "fac7dacac5c7874348cf19729af3ef205f3d366493edaf0a827d93f4fdf3d0c4"
bytes = 4814237
models = 50
core = true
usable = true
[[pack]]
slug = "castle-kit"
title = "Castle Kit"
url = "https://kenney.nl/media/pages/assets/castle-kit/a395102d20-1711543616/kenney_castle-kit.zip"
sha256 = "921f3f73927bb23106cae34bc21d5ab4b033a9fc120475e96f714a406e3169df"
bytes = 2232589
models = 76
core = true
usable = true
[[pack]]
slug = "city-kit-commercial"
title = "City Kit (Commercial)"
url = "https://kenney.nl/media/pages/assets/city-kit-commercial/a742d900eb-1753115042/kenney_city-kit-commercial_2.1.zip"
sha256 = "f8b09b081c2bb88bcc126e2dec1cb40fd0dad7e7e591b6c26aaefe96fb35276b"
bytes = 4096974
models = 41
core = false
usable = true
[[pack]]
slug = "city-kit-industrial"
title = "City Kit (Industrial)"
url = "https://kenney.nl/media/pages/assets/city-kit-industrial/5fcb837741-1750838303/kenney_city-kit-industrial_1.0.zip"
sha256 = "99a09ff148056678c0c3b7977ad9dbce55d2f243e06fbfc7c28642accef4dd9e"
bytes = 3805564
models = 25
core = false
usable = true
[[pack]]
slug = "city-kit-roads"
title = "City Kit (Roads)"
url = "https://kenney.nl/media/pages/assets/city-kit-roads/74288c9459-1741864740/kenney_city-kit-roads.zip"
sha256 = "2c1644a293a85d98837ef788b0cbc4b9d53dffb1280fbe9a4f927b644aaba4b0"
bytes = 1716227
models = 72
core = true
usable = true
[[pack]]
slug = "city-kit-suburban"
title = "City Kit (Suburban)"
url = "https://kenney.nl/media/pages/assets/city-kit-suburban/2c871b7af2-1745479373/kenney_city-kit-suburban_20.zip"
sha256 = "5869c35cf30b1c87bdb2d197b6d325eebadd2ef08ea27f04797e8e08d77a9a39"
bytes = 3038740
models = 40
core = true
usable = true
[[pack]]
slug = "coaster-kit"
title = "Coaster Kit"
url = "https://kenney.nl/media/pages/assets/coaster-kit/546fdc554f-1731487890/kenney_coaster-kit.zip"
sha256 = "7723d02e3ea822371e12e14722e72d572fdb0384c1379c1469e0598a371f5c7a"
bytes = 6697401
models = 183
core = false
usable = true
[[pack]]
slug = "cube-pets"
title = "Cube Pets"
url = "https://kenney.nl/media/pages/assets/cube-pets/44e58e945f-1774520254/kenney_cube-pets_1.0.zip"
sha256 = "b3bdc99a2ec92c687b875718c5d01e9231d2711ed0e2845f295b474bb42a1283"
bytes = 2812444
models = 24
core = true
usable = true
[[pack]]
slug = "factory-kit"
title = "Factory Kit"
url = "https://kenney.nl/media/pages/assets/factory-kit/edaac9d4f6-1777639602/kenney_factory-kit_3.0.zip"
sha256 = "7e31fb2308e90304672bd15cd18fa9d9f02c03731a8cbc57a8e3e1c181dfb0a7"
bytes = 4511890
models = 143
core = false
usable = true
[[pack]]
slug = "fantasy-town-kit"
title = "Fantasy Town Kit"
url = "https://kenney.nl/media/pages/assets/fantasy-town-kit/efe948d309-1754222374/kenney_fantasy-town-kit_2.0.zip"
sha256 = "1a7530c09f4d2fa2cdee259876f089334f8b1f27fa86a0c4f54ef86cdd8676ef"
bytes = 3854691
models = 167
core = false
usable = true
[[pack]]
slug = "food-kit"
title = "Food Kit"
url = "https://kenney.nl/media/pages/assets/food-kit/83086fa91c-1719418518/kenney_food-kit.zip"
sha256 = "cdad90853682499b94c9fda2f87678b24bfd8f3264e0ed323f6b6a27fd7c6f6f"
bytes = 4606270
models = 200
core = true
usable = true
[[pack]]
slug = "furniture-kit"
title = "Furniture Kit"
url = "https://kenney.nl/media/pages/assets/furniture-kit/440e0608a4-1677580847/kenney_furniture-kit.zip"
sha256 = "e67652d0932cee41683f74711c03d3e192a2af9979ef8e6b237711f5482d46b0"
bytes = 5130729
models = 140
core = true
usable = true
[[pack]]
slug = "graveyard-kit"
title = "Graveyard Kit"
url = "https://kenney.nl/media/pages/assets/graveyard-kit/ba8d4b4517-1760691807/kenney_graveyard-kit_5.0.zip"
sha256 = "1a93613f2e5675f3310acf49ec9ef13ae7adeb756ac3b205bfb6cc9311a81062"
bytes = 3623408
models = 91
core = false
usable = true
[[pack]]
slug = "hexagon-kit"
title = "Hexagon Kit"
url = "https://kenney.nl/media/pages/assets/hexagon-kit/fd3b63101b-1706007730/kenney_hexagon-kit.zip"
sha256 = "d14f7643852c4dd854c7530de8514c9eb77314fe9963636077f0de1da8901236"
bytes = 2448931
models = 72
core = false
usable = true
[[pack]]
slug = "holiday-kit"
title = "Holiday Kit"
url = "https://kenney.nl/media/pages/assets/holiday-kit/3976a6496a-1733923970/kenney_holiday-kit.zip"
sha256 = "fde4d514d7297388d98058e8933ff614e071886f7ce57f9aea4b00d7698dd769"
bytes = 4482244
models = 99
core = true
usable = true
[[pack]]
slug = "marble-kit"
title = "Marble Kit"
url = "https://kenney.nl/media/pages/assets/marble-kit/56fd69e5ed-1716385090/kenney_marble-kit.zip"
sha256 = "4a289fe77fa4e71b943fb9a0df828a7987e62f665083ea9237d0bd9acd0b6dcb"
bytes = 5339532
models = 162
core = false
usable = true
[[pack]]
slug = "mini-arcade"
title = "Mini Arcade"
url = "https://kenney.nl/media/pages/assets/mini-arcade/ece1e8f320-1721638600/kenney_mini-arcade.zip"
sha256 = "2acfe5cb44d392e834f77cf5488528c7cd45427cdf5fb941ce99856276158c19"
bytes = 1317439
models = 20
core = false
usable = true
[[pack]]
slug = "mini-arena"
title = "Mini Arena"
url = "https://kenney.nl/media/pages/assets/mini-arena/88f977a0cb-1709220730/kenney_mini-arena.zip"
sha256 = "514760c2bc2457027451534a0b06a23f98beece166fb11ed2321226276b83c2c"
bytes = 731420
models = 22
core = false
usable = true
[[pack]]
slug = "mini-characters"
title = "Mini Characters"
url = "https://kenney.nl/media/pages/assets/mini-characters/bfc7e272b4-1774770718/kenney_mini-characters.zip"
sha256 = "9e1d48e6d7b8479ebbe84df71eb5bd8e1b3f0da546dea641890dccc8a02d0999"
bytes = 2403059
models = 26
core = false
usable = true
[[pack]]
slug = "mini-dungeon"
title = "Mini Dungeon"
url = "https://kenney.nl/media/pages/assets/mini-dungeon/6cd72dc849-1785314274/kenney_mini-dungeon.zip"
sha256 = "19c4648680cb1d2e8836cade96cbf9781c0c1f45fbc6d2ce41cee8239a3ec4d8"
bytes = 1796820
models = 30
core = true
usable = true
[[pack]]
slug = "mini-forest"
title = "Mini Forest"
url = "https://kenney.nl/media/pages/assets/mini-forest/44a89aed7f-1784024079/kenney_mini-forest_1.0.zip"
sha256 = "8691614018075a66458e35915b8c358c2e6178648aedadafcdf313b924aa6581"
bytes = 1118081
models = 22
core = false
usable = true
[[pack]]
slug = "mini-market"
title = "Mini Market"
url = "https://kenney.nl/media/pages/assets/mini-market/463f38da51-1729865423/kenney_mini-market.zip"
sha256 = "6f2e69090e359204ace43e4c98dc3fb8639b75e423109672b5c890d194c45203"
bytes = 1135859
models = 20
core = false
usable = true
[[pack]]
slug = "mini-skate"
title = "Mini Skate"
url = "https://kenney.nl/media/pages/assets/mini-skate/00b0c2b304-1709221152/kenney_mini-skate.zip"
sha256 = "82582f6de507e93090c16bb4802a7c361015fe246eddd571e6e96f816b12e8c6"
bytes = 721232
models = 20
core = false
usable = true
[[pack]]
slug = "minigolf-kit"
title = "Minigolf Kit"
url = "https://kenney.nl/media/pages/assets/minigolf-kit/3ae60d8b01-1741163874/kenney_minigolf-kit.zip"
sha256 = "74b7bf5cf82bf8a5225319ade1284600c64f9482ae66f0ccf1f22d2212d5a952"
bytes = 3163116
models = 126
core = false
usable = true
[[pack]]
slug = "modular-buildings"
title = "Modular Buildings"
url = "https://kenney.nl/media/pages/assets/modular-buildings/3253b4219a-1707397411/kenney_modular-buildings.zip"
sha256 = "47e1614686b4c0fe55190e88b22ff2b8b10935edf61f37f478a9b6a99477edc6"
bytes = 1825490
models = 108
core = false
usable = true
[[pack]]
slug = "modular-cave-kit"
title = "Modular Cave Kit"
url = "https://kenney.nl/media/pages/assets/modular-cave-kit/37ec3cb12d-1783667097/kenney_modular-cave-kit_1.0.zip"
sha256 = "48f37a6d4f241124cd7da17da1c6d4ed1bf1820bb149dcb233fbd5ebdd8ba996"
bytes = 7025078
models = 40
core = false
usable = true
[[pack]]
slug = "modular-dungeon-kit"
title = "Modular Dungeon Kit"
url = "https://kenney.nl/media/pages/assets/modular-dungeon-kit/7bed87605b-1771926065/kenney_modular-dungeon-kit_1.0.zip"
sha256 = "dd0aa6776db8912283cdca60161dee6a8839bbda3558eba2ea501419eb5b4623"
bytes = 6886434
models = 39
core = false
usable = true
[[pack]]
slug = "modular-space-kit"
title = "Modular Space Kit"
url = "https://kenney.nl/media/pages/assets/modular-space-kit/8261428a47-1771146076/kenney_modular-space-kit_1.0.zip"
sha256 = "f394f7fd9eaf29c9de7e090e55b69926f699841af33b0b116f5cc0088de8a4dc"
bytes = 6966606
models = 40
core = false
usable = true
[[pack]]
slug = "nature-kit"
title = "Nature Kit"
url = "https://kenney.nl/media/pages/assets/nature-kit/37ac38a37b-1677698939/kenney_nature-kit.zip"
sha256 = "fa7974a0d342bfe63c38664ba9f8ec1a4aab8ea25f099bdc56870e33588c4d9d"
bytes = 10537521
models = 329
core = true
usable = true
[[pack]]
slug = "pirate-kit"
title = "Pirate Kit"
url = "https://kenney.nl/media/pages/assets/pirate-kit/e6d4bb1525-1771333093/kenney_pirate-kit.zip"
sha256 = "667ed2caf92954ddb98f7b7cede831fe99ab75063c26b25e23d32715bee9c943"
bytes = 3154665
models = 72
core = true
usable = true
[[pack]]
slug = "platformer-kit"
title = "Platformer Kit"
url = "https://kenney.nl/media/pages/assets/platformer-kit/1585cf62b4-1775122253/kenney_platformer-kit.zip"
sha256 = "899605d237367688c6b42e41fff2206c0fb8d626163158294556353f7baa7c1b"
bytes = 4640135
models = 153
core = true
usable = true
[[pack]]
slug = "prototype-kit"
title = "Prototype Kit"
url = "https://kenney.nl/media/pages/assets/prototype-kit/4d3b7073ed-1724832076/kenney_prototype-kit.zip"
sha256 = "213b522fb12bcc9b9ac66c4f7581f7c74623293272212e40a70c39936ad3da95"
bytes = 2961396
models = 145
core = false
usable = true
[[pack]]
slug = "racing-kit"
title = "Racing Kit"
url = "https://kenney.nl/media/pages/assets/racing-kit/933b8fd9fd-1677580949/kenney_racing-kit.zip"
sha256 = "8a71ea16219315a01d00d5a90c4f6b5c090faddbc56d80ecf727e2b3b853c6c0"
bytes = 6082755
models = 112
core = true
usable = true
[[pack]]
slug = "retro-fantasy-kit"
title = "Retro Fantasy Kit"
url = "https://kenney.nl/media/pages/assets/retro-fantasy-kit/cf3f41b752-1774770658/kenney_retro-fantasy-kit.zip"
sha256 = "d3462b453018d0d150406d85af3c4ae1322ceef8f1754c4eb4e6355adfeaab0f"
bytes = 2024232
models = 105
core = false
usable = true
[[pack]]
slug = "retro-urban-kit"
title = "Retro Urban Kit"
url = "https://kenney.nl/media/pages/assets/retro-urban-kit/8314d4db22-1738147509/kenney_retro-urban-kit.zip"
sha256 = "19201cbcb0d90080dfc33b54f5b4be2089de927c2a23274180798e7166d6b6ca"
bytes = 2161463
models = 124
core = false
usable = true
[[pack]]
slug = "space-kit"
title = "Space Kit"
url = "https://kenney.nl/media/pages/assets/space-kit/20874c75ac-1677698978/kenney_space-kit.zip"
sha256 = "d5d7cdf2635ed5a43a9187deaf409b6f47484e402321128341d3c3698e9ef4d9"
bytes = 6677531
models = 153
core = true
usable = true
[[pack]]
slug = "space-station-kit"
title = "Space Station Kit"
url = "https://kenney.nl/media/pages/assets/space-station-kit/6475288f2e-1712749919/kenney_space-station-kit.zip"
sha256 = "215e79bd5415cff93665183390f0343ed9acf87780306331013b78520170c6d8"
bytes = 1835875
models = 97
core = false
usable = true
[[pack]]
slug = "survival-kit"
title = "Survival Kit"
url = "https://kenney.nl/media/pages/assets/survival-kit/4065a8185b-1712149243/kenney_survival-kit.zip"
sha256 = "c3586341b5932c87eb43d75d915434f47daed168b17ed36a03e8ca9977c7443e"
bytes = 1948174
models = 80
core = false
usable = true
[[pack]]
slug = "tower-defense-kit"
title = "Tower Defense Kit"
url = "https://kenney.nl/media/pages/assets/tower-defense-kit/a402493eaa-1726471567/kenney_tower-defense-kit.zip"
sha256 = "d4c887680b709218315e4e1c17ae18c160635dcdfc4199763eeba97c02c77f00"
bytes = 5404433
models = 160
core = true
usable = true
[[pack]]
slug = "toy-car-kit"
title = "Toy Car Kit"
url = "https://kenney.nl/media/pages/assets/toy-car-kit/42e19cc426-1736346027/kenney_toy-car-kit.zip"
sha256 = "26c11bbb77102b8dd00cdaf7b2c7ab692416d750dd064de886d809acec346782"
bytes = 5245353
models = 157
core = false
usable = true
[[pack]]
slug = "train-kit"
title = "Train Kit"
url = "https://kenney.nl/media/pages/assets/train-kit/cf8521d625-1727040883/kenney_train-kit.zip"
sha256 = "cf50d77e8cbacbf38dd50826d4bce5392db8e4f67373d3c4e583b0ed0e474475"
bytes = 5266588
models = 103
core = true
usable = true
[[pack]]
slug = "watercraft-kit"
title = "Watercraft Kit"
url = "https://kenney.nl/media/pages/assets/watercraft-kit/a335cfed49-1713519620/kenney_watercraft-pack.zip"
sha256 = "cd1470c1cf441c7f46d0944ae6d0d897242365dc97677c5079b3238965d659f3"
bytes = 1870991
models = 46
core = true
usable = true