Skip to content

enter-sync-call: sibling reentrance cycle (A -> C -> A) is untrapped — reference mandates trap; needs corpus/wasmtime differential #99

Description

@lann

Severity: medium (conformance), adjudication required before code.

enter-sync-call (intrinsics/mod.ts:454-483) performs no may_enter
check. In the reference, every guest->guest call routes through the callee
lift's enter gate (definitions.py:581 chain), so a sync fused-adapter
cycle A -> C -> A traps "cannot enter component instance". FACT's static
trap covers only same/ancestor pairs (trusted fact/trampoline.rs:124), and
the trusted wasmtime sources examined (concurrent.rs:1723) show no obvious
sibling-cycle rejection either — this may be wasmtime parity or a shared
gap.

Protocol (docs/architecture.md §1): bare wasmtime behavior never
supersedes the reference; a corpus assertion counts only if
schedule-independent. So:

  1. Check the official suite + wasmtime misc corpus for sibling-cycle
    coverage (async/ and linking/ wast files). If a schedule-independent
    corpus test pins the permissive behavior, stop and re-adjudicate
    (CM-3-style exception, named finding).
  2. Build the differential fixture (3-component composition, A -> C -> A
    through sync fused adapters) and run it under native wasmtime
    (installed CLI, 47.x) and deltic.
  3. Absent corpus backing for permissiveness: implement the reference trap
    in enter-sync-call (may_enter check against the callee instance,
    same-instance/ancestor semantics per the reference chain), and record
    any wasmtime delta in upstream-component-model-repo-findings.md
    (tracker entry; filing is the operator's call).

Found in the 2026-08-10 adversarial conformance review (runtime + translator vs component-model @ 73b7ad5 definitions.py; wasmtime-environ 47.0.3 treated as trusted).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions