Skip to content

Commit d3e843d

Browse files
ldionneclaude
andcommitted
Clean up completed items from v5 TODO list
Remove 16 completed items (13 previously checked off + 3 newly confirmed done: sample aggregation fix, p-value graying via noise knobs, and API key copy button). Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1 parent 4ad53e1 commit d3e843d

1 file changed

Lines changed: 0 additions & 62 deletions

File tree

docs/v5-todo.md

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,8 @@
5858
- [ ] Clear the title input after successfully creating a regression.
5959
- [ ] Replace the `<details>` "Add to Regression" panel with a sticky floating
6060
button (bottom-right) that expands into a panel on click.
61-
- [x] Implement multi-knob noise filtering (Delta %, p-value, absolute floor)
62-
per the updated `docs/design/ui/compare.md` spec.
6361
- [ ] Understand whether the Compare page should allow inputting an arbitrary
6462
local run.
65-
- [ ] Fix: sample aggregation changes are not being plotted on the graph (same
66-
data appears to be used regardless of aggregation).
67-
- [ ] On the S curve, experiment with graying out tests that have a high
68-
p-value.
69-
- [x] Display the percentage of tests that are faster/slower/noise on the graph.
7063
- [ ] Understand how to surface tests with high vs. low confidence when multiple
7164
samples are present.
7265

@@ -91,9 +84,6 @@
9184

9285
## UI — Graph / Compare Shared
9386

94-
- [x] Simplify baseline commit pickers to use `GET /commits?machine={name}`
95-
instead of the current two-step fetch pattern (all commits + machine runs for
96-
client-side filtering).
9787
- [ ] Experiment with placing the search bar just above the table rows instead
9888
of its current position.
9989

@@ -110,22 +100,8 @@
110100
not just the current page. NOTE: The `?search=` parameter already searches
111101
across commit, tag, and searchable commit_fields.
112102

113-
- [ ] Fix: the "Copy" button for the API key token does not actually copy to
114-
the clipboard.
115-
116-
## Schema
117-
118-
- [x] Understand what happens if a commit field in the schema is named
119-
`ordinal`. Validate and reject if necessary.
120-
- [x] Handle bigger-is-better semantics in the schema. Also consider adding
121-
display name, units, and other field metadata.
122-
123103
## Cleanup & Tech Debt
124104

125-
- [x] Remove the `# Load the v5 frontend` comment and associated stale code in
126-
`app.py` — a remnant from before v5 was disjoint from v4. Audit for other
127-
stale v4 integration points.
128-
- [x] Remove the `[v4 UI]` button in the navbar — it cannot work anymore.
129105
- [ ] Undo changes made to the v4 layer (e.g. new migrations).
130106
- [ ] Reorganize `combobox.ts` and `machine-combobox.ts` — remnants of the
131107
Compare page being standalone. Either unify into a single combobox component
@@ -141,20 +117,6 @@
141117

142118
### P0 — Critical
143119

144-
- [x] **Add `(test_id, run_id)` compound index on Sample table** (impact:
145-
100–1000x for time-series queries). The existing `(run_id, test_id)` compound
146-
index has columns in the wrong order for the dominant access pattern.
147-
Time-series queries (`query_time_series`, `/query`, `/trends`,
148-
`GET /tests?machine=`) filter by `test_id` first, but the index leads with
149-
`run_id`. At 100M+ rows, these queries fall back to sequential scans.
150-
151-
- [x] **Batch test get-or-create in run submission** (impact: ~1000x fewer DB
152-
round-trips per submission). `get_or_create_test` is called per-test in a loop
153-
(`__init__.py:1295`), issuing one SELECT + optional SAVEPOINT/INSERT/FLUSH per
154-
test. For a 7,500-test submission, this is 7,500–30,000 round-trips. Replace
155-
with `SELECT ... WHERE name IN (...)` + `INSERT ... ON CONFLICT DO NOTHING` to
156-
reduce to ~3 round-trips.
157-
158120
- [ ] **Add pagination/limit to `POST /trends`** (impact: prevents unbounded
159121
queries). The trends endpoint returns ALL matching data points with no limit.
160122
The `EXP(AVG(LN(metric)))` geomean scans the entire Sample table — O(N) on
@@ -168,20 +130,8 @@
168130
at limit=10,000, this adds ~1–2 seconds of pure Python overhead. The validate
169131
step should be skipped in production.
170132

171-
- [x] **Add response compression** (impact: 80–90% bandwidth reduction).
172-
No gzip/brotli middleware is configured. All JSON responses are sent
173-
uncompressed. A 3 MB query response could be ~450 KB with gzip. Add
174-
`flask-compress` or document that a reverse proxy must handle compression.
175-
176133
### P1 — High
177134

178-
- [x] **Use Core INSERT for samples instead of ORM objects** (impact: 3–10x
179-
speedup on sample insertion). `create_samples` (`__init__.py:813`) creates
180-
7,500 ORM objects via `add_all()`. SQLAlchemy 1.3 emits individual INSERT
181-
statements. Using `session.execute(Sample.__table__.insert(), list_of_dicts)`
182-
with psycopg2's `executemany` batches thousands of rows into a handful of
183-
round-trips.
184-
185135
- [ ] **Remove `ordered = True` from BaseSchema.Meta** (impact: eliminates
186136
`OrderedDict` overhead across all schemas). All schemas inherit
187137
`ordered = True`, forcing marshmallow to use `OrderedDict` instead of plain
@@ -299,22 +249,10 @@
299249

300250
## Profiles
301251

302-
- [x] **DB model and submission**: Profile table with deferred LargeBinary,
303-
submission integration (base64 decode, version validation, size limit).
304-
- [x] **Binary format parser**: Clean read-only parser with lazy BZ2
305-
decompression. Wire-compatible with v4 ProfileV2.
306-
- [x] **REST API endpoints**: Listing (per run), metadata, functions, function
307-
detail — all UUID-based.
308-
- [x] **Profiles UI page**: A/B picker, stats bar, straight-line disassembly
309-
view. See `docs/design/ui/profiles.md`.
310252
- [ ] **CFG view**: Control-flow graph renderer (D3-based, ISA-specific).
311253
Deferred to a future phase.
312254
- [ ] **Replace N+1 profile-existence check in commit picker**: The Profiles
313255
page commit dropdown calls `GET /runs/{uuid}/profiles` for every run on the
314256
selected machine to filter commits without profiles. Replace with a
315257
server-side mechanism (e.g. `has_profiles` flag on run list responses or a
316258
filtered commits endpoint).
317-
- [x] **Compare page integration**: Profile link column in comparison table.
318-
- [x] **Run Detail integration**: Profile link/icon in samples table.
319-
- [x] **Remove `has_profile` from frontend**: Clean up `SampleInfo.has_profile`
320-
in `types.ts` and test fixtures.

0 commit comments

Comments
 (0)