Repo cleanup: fix PPM & asset handling (out.ppm, golden blobs, duplicated Kenney art) #27

Closed
opened 2026-08-30 12:50:17 +02:00 by orkun · 1 comment
Owner

Problem

Binary blobs are scattered across the repo with unclear ownership and poor DX:

  • out.ppm (~230 KB) lives in the repo root. It is a program's render
    output — a build artifact. It is .gitignored, but programs still dump it into
    the working root on every run, which litters git status-adjacent tooling and
    the project directory. Output should be written under build/ (or a
    .gitignored out/), not the repo root.
  • selfhost/golden/*.ppm — 4 checked-in binary PPM fixtures (see the separate
    golden-fixtures issue).
  • assets/ ships 273 tracked PNGs plus the raw Kenney zips
    (assets/kenney/tiny-dungeon.zip, assets/kenney/tiny-town.zip) and their
    fully-extracted contents. Shipping both the archive and its expansion is
    redundant, and **.zip is in .gitignore yet the zips are tracked — the intent
    is contradictory.

Proposal

  • Make render/example output write to build/ (or out/), never the repo root;
    drop the out.ppm root entry once nothing writes there.
  • Decide one canonical form for the Kenney art: either the zip (extract on
    demand in bin/x) or the extracted tiles — not both. Reconcile with
    .gitignore so the rule and the tracked files agree.
  • Prune any PNG/asset the examples don't actually use.
  • Confirm the Kenney CC0 License.txt files are retained wherever the art lands.

Acceptance criteria

  • No program writes artifacts to the repo root; out.ppm no longer appears.
  • Assets stored in exactly one form; .gitignore matches what's tracked.
  • Unused assets removed; licenses preserved.

Part of the repository-cleanup / DX pass.

## Problem Binary blobs are scattered across the repo with unclear ownership and poor DX: - **`out.ppm`** (~230 KB) lives in the repo **root**. It is a program's render output — a build artifact. It is `.gitignore`d, but programs still dump it into the working root on every run, which litters `git status`-adjacent tooling and the project directory. Output should be written under `build/` (or a `.gitignore`d `out/`), not the repo root. - **`selfhost/golden/*.ppm`** — 4 checked-in binary PPM fixtures (see the separate golden-fixtures issue). - **`assets/`** ships **273 tracked PNGs** plus the **raw Kenney zips** (`assets/kenney/tiny-dungeon.zip`, `assets/kenney/tiny-town.zip`) *and* their fully-extracted contents. Shipping both the archive and its expansion is redundant, and `**.zip` is in `.gitignore` yet the zips are tracked — the intent is contradictory. ## Proposal - Make render/example output write to `build/` (or `out/`), never the repo root; drop the `out.ppm` root entry once nothing writes there. - Decide one canonical form for the Kenney art: either the **zip** (extract on demand in `bin/x`) **or** the extracted tiles — not both. Reconcile with `.gitignore` so the rule and the tracked files agree. - Prune any PNG/asset the examples don't actually use. - Confirm the Kenney CC0 `License.txt` files are retained wherever the art lands. ## Acceptance criteria - [ ] No program writes artifacts to the repo root; `out.ppm` no longer appears. - [ ] Assets stored in exactly one form; `.gitignore` matches what's tracked. - [ ] Unused assets removed; licenses preserved. Part of the repository-cleanup / DX pass.
orkun added the
priority:medium
area:repo
cleanup
labels 2026-08-30 12:50:17 +02:00
Author
Owner

Done in fb728bb.

Acceptance criteria

  • No program writes artifacts to the repo root; out.ppm no longer appears — the native runtime's headless dump was changed from out.ppm to build/out.ppm (runtime/native/core.ludic). bin/x app --headless, bin/x clean, the messaging and .gitignore were all updated to match. Nothing is written to the working root any more, so the root /out.ppm ignore rule was removed as obsolete.
  • Assets stored in exactly one form; .gitignore matches what's tracked — the Kenney art is tracked in exactly one form (extracted PNG/tmx under assets/kenney/**). The *.zip archives were already untracked (git never had them, despite sitting in the working tree); the redundant local copies were removed so the tree matches the .gitignore intent. git ls-files shows no zips and no root out.ppm.
  • Unused assets removed; licenses preserved — the redundant zips are gone and the CC0 License.txt files are retained in each pack (assets/kenney/tiny-dungeon/License.txt, assets/kenney/tiny-town/License.txt).

One judgement call worth recording: I kept the two complete extracted Kenney tilesets rather than pruning them down to only the ~13 tiles the current examples reference. They're a small (~1.3 MB total), coherent CC0 art library meant for examples to draw from; pruning to the current call-sites would break that purpose and any new example, for little gain now that the archive/expansion duplication is resolved. Happy to prune aggressively in a follow-up if you'd rather ship only referenced tiles.

The golden .ppm blobs mentioned here were handled in #30 (replaced by a text hash manifest).

Done in fb728bb. **Acceptance criteria** - [x] **No program writes artifacts to the repo root; `out.ppm` no longer appears** — the native runtime's headless dump was changed from `out.ppm` to `build/out.ppm` (`runtime/native/core.ludic`). `bin/x app --headless`, `bin/x clean`, the messaging and `.gitignore` were all updated to match. Nothing is written to the working root any more, so the root `/out.ppm` ignore rule was removed as obsolete. - [x] **Assets stored in exactly one form; `.gitignore` matches what's tracked** — the Kenney art is tracked in exactly one form (extracted PNG/tmx under `assets/kenney/**`). The `*.zip` archives were already untracked (git never had them, despite sitting in the working tree); the redundant local copies were removed so the tree matches the `.gitignore` intent. `git ls-files` shows no zips and no root `out.ppm`. - [x] **Unused assets removed; licenses preserved** — the redundant zips are gone and the CC0 `License.txt` files are retained in each pack (`assets/kenney/tiny-dungeon/License.txt`, `assets/kenney/tiny-town/License.txt`). **One judgement call worth recording:** I kept the two complete extracted Kenney tilesets rather than pruning them down to only the ~13 tiles the current examples reference. They're a small (~1.3 MB total), coherent CC0 art *library* meant for examples to draw from; pruning to the current call-sites would break that purpose and any new example, for little gain now that the archive/expansion duplication is resolved. Happy to prune aggressively in a follow-up if you'd rather ship only referenced tiles. The golden `.ppm` blobs mentioned here were handled in #30 (replaced by a text hash manifest).
orkun closed this issue 2026-08-30 18:08:22 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: workshopsoft/ludic#27
No description provided.