feature: gale-nano 0.7.0 EXECUTES on real STM32F100 silicon — admit works, dispatch does not (AFD-113) - #256
Merged
Merged
Conversation
…orks, dispatch does not (AFD-113)
H3 second half: ADVANCED, NOT COMPLETE. Stated that way deliberately.
gale-nano 0.7.0 (digest-pinned) lowered for cortex-m3 and linked against jess's
real gust:hal MMIO (AFD-109), the generic embedder-init apply loop (AFD-107) and a
boot shim. 4,349 B, 0 undefined, embedder ABI verified. On silicon:
LEG (only the ADMIT word differs) poll-task# handle state completion
task admitted (baseline) 00000000 00000000 00000001 c0ffee00
no admit (negative control) 00000000 deadbeef deadbeef c0ffee00
Gale's code RUNS ON THE PART and exec_admit WORKS: gale's own exec_state(handle)
returns 1, exactly what TEST-PIX-035 asserts. handle 0 is correct, not a failure —
jess already recorded that gale-nano hands out handle 0.
But exec_poll_round reaches poll-task ZERO times, where the wasmtime reference —
re-run green the same day, 8/8, same pinned artifact, same PRIO/DEADLINE/NOW
constants taken from app/dispatch-driver — reaches it once. That is a confirmed
wasmtime-vs-silicon divergence, which is what jess's lane exists to produce.
LIKELY CAUSE, NOT PROVEN, AND NOT A GALE DEFECT. gale-nano's component manifest
declares exactly two imports (gust:os/taskdisp, gust:hal/mmio) and exports
gust:os/{time,log,spawn,exec,timer} — matching gale#223 in words. But
`synth --relocatable --all-exports` emits SIX undefined symbols and an export set
that does not match the declared one: it emits gust:sched/tasks@0.1.0#*, which the
component does NOT export, and nothing for gust:os/time@0.1.0, which it DOES.
Nothing in the object separates the 2 real obligations from the 4 internals, and
satisfying them the obvious way is measurably wrong:
- stubbing set-deadline/slept-status/state inert replaced gale's task-state
store. Aliasing them onto gale's own exports via objcopy --redefine-sym is
correct and is what build.sh does.
- `deadline` has nothing to alias to, because the gust:os/time export was not
lowered. Returning 0 broke dispatch; a now+ticks guess did not fix it either.
jess is not going to keep guessing at a gale semantic — that is gale's lane, and
inventing one is how a stub becomes a false claim.
Two harness defects of jess's own, both caught by the reference rather than by
inspection:
- the first run used deadline=(0,0), now=(0,0); the reference's own comment says
NOW must be PAST the deadline for a task to be READY. Reporting that as
"gale-nano does not dispatch on silicon" would have been a false supplier
report — the meld#390 shape.
- the openocd readback filter `^0x2000048` silently dropped the exec_state word
at 0x20000490 — the one reading that localises the fault.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feature: gale-nano 0.7.0 EXECUTES on real STM32F100 silicon — admit works, dispatch does not (AFD-113)
H3 second half: ADVANCED, NOT COMPLETE. Stated that way deliberately.
gale-nano 0.7.0 (digest-pinned) lowered for cortex-m3 and linked against jess's
real gust:hal MMIO (AFD-109), the generic embedder-init apply loop (AFD-107) and a
boot shim. 4,349 B, 0 undefined, embedder ABI verified. On silicon:
LEG (only the ADMIT word differs) poll-task# handle state completion
task admitted (baseline) 00000000 00000000 00000001 c0ffee00
no admit (negative control) 00000000 deadbeef deadbeef c0ffee00
Gale's code RUNS ON THE PART and exec_admit WORKS: gale's own exec_state(handle)
returns 1, exactly what TEST-PIX-035 asserts. handle 0 is correct, not a failure —
jess already recorded that gale-nano hands out handle 0.
But exec_poll_round reaches poll-task ZERO times, where the wasmtime reference —
re-run green the same day, 8/8, same pinned artifact, same PRIO/DEADLINE/NOW
constants taken from app/dispatch-driver — reaches it once. That is a confirmed
wasmtime-vs-silicon divergence, which is what jess's lane exists to produce.
LIKELY CAUSE, NOT PROVEN, AND NOT A GALE DEFECT. gale-nano's component manifest
declares exactly two imports (gust:os/taskdisp, gust:hal/mmio) and exports
gust:os/{time,log,spawn,exec,timer} — matching gale#223 in words. But
synth --relocatable --all-exportsemits SIX undefined symbols and an export setthat does not match the declared one: it emits gust:sched/tasks@0.1.0#*, which the
component does NOT export, and nothing for gust:os/time@0.1.0, which it DOES.
Nothing in the object separates the 2 real obligations from the 4 internals, and
satisfying them the obvious way is measurably wrong:
store. Aliasing them onto gale's own exports via objcopy --redefine-sym is
correct and is what build.sh does.
deadlinehas nothing to alias to, because the gust:os/time export was notlowered. Returning 0 broke dispatch; a now+ticks guess did not fix it either.
jess is not going to keep guessing at a gale semantic — that is gale's lane, and
inventing one is how a stub becomes a false claim.
Two harness defects of jess's own, both caught by the reference rather than by
inspection:
NOW must be PAST the deadline for a task to be READY. Reporting that as
"gale-nano does not dispatch on silicon" would have been a false supplier
report — the meld#390 shape.
^0x2000048silently dropped the exec_state wordat 0x20000490 — the one reading that localises the fault.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com