federicobravetti/arc-agi-3-feat-m0r0
ci: inject HF Space frontmatter
ci(sync-hf): tolerate create_repo/add_space_secret failures (402/429) so the push still deploys
server: disable SSE proxy buffering (X-Accel-Buffering) + run HF container without Flask debug
m0r0: joint interleaved planner (cubes + block + selection) -- solves L6, full game won
m0r0: conditional door walls (key-lock BFS) + mirror-sign calibration -- solves L5
m0r0 extractor: detect coloured doors (gayktr) + keys (unobxw) by size
m0r0: blocks as obstacles OR tools -- position a block to enable the merge (solves L4)
m0r0 agent: block-clearing path (select/drag/deselect/merge) -- solves L3 on engine
m0r0: block-clearing planner (BFS-oracle, no PDDL) -- clears blocks then merges
m0r0 symbolic state: blocks as first-class obstacles + floor() (under-block walkable)
m0r0 extractor: detect movable blocks (mosdlc) + frozen-player colour
m0r0: trap = red/black checkerboard, not solid red (fixes L3 walls flagged as traps)
m0r0 agent: use no-op (ACTION5) on level transition, not a stray move
server: draw m0r0 trap tiles in the feature overlay
m0r0: avoid trap tiles (spswjz) + fix cube split for vertical adjacency; solves L2
m0r0: executor agent (M0r0Agent) + split touching cubes; solves level 1 on engine
m0r0: joint-BFS planner + symbolic state (verified on engine)
server: m0r0 feature overlay (cubes, walkable lattice, symmetry axis)
server: default to m0r0 game and m0r0 agent when available
m0r0: feature extraction (mirror-maze core)
feat(ls20): moving cross (level 5) + reactive multi-shape toggle
feat(ls20): shape-toggle tile (level 4) -- two-phase route, no learned cycle
ci(sync-hf): add preview-per-branch
feat(ls20): launcher (slide) tiles as portal transitions in plan_route
feat(ls20): colour transform + one-time checkpoints in plan_route; drop PDDL
fix(ls20): solve level 2 -- move-cost-aware budget routing + checkpoint refuel
refactor(agents): ls20 plans moves via plan_route (optimal, drops bounce)
feat(planning): optimal route planner (BFS over cell + rotation state)
feat(agents): ls20 BDI agent for L1 (PDDL plan + BFS + belief revision)
feat(planning): ls20/ subpackage (extractor, symbolic state, planner)
feat(planning): base/ subpackage (types, pathfinder, abstract extractor + planner)
fix(engine): make --info a real flag and extract fetch_games
feat(server): render extracted features and pixel-grid toggle
feat(planning): extract moves bar, lives, player, target, cross, goals
feat(planning): color_cells region arg and cluster_by_proximity
refactor(agents): drop ls20_agent for clean rebuild
refactor(planning): remove legacy modules for clean rebuild
feat(planning): scaffold state extractor (abstract base + ls20)
refactor(planning): rewrite pathfinder as plain BFS
feat(planning): add shared types module
fix(agents): under fog, explore before chasing transforms (L7 one-life)
fix(perception): stop the L7 goal hitbox inflating into the fog
feat(engine): START_LEVEL env var to begin a local run at a chosen level
refactor(agents): move abstract_agent + my_agent into agents/templates/
fix(server): make /api/stop actually halt the agent, not just the swarm wait
fix(agents): explore/rescue avoid the WHOLE moving-cross line, not just its cell (L7 over-rotation)
perf(agents): lock the moving-cross cycle from fewer fog sightings (L7 one-life, change 1/N)
fix(agents): reject off-line cross detections once its line is known (L7)
fix(agents): stabilise the goal under fog (remember it; box was jittering on L7)
fix(agents): gate the bounce-cycle outlier handling to fog too (L6 first-try)
