Stage O-C: the event-driven DoE driver -- DOE returns to the prompt, EV-DONE chains the trials, MU-WAIT-ALL deleted (FABRIC-3.9.0 §3/§7.4)

- DOE sets up, JOINs EV-DONE and starts trial 1, then returns. Each trial
  births and sends WL-RUN only; completion arrives as the OS's EV-DONE.
- ON-DONE counts this campaign's own workers while active; the last one
  ends the trial (KILL all, marker, persist) and starts the next, or
  finishes (HB-OFF, UNJOIN, MU-CAMPAIGN: complete). MU-WAIT-ALL is gone;
  the start/end cycle goes through MU-END-XT.
- WL-DONE-ARGS removed from all ten workload capsules; lint passes.

Smoke campaign (amd64, 1 rep, rows off per Captain Bob): DOE returns, the
prompt answers mid-trial, all 6 trials chain on events, fail=0 each,
28/28 born/killed/departed, MU-CAMPAIGN: complete in ~61 min. Standard
sequence passes on all three ISAs (with the xHCI fix it exposed, df150e86).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-09-25 10:58:11 -04:00
co-authored by Claude Opus 5.5
parent df150e8626
commit ac42cf36b5
16 changed files with 463807 additions and 123 deletions
+51 -1
View File
@@ -1,6 +1,6 @@
# FABRIC-3.9.8.md — Observers and participants: execution plan and log # FABRIC-3.9.8.md — Observers and participants: execution plan and log
**Status: IN PROGRESS.** Done: O-A, the stack-convention fix, S-1a, S-1b, S-1c, M-0, M-A, the dead-VM departure fix, M-B and O-B (§2). The design and **Status: IN PROGRESS.** Done: O-A, the stack-convention fix, S-1a, S-1b, S-1c, M-0, M-A, the dead-VM departure fix, M-B, O-B, the xHCI fix and O-C (§2). The design and
its rulings (O-1 to O-4, the discard, and §7/§8's M- and S- rulings) are in `FABRIC-3.9.0.md`. its rulings (O-1 to O-4, the discard, and §7/§8's M- and S- rulings) are in `FABRIC-3.9.0.md`.
Each stage: Each stage:
@@ -799,3 +799,53 @@ Evidence is named **before** each stage runs.
**Process note.** During the investigation, a `make clean` for amd64 was run while that **Process note.** During the investigation, a `make clean` for amd64 was run while that
ISA's QEMU was up. It deleted the running QEMU's control sockets; that QEMU was stopped with ISA's QEMU was up. It deleted the running QEMU's control sockets; that QEMU was stopped with
SIGTERM, since no QMP socket was left, and its log was discarded as flawed. SIGTERM, since no QMP socket was left, and its log was discarded as flawed.
- [x] **Stage O-C — the event-driven DoE driver (`FABRIC-3.9.0.md` §3, as revised by §7.4).**
2026-09-25. Captain Bob: *"go ahead with O-C"*. On the smoke run's length: *"Rows off, full 6
trials."* Capsule only.
**The change** (`multiuser-doe.4th`, `per-isa-doe.4th`, `workload-0..9.4th`):
- **`DOE` starts trial 1 and returns to the prompt.** `MU-EXEC-CAMPAIGN` sets up (seed,
shuffled matrix, `HB-ON`), `JOIN`s `EV-DONE`, sets `MU-ACTIVE`, and starts the trial.
- **A trial starts and returns.** `MU-START-TRIAL` births the workers, sends each its job, and
returns.
- **The job text is just `WL-RUN`.** It has no `SEND` and no `WL-DONE-ARGS`. A worker's
completion reaches Hera as the OS's own `EV-DONE` (M-B).
- **`ON-DONE ( c-addr u -- )`**, Hera's handler, counts only while a campaign is active, and
only its own workers (`mu0`–`mu7`). The last one runs `MU-END-TRIAL`: `KILL` all, the
marker, persist, then the next trial, or `MU-FINISH` (`HB-OFF`, `EV-DONE UNJOIN`,
`MU-CAMPAIGN: complete`).
- **`MU-WAIT-ALL` is deleted.** The start → send → end → start cycle is broken in definition
order through `MU-END-XT`, an execution token stored after `MU-END-TRIAL` is defined.
- **A failed send** still counts as done and as a fail (`MU-FAIL-COUNT`), and the end check
runs after all sends.
- **`WL-DONE-ARGS` is gone** from all ten workload capsules. `mkcapsule --lint` passes on all
37 capsules.
**Evidence: smoke campaign, amd64, 1 rep = 6 cells, heartbeat rows off.** Ruled because rows
on, serial output at about 20 rows/s would stretch the smoke to about a day. That rows-on
attempt is `logs/20260924-230814/amd64/`: `DOE` returned and the prompt answered mid-trial,
stopped by choice after 20 minutes. The rows-off runs are `logs/20260925-013706/amd64/`, and
again on the fixed kernel in `-090302`:
- `12345 1 S" amd64" DOE HB-OFF` returns to the prompt immediately.
- `1 2 + .` typed mid-trial gives `3`.
- All 6 trials chain on `EV-DONE` events alone: `cfg=5 nw=8`, `cfg=1 nw=2`, `cfg=4 nw=8`,
`cfg=3 nw=4`, `cfg=2 nw=4`, `cfg=0 nw=2`. Every one is `fail=0`, and then
`MU-CAMPAIGN: complete`, in about 61 minutes.
- 28/28 births, 28/28 `KILL … dead`, 28/28 `HERMES: mu… departed`. Zero `UNKNOWN WORD`s, zero
faults.
- Afterwards `.CHANNELS` shows the event channels empty, and `EV-DROPPED` and `MU-ACTIVE`
both read `0`.
"Hera's rows during trials are only event handling" was named in the plan, but it can't be
shown with rows off. It belongs with O-D's rows-on run.
**Found by this stage:** the standard sequence after the campaign crashed, which turned out to
be the pre-existing xHCI heap corruption. That was fixed and committed separately (entry
above). On the fixed kernel, the campaign followed by O-A, `MINT`, unplug and re-attach passes
(`-090302`).
**Standard sequence, all three ISAs** (`logs/20260925-101854/amd64/`, `-103145/aarch64/`,
`-104448/riscv64/`, on the tree carrying both the xHCI fix and O-C's capsules):
- boot parity and the `dict_hash` set unchanged;
- the O-A checks pass;
- mint → WIREBIND → `USE` → `3`, idle growth 0, no faults.
+72 -72
View File
@@ -1,5 +1,5 @@
# Capsule Block Manifest — Auto-generated # Capsule Block Manifest — Auto-generated
<!-- Generated by mkcapsule --manifest 2026-09-24T15:39:14Z --> <!-- Generated by mkcapsule --manifest 2026-09-25T14:44:12Z -->
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. --> <!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
<!-- Hand-written justifications and immutability notes live --> <!-- Hand-written justifications and immutability notes live -->
<!-- in MANIFEST.md alongside this auto-generated index. --> <!-- in MANIFEST.md alongside this auto-generated index. -->
@@ -25,23 +25,23 @@
| `init-l8-volatile.4th` | 4810, 4811, 4812, 4813 | `0x98caabbbd92abac4` | yes | | `init-l8-volatile.4th` | 4810, 4811, 4812, 4813 | `0x98caabbbd92abac4` | yes |
| `init.4th` | 2049, 2050, 2057 | `0xea038ba684c53443` | yes | | `init.4th` | 2049, 2050, 2057 | `0xea038ba684c53443` | yes |
| `lib.4th` | 4050 | `0x4b216635c359ef73` | yes | | `lib.4th` | 4050 | `0x4b216635c359ef73` | yes |
| `multiuser-doe.4th` | 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055 | `0x2b268decf6065736` | yes | | `multiuser-doe.4th` | 5044, 5045, 5046, 5047, 5048, 5049, 5050, 5051, 5052, 5053, 5054, 5055 | `0x5ecefe53271b715a` | yes |
| `per-isa-doe.4th` | 5117, 5119 | `0xab13edecabfd78db` | yes | | `per-isa-doe.4th` | 5117, 5119 | `0xcbe1b36db619232b` | yes |
| `sdk.4th` | 5109, 5110, 5111, 5112, 5113, 5114, 5115 | `0x008fdbbb62c94a3a` | 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 | | `turtle.4th` | 5100, 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108 | `0x4d470418ca543365` | yes |
| `user-font-demo.4th` | 4200, 4201, 4202 | `0xce1fd7d1b581a56d` | yes | | `user-font-demo.4th` | 4200, 4201, 4202 | `0xce1fd7d1b581a56d` | yes |
| `workload-0.4th` | 2200, 2201 | `0x5597918289a363e3` | yes | | `workload-0.4th` | 2200, 2201 | `0x39fb60b7337bb1c6` | yes |
| `workload-1-lite.4th` | 5058, 5059 | `0xbc13567fea25063a` | yes | | `workload-1-lite.4th` | 5058, 5059 | `0x0c92e251bb8ed1fb` | yes |
| `workload-1.4th` | 4406, 4415, 4425, 4435 | `0x63e251adb0a03613` | yes | | `workload-1.4th` | 4406, 4415, 4425, 4435 | `0x63e251adb0a03613` | yes |
| `workload-2.4th` | 4506, 4515, 4525, 4535, 4545 | `0x9f87a07575e8f86a` | yes | | `workload-2.4th` | 4506, 4515, 4525, 4535, 4545 | `0xb804e16a5e38a564` | yes |
| `workload-3.4th` | 4606, 4615, 4625, 4635, 4645, 4655, 4665 | `0xc4a88f6991036cc4` | yes | | `workload-3.4th` | 4606, 4615, 4625, 4635, 4645, 4655, 4665 | `0x3b36a577a532d50f` | yes |
| `workload-4.4th` | 2130, 2131, 2132 | `0x65372d2d3787d2ba` | yes | | `workload-4.4th` | 2130, 2131, 2132 | `0xf49776216338b3c8` | yes |
| `workload-5-lite.4th` | 5056, 5057 | `0x05c651e140ef667b` | yes | | `workload-5-lite.4th` | 5056, 5057 | `0x7e9f73aa58089857` | yes |
| `workload-5.4th` | *(none — raw code capsule)* | `0x526964c7c9506a11` | yes | | `workload-5.4th` | *(none — raw code capsule)* | `0x526964c7c9506a11` | yes |
| `workload-6.4th` | 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095 | `0x2526f98096581e63` | yes | | `workload-6.4th` | 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095 | `0xdeb41061ea5f0fe5` | yes |
| `workload-7.4th` | 2150, 2151 | `0x3441183353715e63` | yes | | `workload-7.4th` | 2150, 2151 | `0x1bc8bb3e409951df` | yes |
| `workload-8.4th` | 2160 | `0xe182180361013aa8` | yes | | `workload-8.4th` | 2160 | `0x694d2daeeffc1620` | yes |
| `workload-9.4th` | 4706, 4715, 4725, 4735, 4745 | `0x6c08bf4ad3f286b2` | yes | | `workload-9.4th` | 4706, 4715, 4725, 4735, 4745 | `0x9bee0e5d7feef977` | yes |
| `workload-calib1.4th` | 5043 | `0x3b9f2d17b554fabc` | yes | | `workload-calib1.4th` | 5043 | `0x3b9f2d17b554fabc` | yes |
| `zuse-eligibility.4th` | 4021, 4022 | `0x7b28f4776a32e0b7` | yes | | `zuse-eligibility.4th` | 4021, 4022 | `0x7b28f4776a32e0b7` | yes |
| `zuse.4th` | 4016, 4017, 4018 | `0xa14d5a7a88791cf6` | yes | | `zuse.4th` | 4016, 4017, 4018 | `0xa14d5a7a88791cf6` | yes |
@@ -69,22 +69,22 @@
| 2077 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok | | 2077 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
| 2078 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok | | 2078 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
| 2079 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok | | 2079 | `init-l8-omni.4th` | `0x5979e314d6452045` | ok |
| 2080 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2080 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2081 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2081 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2082 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2082 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2083 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2083 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2084 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2084 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2085 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2085 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2086 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2086 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2087 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2087 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2088 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2088 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2089 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2089 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2090 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2090 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2091 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2091 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2092 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2092 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2093 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2093 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2094 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2094 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2095 | `workload-6.4th` | `0x2526f98096581e63` | ok | | 2095 | `workload-6.4th` | `0xdeb41061ea5f0fe5` | ok |
| 2100 | `doe.4th` | `0xf154616d248e861f` | ok | | 2100 | `doe.4th` | `0xf154616d248e861f` | ok |
| 2101 | `doe.4th` | `0xf154616d248e861f` | ok | | 2101 | `doe.4th` | `0xf154616d248e861f` | ok |
| 2102 | `doe.4th` | `0xf154616d248e861f` | ok | | 2102 | `doe.4th` | `0xf154616d248e861f` | ok |
@@ -93,14 +93,14 @@
| 2105 | `doe.4th` | `0xf154616d248e861f` | ok | | 2105 | `doe.4th` | `0xf154616d248e861f` | ok |
| 2106 | `doe.4th` | `0xf154616d248e861f` | ok | | 2106 | `doe.4th` | `0xf154616d248e861f` | ok |
| 2107 | `doe.4th` | `0xf154616d248e861f` | ok | | 2107 | `doe.4th` | `0xf154616d248e861f` | ok |
| 2130 | `workload-4.4th` | `0x65372d2d3787d2ba` | ok | | 2130 | `workload-4.4th` | `0xf49776216338b3c8` | ok |
| 2131 | `workload-4.4th` | `0x65372d2d3787d2ba` | ok | | 2131 | `workload-4.4th` | `0xf49776216338b3c8` | ok |
| 2132 | `workload-4.4th` | `0x65372d2d3787d2ba` | ok | | 2132 | `workload-4.4th` | `0xf49776216338b3c8` | ok |
| 2150 | `workload-7.4th` | `0x3441183353715e63` | ok | | 2150 | `workload-7.4th` | `0x1bc8bb3e409951df` | ok |
| 2151 | `workload-7.4th` | `0x3441183353715e63` | ok | | 2151 | `workload-7.4th` | `0x1bc8bb3e409951df` | ok |
| 2160 | `workload-8.4th` | `0xe182180361013aa8` | ok | | 2160 | `workload-8.4th` | `0x694d2daeeffc1620` | ok |
| 2200 | `workload-0.4th` | `0x5597918289a363e3` | ok | | 2200 | `workload-0.4th` | `0x39fb60b7337bb1c6` | ok |
| 2201 | `workload-0.4th` | `0x5597918289a363e3` | ok | | 2201 | `workload-0.4th` | `0x39fb60b7337bb1c6` | ok |
| 4000 | `ACL.4th` | `0xf8890c05c0d8f921` | ok | | 4000 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
| 4001 | `ACL.4th` | `0xf8890c05c0d8f921` | ok | | 4001 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
| 4002 | `ACL.4th` | `0xf8890c05c0d8f921` | ok | | 4002 | `ACL.4th` | `0xf8890c05c0d8f921` | ok |
@@ -203,23 +203,23 @@
| 4415 | `workload-1.4th` | `0x63e251adb0a03613` | ok | | 4415 | `workload-1.4th` | `0x63e251adb0a03613` | ok |
| 4425 | `workload-1.4th` | `0x63e251adb0a03613` | ok | | 4425 | `workload-1.4th` | `0x63e251adb0a03613` | ok |
| 4435 | `workload-1.4th` | `0x63e251adb0a03613` | ok | | 4435 | `workload-1.4th` | `0x63e251adb0a03613` | ok |
| 4506 | `workload-2.4th` | `0x9f87a07575e8f86a` | ok | | 4506 | `workload-2.4th` | `0xb804e16a5e38a564` | ok |
| 4515 | `workload-2.4th` | `0x9f87a07575e8f86a` | ok | | 4515 | `workload-2.4th` | `0xb804e16a5e38a564` | ok |
| 4525 | `workload-2.4th` | `0x9f87a07575e8f86a` | ok | | 4525 | `workload-2.4th` | `0xb804e16a5e38a564` | ok |
| 4535 | `workload-2.4th` | `0x9f87a07575e8f86a` | ok | | 4535 | `workload-2.4th` | `0xb804e16a5e38a564` | ok |
| 4545 | `workload-2.4th` | `0x9f87a07575e8f86a` | ok | | 4545 | `workload-2.4th` | `0xb804e16a5e38a564` | ok |
| 4606 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4606 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4615 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4615 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4625 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4625 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4635 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4635 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4645 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4645 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4655 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4655 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4665 | `workload-3.4th` | `0xc4a88f6991036cc4` | ok | | 4665 | `workload-3.4th` | `0x3b36a577a532d50f` | ok |
| 4706 | `workload-9.4th` | `0x6c08bf4ad3f286b2` | ok | | 4706 | `workload-9.4th` | `0x9bee0e5d7feef977` | ok |
| 4715 | `workload-9.4th` | `0x6c08bf4ad3f286b2` | ok | | 4715 | `workload-9.4th` | `0x9bee0e5d7feef977` | ok |
| 4725 | `workload-9.4th` | `0x6c08bf4ad3f286b2` | ok | | 4725 | `workload-9.4th` | `0x9bee0e5d7feef977` | ok |
| 4735 | `workload-9.4th` | `0x6c08bf4ad3f286b2` | ok | | 4735 | `workload-9.4th` | `0x9bee0e5d7feef977` | ok |
| 4745 | `workload-9.4th` | `0x6c08bf4ad3f286b2` | ok | | 4745 | `workload-9.4th` | `0x9bee0e5d7feef977` | ok |
| 4806 | `init-l8-stable.4th` | `0xdc3830f189063a9a` | ok | | 4806 | `init-l8-stable.4th` | `0xdc3830f189063a9a` | ok |
| 4810 | `init-l8-volatile.4th` | `0x98caabbbd92abac4` | ok | | 4810 | `init-l8-volatile.4th` | `0x98caabbbd92abac4` | ok |
| 4811 | `init-l8-volatile.4th` | `0x98caabbbd92abac4` | ok | | 4811 | `init-l8-volatile.4th` | `0x98caabbbd92abac4` | ok |
@@ -334,22 +334,22 @@
| 5001 | `fabric.4th` | `0x9d9489cbeca4099b` | ok | | 5001 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
| 5002 | `fabric.4th` | `0x9d9489cbeca4099b` | ok | | 5002 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
| 5043 | `workload-calib1.4th` | `0x3b9f2d17b554fabc` | ok | | 5043 | `workload-calib1.4th` | `0x3b9f2d17b554fabc` | ok |
| 5044 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5044 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5045 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5045 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5046 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5046 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5047 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5047 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5048 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5048 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5049 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5049 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5050 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5050 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5051 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5051 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5052 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5052 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5053 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5053 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5054 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5054 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5055 | `multiuser-doe.4th` | `0x2b268decf6065736` | ok | | 5055 | `multiuser-doe.4th` | `0x5ecefe53271b715a` | ok |
| 5056 | `workload-5-lite.4th` | `0x05c651e140ef667b` | ok | | 5056 | `workload-5-lite.4th` | `0x7e9f73aa58089857` | ok |
| 5057 | `workload-5-lite.4th` | `0x05c651e140ef667b` | ok | | 5057 | `workload-5-lite.4th` | `0x7e9f73aa58089857` | ok |
| 5058 | `workload-1-lite.4th` | `0xbc13567fea25063a` | ok | | 5058 | `workload-1-lite.4th` | `0x0c92e251bb8ed1fb` | ok |
| 5059 | `workload-1-lite.4th` | `0xbc13567fea25063a` | ok | | 5059 | `workload-1-lite.4th` | `0x0c92e251bb8ed1fb` | ok |
| 5100 | `turtle.4th` | `0x4d470418ca543365` | ok | | 5100 | `turtle.4th` | `0x4d470418ca543365` | ok |
| 5101 | `turtle.4th` | `0x4d470418ca543365` | ok | | 5101 | `turtle.4th` | `0x4d470418ca543365` | ok |
| 5102 | `turtle.4th` | `0x4d470418ca543365` | ok | | 5102 | `turtle.4th` | `0x4d470418ca543365` | ok |
@@ -366,8 +366,8 @@
| 5113 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok | | 5113 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
| 5114 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok | | 5114 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
| 5115 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok | | 5115 | `sdk.4th` | `0x008fdbbb62c94a3a` | ok |
| 5117 | `per-isa-doe.4th` | `0xab13edecabfd78db` | ok | | 5117 | `per-isa-doe.4th` | `0xcbe1b36db619232b` | ok |
| 5119 | `per-isa-doe.4th` | `0xab13edecabfd78db` | ok | | 5119 | `per-isa-doe.4th` | `0xcbe1b36db619232b` | ok |
## Conflicts ## Conflicts
+49 -38
View File
@@ -29,14 +29,13 @@ Block 5045
ENDCASE ; ENDCASE ;
Block 5046 Block 5046
( FABRIC-3.8 3.9 Stage H: workers are born defs-only and ) ( FABRIC-3.9.8 O-C: event-driven. Workers are born defs-only )
( each is SENT one job. WL-RUN, defined in every workload ) ( and each is SENT one job: WL-RUN, nothing else. Its end )
( capsule, is its old birth-time tail plus its entry word ) ( reaches Hera as the OS's own EV-DONE (ON-DONE, block 5054) )
( twice, as the old two VM-EXEC passes did. The LAST word ) ( -- no job text SENDs anything, and Hera never waits. )
( of the job SENDs MU-DONE back to Hera, who counts them. )
VARIABLE MU-DONE-COUNT VARIABLE MU-DONE-COUNT
: MU-DONE ( -- ) MU-DONE-COUNT @ 1+ MU-DONE-COUNT ! ; VARIABLE MU-ACTIVE
: MU-JOB ( -- c-addr u ) S" WL-RUN WL-DONE-ARGS SEND" ; : MU-JOB ( -- c-addr u ) S" WL-RUN" ;
Block 5047 Block 5047
: MU-WORKER-NAME ( n -- c-addr u ) : MU-WORKER-NAME ( n -- c-addr u )
@@ -66,9 +65,9 @@ Block 5049
VARIABLE MU-FAIL-COUNT VARIABLE MU-FAIL-COUNT
: MU-SEND-WORKER ( worker-n -- ) : MU-SEND-WORKER ( worker-n -- )
MU-JOB ROT MU-WORKER-NAME SEND 0= IF MU-JOB ROT MU-WORKER-NAME SEND 0= IF
MU-FAIL-COUNT @ 1+ MU-FAIL-COUNT ! MU-DONE THEN ; MU-FAIL-COUNT @ 1+ MU-FAIL-COUNT !
: MU-KILL-WORKER ( worker-n -- ) MU-DONE-COUNT @ 1+ MU-DONE-COUNT ! THEN ;
MU-WORKER-NAME KILL ; : MU-KILL-WORKER ( worker-n -- ) MU-WORKER-NAME KILL ;
CREATE MU-RUN-MATRIX MU-MAX-RUNS CELLS ALLOT CREATE MU-RUN-MATRIX MU-MAX-RUNS CELLS ALLOT
: MU-MATRIX! ( val idx -- ) CELLS MU-RUN-MATRIX + ! ; : MU-MATRIX! ( val idx -- ) CELLS MU-RUN-MATRIX + ! ;
: MU-MATRIX@ ( idx -- val ) CELLS MU-RUN-MATRIX + @ ; : MU-MATRIX@ ( idx -- val ) CELLS MU-RUN-MATRIX + @ ;
@@ -119,45 +118,57 @@ Block 5052
MU-NW @ 0 DO MU-NW @ 0 DO
I MU-SEND-WORKER I MU-SEND-WORKER
LOOP ; LOOP ;
: MU-WAIT-ALL ( -- ) ( O-C: MU-WAIT-ALL is gone. The trial's end runs through )
BEGIN MU-DONE-COUNT @ MU-NW @ < WHILE REPEAT ; ( MU-END-XT, set after MU-END-TRIAL is defined, breaking the )
( start -> send -> end -> start cycle in definition order. )
VARIABLE MU-END-XT
: MU-CHECK-END ( -- )
MU-DONE-COUNT @ MU-NW @ < 0= IF MU-END-XT @ EXECUTE THEN ;
Block 5053 Block 5053
: MU-KILL-ALL ( -- ) : MU-KILL-ALL ( -- )
MU-NW @ 0 DO MU-NW @ 0 DO
I MU-KILL-WORKER I MU-KILL-WORKER
LOOP ; LOOP ;
: MU-RUN-TRIAL ( cfg rep run-id -- ) ( O-C: a trial STARTS -- births, sends, returns. It ends in )
MU-RUN-ID ! MU-REP ! MU-CFG ! ( MU-END-TRIAL, run from ON-DONE when the last worker is done. )
: MU-START-TRIAL ( cfg rep -- )
MU-REP ! MU-CFG !
0 MU-FAIL-COUNT ! 0 MU-DONE-COUNT ! 0 MU-FAIL-COUNT ! 0 MU-DONE-COUNT !
MU-CFG @ MU-CONC-OF MU-NW ! MU-CFG @ MU-CONC-OF MU-NW !
MU-CFG @ MU-MODE-OF MU-MODE ! MU-CFG @ MU-MODE-OF MU-MODE !
MU-BIRTH-ALL MU-BIRTH-ALL MU-SEND-ALL
MU-SEND-ALL MU-CHECK-END ;
MU-WAIT-ALL
MU-KILL-ALL
MU-EMIT-TRIAL-MARKER ;
Block 5054 Block 5054
: MU-CAMPAIGN-STEP ( idx -- ) VARIABLE MU-IDX
MU-MATRIX@ : MU-START-IDX ( -- )
DUP MU-NREPS @ / MU-IDX @ MU-MATRIX@
SWAP MU-NREPS @ MOD DUP MU-NREPS @ / SWAP MU-NREPS @ MOD
MU-RUN-ID @ MU-START-TRIAL ;
MU-RUN-TRIAL : MU-FINISH ( -- )
MU-RUN-ID @ 1+ MU-RUN-ID ! ; 0 MU-ACTIVE ! HB-OFF EV-DONE UNJOIN DROP
." MU-CAMPAIGN: complete" CR ;
: MU-END-TRIAL ( -- )
MU-KILL-ALL MU-EMIT-TRIAL-MARKER
MU-RUN-ID @ 1+ MU-RUN-ID ! MU-IDX @ 1+ MU-IDX !
MU-IDX @ MU-N-RUNS @ < IF MU-START-IDX
ELSE MU-FINISH THEN ;
' MU-END-TRIAL MU-END-XT !
Block 5055 Block 5055
( EV-DONE handler: count only this campaign's own workers, )
( mu0..mu7, and only while a campaign is running. )
: MU-OURS? ( c-addr u -- f )
2 < IF DROP 0 EXIT THEN
DUP C@ 109 = SWAP 1+ C@ 117 = AND ;
: ON-DONE ( c-addr u -- )
MU-ACTIVE @ 0= IF 2DROP EXIT THEN
MU-OURS? 0= IF EXIT THEN
MU-DONE-COUNT @ 1+ MU-DONE-COUNT ! MU-CHECK-END ;
: MU-EXEC-CAMPAIGN ( seed n-reps start-idx -- ) : MU-EXEC-CAMPAIGN ( seed n-reps start-idx -- )
>R MU-IDX ! DUP MU-NREPS ! MU-N-CFG * MU-N-RUNS ! SEED
DUP MU-NREPS ! MU-INIT-MATRIX MU-SHUFFLE HB-ON MU-IDX @ MU-RUN-ID !
MU-N-CFG * MU-N-RUNS ! MU-IDX @ MU-N-RUNS @ < IF
SEED EV-DONE JOIN DROP 1 MU-ACTIVE ! MU-START-IDX
MU-INIT-MATRIX MU-SHUFFLE ELSE MU-FINISH THEN ;
HB-ON
R@ MU-RUN-ID !
MU-N-RUNS @ R> DO
I MU-CAMPAIGN-STEP
LOOP
HB-OFF
." MU-CAMPAIGN: complete" CR ;
+4 -2
View File
@@ -1,7 +1,7 @@
Block 5117 Block 5117
( per-isa-doe.4th - per-ISA DoE driver. FABRIC-3 SXXXIV.4/ ) ( per-isa-doe.4th - per-ISA DoE driver. FABRIC-3 SXXXIV.4/ )
( SXXXV.5/.7: 6-cell factorial from multiuser-doe.4th's own ) ( SXXXV.5/.7: 6-cell factorial from multiuser-doe.4th's own )
( MU-EXEC-CAMPAIGN, unchanged. Seed/reps are VARIABLEs, not ) ( MU-EXEC-CAMPAIGN. Seed/reps are VARIABLEs, not )
( CONSTANTs -- settable before a run. Default N=3 reps/cell= ) ( CONSTANTs -- settable before a run. Default N=3 reps/cell= )
( 18 trials/ISA (ratified 2026-09-17). Load multiuser-doe.4th ) ( 18 trials/ISA (ratified 2026-09-17). Load multiuser-doe.4th )
( FIRST. ) ( FIRST. )
@@ -15,7 +15,9 @@ Block 5119
( Tags, checks resume count, runs the campaign. Any experiment ) ( Tags, checks resume count, runs the campaign. Any experiment )
( goes through this one word -- run ONE per boot (one QEMU at ) ( goes through this one word -- run ONE per boot (one QEMU at )
( a time). See FABRIC-3.md SXXXV.12 for why MU-EMIT-TRIAL- ) ( a time). See FABRIC-3.md SXXXV.12 for why MU-EMIT-TRIAL- )
( MARKER can't just be redefined instead. ) ( MARKER can't just be redefined instead. FABRIC-3.9.8 O-C: )
( DOE starts trial 1 and RETURNS to the prompt; the campaign )
( runs on EV-DONE events and ends with MU-CAMPAIGN: complete. )
: DOE ( seed reps isa-addr isa-u -- ) : DOE ( seed reps isa-addr isa-u -- )
2DUP MU-ISA-TAG! 2DUP MU-ISA-TAG!
DOE-RESUME-COUNT MU-EXEC-CAMPAIGN ; DOE-RESUME-COUNT MU-EXEC-CAMPAIGN ;
-1
View File
@@ -17,4 +17,3 @@ Block 2201
; ;
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN TRANSPOSE-CHUNK RUN-TRANSPOSE RUN-TRANSPOSE ; : WL-RUN TRANSPOSE-CHUNK RUN-TRANSPOSE RUN-TRANSPOSE ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -17,4 +17,3 @@ Block 5059
1000 0 DO MICRO-BURST LOOP ; 1000 0 DO MICRO-BURST LOOP ;
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN RUN-MICRO-BURSTS MICRO-BURST MICRO-BURST ; : WL-RUN RUN-MICRO-BURSTS MICRO-BURST MICRO-BURST ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -68,4 +68,3 @@ Block 4545
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN 42 SEED 3 10 TRIANGLE-WAVE 7777 SEED RUN-ASYM : WL-RUN 42 SEED 3 10 TRIANGLE-WAVE 7777 SEED RUN-ASYM
54321 SEED RUN-SAW RUN-SAW RUN-SAW ; 54321 SEED RUN-SAW RUN-SAW RUN-SAW ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -90,4 +90,3 @@ Block 4665
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN 42 SEED 3 SINE-WAVE 98765 SEED RUN-DUAL : WL-RUN 42 SEED 3 SINE-WAVE 98765 SEED RUN-DUAL
11111 SEED 3 DAMPED-SINE DUAL-SINE DUAL-SINE ; 11111 SEED 3 DAMPED-SINE DUAL-SINE DUAL-SINE ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -32,4 +32,3 @@ Block 2132
; ;
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN RUN-PI ." 4:dopi-ok" CR RUN-PI RUN-PI ; : WL-RUN RUN-PI ." 4:dopi-ok" CR RUN-PI RUN-PI ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -23,4 +23,3 @@ Block 5057
; ;
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN CHAOS-FIELD CHAOS-FIELD CHAOS-FIELD ; : WL-RUN CHAOS-FIELD CHAOS-FIELD CHAOS-FIELD ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -165,4 +165,3 @@ Block 2095
; ;
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN RUN-OMNI RUN-OMNI RUN-OMNI ; : WL-RUN RUN-OMNI RUN-OMNI RUN-OMNI ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -17,4 +17,3 @@ Block 2150
Block 2151 Block 2151
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN RUN-MMUL RUN-MMUL RUN-MMUL ; : WL-RUN RUN-MMUL RUN-MMUL RUN-MMUL ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -14,4 +14,3 @@ Block 2160
; ;
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN FIB-SEQ RUN-FIB RUN-FIB ; : WL-RUN FIB-SEQ RUN-FIB RUN-FIB ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
-1
View File
@@ -68,4 +68,3 @@ Block 4745
( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN ) ( FABRIC-3.8 3.9: defs only; the DoE SENDs WL-RUN )
: WL-RUN 42 SEED 3 10 TRIANGLE-WAVE 7777 SEED RUN-ASYM : WL-RUN 42 SEED 3 10 TRIANGLE-WAVE 7777 SEED RUN-ASYM
54321 SEED RUN-SAW RUN-SAW RUN-SAW ; 54321 SEED RUN-SAW RUN-SAW RUN-SAW ;
: WL-DONE-ARGS S" MU-DONE" S" Hera" ;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff