multiuser-doe.4th: the campaign trial-loop capsule, verified live
Builds the experimental control Bob correctly identified as still missing after HB-ON/HB-OFF (§XXXIII.5): walk the shuffled matrix of concurrency-level x workload-mode cells, birth the right worker count per cell, drive each with two VM-EXEC touches, check VM-ERROR?, kill them, print a trial marker. Built entirely from existing primitives (WORKER-BIRTH, VM-EXEC, VM-HEAT, VM-ERROR?, KILL, HB-ON/HB-OFF) plus doe.4th's own RUN-MATRIX/SHUFFLE-MATRIX pattern -- no new C primitives. Real capsule-format bug found and fixed: a first draft, chunked purely by a fixed 16-line count with no regard for word boundaries, split several CASE...ENDCASE structures and one oversized colon definition across Block headers. Result was a cascading [CAPSULE][DEFER] failure from the first split forward -- every subsequent line failed to compile, and MU-RUN-TRIAL was never actually defined (confirmed: UNKNOWN WORD when called). Root cause traced to capsule_loader.c directly: a :...; word and any control structure inside it must fit entirely within one 16-line block -- the loader's per-block compile pass has no persistent record of an open CASE's (or an overlong definition's own) state across a Block boundary. Not previously documented anywhere in this project's capsule-authoring guidance. Fixed via manually curated block boundaries and factoring oversized bodies into smaller helper words. Reps ratified at 60/cell (not the 10 first drafted), matching this project's own "rule of 3's" DoE convention (ACL-RWT's 3 seeds/30 reps, std79's 3x9x3). 6 cfgs x 60 reps = 360 main-block trials. MU-MAX-REPS raised 20 -> 63 for run-matrix headroom. Verified live on amd64: one isolated trial (0 0 999 MU-RUN-TRIAL) produced two real concurrent births, two clean kills, and the exact expected marker (MU-TRIAL run=999 cfg=0 rep=0 nw=2 mode=0 fail=0). Hera stayed healthy throughout. Clean 3-arch qemu boot. Not yet run: the full 360-trial MU-EXEC-CAMPAIGN itself (a genuinely long-running action under TCG, deliberately not started without explicit confirmation) or the WIREBIND-automation fixed arm. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
41918a28a4
commit
29f91f9531
+15
-2
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-16T13:47:26Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-16T14:25:13Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
@@ -27,6 +27,7 @@
|
||||
| `init-l8-volatile.4th` | 4810, 4811, 4812, 4813 | `0x98caabbbd92abac4` | yes |
|
||||
| `init.4th` | 2049, 2050, 2057 | `0x1ef4939ed32ec1e6` | yes |
|
||||
| `lib.4th` | 4050 | `0x4b216635c359ef73` | yes |
|
||||
| `multiuser-doe.4th` | 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055 | `0x1dc57cdf83afb6ce` | yes |
|
||||
| `process.4th` | 4300, 4301 | `0x781afc1dbd0294f7` | yes |
|
||||
| `sdk.4th` | 5109, 5110, 5111, 5112, 5113, 5114, 5115 | `0x008fdbbb62c94a3a` | yes |
|
||||
| `turtle.4th` | 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108 | `0x4d470418ca543365` | yes |
|
||||
@@ -373,6 +374,18 @@
|
||||
| 5041 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5042 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5043 | `workload-calib1.4th` | `0x3b9f2d17b554fabc` | ok |
|
||||
| 5044 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5045 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5046 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5047 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5048 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5049 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5050 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5051 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5052 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5053 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5054 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5055 | `multiuser-doe.4th` | `0x1dc57cdf83afb6ce` | ok |
|
||||
| 5100 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5101 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5102 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
@@ -396,4 +409,4 @@
|
||||
None.
|
||||
|
||||
---
|
||||
*36 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
*37 capsule(s) scanned. Re-run `mkcapsule --manifest <dir>` to refresh.*
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
Block 5044
|
||||
3 CONSTANT MU-N-CONC
|
||||
2 CONSTANT MU-N-MODES
|
||||
MU-N-CONC MU-N-MODES * CONSTANT MU-N-CFG
|
||||
63 CONSTANT MU-MAX-REPS
|
||||
MU-N-CFG MU-MAX-REPS * CONSTANT MU-MAX-RUNS
|
||||
CREATE MU-CONC-LEVELS 3 CELLS ALLOT
|
||||
2 0 CELLS MU-CONC-LEVELS + !
|
||||
4 1 CELLS MU-CONC-LEVELS + !
|
||||
8 2 CELLS MU-CONC-LEVELS + !
|
||||
: MU-CONC-OF ( cfg -- n ) 2 / CELLS MU-CONC-LEVELS + @ ;
|
||||
: MU-MODE-OF ( cfg -- m ) 2 MOD ;
|
||||
VARIABLE MU-UNIFORM-WL
|
||||
8 MU-UNIFORM-WL !
|
||||
|
||||
Block 5045
|
||||
: WL-CAPSULE ( idx -- c-addr u )
|
||||
CASE
|
||||
0 OF S" workload-0.4th" ENDOF
|
||||
1 OF S" workload-1.4th" ENDOF
|
||||
2 OF S" workload-2.4th" ENDOF
|
||||
3 OF S" workload-3.4th" ENDOF
|
||||
4 OF S" workload-4.4th" ENDOF
|
||||
5 OF S" workload-5.4th" ENDOF
|
||||
6 OF S" workload-6.4th" ENDOF
|
||||
7 OF S" workload-7.4th" ENDOF
|
||||
8 OF S" workload-8.4th" ENDOF
|
||||
9 OF S" workload-9.4th" ENDOF
|
||||
ENDCASE ;
|
||||
|
||||
Block 5046
|
||||
: WL-ENTRY ( idx -- c-addr u )
|
||||
CASE
|
||||
0 OF S" RUN-TRANSPOSE" ENDOF
|
||||
1 OF S" MICRO-BURST" ENDOF
|
||||
2 OF S" RUN-SAW" ENDOF
|
||||
3 OF S" DUAL-SINE" ENDOF
|
||||
4 OF S" RUN-PI" ENDOF
|
||||
5 OF S" RUN-CHAOS5" ENDOF
|
||||
6 OF S" RUN-OMNI" ENDOF
|
||||
7 OF S" RUN-MMUL" ENDOF
|
||||
8 OF S" RUN-FIB" ENDOF
|
||||
9 OF S" RUN-SAW" ENDOF
|
||||
ENDCASE ;
|
||||
|
||||
Block 5047
|
||||
: MU-WORKER-NAME ( n -- c-addr u )
|
||||
CASE
|
||||
0 OF S" mu0" ENDOF
|
||||
1 OF S" mu1" ENDOF
|
||||
2 OF S" mu2" ENDOF
|
||||
3 OF S" mu3" ENDOF
|
||||
4 OF S" mu4" ENDOF
|
||||
5 OF S" mu5" ENDOF
|
||||
6 OF S" mu6" ENDOF
|
||||
7 OF S" mu7" ENDOF
|
||||
ENDCASE ;
|
||||
VARIABLE MU-TMP-NC
|
||||
VARIABLE MU-TMP-NU
|
||||
|
||||
Block 5048
|
||||
: MU-WL-FOR ( mode worker-n -- wl-idx )
|
||||
SWAP IF 10 MOD ELSE DROP MU-UNIFORM-WL @ THEN ;
|
||||
: MU-BIRTH-WORKER ( wl-idx worker-n -- ok? )
|
||||
MU-WORKER-NAME MU-TMP-NU ! MU-TMP-NC !
|
||||
WL-CAPSULE
|
||||
MU-TMP-NC @ MU-TMP-NU @
|
||||
WORKER-BIRTH ;
|
||||
: MU-TOUCH-WORKER ( wl-idx worker-n -- )
|
||||
MU-WORKER-NAME MU-TMP-NU ! MU-TMP-NC !
|
||||
WL-ENTRY
|
||||
MU-TMP-NC @ MU-TMP-NU @
|
||||
VM-EXEC ;
|
||||
|
||||
Block 5049
|
||||
VARIABLE MU-FAIL-COUNT
|
||||
: MU-CHECK-WORKER ( worker-n -- )
|
||||
MU-WORKER-NAME VM-ERROR?
|
||||
IF MU-FAIL-COUNT @ 1+ MU-FAIL-COUNT ! THEN ;
|
||||
: MU-KILL-WORKER ( worker-n -- )
|
||||
MU-WORKER-NAME KILL ;
|
||||
CREATE MU-RUN-MATRIX MU-MAX-RUNS CELLS ALLOT
|
||||
: MU-MATRIX! ( val idx -- ) CELLS MU-RUN-MATRIX + ! ;
|
||||
: MU-MATRIX@ ( idx -- val ) CELLS MU-RUN-MATRIX + @ ;
|
||||
VARIABLE MU-N-RUNS
|
||||
: MU-INIT-MATRIX ( -- ) MU-N-RUNS @ 0 DO I I MU-MATRIX! LOOP ;
|
||||
|
||||
Block 5050
|
||||
VARIABLE MU-SW-I VARIABLE MU-SW-J
|
||||
VARIABLE MU-SW-VI VARIABLE MU-SW-VJ
|
||||
: MU-SWAP-MTX ( i j -- )
|
||||
MU-SW-J ! MU-SW-I !
|
||||
MU-SW-I @ MU-MATRIX@ MU-SW-VI !
|
||||
MU-SW-J @ MU-MATRIX@ MU-SW-VJ !
|
||||
MU-SW-VJ @ MU-SW-I @ MU-MATRIX!
|
||||
MU-SW-VI @ MU-SW-J @ MU-MATRIX! ;
|
||||
: MU-SHUFFLE ( -- )
|
||||
MU-N-RUNS @ 1 - 0 DO
|
||||
I MU-N-RUNS @ 1 - RANDOM
|
||||
I MU-SWAP-MTX
|
||||
LOOP ;
|
||||
|
||||
Block 5051
|
||||
VARIABLE MU-RUN-ID VARIABLE MU-CFG
|
||||
VARIABLE MU-REP VARIABLE MU-NW
|
||||
VARIABLE MU-MODE VARIABLE MU-NREPS
|
||||
: MU-EMIT-TRIAL-MARKER ( -- )
|
||||
." MU-TRIAL run=" MU-RUN-ID @ .
|
||||
." cfg=" MU-CFG @ .
|
||||
." rep=" MU-REP @ .
|
||||
." nw=" MU-NW @ .
|
||||
." mode=" MU-MODE @ .
|
||||
." fail=" MU-FAIL-COUNT @ . CR ;
|
||||
|
||||
Block 5052
|
||||
: MU-BIRTH-ALL ( -- )
|
||||
MU-NW @ 0 DO
|
||||
MU-MODE @ I MU-WL-FOR I MU-BIRTH-WORKER DROP
|
||||
LOOP ;
|
||||
: MU-TOUCH-ALL ( -- )
|
||||
MU-NW @ 0 DO
|
||||
MU-MODE @ I MU-WL-FOR I MU-TOUCH-WORKER
|
||||
LOOP ;
|
||||
: MU-CHECK-ALL ( -- )
|
||||
MU-NW @ 0 DO
|
||||
I MU-CHECK-WORKER
|
||||
LOOP ;
|
||||
|
||||
Block 5053
|
||||
: MU-KILL-ALL ( -- )
|
||||
MU-NW @ 0 DO
|
||||
I MU-KILL-WORKER
|
||||
LOOP ;
|
||||
: MU-RUN-TRIAL ( cfg rep run-id -- )
|
||||
MU-RUN-ID ! MU-REP ! MU-CFG !
|
||||
0 MU-FAIL-COUNT !
|
||||
MU-CFG @ MU-CONC-OF MU-NW !
|
||||
MU-CFG @ MU-MODE-OF MU-MODE !
|
||||
MU-BIRTH-ALL
|
||||
MU-TOUCH-ALL
|
||||
MU-TOUCH-ALL
|
||||
MU-CHECK-ALL
|
||||
MU-KILL-ALL
|
||||
MU-EMIT-TRIAL-MARKER ;
|
||||
|
||||
Block 5054
|
||||
: MU-CAMPAIGN-STEP ( idx -- )
|
||||
MU-MATRIX@
|
||||
DUP MU-NREPS @ /
|
||||
SWAP MU-NREPS @ MOD
|
||||
MU-RUN-ID @
|
||||
MU-RUN-TRIAL
|
||||
MU-RUN-ID @ 1+ MU-RUN-ID ! ;
|
||||
|
||||
Block 5055
|
||||
: MU-EXEC-CAMPAIGN ( seed n-reps -- )
|
||||
DUP MU-NREPS !
|
||||
MU-N-CFG * MU-N-RUNS !
|
||||
SEED
|
||||
MU-INIT-MATRIX MU-SHUFFLE
|
||||
HB-ON
|
||||
0 MU-RUN-ID !
|
||||
MU-N-RUNS @ 0 DO
|
||||
I MU-CAMPAIGN-STEP
|
||||
LOOP
|
||||
HB-OFF
|
||||
." MU-CAMPAIGN: complete" CR ;
|
||||
Reference in New Issue
Block a user