File size: 7,565 Bytes
03d531b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e07820e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# Feature feasibility matrix

## Scoring convention

All scores are between `0.0` and `1.0`.

For positive dimensions, higher is better:

- **Feasibility**: likelihood this can be implemented robustly with the current project direction.
- **Value UX**: how much nicer/faster the application feels.
- **Value quality**: expected improvement in extraction correctness.
- **Realtime fit**: how well the interaction can update from cached features without full reruns.
- **MVP fit**: whether it belongs in the first serious interactive version.

For cost dimensions, higher is harder/more expensive:

- **Complexity**: algorithmic/product complexity.
- **Effort**: implementation effort.

## Matrix

| Interaction | Feasibility | Complexity | Effort | Value UX | Value quality | Realtime fit | MVP fit | Verdict |
|---|---:|---:|---:|---:|---:|---:|---:|---|
| Move sample to cluster → auto-tune clustering | 0.90 | 0.55 | 0.45 | 0.95 | 0.90 | 0.85 | 0.95 | Build early |
| Pull sample out → protect distinction | 0.90 | 0.55 | 0.45 | 0.90 | 0.90 | 0.85 | 0.95 | Build early |
| Lock confirmed cluster identity | 0.95 | 0.25 | 0.20 | 0.80 | 0.75 | 0.95 | 1.00 | Build immediately |
| Outlier-first review queue | 0.95 | 0.30 | 0.25 | 0.90 | 0.80 | 0.95 | 1.00 | Build immediately |
| Low-confidence visual emphasis | 0.95 | 0.25 | 0.20 | 0.85 | 0.65 | 0.95 | 0.95 | Build immediately |
| Bleed brush/suppression | 0.85 | 0.55 | 0.50 | 0.90 | 0.85 | 0.80 | 0.85 | Build early |
| Click-to-add missed onset | 0.90 | 0.45 | 0.40 | 0.90 | 0.80 | 0.90 | 0.90 | Build early |
| Cluster naming as reusable semantic hint | 0.75 | 0.65 | 0.55 | 0.75 | 0.65 | 0.70 | 0.40 | Useful, not first |
| Star/favorite sample → optimize around it | 0.95 | 0.35 | 0.30 | 0.75 | 0.70 | 0.90 | 0.75 | Build early |
| Explain this cluster | 0.85 | 0.50 | 0.45 | 0.80 | 0.65 | 0.85 | 0.80 | Build early |
| Live counterfactual parameter previews | 0.80 | 0.70 | 0.65 | 0.90 | 0.75 | 0.75 | 0.55 | High value, later |
| Temporal pattern supervision | 0.75 | 0.70 | 0.65 | 0.80 | 0.85 | 0.70 | 0.45 | Later |
| Reconstruction-error-driven correction | 0.70 | 0.80 | 0.75 | 0.85 | 0.90 | 0.55 | 0.35 | Later, powerful |
| Multi-resolution semantic clustering | 0.80 | 0.70 | 0.65 | 0.85 | 0.80 | 0.75 | 0.50 | Later |
| Auto-clean this family | 0.80 | 0.60 | 0.55 | 0.75 | 0.80 | 0.75 | 0.50 | Later |
| Drag clusters in semantic space | 0.70 | 0.75 | 0.75 | 0.90 | 0.65 | 0.65 | 0.30 | Cool, not first |
| Cluster gravity / physics metaphor | 0.60 | 0.80 | 0.80 | 0.80 | 0.50 | 0.60 | 0.20 | Risky novelty |
| Context-aware classification | 0.65 | 0.80 | 0.75 | 0.65 | 0.80 | 0.55 | 0.25 | Researchy |
| Teach mode across songs | 0.70 | 0.85 | 0.80 | 0.85 | 0.85 | 0.60 | 0.25 | Later platform feature |
| Predictive batch questions | 0.85 | 0.55 | 0.50 | 0.90 | 0.80 | 0.80 | 0.70 | Build after uncertainty scoring |

## Highest ROI set

