|
| 1 | +# Review ledger |
| 2 | + |
| 3 | +Newest section at the top. One section per review run. This is the record of what a |
| 4 | +run measured, what it changed, what it deliberately did not change, and what the next |
| 5 | +run should not spend time re-deciding. |
| 6 | + |
| 7 | +## 2026-09-22 |
| 8 | + |
| 9 | +- Measured: 294 entries (263 active, 29 needs-review, 2 deprecated); 262 commercial |
| 10 | + true, 23 unknown, 8 varies, 1 false; 20 distinct `license` values; `license_spdx` |
| 11 | + 209/294, `publisher` 128/294. Stale share 0 percent: every `verified` date is under |
| 12 | + 90 days old because the repo is 65 days old. Required fields 294/294, zero misses. |
| 13 | + Link sweep of all 294 urls: 282 returned 2xx, 12 returned 403/454 bot blocks, and |
| 14 | + **zero were dead**. |
| 15 | +- Integrity check that mattered most: of the 292 entries with a dated `## Evidence` |
| 16 | + section, **zero** had a `verified` date newer than their newest evidence date. No |
| 17 | + date in this catalog has been carried forward without evidence behind it. |
| 18 | +- Executed: batches A, B, C, D, one commit each, validator and build green after each. |
| 19 | + - A: `spdx-allowed.json` +7 identifiers; `license_spdx` backfilled on 10 entries |
| 20 | + (209 -> 219); `publisher` rule in CONTRIBUTING clarified. |
| 21 | + - B: 10 new checks in `site/checks.mjs` behind `site/license-vocabulary.json`, with |
| 22 | + `site/checks.test.mjs` (28 assertions) wired into both workflows; 6 entries edited |
| 23 | + so the checks could ship. |
| 24 | + - C: 3 `url` fields repointed after publisher domain moves. |
| 25 | + - D: prerendering, the deprecated-filter fix, verified age in the UI, permalinks, |
| 26 | + URL state, sort, clipboard, legend, dark scheme, sitemap/robots/404. |
| 27 | +- Deferred: |
| 28 | + - **Batch E** (docs and decision support) was never put to the maintainer, so it was |
| 29 | + not run. It holds two doc gaps this run measured and a set of comparison lines. |
| 30 | + - **15 entries carrying `license: GPL-2.0` or `GPL-3.0`** have no `license_spdx` and |
| 31 | + must not get one by inference. SPDX deprecated the bare identifiers; each project |
| 32 | + is either `-only` or `-or-later` and the recorded value does not say. Resolving |
| 33 | + them means reading 15 projects' own licensing statements. `license-vocabulary.json` |
| 34 | + marks them ambiguous and check V2 rejects any guess. |
| 35 | + - **12 urls returned 403 or 454** (fab, smithsonian, scan-the-world, sonniss, |
| 36 | + pixabay-audio, zapsplat, musopen, inkscape, tenacity, cloudcompare, vroid-studio, |
| 37 | + godot-shaders). Bot blocks, inconclusive, not defects. No `verified` was moved. |
| 38 | + They need a browser-based check whenever one of them next needs re-verifying. |
| 39 | + - **`og:image`** is omitted rather than faked. It needs a real image file and the |
| 40 | + binary-asset rule keeps one out of the repo; decide where it should live. |
| 41 | + - **`site/dist/data.json`** is deployed but unused by the page. It may be a |
| 42 | + deliberate JSON endpoint. If it is, say so in `site/README.md`; if not, drop it. |
| 43 | +- Parked, do not re-litigate: |
| 44 | + - **One entry equals one pack.** Kenney 44, Quaternius 23 and KayKit 13 entries look |
| 45 | + like redundancy and are not; `provenance.md` settles it. Three publishers holding |
| 46 | + 27 percent of the catalog is a consequence of that rule, not a defect. |
| 47 | + - **Aggregators with `commercial: varies` appear under the Commercial OK filter**, |
| 48 | + labeled per-file review. CONTRIBUTING states this is deliberate so they are neither |
| 49 | + silently excluded nor silently treated as a blanket grant. |
| 50 | + - **`publisher` on a single-entry publisher is allowed.** This run first read the |
| 51 | + CONTRIBUTING rule as a gate and proposed deleting the field from Tiny Speck, |
| 52 | + Screaming Brain Studios and Sparklin. That was the wrong reading: the rule's real |
| 53 | + prohibition is generic hosts, and deleting accurate rights-holder data to satisfy a |
| 54 | + formatting rule loses information. The wording was clarified instead. |
| 55 | + - **`blender.md` carries no `publisher` while the Blender Studio asset bundles do.** |
| 56 | + Not an inconsistency. The Blender Foundation ships the application; Blender Studio |
| 57 | + holds the asset rights. Check V7 is written to allow exactly this. |
| 58 | + - **OFL font entries set `attribution_required: false`.** Correct. OFL obliges a |
| 59 | + notice carried with the font files, not a credits-screen line. The vocabulary |
| 60 | + records this as attribution class `notice` so V4 does not fire on them. |
| 61 | + - **No virtualization, pagination or search debounce.** Measured at 294 entries and |
| 62 | + below the threshold where they pay for themselves. Measure again before proposing. |
| 63 | +- Next highest-value action: **populate `camera_perspective` and `grid_dimensions`**. |
| 64 | + The task-based coverage test failed hardest not on missing sources but on missing |
| 65 | + taxonomy: a developer cannot filter for a top-down 2D source, because |
| 66 | + `camera_perspective` is set on 11 of 294 entries and `grid_dimensions` on 6, and the |
| 67 | + site does not expose either. The schema already solved this problem and nothing |
| 68 | + filled it in. After that, the three concrete source gaps the task test found: |
| 69 | + rigged first-person arms, CC0 4-directional top-down character sprites, and |
| 70 | + rubble/pre-fractured debris geometry. |
0 commit comments