Skip to content

Close the meld→kiln end-to-end seam: run a meld-fused core module on kiln and assert behavioural equivalence #297

Description

@avrabe

Why

meld's test suite verifies fusion/adapters/transcoding via synthetic two-memory wasmtime modules + real-adapter wasmparser::Validator checks, but repeatedly discloses (CHANGELOG v0.32.0/v0.33.0, SR-41/SR-32 verification notes) that the full async-lift / resource / stream e2e is "kiln-gated" and out of scope for this repo's tests. That seam — meld lowers a composed component → the fused core module runs on a real runtime → an export is invoked and returns the expected result — is currently unproven end-to-end for meld output specifically.

This is the highest-value missing verification: every adapter/transcode/resource/stream guarantee meld ships is a structural/synthetic claim until a real runtime executes the fused module and the observed behaviour matches the un-fused composition.

Grounding (not speculative)

  • meld side: no e2e/integration-on-runtime test exists; the kiln-gated disclosure is explicit in the CHANGELOG and SR verification descriptions.
  • kiln side: hosting-and-invoking a composed component is itself still open — kiln#344 ("Enable Component Model hosting in kilnd: run an external composed component + invoke an export"). kiln**#317** covers a synth-lowered async core module e2e, not a meld-lowered one. kiln**chore: release v0.8.0 #149** (linking/call_indirect/exception execution failures) may block first.

Proposed scope (incremental)

  1. Tier A (sync): a fixture of 2–3 small components with a cross-component pointer-passing call (string/list param+result). Fuse with meld → run the core module on kiln (kilnd --component or the core-module path) → assert the export's result equals the behavioural oracle (the same call across the un-fused components). Gate on kiln#344.
  2. Tier B (resource): a borrow/own handle crossing a fused boundary (exercises the resource_graph attribution + handle pass-through, SR-25/resource_graph: two latent resource-attribution weaknesses (reachability unconfirmed) — Mythos sweep 2026-06-17 #295).
  3. Tier C (async/stream): a guest-to-guest stream<T> (SR-33) and an async-lift export (SR-32), once kiln#317-class async e2e lands.

Dependencies / coordination

Blocked on kiln#344 (host+invoke) and likely kiln#149 (execution failures). Suggest a shared golden-fixture set reusable by both repos' CI. This issue tracks the meld-output half; kiln#344/#317 track the runtime half.

Note

This is verification-closure, not a known defect — meld's structural oracles are strong and adversarially gated. But "the synthetic oracle passed" is not "a real runtime ran it correctly"; this issue exists to convert the kiln-gated disclosure into an actual green e2e.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions