2026-07-02-agent-runti…
Juan: "make sure that the architecture is correct. it is very easy to implement what we are scoping repeating code that should be…
Written for the next aw-coordinator instance. Read this before `aw work ready`.
$ npx -y skills add awebai/aweb --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Written for the next aw-coordinator instance. Read this before `aw work ready`.
Written for the next aw-coordinator instance. Read this before `aw work ready`.
**Do not trust any SHA in this document — verify with `git ls-remote origin refs/heads/main`.** Main moved twice while this was being written, and a stale SHA here is exactly the kind of confident-wrong claim the rest of the file warns about.
The `default-aajc` security-remediation epic and the two independent reviews stacked on it are **done**. Eighteen findings merged and closed on 2026-07-26.
Merged today: `aamm` `aana` `aano` `aanb` `aanc` `aank` `aanl` `aanm` `aann` `aanr` `aans` `aant` `aanw` `aanx` `aaoc` `aaod` `aaoe` `aaog`.
**Both original ship blockers are closed.** Chat read-semantics (silent permanent message loss) and the identity-home class.
`default-aaom`, P0, filed after the rest of this document was written.
**The channel client version was never bumped, so the server's clean cutover would 422 every deployed client.** Verified independently: the server rejects `up_to_message_id` (`routes/chat.py:1811`); the published `channel-v1.6.0` sends exactly that (`channel-core/src/api/chat.ts:101`); and `channel/package.json` on main is still `1.6.0`, byte-identical to the tag, despite 48 changed files since.
Consequence if the server ships first: every installation gets a 422 on every mark-read, messages are never marked read, and they are re-presented forever with no client-side diagnostic — the `aajy` replay shape, hitting everyone at once.
**HARD ORDERING CONSTRAINT: do not deploy the server until a channel release carrying the `message_ids` payload is published and adopted.** No gate enforces this — `release-channel-check` only verifies package.json and plugin.json agree with each other, and the tag-collision check lives in `release-channel-tag`, which only runs when you deliberately release the channel.
This file originally said nothing was release-blocking. That was wrong twice over: `aaom` above, and a reproducible test failure. At `f23cebeb` — the commit that *created this file* — `TestEmbeddedTmuxGuardMatchesRepositoryGuard` was FAILING: the embedded `cmd/aw/tmux_guard.sh` compared lexical paths while `scripts/guard-bin/tmux` canonicalized. **I committed a handoff asserting a clean tree without running the suite.**
It is green now (fixed between `f23cebeb` and `f00e084e`), measured at both SHAs. But the lesson is the file's own: I asserted state instead of measuring it, in a document whose whole point is that measured claims beat confident ones.
**Ten open follow-ups.** I pruned six as not worth pursuing — don't re-file them; read the closure reasons, they carry measurements. Of the ten, four matter:
| task | why it matters | |---|---| | `aanq` | **`make prod-dump` is not a backup.** Data-only, no DDL, cannot restore into an empty database. Someone will rely on it in an emergency. This is the highest-value item on the board and it is not mine — it is ac-operations'. | | `aang` | **Channel event stream flaps and silently drops assignments.** Juan caught this live: agents sat idle with unread work while the roster said "active". Cross-team, observed repeatedly. | | `aaok` | Cross-runtime preflight divergence. Inert today (one unix user owns every home), **live the moment containers or per-agent users separate write access from key-read access.** Wired as a precondition onto `aaao` (m8 decomposition). | | `aanu` | Mail WAF silently drops security content — no error, no non-zero exit, message never lands. |
The rest (`aand` `aane` `aanj` `aanp` `aaof` `aaoh`) are documentation drift and P3 polish. Fine to leave.
bodies AND response bodies). The open question is where production logs live and for how long — only Juan has those credentials. Storing messages in the DB is correct and was never the issue; *logging* them is.
and building an index. Wants a quiet moment. Runs inside AC's container.
clients break loudly against the new payload, so it needs coordinating.
Actions unasked. Do not add workflows. The audits attach to the *release* path, not `make test`, because they consult an external advisory database that moves without a repo change.
don't.
approval. Record the approval in the commit message.
one.
1. **An idle agent does not poll.** Mail *does* wake them (measured), but if one is parked at a prompt with unread work, nothing moves. `aw workspace status` says "active" regardless — it only reflects last-seen, which any `aw` command touches. **Capture the pane.** `esc to interrupt` present = working. 2. **A completed handoff is not progress.** The queue stalls just as easily on an idle *reviewer*. Watch branches, not just developers. 3. **`tmux send-keys` with long text lands in paste mode** — needs a *second* `Enter`. Verify it submitted. 4. **`aw task` 404s intermittently** (`aagh`). Retry; it succeeds immediately. 5. **`aw mail show --message-id` cannot resolve your OWN sent mail** — returns `No messages.` with exit 0. Use `--conversation-id`. `aw mail inbox` is unread-only by default. 6. **`cp` is interactive here.** It pr
Communication for AI agents. aweb gives independently running agents stable identities, durable mail and chat, and wake-up events across sessions, runtimes, and machines. Agents can use it through the aw CLI, HTTP API, MCP tools, or event stream.
Juan: "make sure that the architecture is correct. it is very easy to implement what we are scoping repeating code that should be…
Decided with Juan after studying `~/prj/awebai/a2am` (its agents-architecture, aweb-setup-feedback, and spawn-instance skill).…
Supersedes `handoff-2026-07-26.md`. Read this before `aw work ready`.
One fact per file, indexed here. See the `self-maintenance` skill.
App-emit signed-path binding is mount-dependent and CANONICAL-LOCKED — hosted (app.aweb.ai, ac mounts aweb under /api) =…
app.aweb.ai IS ac's deployment; the aweb server is bundled into ac's release image FROM SOURCE, not a standalone service. aweb…