Files
whetstone_DSL/specialists/HANDOFF-2026-04-18.md

87 lines
3.9 KiB
Markdown
Raw Normal View History

# Specialist Fleet Handoff — 2026-04-18
## Status at Session End
Sweep was killed mid-run to conserve solar battery. State:
| Gate | Tier | Status | Accuracy |
|------|------|--------|----------|
| verification_type | small_plus | COMPLETE | 81.4% — verdict: `scale_more` |
| verification_type | medium | KILLED | Partial checkpoint, do not trust |
| worker_type | — | NOT STARTED | — |
| prereq_op | — | NOT STARTED | — |
| automatability | — | NOT STARTED | — |
## First Task Next Session
From the whetstone_DSL root, run the full pilot sweep fresh:
```bash
cd /home/bill/Documents/CLionProjects/whetstone_DSL
bash specialists/scripts/sweep_all_gates.sh --pilot-only 2>&1 | tee specialists/eval/results/sweep_run.log
```
The `--reset` flag inside `capacity_sweep.py` ensures the broken `verification_type` medium
checkpoint from this session doesn't interfere. All 4 gates run from scratch.
Expected runtime: ~2535 minutes total (small_plus + medium × 4 gates, 3000 steps each).
Results land in:
- `specialists/eval/results/<gate>_sweep.json` — per-gate sweep table
- `specialists/eval/results/summary.json` — combined best-tier per gate
## Fixes Applied This Session (All Saved to Disk)
1. **Venv path**`sweep_all_gates.sh` now uses whetstone DSL venv:
`PYTHON="/home/bill/Documents/CLionProjects/whetstone_DSL/.venv/bin/python3"`
2. **Venv path**`capacity_sweep.py` + `prereq_op_binary_split.py` now use `sys.executable`
instead of the deleted `WhetstoneAI_Fabricate/.venv` path.
3. **Eval JSON parse**`eval_specialist_pt.py` now prints single-line JSON as last line:
`print(json.dumps(result)) # single line — capacity_sweep.py reads last line as JSON`
4. **Large tier removed**`sweep_all_gates.sh` defaults to `TIERS="small_plus,medium"`.
Large (512/4/8, 13M params) takes ~247s/block — impractical for a pilot.
5. **Nested tensor slowpath**`train_specialist_pt.py` has `enable_nested_tensor=False`
on TransformerEncoder. This eliminated ~40% overhead AND improved accuracy.
6. **Inductor compile**`torch.compile(mode="reduce-overhead")` enabled with TF32.
`python3.12-dev` is installed. Actual speedup: ~62s → ~45s/block (~25%).
Note: `torch.randint` dynamic sampling prevents full CUDA graph replay; partial
re-recording still happens. Pre-generated static batch pool would fix this but
wasn't implemented (one-time training cost doesn't justify complexity).
## Baseline Accuracy (from prior session, before this session's fixes)
| Gate | Prior Best | Labels |
|------|-----------|--------|
| worker_type | 88.5% | implementer, reviewer, architect, qa |
| verification_type | 84.9% | unit, integration, schema, smoke, docs |
| prereq_op | 69.4% | standard, needs_review, needs_approval, full_gates |
| automatability | 69.6% | deterministic, template, specialist, slm, llm, human |
Target: 98-99% (deploy_direct verdict) or 95%+ at ≤0.30 abstain rate (deploy_with_guardrails).
## After the Sweep
Check `specialists/eval/results/summary.json`. For any gate with verdict `scale_more`:
- Try full 15k steps: edit capacity_sweep.py `MAX_STEPS` or run the gate individually
- Or generate more training data — this is the higher-leverage move for low-accuracy gates
Gates most likely to need more data: `prereq_op` (4-way, hard to separate) and `automatability`
(6-way, some classes are similar). Consider a data gen script that uses an LLM to generate
examples per label given a description.
## Model Architecture (for reference)
Small_plus tier: hidden=256, layers=2, heads=4 (~1.2M params)
Medium tier: hidden=384, layers=3, heads=6 (~3.0M params)
Encoder-only transformer, mean-pool over non-padding positions, linear classification head.
Tokenizer: whitespace split, lowercase. Seq len: 96 tokens.
Checkpoint format: `checkpoint.pt` — contains model, optimizer, vocab, config, labels, step.
Checkpoints live in: `/mnt/storage/fabricate_runs/whetstone_<gate>_<tier>/checkpoint.pt`