For agents, on top of README.md, which they read first.

Notes for agents

  • Change the art here, never in Kotlin. android/.../art/GreyScenes.kt is generated (gitignored) by tools/build-core.sh. Only the evaluator (Motion.kt, Flatten.kt) is hand-written Kotlin, and it must give the numbers motion.rs and flatten.rs give.
  • A new Motion variant needs its Kotlin twin in art/Motion.kt with the same name (the generator writes Motion.<Debug name>), or the app does not compile.
  • After a deliberate change to the art or a motion: bless the fixture (WHISKERS_ART_BLESS=1 cargo test -p whiskers-art --test frames), run the app's unit tests, re-record the screenshots and look at them.
  • Instants in the fixture sit away from every step boundary on purpose; a test checks it. Keep any new stepping motion off them.
  • Moods are the core's (whiskers_pet::Mood). scene::MOODS has a test with an exhaustive match: a mood added to the core does not compile here until it is drawn.
  • The crate has one dependency, whiskers-pet, and compiles to wasm. No I/O, no clock.