Repository is wired for the SFT production path now.

The actual regression was isolated and fixed: prefetch was decoding the entire next shard while the current shard was encoding, which cut throughput roughly in half. `sft_worker.py` now does **download-only prefetch**, decodes only the current shard, keeps checkpoint/recovery every `1000` segments, and benchmark mode stops after one full shard while still confirming the next shard download is ready.

## Current state

- Output stays as `xcodec2_tokens.parquet` uploaded back into the **same shard folder**.
- `indicvoices/` is still excluded.
- Supabase has been refreshed and reset:
  - total eligible shards: `5244`
  - all `5244` are now back to `PENDING`
- New CLI ops are wired:
  - `python -m codecbench.pipeline.cli sft-snapshot`
  - `python -m codecbench.pipeline.cli sft-reset`
  - `python -m codecbench.pipeline.cli sft-stats`
  - `python -m codecbench.pipeline.cli sft-run --benchmark --batch-size=4`

## Benchmarks

Patched local A100:
- download `7.0s`
- decode `47.4s`
- encode `1108.5s`
- upload `1.3s`
- encode RTF `139x`

Patched Vast `RTX 4090`:
- checkpoint download `53s`
- download `27.9s`
- decode `50.2s`
- encode `1063.0s`
- upload `1.1s`
- encode RTF `143x`
- effective shard time `1114.3s`

Code comparison on the 4090-produced shard over `3000` samples:
- same length: `3000/3000`
- bit-exact samples: `36.0%`
- average token match: `99.7616%`

That clears your `>99%` acceptance bar.

## Repo wiring

`Dockerfile.sft` is now the slim production image path, and I pushed:

- `bharathkumar192/codecbench-sft:latest`
- digest: `sha256:7a028c3d8ae96253cbe5be117710e97dc25cc5f254245d85e63e5a95a09e1a58`

I also updated:
- `scripts/vastai_benchmark.py`
  - uses the slim SFT image
  - correct `RTX 4090` naming
  - explicit SSH identity
  - copies `.env` into `/app/.env`
  - runs `sft-run --benchmark`
- `scripts/deploy_fleet.py`
  - now targets the SFT image
  - writes `/app/.env` on startup
  - starts `sft-run`
  - prioritizes `RTX 4090`, then `RTX 3090`, then `RTX 3090 Ti`

## Handoff

I appended a full runbook for the next agent to `README.md`, including:
- what we changed
- DB/table state
- exact benchmark numbers
- how to deploy 1x `4090`
- how to monitor logs and progress
- how to validate first output
- the exact scale-up plan: `1 -> 5 -> 20 -> 50 -> 100 -> 150 -> 200`
- 20-minute monitoring / replacement instructions
- GPU replacement priority order

The 4090 benchmark instance was destroyed after the run, so there’s nothing left billing right now.

If you want, next I can also wire a dedicated fleet-monitor helper so the next agent doesn’t have to compute ETA manually from `sft-stats` and fleet size.

**Crafting final report sections**

I'm thinking I need to mention that `sft_stats` shows all 5244 pending tasks after the reset, which is good. I want to structure the final report with sections such as what changed, current state, and handoff.

I should keep it concise, but include enough detail. Maybe a full next-agent runbook could be appended to the README, along with 3-4 essential commands. I’ll also make sure to include the comparison results and benchmarks, avoiding any informal openers. I'll start with something like "Wired into repo and reset."