diff --git a/FABRIC.md b/FABRIC.md index 5e6beec..9bac771 100644 --- a/FABRIC.md +++ b/FABRIC.md @@ -528,22 +528,32 @@ riscv64 timing numbers before and after that fix are not comparable. ### 16.3 The dictionary is already a Stadium -§1 claims the dictionary is the reference implementation. It is stronger than that. -`DictEntry` today carries six of the eight wires in §3 — the two it lacks are `mass`, which -§19.2 added later, and a behaviour tag, since its code field is a raw function pointer -rather than an enumerated tag (§18.3): +§1 claims the dictionary is the reference implementation. It is stronger than that — but not +as strong as an earlier draft of this subsection claimed. Read against `DictEntry` +(`include/vm.h:335-351`): -| §3 wire | Already in `DictEntry` | -|---|---| -| identity | name / `word_id` | -| heat | `physics.*` (Loop #1) | -| TTL | `acl_ttl` | -| pin | `acl_pinned`, plus `WORD_PINNED` / `WORD_FROZEN` | -| link | dictionary chaining | -| code field | literally a function pointer | +| §3 wire | In `DictEntry` | Form | +|---|---|---| +| identity | `word_id` + `name[]` | correct | +| heat | `execution_heat` + `physics` | correct | +| TTL | `acl_ttl` | correct | +| pin | `acl_pinned`, plus `WORD_PINNED` / `WORD_FROZEN` | correct | +| link | `struct DictEntry *link` | **a pointer, not an index** | +| code field | `word_func_t func` | **a raw function pointer, not an enumerated tag** | +| mass | — | absent | +| payload | — (definition body lives outside the entry) | absent | -The dictionary is not *analogous* to a Stadium entry. It is one, already built and already -tested. Everything else is what gets generalized toward it. +**Four wires present in correct form, two present in the wrong form, two absent.** An +earlier draft said "six of eight" and named the missing two as mass and a behaviour tag, +which double-counted the code field and omitted payload. + +The wrong-form pair is the interesting part. `link` being a pointer is precisely what §13 +identifies as *"the single biggest difference between a tractable proof effort and a research +project,"* and the raw function pointer is what §18.3 requires to become a closed tag. + +So the honest claim is weaker than "the dictionary *is* a Stadium entry" and still strong +enough to carry §1: **the dictionary already has the concepts, and two of the eight need to +change form.** Everything else is what gets generalised toward it. **But run §9's admission test on it before moving it in.** Its reap event is the weak wire. Blocks migrate, messages deliver, VMs die by cooling — a dictionary word does not