Skip to content

fix: the cross-runtime kiln check was structurally incapable of passing (AFD-116) - #259

Merged
avrabe merged 1 commit into
mainfrom
fix/kiln-xruntime-vacuous
Sep 8, 2026
Merged

fix: the cross-runtime kiln check was structurally incapable of passing (AFD-116)#259
avrabe merged 1 commit into
mainfrom
fix/kiln-xruntime-vacuous

Conversation

@avrabe

@avrabe avrabe commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

fix: the cross-runtime kiln check was structurally incapable of passing — wrong function, wrong artifact, error swallowed (AFD-116)

Found by the per-piece release-watch of kiln v0.5.0, whose headline SR-58 is
--invoke on meld-fused CORE modules — exactly what jess ships. Testing it against
the real fused cascade found a defect in JESS, not in kiln.

scripts/jess-build.sh ran:

kout="$("$KILND" "$FUSED" --function run-stabilization 2>/dev/null || true)"

and printed "kiln check inconclusive (non-gating)" whenever it produced nothing. It
produced nothing every time, for three compounding reasons:

  1. the fused core exports no run-stabilization — meld renames the exports to
    pulseengine:falcon-cascade/@0.7.0#. kiln says so plainly
    ("[Runtime][E07DA] Function not found") and then LISTS the five that exist.
    The information needed to notice was in the output 2>/dev/null discarded.
  2. the wasmtime half invoked that name on $W, the PRE-FUSION component — a
    different artifact. The two halves were never comparing the same thing.
  3. 2>/dev/null || true made "kiln disagreed" and "kiln could not run" the same
    reading — the confusion varve#130 recorded when exit 127 was reported as a
    refusal.

The JUnit evidence carried a kiln-xruntime testcase whose value was necessarily 0
on every run this repo has ever done.

WHAT 0.5.0 GIVES US, MEASURED: kilnd --version now prints kilnd 0.5.0 and an
unknown flag exits 2 (neither held in the layer's build). --invoke works on the
real fused core: mixer#mix with four f32s returns i32 9488, and wasmtime returns
9488 for the same module, export and args. All five stage exports execute when each
is driven with its own arity.

WHAT IT DOES NOT GIVE US — checked BEFORE building on it: every cascade export
returns a POINTER, and that pointer is CONSTANT (9488) across three different
argument sets. Two engines agreeing on a fixed address is not evidence about the
arithmetic; a check built on it would agree even if one engine computed garbage. So
the replacement is labelled an EXECUTION check, not a value differential. The
strong version needs kiln to dereference the return area — filed upstream.

The replacement drives both engines over the SAME artifact/export/args, requires a
value from each, refuses a pre-0.5.0 kilnd by name instead of saying "inconclusive",
and asserts 5/5 stage exports execute. jess-build.sh passes MOD="$FUSED"
KILND="$KILND" explicitly — letting the checker use its own defaults would have
reintroduced defect (2) one layer down. Non-gating unless KILN_STRICT=1.

Both negative controls observed firing. Two harness bugs of my own caught by them:
the export name was packed as ":4" and split on the first colon, but the name
contains colons and truncated to "pulseengine"; and driving all five exports with
six zeros made four fail on arity and reported "1/5" — a number measuring the
harness, not the artifact.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

…ng — wrong function, wrong artifact, error swallowed (AFD-116)

Found by the per-piece release-watch of kiln v0.5.0, whose headline SR-58 is
--invoke on meld-fused CORE modules — exactly what jess ships. Testing it against
the real fused cascade found a defect in JESS, not in kiln.

scripts/jess-build.sh ran:

  kout="$("$KILND" "$FUSED" --function run-stabilization 2>/dev/null || true)"

and printed "kiln check inconclusive (non-gating)" whenever it produced nothing. It
produced nothing every time, for three compounding reasons:

  1. the fused core exports no `run-stabilization` — meld renames the exports to
     pulseengine:falcon-cascade/<stage>@0.7.0#<fn>. kiln says so plainly
     ("[Runtime][E07DA] Function not found") and then LISTS the five that exist.
     The information needed to notice was in the output 2>/dev/null discarded.
  2. the wasmtime half invoked that name on $W, the PRE-FUSION component — a
     different artifact. The two halves were never comparing the same thing.
  3. `2>/dev/null || true` made "kiln disagreed" and "kiln could not run" the same
     reading — the confusion varve#130 recorded when exit 127 was reported as a
     refusal.

The JUnit evidence carried a kiln-xruntime testcase whose value was necessarily 0
on every run this repo has ever done.

WHAT 0.5.0 GIVES US, MEASURED: kilnd --version now prints `kilnd 0.5.0` and an
unknown flag exits 2 (neither held in the layer's build). --invoke works on the
real fused core: mixer#mix with four f32s returns i32 9488, and wasmtime returns
9488 for the same module, export and args. All five stage exports execute when each
is driven with its own arity.

WHAT IT DOES NOT GIVE US — checked BEFORE building on it: every cascade export
returns a POINTER, and that pointer is CONSTANT (9488) across three different
argument sets. Two engines agreeing on a fixed address is not evidence about the
arithmetic; a check built on it would agree even if one engine computed garbage. So
the replacement is labelled an EXECUTION check, not a value differential. The
strong version needs kiln to dereference the return area — filed upstream.

The replacement drives both engines over the SAME artifact/export/args, requires a
value from each, refuses a pre-0.5.0 kilnd by name instead of saying "inconclusive",
and asserts 5/5 stage exports execute. jess-build.sh passes MOD="$FUSED"
KILND="$KILND" explicitly — letting the checker use its own defaults would have
reintroduced defect (2) one layer down. Non-gating unless KILN_STRICT=1.

Both negative controls observed firing. Two harness bugs of my own caught by them:
the export name was packed as "<name>:4" and split on the first colon, but the name
contains colons and truncated to "pulseengine"; and driving all five exports with
six zeros made four fail on arity and reported "1/5" — a number measuring the
harness, not the artifact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@avrabe
avrabe merged commit 83f51e0 into main Sep 8, 2026
9 checks passed
@avrabe
avrabe deleted the fix/kiln-xruntime-vacuous branch September 8, 2026 22:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant