Stage 3 follow-on: message-arrival eligibility hook + trampoline-blind switch-storm fix (FABRIC-3.md §XXVIII.2)
Implements the message-arrival eligibility signal FABRIC-3.md §XXVIII.1 left open (has_work per-slot flag, set via new SWITCH-MARK-WORK primitive from MSG-SEND) so an idle VM never becomes a switch target purely by waiting out the readiness threshold. Also root-causes and fixes a second, independent switch-storm: the tick's "who is current" check used vm_log_attributed_vm(), which can't see a VM parked in switch.c's own raw trampoline. Replaced with a dedicated g_switch_current_vm tracked by the switch mechanism itself, and moved target-slot eligibility reset to the switch decision point instead of relying on ISR polling to observe a window that can be only a few instructions wide. Verified live on all 3 architectures: clean boot to zuse@Hera] ok>, live cross-VM message dispatch, and (since a quiet log looks identical to a livelocked storm once the DoE probe is gone) confirmed genuine REPL liveness via QMP send-key + screendump on aarch64/riscv64, not log inspection alone. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BWpNjdwPtFLuVLaAq44L9K
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
862d7d9c48
commit
66beae7fd4
+90
@@ -3804,3 +3804,93 @@ counter/flag, written at the FORTH-side message-enqueue site, read the same ISR-
|
||||
readiness already is) but not yet implemented -- superseded in priority by this stack-ownership
|
||||
finding, which had to be fixed first. Revisit once this correction lands.
|
||||
|
||||
## XXVIII.2 -- Message-arrival eligibility hook implemented; a second, independent switch-storm
|
||||
root cause found and fixed in the same pass (2026-09-14)
|
||||
|
||||
**Picks up the "still open" item from §XXVIII.1's close: the message-arrival-hook eligibility
|
||||
signal.** Added `has_work`, a per-slot flag beside the existing `readiness` counter in
|
||||
`sk_switch_slot_entry_t` (`capsule_vm_switch_signal.c`). `sk_vm_switch_signal_mark_work(vm_id)`
|
||||
sets it; `sk_vm_switch_signal_tick()`'s pending-switch decision now requires both
|
||||
`readiness >= SK_SWITCH_READINESS_THRESHOLD` *and* `has_work`, and clears it (alongside
|
||||
`readiness`) the instant a slot becomes current, same as before. Wired end to end: `MSG-SEND`
|
||||
(`capsules/common/messaging.4th`, block 5021) now calls a new `SWITCH-MARK-WORK ( caddr u -- )`
|
||||
primitive (`mama_word_switch_mark_work`, `mama_forth_words.c`) with the message's `to` name,
|
||||
captured into a new `MSG-SEND-TO-IDX` variable before the existing `Q.SLOT`/`MSG-ALLOC` sequence
|
||||
consumes the stack. `SWITCH-MARK-WORK` resolves the name via
|
||||
`capsule_vm_find_by_name_nocase()` and silently no-ops on an unknown or malformed name --
|
||||
deliberate, since this fires on every message send, not a user-facing command. Registered in
|
||||
all four of `mama_forth_words.c`'s word-table blocks (`register_mama_forth_words()` x2,
|
||||
`register_child_vm_words()`), matching how every other VM-scoped primitive in that file is
|
||||
exposed. A VM that has never been sent anything therefore never becomes a switch target purely
|
||||
by sitting idle past the readiness threshold -- closes the "wasteful but no longer corrupting"
|
||||
bounce §XXVIII.1 flagged as its own still-open item.
|
||||
|
||||
**While instrumenting this for verification, a second, wholly independent switch-storm root
|
||||
cause turned up -- not a regression of §XXVIII.1's fix, a different bug in the same
|
||||
neighborhood.** `sk_vm_switch_signal_tick()`'s "who is current" check used
|
||||
`vm_log_attributed_vm()` (`vm_core.c`) -- the wrong source. That function tracks nested
|
||||
`vm_interpret()` calls for log-source attribution and has no way to know a VM is running while
|
||||
parked inside `switch.c`'s own raw-C trampoline (`sk_vm_switch_entry()`), which never itself
|
||||
calls `vm_interpret()`. A VM whose only production behavior is that trampoline was therefore
|
||||
never seen as "current," so its own `readiness`/`has_work` state below never reset by the
|
||||
current-slot branch of `tick()` -- readiness re-armed on the very next timer tick, forever, once
|
||||
nothing else happened to independently move attribution around it. Found live: a switch storm,
|
||||
QEMU pinned near 100% CPU, serial log frozen solid.
|
||||
|
||||
**Fix: track "who is physically running" inside the switch mechanism itself, independent of
|
||||
`vm_interpret()`'s own bookkeeping.** New `g_switch_current_vm` (`switch.c`), exposed via
|
||||
`sk_vm_switch_current_vm()`/`sk_vm_switch_set_current()` (`switch.h`) -- written unconditionally
|
||||
by `sk_vm_context_switch()` on both the switch-out and the eventual resume, the same
|
||||
single-writer-mainline discipline every other piece of Stage 2/3 state already follows. Seeded
|
||||
once at boot (`kernel_main.c`, right where Hera's slot registers) since she is genuinely running
|
||||
before any switch has ever happened and there is no other event to hang the initial value on.
|
||||
`sk_vm_switch_signal_tick()` now reads this instead of `vm_log_attributed_vm()`. An earlier
|
||||
attempt at fixing this by calling `vm_interpret(self, "MSG-TICK")` from inside the trampoline
|
||||
itself was tried and reverted -- it traded the switch-storm for a different, unrelated hang (a
|
||||
stall in `sk_repl_headless_wait()`'s WIREBIND-attachment wait, not root-caused, not worth
|
||||
chasing once the real fix was found) -- worth recording so it isn't retried.
|
||||
|
||||
**A third bug, same root cause (eligibility state read too late), fixed alongside the other
|
||||
two:** `sk_vm_switch_signal_note_switch_performed()` reset a target slot's `readiness`/`has_work`
|
||||
by polling `tick()`'s current-slot branch, which depends on a real timer tick landing while that
|
||||
VM is genuinely "current" -- a window that can be as small as a few instructions for a VM whose
|
||||
only behavior is the placeholder trampoline's immediate yield-back, too narrow to reliably catch.
|
||||
Fixed by taking a `target_id` parameter (call site: `vm_core.c`'s Stage 3 checkpoint in
|
||||
`execute_colon_word()`) and resetting that slot's `readiness`/`has_work` directly, at the switch
|
||||
decision point, deterministically -- correctness no longer depends on ISR timing at all.
|
||||
`current_slot`/`sk_vm_switch_current_vm()` remain useful for the DoE-observable columns and for
|
||||
excluding the running slot from readiness accrual, but are no longer load-bearing for storm
|
||||
prevention.
|
||||
|
||||
**Verification, run live by Claude Sonnet 5 at Bob's request, per this project's
|
||||
write-probe-capture-revert discipline minus the probe (the temporary `HB-ON` DoE trigger from
|
||||
§XXVIII.1 stays reverted; this pass verified without it):** all three architectures rebuilt
|
||||
clean (`make -f Makefile.starkernel ARCH=<arch> clean qemu`, foreground, one at a time, prior
|
||||
instance fully torn down including leaked `tail -f` helper processes before the next launch) and
|
||||
boot to `[zuse@Hera] ok>` -- Zuse auto-authenticates from the attached thumbdrive on every arch,
|
||||
matching the identity-lockdown work from §XI. Live cross-VM message dispatch observed
|
||||
unprompted (`Stadium: dispatch cell=42634 behaviour=DELIVER msg_idx=0`, attributed to
|
||||
`[zuse@Artemis]`), confirming the eligibility mechanism is genuinely exercised, not just present
|
||||
in the binary. **Explicitly called out because it matters for how this was checked:** with the
|
||||
DoE probe gone, a healthy idle REPL and a livelocked storm produce the identical symptom -- a
|
||||
quiet serial log -- so log growth alone was not trusted as proof of health on aarch64/riscv64
|
||||
after a quiet stretch. Verified instead via QMP (`send-key` typing `1 1 + . ` followed by `ret`,
|
||||
then `screendump`) against the running instance's own QMP socket, confirming a real computed
|
||||
`2` appended to the log on both architectures -- the same headless-input technique this
|
||||
project's memory already recommends for exactly this class of ambiguity. All three
|
||||
architectures: clean build, clean boot, live messaging, correct computation, zero PANIC/assertion
|
||||
output, no leaked QEMU or helper processes after teardown.
|
||||
|
||||
**Found live, flagged, deliberately not fixed (not requested, not this pass's scope):**
|
||||
`VM-EXEC: ERROR in Artemis` prints deterministically on every boot, on all three architectures,
|
||||
immediately after Artemis's own birth completes and just before Zuse's thumbdrive
|
||||
identity-confirmation line -- consistent enough across arches to be a real, reproducible
|
||||
condition rather than timing noise, but boot continues cleanly past it every time. Worth
|
||||
someone's attention in a future pass; `mama_word_vm_exec()`'s error-report path
|
||||
(`mama_forth_words.c` ~line 781) is where the message originates, but the actual failing
|
||||
`VM-EXEC` call site and cause were not traced this pass.
|
||||
|
||||
**Still open:** the MSG-TICK/Stage-3-switch dual-ownership rough edge §XXVIII itself flagged
|
||||
(both mechanisms can independently move control between the same VMs) is unchanged by this
|
||||
pass. Stage 4 (WIREBIND-scope extension) remains a ratified-decision-only step, untouched.
|
||||
|
||||
|
||||
+42
-42
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-14T03:55:53Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-09-14T20:33:48Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
@@ -12,7 +12,7 @@
|
||||
| `acl-std79.4th` | 4023, 4024, 4025, 4026, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 4039, 4040, 4041, 4042, 4043, 4044, 4045, 4046, 4047, 4048 | `0x773bf9209df191d1` | yes |
|
||||
| `artemis:init.4th` | 4110, 4111, 4112, 4113, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4131, 4132, 4133, 4134, 4135, 4136, 4137, 4138, 4139, 4140, 4141, 4160, 4161, 4162, 4163, 4164, 4165, 4166, 4167, 4168, 4169, 4170, 4171, 4172, 4173, 4174, 4177, 4178, 4179, 4180, 4181, 4182, 4851, 4852, 4853, 4854, 4856, 4857, 4858, 4860 | `0xf55edc4e76a8c294` | yes |
|
||||
| `block-acl.4th` | 4019, 4020 | `0xf6cc2a59e3a6734e` | yes |
|
||||
| `common:messaging.4th` | 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042 | `0xedde53f6faed7355` | yes |
|
||||
| `common:messaging.4th` | 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010, 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020, 5021, 5022, 5023, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034, 5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042 | `0x201cfd6d39fcb22d` | yes |
|
||||
| `common:msg.4th` | 4055 | `0x850a0382344ea6c4` | yes |
|
||||
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | yes |
|
||||
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xf154616d248e861f` | yes |
|
||||
@@ -331,46 +331,46 @@
|
||||
| 5000 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5001 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5002 | `fabric.4th` | `0x9d9489cbeca4099b` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5041 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5042 | `common:messaging.4th` | `0xedde53f6faed7355` | ok |
|
||||
| 5003 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5004 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5005 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5006 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5007 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5008 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5009 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5010 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5011 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5012 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5013 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5014 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5015 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5016 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5017 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5018 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5019 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5020 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5021 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5022 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5023 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5024 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5025 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5026 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5027 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5028 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5029 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5030 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5031 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5032 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5033 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5034 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5035 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5036 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5037 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5038 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5039 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5040 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5041 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5042 | `common:messaging.4th` | `0x201cfd6d39fcb22d` | ok |
|
||||
| 5100 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5101 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
| 5102 | `turtle.4th` | `0x4d470418ca543365` | ok |
|
||||
|
||||
@@ -226,6 +226,7 @@ Block 5019
|
||||
Block 5020
|
||||
( deliver )
|
||||
VARIABLE MSG-LAST-MSG
|
||||
VARIABLE MSG-SEND-TO-IDX
|
||||
: IDX>NAME ( idx -- addr u )
|
||||
DUP VM-MAX >= IF DROP 0 0 EXIT THEN
|
||||
DUP CELLS VM-NAME-ADDRS + @
|
||||
@@ -239,13 +240,15 @@ Block 5021
|
||||
( (zero-heat would lose eviction-fallback density )
|
||||
( comparisons), not set afterward as before. )
|
||||
: MSG-SEND ( type from to paddr plen ch -- )
|
||||
3 PICK MSG-SEND-TO-IDX !
|
||||
Q.SLOT MSG-ALLOC DUP 0= IF 2DROP 2DROP 2DROP DROP EXIT THEN
|
||||
>R
|
||||
MSG-SEQ @ 1+ DUP MSG-SEQ ! R@ MSG-SEQ!
|
||||
R@ MSG-CH!
|
||||
R@ MSG-PLEN! R@ MSG-PADDR!
|
||||
R@ MSG-TO! R@ MSG-FROM! DUP R@ MSG-TYPE! R@ MSG-ORIG-TYPE!
|
||||
R> DROP ;
|
||||
R> DROP
|
||||
MSG-SEND-TO-IDX @ IDX>NAME SWITCH-MARK-WORK ;
|
||||
Block 5022
|
||||
( MSG-COOL-ONE/ALL: linear decay per tick )
|
||||
VARIABLE MSG-SCAN
|
||||
|
||||
Binary file not shown.
@@ -1,287 +1,2 @@
|
||||
tick_number,elapsed_ns,tick_interval_ns,cache_hits_delta,bucket_hits_delta,word_executions_delta,hot_word_count,avg_word_heat_q48,window_width,actual_window_size,predicted_label_hits,jitter_bits,apic_ticks,time_trust_q48,variance_q48,vm_call_depth_max,hera_heat_q48,hermes_heat_q48,artemis_heat_q48,fleet_k_q48,fleet_conserved,switch_count_cumulative,switch_current_slot,switch_hera_readiness,switch_hermes_readiness,switch_artemis_readiness,switch_ticks_since
|
||||
104,1040000,890000,0,0,15667,80,43,256,256,0,4695806354533646336,437,65536,0,1,65536,0,0,65536,1,0,0,0,2,2,2
|
||||
16,160000,18446744073708671616,0,0,2988,56,19,4096,2379,0,4895412794951728717,438,65536,0,0,65536,0,0,65536,1,0,0,0,3,3,3
|
||||
17,170000,10000,0,0,256,57,21,4096,2635,0,0,439,65536,0,0,65536,0,0,65536,1,0,1,1,0,4,4
|
||||
18,180000,10000,0,0,256,57,22,4096,2891,0,0,439,65536,0,0,65536,0,0,65536,1,0,1,1,0,4,4
|
||||
19,190000,10000,0,0,256,57,23,4096,3147,0,0,440,65536,0,0,65536,0,0,65536,1,0,1,2,0,5,5
|
||||
20,200000,10000,0,0,256,57,25,4096,3403,0,0,441,65536,0,0,65536,0,0,65536,1,0,1,3,0,6,6
|
||||
21,210000,10000,0,0,256,57,26,4096,3659,0,0,441,65536,0,0,65536,0,0,65536,1,0,1,3,0,6,6
|
||||
22,220000,10000,0,0,256,61,27,4096,3915,0,0,442,65536,0,0,65536,0,0,65536,1,0,1,4,0,7,7
|
||||
23,230000,10000,0,0,256,61,28,4096,4096,0,0,443,65536,0,0,65536,0,0,65536,1,0,1,5,0,8,8
|
||||
24,240000,10000,0,0,256,61,30,4096,4096,0,0,443,65536,0,0,65536,0,0,65536,1,0,1,5,0,8,8
|
||||
25,250000,10000,0,0,256,61,31,2048,2048,0,0,444,65536,0,0,65536,0,0,65536,1,0,1,6,0,9,9
|
||||
26,260000,10000,0,0,256,61,32,2048,2048,0,0,445,65536,0,0,65536,0,0,65536,1,0,1,7,0,10,10
|
||||
27,270000,10000,0,0,256,61,34,1024,1024,0,0,446,65536,0,0,65536,0,0,65536,1,0,1,8,0,11,11
|
||||
28,280000,10000,0,0,256,61,35,1024,1024,0,0,447,65536,0,0,65536,0,0,65536,1,0,1,9,0,12,12
|
||||
3974,39740000,39460000,0,0,1009307,64,3669,256,256,1975,4720563699226509312,449,65536,0,1,65536,0,0,65536,1,0,2,11,2,0,14
|
||||
3975,39750000,10000,0,0,256,66,3670,256,256,1,0,449,65536,0,1,65536,0,0,65536,1,0,2,11,2,0,14
|
||||
3976,39760000,10000,0,0,256,66,3671,256,256,1,0,450,65536,0,1,65536,0,0,65536,1,0,2,12,3,0,15
|
||||
3977,39770000,10000,0,0,256,66,3671,256,256,1,0,451,65536,0,1,65536,0,0,65536,1,0,2,13,4,0,16
|
||||
3978,39780000,10000,0,0,256,66,3672,256,256,1,0,452,65536,0,1,65536,0,0,65536,1,0,2,14,5,0,17
|
||||
3979,39790000,10000,0,0,256,66,3673,256,256,1,0,453,65536,0,1,65536,0,0,65536,1,0,2,15,6,0,18
|
||||
3980,39800000,10000,0,0,256,68,3674,256,256,1,0,453,65536,0,1,65536,0,0,65536,1,0,2,15,6,0,18
|
||||
3981,39810000,10000,0,0,256,71,3675,256,256,1,0,454,65536,0,1,65536,0,0,65536,1,0,2,16,7,0,19
|
||||
3982,39820000,10000,0,0,256,71,3676,256,256,1,0,455,65536,0,1,65536,0,0,65536,1,0,2,17,8,0,20
|
||||
3983,39830000,10000,0,0,256,71,3677,256,256,1,0,455,65536,0,1,65536,0,0,65536,1,0,2,17,8,0,20
|
||||
3984,39840000,10000,0,0,256,71,3678,256,256,1,0,456,65536,0,1,65536,0,0,65536,1,0,2,18,9,0,21
|
||||
3985,39850000,10000,0,0,256,71,3679,256,256,1,0,456,65536,0,1,65536,0,0,65536,1,0,2,18,9,0,21
|
||||
3986,39860000,10000,0,0,256,71,3680,256,256,1,0,457,65536,0,1,65536,0,0,65536,1,0,2,19,10,0,22
|
||||
105,1050000,18446744073670741616,0,0,18655,80,43,256,256,0,4895412794951710197,459,65536,0,1,65536,0,0,65536,1,0,0,0,12,2,24
|
||||
106,1060000,10000,0,0,256,81,46,256,256,0,0,460,65536,0,1,65536,0,0,65536,1,0,0,0,13,3,25
|
||||
107,1070000,10000,0,0,256,81,47,256,256,0,0,461,65536,0,1,65536,0,0,65536,1,0,0,0,14,4,26
|
||||
108,1080000,10000,0,0,256,79,48,256,256,0,0,461,65536,0,1,65536,0,0,65536,1,0,0,0,14,4,26
|
||||
109,1090000,10000,0,0,256,79,49,256,256,0,0,462,65536,0,1,65536,0,0,65536,1,0,0,0,15,5,27
|
||||
110,1100000,10000,0,0,256,77,51,256,256,0,0,463,65536,0,1,65536,0,0,65536,1,0,0,0,16,6,28
|
||||
111,1110000,10000,0,0,256,76,55,256,256,0,0,464,65536,0,1,65536,0,0,65536,1,0,0,0,17,7,29
|
||||
112,1120000,10000,0,0,256,76,56,256,256,0,0,464,65536,0,1,65536,0,0,65536,1,0,0,0,17,7,29
|
||||
113,1130000,10000,0,0,256,80,67,256,256,0,0,464,65536,0,1,65536,0,0,65536,1,0,0,0,17,7,29
|
||||
114,1140000,10000,0,0,256,79,78,256,256,0,0,465,65536,0,1,65536,0,0,65536,1,0,0,0,18,8,30
|
||||
115,1150000,10000,0,0,256,79,92,256,256,0,0,466,65536,0,1,65536,0,0,65536,1,0,0,0,19,9,31
|
||||
116,1160000,10000,0,0,256,79,93,256,256,0,0,466,65536,0,1,65536,0,0,65536,1,0,0,0,19,9,31
|
||||
117,1170000,10000,0,0,256,77,102,256,256,0,0,467,65536,0,1,65536,0,0,65536,1,0,0,0,20,10,32
|
||||
118,1180000,10000,0,0,256,77,104,256,256,0,0,467,65536,0,1,65536,0,0,65536,1,0,0,0,20,10,32
|
||||
119,1190000,10000,0,0,256,77,103,256,256,0,0,468,65536,0,1,65536,0,0,65536,1,0,0,0,21,11,33
|
||||
120,1200000,10000,0,0,256,77,102,256,256,0,0,468,65536,0,1,65536,0,0,65536,1,0,0,0,21,11,33
|
||||
29,290000,18446744073708641616,0,0,6316,62,36,512,512,0,4895412794951728703,531,39891,42131,0,65523,13,0,65536,1,0,1,1,0,13,35
|
||||
30,300000,10000,0,0,256,62,37,512,512,0,0,532,39891,42131,0,65523,13,0,65536,1,0,1,2,0,14,36
|
||||
31,310000,10000,0,0,256,62,39,256,256,0,0,532,39891,42131,0,65523,13,0,65536,1,0,1,2,0,14,36
|
||||
32,320000,10000,0,0,256,62,40,256,256,0,0,533,39891,42131,0,65523,13,0,65536,1,0,1,3,0,15,37
|
||||
33,330000,10000,0,0,256,63,41,256,256,0,0,533,39891,42131,0,65523,13,0,65536,1,0,1,3,0,15,37
|
||||
34,340000,10000,0,0,256,63,42,256,256,0,0,534,39891,42131,0,65523,13,0,65536,1,0,1,4,0,16,38
|
||||
35,350000,10000,0,0,256,63,44,256,256,0,0,535,39891,42131,0,65523,13,0,65536,1,0,1,5,0,17,39
|
||||
36,360000,10000,0,0,256,63,45,256,256,0,0,536,39891,42131,0,65523,13,0,65536,1,0,1,6,0,18,40
|
||||
37,370000,10000,0,0,256,63,46,256,256,0,0,536,39891,42131,0,65523,13,0,65536,1,0,1,6,0,18,40
|
||||
38,380000,10000,0,0,256,63,48,256,256,0,0,537,39891,42131,0,65523,13,0,65536,1,0,1,7,0,19,41
|
||||
39,390000,10000,0,0,256,63,49,256,256,0,0,537,39891,42131,0,65523,13,0,65536,1,0,1,7,0,19,41
|
||||
40,400000,10000,0,0,256,63,50,256,256,0,0,538,39891,42131,0,65523,13,0,65536,1,0,1,8,0,20,42
|
||||
41,410000,10000,0,0,256,63,51,256,256,0,0,538,39891,42131,0,65523,13,0,65536,1,0,1,8,0,20,42
|
||||
3987,39870000,39460000,0,0,1009307,72,3681,256,256,1988,4720563699226509312,541,39891,42131,1,65511,13,12,65536,1,0,2,11,2,0,45
|
||||
3988,39880000,10000,0,0,256,72,3682,256,256,1,0,541,39891,42131,1,65511,13,12,65536,1,0,2,11,2,0,45
|
||||
3989,39890000,10000,0,0,256,72,3683,256,256,1,0,542,39891,42131,1,65511,13,12,65536,1,0,2,12,3,0,46
|
||||
3990,39900000,10000,0,0,256,72,3684,256,256,1,0,543,39891,42131,1,65511,13,12,65536,1,0,2,13,4,0,47
|
||||
3991,39910000,10000,0,0,256,72,3684,256,256,1,0,544,39891,42131,1,65511,13,12,65536,1,0,2,14,5,0,48
|
||||
3992,39920000,10000,0,0,256,72,3685,256,256,1,0,544,39891,42131,1,65511,13,12,65536,1,0,2,14,5,0,48
|
||||
3993,39930000,10000,0,0,256,72,3686,256,256,1,0,545,39891,42131,1,65511,13,12,65536,1,0,2,15,6,0,49
|
||||
3994,39940000,10000,0,0,256,72,3687,256,256,1,0,546,39891,42131,1,65511,13,12,65536,1,0,2,16,7,0,50
|
||||
3995,39950000,10000,0,0,256,72,3688,256,256,1,0,546,39891,42131,1,65511,13,12,65536,1,0,2,16,7,0,50
|
||||
3996,39960000,10000,0,0,256,72,3689,256,256,1,0,547,39891,42131,1,65511,13,12,65536,1,0,2,17,8,0,51
|
||||
3997,39970000,10000,0,0,256,72,3690,256,256,1,0,548,39891,42131,1,65511,13,12,65536,1,0,2,18,9,0,52
|
||||
3998,39980000,10000,0,0,256,72,3691,256,256,1,0,549,39891,42131,1,65511,13,12,65536,1,0,2,19,10,0,53
|
||||
3999,39990000,10000,0,0,256,72,3692,256,256,1,0,549,39891,42131,1,65511,13,12,65536,1,0,2,19,10,0,53
|
||||
121,1210000,18446744073670771616,0,0,22751,77,103,256,256,0,4895412794951710212,552,39891,42131,1,65511,13,12,65536,1,0,0,0,13,2,56
|
||||
122,1220000,10000,0,0,256,77,104,256,256,0,0,552,39891,42131,1,65511,13,12,65536,1,0,0,0,13,2,56
|
||||
123,1230000,10000,0,0,256,77,106,256,256,0,0,553,39891,42131,1,65511,13,12,65536,1,0,0,0,14,3,57
|
||||
124,1240000,10000,0,0,256,77,108,256,256,0,0,554,39891,42131,1,65511,13,12,65536,1,0,0,0,15,4,58
|
||||
125,1250000,10000,0,0,256,77,109,256,256,0,0,555,39891,42131,1,65511,13,12,65536,1,0,0,0,16,5,59
|
||||
126,1260000,10000,0,0,256,75,112,256,256,0,0,556,39891,42131,1,65511,13,12,65536,1,0,0,0,17,6,60
|
||||
127,1270000,10000,0,0,256,76,113,256,256,0,0,556,39891,42131,1,65511,13,12,65536,1,0,0,0,17,6,60
|
||||
128,1280000,10000,0,0,256,76,127,256,256,0,0,556,39891,42131,1,65511,13,12,65536,1,0,0,0,17,6,60
|
||||
129,1290000,10000,0,0,256,72,135,256,256,0,0,557,39891,42131,1,65511,13,12,65536,1,0,0,0,18,7,61
|
||||
130,1300000,10000,0,0,256,72,136,256,256,0,0,558,39891,42131,1,65511,13,12,65536,1,0,0,0,19,8,62
|
||||
131,1310000,10000,0,0,256,72,138,256,256,0,0,559,39891,42131,1,65511,13,12,65536,1,0,0,0,20,9,63
|
||||
132,1320000,10000,0,0,256,72,142,256,256,0,0,559,39891,42131,1,65511,13,12,65536,1,0,0,0,20,9,63
|
||||
133,1330000,10000,0,0,256,72,153,256,256,0,0,560,39891,42131,1,65511,13,12,65536,1,0,0,0,21,10,64
|
||||
134,1340000,10000,0,0,256,72,157,256,256,0,0,560,39891,42131,1,65511,13,12,65536,1,0,0,0,21,10,64
|
||||
42,420000,18446744073708631616,0,0,9644,64,53,256,256,0,4895412794951728698,631,65535,1,0,65499,25,12,65536,1,0,1,1,0,12,66
|
||||
43,430000,10000,0,0,256,64,54,256,256,0,0,631,65535,1,0,65499,25,12,65536,1,0,1,1,0,12,66
|
||||
44,440000,10000,0,0,256,64,55,256,256,0,0,632,65535,1,0,65499,25,12,65536,1,0,1,2,0,13,67
|
||||
45,450000,10000,0,0,256,64,57,256,256,0,0,633,65535,1,0,65499,25,12,65536,1,0,1,3,0,14,68
|
||||
46,460000,10000,0,0,256,64,58,256,256,0,0,633,65535,1,0,65499,25,12,65536,1,0,1,3,0,14,68
|
||||
47,470000,10000,0,0,256,64,59,256,256,0,0,634,65535,1,0,65499,25,12,65536,1,0,1,4,0,15,69
|
||||
48,480000,10000,0,0,256,64,60,256,256,0,0,635,65535,1,0,65499,25,12,65536,1,0,1,5,0,16,70
|
||||
49,490000,10000,0,0,256,64,62,256,256,0,0,635,65535,1,0,65499,25,12,65536,1,0,1,5,0,16,70
|
||||
50,500000,10000,0,0,256,64,63,256,256,0,0,636,65535,1,0,65499,25,12,65536,1,0,1,6,0,17,71
|
||||
51,510000,10000,0,0,256,64,65,256,256,0,0,637,65535,1,0,65499,25,12,65536,1,0,1,7,0,18,72
|
||||
52,520000,10000,0,0,256,64,67,256,256,0,0,638,65535,1,0,65499,25,12,65536,1,0,1,8,0,19,73
|
||||
53,530000,10000,0,0,256,62,68,256,256,0,0,638,65535,1,0,65499,25,12,65536,1,0,1,8,0,19,73
|
||||
54,540000,10000,0,0,256,62,70,256,256,0,0,639,65535,1,0,65499,25,12,65536,1,0,1,9,0,20,74
|
||||
4000,40000000,39460000,0,0,1009307,74,3693,256,256,2001,4720563699226509312,641,65535,1,1,65487,25,24,65536,1,0,2,11,2,0,76
|
||||
4001,40010000,10000,0,0,256,74,3694,256,256,1,0,642,65535,1,1,65487,25,24,65536,1,0,2,12,3,0,77
|
||||
4002,40020000,10000,0,0,256,74,3695,256,256,1,0,643,65535,1,1,65487,25,24,65536,1,0,2,13,4,0,78
|
||||
4003,40030000,10000,0,0,256,74,3696,256,256,1,0,643,65535,1,1,65487,25,24,65536,1,0,2,13,4,0,78
|
||||
4004,40040000,10000,0,0,256,74,3696,256,256,1,0,644,65535,1,1,65487,25,24,65536,1,0,2,14,5,0,79
|
||||
4005,40050000,10000,0,0,256,74,3697,256,256,1,0,644,65535,1,1,65487,25,24,65536,1,0,2,14,5,0,79
|
||||
4006,40060000,10000,0,0,256,74,3698,256,256,1,0,645,65535,1,1,65487,25,24,65536,1,0,2,15,6,0,80
|
||||
4007,40070000,10000,0,0,256,74,3699,256,256,1,0,645,65535,1,1,65487,25,24,65536,1,0,2,15,6,0,80
|
||||
4008,40080000,10000,0,0,256,74,3700,256,256,1,0,646,65535,1,1,65487,25,24,65536,1,0,2,16,7,0,81
|
||||
4009,40090000,10000,0,0,256,74,3701,256,256,1,0,646,65535,1,1,65487,25,24,65536,1,0,2,16,7,0,81
|
||||
4010,40100000,10000,0,0,256,74,3702,256,256,1,0,647,65535,1,1,65487,25,24,65536,1,0,2,17,8,0,82
|
||||
4011,40110000,10000,0,0,256,74,3703,256,256,1,0,647,65535,1,1,65487,25,24,65536,1,0,2,17,8,0,82
|
||||
4012,40120000,10000,0,0,256,74,3704,256,256,1,0,648,65535,1,1,65487,25,24,65536,1,0,2,18,9,0,83
|
||||
135,1350000,18446744073670781616,0,0,26335,72,156,256,256,0,4895412794951710216,651,65535,1,1,65487,25,24,65536,1,0,0,0,12,2,86
|
||||
136,1360000,10000,0,0,256,72,159,256,256,0,0,651,65535,1,1,65487,25,24,65536,1,0,0,0,12,2,86
|
||||
137,1370000,10000,0,0,256,72,161,256,256,0,0,652,65535,1,1,65487,25,24,65536,1,0,0,0,13,3,87
|
||||
138,1380000,10000,0,0,256,72,163,256,256,0,0,652,65535,1,1,65487,25,24,65536,1,0,0,0,13,3,87
|
||||
139,1390000,10000,0,0,256,72,163,256,256,0,0,653,65535,1,1,65487,25,24,65536,1,0,0,0,14,4,88
|
||||
140,1400000,10000,0,0,256,72,165,256,256,0,0,653,65535,1,1,65487,25,24,65536,1,0,0,0,14,4,88
|
||||
141,1410000,10000,0,0,256,72,167,256,256,0,0,654,65535,1,1,65487,25,24,65536,1,0,0,0,15,5,89
|
||||
142,1420000,10000,0,0,256,72,169,256,256,0,0,655,65535,1,1,65487,25,24,65536,1,0,0,0,16,6,90
|
||||
143,1430000,10000,0,0,256,72,171,256,256,0,0,655,65535,1,1,65487,25,24,65536,1,0,0,0,16,6,90
|
||||
144,1440000,10000,0,0,256,72,174,256,256,0,0,656,65535,1,1,65487,25,24,65536,1,0,0,0,17,7,91
|
||||
145,1450000,10000,0,0,256,72,176,256,256,0,0,657,65535,1,1,65487,25,24,65536,1,0,0,0,18,8,92
|
||||
146,1460000,10000,0,0,256,72,178,256,256,0,0,657,65535,1,1,65487,25,24,65536,1,0,0,0,18,8,92
|
||||
147,1470000,10000,0,0,256,72,180,256,256,0,0,658,65535,1,1,65487,25,24,65536,1,0,0,0,19,9,93
|
||||
55,550000,18446744073708631616,0,0,12972,61,73,256,256,0,4895412794951728698,731,65536,0,0,65476,36,24,65536,1,0,1,1,0,10,94
|
||||
56,560000,10000,0,0,256,61,75,256,256,0,0,732,65536,0,0,65476,36,24,65536,1,0,1,2,0,11,95
|
||||
57,570000,10000,0,0,256,61,76,256,256,0,0,732,65536,0,0,65476,36,24,65536,1,0,1,2,0,11,95
|
||||
58,580000,10000,0,0,256,61,77,256,256,0,0,733,65536,0,0,65476,36,24,65536,1,0,1,3,0,12,96
|
||||
59,590000,10000,0,0,256,61,79,256,256,0,0,734,65536,0,0,65476,36,24,65536,1,0,1,4,0,13,97
|
||||
60,600000,10000,0,0,256,61,85,256,256,0,0,735,65536,0,0,65476,36,24,65536,1,0,1,5,0,14,98
|
||||
61,610000,10000,0,0,256,61,87,256,256,0,0,735,65536,0,0,65476,36,24,65536,1,0,1,5,0,14,98
|
||||
62,620000,10000,0,0,256,61,89,256,256,0,0,736,65536,0,0,65476,36,24,65536,1,0,1,6,0,15,99
|
||||
63,630000,10000,0,0,256,61,92,256,256,0,0,737,65536,0,0,65476,36,24,65536,1,0,1,7,0,16,100
|
||||
64,640000,10000,0,0,256,61,95,256,256,0,0,737,65536,0,0,65476,36,24,65536,1,0,1,7,0,16,100
|
||||
65,650000,10000,0,0,256,60,96,256,256,0,0,738,65536,0,0,65476,36,24,65536,1,0,1,8,0,17,101
|
||||
66,660000,10000,0,0,256,59,102,256,256,0,0,738,65536,0,0,65476,36,24,65536,1,0,1,8,0,17,101
|
||||
67,670000,10000,0,0,256,59,104,256,256,0,0,739,65536,0,0,65476,36,24,65536,1,0,1,9,0,18,102
|
||||
4013,40130000,39460000,0,0,1009307,75,3705,256,256,2014,4720563699226509312,741,65536,0,1,65465,36,35,65536,1,0,2,11,2,0,104
|
||||
4014,40140000,10000,0,0,256,75,3706,256,256,1,0,742,65536,0,1,65465,36,35,65536,1,0,2,12,3,0,105
|
||||
4015,40150000,10000,0,0,256,75,3707,256,256,1,0,743,65536,0,1,65465,36,35,65536,1,0,2,13,4,0,106
|
||||
4016,40160000,10000,0,0,256,75,3708,256,256,1,0,744,65536,0,1,65465,36,35,65536,1,0,2,14,5,0,107
|
||||
4017,40170000,10000,0,0,256,75,3708,256,256,1,0,745,65536,0,1,65465,36,35,65536,1,0,2,15,6,0,108
|
||||
4018,40180000,10000,0,0,256,75,3709,256,256,1,0,746,65536,0,1,65465,36,35,65536,1,0,2,16,7,0,109
|
||||
4019,40190000,10000,0,0,256,75,3710,256,256,1,0,746,65536,0,1,65465,36,35,65536,1,0,2,16,7,0,109
|
||||
4020,40200000,10000,0,0,256,75,3711,256,256,1,0,747,65536,0,1,65465,36,35,65536,1,0,2,17,8,0,110
|
||||
4021,40210000,10000,0,0,256,75,3712,256,256,1,0,747,65536,0,1,65465,36,35,65536,1,0,2,17,8,0,110
|
||||
4022,40220000,10000,0,0,256,75,3713,256,256,1,0,748,65536,0,1,65465,36,35,65536,1,0,2,18,9,0,111
|
||||
4023,40230000,10000,0,0,256,75,3714,256,256,1,0,748,65536,0,1,65465,36,35,65536,1,0,2,18,9,0,111
|
||||
4024,40240000,10000,0,0,256,75,3715,256,256,1,0,749,65536,0,1,65465,36,35,65536,1,0,2,19,10,0,112
|
||||
4025,40250000,10000,0,0,256,75,3716,256,256,1,0,749,65536,0,1,65465,36,35,65536,1,0,2,19,10,0,112
|
||||
148,1480000,18446744073670781616,0,0,29663,72,182,256,256,0,4895412794951710216,752,65536,0,1,65465,36,35,65536,1,0,0,0,13,2,115
|
||||
149,1490000,10000,0,0,256,72,184,256,256,0,0,752,65536,0,1,65465,36,35,65536,1,0,0,0,13,2,115
|
||||
150,1500000,10000,0,0,256,72,186,256,256,0,0,753,65536,0,1,65465,36,35,65536,1,0,0,0,14,3,116
|
||||
151,1510000,10000,0,0,256,72,188,256,256,0,0,754,65536,0,1,65465,36,35,65536,1,0,0,0,15,4,117
|
||||
152,1520000,10000,0,0,256,72,190,256,256,0,0,755,65536,0,1,65465,36,35,65536,1,0,0,0,16,5,118
|
||||
153,1530000,10000,0,0,256,72,201,256,256,0,0,755,65536,0,1,65465,36,35,65536,1,0,0,0,16,5,118
|
||||
154,1540000,10000,0,0,256,72,203,256,256,0,0,756,65536,0,1,65465,36,35,65536,1,0,0,0,17,6,119
|
||||
155,1550000,10000,0,0,256,72,205,256,256,0,0,756,65536,0,1,65465,36,35,65536,1,0,0,0,17,6,119
|
||||
156,1560000,10000,0,0,256,72,207,256,256,0,0,757,65536,0,1,65465,36,35,65536,1,0,0,0,18,7,120
|
||||
157,1570000,10000,0,0,256,72,209,256,256,0,0,757,65536,0,1,65465,36,35,65536,1,0,0,0,18,7,120
|
||||
158,1580000,10000,0,0,256,72,212,256,256,0,0,758,65536,0,1,65465,36,35,65536,1,0,0,0,19,8,121
|
||||
159,1590000,10000,0,0,256,72,214,256,256,0,0,758,65536,0,1,65465,36,35,65536,1,0,0,0,19,8,121
|
||||
160,1600000,10000,0,0,256,72,216,256,256,0,0,759,65536,0,1,65465,36,35,65536,1,0,0,0,20,9,122
|
||||
161,1610000,10000,0,0,256,72,218,256,256,0,0,759,65536,0,1,65465,36,35,65536,1,0,0,0,20,9,122
|
||||
68,680000,18446744073708621616,0,0,16300,59,127,256,256,0,4895412794951728693,831,65536,0,0,65453,48,35,65536,1,0,1,1,0,11,124
|
||||
69,690000,10000,0,0,256,59,129,256,256,0,0,831,65536,0,0,65453,48,35,65536,1,0,1,1,0,11,124
|
||||
70,700000,10000,0,0,256,59,131,256,256,0,0,832,65536,0,0,65453,48,35,65536,1,0,1,2,0,12,125
|
||||
71,710000,10000,0,0,256,59,133,256,256,0,0,832,65536,0,0,65453,48,35,65536,1,0,1,2,0,12,125
|
||||
72,720000,10000,0,0,256,59,135,256,256,0,0,833,65536,0,0,65453,48,35,65536,1,0,1,3,0,13,126
|
||||
73,730000,10000,0,0,256,58,138,256,256,0,0,834,65536,0,0,65453,48,35,65536,1,0,1,4,0,14,127
|
||||
74,740000,10000,0,0,256,58,141,256,256,0,0,835,65536,0,0,65453,48,35,65536,1,0,1,5,0,15,128
|
||||
75,750000,10000,0,0,256,58,144,256,256,0,0,836,65536,0,0,65453,48,35,65536,1,0,1,6,0,16,129
|
||||
76,760000,10000,0,0,256,56,148,256,256,0,0,837,65536,0,0,65453,48,35,65536,1,0,1,7,0,17,130
|
||||
77,770000,10000,0,0,256,56,150,256,256,0,0,837,65536,0,0,65453,48,35,65536,1,0,1,7,0,17,130
|
||||
78,780000,10000,0,0,256,56,152,256,256,0,0,838,65536,0,0,65453,48,35,65536,1,0,1,8,0,18,131
|
||||
79,790000,10000,0,0,256,56,154,256,256,0,0,839,65536,0,0,65453,48,35,65536,1,0,1,9,0,19,132
|
||||
80,800000,10000,0,0,256,56,156,256,256,0,0,840,65536,0,0,65453,48,35,65536,1,0,1,10,0,20,133
|
||||
4026,40260000,39460000,0,0,1009307,80,3717,256,256,2027,4720563699226509312,841,65536,0,1,65441,48,47,65536,1,0,2,11,1,0,134
|
||||
4027,40270000,10000,0,0,256,80,3718,256,256,1,0,842,65536,0,1,65441,48,47,65536,1,0,2,12,2,0,135
|
||||
4028,40280000,10000,0,0,256,80,3719,256,256,1,0,842,65536,0,1,65441,48,47,65536,1,0,2,12,2,0,135
|
||||
4029,40290000,10000,0,0,256,80,3720,256,256,1,0,843,65536,0,1,65441,48,47,65536,1,0,2,13,3,0,136
|
||||
4030,40300000,10000,0,0,256,80,3720,256,256,1,0,844,65536,0,1,65441,48,47,65536,1,0,2,14,4,0,137
|
||||
4031,40310000,10000,0,0,256,80,3721,256,256,1,0,845,65536,0,1,65441,48,47,65536,1,0,2,15,5,0,138
|
||||
4032,40320000,10000,0,0,256,80,3722,256,256,1,0,845,65536,0,1,65441,48,47,65536,1,0,2,15,5,0,138
|
||||
4033,40330000,10000,0,0,256,80,3723,256,256,1,0,846,65536,0,1,65441,48,47,65536,1,0,2,16,6,0,139
|
||||
4034,40340000,10000,0,0,256,80,3724,256,256,1,0,847,65536,0,1,65441,48,47,65536,1,0,2,17,7,0,140
|
||||
4035,40350000,10000,0,0,256,80,3725,256,256,1,0,848,65536,0,1,65441,48,47,65536,1,0,2,18,8,0,141
|
||||
4036,40360000,10000,0,0,256,80,3726,256,256,1,0,848,65536,0,1,65441,48,47,65536,1,0,2,18,8,0,141
|
||||
4037,40370000,10000,0,0,256,80,3727,256,256,1,0,848,65536,0,1,65441,48,47,65536,1,0,2,18,8,0,141
|
||||
4038,40380000,10000,0,0,256,80,3728,256,256,1,0,849,65536,0,1,65441,48,47,65536,1,0,2,19,9,0,142
|
||||
4039,40390000,10000,0,0,256,80,3729,256,256,1,0,849,65536,0,1,65441,48,47,65536,1,0,2,19,9,0,142
|
||||
162,1620000,18446744073670781616,0,0,33247,73,220,256,256,0,4895412794951710216,852,65536,0,1,65441,48,47,65536,1,0,0,0,12,2,145
|
||||
163,1630000,10000,0,0,256,73,222,256,256,0,0,853,65536,0,1,65441,48,47,65536,1,0,0,0,13,3,146
|
||||
164,1640000,10000,0,0,256,73,226,256,256,0,0,854,65536,0,1,65441,48,47,65536,1,0,0,0,14,4,147
|
||||
165,1650000,10000,0,0,256,73,228,256,256,0,0,855,65536,0,1,65441,48,47,65536,1,0,0,0,15,5,148
|
||||
166,1660000,10000,0,0,256,73,242,256,256,0,0,856,65536,0,1,65441,48,47,65536,1,0,0,0,16,6,149
|
||||
167,1670000,10000,0,0,256,73,245,256,256,0,0,856,65536,0,1,65441,48,47,65536,1,0,0,0,16,6,149
|
||||
168,1680000,10000,0,0,256,73,247,256,256,0,0,857,65536,0,1,65441,48,47,65536,1,0,0,0,17,7,150
|
||||
169,1690000,10000,0,0,256,73,249,256,256,0,0,858,65536,0,1,65441,48,47,65536,1,0,0,0,18,8,151
|
||||
170,1700000,10000,0,0,256,73,251,256,256,0,0,859,65536,0,1,65441,48,47,65536,1,0,0,0,19,9,152
|
||||
171,1710000,10000,0,0,256,73,258,256,256,0,0,859,65536,0,1,65441,48,47,65536,1,0,0,0,19,9,152
|
||||
172,1720000,10000,0,0,256,71,260,256,256,0,0,860,65536,0,1,65441,48,47,65536,1,0,0,0,20,10,153
|
||||
173,1730000,10000,0,0,256,71,280,256,256,0,0,861,65536,0,1,65441,48,47,65536,1,0,0,0,21,11,154
|
||||
174,1740000,10000,0,0,256,71,287,256,256,0,0,861,65536,0,1,65441,48,47,65536,1,0,0,0,21,11,154
|
||||
175,1750000,10000,0,0,256,71,290,256,256,0,0,862,65536,0,1,65441,48,47,65536,1,0,0,0,22,12,155
|
||||
81,810000,18446744073708611616,0,0,19628,58,158,256,256,0,4895412794951728688,933,65533,3,0,65421,60,55,65536,1,0,1,2,0,14,157
|
||||
82,820000,10000,0,0,256,58,160,256,256,0,0,933,65533,3,0,65421,60,55,65536,1,0,1,2,0,14,157
|
||||
83,830000,10000,0,0,256,58,164,256,256,0,0,934,65533,3,0,65421,60,55,65536,1,0,1,3,0,15,158
|
||||
84,840000,10000,0,0,256,58,166,256,256,0,0,934,65533,3,0,65421,60,55,65536,1,0,1,3,0,15,158
|
||||
85,850000,10000,0,0,256,58,170,256,256,0,0,935,65533,3,0,65421,60,55,65536,1,0,1,4,0,16,159
|
||||
86,860000,10000,0,0,256,58,172,256,256,0,0,935,65533,3,0,65421,60,55,65536,1,0,1,4,0,16,159
|
||||
87,870000,10000,0,0,256,58,174,256,256,0,0,936,65533,3,0,65421,60,55,65536,1,0,1,5,0,17,160
|
||||
88,880000,10000,0,0,256,58,176,256,256,0,0,936,65533,3,0,65421,60,55,65536,1,0,1,5,0,17,160
|
||||
89,890000,10000,0,0,256,58,178,256,256,0,0,937,65533,3,0,65421,60,55,65536,1,0,1,6,0,18,161
|
||||
90,900000,10000,0,0,256,58,180,256,256,0,0,937,65533,3,0,65421,60,55,65536,1,0,1,6,0,18,161
|
||||
91,910000,10000,0,0,256,58,182,256,256,0,0,938,65533,3,0,65421,60,55,65536,1,0,1,7,0,19,162
|
||||
92,920000,10000,0,0,256,58,184,256,256,0,0,939,65533,3,0,65421,60,55,65536,1,0,1,8,0,20,163
|
||||
93,930000,10000,0,0,256,58,186,256,256,0,0,940,65533,3,0,65421,60,55,65536,1,0,1,9,0,21,164
|
||||
4040,40400000,39470000,0,0,1009562,82,3716,256,256,2041,4720565041403789312,942,65533,3,1,65418,60,58,65536,1,0,2,11,2,0,166
|
||||
176,1760000,18446744073670911616,0,0,36829,71,276,256,256,0,4895412794951710280,946,65533,3,1,65418,60,58,65536,1,0,0,0,6,3,170
|
||||
4041,40410000,38650000,0,0,995689,82,3717,256,256,2042,4720454982866829312,948,65533,3,1,65418,60,58,65536,1,0,2,2,8,0,172
|
||||
4042,40420000,10000,0,0,256,82,3718,256,256,1,0,948,65533,3,1,65418,60,58,65536,1,0,2,2,8,0,172
|
||||
4043,40430000,10000,0,0,256,82,3719,256,256,1,0,949,65533,3,1,65418,60,58,65536,1,0,2,3,9,0,173
|
||||
4044,40440000,10000,0,0,256,82,3788,256,256,1,0,950,65533,3,1,65418,60,58,65536,1,0,2,4,10,0,174
|
||||
4045,40450000,10000,0,0,256,82,3817,256,256,1,0,951,65533,3,1,65418,60,58,65536,1,0,2,5,11,0,175
|
||||
4046,40460000,10000,0,0,256,82,3818,256,256,1,0,952,65533,3,1,65418,60,58,65536,1,0,2,6,12,0,176
|
||||
4047,40470000,10000,0,0,256,82,3819,256,256,1,0,952,65533,3,1,65418,60,58,65536,1,0,2,6,12,0,176
|
||||
4048,40480000,10000,0,0,256,82,3820,256,256,1,0,952,65533,3,1,65418,60,58,65536,1,0,2,6,12,0,176
|
||||
4049,40490000,10000,0,0,256,82,3821,256,256,1,0,953,65533,3,1,65418,60,58,65536,1,0,2,7,13,0,177
|
||||
4050,40500000,10000,0,0,256,82,3822,256,256,1,0,953,65533,3,1,65418,60,58,65536,1,0,2,7,13,0,177
|
||||
4051,40510000,10000,0,0,256,82,3823,256,256,1,0,954,65533,3,1,65418,60,58,65536,1,0,2,8,14,0,178
|
||||
4052,40520000,10000,0,0,256,80,4317,256,256,1,0,954,65533,3,1,65418,60,58,65536,1,0,2,8,14,0,178
|
||||
4053,40530000,10000,0,0,256,80,4318,256,256,1,0,955,65533,3,1,65418,60,58,65536,1,0,2,9,15,0,179
|
||||
177,1770000,18446744073670791616,0,0,37085,71,273,256,256,0,4895412794951710221,956,65533,3,1,65418,60,58,65536,1,0,2,10,16,0,180
|
||||
178,1780000,10000,0,0,256,70,283,256,256,0,0,956,65533,3,1,65418,60,58,65536,1,0,2,10,16,0,180
|
||||
179,1790000,10000,0,0,256,70,285,256,256,0,0,957,65533,3,1,65418,60,58,65536,1,0,0,0,17,1,181
|
||||
180,1800000,10000,0,0,256,70,290,256,256,0,0,958,65533,3,1,65418,60,58,65536,1,0,0,0,18,2,182
|
||||
181,1810000,10000,0,0,256,70,295,256,256,0,0,958,65533,3,1,65418,60,58,65536,1,0,0,0,18,2,182
|
||||
182,1820000,10000,0,0,256,70,304,256,256,0,0,959,65533,3,1,65418,60,58,65536,1,0,0,0,19,3,183
|
||||
183,1830000,10000,0,0,256,70,315,256,256,0,0,959,65533,3,1,65418,60,58,65536,1,0,0,0,19,3,183
|
||||
184,1840000,10000,0,0,256,70,324,256,256,0,0,960,65533,3,1,65418,60,58,65536,1,0,0,0,20,4,184
|
||||
185,1850000,10000,0,0,256,70,326,256,256,0,0,961,65533,3,1,65418,60,58,65536,1,0,0,0,21,5,185
|
||||
186,1860000,10000,0,0,256,69,335,256,256,0,0,961,65533,3,1,65418,60,58,65536,1,0,0,0,21,5,185
|
||||
187,1870000,10000,0,0,256,69,338,256,256,0,0,962,65533,3,1,65418,60,58,65536,1,0,0,0,22,6,186
|
||||
188,1880000,10000,0,0,256,69,363,256,256,0,0,962,65533,3,1,65418,60,58,65536,1,0,0,0,22,6,186
|
||||
189,1890000,10000,0,0,256,67,382,256,256,0,0,963,65533,3,1,65418,60,58,65536,1,0,0,0,23,7,187
|
||||
94,940000,18446744073708601616,0,0,22956,60,188,256,256,0,4895412794951728683,1031,39891,42131,0,65406,72,58,65536,1,0,1,1,0,8,188
|
||||
95,950000,10000,0,0,256,60,192,256,256,0,0,1032,39891,42131,0,65406,72,58,65536,1,0,1,2,0,9,189
|
||||
96,960000,10000,0,0,256,58,194,256,256,0,0,1034,39891,42131,0,65406,72,58,65536,1,0,1,4,0,11,191
|
||||
97,970000,10000,0,0,256,58,197,256,256,0,0,1035,39891,42131,0,65406,72,58,65536,1,0,1,5,0,12,192
|
||||
98,980000,10000,0,0,256,58,209,256,256,0,0,1037,39891,42131,0,65406,72,58,65536,1,0,1,7,0,14,194
|
||||
99,990000,10000,0,0,256,56,275,256,256,0,0,1038,39891,42131,0,65406,72,58,65536,1,0,1,8,0,15,195
|
||||
100,1000000,10000,0,0,256,55,281,256,256,0,0,1040,39891,42131,0,65406,72,58,65536,1,0,1,10,0,17,197
|
||||
101,1010000,10000,0,0,256,55,283,256,256,0,0,1041,39891,42131,0,65406,72,58,65536,1,0,1,11,0,18,198
|
||||
102,1020000,10000,0,0,256,55,286,256,256,0,0,1042,39891,42131,0,65406,72,58,65536,1,0,1,12,0,19,199
|
||||
103,1030000,10000,0,0,256,55,289,256,256,0,0,1044,39891,42131,0,65406,72,58,65536,1,0,1,14,0,21,201
|
||||
104,1040000,10000,0,0,256,55,292,256,256,0,0,1045,39891,42131,0,65406,72,58,65536,1,0,1,15,0,22,202
|
||||
105,1050000,10000,0,0,256,55,295,256,256,0,0,1046,39891,42131,0,65406,72,58,65536,1,0,1,16,0,23,203
|
||||
106,1060000,10000,0,0,256,53,297,256,256,0,0,1048,39891,42131,0,65406,72,58,65536,1,0,1,18,0,25,205
|
||||
107,1070000,10000,0,0,256,53,300,256,256,0,0,1050,39891,42131,0,65406,72,58,65536,1,0,1,20,0,27,207
|
||||
4054,40540000,39470000,0,0,1009562,81,4319,256,256,2055,4720565041403789312,1053,39891,42131,1,65394,72,70,65536,1,0,2,23,2,0,210
|
||||
4055,40550000,10000,0,0,256,81,4320,256,256,1,0,1054,39891,42131,1,65394,72,70,65536,1,0,2,24,3,0,211
|
||||
4056,40560000,10000,0,0,256,81,4321,256,256,1,0,1057,39891,42131,1,65394,72,70,65536,1,0,2,27,6,0,214
|
||||
4057,40570000,10000,0,0,256,81,4322,256,256,1,0,1059,39891,42131,1,65394,72,70,65536,1,0,2,29,8,0,216
|
||||
4058,40580000,10000,0,0,256,81,4323,256,256,1,0,1060,39891,42131,1,65394,72,70,65536,1,0,2,30,9,0,217
|
||||
4059,40590000,10000,0,0,256,81,4324,256,256,1,0,1063,39891,42131,1,65394,72,70,65536,1,0,2,33,12,0,220
|
||||
4060,40600000,10000,0,0,256,82,4326,256,256,1,0,1065,39891,42131,1,65394,72,70,65536,1,0,2,35,14,0,222
|
||||
4061,40610000,10000,0,0,256,82,4327,256,256,1,0,1067,39891,42131,1,65394,72,70,65536,1,0,2,37,16,0,224
|
||||
4062,40620000,10000,0,0,256,82,4328,256,256,1,0,1070,39891,42131,1,65394,72,70,65536,1,0,2,40,19,0,227
|
||||
4063,40630000,10000,0,0,256,82,4329,256,256,1,0,1071,39891,42131,1,65394,72,70,65536,1,0,2,41,20,0,228
|
||||
4064,40640000,10000,0,0,256,82,4330,256,256,1,0,1073,39891,42131,1,65394,72,70,65536,1,0,2,43,22,0,230
|
||||
4065,40650000,10000,0,0,256,82,4682,256,256,1,0,1076,39891,42131,1,65394,72,70,65536,1,0,2,46,25,0,233
|
||||
4066,40660000,10000,0,0,256,82,4683,256,256,1,0,1078,39891,42131,1,65394,72,70,65536,1,0,2,48,27,0,235
|
||||
190,1900000,18446744073670791616,0,0,40413,66,356,256,256,0,4895412794951710221,1081,39891,42131,1,65394,72,70,65536,1,0,0,0,30,2,238
|
||||
191,1910000,10000,0,0,256,66,359,256,256,0,0,1083,39891,42131,1,65394,72,70,65536,1,0,0,0,32,4,240
|
||||
192,1920000,10000,0,0,256,66,361,256,256,0,0,1084,39891,42131,1,65394,72,70,65536,1,0,0,0,33,5,241
|
||||
193,1930000,10000,0,0,256,66,368,256,256,0,0,1086,39891,42131,1,65394,72,70,65536,1,0,0,0,35,7,243
|
||||
194,1940000,10000,0,0,256,66,367,256,256,0,0,1088,39891,42131,1,65394,72,70,65536,1,0,0,0,37,9,245
|
||||
195,1950000,10000,0,0,256,66,369,256,256,0,0,1090,39891,42131,1,65394,72,70,65536,1,0,0,0,39,11,247
|
||||
196,1960000,10000,0,0,256,66,376,256,256,0,0,1091,39891,42131,1,65394,72,70,65536,1,0,0,0,40,12,248
|
||||
197,1970000,10000,0,0,256,66,379,256,256,0,0,1094,39891,42131,1,65394,72,70,65536,1,0,0,0,43,15,251
|
||||
198,1980000,10000,0,0,256,66,381,256,256,0,0,1096,39891,42131,1,65394,72,70,65536,1,0,0,0,45,17,253
|
||||
199,1990000,10000,0,0,256,66,384,256,256,0,0,1098,39891,42131,1,65394,72,70,65536,1,0,0,0,47,19,255
|
||||
200,2000000,10000,0,0,256,66,391,256,256,0,0,1100,39891,42131,1,65394,72,70,65536,1,0,0,0,49,21,257
|
||||
201,2010000,10000,0,0,256,66,393,256,256,0,0,1102,39891,42131,1,65394,72,70,65536,1,1,0,0,51,23,0
|
||||
202,2020000,10000,0,0,256,66,400,256,256,0,0,1104,39891,42131,1,65394,72,70,65536,1,2,0,0,53,25,0
|
||||
203,2030000,10000,0,0,256,66,427,256,256,0,0,1106,39891,42131,1,65394,72,70,65536,1,3,0,0,55,27,0
|
||||
4067,40670000,38640000,0,0,995433,82,4684,256,256,2068,4720453640689549312,1130,39891,42131,1,65387,72,77,65536,1,4,0,0,57,29,0
|
||||
104,1040000,890000,0,0,15665,80,42,256,256,0,4695806354533646336,405,65536,0,1,65536,0,0,65536,1,0,0,0,5,5,5
|
||||
|
||||
|
@@ -0,0 +1,2 @@
|
||||
tick_number,elapsed_ns,tick_interval_ns,cache_hits_delta,bucket_hits_delta,word_executions_delta,hot_word_count,avg_word_heat_q48,window_width,actual_window_size,predicted_label_hits,jitter_bits,apic_ticks,time_trust_q48,variance_q48,vm_call_depth_max,hera_heat_q48,hermes_heat_q48,artemis_heat_q48,fleet_k_q48,fleet_conserved,switch_count_cumulative,switch_current_slot,switch_hera_readiness,switch_hermes_readiness,switch_artemis_readiness,switch_ticks_since
|
||||
104,1040000,890000,0,0,15667,80,42,256,256,0,4695806354533646336,453,65536,0,1,65536,0,0,65536,1,0,0,0,2,2,2
|
||||
|
@@ -0,0 +1,2 @@
|
||||
tick_number,elapsed_ns,tick_interval_ns,cache_hits_delta,bucket_hits_delta,word_executions_delta,hot_word_count,avg_word_heat_q48,window_width,actual_window_size,predicted_label_hits,jitter_bits,apic_ticks,time_trust_q48,variance_q48,vm_call_depth_max,hera_heat_q48,hermes_heat_q48,artemis_heat_q48,fleet_k_q48,fleet_conserved,switch_count_cumulative,switch_current_slot,switch_hera_readiness,switch_hermes_readiness,switch_artemis_readiness,switch_ticks_since
|
||||
104,1040000,890000,0,0,15665,80,42,256,256,0,4695806354533646336,436,65536,0,1,65536,0,0,65536,1,0,0,0,4,4,4
|
||||
|
@@ -0,0 +1,2 @@
|
||||
tick_number,elapsed_ns,tick_interval_ns,cache_hits_delta,bucket_hits_delta,word_executions_delta,hot_word_count,avg_word_heat_q48,window_width,actual_window_size,predicted_label_hits,jitter_bits,apic_ticks,time_trust_q48,variance_q48,vm_call_depth_max,hera_heat_q48,hermes_heat_q48,artemis_heat_q48,fleet_k_q48,fleet_conserved,switch_count_cumulative,switch_current_slot,switch_hera_readiness,switch_hermes_readiness,switch_artemis_readiness,switch_ticks_since
|
||||
104,1040000,890000,0,0,15665,80,42,256,256,0,4695806354533646336,479,65536,0,1,65536,0,0,65536,1,0,0,0,5,5,5
|
||||
|
@@ -0,0 +1,2 @@
|
||||
tick_number,elapsed_ns,tick_interval_ns,cache_hits_delta,bucket_hits_delta,word_executions_delta,hot_word_count,avg_word_heat_q48,window_width,actual_window_size,predicted_label_hits,jitter_bits,apic_ticks,time_trust_q48,variance_q48,vm_call_depth_max,hera_heat_q48,hermes_heat_q48,artemis_heat_q48,fleet_k_q48,fleet_conserved,switch_count_cumulative,switch_current_slot,switch_hera_readiness,switch_hermes_readiness,switch_artemis_readiness,switch_ticks_since
|
||||
104,1040000,890000,0,0,15665,80,42,256,256,0,4695806354533646336,405,65536,0,1,65536,0,0,65536,1,0,0,0,5,5,5
|
||||
|
@@ -78,8 +78,21 @@ VMUuid sk_vm_switch_signal_take_pending(void);
|
||||
/* Call once, from the same checkpoint, immediately after a switch
|
||||
* sk_vm_switch_signal_take_pending() requested actually executes (not if
|
||||
* the target turned out invalid/self) -- feeds the DoE CSV counters
|
||||
* below. */
|
||||
void sk_vm_switch_signal_note_switch_performed(void);
|
||||
* below. Also resets `target_id`'s own readiness/has_work directly
|
||||
* (Stage 3 follow-on correction, 2026-09-14) -- see the .c file's own doc
|
||||
* comment on why this can't be left to tick()'s current-slot polling. */
|
||||
void sk_vm_switch_signal_note_switch_performed(VMUuid target_id);
|
||||
|
||||
/* Message-arrival eligibility hook (FABRIC-3.md §XXVIII Stage 3 follow-on,
|
||||
* 2026-09-14): mark that VM `vm_id` was just sent a message (the FORTH-side
|
||||
* MSG-SEND hook in capsules/common/messaging.4th calls this via the new
|
||||
* SWITCH-MARK-WORK primitive, mainline, single-writer). Consulted by
|
||||
* sk_vm_switch_signal_tick()'s own readiness->pending decision so a VM
|
||||
* with nothing recently sent to it never becomes a switch target purely by
|
||||
* sitting idle long enough -- closes the wasteful (but, since the Stage 3
|
||||
* stack-ownership fix, no longer corrupting) trampoline-bounce cycle for
|
||||
* an idle participant. No-op for an unregistered vm_id. */
|
||||
void sk_vm_switch_signal_mark_work(VMUuid vm_id);
|
||||
|
||||
/* DoE CSV read-only exposure (FABRIC-3.md §XXVIII Stage 3 follow-on,
|
||||
* 2026-09-13) -- all of this state already existed for the switch
|
||||
|
||||
@@ -46,6 +46,15 @@ struct VM;
|
||||
|
||||
int sk_vm_context_switch(struct VM *from, struct VM *to);
|
||||
|
||||
/* FABRIC-3.md §XXVIII Stage 3 follow-on (2026-09-14): which VM is
|
||||
* currently physically running, tracked by the switch mechanism itself --
|
||||
* see switch.c's own doc comment on g_switch_current_vm for why this
|
||||
* exists instead of reusing vm_log_attributed_vm(). sk_vm_switch_set_
|
||||
* current() seeds the initial value (whoever is running before any
|
||||
* switch has ever happened) -- call once, at Stage 3 registration time. */
|
||||
struct VM *sk_vm_switch_current_vm(void);
|
||||
void sk_vm_switch_set_current(struct VM *vm);
|
||||
|
||||
#endif /* __STARKERNEL__ */
|
||||
|
||||
#endif /* STARKERNEL_VM_SWITCH_H */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -29,7 +29,7 @@
|
||||
|
||||
#include "starkernel/capsule_vm_switch_signal.h"
|
||||
#include "vm.h"
|
||||
#include "starkernel/log_attrib.h" /* vm_log_attributed_vm() */
|
||||
#include "starkernel/vm/switch.h" /* sk_vm_switch_current_vm() -- see below */
|
||||
#include <stddef.h>
|
||||
|
||||
/* Headroom beyond today's 3 participants (Hera/Hermes/Artemis) -- see
|
||||
@@ -49,6 +49,11 @@
|
||||
typedef struct {
|
||||
VMUuid vm_id;
|
||||
uint32_t readiness;
|
||||
int has_work; /* Stage 3 follow-on (2026-09-14): set by
|
||||
* sk_vm_switch_signal_mark_work() (mainline,
|
||||
* MSG-SEND hook), cleared here in tick() the
|
||||
* instant this slot becomes current -- see that
|
||||
* function's own doc comment in the header. */
|
||||
} sk_switch_slot_entry_t;
|
||||
|
||||
static sk_switch_slot_entry_t g_slots[SK_SWITCH_MAX_SLOTS];
|
||||
@@ -73,6 +78,7 @@ int sk_vm_switch_signal_register(VMUuid vm_id) {
|
||||
if (g_slot_count >= SK_SWITCH_MAX_SLOTS) return -1;
|
||||
g_slots[g_slot_count].vm_id = vm_id;
|
||||
g_slots[g_slot_count].readiness = 0;
|
||||
g_slots[g_slot_count].has_work = 0;
|
||||
return g_slot_count++;
|
||||
}
|
||||
|
||||
@@ -80,8 +86,21 @@ void sk_vm_switch_signal_tick(void) {
|
||||
VM *current;
|
||||
int current_slot, i;
|
||||
|
||||
current = vm_log_attributed_vm();
|
||||
if (!current) return; /* nothing interpreting right now (boot/driver/HAL context) */
|
||||
/* FABRIC-3.md §XXVIII Stage 3 follow-on correction (2026-09-14): was
|
||||
* vm_log_attributed_vm() -- wrong source. That tracks nested
|
||||
* vm_interpret() calls for log attribution and has no way to know a
|
||||
* VM is running while parked inside switch.c's own raw-C trampoline
|
||||
* (sk_vm_switch_entry()), which never itself calls vm_interpret(). A
|
||||
* VM that only ever ran the trampoline was therefore never seen as
|
||||
* "current," so its own readiness/has_work below never reset --
|
||||
* tick() re-armed the very next timer tick, forever, once nothing
|
||||
* else happened to be independently flipping attribution around it
|
||||
* (found live: a switch storm, 101% CPU, log frozen). sk_vm_switch_
|
||||
* current_vm() is authoritative instead: the switch mechanism itself
|
||||
* updates it on every switch, so it reflects who is physically
|
||||
* running regardless of whether that VM ever calls vm_interpret(). */
|
||||
current = sk_vm_switch_current_vm();
|
||||
if (!current) return; /* boot: no switch has happened yet, not seeded */
|
||||
|
||||
current_slot = slot_for_vm_id(current->stadium_vm_id);
|
||||
if (current_slot < 0) return; /* current VM isn't a registered participant */
|
||||
@@ -92,6 +111,7 @@ void sk_vm_switch_signal_tick(void) {
|
||||
for (i = 0; i < g_slot_count; i++) {
|
||||
if (i == current_slot) {
|
||||
g_slots[i].readiness = 0;
|
||||
g_slots[i].has_work = 0;
|
||||
} else {
|
||||
g_slots[i].readiness++;
|
||||
}
|
||||
@@ -99,7 +119,9 @@ void sk_vm_switch_signal_tick(void) {
|
||||
|
||||
if (!g_pending) {
|
||||
for (i = 0; i < g_slot_count; i++) {
|
||||
if (i != current_slot && g_slots[i].readiness >= SK_SWITCH_READINESS_THRESHOLD) {
|
||||
if (i != current_slot &&
|
||||
g_slots[i].readiness >= SK_SWITCH_READINESS_THRESHOLD &&
|
||||
g_slots[i].has_work) {
|
||||
g_pending = 1;
|
||||
g_pending_target = g_slots[i].vm_id;
|
||||
break;
|
||||
@@ -114,11 +136,38 @@ VMUuid sk_vm_switch_signal_take_pending(void) {
|
||||
return g_pending_target;
|
||||
}
|
||||
|
||||
void sk_vm_switch_signal_note_switch_performed(void) {
|
||||
void sk_vm_switch_signal_note_switch_performed(VMUuid target_id) {
|
||||
/* FABRIC-3.md §XXVIII Stage 3 follow-on correction (2026-09-14):
|
||||
* reset the target's own readiness/has_work HERE, deterministically,
|
||||
* at the switch decision point -- not by waiting for tick()'s
|
||||
* current-slot polling to observe it running. That polling depends on
|
||||
* sk_vm_switch_current_vm() catching a real ISR tick during whatever
|
||||
* window the target is genuinely "current" for, and for a VM whose
|
||||
* only production behavior is switch.c's placeholder trampoline (an
|
||||
* immediate yield-back), that window can be as small as a few
|
||||
* instructions -- too narrow for a timer tick to reliably land in.
|
||||
* Without this, the target's eligibility never clears, tick() re-arms
|
||||
* on the very next timer tick, and the result is a continuous switch
|
||||
* storm (found live: 101% CPU, zero forward progress). This makes
|
||||
* correctness independent of ISR timing; current_slot (via
|
||||
* sk_vm_switch_current_vm()/tick()) remains useful as a DoE-observable
|
||||
* value and for excluding the running slot from readiness accrual,
|
||||
* but is no longer load-bearing for storm prevention. */
|
||||
int slot = slot_for_vm_id(target_id);
|
||||
if (slot >= 0) {
|
||||
g_slots[slot].readiness = 0;
|
||||
g_slots[slot].has_work = 0;
|
||||
}
|
||||
g_switch_count++;
|
||||
g_ticks_since_switch = 0;
|
||||
}
|
||||
|
||||
void sk_vm_switch_signal_mark_work(VMUuid vm_id) {
|
||||
int slot = slot_for_vm_id(vm_id);
|
||||
if (slot < 0) return;
|
||||
g_slots[slot].has_work = 1;
|
||||
}
|
||||
|
||||
uint64_t sk_vm_switch_signal_switch_count(void) {
|
||||
return g_switch_count;
|
||||
}
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
#include "starkernel/capsule_vm_physics.h"
|
||||
#include "starkernel/vm/vm_internal.h"
|
||||
#include "starkernel/vm/stadium.h" /* item 4.2 -- STADIUM-* words */
|
||||
#include "starkernel/capsule_vm_switch_signal.h" /* FABRIC-3.md §XXVIII Stage 3 follow-on -- SWITCH-MARK-WORK */
|
||||
#include "starkernel/vm/stadium_words.h" /* item 4.2 -- stadium_words_resident_heat() */
|
||||
#include "starkernel/repl.h"
|
||||
#include "starkernel/capsule_generated.h"
|
||||
@@ -785,6 +786,43 @@ static void mama_word_vm_exec(VM *vm)
|
||||
/* Stack clean on exit */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief SWITCH-MARK-WORK ( name-caddr name-u -- )
|
||||
* FABRIC-3.md §XXVIII Stage 3 follow-on (2026-09-14): message-arrival
|
||||
* eligibility hook. Called from MSG-SEND (capsules/common/messaging.4th)
|
||||
* every time a message is sent to a VM, so the Stage 3 switch signal can
|
||||
* tell "has recently been sent something" apart from "has just been idle
|
||||
* long enough" before ever selecting it as a switch target. Silently
|
||||
* ignores a malformed or unknown name -- this fires on the hot path of
|
||||
* every message send, not a user-facing command, so it must never error
|
||||
* or spam the console.
|
||||
*/
|
||||
static void mama_word_switch_mark_work(VM *vm)
|
||||
{
|
||||
char name[VM_NAME_MAX];
|
||||
cell_t u, caddr;
|
||||
uint32_t i;
|
||||
VMRegistryEntry entry;
|
||||
|
||||
if (vm->dsp < 2) { vm->error = 1; return; }
|
||||
|
||||
u = vm_pop(vm);
|
||||
caddr = vm_pop(vm);
|
||||
|
||||
if (u <= 0 || (uint32_t)u >= VM_NAME_MAX) return;
|
||||
|
||||
{
|
||||
const uint8_t *p = vm_ptr(vm, (vaddr_t)caddr);
|
||||
if (!p) return;
|
||||
for (i = 0; i < (uint32_t)u; i++) name[i] = (char)p[i];
|
||||
name[u] = '\0';
|
||||
}
|
||||
|
||||
if (capsule_vm_find_by_name_nocase(name, &entry) == 0) {
|
||||
sk_vm_switch_signal_mark_work(entry.vm_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief VM-CALL ( cmd-caddr cmd-u vm-name-caddr vm-name-u -- n )
|
||||
* Like VM-EXEC but pops one cell from the target VM's TOS and pushes
|
||||
@@ -1653,6 +1691,7 @@ void register_mama_forth_words(VM *vm)
|
||||
register_word(vm, "VM-PHYSICS-STATUS", mama_word_vm_physics_status);
|
||||
register_word(vm, "VM-STEP", mama_word_vm_step);
|
||||
register_word(vm, "VM-EXEC", mama_word_vm_exec);
|
||||
register_word(vm, "SWITCH-MARK-WORK", mama_word_switch_mark_work);
|
||||
register_word(vm, "VM-CALL", mama_word_vm_call);
|
||||
register_word(vm, "VM-HEAT", mama_word_vm_heat);
|
||||
/* FABRIC-3.md SXX: the 8 STADIUM-* primitives register_child_vm_words()
|
||||
@@ -1711,6 +1750,7 @@ void register_mama_forth_words(VM *vm)
|
||||
register_word(vm, "VM-PHYSICS-STATUS", mama_word_vm_physics_status);
|
||||
register_word(vm, "VM-STEP", mama_word_vm_step);
|
||||
register_word(vm, "VM-EXEC", mama_word_vm_exec);
|
||||
register_word(vm, "SWITCH-MARK-WORK", mama_word_switch_mark_work);
|
||||
register_word(vm, "VM-CALL", mama_word_vm_call);
|
||||
register_word(vm, "VM-HEAT", mama_word_vm_heat);
|
||||
/* FABRIC-3.md SXX: the 8 STADIUM-* primitives register_child_vm_words()
|
||||
@@ -1946,6 +1986,7 @@ void register_child_vm_words(VM *vm)
|
||||
register_word(vm, "STOP", mama_word_stop);
|
||||
register_word(vm, "EXEC", mama_word_exec);
|
||||
register_word(vm, "VM-EXEC", mama_word_vm_exec);
|
||||
register_word(vm, "SWITCH-MARK-WORK", mama_word_switch_mark_work);
|
||||
register_word(vm, "VM-CALL", mama_word_vm_call);
|
||||
register_word(vm, "VM-HEAT", mama_word_vm_heat);
|
||||
/* USE (FABRIC-2.md §F.24): not console-specific -- any VM can
|
||||
|
||||
@@ -64,6 +64,7 @@ EFI_RUNTIME_SERVICES *g_sk_runtime_services = NULL;
|
||||
#include "starkernel/capsule_birth.h" /* capsule_birth_mama, capsule_find_mama_init */
|
||||
#include "starkernel/capsule_zuse_boot.h" /* capsule_zuse_boot_load_root_pubkey */
|
||||
#include "starkernel/capsule_vm_switch_signal.h" /* FABRIC-3.md §XXVIII Stage 3 */
|
||||
#include "starkernel/vm/switch.h" /* sk_vm_switch_set_current() -- Stage 3 follow-on */
|
||||
#include "starkernel/artemis_sig.h" /* artemis_sig_check/genesis_stamp */
|
||||
#include "starkernel/kmalloc.h"
|
||||
#include "starkernel/repl.h"
|
||||
@@ -997,6 +998,11 @@ static void kernel_main_deep(BootInfo *boot_info) {
|
||||
VMRegistryEntry hera_entry, hermes_entry, artemis_entry;
|
||||
if (capsule_vm_registry_get(vm_uuid_hera(), &hera_entry) == 0) {
|
||||
sk_vm_switch_signal_register(hera_entry.vm_id);
|
||||
/* Seed the switch mechanism's own "who is running" tracker
|
||||
* (FABRIC-3.md §XXVIII Stage 3 follow-on, 2026-09-14) -- Hera
|
||||
* is genuinely the one running here, before any switch has
|
||||
* ever happened. */
|
||||
sk_vm_switch_set_current(mama);
|
||||
}
|
||||
if (capsule_vm_find_by_name_nocase("Hermes", &hermes_entry) == 0 &&
|
||||
hermes_entry.state == VM_STATE_LIVE) {
|
||||
|
||||
@@ -51,6 +51,26 @@ extern uint64_t sk_vm_switch_prime(uint64_t stack_top, void *entry);
|
||||
* who most recently switched into it does. */
|
||||
static VM *g_switch_entry_vm;
|
||||
|
||||
/* FABRIC-3.md §XXVIII Stage 3 follow-on (2026-09-14): which VM is
|
||||
* currently running, from the switch mechanism's own point of view --
|
||||
* independent of vm_log_attributed_vm() (vm_core.c), which is scoped to
|
||||
* nested vm_interpret() calls for log-source attribution and has no way
|
||||
* to know a VM is "running" while parked inside this file's own raw C
|
||||
* trampoline (sk_vm_switch_entry()), never itself calling vm_interpret().
|
||||
* sk_vm_switch_signal_tick() (capsule_vm_switch_signal.c) consults this
|
||||
* instead of vm_log_attributed_vm() for exactly that reason -- see its
|
||||
* own updated comment. Single-writer-mainline, same discipline as
|
||||
* g_switch_entry_vm above: set unconditionally on every switch, by the
|
||||
* only code path that can ever change who is physically running.
|
||||
* Seeded once at boot via sk_vm_switch_set_current() for whichever VM is
|
||||
* running before any switch has ever happened (Hera, at Stage 3
|
||||
* registration time -- kernel_main.c). */
|
||||
static VM *g_switch_current_vm;
|
||||
|
||||
VM *sk_vm_switch_current_vm(void) { return g_switch_current_vm; }
|
||||
|
||||
void sk_vm_switch_set_current(VM *vm) { g_switch_current_vm = vm; }
|
||||
|
||||
/**
|
||||
* sk_vm_switch_entry - trampoline for a VM's first-ever entry.
|
||||
*
|
||||
@@ -64,6 +84,18 @@ static VM *g_switch_entry_vm;
|
||||
* first. Must never fall off the end -- there is no legitimate return
|
||||
* address below a synthetic first-entry frame, unlike an ordinary
|
||||
* function.
|
||||
*
|
||||
* FABRIC-3.md §XXVIII Stage 3 follow-on (2026-09-14): an attempt to make
|
||||
* this attributable by calling vm_interpret(self, "MSG-TICK") here was
|
||||
* tried and reverted -- it introduced a second, distinct hang (a stall in
|
||||
* sk_repl_headless_wait()'s WIREBIND-attachment wait, not root-caused) in
|
||||
* place of the switch-storm it was meant to fix. The switch-storm's real
|
||||
* cause (sk_vm_switch_signal_tick()'s "who is current" check via
|
||||
* vm_log_attributed_vm() never seeing a VM that only ever runs this raw
|
||||
* C trampoline) is instead fixed at the source in switch.c/
|
||||
* capsule_vm_switch_signal.c: sk_vm_context_switch() now tracks "current"
|
||||
* itself, independent of vm_interpret()'s own attribution bookkeeping.
|
||||
* This placeholder's behavior is therefore unchanged from Stage 2.
|
||||
*/
|
||||
void sk_vm_switch_entry(void) {
|
||||
VM *self = g_switch_entry_vm;
|
||||
@@ -95,12 +127,14 @@ int sk_vm_context_switch(VM *from, VM *to) {
|
||||
|
||||
capsule_vm_set_state(to->stadium_vm_id, VM_STATE_LIVE);
|
||||
capsule_vm_set_state(from->stadium_vm_id, VM_STATE_SWITCHED_OUT);
|
||||
g_switch_current_vm = to;
|
||||
|
||||
sk_vm_switch_to(&from->native_stack_saved_sp, new_sp);
|
||||
|
||||
/* Resumes here only once something later switches back to `from` --
|
||||
* from `from`'s own point of view, this call simply took a while. */
|
||||
capsule_vm_set_state(from->stadium_vm_id, VM_STATE_LIVE);
|
||||
g_switch_current_vm = from;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -920,14 +920,16 @@ void execute_colon_word(VM* vm)
|
||||
* `vm`, which could be an arbitrary number of ticks later --
|
||||
* calling it after would attribute switch_count_cumulative/
|
||||
* switch_ticks_since to the wrong (resume) event instead of the
|
||||
* actual switch-out this counts. */
|
||||
* actual switch-out this counts. It also resets target_id's own
|
||||
* eligibility state directly (2026-09-14 correction) -- see its
|
||||
* own doc comment for why that can't be left to ISR polling. */
|
||||
if (sk_vm_at_outermost_interpret()) {
|
||||
VMUuid target_id = sk_vm_switch_signal_take_pending();
|
||||
if (!vm_uuid_equal(target_id, vm_uuid_none())) {
|
||||
VMRegistryEntry target_entry;
|
||||
if (capsule_vm_registry_get(target_id, &target_entry) == 0 &&
|
||||
target_entry.vm_ptr && target_entry.vm_ptr != (void *)vm) {
|
||||
sk_vm_switch_signal_note_switch_performed();
|
||||
sk_vm_switch_signal_note_switch_performed(target_id);
|
||||
sk_vm_context_switch(vm, (VM *)target_entry.vm_ptr);
|
||||
/* Resumes here once something later switches back. */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user