Add Artemis compudynamics implementation plan; add stress campaign fixture
The 30-replicate Artemis surface-stress campaign ran across all three architectures: 30 reps x 50 trials x 3 arches = 4500 trials, zero failures. The block_words.c stale-pointer cache-aliasing fix holds at scale. Adds ART-STRESS-CAMPAIGN (block 4174) plus ART-STRESS-REP rep-tagging in the CSV header/summary emitters, so a multi-replicate run is distinguishable in the serial log. Campaign auto-invoke is left enabled in block 4170 for now; Makefile.starkernel's QEMU boot deadlines stay at 12h to accommodate long-running experiments. Adds docs/working/architecture/ARTEMIS-COMPUDYNAMICS-IMPLEMENTATION-PLAN-20260802.md, which documents the real gap this campaign exposed: block heat and message heat do not decay at all. ART-TICK has zero call sites anywhere in the tree, and HERMES-TICK has zero C call sites -- every caller is Hera poking it by hand. BLK-HEAT@/MSG-HEAT@ read a number nothing ages, so blocks never reap by cooling and message TTL never expires on its own. The plan mirrors word-level physics as the reference model: lazy decay at each access point against vm->heartbeat.tick_count, plus a bounded background sweep with a resumable cursor (the existing answer to "sweeping 22,998 blocks per tick is too expensive"). Phase 1 Artemis, Phase 2 Hermes, Phase 3 K participation deferred behind the Logical BAM. The plan's preamble also records a wrong turn taken while investigating: chasing VM-fleet heat instead of block heat, and building synthetic Hera-driven VM-EXEC calls to force a physics reading -- which TRIPOD.md prohibits outright. That work was reverted; the record is kept so it isn't repeated. Status: plan approved in shape, NOT final and NOT started. Six open questions need answers and further design discussion is pending. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1cb68502fb
commit
7597a9ccd4
+3
-3
@@ -714,7 +714,7 @@ ifeq ($(ARCH),amd64)
|
|||||||
-serial chardev:cserial \
|
-serial chardev:cserial \
|
||||||
-display none \
|
-display none \
|
||||||
-no-reboot & QPID=$$!; \
|
-no-reboot & QPID=$$!; \
|
||||||
DEADLINE=$$(( $$(date +%s) + 1800 )); \
|
DEADLINE=$$(( $$(date +%s) + 43200 )); \
|
||||||
echo " Waiting for ok> / zuse)ok> prompt..."; \
|
echo " Waiting for ok> / zuse)ok> prompt..."; \
|
||||||
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
|
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
|
||||||
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
|
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
|
||||||
@@ -796,7 +796,7 @@ else ifeq ($(ARCH),aarch64)
|
|||||||
-m 2048 \
|
-m 2048 \
|
||||||
-no-reboot \
|
-no-reboot \
|
||||||
-d guest_errors & QPID=$$!; \
|
-d guest_errors & QPID=$$!; \
|
||||||
DEADLINE=$$(( $$(date +%s) + 1800 )); \
|
DEADLINE=$$(( $$(date +%s) + 43200 )); \
|
||||||
echo " Waiting for ok> / zuse)ok> prompt..."; \
|
echo " Waiting for ok> / zuse)ok> prompt..."; \
|
||||||
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
|
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
|
||||||
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
|
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
|
||||||
@@ -894,7 +894,7 @@ else ifeq ($(ARCH),riscv64)
|
|||||||
-display none \
|
-display none \
|
||||||
-no-reboot \
|
-no-reboot \
|
||||||
-d guest_errors & QPID=$$!; \
|
-d guest_errors & QPID=$$!; \
|
||||||
DEADLINE=$$(( $$(date +%s) + 3600 )); \
|
DEADLINE=$$(( $$(date +%s) + 43200 )); \
|
||||||
echo " Waiting for ok> / zuse)ok> prompt..."; \
|
echo " Waiting for ok> / zuse)ok> prompt..."; \
|
||||||
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
|
while ! grep -qE '\[Hera\].*(zuse\))?ok>' $$LOG 2>/dev/null; do \
|
||||||
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
|
[ $$(date +%s) -ge $$DEADLINE ] && echo " TIMEOUT waiting for ok>" && break; \
|
||||||
|
|||||||
+222
-216
File diff suppressed because it is too large
Load Diff
@@ -263,6 +263,7 @@ VARIABLE S-IDX
|
|||||||
VARIABLE S-STRIDE
|
VARIABLE S-STRIDE
|
||||||
VARIABLE S-CUR
|
VARIABLE S-CUR
|
||||||
VARIABLE S-ACTUAL
|
VARIABLE S-ACTUAL
|
||||||
|
VARIABLE ART-STRESS-REP
|
||||||
Block 4161
|
Block 4161
|
||||||
( Trial record accessors )
|
( Trial record accessors )
|
||||||
: SLBN@ ( i -- lbn ) CELLS ART-STRESS-LBN + @ ;
|
: SLBN@ ( i -- lbn ) CELLS ART-STRESS-LBN + @ ;
|
||||||
@@ -274,7 +275,8 @@ Block 4172
|
|||||||
( so it can be grepped like the DoE CSVs. Every )
|
( so it can be grepped like the DoE CSVs. Every )
|
||||||
( trial emits a row, pass or fail -- no silent skips. )
|
( trial emits a row, pass or fail -- no silent skips. )
|
||||||
: SCSV-HEADER ( n -- )
|
: SCSV-HEADER ( n -- )
|
||||||
." [ARTSTRESS] HEADER,n=" DUP . CR
|
." [ARTSTRESS] HEADER,rep=" ART-STRESS-REP @ .
|
||||||
|
." ,n=" DUP . CR
|
||||||
." [ARTSTRESS] trial,lbn,pat,result" CR ;
|
." [ARTSTRESS] trial,lbn,pat,result" CR ;
|
||||||
: SCSV-ROW ( -- )
|
: SCSV-ROW ( -- )
|
||||||
." [ARTSTRESS] "
|
." [ARTSTRESS] "
|
||||||
@@ -288,8 +290,8 @@ Block 4173
|
|||||||
( its absence means the data is incomplete, full )
|
( its absence means the data is incomplete, full )
|
||||||
( stop, not "probably fine." )
|
( stop, not "probably fine." )
|
||||||
: SCSV-SUMMARY ( -- )
|
: SCSV-SUMMARY ( -- )
|
||||||
." [ARTSTRESS] SUMMARY,"
|
." [ARTSTRESS] SUMMARY,rep=" ART-STRESS-REP @ .
|
||||||
ART-STRESS-N @ . ." ,"
|
." ," ART-STRESS-N @ . ." ,"
|
||||||
ART-STRESS-PASS @ . ." ,"
|
ART-STRESS-PASS @ . ." ,"
|
||||||
ART-STRESS-FAIL @ . CR ;
|
ART-STRESS-FAIL @ . CR ;
|
||||||
Block 4162
|
Block 4162
|
||||||
@@ -396,12 +398,25 @@ Block 4169
|
|||||||
ART-STRESS-RUN ART-STRESS-REPORT
|
ART-STRESS-RUN ART-STRESS-REPORT
|
||||||
ART-STRESS-CLEANUP ;
|
ART-STRESS-CLEANUP ;
|
||||||
: ART-STRESS ( -- ) 424242 50 ART-STRESS-TEST ;
|
: ART-STRESS ( -- ) 424242 50 ART-STRESS-TEST ;
|
||||||
|
Block 4174
|
||||||
|
( Campaign driver -- N independent replicate runs, )
|
||||||
|
( each a distinct seed, for statistical power )
|
||||||
|
( (Captain Bob: minimum 30 reps). Emits a CAMPAIGN )
|
||||||
|
( marker so analysis can auto-detect N from the log. )
|
||||||
|
30 CONSTANT ART-STRESS-NREPS
|
||||||
|
: ART-STRESS-SEED ( i -- seed ) 1009 * 424242 + ;
|
||||||
|
: ART-STRESS-CAMPAIGN ( -- )
|
||||||
|
." [ARTSTRESS] CAMPAIGN,nreps=" ART-STRESS-NREPS . CR
|
||||||
|
ART-STRESS-NREPS 0 DO
|
||||||
|
I ART-STRESS-REP !
|
||||||
|
I ART-STRESS-SEED 50 ART-STRESS-TEST
|
||||||
|
LOOP
|
||||||
|
." [ARTSTRESS] CAMPAIGN-DONE" CR ;
|
||||||
Block 4170
|
Block 4170
|
||||||
( Disabled by default -- uncomment to run the surface )
|
( TEMP: 30-replicate campaign enabled for the )
|
||||||
( stress test automatically at every boot. Normally )
|
( K-invariant/heartbeat verification run. Revert to )
|
||||||
( invoked manually instead: ART-STRESS or )
|
( "\ ART-STRESS" (disabled) once that run is done. )
|
||||||
( <seed> <reps> ART-STRESS-TEST from the console. )
|
ART-STRESS-CAMPAIGN
|
||||||
\ ART-STRESS
|
|
||||||
Block 4851
|
Block 4851
|
||||||
( Cheap touch target for Phase 3 fleet DoE workload -- O(1), )
|
( Cheap touch target for Phase 3 fleet DoE workload -- O(1), )
|
||||||
( unlike ART-TICK/ART-STATUS which scan all ART-DATA-BLKS. )
|
( unlike ART-TICK/ART-STATUS which scan all ART-DATA-BLKS. )
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
+51884
-2496
File diff suppressed because it is too large
Load Diff
+51936
-2541
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
Reference in New Issue
Block a user