You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: rewrite remaining-tasks.md as a forward-looking punch list
- Drop the "Recently completed" section: that's what the CHANGELOG
is for, keeping a duplicate here just made the file longer and
harder to scan.
- Add task 1 (Visualization layer) as the new highest priority —
it's the only fully-unblocked item and turns the package from
"feature library + diagnoser" into something a user can actually
inspect. Includes the function table, the headline use case as
a code block, and acceptance items.
- Renumber the rest down (pretrained weights -> 2, dataset
distribution -> 3, Zenodo DOI -> 4, RuntimeNormalizer -> 5,
T5/BART -> 6) and bump version refs to v0.3.0 / v0.4 to match
the current state.
This is the running engineering punch list. Items move out of this
4
-
file as they ship; completed work is logged in
5
-
[`defaultplusplus/CHANGELOG.md`](defaultplusplus/CHANGELOG.md) and the
6
-
runtime schema is in [`docs/SPEC.md`](docs/SPEC.md).
3
+
Forward-looking engineering punch list. Items move out of this file
4
+
as they ship; historical work is logged in
5
+
[`defaultplusplus/CHANGELOG.md`](defaultplusplus/CHANGELOG.md), and
6
+
the runtime schema is in [`docs/SPEC.md`](docs/SPEC.md).
7
7
8
8
---
9
9
10
-
## 1. Pretrained diagnostic-model weights
10
+
## 1. Visualization layer (`defaultplusplus.viz`)
11
11
12
-
**Scope:** S (the API + training driver are shipped in v0.3.0; only
13
-
the actual `.pt` files remain).
12
+
**Scope:** M (~1 day)
13
+
**Status:** unblocked. Highest priority because it's the only task
14
+
that lands without external prerequisites and turns the package from
15
+
"feature library + diagnoser" into something a user can inspect.
16
+
**Why:** Today a user runs `Predictor.predict(features)` and gets a
17
+
`Diagnosis` dataclass plus a 2200-key feature dict. That's correct
18
+
but not actionable — no one debugs by reading 2200 floats. We need
19
+
visual output that fits a `.py`-first workflow: write a file, open it
20
+
in a browser.
21
+
**Where:** new `defaultplusplus/src/defaultplusplus/viz/` package
22
+
(repurpose the reserved `ui/` namespace or add `viz/` as a sibling).
23
+
Lives behind the existing `[viz]` extra so the core install stays
24
+
matplotlib-free.
25
+
26
+
**Functions to ship**
27
+
28
+
| Function | Returns | Purpose |
29
+
|---|---|---|
30
+
|`save_diagnosis_report(diagnosis, features, path)`|`None` (writes HTML) | Main entry — debug a faulty run. Self-contained HTML with embedded base64 PNGs. No external assets, no JS. |
31
+
|`save_run_report(features, path)`|`None` (writes HTML) | Sanity-check extraction without a diagnosis. Useful before pretrained weights exist. |
32
+
|`plot_diagnosis(diagnosis)`|`matplotlib.Figure`| Three-stage verdict — detection / category / root-cause probabilities as a single panel. |
33
+
|`plot_group_importance(diagnosis)`|`matplotlib.Figure`| Horizontal bar chart of `Diagnosis.group_importance`. Positive bars support the prediction, negative bars oppose it. |
34
+
|`plot_per_layer_heatmap(features, metric)`|`matplotlib.Figure`| Heatmap of `L{i}_<metric>` across all sampled layers. |
35
+
|`plot_training_trace(features, keys)`|`matplotlib.Figure`| Time series across the early / mid / late windows for a chosen list of metric keys. |
36
+
|`plot_attention_pattern(features, layer)`|`matplotlib.Figure`| One layer's attention shape (entropy, sparsity, future-mass, head similarity). |
0 commit comments