From c8545e70a68fef7e8871e4b9dd3cbe5c4c0923ea Mon Sep 17 00:00:00 2001 From: iris <2+iris@noreply.localhost> Date: Mon, 7 Sep 2026 16:20:40 -0400 Subject: [PATCH] AGENTS.md: a runtime log can carry a phone app's own lines ai-app's phone has no adb and Android forbids one app reading another's logcat, so its app posts its own log ring to ai-server, whose stdout this project's Managed service already redirects and reports. The lines land in the server component's Runtime tab with nothing here changed. Recorded so the next reader of this file does not build a device-log store on the TLS surface for a case the existing runtime log covers. Co-Authored-By: Claude Fable 5.1 --- AGENTS.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/AGENTS.md b/AGENTS.md index e276bad..9b2695c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -574,6 +574,23 @@ mutable at runtime from the phone. process marked its own errors -- and sequences with no meaning on a phone are consumed rather than printed, so a cursor movement cannot arrive looking like a corrupted log. +- **A runtime log can carry a *phone app's* own lines, and nothing here + had to change for it.** ai-app (`~/repos/ai-app-2`, the `rustify` + branch) has a phone this project delivers APKs to whose owner has no + `adb`; Android forbids one app reading another's `logcat`, so the app + keeps a bounded in-memory copy of its own log and posts it to + `ai-server` over the tunnel it is already enrolled against. + `ai-server` re-emits each line into its own `tracing` output, which is + this server's `Managed` service redirecting stdout to + `$XDG_DATA_HOME/dev-updater/services/-/.log` -- + so the lines arrive in the *server* component's Runtime tab, tagged + `ai_server::client_log` and carrying the app's own clock. Worth knowing + before adding a device-log store here: this route was chosen over one + (a new authenticated write endpoint on the TLS surface, a per-app log + store, `hasRuntimeLogs` for an APK component, and a second enrollment + for that app) precisely because the existing runtime log already + reaches the reader. Their reasoning is in ai-app's + `docs/DECISIONS.md`, 2026-09-07. - **A project's row has three buttons -- Pull, Update, Remove -- and the first two are the same act at two lengths.** Pull takes the commits and stops (`?build=false` on the pull route, `BuildState::pull_only`);