Verify turtle.4th rendering live, revert overdue ART-STRESS-CAMPAIGN disable

Disabled capsules/artemis/init.4th block 4170's ART-STRESS-CAMPAIGN -- its
own comment already said to revert to disabled once the K-invariant/
heartbeat verification run (item 4.6, closed earlier this session) was
done. This was the actual ~25-30 minute wall blocking interactive REPL
access, unrelated to any DoE mechanism.

Verified capsules/turtle.4th and capsules/sdk.4th live in a gtk-display
QEMU session: a red hexagon (6 100 POLYGON) and a green self-intersecting
star (100 STAR) both render with correct geometry and color. Screenshot in
evidence/amd64/.

Two real obstacles found and worked around along the way: CS's full-
framebuffer PLOT loop is far slower under TCG than previously documented
(closer to 20+ minutes than "slow"), and the kernel's heartbeat CSV logging
draws to the same console surface PLOT writes pixels to, overwriting
drawings within a fraction of a second unless silenced first with the
existing HB-OFF word. Both HOWTOs updated to record this.

Re-verified full three-arch acceptance boot (POST, DoE, parity) with the
ART-STRESS-CAMPAIGN change: 1012/0/0 and matching dict_hash on all three,
identical to the pre-change baseline.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-19 07:57:43 -04:00
co-authored by Claude Sonnet 5
parent d1547ecdae
commit 413b5a9bbf
17 changed files with 161421 additions and 78825 deletions
+50 -5
View File
@@ -1830,8 +1830,53 @@ Not yet driven interactively through a live REPL, same DoE-before-REPL practical
`turtle.4th`'s own still-open item. `turtle.4th`'s own still-open item.
This closes the mechanism + capsule work for SDK v1.9.0 scoping. Still open, not decided here: This closes the mechanism + capsule work for SDK v1.9.0 scoping. Still open, not decided here:
the `1.5.4``1.9.0` version-string bump itself, and whether to verify `turtle.4th`'s actual the `1.5.4``1.9.0` version-string bump itself. `turtle.4th`'s rendering — the other open
rendering before treating either it or this SDK as release-ready — both are release-process item — was resolved next, below.
decisions, not implementation work, and belong to the user's call per the same pattern used
throughout this scoping (`AskUserQuestion` for the calls that are genuinely the user's, not ## L. `turtle.4th` rendering verified live — and a real, overdue capsule revert found doing it — 2026-08-19
inferred).
User's explicit instruction: disable the DoE wall and verify turtle rendering interactively.
First correction: the actual blocker was never any DoE mechanism from section K's "which DoE?"
survey — it's `capsules/artemis/init.4th` block 4170's `ART-STRESS-CAMPAIGN`, which auto-runs
unconditionally at Artemis's birth (itself unconditionally triggered by a `kernel_main.c`
self-test at every boot). Block 4170's own comment already said what to do: *"TEMP: 30-
replicate campaign enabled for the K-invariant/heartbeat verification run. Revert to `\
ART-STRESS` (disabled) once that run is done."* That run was item 4.6, closed earlier this
session (Section H) — the revert was already overdue, not a new decision. Reverted to
`\ ART-STRESS-CAMPAIGN` (disabled), matching the file's own stated intent exactly.
**Screenshot methodology, since this codebase's tooling had none.** No QEMU monitor socket is
configured by `Makefile.starkernel`'s `qemu` target (no `screendump` path), and this
environment has no `import`/`ImageMagick`/`netpbm`. Used `spectacle -b -f -n -o <file>` (KDE's
screenshot utility, background mode) against the real X11 session already running on this
machine, then cropped to the QEMU window with a one-off PIL script — landed the result in
`evidence/amd64/` following the existing `qemu-screenshot-<timestamp>-<description>.png`
convention (first entry in that directory since 2026-08-11's console work).
**Two genuine, previously-undocumented obstacles found and worked around, not just a slow
wait.** First attempt: launched, waited, and by the time `TURTLE-DEMO` (which calls `CS` before
drawing) finally returned to the prompt, someone had typed directly into the QEMU window itself
(visible in the log as a literal typo sequence — `vye`, `bye`, `b bye`, then `BYE`) and cold-
restarted the machine before a screenshot could be taken. Established from this: (1) `CS`'s
full-framebuffer nested `PLOT` loop is far slower than the existing "slow under TCG" caveat
suggested — it consumed essentially this session's entire ~20+ minute runtime for one clear,
not a minor delay; (2) the kernel's heartbeat CSV logging (`[HADES][DOE ]` rows, from
`src/starkernel/doe_log.c`) draws to the *same* console surface `PLOT` writes pixels to, and
scrolls continuously — anything drawn is visually overwritten within a fraction of a second
regardless of timing, which is *why* nothing was visible in an earlier screenshot taken while
the console was still scrolling (not a "didn't wait long enough" problem, a "wrong surface
staying dirty" problem). `doe_log.c` already registers `HB-OFF`/`HB-ON` for exactly this
purpose (silence/re-enable per-tick console output, `g_doe_log_enabled` flag) — calling
`HB-OFF` before drawing, and skipping `CS` in favor of calling `HOME`/`SETCOLOR`/`POLYGON`/
`STAR` directly, produced a clean, fast, visually correct result on the next attempt.
**Verified:** `S" sdk.4th" EXEC` loads live (banner prints), `HB-OFF` silences heartbeat output,
`HOME 16711680 SETCOLOR 6 100 POLYGON` draws a correct red hexagon, `HOME 65280 SETCOLOR 100
STAR` draws a correct green self-intersecting five-pointed star below it — both geometrically
correct, both the requested colors, zero VM errors on any call. Screenshot:
`evidence/amd64/qemu-screenshot-20260819-074637-turtle-polygon-star-verified.png`. Both HOWTOs
(`TURTLE-GRAPHICS-HOWTO-20260819.md`, `SDK-HOWTO-20260819.md`) updated to record this and the
two obstacles/workarounds, replacing their earlier "not yet visually confirmed" caveats.
This closes the last open item from SDK v1.9.0 scoping's own list. Only the version-string bump
remains, and it's a release decision, not implementation work.
+49 -49
View File
@@ -1,5 +1,5 @@
# Capsule Block Manifest — Auto-generated # Capsule Block Manifest — Auto-generated
<!-- Generated by mkcapsule --manifest 2026-08-19T10:07:24Z --> <!-- Generated by mkcapsule --manifest 2026-08-19T11:54:28Z -->
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. --> <!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
<!-- Hand-written justifications and immutability notes live --> <!-- Hand-written justifications and immutability notes live -->
<!-- in MANIFEST.md alongside this auto-generated index. --> <!-- in MANIFEST.md alongside this auto-generated index. -->
@@ -9,7 +9,7 @@
| Capsule | Blocks claimed | xxHash64 | | Capsule | Blocks claimed | xxHash64 |
|---------|----------------|----------| |---------|----------------|----------|
| `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4015 | `0xd781d22148ff171d` | | `ACL.4th` | 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4015 | `0xd781d22148ff171d` |
| `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 | `0x2d2c57ec0cb5ec18` | | `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 | `0x1859f0148048a2c1` |
| `common:msg.4th` | 4055 | `0xa99c5bcd3877f80e` | | `common:msg.4th` | 4055 | `0xa99c5bcd3877f80e` |
| `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` | | `doe-campaign.4th` | 4060, 4061, 4062, 4063, 4064, 4065 | `0x3d4549142d91ec20` |
| `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xb6ecf5374e8ee77c` | | `doe.4th` | 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107 | `0xb6ecf5374e8ee77c` |
@@ -124,10 +124,10 @@
| 4107 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4107 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4108 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4108 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4109 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4109 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4110 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4110 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4111 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4111 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4112 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4112 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4113 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4113 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4114 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4114 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4115 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4115 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4116 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4116 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
@@ -136,26 +136,26 @@
| 4119 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4119 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4120 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4120 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4121 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4121 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4122 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4122 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4123 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4123 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4124 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4124 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4125 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4125 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4126 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4126 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4127 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4127 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4128 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4128 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4129 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4129 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4130 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4130 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4131 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4131 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4132 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4132 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4133 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4133 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4134 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4134 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4135 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4135 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4136 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4136 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4137 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4137 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4138 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4138 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4139 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4139 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4140 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4140 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4141 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4141 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4142 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4142 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4143 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4143 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4144 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4144 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
@@ -174,29 +174,29 @@
| 4157 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4157 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4158 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4158 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4159 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4159 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4160 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4160 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4161 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4161 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4162 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4162 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4163 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4163 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4164 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4164 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4165 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4165 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4166 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4166 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4167 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4167 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4168 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4168 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4169 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4169 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4170 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4170 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4171 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4171 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4172 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4172 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4173 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4173 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4174 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4174 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4175 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4175 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4176 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok | | 4176 | `hermes:init.4th` | `0x85c7b311d1e5bf97` | ok |
| 4177 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4177 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4178 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4178 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4179 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4179 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4180 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4180 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4181 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4181 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4182 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4182 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4200 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok | | 4200 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
| 4201 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok | | 4201 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
| 4202 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok | | 4202 | `user-font-demo.4th` | `0xce1fd7d1b581a56d` | ok |
@@ -236,8 +236,8 @@
| 4840 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok | | 4840 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
| 4841 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok | | 4841 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
| 4842 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok | | 4842 | `init-l8-transition.4th` | `0xbcc1a81976f0a4c9` | ok |
| 4851 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4851 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4852 | `artemis:init.4th` | `0x2d2c57ec0cb5ec18` | ok | | 4852 | `artemis:init.4th` | `0x1859f0148048a2c1` | ok |
| 4900 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 4900 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 4901 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 4901 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
| 4902 | `fabric.4th` | `0x9b1d061339cea98d` | ok | | 4902 | `fabric.4th` | `0x9b1d061339cea98d` | ok |
+6 -4
View File
@@ -473,10 +473,12 @@ Block 4174
LOOP LOOP
." [ARTSTRESS] CAMPAIGN-DONE" CR ; ." [ARTSTRESS] CAMPAIGN-DONE" CR ;
Block 4170 Block 4170
( TEMP: 30-replicate campaign enabled for the ) ( K-invariant/heartbeat verification run (item 4.6) )
( K-invariant/heartbeat verification run. Revert to ) ( completed and closed -- reverted to disabled per this )
( "\ ART-STRESS" (disabled) once that run is done. ) ( block's own note. Re-enable ART-STRESS-CAMPAIGN (or )
ART-STRESS-CAMPAIGN ( \ ART-STRESS for a quick single-run smoke check) if a )
( future change needs the full 30-rep campaign again. )
\ ART-STRESS-CAMPAIGN
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. )
BIN
View File
Binary file not shown.
@@ -88,8 +88,11 @@ Everything from `turtle.4th` and `doe.4th` is also available after loading
identically, `dict_hash` unchanged from the pre-`sdk.4th` baseline on identically, `dict_hash` unchanged from the pre-`sdk.4th` baseline on
all three (expected — `sdk.4th` isn't autoloaded, so it cannot affect all three (expected — `sdk.4th` isn't autoloaded, so it cannot affect
boot-time dictionary content). boot-time dictionary content).
- Not yet driven interactively through a live REPL — same practical - **Driven interactively 2026-08-19**, live over the QEMU serial socket:
limitation as `turtle.4th`'s own HOWTO documents (the DoE campaign that `S" sdk.4th" EXEC` loads cleanly (`SDK v1.9.0 (scoping)` banner prints),
auto-runs on every kernel boot blocks the REPL for ~2530 minutes before and the re-exported `turtle.4th` renders correctly (see that HOWTO's own
serial commands can reach it). The FORTH logic is verified; the updated verification section for the screenshot and the two practical
interactive load-and-run experience is not. gotchas found along the way — `ART-STRESS-CAMPAIGN` was the actual
~2530 minute wall, not any DoE mechanism, and `HB-OFF` is needed before
drawing anything since heartbeat logging shares the same console surface
`PLOT` draws to).
@@ -132,9 +132,26 @@ rather than a `POLYGON` call with `n=5`.
`Makefile.starkernel ARCH=amd64` build, zero warnings; boot verified `Makefile.starkernel ARCH=amd64` build, zero warnings; boot verified
clean through POST and into the DoE campaign with the capsule present clean through POST and into the DoE campaign with the capsule present
(not autoloaded, so it cannot affect the boot path it isn't on). (not autoloaded, so it cannot affect the boot path it isn't on).
- Not yet visually confirmed pixel-by-pixel in a live framebuffer (that - **Visually confirmed 2026-08-19**, live in a `gtk`-display QEMU session:
requires an interactive `gtk`-display QEMU session with a human at the a red `6 100 POLYGON` (hexagon) and a green `100 STAR` both render with
keyboard, or driving the serial socket past the ~2530 minute DoE correct geometry and color. Screenshot:
campaign that runs automatically before the REPL is reachable — neither `evidence/amd64/qemu-screenshot-20260819-074637-turtle-polygon-star-
was practical to do unattended). The arithmetic and control flow are verified.png`. Two things had to be worked out first, worth recording
verified; the actual rendered image is not. since they'll matter for any future interactive session:
- The `~2530` minute wall this doc used to describe turned out to
actually be `capsules/artemis/init.4th`'s `ART-STRESS-CAMPAIGN`
(auto-runs at Artemis's birth, unrelated to any DoE mechanism
documented in `DOE-LIBRARY-HOWTO-20260819.md`) — it carried a stale
`TEMP: ... revert once that run is done` comment for a verification
run that had already closed. Reverted to disabled, matching the
file's own note (FABRIC-2.md section K/L).
- The kernel's heartbeat CSV logging (`[HADES][DOE ]` rows) draws to
the *same* console surface `PLOT` draws pixels to, and scrolls
continuously — anything drawn gets visually overwritten within a
fraction of a second unless silenced first with `HB-OFF` (registered
in `src/starkernel/doe_log.c`; `HB-ON` re-enables it). Do this before
drawing anything you want to actually see.
- `TURTLE-DEMO`'s own `CS` call turned out to be dramatically slower
than "slow under TCG" suggested — closer to 20+ minutes than a minor
delay, for a full-framebuffer nested `PLOT` loop. For a quick visual
check, call `HOME`/`SETCOLOR`/`POLYGON`/`STAR` directly and skip `CS`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

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