starkernel: item 3.1 reopened -- two Kconfig symbols items 1.1/1.4 deferred here

Punch list §25 item 3.1 re-closed after reopening.

Items 1.1 and 1.4's resolutions both explicitly named this item as
where their Kconfig symbols would be implemented, but 3.1's own stated
scope never mentioned them, so the first close missed both:

- STADIUM_CONTAINS_DEPTH_MAX (default 5) -- item 1.1's contains-chain
  depth cap. No consumer yet; reap-gating enforcement is item 3.5.
- STADIUM_CAPACITY_TICK (default 1000) -- item 1.4's capacity
  arbitration cadence in virtual ticks. No consumer yet; capacity
  arbitration itself is not on the punch list.

Both added following STADIUM_MAX_VM_COUNT's exact pattern:
Kconfig.kernel entry, Makefile.starkernel kconfig_int +
VM_FEATURE_FLAG_VARS forwarding, starforth_config.h fallback default.
stadium.h now includes starforth_config.h and carries two more
C99-portable compile-time checks proving both symbols are defined and
sane, same discipline as the byte-count checks. Declaration only --
not inventing the consuming logic to close this out early.

Verified: three-architecture boot (amd64, aarch64, riscv64), all
reaching ok> with identical dict_hash=0x3d4e1daf289da94f, re-run after
the reopening.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-04 15:15:59 -04:00
co-authored by Claude Sonnet 5
parent 6da9373e74
commit 1b2f0677de
12 changed files with 31384 additions and 2 deletions
+31
View File
@@ -2674,6 +2674,37 @@ document and committing that amendment as its own item.*
> remains unanswered — there is no message patron struct anywhere in this tree yet
> (messages are undesigned future work), so there is nothing concrete to check the 32-byte
> inline payload against. Not fabricated a number to close this; left open.
>
> **REOPENED 2026-08-04.** While reading context for item 3.2, found that two earlier
> resolutions had explicitly named *this* item as where their Kconfig symbols would be
> implemented — item 1.1 (line ~2400, "exposed as a Kconfig symbol, named at implementation
> time in item 3.1", the `contains`-chain depth cap, default 5) and item 1.4 (§22.4 and its
> own resolution, "Kconfig-tunable at implementation (item 3.1)", the capacity-tick
> constant, default 1000). Neither made it into the work above, because 3.1's own stated
> scope ("cell and header") never mentioned them — the promise lived only in items 1.1 and
> 1.4's text. Captain Bob ruled: reopen, add both here (Phase 3 is implementation, unlike
> Phase 1's paper-only items — item 1.7's own nesting-depth Kconfig symbol was correctly
> left undone at Phase 1, by contrast). Declaration only, matching how
> `STADIUM_MAX_VM_COUNT` was introduced in item 2.2's WIP commit before its consuming logic
> existed: `STADIUM_CONTAINS_DEPTH_MAX` (default 5) has no consumer yet — reap-gating on
> `contains` is item 3.5's scope. `STADIUM_CAPACITY_TICK` (default 1000) has no consumer
> yet either — capacity arbitration isn't on the punch list at all yet. Not inventing that
> logic here; only the two symbols.
>
> **RE-CLOSED 2026-08-04.** Both symbols added following `STADIUM_MAX_VM_COUNT`'s exact
> pattern: `Kconfig.kernel` entry, `Makefile.starkernel` `kconfig_int` +
> `VM_FEATURE_FLAG_VARS` forwarding, `starforth_config.h` fallback default (needed for this
> no-`.config` build, same gap the original `STADIUM_MAX_VM_COUNT` WIP commit hit and item
> 2.2 fixed). `stadium.h` now includes `starforth_config.h` and carries two more
> C99-portable compile-time checks (`> 0`, not byte-count) proving both symbols are defined
> and sane in the same translation unit as the cell checks. `contains`'s field comment now
> references `STADIUM_CONTAINS_DEPTH_MAX` by name. Recompiled `stadium.c` standalone
> (clean) before the full run.
>
> **Regression: clean, re-run after reopening.** All three architectures boot to `ok>`
> with identical `dict_hash=0x3d4e1daf289da94f` -- amd64 (`logs/20260804-151032`), aarch64
> (`logs/20260804-151115`), riscv64 (`logs/20260804-151222`).
- [ ] **3.2 — Boot-time allocation.** One global cell array, sized from the memory budget,
before any VM exists. *Refs:* §6, §17.6, §22.3.
- [ ] **3.3 — Behaviour enumeration and dispatch.** Closed tag set fixed at build time.