# Cleanup Inventory

This document is the working inventory for repository cleanup.  Do not delete
large groups of files until they are assigned to one of the buckets below and a
replacement path is identified.

## Current Snapshot

Measured on 2026-07-05 after the out usage audit pass:

| Area | Files | Size | Notes |
| --- | ---: | ---: | --- |
| `web/` | 113 | 110 MB | Includes three bundled soundfonts and active review pages. |
| `out/` | 761 | 159 MB | Mixed runtime data, active review evidence, generated reports, and diagnostic proof leaves. |
| `tools/` | 565 | 17 MB | Top-level Python scripts, generators, and local bytecode cache. |
| `docs/` | 29 | 1.1 MB | Should carry final contracts and retired-evidence notes. |
| `data/` | 11 | 1.2 MB | Small active state/annotation data. |
| `captures/` | 565 | 5.1 MB | Local browser/oracle capture support data; not tracked by git. |

`out/` usage audit artifacts:

- `out/out_usage_audit.json`
- `out/out_usage_audit.html`
- generator: `tools/audit_out_usage.py`

The audit is conservative.  It treats direct `web` references, verifier active
file checks, and known dynamic loaders such as `out/maps_runtime_chunks/*.js` as
active.  It also scans `out` reports for cross-report dependencies so support
JSON linked only from a generated report is not accidentally deleted.

Current `out/` buckets:

| Bucket | Files | Size | Cleanup stance |
| --- | ---: | ---: | --- |
| `runtime-core` | 20 | 8.77 MB | Keep. Browser/game data contracts. |
| `runtime-dynamic` | 111 | 2.15 MB | Keep. Dynamically loaded map chunks and runtime index data. |
| `verified-active-out` | 36 | 21.00 MB | Keep unless `tools/verify_web_assets.py` is intentionally changed. |
| `web-review-or-runtime` | 277 | 68.04 MB | Keep while the linked web review page exists; delete only with page consolidation. |
| `docs-evidence` | 218 | 44.38 MB | Keep while docs cite it; delete only after docs are updated to a compact replacement. |
| `tool-generated-or-input` | 72 | 5.99 MB | Review next. These are tool inputs/outputs, not direct runtime files. |
| `tool-diagnostic` | 23 | 7.20 MB | Review next. Probe/poll/gap data; many feed higher-level summaries. |
| `out-report-dependency` | 2 | 0.27 MB | Keep while generated reports link to them. |
| `audit-report` | 2 | 0.87 MB | Current audit output. |

2026-07-05 audit decision: do not bulk-delete `tool-diagnostic` files merely
because they are probe/poll/gap artifacts.  Many are still inputs to route,
selector, completion, or static-analysis summaries.  The next cleanup pass
should replace raw diagnostic inputs with compact outcome summaries first, then
delete the raw files and update the consuming tools/docs in the same commit.

2026-07-05 cleanup note: removed unused generated JavaScript wrappers for
`out/tile_class_gaps.json`, `out/map_tile_class_gaps.json`,
`out/map_extra_rects.json`, and `out/event_record_structure_review.json`.
The JSON/HTML/MD evidence remains; the corresponding generators now avoid
rewriting those wrappers.

2026-07-05 cleanup note: removed 16 tracked generator-only orphan `out/*.json`
artifacts that had no `web`, `docs`, or generated-report consumers.  The
generator scripts remain, so these reports can be regenerated for future local
investigation, but they are no longer part of the active checked-in evidence
surface.

2026-07-05 cleanup note: updated `tools/audit_out_usage.py` to recognize
documented report-family references such as `out/web_playtest_route.*` and
`out/route_blocker_evidence_matrix.*`.  The audit now classifies paired
HTML/JSON/MD evidence by the family reference instead of mislabeling the JSON
companion as tool-only.

2026-07-05 cleanup note: removed tracked `out/cns_tileset_families.json`.
The active map/tile review pages use runtime map/CNS contracts directly, and
the old `cns_tilemap_format` generator no longer links to this optional
intermediate family summary.  It remains locally regenerable through
`tools/summarize_cns_tileset_families.py` if a one-off family inventory is
needed again.

Top `out/` families by filename prefix:

| Prefix | Files | Cleanup stance |
| --- | ---: | --- |
| `save_selector_*` | 215 | Consolidate before deleting; some files are scene/event route evidence, not save-data work. |
| `battle_*` | 113 | Keep active battle contracts; consolidate old proof leaves after current runner pages point to summaries. |
| `runtime_*` | 72 | Mostly raw poll/probe evidence; delete only after a summary/outcome artifact covers the conclusion. |
| `scene_*` | 33 | Keep current VM and prompt/consumer evidence; retire duplicate scans through scene/event summary. |
| `map1_01a_*` | 29 | Old route/hotspot experiments; consolidate into scene/event route blocker evidence. |
| `opening_*` | 28 | Keep final opening/cinematic summaries; retire high-frequency runtime trace variants if summarized. |
| `map_animation_*` | 16 | Keep while map animation producer remains unresolved. |
| `field_*` | 13 | Keep while encounter producer remains unresolved. |
| `candidate_*` | 1 | Compact summary remains; raw candidate browser smokes were removed and ignored. |

Top largest `out/` files:

| File | Size | Stance |
| --- | ---: | --- |
| `out/scene_text_sequence_review.json` | 14 MB | Keep minified payload until scene/event text flow is consolidated. |
| `out/story_flow_review.json` | 7.7 MB | Keep compact/minified payload; detailed trace rows are trimmed except current consumers. |
| `out/story_prompts.json` | 6.3 MB | Keep minified payload until prompt player data contract is stable. |
| `out/event_text_source_flow.json` | 4.2 MB | Keep compact payload until prompt/event text flow is consolidated. |
| `out/battle_skill_timeline_canonical.json` | 4.3 MB | Active battle canonical data; keep minified. |

2026-07-03 cleanup note: duplicate `out/*.html` review copies that have
current `web/*.html` entry points were removed from the active tree.  The
scene/event runtime handoff now keeps only `web/scene_event_runtime_evidence_handoff.html`
for browser review and `out/scene_event_runtime_evidence_handoff.json` for
machine-readable evidence.

2026-07-03 cleanup note: map-animation deep proof leaf pages were removed from
`web/`.  `web/map_animation_execution_boundary_review.html` is now the active
hub, and the detailed evidence remains in `out/map_animation_*.json`.

2026-07-03 cleanup note: small static-boundary leaf pages that were summarized
by `web/static_analysis_remaining_work.html` were removed from `web`; their
source evidence remains in the corresponding `out/*_review.json` artifacts.

2026-07-03 cleanup note: `web/completion_review.html`,
`web/event_review.html`, and `web/format_review.html` are intentionally retained
as progress/evidence boundary pages.  They are not homepage-first user pages,
but active pages still link to them for completion audit, event runtime, and
format/opcode evidence.

2026-07-03 cleanup note: removed the 21.7 MB
`out/exe_interpretation_coverage.html` report from the tracked tree.  The
compact `out/exe_interpretation_coverage_summary.json` remains, and
`tools/summarize_exe_interpretation_coverage.py` now writes the heavy HTML only
when `--html-out` is explicitly provided.

2026-07-03 cleanup note: reduced `web/scene_event_coordinate_semantics_review.html`
from a multi-megabyte inline table to a compact page by replacing repeated full
JSON row search payloads with concise search terms.  Detailed coordinate
evidence remains in `out/scene_event_coordinate_semantics_review.json`.

2026-07-03 cleanup note: removed unreferenced high-frequency opening HTML
views from `out/` while keeping the matching JSON artifacts.  These were not
linked by active web pages, docs, tools, or verifiers and duplicated machine
readable evidence.

2026-07-03 cleanup note: reduced `out/story_flow_review.json` from roughly
48 MB to roughly 12 MB by trimming per-prompt reverse-reference detail and
retaining full trace rows only for choice prompts plus the representative
`map1_01a` opening prompt range.  Summary counters remain in each row, and the
HTML now marks trimmed sections explicitly.

2026-07-03 cleanup note: minified `out/story_flow_review.json` after the trace
trim pass, reducing the retained machine payload from roughly 12 MB to roughly
8 MB without changing the schema.

2026-07-03 cleanup note: removed tracked
`out/exe_interpretation_coverage.json` from the active tree.  It was a
regenerable full range payload with no active consumer outside its own summary
tool.  `out/exe_interpretation_coverage_summary.json` remains tracked as the
compact coverage artifact, and the full payload can be recreated with
`tools/summarize_exe_interpretation_coverage.py --detail-out out/exe_interpretation_coverage.json`.

2026-07-03 cleanup note: reduced `out/scene_text_sequence_review.json` from
roughly 23 MB to roughly 14 MB by writing the machine payload without
indentation.  The JSON schema and fields are unchanged because several
scene/event, 단위, and skill/equipment review tools still consume this file
directly.

2026-07-03 cleanup note: minified active machine JSON payloads for
`out/story_prompts.json` and `out/battle_skill_timeline_canonical.json` without
changing their schemas.  The battle canonical JS wrapper is also minified from
the same schema-preserving payload.
`out/event_text_source_flow.json` was deliberately left as-is because a fresh
regeneration currently changes its payload and belongs in a separate semantic
review pass.

2026-07-05 cleanup note: minified the existing
`out/event_text_source_flow.json` payload without regeneration or schema
changes.  Fresh regeneration still belongs in a separate semantic review pass
because the generator currently changes the underlying event/text evidence.

2026-07-05 cleanup note: minified 38 remaining large pretty-printed
`out/*.json` payloads over 300 KB without regeneration or schema changes.  This
covered battle, map, CNS, scene/event, save-selector, and HUD review evidence
that active pages consume as machine JSON; smaller pretty payloads remain for a
later pass.

2026-07-05 cleanup note: minified a second batch of 54 pretty-printed
`out/*.json` payloads over 100 KB without regeneration or schema changes.  This
keeps active analysis evidence available while reducing diff noise and payload
size ahead of deeper file-level cleanup.

2026-07-05 cleanup note: minified the remaining 294 pretty-printed
`out/*.json` payloads without regeneration or schema changes.  Future generated
analysis JSON should prefer compact machine payloads plus dedicated HTML review
pages when human inspection is needed.

2026-07-05 cleanup note: compacted `out/web_playtest_route_runtime.js` and
updated `tools/summarize_web_playtest_route.py` so future JSON/runtime wrappers
for this route contract are emitted without indentation.

2026-07-05 cleanup note: removed tracked `out/collision_fallback_delta.html`.
The compact `out/collision_fallback_delta.json` remains as the machine evidence,
and both `tools/build_web_assets.py` and `tools/summarize_collision_fallback_delta.py`
now emit only compact JSON by default.  Generate the HTML view explicitly with
`tools/summarize_collision_fallback_delta.py --html-out out/collision_fallback_delta.html`
when a human table is needed.

2026-07-05 cleanup note: removed tracked
`out/save_selector_opcode24_mode1_block_writes.html`.  The compact
`out/save_selector_opcode24_mode1_block_writes.json` remains as the evidence,
`tools/summarize_save_selector_opcode24_mode1_block_writes.py` now emits JSON by
default, and the opcode24 external proof packet now points at the JSON report for
this blocker.

2026-07-05 cleanup note: removed tracked `out/story_prompts_runtime.js` from the
active tree.  It was a duplicate JavaScript wrapper around the active
`out/story_prompts.json` prompt contract and had no consumer outside the story
prompt generator.  `tools/summarize_story_prompts.py` now writes this legacy
wrapper only when `--runtime-js-out` is explicitly provided.

2026-07-03 cleanup note: minified active CNS evidence payloads for
`out/cns_frame_rect_exe_scan.json` and `out/cns_tilemap_format.json` without
changing their schemas.  These remain active contracts for CNS rect/source-rect
and tilemap format reviews, so only formatting was removed.

2026-07-03 cleanup note: minified active route runtime poll payloads for
`out/runtime_selected_pointer*_poll.json` and
`out/runtime_patched_selector_exit_candidates_poll.json` without changing their
schemas.  These remain diagnostic evidence for route/event analysis; the common
runtime selected-pointer writer now emits compact JSON for future probes.

2026-07-03 cleanup note: minified `out/scene_script_player_data.json` without
changing its schema.  It remains the active data contract for
`web/dialogue_prompt_player.html` and resource-reference scene prompt previews.

2026-07-03 cleanup note: minified active browser smoke payloads for
`out/mobile_browser_controls_smoke.json`,
`out/candidate_event_object_browser_smoke.json`, and
`out/candidate_route_progress_browser_smoke.json` without changing their
schemas.  These remain review evidence until the corresponding completion,
movement, and object-review summaries can replace raw smoke payloads.

2026-07-05 cleanup note: added `out/mobile_browser_controls_summary.json` as the
active compact contract for WebKit mobile/browser runtime controls.
`web/movement_review.html`, `tools/build_web_assets.py`,
`tools/summarize_completion_audit.py`, and
`tools/summarize_event_battle_gap_audit.py` now read the summary instead of the
2MB raw smoke payload.  The tracked raw `out/mobile_browser_controls_smoke.json`
was removed from git and ignored; regenerate it locally with
`tools/verify_mobile_browser_controls.py` only when debugging browser regressions.

2026-07-05 cleanup note: removed tracked
`out/mobile_browser_controls_summary.html`. The JSON summary above remains the
active contract; `tools/summarize_mobile_browser_controls.py --html-out ...` can
produce a local HTML view when needed.

2026-07-05 cleanup note: added `out/route_guide_browser_summary.json` as the active
compact contract for WebKit route-guide runtime checks. `tools/build_web_assets.py`
and `tools/summarize_completion_audit.py` now read the summary instead of the
raw `out/route_guide_browser_smoke.json`; the tracked raw smoke was removed from
git and ignored.  Regenerate it locally with `tools/verify_route_guide_browser.py`
only when debugging browser regressions.

2026-07-05 cleanup note: removed tracked
`out/route_guide_browser_summary.html`. The JSON summary above remains the active
route-guide browser contract; `tools/summarize_route_guide_browser.py --html-out ...`
can produce a local HTML view when needed.

2026-07-05 cleanup note: added `out/title_start_browser_summary.*` as the active
compact contract for WebKit title/start runtime checks. `tools/build_web_assets.py`,
`tools/summarize_completion_audit.py`, and the goal checklist now read the summary
instead of the raw `out/title_start_browser_smoke.json`; the tracked raw smoke was
removed from git and ignored.  Regenerate it locally with
`tools/verify_title_start_browser.py` only when debugging browser regressions.

2026-07-05 cleanup note: added `out/battle_skill_timeline_browser_summary.*` for
battle-skill timeline goal audits. The browser verifier, `tools/verify_web_assets.py`,
and visual assertion builders still keep the raw `out/battle_skill_timeline_browser_smoke.json`
because they need detailed row/pixel guard data; the goal audit reads only the compact
status/count/bucket contract.

2026-07-03 cleanup note: minified active battle monster action payloads for
`out/battle_monster_action_frame_probe.json`,
`out/battle_monster_action_selection_review.json`,
`out/battle_monster_action_catalog.json`, and
`out/battle_monster_action_effect_review.json` without changing their schemas.
They remain the monster action/frame/effect contract used by battle review and
timeline generators.

2026-07-03 cleanup note: minified additional active candidate browser smoke
payloads for shop, save point, deep route, and equipment menu flows without
changing their schemas.  These remain evidence for menu/completion/system
reviews until consolidated summaries replace raw smoke payloads.

2026-07-04 cleanup note: added `out/candidate_browser_smoke_summary.*` as the
active consolidation index for all `out/candidate_*_browser_smoke.json`
payloads.  The summary records status, size, compact top-level fields, and
current consumers.  Raw candidate smoke files are still retained because
some domain summary generators, verifiers, and unresolved analysis tools still
read domain-specific fields.  Delete a raw smoke only after its consumer count
in the summary reaches zero.

2026-07-04 cleanup note: added `out/menu_candidate_review_summary.*` to replace
`web/menu_review.html`'s direct fetches of shop, party, skill, equipment,
status, and progress browser smoke payloads.  The page still shows the same
detail tables, but now reads the compact menu contract.  The raw candidate
smokes remain retained for domain-summary and verifier consumers.

2026-07-04 cleanup note: added `out/completion_candidate_review_summary.*` to
replace `web/completion_review.html`'s direct fetches of route/deep browser
smoke payloads.  The review keeps the same completion-gate indicators, but now
uses a compact route/deep contract.  The raw route/deep smokes remain retained
for the completion summary generator and verifier consumers until those readers
are consolidated.

2026-07-04 cleanup note: added `out/movement_candidate_review_summary.*` to
replace `web/movement_review.html` and `web/map_occlusion.html` direct
fetches of `out/candidate_movement_browser_smoke.json`.  The summary preserves
the movement/bump/status smoke strings and the trace sample snapshot used by
the active review pages.  The raw movement smoke remains retained for its
domain-summary generator and verifier consumers until those readers are
consolidated.

2026-07-04 cleanup note: added `out/dialogue_candidate_review_summary.*` to
replace `web/dialogue_review.html` direct fetches of
`out/candidate_dialogue_progress_browser_smoke.json`.  The summary preserves
the top-level candidate dialogue smoke fields used by the active review page
and drops the large raw snapshot payloads.  The raw dialogue smoke remains
retained for domain-summary and verifier consumers until those readers are
consolidated.

2026-07-05 cleanup note: `out/goal_completion_checklist.*` now links to the
movement, dialogue, and completion candidate summary contracts instead of the
raw movement/dialogue/route/deep browser smoke payloads.  Raw smoke files remain
retained for domain-summary, verifier, and unresolved specialized consumers.

2026-07-05 cleanup note: `tools/build_web_assets.py` and
`tools/summarize_completion_audit.py` now consume compact menu, movement,
dialogue, and route/deep candidate summaries for the covered browser-candidate
domains.  Raw candidate smokes in those domains are retained only where they
are still domain-summary inputs or verifier outputs.

