Record B1/B2/B4 rulings (FABRIC-3.5.md §XLV); clear Phase 3 blockers in FABRIC-3.6.md
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
feace42397
commit
303b0c7edf
@@ -4665,3 +4665,58 @@ not edited from here. `.claude/CLAUDE.md` now carries the full 64×16 rule.
|
||||
`MANIFEST.md`'s ride the strip per §XXII.5.
|
||||
- ⬜ **Item 45, NEW** — carry §XLIV.1's 64-char line limit into the `experiments/bare_metal/README.md`
|
||||
capsule guidance if it repeats the byte framing. **Not checked; flagged.**
|
||||
|
||||
---
|
||||
|
||||
## XLV. B1, B2, B4 SETTLED by Captain Bob (2026-09-21) — channels negotiate, the switch table is dynamic, payloads are one block
|
||||
|
||||
Three of Phase 3's blockers (`FABRIC-3.6.md` B1/B2/B4) ruled in one session. **These are rulings,
|
||||
recorded as given; the reasoning below is the design consequence, not new design.**
|
||||
|
||||
### XLV.1 — B1 (item 27): negotiated channels, pub/sub, ACK/NACK
|
||||
|
||||
> **Messaging is publish/subscribe. There is one common channel every VM listens to. A private
|
||||
> channel is created by request → grant/deny over the common channel, and the granted channel
|
||||
> is a new topic with its own membership. ACK/NACK negotiation runs throughout.**
|
||||
|
||||
This **overrules §XXXIII.5's recommendation** (one flat broadcast membership) in favour of the
|
||||
negotiation that `messaging.4th`'s CH-REQUEST/ACCEPT/CONFIRM/CLOSE already sketched. Consequences:
|
||||
|
||||
- **`SkHermesMembership` (task 2.1) is per-channel.** The flat list is right *per topic*; there
|
||||
is now one per channel, held in a **dynamic** table with no fixed channel maximum (same
|
||||
reasoning as XLV.2).
|
||||
- **The common channel is a permanent topic**; every VM is subscribed from birth.
|
||||
- **A deny is a NACK.** ACK/NACK are ordinary message types on the existing heat-coupled
|
||||
allocator (tasks 2.2–2.7), so they draw and decay heat like any message.
|
||||
- **Advised, not ruled — open for Captain Bob:** ACK the private-channel open and delivery, not
|
||||
every common-channel message, since ACK-everything roughly doubles message heat draw against
|
||||
the consumption economy (§XL.4).
|
||||
- **Advised, not ruled — open:** who may open a channel with whom is policy and belongs in
|
||||
`ACL.4th` (CLAUDE.md: policy in FORTH, never gated on `zuse_session`); kernel-Hermes should
|
||||
ask, not decide. Where that hook lives must be settled before the grant task is written.
|
||||
|
||||
### XLV.2 — B2 (item 32): the switch table is dynamic, not a constant
|
||||
|
||||
> **`SK_SWITCH_MAX_SLOTS` (16) is not to be fixed and static; it becomes a dynamic component.**
|
||||
|
||||
Precedent already in the tree: Stadium sizes its VM quota table from RAM at boot
|
||||
(`stadium_max_vm_count_val`, kmalloc'd, 2026-08-15). The switch table follows the same pattern.
|
||||
**The concrete sizing rule is not yet specified** and is a task-writing prerequisite.
|
||||
|
||||
### XLV.3 — B4 (item 44): payload bound is one block; larger payloads chunk
|
||||
|
||||
> **Follow the block convention the `*.4th` files use.**
|
||||
|
||||
Read as (confirmed by Captain Bob 2026-09-21): a message payload is bounded to **one block =
|
||||
1024 bytes** (64×16, §XLIV.1), which matches §XLIII.6.1's `INPUT_BUFFER_SIZE − 1` drain limit;
|
||||
anything larger is **chunked across messages**. Chunk framing (sequence/last-chunk marking) is
|
||||
a Phase 3 task-writing prerequisite. Note the 64-char line rule (§XLIV.1) governs *capsule
|
||||
source blocks*; whether it also constrains message payload content is **not** ruled here.
|
||||
|
||||
### XLV.4 — Punch list
|
||||
|
||||
- ✅ **Items 27, 32, 44 — SETTLED** (§XLV.1–.3).
|
||||
- ⬜ **NEW** — ACK cadence (XLV.1); ACL hook for channel-open policy (XLV.1); dynamic switch-table
|
||||
sizing rule (XLV.2); chunk framing (XLV.3). Each blocks its own Phase 3 task, not the phase.
|
||||
- ⬜ **Phase 3 task breakdown** — no tasks are written yet; `FABRIC-3.6.md` still holds the
|
||||
one-line shape from §XXXIV.3, which predates negotiation.
|
||||
|
||||
+12
-7
@@ -732,21 +732,26 @@ Hestia; headless policy intact.
|
||||
|
||||
**Phase 2 is complete (2.1–2.8).** Phase 3 remains blocked on B1, B2, B4.
|
||||
|
||||
## Phase 3 — Cutover — **BLOCKED**
|
||||
## Phase 3 — Cutover — **UNBLOCKED, tasks not yet written**
|
||||
|
||||
**Not buildable until all three clear.** Shape once unblocked (§XXXIV.3): cut over
|
||||
`BLK-ATTACH-EVENT` alone, then remaining types one at a time, under §XXXIV.2's partition rule —
|
||||
one message type owned by exactly one layer, no message shared.
|
||||
|
||||
- [ ] **B1** — **Item 27**: channels — negotiation, or one broadcast membership? (§XXXIII.5
|
||||
recommends the latter; unruled.)
|
||||
- [ ] **B2** — **Item 32**: `SK_SWITCH_MAX_SLOTS` is 16 and §XXXII made the switcher the sole
|
||||
mover of control. Constant bump or table redesign?
|
||||
- [x] **B1** — **CLEARED 2026-09-21 by `FABRIC-3.5.md` §XLV.1**: negotiated pub/sub channels —
|
||||
one common channel, private channels by request/grant/deny, ACK/NACK throughout. Overrules
|
||||
§XXXIII.5. Open sub-items: ACK cadence, ACL hook for channel-open policy.
|
||||
- [x] **B2** — **CLEARED 2026-09-21 by `FABRIC-3.5.md` §XLV.2**: dynamic, not a fixed constant
|
||||
(Stadium-style RAM-derived sizing). Open sub-item: the concrete sizing rule.
|
||||
- [x] **B3** — **CLEARED 2026-09-19 by `FABRIC-3.5.md` §XLIII**: the target drains its own
|
||||
queue at its own outermost interpret checkpoint; kernel-Hermes publishes and never
|
||||
dispatches. Reuses `sk_vm_at_outermost_interpret()` and the Stage 3 checkpoint.
|
||||
- [ ] **B4** — **Item 44**: payload bound or chunking against `INPUT_BUFFER_SIZE` 1025
|
||||
(§XLIII.6.1). Decide before Phase 3.
|
||||
- [x] **B4** — **CLEARED 2026-09-21 by `FABRIC-3.5.md` §XLV.3**: one block (1024 bytes) per
|
||||
message, larger payloads chunked. Open sub-item: chunk framing.
|
||||
|
||||
**All four blockers are cleared, but Phase 3 has no task breakdown yet** — the shape below
|
||||
predates §XLV's negotiation. Writing the task list (and settling the §XLV.4 sub-items it
|
||||
depends on) is the next step, before any Phase 3 code.
|
||||
|
||||
## Phase 4 — Category B strip
|
||||
|
||||
|
||||
Reference in New Issue
Block a user