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
574 B
574 B
| 1 | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 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 |