1@README.md
2
3## Notes for agents
4
5- **`allowlist.txt` is a decision, not a cache.** Never admit an icon to make a test or a feature pass; the owner reviews the list, and an icon the pack adds fails `tests/pack.rs` until a human decides it. The only reason to exclude one is that it does not suit a young child (alcohol, money and payments, anything adult or frightening, a rude meme, interface buttons); a test pins those. Do not write legal or rights reasoning into the list or its docs.
6- **`IconId` has no public constructor from a string that skips the allowlist.** Do not add one, and do not store an icon name as a bare `String` anywhere (a fact, the wire, the app). Deserialising an unknown or excluded name is an error; callers that must survive a newer peer's name (the memory file) read leniently on purpose.
7- **The rasteriser refuses; it does not approximate.** A new shape or command the pack starts using is a deliberate extension with a test, not a fallback.
8- **The pack in `third-party/pixel-icons` is unchanged upstream.** Never edit an SVG; see its CLAUDE.md.
9- No I/O and no clock in the library (it builds for wasm: it is a dependency of `whiskers-core`). The file system is only in `src/bin`, `examples` and `tests`.
10- The generated `PixelIconSet.kt` is gitignored; the app's `PixelIcon.kt` draws it.