Skip to content

intent: WIT packages, venue-adapter world, pool router #137

Description

@mfw78

Problem. Doc 09 step 3a (PR #132): the intent core does not exist. No nexum:value-flow or nexum:intent packages, no second component kind, no pool router, no venue SDK.

Scope. The nexum:value-flow and nexum:intent WIT packages at 0.x (identifier-hygiene rule: check every id against WIT keywords and the nine binding targets). The venue-adapter world with a second bindgen and instantiation path, manifest kind venue-adapter, [[adapters]] engine config, and per-adapter scoped transport grants. The pool-router host implementation: venue-id resolution, derive-header then guard-seam then submit sequencing, per-adapter call serialisation (Store is not Sync), per-caller quotas charging decode failures to the caller. The intent-status event variant with router-driven status polling. nexum-venue-sdk (VenueAdapter trait, #[nexum::venue] macro, borsh IntentBody derive, typed transport wrappers, and the typed intent client core) and nexum-venue-test (codec round-trip vectors, header-derivation goldens, MockTransport). The echo-venue example pair as tutorial and conformance target.

Layering. This epic ships the two portable WIT layers every venue module imports: the venue-agnostic intent vocabulary (nexum:intent, nexum:value-flow) and the nexum:adapter venue-adapter world, over the runtime host ABI (nexum:host). No keeper piece migrates here; #135's keeper mirrors these types SDK-side per ADR-0009.

Dependencies. De-cow epic (M0). #51 (capability allowlist surface), #107 (fuel-accounting verification underwrites the metering-attribution claims).

Notes. The adapter world carries the requires-signing(unsigned-tx) submit variant from day one (owner decision for N=2 on-chain settlement): submit may return a transaction the host routes through the guard's host-signed class instead of a receipt. Adapters still structurally cannot move value.


Next-train plan

Design gate (train step 0). Merge PR #132 (renumber the egress-guard ADR 0011 to 0012, closes #131).

Current state. Essentially nothing of the intent core exists: no nexum:value-flow/nexum:intent WIT, one component kind wired (EventModule), no pool router, no [[adapters]], no proc-macro crate, no borsh. Foundations that exist: the de-cow refactor landed (engine core domain-free, cow in shepherd-cow-host) and the extension seam (crates/nexum-runtime/src/host/extension.rs) is compatible with the per-extension router the pool needs. Children #226 through #234 are in review on the M1 train.

Children (ordered):

#234 (echo-venue) is the first-train cut line: it proves the intent core end to end before the CoW adapter (#138) lands.

Blocked by: #136 (macro). Blocks: #138.

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/wit-abiWIT packages, worlds, wit-bindgen, host/guest contractepicTracks a larger initiative.

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions