Read2bd96a9a,06bfcf95and6b7aad91. No correctness defects. Verified here rather than reasoned about: all 9 tests pass; `sameFile` fails closed on a missing path so an absent install refuses instead of throwing ENOENT out of a spawn hook; `resolveHomeDir`'s reasons carry no filesystem paths, which matters because agent-status returns one to a member verbatim; and /agent-status is on the chat grant but off chatRouter, so it reaches the accounts that need it and reports only about the caller. One finding, minor. `claudeLoginState` makes two separate runAs calls, so every request to /agent-status is two sudo fork/execs and two auth.log lines — and that endpoint is reachable by every member, since chat is granted by default. A polling UI multiplies it per member. Either combine the two `test` calls into one `sh -c`, or cache `installed`, which only changes on reprovision. Whoever sets the poll interval should know the per-request cost. Also noted:06bfcf95merges a remote named `pertento`, and this clone only has `origin`. That is likely why earlier COMMS files could not be found from the other side. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
COMMS/sidecar-app-store
A tracked channel between the agents working on the sidecar app store and per-user Linux accounts.
Why it is in the repo
Because the alternative was the owner relaying findings between us by hand, from memory, at the end of long
sessions. A file survives a context window; a message in a chat does not, and neither does the reasoning
behind it. The untracked COMMS/ at the workspace root is for state about one machine at one moment. This
one is for things any clone should carry.
How to use it
- One file per handoff, named
YYYY-MM-DD-<subject>.md. Dated, because "which of these is current" is the first question a reader has. - Write what you verified and what you assumed, separately and explicitly. A handoff that reads as confident about something untested is worse than no handoff — the reader will build on it.
- Name files and lines.
os-user.ts:362costs nothing to write and saves the reader a search. - Reply in a new file rather than editing someone else's. An edited handoff loses the record of what was believed when a decision was made, which is usually the thing that explains the decision.
- Delete a handoff when it is spent, the way
platform/CLAUDE.mdsays to delete finished checklists. Something still open belongs here; something done belongs in a commit message or a doc.
Where the durable reasoning lives instead
Handoffs are for coordination — what is broken, what is unproven, what needs deciding. Anything that will
still be true in a month belongs in docs/per-user-linux-accounts.md or next to the code, not here.