Skip to content

WASM host function governance #596

Description

@flyingrobots

Migrated from a local Wesley Method backlog card after adopting METHOD v2.1.0 tracker doctrine.

  • Source path: docs/method/backlog/up-next/RUNTIME_wasm-host-function-governance.md
  • Original filesystem lane: up-next
  • Canonical Method lane label: lane:asap
  • Legend: RUNTIME
  • Migration issue: Migrate Wesley Method backlog to GitHub Issues #548
  • Migrated on: 2026-06-04

Original Local Backlog Card

WASM host function governance

  • Lane: up-next
  • Legend: RUNTIME

Why now

The Rust core design says WASM is the portable capability ABI, but portability
collapses if WASM modules receive different ambient host powers in Rust and
Node. Host functions need a deny-by-default policy before serious portable
capabilities exist.

Hill

A WASM capability can declare its host imports, and Rust/Node hosts can enforce
the same policy or reject the capability before execution.

Done looks like

  • define the first pure host-function profile
  • deny filesystem, network, env, process, and ambient clock access by default
  • define how future host imports are named, versioned, and reported
  • record fuel/time/memory policy expectations for Rust and Node hosts
  • execution reports list requested imports, granted imports, denied imports,
    and host profile
  • fixture proves a module requiring an unavailable import is rejected before it
    runs

Repo Evidence

  • docs/design/0009-rust-core-and-wasm-capability-abi/rust-core-and-wasm-capability-abi.md
  • crates/wesley-core/src/domain/capability.rs
  • crates/wesley-core/tests/module_capability_registry.rs
  • docs/method/backlog/bad-code/RUNTIME_module-loading-trust-boundary.md
  • packages/wesley-runtime-node/src/ModuleEntryLoader.mjs

Current Slice Status

The first pure host-function profile now exists in Rust and rejects unavailable
WASM host imports before execution. Remaining work is host-runtime integration,
resource budgets, and shared Rust/Node report emission.

Activity

  1. coderabbitai commented on Jun 4, 2026

    @coderabbitai
    🔗 Related PRs

    #270 - feat(host-browser): browser host + browser/deno/bun smokes [merged]
    #472 - [codex] Advance Continuum inspectability and METHOD closeout [merged]
    #504 - Compile runtime optic artifacts [merged]
    #521 - Add Rust IR performance baseline [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  2. added
    triage:cool-ideasExploratory idea intake that still needs scheduling, closure, or a repo move
    and removed on Jun 24, 2026
  3. flyingrobots commented on Jun 25, 2026

    @flyingrobots
    OwnerAuthor

    Old. Irrelevant. Closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    legend:RUNTIMERuntime/tooling/host/operator flow worktriage:cool-ideasExploratory idea intake that still needs scheduling, closure, or a repo move

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions