Skip to content

Component model (ADR 0014): the developer path end to end, and what still blocks it #456

Open

Description

@ymote

Goal

A developer writes an ordinary Rust crate, builds it into their app with one command, and their Octoscript app calls it as wasm.<function> on every OctoSense their users have. ADR 0014's phases 1–3 are on main; this issue tracks what still stands between that and a seamless path, with the state verified on 10 October 2026.

Verified today (mains: App Flow 079c6000, App Hub d338f40d, OctoSense 80b27693, before the 14th sweep)

  • tools/octo new → tools/octo wasm new text-tools → tools/octo wasm build: 18 s, bundle/fns/text-tools.wasm (82,969 bytes), manifest gets wasm and wasm-components-v1.
  • tools/octo check with hub built from App Hub main: PASSED; the gate names what the component reaches and the 6 crates it is built from.
  • The shell's wasm service, built from OctoSense main and run in its test harness with that exact bundle: compiled in 13.7 ms; wasm.count({"text":"one two\nthree"}) → {"words":3,"lines":2}, wasm.greet("OctoSense") → "Hello, OctoSense!", wasm.parse_number("2.5") → 2.5, "two" → "two" is not a number; wasm.functions lists the three exports with WIT signatures.
  • App Flow's SDK tests (sdk/rust, cargo test --locked --workspace): all pass (type mapping, unmodified crate, template, wasi:http to a local server, fake host services).

Not verified: an app with components installed through a store from a GitHub-attested release; an agent tool with host_method: "wasm.<function>" on a component; any phone; a desktop run on Windows.

Gaps and proposed owners

# Gap Proposed fix Owner
1 No release ran components. Desktop 0.1.0-rc.2 and Home 0.1.0-beta.2 pin App Hub 95e4831a, which does not know wasm-components-v1, so their stores refuse such an app at install. Desktop 0.1.0-rc.4 (10 October 2026, source 9266b008) ships components, shared components and declaration-only capabilities. Home still has no release with them; Home 0.1.0-beta.2 runs core modules only. OctoSense (release owner); Home release pending
2 No local way to run a component app. card-host has no wasm service; developer install (#404) has no owner; the only path is a source-built shell with a local catalog. Either of: (a) #404, a developer install in the shipped shell plus tools/octo install; (b) a wasm service in card-host, which needs the runtime crate to be usable from App Hub's workspace. (a) is the one that also catches host-method and widget gaps. Needs the product owner's direction and an owner; neither is a small fix. product owner to decide
3 No command-line runner for a built component. Developers could not call fns/<name>.wasm outside a shell. #455 adds crates/wasm-host/examples/wasm_call.rs (cargo run -q -p octosense-wasm-host --example wasm_call -- FILE.wasm FUNCTION [ARGS] [--storage DIR]; a fresh instance per call, octosense:host calls fail with "needs a shell"). App Flow's tools/octo wasm call <function> [JSON] runs it from the app directory when it finds an OctoSense checkout (OCTOSENSE_REPO or a sibling OctoSense). OctoSense (#455); App Flow (OctoSense-org/OctoSense-App-Flow#184)
4 Docs lag the merges. App Flow RUST.md EN/zh, AGENTS.md and CAPABILITIES said "no OctoSense build runs components; phases 2–3 not merged; App Hub #186/#188 in review"; OctoSense ADR 0014's status line said "Proposed… App Hub's and App Flow's parts are in review"; App Hub PUBLISHING's wasm row says "No build loads components yet". App Flow: OctoSense-org/OctoSense-App-Flow#184. OctoSense: #454 sets the ADR's status to accepted, phases 1–3 merged, with the PR list. App Hub: done on main by the RC4 docs pass (PUBLISHING names RC4); OctoSense-org/OctoSense-App-Hub#194 closed as superseded. App Flow: OctoSense-org/OctoSense-App-Flow#186 re-targeted the guides to RC4; #184 is being rebuilt on top of it with only what main lacks. App Flow / OctoSense (#454) / App Hub docs
5 Publisher toolchain pin. App Flow's tools/publisher-toolchain.json named App Hub 769e9ee3 (#186 only): a release workflow building a component that imports wasi:http or octosense:host would be refused by its own hub. Pin 40abb23b (#191), the App Hub revision OctoSense main carries, which includes #186, #188 and #190. In OctoSense-org/OctoSense-App-Flow#184. App Flow
6 Pending runtime PRs. #452 (components' host calls without the declared-families check), #454 (phase 4, shared components; App Hub #190 is merged), #455 (wasm_call). Done: merged as a train on 10 October 2026; main is cb241350, and ADR 0014's status reads Accepted with the merged PRs listed. OctoSense
7 Template friction. tools/octo new writes a listing that names screenshots/01-main.png, which nothing creates, so tools/octo check refuses a fresh app until a capture exists. tools/octo check now says how to capture it (octo run --detach, then octo shot). In OctoSense-org/OctoSense-App-Flow#184. App Flow

Related

OctoSense #474 amends ADR 0006 (App Studio on the phone): the studio's pipeline as its own components, the state of #313, and the deferral of the phone studio work on 10 October 2026.

Out of scope here

The per-app runtime gates (#450) and the shell's own declared-capability checks: a separate decision.

Activity

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions