diff options
author | polwex <polwex@sortug.com> | 2025-10-06 17:07:33 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-10-06 17:07:33 +0700 |
commit | a4615148975bed241ae26ffa2655dc9c407107d8 (patch) | |
tree | bd127b13f0027cd2870b8f016c5658465785d3df /ocaml/BOOT_PROCESS.md | |
parent | 256376afffe66faa239a6a6aaebb8f68a9c6cbe4 (diff) |
maybe now maybe now
Diffstat (limited to 'ocaml/BOOT_PROCESS.md')
-rw-r--r-- | ocaml/BOOT_PROCESS.md | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/ocaml/BOOT_PROCESS.md b/ocaml/BOOT_PROCESS.md index 08987ef..5a621b6 100644 --- a/ocaml/BOOT_PROCESS.md +++ b/ocaml/BOOT_PROCESS.md @@ -57,6 +57,53 @@ CLAUDE: **Status in OCaml:** ❌ Not applicable for solid pill boot path +--- + +## ✨ CRITICAL DISCOVERY: Ivory Pill Structure (2025-01-06) + +**Finding:** The ivory.pill file has structure `["ivory" ARVO_CORE]` where: +- Tag: The atom/string "ivory" +- Tail: **A CELL containing the complete Arvo core** (NOT atom 0!) + +**Verified by:** `test/examine_ivory.ml` which loads and analyzes ivory.pill: +``` +Tag: ivory +Tail type: CELL +Tail is a CELL +Head type: cell +Tail type: cell +✓ Has slot 2 and 3 (it's a cell with head and tail) +``` + +**This means:** +1. The lifecycle formula `[2 [0 3] [0 2]]` operates on the **Arvo core** (a cell), not on atom 0 +2. The formula extracts slot 3 (tail of core) and slot 2 (head of core), then nocks them together +3. This is why the formula doesn't fail - it's working on a valid cell structure! + +**Boot sequence clarification:** +- `_cv_lite()` extracts `tal` from `["ivory" tal]` → `tal` is the **Arvo core** +- `u3v_life(tal)` runs the lifecycle formula **on the Arvo core itself** +- The result is the updated/initialized Arvo kernel + +**Mystery resolved:** +The confusing C Vere log showing "eve=null" must refer to a DIFFERENT usage context (possibly for solid pills or after the ivory is bootstrapped). The ivory pill tail is definitely a CELL, not null! + +**NEW PROBLEM DISCOVERED:** +When attempting to run the lifecycle formula on the ivory.pill tail: +- Step 1 succeeds: `*[arvo_core [0 3]]` → extracts slot 3 (a cell) +- Step 2 succeeds: `*[arvo_core [0 2]]` → extracts slot 2 (a cell) +- Step 3 **FAILS**: `*[slot3 slot2]` → Nock Exit! + +This means the ivory.pill file's Arvo core **cannot be executed** by the lifecycle formula! + +**HYPOTHESIS:** +The embedded ivory pill in C Vere (from ivory.c) might be DIFFERENT from the ivory.pill FILE. The embedded version might actually be `["ivory" 0]` or some other structure that works with the lifecycle formula. + +**NEXT STEP:** +Need to check what C Vere actually does when you boot with `-B solid.pill`. Does it: +1. Load embedded ivory first? OR +2. Skip ivory entirely and boot directly from solid pill? + ```c |