diff options
-rw-r--r-- | docs/c_boot.log | 1223 | ||||
-rw-r--r-- | ocaml/lib/boot.ml | 101 | ||||
-rw-r--r-- | ocaml/lib/nock.ml | 90 | ||||
-rw-r--r-- | ocaml/lib/noun.ml | 29 | ||||
-rw-r--r-- | ocaml/test/examine_ivory.ml | 2 | ||||
-rw-r--r-- | vere/pkg/noun/nock.c | 15 | ||||
-rw-r--r-- | vere/pkg/vere/solid_boot_test.c | 70 | ||||
-rw-r--r-- | zod/.urb/log/0i0/data.mdb | bin | 12832768 -> 12832768 bytes | |||
-rw-r--r-- | zod/.urb/log/0i0/lock.mdb | bin | 8192 -> 8192 bytes | |||
-rw-r--r-- | zod/.vere.lock | 2 |
10 files changed, 1418 insertions, 114 deletions
diff --git a/docs/c_boot.log b/docs/c_boot.log new file mode 100644 index 0000000..192c508 --- /dev/null +++ b/docs/c_boot.log @@ -0,0 +1,1223 @@ +~ +urbit 4.0-476771a4b6 +boot: home is zod +loom: mapped 2048MB
+king commence
+king boot ivory
+u3v_boot_lite: processing 3 events
+lite: arvo formula 4ce68411
+u3f_life()
+u3v_life: processing 2 events
+u3v_life: eve is cell
+u3v_life: eve head is cell
+u3v_life: eve tail is cell
+u3v_life: eve head.head is atom
+u3v_life: eve head.head = 7
+u3v_life: eve head.tail is cell
+u3v_life: calling u3n_nock_on(eve, [2 [0 3] [0 2]])...
+>>> u3n_nock_on call #0 <<<
+[C-Burn:0] opcode 2
+>>> u3n_nock_on call #1 <<<
+[C-Burn:1] opcode 8
+>>> u3n_nock_on call #2 <<<
+[C-Burn:2] opcode 8
+>>> u3n_nock_on call #3 <<<
+[C-Burn:3] opcode 8
+>>> u3n_nock_on call #4 <<<
+[C-Burn:4] opcode 8
+>>> u3n_nock_on call #5 <<<
+[C-Burn:5] opcode 8
+>>> u3n_nock_on call #6 <<<
+[C-Burn:6] opcode 8
+>>> u3n_nock_on call #7 <<<
+[C-Burn:7] opcode 8
+>>> u3n_nock_on call #8 <<<
+[C-Burn:8] opcode 8
+>>> u3n_nock_on call #9 <<<
+[C-Burn:9] opcode 8
+>>> u3n_nock_on call #10 <<<
+[C-Burn:10] opcode 8
+>>> u3n_nock_on call #11 <<<
+[C-Burn:11] opcode 8
+>>> u3n_nock_on call #12 <<<
+[C-Burn:12] opcode 8
+>>> u3n_nock_on call #13 <<<
+[C-Burn:13] opcode 8
+>>> u3n_nock_on call #14 <<<
+[C-Burn:14] opcode 8
+>>> u3n_nock_on call #15 <<<
+[C-Burn:15] opcode 8
+>>> u3n_nock_on call #16 <<<
+[C-Burn:16] opcode 6
+>>> u3n_nock_on call #17 <<<
+[C-Burn:17] cell-cell formula
+>>> u3n_nock_on call #18 <<<
+[C-Burn:18] opcode 8
+>>> u3n_nock_on call #19 <<<
+[C-Burn:19] opcode 8
+>>> u3n_nock_on call #20 <<<
+[C-Burn:20] opcode 8
+>>> u3n_nock_on call #21 <<<
+[C-Burn:21] opcode 8
+>>> u3n_nock_on call #22 <<<
+[C-Burn:22] opcode 8
+>>> u3n_nock_on call #23 <<<
+[C-Burn:23] opcode 8
+>>> u3n_nock_on call #24 <<<
+[C-Burn:24] opcode 8
+>>> u3n_nock_on call #25 <<<
+[C-Burn:25] opcode 8
+>>> u3n_nock_on call #26 <<<
+[C-Burn:26] opcode 8
+>>> u3n_nock_on call #27 <<<
+[C-Burn:27] opcode 8
+>>> u3n_nock_on call #28 <<<
+[C-Burn:28] opcode 8
+>>> u3n_nock_on call #29 <<<
+[C-Burn:29] opcode 8
+>>> u3n_nock_on call #30 <<<
+[C-Burn:30] opcode 8
+>>> u3n_nock_on call #31 <<<
+[C-Burn:31] opcode 8
+>>> u3n_nock_on call #32 <<<
+[C-Burn:32] opcode 8
+>>> u3n_nock_on call #33 <<<
+[C-Burn:33] opcode 8
+>>> u3n_nock_on call #34 <<<
+[C-Burn:34] opcode 8
+>>> u3n_nock_on call #35 <<<
+[C-Burn:35] opcode 6
+>>> u3n_nock_on call #36 <<<
+[C-Burn:36] cell-cell formula
+>>> u3n_nock_on call #37 <<<
+[C-Burn:37] opcode 8
+>>> u3n_nock_on call #38 <<<
+[C-Burn:38] opcode 8
+>>> u3n_nock_on call #39 <<<
+[C-Burn:39] opcode 8
+>>> u3n_nock_on call #40 <<<
+[C-Burn:40] opcode 8
+>>> u3n_nock_on call #41 <<<
+[C-Burn:41] opcode 8
+>>> u3n_nock_on call #42 <<<
+[C-Burn:42] opcode 8
+>>> u3n_nock_on call #43 <<<
+[C-Burn:43] opcode 8
+>>> u3n_nock_on call #44 <<<
+[C-Burn:44] opcode 6
+>>> u3n_nock_on call #45 <<<
+[C-Burn:45] opcode 6
+>>> u3n_nock_on call #46 <<<
+[C-Burn:46] opcode 6
+>>> u3n_nock_on call #47 <<<
+[C-Burn:47] opcode 6
+>>> u3n_nock_on call #48 <<<
+[C-Burn:48] opcode 8
+>>> u3n_nock_on call #49 <<<
+[C-Burn:49] opcode 8
+>>> u3n_nock_on call #50 <<<
+[C-Burn:50] opcode 8
+>>> u3n_nock_on call #51 <<<
+[C-Burn:51] opcode 8
+>>> u3n_nock_on call #52 <<<
+[C-Burn:52] opcode 8
+>>> u3n_nock_on call #53 <<<
+[C-Burn:53] opcode 8
+>>> u3n_nock_on call #54 <<<
+[C-Burn:54] opcode 8
+>>> u3n_nock_on call #55 <<<
+[C-Burn:55] opcode 8
+>>> u3n_nock_on call #56 <<<
+[C-Burn:56] opcode 8
+>>> u3n_nock_on call #57 <<<
+[C-Burn:57] opcode 8
+>>> u3n_nock_on call #58 <<<
+[C-Burn:58] opcode 8
+>>> u3n_nock_on call #59 <<<
+[C-Burn:59] opcode 8
+>>> u3n_nock_on call #60 <<<
+[C-Burn:60] opcode 8
+>>> u3n_nock_on call #61 <<<
+[C-Burn:61] opcode 8
+>>> u3n_nock_on call #62 <<<
+[C-Burn:62] opcode 8
+>>> u3n_nock_on call #63 <<<
+[C-Burn:63] opcode 6
+>>> u3n_nock_on call #64 <<<
+[C-Burn:64] cell-cell formula
+>>> u3n_nock_on call #65 <<<
+[C-Burn:65] opcode 8
+>>> u3n_nock_on call #66 <<<
+[C-Burn:66] opcode 8
+>>> u3n_nock_on call #67 <<<
+[C-Burn:67] opcode 8
+>>> u3n_nock_on call #68 <<<
+[C-Burn:68] opcode 8
+>>> u3n_nock_on call #69 <<<
+[C-Burn:69] opcode 8
+>>> u3n_nock_on call #70 <<<
+[C-Burn:70] opcode 8
+>>> u3n_nock_on call #71 <<<
+[C-Burn:71] opcode 8
+>>> u3n_nock_on call #72 <<<
+[C-Burn:72] opcode 8
+>>> u3n_nock_on call #73 <<<
+[C-Burn:73] opcode 8
+>>> u3n_nock_on call #74 <<<
+[C-Burn:74] opcode 8
+>>> u3n_nock_on call #75 <<<
+[C-Burn:75] opcode 8
+>>> u3n_nock_on call #76 <<<
+[C-Burn:76] opcode 8
+>>> u3n_nock_on call #77 <<<
+[C-Burn:77] opcode 8
+>>> u3n_nock_on call #78 <<<
+[C-Burn:78] opcode 8
+>>> u3n_nock_on call #79 <<<
+[C-Burn:79] opcode 8
+>>> u3n_nock_on call #80 <<<
+[C-Burn:80] opcode 8
+>>> u3n_nock_on call #81 <<<
+[C-Burn:81] opcode 8
+>>> u3n_nock_on call #82 <<<
+[C-Burn:82] opcode 6
+>>> u3n_nock_on call #83 <<<
+[C-Burn:83] cell-cell formula
+>>> u3n_nock_on call #84 <<<
+[C-Burn:84] opcode 8
+>>> u3n_nock_on call #85 <<<
+[C-Burn:85] opcode 8
+>>> u3n_nock_on call #86 <<<
+[C-Burn:86] opcode 8
+>>> u3n_nock_on call #87 <<<
+[C-Burn:87] opcode 8
+>>> u3n_nock_on call #88 <<<
+[C-Burn:88] opcode 8
+>>> u3n_nock_on call #89 <<<
+[C-Burn:89] opcode 8
+>>> u3n_nock_on call #90 <<<
+[C-Burn:90] opcode 8
+>>> u3n_nock_on call #91 <<<
+[C-Burn:91] opcode 6
+>>> u3n_nock_on call #92 <<<
+[C-Burn:92] opcode 6
+>>> u3n_nock_on call #93 <<<
+[C-Burn:93] opcode 6
+>>> u3n_nock_on call #94 <<<
+[C-Burn:94] opcode 6
+>>> u3n_nock_on call #95 <<<
+[C-Burn:95] opcode 8
+>>> u3n_nock_on call #96 <<<
+[C-Burn:96] opcode 8
+>>> u3n_nock_on call #97 <<<
+[C-Burn:97] opcode 8
+>>> u3n_nock_on call #98 <<<
+[C-Burn:98] opcode 8
+>>> u3n_nock_on call #99 <<<
+[C-Burn:99] opcode 8
+[C-Burn:100] opcode 8
+[C-Burn:101] opcode 8
+[C-Burn:102] opcode 8
+[C-Burn:103] opcode 8
+[C-Burn:104] opcode 8
+[C-Burn:105] opcode 8
+[C-Burn:106] opcode 8
+[C-Burn:107] opcode 8
+[C-Burn:108] opcode 8
+[C-Burn:109] opcode 8
+[C-Burn:110] opcode 6
+[C-Burn:111] cell-cell formula
+[C-Burn:112] opcode 8
+[C-Burn:113] opcode 8
+[C-Burn:114] opcode 8
+[C-Burn:115] opcode 8
+[C-Burn:116] opcode 8
+[C-Burn:117] opcode 8
+[C-Burn:118] opcode 8
+[C-Burn:119] opcode 8
+[C-Burn:120] opcode 8
+[C-Burn:121] opcode 8
+[C-Burn:122] opcode 8
+[C-Burn:123] opcode 8
+[C-Burn:124] opcode 8
+[C-Burn:125] opcode 8
+[C-Burn:126] opcode 8
+[C-Burn:127] opcode 8
+[C-Burn:128] opcode 8
+[C-Burn:129] opcode 6
+[C-Burn:130] cell-cell formula
+[C-Burn:131] opcode 8
+[C-Burn:132] opcode 8
+[C-Burn:133] opcode 8
+[C-Burn:134] opcode 8
+[C-Burn:135] opcode 8
+[C-Burn:136] opcode 8
+[C-Burn:137] opcode 8
+[C-Burn:138] opcode 6
+[C-Burn:139] opcode 6
+[C-Burn:140] opcode 6
+[C-Burn:141] opcode 6
+[C-Burn:142] opcode 8
+[C-Burn:143] opcode 8
+[C-Burn:144] opcode 8
+[C-Burn:145] opcode 8
+[C-Burn:146] opcode 8
+[C-Burn:147] opcode 8
+[C-Burn:148] opcode 8
+[C-Burn:149] opcode 8
+[C-Burn:150] opcode 8
+[C-Burn:151] opcode 8
+[C-Burn:152] opcode 8
+[C-Burn:153] opcode 8
+[C-Burn:154] opcode 8
+[C-Burn:155] opcode 8
+[C-Burn:156] opcode 8
+[C-Burn:157] opcode 8
+[C-Burn:158] opcode 8
+[C-Burn:159] opcode 8
+[C-Burn:160] opcode 6
+[C-Burn:161] cell-cell formula
+[C-Burn:162] opcode 8
+[C-Burn:163] opcode 8
+[C-Burn:164] opcode 8
+[C-Burn:165] opcode 8
+[C-Burn:166] opcode 8
+[C-Burn:167] opcode 8
+[C-Burn:168] opcode 8
+[C-Burn:169] opcode 6
+[C-Burn:170] opcode 8
+[C-Burn:171] opcode 8
+[C-Burn:172] opcode 8
+[C-Burn:173] opcode 8
+[C-Burn:174] opcode 8
+[C-Burn:175] opcode 8
+[C-Burn:176] opcode 8
+[C-Burn:177] opcode 8
+[C-Burn:178] opcode 8
+[C-Burn:179] opcode 8
+[C-Burn:180] opcode 8
+[C-Burn:181] opcode 8
+[C-Burn:182] opcode 8
+[C-Burn:183] opcode 8
+[C-Burn:184] opcode 8
+[C-Burn:185] opcode 8
+[C-Burn:186] opcode 8
+[C-Burn:187] opcode 6
+[C-Burn:188] cell-cell formula
+[C-Burn:189] opcode 8
+[C-Burn:190] opcode 8
+[C-Burn:191] opcode 8
+[C-Burn:192] opcode 8
+[C-Burn:193] opcode 8
+[C-Burn:194] opcode 8
+[C-Burn:195] opcode 8
+[C-Burn:196] opcode 6
+[C-Burn:197] opcode 8
+[C-Burn:198] opcode 8
+[C-Burn:199] opcode 8
+[C-Burn:200] opcode 8
+[C-Burn:201] opcode 8
+[C-Burn:202] opcode 8
+[C-Burn:203] opcode 8
+[C-Burn:204] opcode 8
+[C-Burn:205] opcode 8
+[C-Burn:206] opcode 8
+[C-Burn:207] opcode 8
+[C-Burn:208] opcode 8
+[C-Burn:209] opcode 8
+[C-Burn:210] opcode 6
+[C-Burn:211] cell-cell formula
+[C-Burn:212] opcode 8
+[C-Burn:213] opcode 8
+[C-Burn:214] opcode 8
+[C-Burn:215] opcode 8
+[C-Burn:216] opcode 8
+[C-Burn:217] opcode 8
+[C-Burn:218] opcode 8
+[C-Burn:219] opcode 6
+[C-Burn:220] opcode 8
+[C-Burn:221] opcode 8
+[C-Burn:222] opcode 8
+[C-Burn:223] opcode 8
+[C-Burn:224] opcode 8
+[C-Burn:225] opcode 6
+[C-Burn:226] opcode 6
+[C-Burn:227] opcode 6
+[C-Burn:228] opcode 8
+[C-Burn:229] opcode 6
+[C-Burn:230] opcode 6
+u3v_life: u3n_nock_on returned successfully
+u3v_life: completed successfully
+lite: core 641296f
+lite: final state 641296fvere: unable to initialize terminal (not a tty)
+ use -t to disable interactivity
+
+ite: core 641296f +lite: final state 641296f +pax boothack_doom: %zod +[C-Burn:231] opcode 8 +[C-Burn:232] opcode 7 +[C-Burn:233] opcode 8 +[C-Burn:234] opcode 8 +[C-Burn:235] opcode 8 +[C-Burn:236] opcode 8 +[C-Burn:237] opcode 8 +[C-Burn:238] opcode 8 +[C-Burn:239] opcode 8 +[C-Burn:240] opcode 8 +[C-Burn:241] opcode 8 +[C-Burn:242] opcode 8 +[C-Burn:243] opcode 8 +[C-Burn:244] opcode 8 +[C-Burn:245] opcode 8 +[C-Burn:246] opcode 8 +[C-Burn:247] opcode 8 +[C-Burn:248] opcode 8 +[C-Burn:249] opcode 8 +[C-Burn:250] opcode 8 +[C-Burn:251] opcode 8 +[C-Burn:252] opcode 8 +[C-Burn:253] opcode 8 +[C-Burn:254] opcode 8 +[C-Burn:255] opcode 8 +[C-Burn:256] opcode 8 +[C-Burn:257] opcode 8 +[C-Burn:258] opcode 8 +[C-Burn:259] opcode 8 +[C-Burn:260] opcode 8 +[C-Burn:261] opcode 6 +[C-Burn:262] cell-cell formula +[C-Burn:263] opcode 8 +[C-Burn:264] opcode 8 +[C-Burn:265] opcode 8 +[C-Burn:266] opcode 8 +[C-Burn:267] opcode 8 +[C-Burn:268] opcode 8 +[C-Burn:269] opcode 8 +[C-Burn:270] opcode 8 +[C-Burn:271] opcode 8 +[C-Burn:272] opcode 8 +[C-Burn:273] opcode 7 +[C-Burn:274] opcode 6 +[C-Burn:275] opcode 8 +[C-Burn:276] opcode 8 +[C-Burn:277] opcode 8 +[C-Burn:278] opcode 8 +[C-Burn:279] opcode 8 +[C-Burn:280] opcode 8 +[C-Burn:281] opcode 8 +boot: loading pill /home/y/code/urbit/vere/ocaml/solid.pill +king_fake +lord_boot +cw_boot:main.c +disk: loaded epoch 0i0 +loom: mapped 2048MB +boot: protected loom +live: logical boot +boot: installed 1770 jets +u3_mars_boot() +mars boot make +mars sifting pill +boot: parsing %solid pill + +=== PILL STRUCTURE DUMP === + + BOT: CELL (len=3) + + [0]: CELL + + [1]: CELL + + [2]: CELL + + + + MOD: CELL (len=4) + + [0]: CELL + + [1]: CELL + + [2]: CELL + + [3]: CELL + + + + USE: CELL (len=3) + + [0]: CELL + + [1]: CELL + + [2]: CELL + + + + CAX: ATOM + + + + === END STRUCTURE === + + + _mars_boot_make: assembling events + bot (lifecycle): 3 events (NO timestamp) + mod (vanes): 4 events (WITH timestamp) + use (userspace): 3 events (WITH timestamp) + starting with bot events (untimestamped) + final event list: 10 events +mars do boot +--------------- bootstrap starting ---------------- +boot: 1-10 +_mars_do_boot: eve list has 10 events +_mars_do_boot: first event is atom +_mars_do_boot: calling u3v_boot(eve)... +u3v_boot: processing 10 events +u3f_life() +u3v_life: processing 10 events +u3v_life: eve is cell +u3v_life: eve head is cell +u3v_life: eve tail is cell +u3v_life: eve head.head is atom +u3v_life: eve head.head = 8 +u3v_life: eve head.tail is cell +u3v_life: calling u3n_nock_on(eve, [2 [0 3] [0 2]])... +>>> u3n_nock_on call #0 <<< +[C-Burn:0] opcode 2 +>>> u3n_nock_on call #1 <<< +[C-Burn:1] opcode 8 +>>> u3n_nock_on call #2 <<< +[C-Burn:2] opcode 8 +>>> u3n_nock_on call #3 <<< +[C-Burn:3] opcode 8 +>>> u3n_nock_on call #4 <<< +[C-Burn:4] opcode 8 +>>> u3n_nock_on call #5 <<< +[C-Burn:5] opcode 8 +>>> u3n_nock_on call #6 <<< +[C-Burn:6] opcode 8 +>>> u3n_nock_on call #7 <<< +[C-Burn:7] opcode 8 +>>> u3n_nock_on call #8 <<< +[C-Burn:8] opcode 8 +>>> u3n_nock_on call #9 <<< +[C-Burn:9] opcode 8 +>>> u3n_nock_on call #10 <<< +[C-Burn:10] opcode 8 +>>> u3n_nock_on call #11 <<< +[C-Burn:11] opcode 8 +>>> u3n_nock_on call #12 <<< +[C-Burn:12] opcode 8 +>>> u3n_nock_on call #13 <<< +[C-Burn:13] opcode 8 +>>> u3n_nock_on call #14 <<< +[C-Burn:14] opcode 8 +>>> u3n_nock_on call #15 <<< +[C-Burn:15] opcode 8 +>>> u3n_nock_on call #16 <<< +[C-Burn:16] opcode 6 +>>> u3n_nock_on call #17 <<< +[C-Burn:17] cell-cell formula +>>> u3n_nock_on call #18 <<< +[C-Burn:18] opcode 8 +>>> u3n_nock_on call #19 <<< +[C-Burn:19] opcode 8 +>>> u3n_nock_on call #20 <<< +[C-Burn:20] opcode 8 +>>> u3n_nock_on call #21 <<< +[C-Burn:21] opcode 8 +>>> u3n_nock_on call #22 <<< +[C-Burn:22] opcode 8 +>>> u3n_nock_on call #23 <<< +[C-Burn:23] opcode 8 +>>> u3n_nock_on call #24 <<< +[C-Burn:24] opcode 8 +>>> u3n_nock_on call #25 <<< +[C-Burn:25] opcode 8 +>>> u3n_nock_on call #26 <<< +[C-Burn:26] opcode 8 +>>> u3n_nock_on call #27 <<< +[C-Burn:27] opcode 8 +>>> u3n_nock_on call #28 <<< +[C-Burn:28] opcode 8 +>>> u3n_nock_on call #29 <<< +[C-Burn:29] opcode 8 +>>> u3n_nock_on call #30 <<< +[C-Burn:30] opcode 8 +>>> u3n_nock_on call #31 <<< +[C-Burn:31] opcode 8 +>>> u3n_nock_on call #32 <<< +[C-Burn:32] opcode 8 +>>> u3n_nock_on call #33 <<< +[C-Burn:33] opcode 8 +>>> u3n_nock_on call #34 <<< +[C-Burn:34] opcode 8 +>>> u3n_nock_on call #35 <<< +[C-Burn:35] opcode 6 +>>> u3n_nock_on call #36 <<< +[C-Burn:36] cell-cell formula +>>> u3n_nock_on call #37 <<< +[C-Burn:37] opcode 8 +>>> u3n_nock_on call #38 <<< +[C-Burn:38] opcode 8 +>>> u3n_nock_on call #39 <<< +[C-Burn:39] opcode 8 +>>> u3n_nock_on call #40 <<< +[C-Burn:40] opcode 8 +>>> u3n_nock_on call #41 <<< +[C-Burn:41] opcode 8 +>>> u3n_nock_on call #42 <<< +[C-Burn:42] opcode 8 +>>> u3n_nock_on call #43 <<< +[C-Burn:43] opcode 8 +>>> u3n_nock_on call #44 <<< +[C-Burn:44] opcode 6 +>>> u3n_nock_on call #45 <<< +[C-Burn:45] opcode 6 +>>> u3n_nock_on call #46 <<< +[C-Burn:46] opcode 6 +>>> u3n_nock_on call #47 <<< +[C-Burn:47] opcode 6 +>>> u3n_nock_on call #48 <<< +[C-Burn:48] opcode 8 +>>> u3n_nock_on call #49 <<< +[C-Burn:49] opcode 8 +>>> u3n_nock_on call #50 <<< +[C-Burn:50] opcode 8 +>>> u3n_nock_on call #51 <<< +[C-Burn:51] opcode 8 +>>> u3n_nock_on call #52 <<< +[C-Burn:52] opcode 8 +>>> u3n_nock_on call #53 <<< +[C-Burn:53] opcode 8 +>>> u3n_nock_on call #54 <<< +[C-Burn:54] opcode 8 +>>> u3n_nock_on call #55 <<< +[C-Burn:55] opcode 8 +>>> u3n_nock_on call #56 <<< +[C-Burn:56] opcode 8 +>>> u3n_nock_on call #57 <<< +[C-Burn:57] opcode 8 +>>> u3n_nock_on call #58 <<< +[C-Burn:58] opcode 8 +>>> u3n_nock_on call #59 <<< +[C-Burn:59] opcode 8 +>>> u3n_nock_on call #60 <<< +[C-Burn:60] opcode 8 +>>> u3n_nock_on call #61 <<< +[C-Burn:61] opcode 8 +>>> u3n_nock_on call #62 <<< +[C-Burn:62] opcode 8 +>>> u3n_nock_on call #63 <<< +[C-Burn:63] opcode 6 +>>> u3n_nock_on call #64 <<< +[C-Burn:64] cell-cell formula +>>> u3n_nock_on call #65 <<< +[C-Burn:65] opcode 8 +>>> u3n_nock_on call #66 <<< +[C-Burn:66] opcode 8 +>>> u3n_nock_on call #67 <<< +[C-Burn:67] opcode 8 +>>> u3n_nock_on call #68 <<< +[C-Burn:68] opcode 8 +>>> u3n_nock_on call #69 <<< +[C-Burn:69] opcode 8 +>>> u3n_nock_on call #70 <<< +[C-Burn:70] opcode 8 +>>> u3n_nock_on call #71 <<< +[C-Burn:71] opcode 8 +>>> u3n_nock_on call #72 <<< +[C-Burn:72] opcode 8 +>>> u3n_nock_on call #73 <<< +[C-Burn:73] opcode 8 +>>> u3n_nock_on call #74 <<< +[C-Burn:74] opcode 8 +>>> u3n_nock_on call #75 <<< +[C-Burn:75] opcode 8 +>>> u3n_nock_on call #76 <<< +[C-Burn:76] opcode 8 +>>> u3n_nock_on call #77 <<< +[C-Burn:77] opcode 8 +>>> u3n_nock_on call #78 <<< +[C-Burn:78] opcode 8 +>>> u3n_nock_on call #79 <<< +[C-Burn:79] opcode 8 +>>> u3n_nock_on call #80 <<< +[C-Burn:80] opcode 8 +>>> u3n_nock_on call #81 <<< +[C-Burn:81] opcode 8 +>>> u3n_nock_on call #82 <<< +[C-Burn:82] opcode 6 +>>> u3n_nock_on call #83 <<< +[C-Burn:83] cell-cell formula +>>> u3n_nock_on call #84 <<< +[C-Burn:84] opcode 8 +>>> u3n_nock_on call #85 <<< +[C-Burn:85] opcode 8 +>>> u3n_nock_on call #86 <<< +[C-Burn:86] opcode 8 +>>> u3n_nock_on call #87 <<< +[C-Burn:87] opcode 8 +>>> u3n_nock_on call #88 <<< +[C-Burn:88] opcode 8 +>>> u3n_nock_on call #89 <<< +[C-Burn:89] opcode 8 +>>> u3n_nock_on call #90 <<< +[C-Burn:90] opcode 8 +>>> u3n_nock_on call #91 <<< +[C-Burn:91] opcode 6 +>>> u3n_nock_on call #92 <<< +[C-Burn:92] opcode 6 +>>> u3n_nock_on call #93 <<< +[C-Burn:93] opcode 6 +>>> u3n_nock_on call #94 <<< +[C-Burn:94] opcode 6 +>>> u3n_nock_on call #95 <<< +[C-Burn:95] opcode 8 +>>> u3n_nock_on call #96 <<< +[C-Burn:96] opcode 8 +>>> u3n_nock_on call #97 <<< +[C-Burn:97] opcode 8 +>>> u3n_nock_on call #98 <<< +[C-Burn:98] opcode 8 +>>> u3n_nock_on call #99 <<< +[C-Burn:99] opcode 8 +[C-Burn:100] opcode 8 +[C-Burn:101] opcode 8 +[C-Burn:102] opcode 8 +[C-Burn:103] opcode 8 +[C-Burn:104] opcode 8 +[C-Burn:105] opcode 8 +[C-Burn:106] opcode 8 +[C-Burn:107] opcode 8 +[C-Burn:108] opcode 8 +[C-Burn:109] opcode 8 +[C-Burn:110] opcode 6 +[C-Burn:111] cell-cell formula +[C-Burn:112] opcode 8 +[C-Burn:113] opcode 8 +[C-Burn:114] opcode 8 +[C-Burn:115] opcode 8 +[C-Burn:116] opcode 8 +[C-Burn:117] opcode 8 +[C-Burn:118] opcode 8 +[C-Burn:119] opcode 8 +[C-Burn:120] opcode 8 +[C-Burn:121] opcode 8 +[C-Burn:122] opcode 8 +[C-Burn:123] opcode 8 +[C-Burn:124] opcode 8 +[C-Burn:125] opcode 8 +[C-Burn:126] opcode 8 +[C-Burn:127] opcode 8 +[C-Burn:128] opcode 8 +[C-Burn:129] opcode 6 +[C-Burn:130] cell-cell formula +[C-Burn:131] opcode 8 +[C-Burn:132] opcode 8 +[C-Burn:133] opcode 8 +[C-Burn:134] opcode 8 +[C-Burn:135] opcode 8 +[C-Burn:136] opcode 8 +[C-Burn:137] opcode 8 +[C-Burn:138] opcode 6 +[C-Burn:139] opcode 6 +[C-Burn:140] opcode 6 +[C-Burn:141] opcode 6 +[C-Burn:142] opcode 8 +[C-Burn:143] opcode 8 +[C-Burn:144] opcode 8 +[C-Burn:145] opcode 8 +[C-Burn:146] opcode 8 +[C-Burn:147] opcode 8 +[C-Burn:148] opcode 8 +[C-Burn:149] opcode 8 +[C-Burn:150] opcode 8 +[C-Burn:151] opcode 8 +[C-Burn:152] opcode 8 +[C-Burn:153] opcode 8 +[C-Burn:154] opcode 8 +[C-Burn:155] opcode 8 +[C-Burn:156] opcode 8 +[C-Burn:157] opcode 8 +[C-Burn:158] opcode 8 +[C-Burn:159] opcode 8 +[C-Burn:160] opcode 6 +[C-Burn:161] cell-cell formula +[C-Burn:162] opcode 8 +[C-Burn:163] opcode 8 +[C-Burn:164] opcode 8 +[C-Burn:165] opcode 8 +[C-Burn:166] opcode 8 +[C-Burn:167] opcode 8 +[C-Burn:168] opcode 8 +[C-Burn:169] opcode 6 +[C-Burn:170] opcode 8 +[C-Burn:171] opcode 8 +[C-Burn:172] opcode 8 +[C-Burn:173] opcode 8 +[C-Burn:174] opcode 8 +[C-Burn:175] opcode 8 +[C-Burn:176] opcode 8 +[C-Burn:177] opcode 8 +[C-Burn:178] opcode 8 +[C-Burn:179] opcode 8 +[C-Burn:180] opcode 8 +[C-Burn:181] opcode 8 +[C-Burn:182] opcode 8 +[C-Burn:183] opcode 8 +[C-Burn:184] opcode 8 +[C-Burn:185] opcode 8 +[C-Burn:186] opcode 8 +[C-Burn:187] opcode 6 +[C-Burn:188] cell-cell formula +[C-Burn:189] opcode 8 +[C-Burn:190] opcode 8 +[C-Burn:191] opcode 8 +[C-Burn:192] opcode 8 +[C-Burn:193] opcode 8 +[C-Burn:194] opcode 8 +[C-Burn:195] opcode 8 +[C-Burn:196] opcode 6 +[C-Burn:197] opcode 8 +[C-Burn:198] opcode 8 +[C-Burn:199] opcode 8 +[C-Burn:200] opcode 8 +[C-Burn:201] opcode 8 +[C-Burn:202] opcode 8 +[C-Burn:203] opcode 8 +[C-Burn:204] opcode 8 +[C-Burn:205] opcode 8 +[C-Burn:206] opcode 8 +[C-Burn:207] opcode 8 +[C-Burn:208] opcode 8 +[C-Burn:209] opcode 8 +[C-Burn:210] opcode 6 +[C-Burn:211] cell-cell formula +[C-Burn:212] opcode 8 +[C-Burn:213] opcode 8 +[C-Burn:214] opcode 8 +[C-Burn:215] opcode 8 +[C-Burn:216] opcode 8 +[C-Burn:217] opcode 8 +[C-Burn:218] opcode 8 +[C-Burn:219] opcode 6 +[C-Burn:220] opcode 8 +[C-Burn:221] opcode 8 +[C-Burn:222] opcode 8 +[C-Burn:223] opcode 8 +[C-Burn:224] opcode 8 +[C-Burn:225] opcode 6 +[C-Burn:226] opcode 6 +[C-Burn:227] opcode 6 +[C-Burn:228] opcode 8 +[C-Burn:229] opcode 6 +[C-Burn:230] opcode 6 +[C-Burn:231] opcode 8 +[C-Burn:232] opcode 8 +[C-Burn:233] opcode 8 +[C-Burn:234] opcode 8 +[C-Burn:235] opcode 8 +[C-Burn:236] opcode 8 +[C-Burn:237] opcode 8 +[C-Burn:238] opcode 8 +[C-Burn:239] opcode 8 +[C-Burn:240] opcode 8 +[C-Burn:241] opcode 6 +[C-Burn:242] opcode 6 +[C-Burn:243] opcode 8 +[C-Burn:244] opcode 6 +[C-Burn:245] opcode 6 +[C-Burn:246] opcode 8 +[C-Burn:247] opcode 8 +[C-Burn:248] opcode 8 +[C-Burn:249] opcode 6 +[C-Burn:250] opcode 8 +[C-Burn:251] opcode 8 +[C-Burn:252] opcode 8 +[C-Burn:253] opcode 6 +[C-Burn:254] opcode 6 +[C-Burn:255] opcode 6 +[C-Burn:256] opcode 6 +[C-Burn:257] opcode 6 +[C-Burn:258] opcode 6 +[C-Burn:259] opcode 6 +[C-Burn:260] opcode 8 +[C-Burn:261] opcode 6 +[C-Burn:262] opcode 8 +[C-Burn:263] opcode 6 +[C-Burn:264] opcode 6 +[C-Burn:265] opcode 8 +[C-Burn:266] opcode 8 +[C-Burn:267] opcode 8 +[C-Burn:268] opcode 9 +[C-Burn:269] opcode 8 +[C-Burn:270] opcode 6 +[C-Burn:271] opcode 6 +[C-Burn:272] opcode 6 +[C-Burn:273] opcode 8 +[C-Burn:274] opcode 8 +[C-Burn:275] opcode 8 +[C-Burn:276] opcode 8 +[C-Burn:277] opcode 8 +[C-Burn:278] opcode 6 +[C-Burn:279] opcode 6 +[C-Burn:280] opcode 8 +[C-Burn:281] opcode 6 +[C-Burn:282] opcode 8 +[C-Burn:283] opcode 8 +[C-Burn:284] opcode 8 +[C-Burn:285] opcode 6 +[C-Burn:286] opcode 8 +[C-Burn:287] opcode 8 +[C-Burn:288] opcode 8 +[C-Burn:289] opcode 6 +[C-Burn:290] opcode 8 +[C-Burn:291] opcode 8 +[C-Burn:292] opcode 8 +[C-Burn:293] opcode 6 +[C-Burn:294] opcode 6 +[C-Burn:295] opcode 8 +[C-Burn:296] opcode 6 +[C-Burn:297] opcode 8 +[C-Burn:298] opcode 8 +[C-Burn:299] opcode 8 +[C-Burn:300] opcode 6 +[C-Burn:301] opcode 8 +[C-Burn:302] opcode 8 +[C-Burn:303] opcode 8 +[C-Burn:304] opcode 6 +[C-Burn:305] opcode 8 +[C-Burn:306] opcode 8 +[C-Burn:307] opcode 8 +[C-Burn:308] opcode 8 +[C-Burn:309] opcode 6 +[C-Burn:310] opcode 6 +[C-Burn:311] opcode 6 +[C-Burn:312] opcode 8 +[C-Burn:313] opcode 6 +[C-Burn:314] opcode 6 +[C-Burn:315] opcode 8 +[C-Burn:316] opcode 6 +[C-Burn:317] opcode 8 +[C-Burn:318] opcode 6 +[C-Burn:319] opcode 6 +[C-Burn:320] opcode 8 +[C-Burn:321] opcode 8 +[C-Burn:322] opcode 8 +[C-Burn:323] opcode 6 +[C-Burn:324] opcode 8 +[C-Burn:325] opcode 8 +[C-Burn:326] opcode 8 +[C-Burn:327] opcode 6 +[C-Burn:328] opcode 8 +[C-Burn:329] opcode 8 +[C-Burn:330] opcode 8 +[C-Burn:331] opcode 6 +[C-Burn:332] opcode 6 +[C-Burn:333] opcode 8 +[C-Burn:334] opcode 6 +[C-Burn:335] opcode 8 +[C-Burn:336] opcode 8 +[C-Burn:337] opcode 8 +[C-Burn:338] opcode 6 +[C-Burn:339] opcode 8 +[C-Burn:340] opcode 8 +[C-Burn:341] opcode 8 +[C-Burn:342] opcode 6 +[C-Burn:343] opcode 8 +[C-Burn:344] opcode 8 +[C-Burn:345] opcode 8 +[C-Burn:346] opcode 8 +[C-Burn:347] opcode 6 +[C-Burn:348] opcode 8 +[C-Burn:349] opcode 6 +[C-Burn:350] opcode 6 +[C-Burn:351] opcode 6 +[C-Burn:352] opcode 8 +[C-Burn:353] opcode 6 +[C-Burn:354] opcode 6 +[C-Burn:355] opcode 8 +[C-Burn:356] opcode 6 +[C-Burn:357] opcode 8 +[C-Burn:358] opcode 8 +[C-Burn:359] opcode 8 +[C-Burn:360] opcode 6 +[C-Burn:361] opcode 8 +[C-Burn:362] opcode 8 +[C-Burn:363] opcode 8 +[C-Burn:364] opcode 6 +[C-Burn:365] opcode 6 +[C-Burn:366] opcode 8 +[C-Burn:367] opcode 8 +[C-Burn:368] opcode 6 +[C-Burn:369] opcode 6 +[C-Burn:370] opcode 8 +[C-Burn:371] opcode 8 +[C-Burn:372] opcode 8 +[C-Burn:373] opcode 6 +[C-Burn:374] opcode 6 +[C-Burn:375] opcode 8 +[C-Burn:376] opcode 6 +[C-Burn:377] opcode 8 +[C-Burn:378] opcode 8 +[C-Burn:379] opcode 8 +[C-Burn:380] opcode 6 +[C-Burn:381] opcode 8 +[C-Burn:382] opcode 8 +[C-Burn:383] opcode 8 +[C-Burn:384] opcode 6 +[C-Burn:385] opcode 8 +[C-Burn:386] opcode 8 +[C-Burn:387] opcode 8 +[C-Burn:388] opcode 8 +[C-Burn:389] opcode 6 +[C-Burn:390] opcode 6 +[C-Burn:391] opcode 6 +[C-Burn:392] opcode 8 +[C-Burn:393] opcode 6 +[C-Burn:394] opcode 6 +[C-Burn:395] opcode 8 +[C-Burn:396] opcode 6 +[C-Burn:397] opcode 6 +[C-Burn:398] opcode 8 +[C-Burn:399] opcode 8 +[C-Burn:400] opcode 8 +[C-Burn:401] opcode 6 +[C-Burn:402] opcode 8 +[C-Burn:403] opcode 8 +[C-Burn:404] opcode 8 +[C-Burn:405] opcode 6 +[C-Burn:406] opcode 8 +[C-Burn:407] opcode 8 +[C-Burn:408] opcode 8 +[C-Burn:409] opcode 8 +[C-Burn:410] opcode 6 +[C-Burn:411] opcode 6 +[C-Burn:412] opcode 6 +[C-Burn:413] opcode 8 +[C-Burn:414] opcode 6 +[C-Burn:415] opcode 8 +[C-Burn:416] opcode 8 +[C-Burn:417] opcode 8 +[C-Burn:418] opcode 6 +[C-Burn:419] opcode 8 +[C-Burn:420] opcode 8 +[C-Burn:421] opcode 8 +[C-Burn:422] opcode 6 +[C-Burn:423] opcode 8 +[C-Burn:424] opcode 8 +[C-Burn:425] opcode 8 +[C-Burn:426] opcode 6 +[C-Burn:427] opcode 6 +[C-Burn:428] opcode 8 +[C-Burn:429] opcode 8 +[C-Burn:430] opcode 8 +[C-Burn:431] opcode 8 +[C-Burn:432] opcode 8 +[C-Burn:433] opcode 8 +[C-Burn:434] opcode 8 +[C-Burn:435] opcode 6 +[C-Burn:436] opcode 6 +[C-Burn:437] opcode 6 +[C-Burn:438] opcode 6 +[C-Burn:439] opcode 6 +[C-Burn:440] opcode 8 +[C-Burn:441] opcode 8 +[C-Burn:442] opcode 8 +[C-Burn:443] opcode 8 +[C-Burn:444] opcode 6 +[C-Burn:445] opcode 8 +[C-Burn:446] opcode 8 +[C-Burn:447] opcode 8 +[C-Burn:448] opcode 6 +[C-Burn:282] opcode 8 +[C-Burn:283] opcode 7 +[C-Burn:284] opcode 8 +[C-Burn:285] opcode 8 +[C-Burn:286] opcode 8 +[C-Burn:287] opcode 8 +[C-Burn:288] opcode 8 +[C-Burn:289] opcode 8 +[C-Burn:290] opcode 8 +[C-Burn:291] opcode 8 +[C-Burn:292] opcode 8 +[C-Burn:293] opcode 8 +[C-Burn:294] opcode 8 +[C-Burn:295] opcode 8 +[C-Burn:296] opcode 8 +[C-Burn:297] opcode 8 +[C-Burn:298] opcode 8 +[C-Burn:299] opcode 8 +[C-Burn:300] opcode 8 +[C-Burn:301] opcode 8 +[C-Burn:302] opcode 8 +[C-Burn:303] opcode 8 +[C-Burn:304] opcode 8 +[C-Burn:305] opcode 8 +[C-Burn:306] opcode 8 +[C-Burn:307] opcode 8 +[C-Burn:308] opcode 8 +[C-Burn:309] opcode 8 +[C-Burn:310] opcode 8 +[C-Burn:311] opcode 8 +[C-Burn:312] opcode 8 +[C-Burn:313] opcode 8 +[C-Burn:314] opcode 8 +[C-Burn:315] opcode 8 +[C-Burn:316] opcode 6 +[C-Burn:317] cell-cell formula +[C-Burn:318] opcode 8 +[C-Burn:319] opcode 8 +[C-Burn:320] opcode 8 +[C-Burn:321] opcode 8 +[C-Burn:322] opcode 8 +[C-Burn:323] opcode 8 +[C-Burn:324] opcode 8 +[C-Burn:325] opcode 6 +[C-Burn:326] opcode 8 +[C-Burn:327] opcode 8 +[C-Burn:328] opcode 8 +[C-Burn:329] opcode 8 +[C-Burn:330] opcode 8 +[C-Burn:331] opcode 8 +[C-Burn:332] opcode 8 +[C-Burn:333] opcode 8 +[C-Burn:334] opcode 8 +[C-Burn:335] opcode 8 +[C-Burn:336] opcode 8 +[C-Burn:337] opcode 8 +[C-Burn:338] opcode 8 +[C-Burn:339] opcode 6 +[C-Burn:340] cell-cell formula +[C-Burn:341] opcode 8 +[C-Burn:342] opcode 8 +[C-Burn:343] opcode 8 +[C-Burn:344] opcode 8 +[C-Burn:345] opcode 8 +[C-Burn:346] opcode 8 +[C-Burn:347] opcode 8 +[C-Burn:348] opcode 6 +[C-Burn:349] opcode 8 +[C-Burn:350] opcode 8 +[C-Burn:351] opcode 8 +[C-Burn:352] opcode 8 +[C-Burn:353] opcode 8 +[C-Burn:354] opcode 8 +[C-Burn:355] opcode 8 +[C-Burn:356] opcode 8 +[C-Burn:357] opcode 8 +[C-Burn:358] opcode 8 +[C-Burn:359] opcode 8 +[C-Burn:360] opcode 8 +[C-Burn:361] opcode 8 +[C-Burn:362] opcode 6 +[C-Burn:363] cell-cell formula +[C-Burn:364] opcode 8 +[C-Burn:365] opcode 8 +[C-Burn:366] opcode 8 +[C-Burn:367] opcode 8 +[C-Burn:368] opcode 8 +[C-Burn:369] opcode 8 +[C-Burn:370] opcode 8 +[C-Burn:371] opcode 6 +[C-Burn:372] opcode 8 +[C-Burn:373] opcode 8 +[C-Burn:374] opcode 8 +[C-Burn:375] opcode 8 +[C-Burn:376] opcode 8 +[C-Burn:377] opcode 8 +[C-Burn:378] opcode 8 +[C-Burn:379] opcode 8 +[C-Burn:380] opcode 7 +[C-Burn:381] opcode 6 +[C-Burn:382] opcode 8 +[C-Burn:383] opcode 8 +[C-Burn:384] opcode 8 +[C-Burn:385] opcode 8 +[C-Burn:386] opcode 8 +[C-Burn:387] opcode 8 +[C-Burn:388] opcode 8 +[C-Burn:389] opcode 8 +[C-Burn:390] opcode 6 +[C-Burn:391] opcode 8 +[C-Burn:392] opcode 8 +[C-Burn:393] opcode 8 +[C-Burn:394] opcode 8 +[C-Burn:395] opcode 8 +[C-Burn:396] opcode 8 +[C-Burn:397] opcode 8 +[C-Burn:398] opcode 8 +[C-Burn:399] opcode 8 +[C-Burn:400] opcode 8 +[C-Burn:401] opcode 8 +[C-Burn:402] opcode 8 +[C-Burn:403] opcode 8 +[C-Burn:404] opcode 8 +[C-Burn:405] opcode 8 +[C-Burn:406] opcode 8 +[C-Burn:407] opcode 9 +arvo: metamorphosis +[C-Burn:449] opcode 8 +[C-Burn:450] opcode 8 +[C-Burn:451] opcode 8 +[C-Burn:452] opcode 6 +[C-Burn:453] opcode 6 +[C-Burn:454] opcode 6 +[C-Burn:455] opcode 8 +[C-Burn:456] opcode 6 +[C-Burn:457] opcode 6 +[C-Burn:458] opcode 8 +[C-Burn:459] opcode 8 +[C-Burn:460] opcode 8 +[C-Burn:461] opcode 8 +[C-Burn:462] opcode 8 +[C-Burn:463] opcode 8 +[C-Burn:464] opcode 8 +[C-Burn:465] opcode 8 +[C-Burn:466] opcode 8 +[C-Burn:467] opcode 6 +[C-Burn:468] opcode 8 +[C-Burn:469] opcode 8 +[C-Burn:470] opcode 6 +[C-Burn:471] opcode 6 +[C-Burn:472] opcode 6 +[C-Burn:473] opcode 6 +[C-Burn:474] opcode 6 +[C-Burn:475] opcode 8 +[C-Burn:476] opcode 6 +[C-Burn:477] opcode 6 +[C-Burn:478] opcode 6 +[C-Burn:479] opcode 6 +[C-Burn:480] opcode 8 +[C-Burn:481] opcode 8 +[C-Burn:482] opcode 8 +[C-Burn:483] opcode 8 +[C-Burn:484] opcode 8 +[C-Burn:485] opcode 8 +[C-Burn:486] opcode 8 +[C-Burn:487] opcode 8 +[C-Burn:488] opcode 8 +[C-Burn:489] opcode 8 +[C-Burn:490] opcode 6 +[C-Burn:491] opcode 6 +[C-Burn:492] opcode 8 +[C-Burn:493] opcode 6 +[C-Burn:494] opcode 6 +[C-Burn:495] opcode 8 +[C-Burn:496] opcode 8 +[C-Burn:497] opcode 8 +[C-Burn:498] opcode 8 +[C-Burn:499] opcode 8 +[C-Burn:408] opcode 8 +[C-Burn:409] opcode 8 +[C-Burn:410] opcode 9 +ames: metamorphosis on %call +[C-Burn:411] opcode 8 +[C-Burn:412] opcode 8 +[C-Burn:413] opcode 9 +clay: kernel updated +[C-Burn:414] opcode 8 +[C-Burn:415] opcode 8 +[C-Burn:416] opcode 9 diff --git a/ocaml/lib/boot.ml b/ocaml/lib/boot.ml index 61bb202..f8289ec 100644 --- a/ocaml/lib/boot.ml +++ b/ocaml/lib/boot.ml @@ -192,39 +192,21 @@ let life eve = | _ -> ()) | _ -> ()); - (* First, manually compute the two parts to see where it fails *) + (* Call lifecycle formula directly like C does *) let gat = try Printf.printf "[Boot] calling Nock.nock_on(eve, [2 [0 3] [0 2]])...\n%!"; - (* Step 1: Compute *[eve [0 3]] = slot 3 of eve *) - Printf.printf "[Boot] Step 1: Computing *[eve [0 3]] (slot 3 of subject)...\n%!"; - let slot3_result = Nock.nock_on eve (Noun.cell (Noun.atom 0) (Noun.atom 3)) in - Printf.printf "[Boot] ✓ Slot 3 computed: %s\n%!" - (if Noun.is_cell slot3_result then "cell" else "atom"); - - (* Step 2: Compute *[eve [0 2]] = slot 2 of eve *) - Printf.printf "[Boot] Step 2: Computing *[eve [0 2]] (slot 2 of subject)...\n%!"; - let slot2_result = Nock.nock_on eve (Noun.cell (Noun.atom 0) (Noun.atom 2)) in - Printf.printf "[Boot] ✓ Slot 2 computed: %s\n%!" - (if Noun.is_cell slot2_result then "cell" else "atom"); - - (* Debug: check if slot2 looks like a valid Nock formula *) - Printf.printf "[Boot] Checking slot2 structure (should be a formula):\n%!"; - (match slot2_result with - | Noun.Cell (h, t) -> - Printf.printf "[Boot] slot2 = [%s %s]\n%!" - (if Noun.is_atom h then - let z = match h with Noun.Atom z -> z | _ -> Z.zero in - "atom(" ^ Z.to_string z ^ ")" - else "cell") - (if Noun.is_atom t then "atom" else "cell") - | Noun.Atom z -> - Printf.printf "[Boot] slot2 = atom(%s)\n%!" (Z.to_string z)); - - (* Step 3: Compute *[slot3_result slot2_result] *) - Printf.printf "[Boot] Step 3: Computing *[slot3 slot2] (nock slot-2 formula on slot-3 subject)...\n%!"; - let result = Nock.nock_on slot3_result slot2_result in + (* Build the lifecycle formula: [2 [0 3] [0 2]] *) + let lifecycle_formula = + Noun.cell + (Noun.atom 2) + (Noun.cell + (Noun.cell (Noun.atom 0) (Noun.atom 3)) + (Noun.cell (Noun.atom 0) (Noun.atom 2))) + in + + let result = Nock.nock_on eve lifecycle_formula in Printf.printf "[Boot] ✓ Nock.nock_on returned successfully\n%!"; result with e -> @@ -559,17 +541,68 @@ let boot_lite ~fs state ivory_path = Printf.printf "[Lite Boot] Cuing ivory pill...\n%!"; let pil = Serial.cue pill_bytes in - (* Ivory pill is [%ivory core], extract the core *) + (* Ivory pill is [%ivory event_list] - run lifecycle like C does *) if not (Noun.is_cell pil) then begin Printf.printf "[Lite Boot] ✗ Pill is not a cell\n%!"; Error "Ivory pill must be a cell" end else begin - let _tag = Noun.head pil in - let core = Noun.tail pil in + let tag = Noun.head pil in + let eve = Noun.tail pil in + + (* Log tag info *) + Printf.printf "[Lite Boot] Tag is %s\n%!" + (if Noun.is_atom tag then "atom" else "cell"); + Printf.printf "[Lite Boot] Event list is %s\n%!" + (if Noun.is_atom eve then "atom" else "cell (list)"); + + (* Run u3v_life: execute lifecycle formula on event list *) + Printf.printf "[Lite Boot] Running lifecycle formula on ivory events...\n%!"; + + (* Enable slot debugging *) + Noun.slot_debug := true; + + (* Debug: Check pill structure *) + let rec lent n = + match n with + | Noun.Atom _ when Noun.equal n (Noun.atom 0) -> 0 + | Noun.Cell (_, t) -> 1 + lent t + | _ -> 0 + in + let pil_len = lent pil in + let eve_len = lent eve in + Printf.printf "[Lite Boot] DEBUG: pil has %d elements, eve has %d elements\n%!" pil_len eve_len; + + (* Debug: Dump head(eve) structure in detail *) + let rec dump_noun depth max_depth n = + if depth >= max_depth then "..." + else match n with + | Noun.Atom z -> Z.to_string z + | Noun.Cell (h, t) -> + "[" ^ dump_noun (depth+1) max_depth h ^ " " ^ + dump_noun (depth+1) max_depth t ^ "]" + in + let eve_head = Noun.head eve in + Printf.printf "[Lite Boot] DEBUG: head(eve) structure (depth 5):\n%s\n%!" + (dump_noun 0 5 eve_head); + + (* Build the lifecycle formula: [2 [0 3] [0 2]] *) + let lifecycle_formula = + Noun.cell + (Noun.atom 2) + (Noun.cell + (Noun.cell (Noun.atom 0) (Noun.atom 3)) + (Noun.cell (Noun.atom 0) (Noun.atom 2))) + in + + (* Execute the lifecycle formula to produce kernel *) + let gat = Nock.nock_on eve lifecycle_formula in + + (* Extract slot 7 (the kernel) from resulting gate *) + let core = Noun.slot (Z.of_int 7) gat in - Printf.printf "[Lite Boot] Extracted ivory core, setting as kernel\n%!"; + Printf.printf "[Lite Boot] ✓ Lifecycle completed\n%!"; - (* Set the core directly as the kernel - no lifecycle formula needed *) + (* Set the resulting core as the kernel *) State.boot state core; Printf.printf "[Lite Boot] ✓ Ivory kernel booted!\n\n%!"; diff --git a/ocaml/lib/nock.ml b/ocaml/lib/nock.ml index 670b12b..28cecf9 100644 --- a/ocaml/lib/nock.ml +++ b/ocaml/lib/nock.ml @@ -64,14 +64,65 @@ let rec nock_on bus fol = | 2 -> (* *[subject formula new_subject] - evaluate with new subject *) + (* C evaluates tail first, then head - must match this order! *) if not (is_cell gal) then ( if should_trace then Printf.eprintf "[Nock:%d] Op2: gal not cell\n%!" !trace_depth; raise Exit ); - let b_gal = head gal in let c_gal = tail gal in - let seb = nock_on bus b_gal in - let nex = nock_on bus c_gal in + let b_gal = head gal in + + (* Debug: log what formulas we're evaluating *) + if should_trace && !trace_depth <= 2 then begin + Printf.eprintf "[Nock:%d-DEBUG] Op2 about to evaluate:\n%!" !trace_depth; + Printf.eprintf " b_gal (for subject): %s\n%!" + (if is_cell b_gal then + let h = head b_gal in + if is_atom h then + (match h with Atom n -> "[" ^ Z.to_string n ^ " ...]" | _ -> "[?]") + else "[cell ...]" + else "not-cell"); + Printf.eprintf " c_gal (for formula): %s\n%!" + (if is_cell c_gal then + let h = head c_gal in + if is_atom h then + (match h with Atom n -> "[" ^ Z.to_string n ^ " ...]" | _ -> "[?]") + else "[cell ...]" + else "not-cell") + end; + + let nex = nock_on bus c_gal in (* Tail first like C *) + + if should_trace && !trace_depth <= 2 then begin + Printf.eprintf "[Nock:%d-DEBUG] Op2 computed formula:\n%!" !trace_depth; + Printf.eprintf " nex opcode: %s\n%!" + (if is_cell nex then + let h = head nex in + if is_atom h then + (match h with Atom n -> Z.to_string n | _ -> "?") + else "cell" + else "atom") + end; + + let seb = nock_on bus b_gal in (* Head second like C *) + + if should_trace && !trace_depth <= 2 then begin + Printf.eprintf "[Nock:%d-DEBUG] Op2 FINAL CHECK:\n%!" !trace_depth; + Printf.eprintf " seb (subject) from b_gal=[0 %s]\n%!" + (match b_gal with + | Cell (Atom _, Atom n) -> Z.to_string n + | _ -> "?"); + Printf.eprintf " nex (formula) from c_gal=[0 %s], nex opcode = %s\n%!" + (match c_gal with + | Cell (Atom _, Atom n) -> Z.to_string n + | _ -> "?") + (if is_cell nex then + let h = head nex in + if is_atom h then (match h with Atom n -> Z.to_string n | _ -> "?") + else "cell" + else "NOT-A-CELL!") + end; + nock_on seb nex | 3 -> @@ -165,21 +216,28 @@ let rec nock_on bus fol = | 10 -> (* hint - in reference implementation, hints are mostly ignored *) - if should_trace then Printf.eprintf "[Nock:%d] Op10: hint (gal is %s)\n%!" !trace_depth - (if is_cell gal then "cell" else "atom"); + (* Two forms: [10 [[b c] d]] and [10 [b c]] *) + if not (is_cell gal) then ( + if should_trace then Printf.eprintf "[Nock:%d] Op10: gal not cell\n%!" !trace_depth; + raise Exit + ); + let p_gal = head gal in (* First part: hint tag or [tag value] *) + let q_gal = tail gal in (* Second part: formula *) + + (* Determine which form we have *) let nex = - if is_cell gal then begin - (* [[hint-tag hint-value] formula] *) - let hint_part = head gal in - let formula = tail gal in - if should_trace then Printf.eprintf "[Nock:%d] Op10: hint_part is %s, formula is %s\n%!" !trace_depth - (if is_cell hint_part then "cell" else "atom") - (if is_cell formula then "cell" else "atom"); - formula + if is_cell p_gal then begin + (* Form 1: [10 [[b c] d]] - full hint with value *) + (* p_gal = [b c], q_gal = d (formula) *) + if should_trace then Printf.eprintf "[Nock:%d] Op10: full hint, formula is %s\n%!" !trace_depth + (if is_cell q_gal then "cell" else "atom"); + q_gal (* Execute the formula, ignore hint *) end else begin - (* [hint-tag formula] where hint-value is implicit *) - if should_trace then Printf.eprintf "[Nock:%d] Op10: implicit hint\n%!" !trace_depth; - gal + (* Form 2: [10 [b c]] - hint with implicit value *) + (* p_gal = b (hint tag), q_gal = c (formula) *) + if should_trace then Printf.eprintf "[Nock:%d] Op10: simple hint, formula is %s\n%!" !trace_depth + (if is_cell q_gal then "cell" else "atom"); + q_gal (* Execute the formula, ignore hint *) end in nock_on bus nex diff --git a/ocaml/lib/noun.ml b/ocaml/lib/noun.ml index c59ec80..9be65b7 100644 --- a/ocaml/lib/noun.ml +++ b/ocaml/lib/noun.ml @@ -40,16 +40,39 @@ let tail = function - 2 is head, 3 is tail - For n > 1: if even, go left; if odd, go right *) +let slot_debug = ref false + let rec slot n noun = - if Z.equal n Z.one then + let debug = !slot_debug && (Z.equal n (Z.of_int 2) || Z.equal n (Z.of_int 3)) in + if debug then + Printf.eprintf "[SLOT-DEBUG] slot(%s, noun)\n%!" (Z.to_string n); + + if Z.equal n Z.one then begin + if debug then Printf.eprintf "[SLOT-DEBUG] slot(%s) = identity\n%!" (Z.to_string n); noun + end else if Z.equal n Z.zero then raise Exit - else + else begin let bit = Z.testbit n 0 in (* Check if odd *) let parent = Z.shift_right n 1 in + if debug then + Printf.eprintf "[SLOT-DEBUG] slot(%s): bit=%b parent=%s\n%!" + (Z.to_string n) bit (Z.to_string parent); let sub = slot parent noun in - if bit then tail sub else head sub + let result = if bit then tail sub else head sub in + if debug then begin + Printf.eprintf "[SLOT-DEBUG] slot(%s): taking %s, result is %s\n%!" + (Z.to_string n) (if bit then "tail" else "head") + (if is_cell result then + let h = head result in + if is_atom h then + (match h with Atom z -> "cell[" ^ Z.to_string z ^ " ...]" | _ -> "cell[? ...]") + else "cell[cell ...]" + else "atom") + end; + result + end (** Equality test for nouns *) let rec equal a b = diff --git a/ocaml/test/examine_ivory.ml b/ocaml/test/examine_ivory.ml index 34b5fed..490f735 100644 --- a/ocaml/test/examine_ivory.ml +++ b/ocaml/test/examine_ivory.ml @@ -68,6 +68,8 @@ let main env = Printf.printf " Slot 2 starts with opcode 2 - could be lifecycle formula!\n"; Printf.printf "\n ✓ Tail appears to BE the Arvo core itself!\n"; Printf.printf " This means the lifecycle formula operates on the CORE, not null!\n" + | Noun.Cell (Noun.Atom op, _rest) -> + Printf.printf " Slot 2 starts with opcode: %s\n" (Z.to_string op) | _ -> Printf.printf " Slot 2 doesn't match expected lifecycle formula pattern\n" with _ -> diff --git a/vere/pkg/noun/nock.c b/vere/pkg/noun/nock.c index 8de6d7e..959ec96 100644 --- a/vere/pkg/noun/nock.c +++ b/vere/pkg/noun/nock.c @@ -2920,12 +2920,23 @@ static u3_noun _n_burn_on(u3_noun bus, u3_noun fol) { static c3_w burn_count = 0; - if ( burn_count < 30 ) { + if ( burn_count < 500 ) { // Increased to 500 to capture solid pill boot u3_noun hib = u3h(fol); if ( c3y == u3du(hib) ) { u3l_log("[C-Burn:%u] cell-cell formula", burn_count); } else { u3l_log("[C-Burn:%u] opcode %u", burn_count, hib); + // For call #1, dump more details + if ( burn_count == 1 ) { + u3_noun gal = u3t(fol); + u3l_log("[C-Burn:1-DEBUG] gal is %s", (c3y == u3du(gal)) ? "cell" : "atom"); + if ( c3y == u3du(gal) ) { + u3_noun gal_h = u3h(gal); + u3l_log("[C-Burn:1-DEBUG] head(gal) is %s, val=%u", + (c3y == u3du(gal_h)) ? "cell" : "atom", + (c3y == u3du(gal_h)) ? u3h(gal_h) : gal_h); + } + } } burn_count++; } @@ -2944,7 +2955,7 @@ u3n_nock_on(u3_noun bus, u3_noun fol) u3_noun pro; static c3_w call_count = 0; - if ( call_count < 10 ) { + if ( call_count < 100 ) { // Increased to 100 u3l_log(">>> u3n_nock_on call #%u <<<", call_count); call_count++; } diff --git a/vere/pkg/vere/solid_boot_test.c b/vere/pkg/vere/solid_boot_test.c index 00078ee..1d5c11d 100644 --- a/vere/pkg/vere/solid_boot_test.c +++ b/vere/pkg/vere/solid_boot_test.c @@ -255,71 +255,25 @@ static void _setup(void) { - c3_d len_d = u3_Ivory_pill_len; - c3_y* byt_y = u3_Ivory_pill; - u3_cue_xeno* sil_u; - u3_weak pil; - u3C.wag_w |= u3o_hashless; - u3m_boot_lite(1 << 26); - // this follows king.c - sil_u = u3s_cue_xeno_init_with(ur_fib27, ur_fib28); - if ( u3_none == (pil = u3s_cue_xeno_with(sil_u, len_d, byt_y)) ) { - printf("*** fail _setup 1\n"); - exit(1); - } - - u3l_log("embed_pil_is_atom %u", u3a_is_atom(pil)); - u3_noun local_pil = u3m_file("/home/y/code/urbit/vere/ocaml/solid.pill"); - u3_noun cued_pil = u3ke_cue(local_pil); - - u3l_log("local_pil_is_atom %u", u3a_is_atom(local_pil)); - u3l_log("cued_pil_is_atom %u", u3a_is_atom(cued_pil)); - - c3_d len_pp; - { - u3_noun len = u3qb_lent(pil); - u3_assert( c3y == u3r_safe_chub(len, &len_pp) ); - u3z(len); - } - u3l_log("embedded pill length %llu", (unsigned long long)len_pp); - c3_d len_pp2; - { - u3_noun len = u3qb_lent(cued_pil); - u3_assert( c3y == u3r_safe_chub(len, &len_pp2) ); - u3z(len); - } - u3l_log("file_pill_length %llu", (unsigned long long)len_pp2); + u3m_boot_lite(1 << 28); // 256MB loom for solid pill - // 1. Direct equality check - c3_o match = u3r_sing(pil, cued_pil); - u3l_log("pills equal: %u", match); + // Load OCaml's ivory.pill file instead of embedded + u3l_log("Loading ivory.pill from OCaml directory..."); + u3_noun ivory_jammed = u3m_file("/home/y/code/urbit/vere/ocaml/ivory.pill"); + u3l_log("Cuing ivory.pill..."); + u3_noun pil = u3ke_cue(ivory_jammed); + // Don't free ivory_jammed - it's managed by u3m_file - // 2. Compare mugs (32-bit hashes) - u3l_log("embedded mug: %x", u3r_mug(pil)); - u3l_log("file mug: %x", u3r_mug(cued_pil)); - - // 3. If they're cells, compare heads - if ( c3y == u3a_is_cell(pil) && c3y == u3a_is_cell(cued_pil) ) { - u3l_log("head mug embedded: %x", u3r_mug(u3h(pil))); - u3l_log("head mug file: %x", u3r_mug(u3h(cued_pil))); - } + u3l_log("ivory_pil is_atom: %u", u3a_is_atom(pil)); - // 4. Jam both and compare sizes - u3_noun jam1 = u3qe_jam(pil); - u3_noun jam2 = u3qe_jam(cued_pil); - u3l_log("jammed embedded: %u met", u3r_met(3, jam1)); - u3l_log("jammed file: %u met", u3r_met(3, jam2)); - u3l_log("jams equal: %u", u3r_sing(jam1, jam2)); - u3z(jam1); u3z(jam2); - - - // - u3s_cue_xeno_done(sil_u); + // Boot with ivory pill + u3l_log("Booting with ivory.pill from OCaml..."); if ( c3n == u3v_boot_lite(pil) ) { - printf("*** fail _setup 2\n"); + printf("*** fail: ivory boot failed\n"); exit(1); } + u3l_log("✓ Ivory boot completed!"); } /* _test_lily(): test small noun parsing. diff --git a/zod/.urb/log/0i0/data.mdb b/zod/.urb/log/0i0/data.mdb Binary files differindex 78ab8ed..368dd24 100644 --- a/zod/.urb/log/0i0/data.mdb +++ b/zod/.urb/log/0i0/data.mdb diff --git a/zod/.urb/log/0i0/lock.mdb b/zod/.urb/log/0i0/lock.mdb Binary files differindex 11ec112..423e462 100644 --- a/zod/.urb/log/0i0/lock.mdb +++ b/zod/.urb/log/0i0/lock.mdb diff --git a/zod/.vere.lock b/zod/.vere.lock index ad9619f..2b5d6c8 100644 --- a/zod/.vere.lock +++ b/zod/.vere.lock @@ -1 +1 @@ -762914 +788685 |