2026-07-05 cleanup note: `tools/summarize_event_vm_semantics_gap.py` now reads
`out/dialogue_candidate_review_summary.json` instead of the raw dialogue
browser smoke.  The compact dialogue summary keeps the top-level control/render
strings needed for the VM-gap report while dropping the raw snapshot payload.

2026-07-05 cleanup note: added `out/event_object_candidate_review_summary.json`
for event/object browser candidate evidence.  `tools/build_web_assets.py` and
`tools/summarize_completion_audit.py` now consume the compact event/object
summary instead of `out/candidate_event_object_browser_smoke.json`; the raw
event/object smoke remains retained for its domain-summary generator and
browser verifier.  The duplicate HTML wrapper was later removed; JSON is the
active contract.

2026-07-05 cleanup note: added `out/save_point_candidate_review_summary.json`
for save-point browser candidate evidence.  `tools/build_web_assets.py` and
`tools/summarize_completion_audit.py` now consume the compact save-point
summary instead of `out/candidate_save_point_browser_smoke.json`; the raw
save-point smoke remains retained for its domain-summary generator and browser
verifier.  The duplicate HTML wrapper was later removed; JSON is the active
contract.

2026-07-05 cleanup note: added
`out/transition_progress_candidate_review_summary.json` for transition-progress
browser candidate evidence.  `tools/build_web_assets.py` and
`tools/summarize_completion_audit.py` now consume the compact transition
summary instead of `out/candidate_transition_progress_browser_smoke.json`; the
raw transition-progress smoke remains retained for its domain-summary generator
and browser verifier.  The duplicate HTML wrapper was later removed; JSON is
the active contract.

2026-07-05 cleanup note: `out/candidate_browser_smoke_summary.*` now separates
raw smoke consumers into boundary consumers (`tools/summarize_*` and
`tools/verify_*`) and surface consumers (active web/build/audit users).  All
candidate browser smoke rows are currently `summary-created-boundary-only` with
zero surface consumers, so the raw files are verifier/summary boundary artifacts
rather than active runtime/build inputs.

2026-07-03 cleanup note: minified active selector-root and battle VM payloads
for `out/selector_root_structure_review.json`,
`out/battle_display_vm_static_decode.json`, and
`out/battle_skill_complete_pattern_review.json` without changing their schemas.
These remain active inputs for scene/resource, battle display VM, and skill
pattern generators, so only formatting was removed.

2026-07-03 cleanup note: minified active map exit/collision evidence payloads
for `out/map_exit_candidates.json`,
`out/map1_01a_exit_coordinate_variant_scan.json`,
`out/map_field_exit_candidate_review.json`,
`out/field_map_record_roots.json`, and `out/map_tile_class_gaps.json` without
changing their schemas.  These remain route, transition, and collision review
inputs, so only formatting was removed.

2026-07-03 cleanup note: minified active battle helper/effect evidence
payloads for movement, action timeline, effect objects, helper child/spawn,
position/motion, sync timing, visual behavior, transform solver, and effect
animation pattern reviews without changing their schemas.  These remain battle
timeline and effect reconstruction inputs, so only formatting was removed.

2026-07-03 cleanup note: minified active UI/HUD evidence payloads for
`out/hud_menu_preview.json`, `out/menu_right_panel_ui_review.json`, and
`out/ui_cns_grid_mappings.json` without changing their schemas.  The right-menu
JSON remains as HUD/menu input evidence; the standalone right-menu HTML surface
was later retired in favor of `web/hud_menu_preview.html`.

2026-07-03 cleanup note: minified active object evidence payloads for
`out/active_object_script_inventory.json`,
`out/active_object_resource_slot_review.json`,
`out/active_object_blank_draw_source_review.json`, and
`out/active_object_bounds_semantics_review.json` without changing their
schemas.  These remain active inputs for map object, resource slot, and
dialogue/object binding reviews.

2026-07-05 cleanup note: removed tracked
`out/active_object_script_inventory.html`. The JSON inventory remains the active
object script evidence contract; run
`tools/summarize_active_object_script_inventory.py --html-out ...` to produce a
local HTML view when needed.

2026-07-03 cleanup note: minified active route/runtime/save-selector evidence
payloads for runtime trace feasibility, predecessor field-entry sequence,
patched selector left active-order poll, save-scene selector references,
selection writers, route investigation queue, and route promotion gate without
changing their schemas.  These remain active route blocker and completion audit
inputs.

Top-level `tools/*.py` categories:

| Category | Count | Stance |
| --- | ---: | --- |
| `summarize_*` | 242 | Main cleanup target after corresponding `out/` summaries are retired or merged. |
| `build_*` | 171 | Keep current generators; remove stale builders only after their output is deleted. |
| `probe_*` | 45 | Runtime/probe scripts are delete candidates once their conclusions are summarized. |
| `verify_*` | 39 | Keep active verifiers; remove `verify_candidate_*` after candidate pages are retired. |
| `extract_*` | 7 | Keep unless superseded by stable parsers. |
| `render_*` | 3 | Review individually. |
| `parse_*` | 1 | Keep if still part of documented parsing path. |

## Buckets

### Active Contract

Files in this bucket are current contracts or active user/review surfaces.  Do
not delete without replacing all consumers.

- `web/index.html`
- `web/game.html`
- `web/map_review.html`
- `web/map_gallery.html`
- `web/resource_reference_review.html`
- `web/cns_rect_review.html`
- `web/ui_window_review.html`
- `web/ui_grid_review.html`
- `web/hud_menu_preview.html`
- `web/item_equipment_skill_static.html`
- `web/battle_formula_calculator.html`
- `web/battle_skill_timeline_review.html`
- `web/battle_simulator.html`
- `web/monster_review.html`
- `web/monster_stats.html`
- `web/dialogue_prompt_player.html`
- `web/midi_bgm_test.html`
- `web/engine/battle/animation.js`
- `web/engine/cns/renderer.js`
- `web/engine/field/runtime.js`
- `web/engine/audio/midi_bgm_player.js`
- `web/engine/audio/midi_soundfont.js`
- `web/engine/audio/midi_soundfont_storage.js`
- `web/engine/audio/midi_spessasynth_adapter.js`
- Active data generated by `tools/build_web_assets.py`, especially map/CNS/audio/static tables.

Root-level runtime shims were removed after active pages and generators were
normalized to `web/engine/*` and `web/engine/audio/*`. New pages should load
engine modules directly.

### Keep As Evidence

These are not necessarily user-facing, but they document unresolved analysis
boundaries.  Keep until a newer consolidated document replaces them.

- Scene/event VM and text-consumer reviews.
- Field encounter producer and formation reviews.
- Map animation producer/binding reviews.
- HUD/menu opener and status/comment producer reviews.
- `docs/SCENE_EVENT_VM_REFERENCE.md`
- `docs/BATTLE_SYSTEM_REFERENCE.md`
- `docs/REVIEW_CLEANUP.md`
- `docs/LEGACY_CLEANUP_GOAL.md`
- `docs/ENGINE_EXTRACTION_PLAN.md`

### Consolidate Then Delete

These groups should be reduced by writing one current summary, then deleting raw
or duplicate outputs and their stale generators.

- `out/save_selector_*`
  - Many are no longer about save data.  First split into:
    - still-useful scene/event route evidence
    - retired save-data experiments
    - duplicate runtime polling artifacts
- `out/map1_01a_*`
  - Consolidate into a route/trigger blocker note.
- `out/runtime_*`
  - Currently 32 `runtime_*poll.json` files are all still referenced at least
    twice, often by `tools/build_web_assets.py`, route blocker summaries, or
    route promotion evidence.  Keep them until those consumers read a compact
    consolidated summary instead of the raw poll payloads.
- `out/candidate_*_browser_smoke.json`
  - Current surface/build/audit consumers have been replaced by compact
    domain summaries and `out/candidate_browser_smoke_summary.*`.
  - 2026-07-05 cleanup note: removed the 13 tracked raw candidate browser smoke
    JSON files from git and added them to `.gitignore`.  The compact summary now
    preserves the last row metadata and recorded raw size (`10.242 MiB`) when the
    raw payloads are absent.  Regenerate raw smoke locally only when rerunning a
    matching browser verifier; do not recommit those raw verifier outputs.
- `out/opening_*_hifreq*`
  - Keep final opening facts; delete high-frequency variants after summary.
- Old battle proof leaves that are already consumed by:
  - `out/battle_effect_runner_binding_review.*`
  - `out/battle_skill_goal_audit.*`
  - `web/battle_skill_timeline_review.html`

### Delete Candidates After Reference Check

These are likely disposable, but still require `rg` before removal:

- `verify_candidate_*_browser.py`
- `probe_runtime_*` scripts whose `out/runtime_*` artifacts have been retired.
- `summarize_legacy_*`
- `legacy_*_gap.*`
- stale `candidate_*` outputs not used by active completion/progress.
- generated `out/*.html` duplicates when the same review exists in `web/` and
  active navigation uses the `web/` copy.

### Do Not Delete Yet

- `web/soundfonts/*`: large, but intentionally bundled for MIDI testing.
- `out/battle_skill_timeline_canonical.*`: active battle playback data.
- `out/cns_precut_catalog_review.*`: current CNS rect/source-rect contract.
- `out/maps.js`, `out/cns_rect_review_data.*`, `out/audio_archive_manifest.*`: active web data.
- `data/hud_trace_state.json`: user-authored HUD tracing state.
- `data/battle_effect_capture_manifest.json` and `captures/`: pixel-oracle workflow support.

## Execution Plan

### Phase 1: Baseline Index And Link Contract

1. Generate a machine-readable inventory of `web`, `out`, and `tools`.
2. Record active links from `web/index.html`.
3. Record current required verifier list.
4. Commit the inventory before deletion.

### Phase 2: Web Surface Trim

1. Keep active pages and hubs.
2. Move deep proof links behind area hubs or `static_analysis_remaining_work.html`.
3. Remove pages only when they are no longer linked and an `out/` or `docs/`
   evidence path remains.

### Phase 3: Out Artifact Consolidation

Start with low-risk groups:

1. old high-frequency `opening_*` variants
2. `runtime_*` raw polls that already have summary pages

Then handle high-risk groups:

1. `save_selector_*`
2. `map1_01a_*`
3. large scene text/story flow raw files

### Phase 4: Tools Cleanup

For each removed artifact group:

1. Identify its generator/probe/verifier.
2. Remove generator if no active output remains.
3. If generator is still useful, make it `out/`-only and prevent it from
   recreating removed `web/` pages.

### Phase 5: Engine Modularization

Only after cleanup stabilizes:

1. Move confirmed CNS rendering into `web/engine`.
2. Move confirmed field camera/movement/collision into `web/engine`.
3. Move confirmed battle playback/calculation into `web/engine`.
4. Make future demo/game pages consume only engine APIs.

## Required Checks Per Slice

Run before committing each cleanup slice:

```bash
python3 tools/verify_web_assets.py
python3 -m py_compile tools/*.py
git diff --check
```

For specific areas, also run:

```bash
python3 tools/verify_battle_skill_playback_regressions.py
python3 tools/verify_battle_skill_canonical_binding.py
python3 tools/verify_item_equipment_skill_static_browser.py
python3 tools/verify_map_gallery_visual_browser.py
python3 tools/verify_midi_bgm_test_browser.py
```

## Open Decisions

- Whether to keep both `web/*_review.html` and `out/*_review.html` copies when
  they show the same data.
- Whether large story text JSON should remain raw in git or be regenerated on
  demand from smaller extraction tools.
- Whether `save_selector_*` should be renamed before consolidation to avoid
  implying savedata work.
- How much of the active review UI should remain in `web/index.html` versus
  area-specific hubs.

## Cleanup Log

- 2026-07-03: Minified active event/dialogue, map animation non-object tile-write,
  browser smoke, enemy stat, opening opcode, scene manifest, and battle monster
  movement JSON payloads. Schemas and values are unchanged; generators now
  preserve compact JSON for these active machine-readable artifacts.
- 2026-07-03: Removed orphan generated HTML reports for active-object blank draw
  and save-selector reference/writer reviews. The JSON evidence remains tracked;
  generators now keep those outputs JSON-only so stale HTML does not reappear.
