# Attention Directory Audit (C1)

## dsv4/kernels/attention/ files

| File | Refs from live code | Action |
|---|---|---|
| `fmha_6warp_tma_multirow_multitile.cuh` | fmha_multitile_capi.cu (include) | KEEP - production kernel |
| `fmha_common.cuh` | fmha_6warp_tma_multirow_multitile.cuh (include) | KEEP - shared defs |
| `fmha_tma.cuh` | fmha_6warp_tma_multirow_multitile.cuh (include) | KEEP - TMA helpers |
| `fmha_umma_desc.cuh` | fmha_multitile_capi.cu (include) | KEEP - UMMA descriptors |
| `fmha_multitile_capi.cu` | fmha_multitile_op.py (nvcc compile) | KEEP - C API wrapper |
| `fmha_multitile_op.py` | production.py:312 (import) | KEEP - ctypes loader |
| `production.py` | __init__.py, custom_ops.py, layers/attention.py, tests | KEEP - public API |
| `__init__.py` | layers/attention.py | KEEP - public API |
| `fmha.py` | production.py:53 (FmhaKernel import), ~48 test files | DELETE (C3 Option A) |
| `fmha_sm100.cuh` | Only referenced by files being deleted | DELETE |
| `fmha_sm100_tc.cuh` | Zero live refs | DELETE |
| `fmha_sm100_launch.cu` | Zero live refs | DELETE |
| `fmha_epilogue_sm100.cuh` | Only ref is fmha_sm100_launch.cu (deleting) | DELETE |
| `fmha_qk_verify.cuh` | Only ref is tests/unit/test_qk_mma.cu | MOVE to tests/unit/ |
| `archive/` (5 files) | Zero live refs | MOVE to archived_plans/code_archive/ |

## dsv4/ops/ dead files

| File | Refs | Action |
|---|---|---|
| `decode_sparse.py` | Zero | DELETE |
| `decode_swa.py` | Zero | DELETE |

## dsv4/kernels/decode/ (entire dir)

| File | Refs | Action |
|---|---|---|
| `__init__.py` | Zero | DELETE dir |
| `_NOTES_fp8_bf16.md` | Zero | DELETE dir |

## Root-level scratch

| File | Action |
|---|---|
| `debug_linear.py` | DELETE |
| `test_mapping.py` | DELETE |
| `run_router_tests.py` | DELETE (hardcoded B200 path) |
| `tests/working_softmax_maybe.py` | DELETE |

## test_d*.py count: 46 → target ≤5

All 46 reference FmhaKernel (being deleted) or are Stage D probes.
All DELETE under C3 Option A.

## test_smem_acc.py — imports FmhaKernel from archive. DELETE.

## test_cotiled_diag.py, test_fmha_v3_stage_d1.py, test_tmem_roundtrip_minimal.py, test_smem_budget.py — import FmhaKernel. DELETE with C3.

Live test files (KEEP):
- test_p3_fast_decode.py (tests multitile op)
- test_p6_tma_epilogue.py (tests multitile op)
- test_p7_multi_row_softmax.py (tests multitile op)
- test_production.py (tests production API)
- test_fmha_sm100.py (tests standalone .cu compile)
- All test_*.cu files (standalone CUDA, don't import FmhaKernel)
- test_nvfp4_*.py (quantization tests)
- test_cutedsl.py (CuTeDSL infra)

Live .cuh count after cleanup: 4 (fmha_6warp_tma_multirow_multitile, fmha_common, fmha_tma, fmha_umma_desc)
Live .cu count: 1 (fmha_multitile_capi.cu)
