From 3ba0fe3b1547056194ba9268ec0c94f5bc6e4a5c Mon Sep 17 00:00:00 2001 From: twwwy Date: Sun, 8 Nov 2026 11:42:50 +0800 Subject: [PATCH 1/2] Docs: Sample Locks 0.1.8 owner checks on the MKII public beta base Lock, save/reload, Keep, power cycle and Clear passed on base 9b3ba417 with the 20 kept modules. Records the earlier missing-menu trials, the Beat Slicer status-word observation and the emulator comparison. Co-Authored-By: Claude Opus 5.5 --- sdk/drafts/pattern-sample-locks/TESTING.md | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/sdk/drafts/pattern-sample-locks/TESTING.md b/sdk/drafts/pattern-sample-locks/TESTING.md index 3b470f599..3fb000614 100644 --- a/sdk/drafts/pattern-sample-locks/TESTING.md +++ b/sdk/drafts/pattern-sample-locks/TESTING.md @@ -16,6 +16,63 @@ Offline stack, memory, callback and instruction-count analyses below use the pri The [clock, timer, SDRAM and arbitration inventory](evidence/clock-memory-static-facts-20261105.md) reviews startup configuration facts for that exact candidate and private reconstruction. The reported physical IDENTIFY matched the canonical configuration hash, but no physical MAIN hash was recorded; the inventory therefore proves neither device-image equality nor live timing state, a cycle/latency bound or release qualification. +## MKII owner checks on the public beta base — 8 November 2026 (Taipei) + +Tester: `twwwy` (panel results reported by the author; USB readings observed by +the session). Octatrack MKII, OS 1.40C, flashed public base `9b3ba417…`, exact +package `3e13c46f…` (10,048 bytes; `main`'s draft runtime sources unchanged +since `5a15ac39`). Twenty kept modules, set identity `42fcda34…`, which equals +the digest of `main`'s published packages (Sidechain Comp 0.2.0, LOFI2 0.1.1). +Every offer was a whole-set USB offer; no flash. + +**The owner's checks passed** on a freshly power-cycled unit with the 20 kept +modules plus Sample Locks (reported unless stated): + +- FUNC+PART on a Flex track's SRC page showed LOCK SAMPLES TO PATTERN and CLEAR + SAMPLE LOCKS, before and after opening AED SLICE > CREATE BEAT GRID. Observed: + the module's status word read `0x01000000` (Part menu open). +- Lock on two patterns wrote SAMPLE locks; a manual SAMPLE lock and a + non-SAMPLE lock were unchanged. Native save and reload kept both. +- Keep of the 21-module set: observed saved status 7, 21 saved and 21 live, + set identity `38436efb…`, self-test 21 intact, 6 DSP ran, failed 0, peaks + CPU 67.1 %, T1–4 54.3 %, T5–8 70.4 %. +- Physical power cycle: observed cold start (generation 0) with the exact 21 + records and set identity `38436efb…`. Reported: both patterns' locks + returned and the menu rows still appeared. +- Clear on one pattern removed its SAMPLE locks and kept the non-SAMPLE lock; + after native save and reload it stayed clear and the other pattern kept its + locks. + +**Earlier the same day the rows did not appear** (reported: FUNC+PART showed +only the four stock rows) in three trials on a unit that had been running for +a long session: 20 plus Sample Locks (21 live), 19 plus Sample Locks (VECTOR +out) and Sample Locks alone. Each passed self-test. Observed: the shared status +word stayed on Beat Slicer's tick signature `0x42530000`, also during the alone +trial, after the base reported Beat Slicer removed. A trial with only Beat +Slicer out of the live set showed the rows. After a physical power cycle the +same 21-module offer (identity `fc790fc5…`) worked, with the status word on +Sample Locks' value. Cause not found; not reproduced in the emulator. + +Emulator, labelled as such: on a private build of base `9b3ba417…`, with the +exact package and the 20 published packages (identity `42fcda34…`), sent alone, +after the 20 and as a whole-set offer, the Part menu showed both rows each time +(menu-only scratch harness, image attestation skipped). + +Also observed, not caused by this module: + +- Removing a module a project track uses is refused at verify as + `RUNTIME_IN_USE` (loader refusal 7, read from the self-test record). +- A trial with the project's heavier DSP load stopped the DSP during self-test + (culprit BBD Delay, peaks CPU 89.8 %, T1–4 82.2 %); it rolled back and the + set was verified. That trial left VECTOR out and added Sample Locks, which + has no DSP code. +- After long-held trials, rollback on the trial's own connection failed with + "enter was not confirmed" three times; a fresh connection rolled back and the + set was verified each time. + +Not tested here: audio, MKI, maximum-size edits, live recording refusal and +playback-running Apply on this base. + ## MKII RAM functional trial — 3 November 2026 (reported configuration identity) The author (`twwwy`) reports that both physical actions passed on the From b23c672e6df3228ff1d55f0d41d85c2faf301f83 Mon Sep 17 00:00:00 2001 From: twwwy Date: Sun, 8 Nov 2026 13:17:56 +0800 Subject: [PATCH 2/2] Docs: Sample Locks 0.1.8 worst key press and press stress (emulator) Dearest press, Clear on 512 fields: 333,805 instructions of 26,600,000. 20 rounds of Lock and Clear under play with STOP and a Part change, no hang. perf:audit check passes. Co-Authored-By: Claude Opus 5.5 --- sdk/drafts/pattern-sample-locks/TESTING.md | 42 +++++++++++++++++++ .../evidence/performance.json | 20 +++++++++ 2 files changed, 62 insertions(+) create mode 100644 sdk/drafts/pattern-sample-locks/evidence/performance.json diff --git a/sdk/drafts/pattern-sample-locks/TESTING.md b/sdk/drafts/pattern-sample-locks/TESTING.md index 3fb000614..41b5451bd 100644 --- a/sdk/drafts/pattern-sample-locks/TESTING.md +++ b/sdk/drafts/pattern-sample-locks/TESTING.md @@ -73,6 +73,48 @@ Also observed, not caused by this module: Not tested here: audio, MKI, maximum-size edits, live recording refusal and playback-running Apply on this base. +## Worst key press and press stress on the emulator — 8 November 2026 + +Emulator only (`ot_emu` `b087c97f…`), not hardware. Public beta base +`9b3ba417…` (a local build with that identity), exact package `3e13c46f…`, +DSP running, in the toolchain container. Recorded in +[evidence/performance.json](evidence/performance.json), as the owner asked for +this version: a measured worst event in place of the static stack and cycle +bound; stock benchmark and MIDI flood waived (no MIDI path). + +| Check | Result | +| --- | --- | +| record | key-press coldfire record for pattern-sample-locks@0.1.8-experimental | +| cycles | worst event 333,805 of 26,600,000 (1 %) | +| stock benchmark | none: a key-press module adds nothing to the frame interrupt | +| stress | 40 presses of the dearest event while playing, no hang | + +The dearest press is CLEAR SAMPLE LOCKS on 8 tracks × 64 steps (512 fields, +no other locks): 333,805 instructions from `module_key` entry to return, stock +callees and interrupts included; the commit alone 314,215 (314,314 on +4 November on the older base). Lock on the same fixture: 134,167. Every case +verified the written fields and lock index. + +Stress: 20 rounds of Lock then Clear on 512 fields while playing, each write +verified, playback still running and audio frames advancing (at least 8,280 +per round), then STOP and a Part change (hold PART + DOWN or UP; the Part +index changed every round). + +Commands (private paths elided): + +```sh +python3 -B sdk/drafts/pattern-sample-locks/capture_emulator.py --emulator ot_emu \ + --base --card \ + --package pattern-sample-locks-0.1.8.mwrm --profile-symbols \ + --out --performance +npm run perf:audit -- check sdk/drafts/pattern-sample-locks/evidence/performance.json +``` + +The stress rounds and the menu captures ran from a scratch copy of +`capture_emulator.py`. That copy skipped the image attestation, which predates +the reconstructed package, and added a 20-round press exercise and a +pre-install option. The copy is not committed. + ## MKII RAM functional trial — 3 November 2026 (reported configuration identity) The author (`twwwy`) reports that both physical actions passed on the diff --git a/sdk/drafts/pattern-sample-locks/evidence/performance.json b/sdk/drafts/pattern-sample-locks/evidence/performance.json new file mode 100644 index 000000000..3605d10ff --- /dev/null +++ b/sdk/drafts/pattern-sample-locks/evidence/performance.json @@ -0,0 +1,20 @@ +{ + "schema": 1, + "module": "pattern-sample-locks", + "version": "0.1.8-experimental", + "kind": "coldfire", + "trigger": "key", + "cycles": { + "unit": "cycles/event", + "static": null, + "measured": 333805, + "budget": 26600000, + "method": "Emulator, not hardware (8 November 2026): executed instructions in ot_emu (sha256 b087c97f...) from entry to return of module_key for the dearest press, CLEAR SAMPLE LOCKS confirmed on 8 tracks x 64 steps (512 SAMPLE fields, no other locks), stock callees and interrupts included. Exact package 3e13c46f..., public beta base 9b3ba417..., profile symbols for that package, capture_emulator.py --performance with DSP running. The commit alone took 314,215; every field and the lock index were verified after each edit. Five cases measured (2, 64 and three 512-field fixtures); the next dearest was 326,556." + }, + "stress": { + "events": 40, + "playing": true, + "hangs": 0, + "method": "Emulator, not hardware (8 November 2026): 20 rounds, each LOCK SAMPLES TO PATTERN then CLEAR SAMPLE LOCKS on 512 fields while the sequencer played, every write verified, playback still running and audio frames advancing (at least 8,280 per round); then STOP and a Part change (hold PART + DOWN or UP; the Part index changed every round). Same base, package and emulator as above, scratch copy of capture_emulator.py with a 20-round press exercise." + } +}