- 2026-07-03: Removed additional orphan HTML viewers for UI CNS grid mappings,
  active-object cara/etc, monster frame-rect scan, and field-exit candidates.
  JSON/JS/Markdown evidence remains where it is still consumed by active tools
  and pages.
- 2026-07-03: Removed orphan CNS tilemap/family and battle child helper HTML
  viewers. JSON evidence remains, generators now emit JSON-only outputs for
  these reports, and downstream HTML links point to the retained JSON files.
- 2026-07-03: Removed unlinked save/object/script helper HTML viewers for
  selector, object-payload caller, script-handler, and branch-state candidates.
  Their JSON/JS/Markdown evidence remains and generators no longer recreate the
  stale HTML copies.
- 2026-07-03: Removed unlinked route/save checkpoint helper HTML viewers for
  manual movement, route-like scripts, selector predecessor/runtime byte writes,
  map1_01a shape scans, and checkpoint entry reviews. JSON/Markdown evidence
  remains, and generators now emit JSON/Markdown only for these helper reports.
- 2026-07-03: Removed selected-pointer and patched-selector runtime poll HTML
  viewers. JSON poll evidence remains, runtime trace summaries now reference
  JSON, and the shared poll writer no longer emits HTML. The follow-up context
  HTML remains because route blocker pages still link it directly.
- 2026-07-03: Removed the remaining route watch-values runtime poll HTML from
  the same selected-pointer poll family. The compact JSON evidence remains and
  goal notes now point to that JSON artifact.
- 2026-07-03: Removed the runtime map layer0 poll HTML viewer. The viewport
  match review now links the compact poll JSON, and the poll generator no
  longer recreates the HTML copy.
- 2026-07-03: Removed runtime save-file I/O probe HTML viewers. The runtime
  trace feasibility page and goal notes now point to compact JSON evidence,
  and the save-file I/O probe no longer emits HTML.
- 2026-07-03: Converted core runtime diagnostic probe outputs for trace
  execution, process memory snapshot, input path, and key sequences to
  JSON-only artifacts. Summary, audit, handoff, and proof links now point at
  the retained JSON evidence instead of duplicate probe HTML viewers.
- 2026-07-03: Removed unlinked battle effect leaf HTML viewers for roar,
  hogyeok, bakuten, hishokaku, mouko-special sparkle, child-target renderer
  gap, and motion-boundary loop reviews. JSON/Markdown evidence remains, the
  generators no longer recreate those HTML leaves, and the active timeline
  page links to the retained JSON where needed.
- 2026-07-03: Removed unlinked context HTML viewers for
  `map1_01a_scene_record_cluster_context` and
  `runtime_memory_snapshot_context`. Their JSON evidence remains consumed by
  route/runtime summaries, and the generators now emit JSON-only outputs.
- 2026-07-03: Removed 26 unreferenced `save_selector_*` leaf HTML viewers
  whose JSON evidence remains tracked. Their summarizers now emit JSON-only
  outputs, reducing stale savedata/scene-route proof surfaces without removing
  the machine-readable route evidence.
- 2026-07-03: Removed 19 additional unreferenced JSON-backed `out/` HTML
  viewers across CNS rect scans, route blockers, text refs, HUD hints, map3
  placement probes, object/script probes, resource VM bridge, save loader,
  scene selector, and opcode dictionary reports. The JSON artifacts remain as
  active machine-readable inputs, and generators no longer emit those stale
  HTML copies by default.
- 2026-07-03: Removed 14 docs-only `map1_01a_*` route proof HTML leaves
  covering edge triggers, coordinate scans, CNS payload scans, target ranking,
  resource refs, manifest/root point scans, selector bridges, and strict target
  link gaps. JSON/Markdown evidence remains tracked, goal notes now reference
  JSON/Markdown, and the corresponding summarizers no longer recreate HTML.
- 2026-07-03: Removed the last two docs-only runtime predecessor HTML viewers
  for coordinate-source and field-entry sequence scans. Their runtime probe
  scripts now emit JSON-only evidence, and goal notes reference those JSON
  artifacts directly.
- 2026-07-05: Removed the stale direct `candidate_battle_browser_smoke.json`
  input from the completion audit/build path. Candidate battle browser smoke is
  now treated as a verifier-regenerated boundary artifact; active audit/build
  status uses the event battle gap summary and compact candidate smoke summary
  instead of requiring that raw output to exist in the working tree.
- 2026-07-05: Removed tracked `out/field_map_record_roots.html`. The compact
  `out/field_map_record_roots.json` remains the active evidence consumed by
  route/transition analysis, and `tools/summarize_field_map_record_roots.py`
  now emits HTML only when `--html-out` is explicitly provided.
- 2026-07-05: Removed tracked
  `out/save_selector_dispatch_table_context.html`. The compact
  `out/save_selector_dispatch_table_context.json` remains the active selected-root
  dispatch-table evidence, and the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked `out/transition_review_shortlist.html`. The
  compact `out/transition_review_shortlist.json` remains the shortlist evidence,
  while `out/transition_review_shortlist_audit.html` stays active because
  completion/route audit pages still link it directly.
