daniel
1c8709e82d
Take the read-back back out of the persist; a write verdict belongs only where evidence crosses the plugin boundary
...
Its false gated six undo points, so an unverified byte-equality assumption could have silently removed Ctrl-Z for a bank mutation that landed.
2026-08-02 13:42:51 -04:00
daniel
25390d5253
Prove every ext-state write by reading the key back, so no guard is constant-true
...
SetProjExtState's return describes the whole extname. The persist and the instrument's publish now re-read their key; both refusals can finally fire.
2026-08-02 13:14:49 -04:00
daniel
0afb885987
Make a bake's Banked landing reachable only through the persist upgrade
...
The dedup path claimed it directly, so a key could be answered Ok pointing at an entry a failed persist never wrote. Write-back is now guarded and three-valued, and landing one request split out of the scan pass.
2026-08-02 12:35:06 -04:00
daniel
1800bd64c3
Prove the bake's answer writes by reading the key back
...
SetProjExtState's return covers the whole extname, so it never saw one key. The persist verdict now reaches the report, and a throw mid-write no longer claims the landing left nothing behind.
2026-08-02 12:00:34 -04:00
daniel
6cabbd0dd4
Fix the bake scan report's unsound absence-as-signal claim
...
Gate the summary on any unanswered key and on SetProjExtState's return, print one line per scanned key, and make the undo block stack RAII.
2026-08-02 08:34:59 -04:00
daniel
2f8e88880e
Merge bake-answer diagnosis: five named failure modes and a scan report that says what the landing saw
2026-08-02 08:06:45 -04:00
daniel
41ca833b86
bake: make the landing scan say what it saw, so a no-answer names its own cause
...
Splits Ignore into unreadable vs not-a-request and counts every verdict; the report prints only when the pass answered nobody, so its absence proves the action never ran.
2026-08-02 08:00:19 -04:00
daniel
0511d16d4f
capture: close batch-quarantine silence, 0-byte asymmetry, and round-two doc overclaims
...
Batch captures now name the retained-render folder once instead of nothing; Auto/Manual tail modes refuse a 0-byte render like None does; VERIFICATION.md steps 1-3 no longer invite a false conclusion; docs/comments no longer overclaim.
2026-08-02 08:00:12 -04:00
daniel
2005f90c66
capture: state the bounds tolerance as empirical, refuse unmeasurable renders, keep refused ones for diagnosis
...
The one-frame bound is not provable for a per-edge renderer; the test now shows where it breaks. Refused renders move out of the bank instead of being deleted, so the DAW experiment has something to read.
2026-08-02 07:23:30 -04:00
daniel
7f3b00a646
fix: bake-answer messages stop asserting causes the classifier can't see
...
Rewords Cleared/Unanswered/ForeignRequest to name only observed facts and every live hypothesis instead of picking a winner; adds a guarded answeredOutcome accessor against a future unhandled BakeAnswerKind; folds an unreachable BakeScanKey/Context test state; fixes generation-stamp timing.
2026-08-02 06:57:08 -04:00
daniel
962ab64ef0
bake: name the five ways the extension can fail to answer, and move the landing verdict into a pure, tab-provable classifier
...
A no-answer stays a failure; it now says whether the extension never ran the landing, answered a stale generation, spoke a wire this build cannot read, cleared the request, or refused it.
2026-08-02 06:38:04 -04:00
daniel
a91df760cc
capture: name the render source in the exact-bounds refusal, and put its one-frame tolerance under test
...
The tolerance is unchanged and now derived, not assumed: frameCountFor lands in {floor(L), ceil(L)}, so a non-frame-aligned window can never miss by more than a frame. Naming the source is what tells a self-bounding render from a short one.
2026-08-02 06:37:40 -04:00
daniel
2a9ab65944
Ψ-W3 remediation: fix the verify doc's wrong render source, add missing content checks, soften unverified claims
...
Corrected the Render-dialog source name the refusal's evidence depends on, added a by-ear content check and a file-size channel proxy, and stopped two comments from overclaiming.
2026-08-01 23:01:50 -04:00
daniel
f69c4bf6bf
Refuse every multi-track selected-tracks render, both scopes; make a failed mono collapse observable
2026-08-01 22:40:54 -04:00
daniel
6e6f4a6a15
Merge Ψ-W2-T2: a bit-identical capture collapses to one lossless mono channel
...
# Conflicts:
# src/shell/capture/CLAUDE.md
# src/shell/capture/capture.cpp
# src/shell/capture/capture.h
2026-08-01 22:23:06 -04:00
daniel
8b191e3379
Ψ-W2-T2 remediation: atomic temp+rename collapse write, honest unknown-channel fallback, [verify — DAW] markers, corrected+filed bake-collapse deferral, observable collapse message, quiet-NaN test
2026-08-01 22:08:39 -04:00
daniel
0feb32d59b
Ψ-W2-T1 remediation: scrim the card name over the waveform, hedge two SDK claims, fix a UTF-8-truncation empty-label bug, file the legibility DAW deferral
2026-08-01 22:08:35 -04:00
daniel
4fa3c1dd15
Ψ-W2-T2: collapse a capture whose channels are bit-identical to one lossless mono channel, index value measured off the landed file
2026-08-01 21:46:55 -04:00
daniel
3278b4eced
Name captures after their source track: label and filename both, on every interactive mint site, and show the name on the panel card
2026-08-01 21:46:53 -04:00
daniel
a0220e8c57
Ψ-W1-T1 second-round remediation: ±1-frame bounds tolerance, self-cleanup a refused render, hedge two unverified render-source inferences
...
Loosens the exact-bounds gate against REAPER's edge rounding; deletes the bytes a BoundsMismatch refusal writes, per prune_fs's self-cleanup carve-out.
2026-08-01 21:18:03 -04:00
daniel
7dc80e7a4f
capture: refuse the multi-track ranged item render, silence the track's children and receives for it, and gate every exact-bounds capture on its frame count
2026-08-01 20:58:33 -04:00
daniel
5e3ea6c851
capture: render a ranged item capture time-bounded — the selected-items source can't narrow a window, only a full-extent one uses it
...
sourceModeForScope now takes the item extent vs. the requested window. Full-extent item captures and the batch keep the old path unchanged.
2026-08-01 19:43:06 -04:00
daniel
a09e45fc1d
Ξ-W2-T1 re-review cleanup: soften ordering claim, bound bake guard fields, dedup gain/play-mode rationale, quiet foreign WrongProject noise
2026-08-01 17:23:00 -04:00
daniel
39c2d1cdb4
Ξ-W2-T1 remediation: print master gain into the bake, derive the window from the dialed sound, reset play mode to Trigger
2026-08-01 17:05:28 -04:00
daniel
60308a3655
Ξ-W2-T1: the resample bake chain — instrument renders, extension banks, one click re-points and resets
2026-08-01 16:26:28 -04:00
daniel
6287534454
fix: classify future-version ledgers with changed record shape correctly, not as corrupt
...
Version-check now runs on the parseLedger failure path too, so a v3 blob whose record shape actually changed reports FutureVersion instead of Unreadable, avoiding the corrupt-blob "clear it" advice. Also closes the six minor findings.
2026-07-30 20:25:46 -04:00
daniel
45b87dc2ff
tracking: read the ledger's version, not just write it; clear owned on any block; channel-correct prune recovery
2026-07-30 20:11:05 -04:00
daniel
7f70d94228
tracking: one ledger, one authority — prune protection and replace-vs-add answered from the same records, fail-safe on unreadable state
2026-07-30 19:44:11 -04:00
daniel
0800760833
Fix drag-out losing audio and FX-container drops losing the capture; re-home ingest under shell/actions
2026-07-29 23:49:53 -04:00
daniel
47ccadf726
Restore review-flagged comment content cut too aggressively in comment reduction
2026-07-29 21:15:00 -04:00
daniel
54f5f24506
Cut shell/capture comment bloat ~33% (comments only, zero code change)
2026-07-29 20:48:59 -04:00
daniel
1f24c4b095
docs: 1.0 documentation restructure
...
Split root CLAUDE.md into 19 per-directory files scoped to their source area.
Roll v0 history into docs/ARCHIVE.md; retire CONTEXT.md, CONTEXT-ARCHIVE.md,
PLAN.md, COMPLETED.md. Move plan docs under docs/. Rescue 9 live deferrals
into docs/TODO.md.
2026-07-29 15:09:48 -04:00
daniel
cd12b97631
Q-W6 review follow-ups: drop stale wav_trim clause, fix stale include comment, idempotent action-table clear, reflow ragged comment, align session.h trailing comments
2026-07-29 13:51:35 -04:00
daniel
f3be4d8cce
Q-W6: registration table (OCP) in main.cpp; bank verbs -> shell/bank_ops(Session&); persist.h + wav_trim + namespaces.h shims deleted; 61/61
...
capture.h realtime seam split to capture_realtime_shell.h; GetProjExtState grow-loop rehomed to core/wire/ext_state_read; stale persist.cpp/bank_panel.cpp comment refs fixed; CLAUDE.md persist/bank_book/actions bullets updated. Command-id suffixes, display phrases, and undo labels byte-identical.
2026-07-29 13:40:09 -04:00
daniel
430e117620
Q-W4: split actions.cpp into design_view_actions/bank_actions/prune_action + shared action_registry; bank verbs deduped into promptless bankOp* inner verbs in panel_bank_ops (one mutation home, two UX skins); command-id strings byte-identical; actions.h shim carrier retired
2026-07-29 12:56:02 -04:00
daniel
6108673c84
Q-W3 rebase fix: hoisted capture TUs include the Q-W2 panel seam headers (panel_bank_ops/panel_input) instead of the deleted bank_panel.h
2026-07-29 11:36:32 -04:00
daniel
8bc5aa1257
Q-W3 review follow-ups: golden hash literal test, CLAUDE.md wav_codec bullet, dead RecordedCapture field comment, makeUniqueTag residual note
2026-07-29 11:33:28 -04:00
daniel
09f7173db2
Q-W3: main.cpp → pointers+entry+dispatch via 4 capture hoists; one pure wav_codec RIFF owner; ICaptureBackend deleted; capture_realtime rename + finalize split; shared stampCaptureSample; makeUniqueTag gains monotonic counter (fixes same-second batch collisions). 60/60 green.
2026-07-29 11:33:28 -04:00
daniel
30a4ffd01b
Q-W2: split bank_panel.cpp (3459 LOC) into eight shell/panel TUs — reasampler::panel internals, per-seam public headers, shim retired; zero behavior change, 60/60 green
2026-07-29 11:29:10 -04:00
daniel
2d59bbe35d
Q-W1 code-review follow-ups: restore 104 trailing newlines, relocate reasampler_uid.h to core/wire, drop ext_keys namespaces shim, add slot_map_tests, golden serialize literals for 4 modules, namespaces.h/pragma-once ordering sweep. 60/60 green.
2026-07-28 21:34:09 -04:00
daniel
847936f813
Q-W1 pt2: core/shell/app relocation + sub-namespaces; one concrete ui::Rect (LTRB fork retired); slot_map split from bank_book; BankIndex→BankModel; 59/59 green
2026-07-28 21:34:09 -04:00