word_source: repair DECAY-RATE@ overflow guard and remove dead shadowed registrations

DECAY-RATE@ (physics_freeze_words.c) pushed to the data stack with no
capacity check and no prior pop to make room, unlike its neighbors in
the same file -- the one live, unconditional missing-guard bug the
Isabelle sweep's ~15 candidate findings reduced to once checked against
vm_push()'s real internal bounds check (see proof/FINDINGS.md SS2).

Removed dictionary_manipulation_words.c's [ ] STATE and defining_words.c's
DEFER IS DEFER@ (plus the now-orphaned defining_runtime_defer helper) --
all confirmed permanently shadowed by later dictionary registrations
(defining_words.c and defer_words.c respectively), per FORTH's
newest-first lookup. No behavior change: the removed code was already
unreachable.

Verified: hosted `make` builds clean under -Wall -Werror; the hosted
self-test suite passes 965/965 implemented tests with no regressions.
Three-architecture QEMU acceptance boot, all clean to ok> with an
identical dict_hash=0x24b4279f0670aa3a across amd64/aarch64/riscv64 and
identical 1003/965/0/0 test totals -- logs attached.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-14 21:33:17 -04:00
co-authored by Claude Sonnet 5
parent 3426d6a4a7
commit dfdabcc2d7
13 changed files with 25773 additions and 170 deletions
+7 -2
View File
@@ -14,8 +14,13 @@ begin
`STATE` (Module 17, line 126). FORTH dictionary lookup finds the MOST
RECENT definition of a name first, so defining_words.c's versions are
the only ones ever reachable -- dictionary_manipulation_words.c's `[`/
`]`/`STATE`/`INTERPRET` are permanently shadowed, dead code from the
moment boot registration completes.
`]`/`STATE` are permanently shadowed, dead code from the moment boot
registration completes. CORRECTED 2026-08-14: `INTERPRET` is NOT part of
this shadow -- defining_words.c never registers a word named INTERPRET
at all (confirmed by grep), so dictionary_manipulation_words.c's
INTERPRET is the only registration that exists and is live, not dead.
The earlier version of this note (and proof/FINDINGS.md) incorrectly
folded it into the shadowed group.
This also CORRECTS that file's finding, not just supersedes it: its
`[`/`]`/`STATE` write/read a dead file-scope `static cell_t