- 2026-07-05: Removed tracked
  `out/save_selector_current_writer_paths.html`. The compact
  `out/save_selector_current_writer_paths.json` remains the current-root writer
  evidence consumed by route blockers and selected-root proof summaries; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_secondary_state_sources.html`. The compact
  `out/save_selector_secondary_state_sources.json` remains the branch-state
  source evidence consumed by persistence/reset/completion analyses; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/transition_extraction_gaps.html`. The
  compact `out/transition_extraction_gaps.json` remains the broad coordinate
  extraction blocker evidence consumed by route/hotspot analyses; the summarizer
  now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_scene_adjacency_index.html`. The compact
  `out/save_selector_scene_adjacency_index.json` remains the selector
  scene-adjacency blocker evidence consumed by route/gate analyses; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_selected_pointer_opcode_paths.html`. The compact
  `out/save_selector_selected_pointer_opcode_paths.json` remains the selected-
  pointer opcode evidence consumed by route, opcode, scene-text, and completion
  analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/opcode24_action_payload_patterns.html`.
  The compact `out/opcode24_action_payload_patterns.json` remains the global
  opcode `0x24` action/state payload blocker evidence consumed by build and
  route analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode24_current_root_modes.html`.
  The pretty JSON `out/save_selector_opcode24_current_root_modes.json` remains
  the current selector root opcode `0x24` mode scan consumed by route and audit
  analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_data_descriptor_opcode_map.html`.
  The compact JSON `out/save_selector_data_descriptor_opcode_map.json` remains
  the route-relevant low-byte data descriptor evidence consumed by predecessor,
  route, and audit analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_dispatch_stop_context.html`.
  The compact JSON `out/save_selector_dispatch_stop_context.json` remains the
  route dispatch-stop descriptor evidence consumed by descriptor, route, and
  audit analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode24_globals.html`.
  The compact JSON `out/save_selector_opcode24_globals.json` remains the opcode
  `0x24` runtime-global neighborhood evidence consumed by runtime-enabled,
  route, and audit analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_selected_pointer_usage.html`.
  The compact JSON `out/save_selector_selected_pointer_usage.json` remains the
  selected-pointer runtime choke-point evidence consumed by selected-root,
  route, blocker-matrix, and audit analyses; the summarizer now emits HTML only
  with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode24_payload_table.html`.
  The compact JSON `out/save_selector_opcode24_payload_table.json` remains the
  opcode `0x24` payload pointer-closure evidence consumed by descriptor, route,
  and audit analyses; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode08_unreadable_producers.html`.
  The compact JSON `out/save_selector_opcode08_unreadable_producers.json`
  remains the unreadable opcode `0x08` producer explanation consumed by route,
  opcode-collision, and audit analyses; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode07_indexed_pointers.html`.
  The compact JSON `out/save_selector_opcode07_indexed_pointers.json` remains
  the opcode `0x07` direct-selection exclusion evidence consumed by wrapper,
  route-pair, route, and audit analyses; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode09_pointer_collisions.html`.
  The compact JSON `out/save_selector_opcode09_pointer_collisions.json` remains
  the opcode `0x09` store-vs-pointer-collision evidence consumed by wrapper,
  route-pair, route, and audit analyses; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_global_selected_pointer_paths.html`.
  The compact JSON `out/save_selector_global_selected_pointer_paths.json`
  remains the global selected-pointer opcode `0x07`/`0x08`/`0x09` exclusion
  evidence consumed by selected-root, route, and audit analyses; the summarizer
  now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_opcode08_activation_windows.html`.
  The compact JSON `out/save_selector_opcode08_activation_windows.json` remains
  the opcode `0x08` local producer-window evidence consumed by unreadable
  producer, wrapper, route-pair, route, and audit analyses. Active web links now
  point to the JSON evidence, and the summarizer emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_merge_bridge_matrix.html`.
  The compact JSON `out/save_selector_merge_bridge_matrix.json` remains the
  source/predecessor/current selector direct bridge matrix evidence consumed by
  route-boundary, static remaining-work, and selector-merge proof packet
  analyses. Active links now point to JSON evidence, and the summarizer emits
  HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/title_start_browser_summary.html`. The
  compact JSON `out/title_start_browser_summary.json` remains the retained
  title-start browser smoke summary consumed by completion/progress audits; the
  summarizer emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/battle_effect_capture_checklist.html`. The
  retained `out/battle_effect_capture_checklist.json` remains the capture intake
  evidence used by battle goal audits and the battle analysis summary; the
  checklist builder now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/battle_effect_pixel_oracle_plan.html`. The
  retained `out/battle_effect_pixel_oracle_plan.json` remains the original
  runtime pixel-oracle handoff consumed by capture/import/compare tools and
  battle goal audits; the plan builder now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/battle_effect_pixel_compare_report.html`.
  The retained `out/battle_effect_pixel_compare_report.json` remains the
  pixel-compare evidence consumed by battle goal audits; the comparator now
  emits thumbnail HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/runtime_source_exit_poll_context.html`.
  The compact `out/runtime_source_exit_poll_context.json` remains the
  source-exit runtime poll context referenced by GOAL notes; the summarizer now
  emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked raw poll
  `out/runtime_selected_pointer_source_exit_branch_state_poll.json`. Its
  source-exit evidence is retained in compact form inside
  `out/runtime_source_exit_poll_context.json`, including the raw-poll brief and
  the load-confirmed comparison. The summarizer now preserves that compact
  summary when the raw poll is absent unless
  `--allow-missing-source-poll` is explicitly requested.
- 2026-07-05: Removed tracked `out/scene_script_reader.html`. It was a
  duplicate full-static script expansion of
  `out/scene_text_sequence_review.json`; the active scene review surface is now
  `out/scene_script_player.html` plus `out/scene_script_player_data.json`.
  `tools/summarize_scene_text_sequences.py` can still emit the full reader with
  `--reader-html-out` for one-off local inspection.