| Rank | Feature | Why |
|---:|---|---|
| 1 | Lock confirmed cluster identity | Easy and prevents frustrating reclustering drift |
| 2 | Outlier-first review queue | Huge UX gain from simple uncertainty ranking |
| 3 | Move sample to cluster as supervision | Core differentiator; directly improves results |
| 4 | Pull sample out / protect distinction | Required counterpart to positive supervision |
| 5 | Click-to-add missed onset | Direct correction beats indirect threshold tweaking |
| 6 | Bleed brush | Removes many false positives quickly |
| 7 | Explain cluster | Makes the system debuggable and trustworthy |
| 8 | Predictive batch questions | Multiplies the effect of each correction |
| 9 | Counterfactual previews | Makes advanced tuning understandable |
| 10 | Reconstruction-error correction | Very powerful, but architecturally heavier |

## Technical conclusion

The most feasible "magic" is not heavy ML. It is constraint-aware clustering, cached feature vectors, uncertainty scoring, and local recomputation.

That foundation should be implemented before adding higher-risk semantic-space or personalized-model features.

## Implementation alignment as of 2026-05-12

| Interaction | Current status | Notes |
|---|---|---|
| Move sample to cluster → auto-tune clustering | partial | Implemented as semantic state mutation with `force-cluster`/`must-link` constraints and heuristic move suggestions. True constrained local reclustering is still open. |
| Pull sample out → protect distinction | partial | Implemented as a new user cluster plus `cannot-link` and split suggestions. True constrained reclustering is still open. |
| Lock confirmed cluster identity | done | Lock/unlock persists in `supervision_state.json` and appears in the UI. Replay into future reruns is still open. |
| Outlier-first review queue | done | Implemented with heuristic confidence/priority. Feature-margin and reconstruction-impact ranking remain open. |
| Low-confidence visual emphasis | done | Low-confidence and suppressed hits are visually distinguished in the hit table and review queue. |
| Bleed brush/suppression | partial | Suppress selected hit and similar suppression suggestions are implemented. Region brush and restore are still open. |
| Click-to-add missed onset | todo | Waveform click currently auditions nearest existing hit only. |
| Cluster naming as reusable semantic hint | todo | User clusters receive generated labels; explicit rename/semantic hinting is not implemented. |
| Star/favorite sample → optimize around it | partial | Favorite pins representative in semantic state; artifact re-export does not yet honor it. |
| Explain this cluster | done | Explanation endpoint and UI drawer are implemented. |
| Predictive batch questions | partial | Suggestion inbox exists; exact diff previews and richer question phrasing are open. |
| Live counterfactual parameter previews | todo | Not implemented. |
| Reconstruction-error-driven correction | todo | Not implemented. |
| Multi-resolution semantic clustering | todo | Not implemented. |
| Auto-clean this family | todo | Not implemented. |
| Drag clusters in semantic space | backlog | Not implemented. |
| Cluster gravity / physics metaphor | backlog | Not implemented. |
| Context-aware classification | backlog | Not implemented. |
| Teach mode across songs | backlog | Not implemented. |

## Revised highest-ROI next set

| Rank | Feature | Why now |
|---:|---|---|
| 1 | Supervised re-export | Makes current semantic edits affect the downloadable sample pack. |
| 2 | Force-onset from waveform | Adds the missing direct correction primitive for missed hits. |
| 3 | Suppression restore | Required safety counterpart to suppression. |
| 4 | Cached feature refs | Unlocks real local reclustering and better confidence. |
| 5 | Diff preview for suggestions | Makes batch suggestions safer and more trustworthy. |
| 6 | Constraint violation detection | Prevents silent conflicts once constraints become richer. |
| 7 | Browser tests | Protects the increasingly stateful UI from regressions. |


## Pass 5 implementation status

Implemented after initial alignment:

- supervised edited-state export under `supervised/`,
- add-onset waveform mode backed by `POST /api/jobs/{job_id}/hits/force-onset`,
- suppressed-hit restore backed by `POST /api/jobs/{job_id}/hits/{hit_id}/restore`,
- exact suggestion diff previews in API state and UI,
- validation via `scripts/test_supervised_export_and_force_onset.py`.

Still open:

- cluster merge/relabel/split workflows,
- cached feature-vector local reclustering,
- edited-vs-original comparison,
- browser-level UI tests.