{ "id": "grit", "displayName": "Grit", "description": "A faithful Codex pet recreation of a gray-and-cream spotted mechanical explorer kitten with brass goggles, a bell collar, a vintage brass backpack, and a gentle map-reading companion spirit.", "spritesheetPath": "spritesheet.webp", "states": { "idle": { "atlasRow": "idle", "notes": "Quiet standing idle with tiny blink and soft explorer composure." }, "walk": { "atlasRows": [ "running-right", "running-left" ], "notes": "True directional walk rows used for movement and drag-facing behavior." }, "curious": { "atlasRow": "review", "notes": "Gentle observing loop with a head tilt, lean, and attentive gaze." }, "happy": { "atlasRow": "waving", "notes": "Restrained pleased loop with a tiny proud paw lift and brighter expression." }, "sleep": { "atlasRow": "waiting", "notes": "Curled resting loop with closed eyes and visible goggles, bell, backpack, and ringed tail." }, "explore": { "atlasRow": "running", "notes": "In-place scout loop for careful searching, not literal sprinting." }, "jump": { "atlasRow": "jumping", "notes": "Small agile jump with tidy takeoff, air moment, and landing." }, "map": { "atlasRow": "failed", "notes": "Fixed-atlas spare row intentionally remapped to a map-checking loop with a non-text explorer map." } }, "atlasRowSemantics": { "idle": "idle", "running-right": "walk-right", "running-left": "walk-left", "waving": "happy", "jumping": "jump", "failed": "map", "waiting": "sleep", "running": "explore", "review": "curious" }, "requestedActionMap": { "idle": { "atlasRow": "idle", "status": "implemented" }, "walk_right": { "atlasRow": "running-right", "status": "implemented" }, "walk_left": { "atlasRow": "running-left", "status": "implemented" }, "curious": { "atlasRow": "review", "status": "implemented" }, "happy": { "atlasRow": "waving", "status": "implemented" }, "sleep": { "atlasRow": "waiting", "status": "implemented" }, "drag": { "leftAtlasRow": "running-left", "rightAtlasRow": "running-right", "status": "implemented", "notes": "Directional drag uses the true left-facing and right-facing walk rows." }, "explore": { "atlasRow": "running", "status": "implemented", "notes": "Fixed atlas running row was intentionally remapped to an in-place scout loop." }, "map": { "atlasRow": "failed", "status": "implemented", "notes": "Fixed atlas spare row was intentionally remapped to a map-checking loop with no text." }, "jump": { "atlasRow": "jumping", "status": "implemented" }, "helper": { "approxAtlasRow": "running", "status": "approximated", "notes": "No dedicated helper row remained in the fixed 8x9 atlas after preserving idle, walk, curious, happy, sleep, explore, jump, and map. The explore loop is the nearest companion-support behavior." } }, "dragFacingValidation": { "rule": "deltaX < 0 => facing left; deltaX > 0 => facing right", "leftDragUses": "running-left", "rightDragUses": "running-right", "leftRowDerivedFrom": "generated-directly", "rightRowDerivedFrom": "generated-directly", "manualVerification": [ "left drag uses a true left-facing strip", "right drag uses a true right-facing strip", "walk_left and walk_right are not swapped", "head, eyes, muzzle, body, backpack, and tail all face left in running-left", "head, eyes, muzzle, body, backpack, and tail all face right in running-right", "left drag never faces right", "right drag never faces left", "goggles, bell collar, brass backpack, ringed tail, and gray-white spotted coat stay readable at small size" ] } }