W14: build C21 perform-mode harness + 5 pins (test-infra only)
The synchronous harness binds mocks as plain NativeFns, so no harness test
could exercise the real CEK perform/suspend/resume path — the HO+perform
element-drop class (S10) was structurally invisible (hosts.md C21).
Add harness-run-perform to spec/harness.sx: drives make-cek-state/
cek-step-loop, services each (perform {:op X :args L}) suspension from the
session's platform mocks (entry logged before invocation, C22-consistent),
cek-resumes with the mock value, loops to terminal; clear error on an
unmocked op. Shared arity dispatch extracted as harness-invoke-mock.
Pins (gate-C21-perform-mode-harness): single suspension, arithmetic-frame
resume, sequential performs, unmocked-op error, and the S10 probe — map
over a perform-suspending lambda keeps ALL 3 elements through 3
suspensions on the CEK path (localizing the drop class to serving-JIT).
290/0 under OCaml run_tests; harness self-suite green.
Caveat (documented): requires the runner's cek-* driver bindings — absent
on bare sx_server/MCP, the same runner-only-binding theme as section B.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -71,7 +71,11 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
||||
12-probe battery from the finding, errors compared by message)
|
||||
- [x] C22/K104 — FIXED harness (spec/harness.sx make-interceptor: log entry
|
||||
appended before the mock runs, :result updated via dict-set!) + 3 pins
|
||||
- [ ] C21 — real perform/suspend mode in harness
|
||||
- [x] C21 — BUILT `harness-run-perform` (spec/harness.sx): drives real CEK
|
||||
suspend/resume, services performs from session mocks, C22-style
|
||||
logging; 5 pins incl. the S10 map-over-perform probe (CEK keeps all
|
||||
elements — the drop class is serving-JIT-side). Runner-only (needs
|
||||
cek-* driver bindings)
|
||||
- [ ] C23 — adapter-dom render-output tests
|
||||
|
||||
### D. WASM corpus runner
|
||||
@@ -87,6 +91,20 @@ Pin each confirmed-and-fixed finding with a minimal repro. Add suites to
|
||||
|
||||
## Progress log (newest first)
|
||||
|
||||
- 2026-07-04 — **C21 perform-mode harness (item C.3)**. Added
|
||||
`harness-run-perform` to spec/harness.sx (exported): drives
|
||||
`make-cek-state`/`cek-step-loop`, services each
|
||||
`(perform {:op X :args L})` suspension from the session's platform mocks
|
||||
(entry logged before invocation, C22-consistent), `cek-resume`s with the
|
||||
mock value, loops to terminal. Self-recursion via the `(self self …)`
|
||||
pattern (avoids letrec-injection K06 territory). Extracted the arity
|
||||
dispatch into shared `harness-invoke-mock`. 5 pins in
|
||||
`gate-C21-perform-mode-harness` — notably the **S10 probe**: `(map (fn (u)
|
||||
(perform …)) '("a" "b" "c"))` keeps ALL elements through 3 suspensions on
|
||||
the CEK path, confirming the element-drop class is serving-JIT-side, not
|
||||
CEK. Caveat noted in the docstring: needs the runner's cek-* driver
|
||||
bindings (absent on bare sx_server/MCP — the env-parity theme again).
|
||||
290/0. Test-infra-only.
|
||||
- 2026-07-04 — **C22/K104 throwing-mock fix + pins (item C.2)**. First
|
||||
actual FIX of the loop — in scope because spec/harness.sx is W14-owned
|
||||
test infrastructure (PLAN approach item 4 assigns "log IO before invoking
|
||||
|
||||
Reference in New Issue
Block a user