Repository navigation
Component model (ADR 0014): the developer path end to end, and what still blocks it #456
Description
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 getswasmandwasm-components-v1.tools/octo checkwithhubbuilt from App Hubmain: PASSED; the gate names what the component reaches and the 6 crates it is built from.- The shell's
wasmservice, built from OctoSensemainand 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.functionslists 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:httpto 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