Lessons
Workflow lessons
- Verify patches actually applied. A patch that reported success and changed nothing cost more time than any real compiler error. Check the tree, not the exit code.
- Read the generated makefile, not just the log. The host-vs-target compiler mix-up showed up in the build files long before anything failed.
- Long-running jobs must be truly detached. Background jobs die with the shell. Anything measured in hours runs under nohup, logs to disk, and gets a watchdog.
- Small deltas. App-side iterations stayed fast because the slow artifacts, one libnode per ABI, were built once and left alone.
Known limitations
- One-shot embedding per process. Node’s initialization is process-global, so re-running the agent needs an app restart.
- Watchdog timing. The supervisor stops the loop ~1.5 s after JS reports done. Fine for a proof, tunable for production.
- Mock model backend. The full loop ran, but against a canned response. The remaining work is credentials and a real provider. The runtime engineering is done.
What comes next
Next is the sibling experiment, droidfx-proof. It asks the same
question of a native Zig agent binary, including getting fork(2) past
Android’s seccomp policy. Then a real provider behind the embedded SDK
makes it shippable.