fix(v4): a manage request with too few values, or no room, is refused (#169)
v4_manage_serve took its arguments with v4_dstack_pop and never checked the stack's depth: a request with too few values acted on stale ring values, and one whose results did not fit dropped the oldest silently -- around the D-16 guards. Now each request's arity (manage.h) is checked first: fewer values than it takes, or no room for what it leaves, is error 12 with the stack as it was -- as a block request is refused (blocks.c). test_manage.c, written first and seen to fail (12 of 13 requests at both cell widths; NODE-BORN passed only because the stale value read was below 1): every request with one value fewer than it takes, and NODE-ME and CAPSULE-CELL on a stack with no room -- refused, the stack unchanged. After: 78 checks, 0 failures at 32 and 64 bits; all v4 tests at 64 bits, 40 programs, 1,871,313 checks, 0 failures (logs/20261112-152602/v4-test). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm
This commit is contained in:
Binary file not shown.
Reference in New Issue
Block a user