# Battle Skill Timeline Completion Audit

## Objective Boundary

The active thread goal is broad (`모두 진행`), so this audit narrows the
current battle-skill subgoal into concrete deliverables.

For the battle skill timeline work, completion means:

1. EXE-derived canonical rows exist for player and monster actions.
2. Active battle pages use the same canonical playback data.
3. Known shifted-row regressions are verified in a browser.
4. EXE helper/effect execution requirements are bound into the shared runner.

These four items are complete.  Exact original-runtime pixel parity is tracked
as a separate future verification task because original runtime captures are not
part of the current completion gate.

## Prompt-To-Artifact Checklist

| Requirement | Evidence | Status |
| --- | --- | --- |
| Canonical action rows | `out/battle_skill_timeline_canonical.json`, `out/battle_skill_timeline_canonical.js`, `tools/build_battle_skill_timeline_canonical.py` | Complete |
| Shared battle pages | `web/battle_skill_timeline_review.html`, `web/battle_formula_calculator.html`, `web/battle_simulator.html`, `web/engine/battle/animation.js` | Complete |
| Known browser regressions | `tools/verify_battle_skill_timeline_browser.py`, `out/battle_skill_timeline_browser_summary.json` | Complete |
| Effect runner binding | `out/battle_effect_animation_pattern_review.json`, `out/battle_effect_runner_binding_review.json`, `web/engine/battle/animation.js` | Complete |
| Original runtime pixel parity | `out/battle_effect_pixel_oracle_plan.json`, `out/battle_effect_capture_checklist.json`, `out/battle_effect_pixel_compare_report.json` | Future verification, not blocking current goal |

## Current Audit Result

`out/battle_skill_goal_audit.json` currently reports:

```text
status: complete
complete: 4 / 4
missingOrIncomplete: []
completionDecision: eligible-for-update-goal
```

This means the current EXE-canonical playback goal is complete.  It does not
claim exact original-game pixel fidelity; that stricter check remains a separate
runtime-capture comparison task.

## What Is Already Prepared

The web reference capture side is ready:

```bash
xvfb-run -a python3 tools/capture_battle_effect_web_reference.py --scope full --tick-mode samples --max-frames 12
```

In the current local workspace this produced web reference frames for all 52
oracle rows.  These files are intentionally ignored by git:

- `data/battle_effect_capture_manifest.json`
- `captures/battle_effect_pixel_oracle/**`

## Future Parity Gate

To run the stricter original-runtime parity task later, add original runtime
captures for the same oracle rows to `data/battle_effect_capture_manifest.json`,
then run:

```bash
python3 tools/prepare_battle_effect_original_capture_dirs.py --scope full --write
python3 tools/import_battle_effect_original_captures.py /path/to/original-captures --scope full --copy
python3 tools/build_battle_effect_capture_checklist.py
python3 tools/compare_battle_effect_pixel_oracle.py
python3 tools/build_battle_skill_goal_audit.py
```

The original-runtime parity task should be marked complete only after the full
oracle comparison passes for all 52 rows.  This is deliberately separate from
the current battle skill timeline completion audit.

## Practical Interpretation

The battle skill timeline and known animation bugs are closed.  The remaining
work is a stricter pixel-oracle validation task, not another round of ordinary
timeline repair.