- 2026-07-05: Removed tracked `out/opening_event_vm_probe.html`. The compact
  `out/opening_event_vm_probe.json` remains the opening event-VM probe evidence,
  and `out/opening_consumer_trace.html` links to that JSON directly; the probe
  generator now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/runtime_predecessor_route_attempt_context.html`. The retained
  `out/runtime_predecessor_route_attempt_context.json` remains the predecessor
  route-attempt evidence referenced by GOAL notes and route blockers; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/runtime_source_save_load_variant_context.html`. The retained
  `out/runtime_source_save_load_variant_context.json` remains the source-save
  load/exit variant evidence referenced by GOAL notes and route blockers; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/runtime_opcode24_flag_context.html`. The
  retained `out/runtime_opcode24_flag_context.json` remains the runtime opcode24
  flag/source watch context referenced by branch/global flag reviews, route
  blocker reports, and opcode24 proof packets; the summarizer now emits HTML
  only with `--html-out`.
- 2026-07-05: Removed tracked `out/runtime_save_path_context.html`. The
  retained `out/runtime_save_path_context.json` remains the EXE save-path,
  loader, `ReadFile` block, and selected-pointer-store evidence referenced by
  route blocker and checkpoint reports; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked
  `out/runtime_patched_selector_followup_context.html`. The retained
  `out/runtime_patched_selector_followup_context.json` remains the constructed
  selector follow-up diagnostic evidence referenced by route blocker and
  checkpoint reports; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/runtime_title_start_context.html`. The
  retained `out/runtime_title_start_context.json` remains the original EXE
  title/start selected-pointer diagnostic evidence consumed by web playtest,
  opening, and completion audits; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_runtime_enabled_context.html`. The retained
  `out/save_selector_opcode24_runtime_enabled_context.json` remains the opcode
  `0x24` runtime-enabled flag gate evidence consumed by opcode24 runtime
  producer proof packets and route blockers; the summarizer now emits HTML only
  with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_mode1_file_read_context.html`. The retained
  `out/save_selector_opcode24_mode1_file_read_context.json` remains the opcode
  `0x24` mode1 file-read producer exclusion evidence consumed by opcode24
  runtime producer proof packets and route blockers; the summarizer now emits
  HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_mode1_indirect_context.html`. The retained
  `out/save_selector_opcode24_mode1_indirect_context.json` remains the opcode
  `0x24` mode1 indirect/base-window producer exclusion evidence consumed by
  opcode24 runtime producer proof packets and route blockers; the summarizer now
  emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_mode1_runtime_context.html`. The retained
  `out/save_selector_opcode24_mode1_runtime_context.json` remains the opcode
  `0x24` mode1 zero-filled runtime source, save-loader exclusion, and runtime
  producer blocker evidence consumed by opcode24 runtime producer proof packets,
  route blockers, and selector reviews; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_mode1_source_writes.html`. The retained
  `out/save_selector_opcode24_mode1_source_writes.json` remains the opcode
  `0x24` mode1 static/direct source-write exclusion evidence consumed by
  opcode24 runtime producer proof packets, runtime-context summaries, and route
  blockers; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_runtime_enabled_block_writes.html`. The retained
  `out/save_selector_opcode24_runtime_enabled_block_writes.json` remains the
  opcode `0x24` runtime-enabled flag broad block-write exclusion evidence
  consumed by opcode24 runtime producer proof packets, route blockers, and
  completion audits; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode24_mode1_default_effect.html`. The retained
  `out/save_selector_opcode24_mode1_default_effect.json` remains the opcode
  `0x24` mode1 static/default object `+0x61` route non-promotion evidence
  consumed by opcode24 runtime producer proof packets and route blockers; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/opening_start_context.html`. The retained
  `out/opening_start_context.json` and `out/opening_start_context.md` remain
  the opening/title resource-grounded start context referenced by opening
  opcode/consumer/cinematic surfaces; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked
  `out/map1_01a_strict_source_hotspot_context.html`. The retained
  `out/map1_01a_strict_source_hotspot_context.json` remains the strict source
  hotspot blocker evidence consumed by route-promotion gates, proof handoff
  packets, and blocker matrices; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked
  `out/event_object_branch_state_block_context.html`. The retained
  `out/event_object_branch_state_block_context.json` remains the event/object
  branch-state non-promotion evidence consumed by scene/event VM branch-flag
  reviews, route queues, and completion audits; the summarizer now emits HTML
  only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_leaf_table_context.html`. The retained
  `out/save_selector_leaf_table_context.json` remains the current selector leaf
  table/window evidence consumed by selected-root/current-leaf proof packets,
  route queues, and wrapper execution gap reports; the summarizer now emits
  HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_merge_closure_context.html`. The retained
  `out/save_selector_merge_closure_context.json` remains the selector merge
  closure blocker evidence consumed by selector-merge proof packets, route
  queues, and completion audits; the summarizer now emits HTML only with
  `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_merge_runtime_context.html`. The retained
  `out/save_selector_merge_runtime_context.json` remains the selector merge
  runtime/control-flow blocker evidence consumed by selector review UI,
  predecessor-fill and selector-merge proof packets, route queues, and
  completion audits; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_opcode2c_route_pair_context.html`. The retained
  `out/save_selector_opcode2c_route_pair_context.json` remains the opcode
  `0x2c` corrected route-pair trace evidence consumed by route-pair descriptor,
  frontier reader, current-leaf/wrapper, route queues, and completion audits;
  the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_predecessor_fill_opcode10_context.html`. The retained
  `out/save_selector_predecessor_fill_opcode10_context.json` remains the
  opcode `0x10` predecessor fill fragment/handler evidence consumed by
  predecessor-fill proof packets, selector-merge closure, route queues, and
  completion audits; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_predecessor_fill_site_execution_context.html`. The
  retained `out/save_selector_predecessor_fill_site_execution_context.json`
  remains the consolidated predecessor fill-site execution/order blocker
  consumed by predecessor-fill proof packets, route promotion gates, route
  blocker matrices, selector-merge runtime context, and completion audits; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked `out/save_selector_reverse_reuse_context.html`.
  The retained `out/save_selector_reverse_reuse_context.json` remains the
  current-to-predecessor reverse reuse classification evidence consumed by
  selector-merge proof packets, route queues, and completion audits; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_route_pair_descriptor_context.html`. The retained
  `out/save_selector_route_pair_descriptor_context.json` remains the
  current-root route-pair descriptor/frontier-reader blocker evidence consumed
  by opcode `0x2c` route-pair context, route queues, wrapper proof packets, and
  completion audits; the summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_route_root_ref_context.html`. The retained
  `out/save_selector_route_root_ref_context.json` remains the selector root
  table-only reference-chain blocker evidence consumed by selector-merge proof
  packets, route blocker matrices, route queues, and completion audits; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_scene_list_context.html`. The retained
  `out/save_selector_scene_list_context.json` remains the frontier
  scene-list/resource-gate blocker evidence consumed by frontier reader,
  payload/adjacency reports, route queues, and completion audits; the
  summarizer now emits HTML only with `--html-out`.
- 2026-07-05: Removed tracked
  `out/save_selector_wrapper_descriptor_context.html`. The retained
  `out/save_selector_wrapper_descriptor_context.json` remains the frontier
  wrapper/current-root separation blocker evidence consumed by wrapper
  execution, route-pair entry, route queues, and completion audits; the
  summarizer now emits HTML only with `--html-out`.
