Two gaps. The bundle's contents are per system even though its mechanism is not, so there are now three: substrate-arch.lock, substrate-alpine.lock and substrate-android.lock. All three are embedded and a host reads only the one it was built for. Arch and Alpine remain placeholders -- the closure for a one-node mesh is still research 011/012's open question, and inventing it here would be worse than an honest placeholder. Android's is not a placeholder. It says a partial host cannot raise a mesh and why: every step of a bootstrap is a package, a container, or an action against one, and those are exactly the shapes it refuses. So a partial host can JOIN a mesh and cannot BE the first node. That belongs where somebody looking for the android bundle will find it. Also separated two things that were being conflated: "this system has no bundle" and "this system was never built". Loading a bundle for debian is not ErrEmpty, and the test asserts they differ. 0062 -- a host may be episodic. There is no way to keep a process running on an ordinary Android device: init needs root, a foreground service can be killed for memory. The answer is not to fight that. It is that being killed IS disconnection, which ADR 0036 already made an ordinary situation -- and everything the design does for a laptop that closes is what an episodic host needs, at a shorter period. An authoritative local store, reconcile on start, last-heard-from reported without an alarm. So the gap closes by requiring less rather than building something. No keep- alive, no Android daemon, no fighting the platform's process management. Two consequences recorded rather than glossed. Last-heard-from is a much weaker signal on an episodic host, so a healthy phone reads as a dead server unless the reader knows which kind it is looking at. And a declaration may take a long time to land, which makes 0058's separation of outstanding from failed load-bearing rather than tidy. Left open deliberately: how an episodic host is actually started, and -- first -- what an Android node is for. Building the start mechanism before deciding that would be building it for nobody.
13 lines
713 B
Plaintext
13 lines
713 B
Plaintext
// substrate-android.lock — deliberately not a bundle.
|
|
//
|
|
// An android host cannot raise a mesh, and this file says so rather than being an empty
|
|
// placeholder waiting to be filled in.
|
|
//
|
|
// The substrate is a container runtime, a store and the control plane (novox/hq
|
|
// 07-the-substrate.md). An android host implements `file`, `directory` and `action` and refuses
|
|
// `package`, `container` and `service` (ADR 0060) — so every step of the bootstrap is a shape it
|
|
// does not have. No amount of filling this in changes that.
|
|
//
|
|
// **A partial host can JOIN a mesh and cannot BE the first node.** That is a real distinction
|
|
// and it belongs here, where somebody looking for the android bundle will find it.
|