# medal-solvers — TODO (ORDERED) ## Current: 6072.74 (v70) | Target: 6500 (silver) / 6100 (bronze) ## Strategy: Crack rules → hand-craft ONNX → onnxsim → PROFILE score vs base → upload --- ## DONE (16 models, ~+30.5 pts total) | Task | Score | Base | Gain | Method | |------|-------|------|------|--------| | 025 | 10.57 | 8.71 | +1.86 | Hand-craft + onnxsim | | 028 | 14.31 | 12.83 | +1.48 | Hand-craft + onnxsim | | 062 | 14.75 | 14.23 | +0.52 | Hand-craft + onnxsim | | 084 | 12.41 | 9.72 | +2.70 | Hand-craft + onnxsim | | 128 | 13.69 | 13.54 | +0.16 | Hand-craft (Gather shift) + onnxsim | | 153 | 15.01 | 10.81 | +4.20 | Hand-craft + onnxsim | | 200 | 14.65 | 10.33 | +4.32 | Hand-craft + onnxsim | | 209 | 10.47 | 10.11 | +0.35 | onnxsim on base model | | 217 | 14.65 | 13.75 | +0.91 | Hand-craft + onnxsim | | 255 | 11.62 | 7.42 | +4.21 | Hand-craft + onnxsim | | 277 | 14.89 | 13.30 | +1.58 | Hand-craft + onnxsim | | 285 | 8.84 | 5.99 | +2.85 | Hand-craft + onnxsim | | 319 | 11.87 | 7.91 | +3.96 | Hand-craft + onnxsim | | 323 | 14.18 | 14.17 | +0.01 | onnxsim on base model | | 367 | 10.68 | 10.58 | +0.10 | onnxsim on base model | | 387 | 11.16 | 10.46 | +0.70 | Hand-craft + onnxsim | ## REMOVED (scored WORSE than base — verified v70) | Task | My Score | Base | Loss | Why | |------|----------|------|------|-----| | 057 | 14.24 | 14.25 | -0.01 | Optimized model has more memory than base | | 384 | 13.17 | 13.78 | -0.61 | Optimized model has much more memory than base | --- ## NEXT: HIGH-VALUE TARGETS ### 1. TASK 034 — ONNX BUILD IN PROGRESS (267/267 solved!) **Rule:** Diagonal trail of 2x2 block. Direction from 2-markers. 9×9 grid. **Base:** 87 nodes, 2847 params, score 13.42 **Status:** Solver 267/267. ONNX works for 1-marker cases (85/267). **Blocker:** Multi-directional (2+ markers) cases fail in ONNX due to Sign(0)=0 when block center == 2-cell mean. Need to handle: - 2 markers → bidirectional (opposite diagonals) - 3 markers → need to detect the MISSING corner of the bounding box as direction **Fix needed:** When Sign gives 0 (centroids coincide), use individual 2-cell positions to determine unique diagonal directions, then trail in ALL detected directions. **Potential gain:** +1-2 pts if ONNX beats base ### 2. TASK 076 — SOLVER COMPLETE (266/266) but ONNX BLOCKED **Rule:** Template rotation + decoration placement using centroid + 2-marker + BFS **Base:** 10.34 (949KB file) **Potential:** +5-7 pts **Blocker:** Requires 8-connected CC detection + BFS. Objects can be adjacent (distance 0). Simple separation won't work. Need ~100+ extra nodes for iterative CC propagation. **File:** `task076_solver_266.py` ### 3. TASK 219 — SOLVER AT 255/265, needs 265 for ONNX **Rule:** Template pattern extension with alignment + periodicity **Base:** 8.42 (87KB file) **Potential:** +6 pts **Blocker:** 10 "merged row" failures where group rows contain columns from multiple template rows **File:** `task219_solver_255.py` ### 4. TASK 366 — NOT STARTED (highest potential +8-10 pts) Base 7.08, file 1.3MB, variable grid. Object placement by dot-pattern matching. Extremely complex — needs backtracking. ### 5. TASK 157 — NOT CRACKED 10×15 grid. Column shift rule unclear. ## WORKFLOW PER TASK ``` 1. Load task JSON, look at 2-3 train examples 2. Use ARC-DSL primitives (michaelhodel-arc-dsl.txt) to identify the rule 3. Write Python solver, verify 265+/265 accuracy on ALL examples 4. Build ONNX using OnnxBuilder (slice-first pattern) 5. Run onnxsim 6. **PROFILE** score with score_model.py — NEVER use static estimates 7. **PROFILE** base model score too 8. ONLY if my_score > base_score: upload to optimized/ ``` ## PROVEN FAILURES (do NOT retry) | Approach | Result | |----------|--------| | Task 398 ONNX | 268/268 correct but scores 10.3 vs base 13.7 (base too compact: 770 params) | | Float16 conversion | Cast overhead cancels savings | | onnx-neural-compressor quantization | Introduces DynamicQuantizeLinear/MatMulInteger → scorer returns None | | Task 363 heuristics (×7) | 264/265 max, unknown tiebreaker | | Tasks needing CC detection (101, 233, 191, 044, 077, 182) | Can't express in ONNX efficiently | | onnxsim on base models | Only 3 out of 400 improved (209, 367, 323) — already done | | Task 314 hand-craft ONNX | 266/266 correct BUT scored 14.46 vs base 15.62 = WORSE | | Targeting tasks with base params < 1000 | Base already too compact to beat | ## DO NOT TOUCH - Tasks with base score > 14 and small grids (flips, rotations, color swaps) - Tasks 020, 037, 040, 053, 077, 098, 100, 291, 307, 330 - Task 057, 384 (removed — score WORSE than base) - Task 314 (266/266 correct but ONNX scores 14.46 vs base 15.62 = WORSE) - Task 398 (268/268 correct but ONNX scores 10.3 vs base 13.7 = WORSE)