FeatureLens / docs /VALIDATION.md
ArchitSharma's picture
Release FeatureLens v0.10.0
ff63ba1
|
Raw
History Blame
5.04 kB
# FeatureLens v0.10 validation
v0.10 does **not** change paraphrase robustness, layer trajectory, feature-set interventions, dose-response inference, cue × context, or the in-place focus implementation. Do not spend ZeroGPU quota rerunning those paths.
The only new live behavior is the **association-to-causality synthesis** computed after the existing discovery + candidate-triage workflow.
## 1. Local release gate — no HF GPU
From the repository root:
```bash
python3 -m pytest -q && \
python3 -m compileall -q app.py featurelens experiments scripts && \
python3 -m ruff check app.py featurelens experiments tests scripts && \
python3 scripts/ui_smoke.py && \
python3 scripts/release_check.py
```
Expected high-level result:
- all tests pass;
- Ruff reports `All checks passed!`;
- `FeatureLens UI launch smoke: PASS`;
- release check ends with `release: v0.10.0`.
Stop if any local gate fails.
---
# HF acceptance — two GPU calls total
Use the existing Workbench context:
- **Workbench → Prompt:** `The derivative of x squared is`
- **Workbench → Residual layer:** `14`
- **Workbench → Prompt token index:** `-1`
You do **not** need to click **Inspect sparse features** first.
## 2. GPU call 1 — causal-ready mathematics discovery
Exact path:
**Feature evidence → A. Concept-guided candidate discovery**
Set exactly:
- **Target concept:** `mathematics`
- **Residual layer:** `14`
- **Prompts per concept:** `4`
- **Candidate features:** `12`
- **Candidate ranking:** `Causal-ready at current token`
Click:
**Discover concept-associated candidates**
Expected regression behavior from v0.9:
- the summary should say `12/12` displayed candidates are active at the selected Workbench token;
- **Candidate features to screen** should auto-populate with the first five returned feature IDs;
- no additional UI/focus regression testing is required because that code was not changed in v0.10.
For the current canonical prompt, the v0.9 result began with candidates `16369`, `5712`, `26112`, `25992`, `21670`. Exact floating-point values can vary slightly, but a major ordering change should be reported.
## 3. GPU call 2 — triage + association-to-causality synthesis
Exact path:
**Feature evidence → B. Batched causal candidate triage**
Leave the five auto-populated candidates selected.
Set:
- **Screen target continuation:** `2x`
Click:
**Screen candidate ablations**
The normal **Candidate ablation screen** should appear first.
Immediately below it, without another GPU action, v0.10 should populate:
### `Association vs causal influence`
with:
1. a descriptive summary;
2. **Discovery–causality alignment** table;
3. **Association evidence vs target effect** scatter plot.
### Required alignment-table columns
- `Feature id`
- `Discovery rank`
- `Target-effect rank`
- `Distribution-shift rank`
- `Candidate score`
- `Selectivity`
- `Current token activation`
- `|Δ mean log p/token|`
- `Next-token JS`
- `Discovery→target rank shift`
### Required summary behavior
The summary must identify separately:
- top discovery candidate;
- strongest target-effect candidate;
- strongest next-token distribution-shift candidate;
- Spearman `ρ(candidate score, |target effect|)`;
- Spearman `ρ(candidate score, next-token JS)`;
- an explicit warning that the live correlations are descriptive because the screened set is small and triage has no random-control ensemble.
For the exact v0.9 values you reported, the expected qualitative pattern is:
- discovery rank #1: feature `16369`;
- strongest target effect: feature `25992`;
- strongest next-token JS shift: feature `16369`;
- discovery score versus target-effect magnitude: strongly negative descriptive rank correlation;
- discovery score versus JS: positive but weaker descriptive rank correlation.
Do not require exact decimals as a pass condition.
### Rank-shift sanity check
For the v0.9 ordering:
- feature `25992`: discovery rank `4`, target-effect rank `1``Discovery→target rank shift = +3`;
- feature `16369`: discovery rank `1`, target-effect rank `5` → rank shift `-4`.
This is the most important v0.10 regression check because it demonstrates that concept-evidence rank and target-causal rank are not interchangeable.
---
## 4. What to send back
Only send:
1. the v0.10 **Candidate ablation screen** if it changed materially from v0.9;
2. the new **Discovery–causality alignment** table;
3. the new association/causality summary with the two Spearman values;
4. optionally a screenshot of **Association evidence vs target effect** if the plot looks wrong.
Do **not** rerun identity paraphrase, layer trajectory, 1/3/5 sweep, dose response, cue × context, or focus behavior for v0.10. Those implementations were not changed.
---
# Final hardening later
The broad adversarial/release suite remains deferred until the live feature set is frozen. After v0.10 acceptance, the next high-value step should be the real offline held-out benchmark rather than another round of unrelated live widgets.