Stage D batch 4: mama_forth_words.c groups 1+2 -- capsule/lifecycle words + BIRTH/START/KILL (FABRIC-3.md §XXXII.6)
15 of mama_forth_words.c's 48 silent sites fixed, split by functional
grouping per direct instruction: CAPSULE@/CAPSULE-HASH@/CAPSULE-FLAGS@/
CAPSULE-LEN@/CAPSULE-BIRTH/CAPSULE-RUN/EXEC (9), and BIRTH/START/KILL
(6).
Refined the diagnostic-placement rule: match whichever convention that
same function's other already-correct guards use, rather than
defaulting uniformly. BIRTH/START/KILL/EXEC each already had a
console_println() sibling guard ("name too long or empty") -- their
newly-diagnosed guards now match that, same shape as USE's own fix.
The CAPSULE*@ words have no sibling guard to match, so they keep
log_message() (defer_words.c's gold-standard default).
Three-arch clean qemu acceptance passed; BIRTH itself is exercised by
every boot (Hermes/Artemis birth).
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
66c2f3e539
commit
b42c3b195c
+29
@@ -4605,3 +4605,32 @@ regression unaffected -- including the full POST word-test suite, which exercise
|
||||
`vm_compile_word`/`vm_compile_call`/`execute_colon_word` extensively via every colon-definition
|
||||
test case, with zero regressions from either the diagnostics or the two NULL-guard fixes.
|
||||
|
||||
**`mama_forth_words.c` (48 sites) -- per direct instruction, split by functional grouping
|
||||
rather than mechanical file-order chunks or one single batch. Six groups identified from
|
||||
§XXXII.3's own per-file site list:** capsule descriptor/lifecycle words + `EXEC` (9: `CAPSULE@`/
|
||||
`CAPSULE-HASH@`/`CAPSULE-FLAGS@`/`CAPSULE-LEN@`/`CAPSULE-BIRTH`/`CAPSULE-RUN`/`EXEC`); VM
|
||||
lifecycle words (6: `BIRTH`/`START`/`KILL`); cross-VM execution/dispatch (11: `VM-STEP`/
|
||||
`VM-EXEC`/`VM-CALL`/`SWITCH-MARK-WORK`/`VM-HEAT`); identity/crypto (10: `MINT` + its
|
||||
`mint_pop_string()` helper/`ZUSE-ELIGIBILITY-ADD`/`ZUSE-ELIGIBLE?`/`ELEVATE-PUBKEY-UNPACK`);
|
||||
dictionary lookup + diagnostic/test words (6: `NAME>XT`/`RUNCAP-TEST`/`PAIR-TEST`); Stadium/
|
||||
physics primitives (6: `STADIUM-ADMIT`/`STADIUM-EVICT`/`STADIUM-RES-PULL`/`STADIUM-RES-PUSH`/
|
||||
`STADIUM-HEAT@`/`STADIUM-HEAT!`). Groups combined two-at-a-time per commit for acceptance-boot
|
||||
economy (each full rebuild+3-arch cycle costs the same regardless of diff size within one file),
|
||||
documented separately below per group.
|
||||
|
||||
**Batch 4 -- DONE, 2026-09-15: groups 1+2 (capsule descriptor/lifecycle words + EXEC, and VM
|
||||
lifecycle words BIRTH/START/KILL) -- 15 sites.** Refined the diagnostic-placement rule while
|
||||
doing this batch: rather than defaulting to `log_message()` everywhere (batches 1-3's own
|
||||
default, absent any sibling to match), **match whichever convention that same function's other
|
||||
already-correct guards already use.** `BIRTH`/`START`/`KILL`/`EXEC` each already had a sibling
|
||||
guard using `console_println()` ("name too long or empty") -- their newly-diagnosed guards now
|
||||
use `console_println()` too, for internal consistency within the same function, matching `USE`'s
|
||||
own five-guard precedent exactly (these are all `S" name"`-taking, directly-interactive commands,
|
||||
the same shape `USE` is). The four `CAPSULE*@` fetch words and `CAPSULE-BIRTH`/`CAPSULE-RUN` have
|
||||
no such sibling (a single guard each) -- kept `log_message()`, matching `defer_words.c`'s
|
||||
gold-standard default for a function with nothing else to match against.
|
||||
|
||||
**Verified:** three-architecture `clean qemu` acceptance (amd64/aarch64/riscv64) passed --
|
||||
`BIRTH` itself is exercised heavily by every boot (Hermes/Artemis birth), a real regression check
|
||||
beyond compile-cleanliness for this specific batch.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user