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…
Everything here is durable; nothing depends on tmux or model context.
$ 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.
Everything here is durable; nothing depends on tmux or model context.
Everything here is durable; nothing depends on tmux or model context.
**Resolve who exists from `aw workspace status` and the active team instructions, never from this file.** Rosters, presence and current pairings change independently of any document, so a copy here becomes a durable contradiction.
**An alias in a task, a handoff or a mail is not evidence that anyone is behind it.** Verify a recipient is reachable before routing work, and re-verify before believing a reply will come. This is not hypothetical caution: work was routed to this epic's agents after they were gone, and to an alias whose current occupant was a different agent doing unrelated work — who correctly refused to answer for work that was not theirs. Both failures looked exactly like a message in flight.
**Staff through `aw team admin add … --start`, not `oats spawn`.** That is the proven path on this machine and it provisions identity through the Library, sidestepping the hosted-minting gap in `.66`.
From `oats/agents/oats-coord/instances/alice` (never `cd` elsewhere before `aw`):
aw workspace status # confirm Team=aweb-oats:aweb.ai Name=alice aw task show aweb-oats-aaaa # the epic aw task list --status open | grep aaaa
Read `oats/docs/oats-aweb-seam.md` first — it is the design of record, and its newest section ("Cleanup authority belongs to the spawner, never to the worker") is today's main decision.
pure mirror of `origin/main` so a stray push cannot land coordinator work on the shared branch. Forward before starting: fetch, reset the branch onto `origin/main`, then work. **`main` is shared with teams that cut releases from it.** A release gate can be materializing this repository's pinned inputs at any moment, so an unannounced push to `main` is not just a merge risk, it can change what a live ship is building. Ask before pushing to `main` when any release may be in flight, and never push a revert of something a gate is currently consuming.
origin first** — `git rev-list --left-right --count origin/main...main`. A developer once branched off unpushed local work here, so their branch silently carried unreviewed commits underneath a reviewed one, and the review scope had to be recomputed twice. The rule is durable; the divergence it guards against is transient and must be measured, never read from this file.
current — it was 8 commits on a pre-v0.20 base and its rebuild is abandoned. Current is `aweb/v020-integration`: released v0.20 upstream main plus the three seams open upstream as PRs 37, 48 and 69.
**0.20.0-aweb.1**, built from `aweb/v020-integration`. Released upstream 0.20.0 does NOT carry the three seams, which is why the version is not a bare 0.20.0. Rollback: `npm i -g /private/tmp/oas-rollback-0.18.0/pkg`.
aweb-controlled mirror `github.com/awebai/oats` rather than upstream. Upstream branch retention is not ours to promise: the previous pin's ancestor lived on an upstream branch that was DELETED, which invalidated the pin and forced a full rebuild.
`remote.origin.pushurl = BLOCKED-open-a-PR-for-Pepe-instead-see-aweb-oats-aaaa`. Leave it blocked. The `mirror` remote is ours and is where our branches go.
main and **reduced to the pi half only**; Pepe's `5a79622` already delimits claude. Fixes a defect *we introduced*: adding `--` made every pi spawn die with `Unknown option: --`. pi has no end-of-options marker. Fix = task positional ahead of contributed options.
conflict resolved (Pepe added error handling around the lock write; our disclosure now precedes it) plus a fixture fix for his new `lib/packages.mjs`.
`.60` shipped the customer path **for a BYOT team**, and that qualifier is load-bearing: every one of its tests drives a fake `aw` that answers `import-request`, which is the BYOT flow. Our own deployment team `aweb-oats:aweb.ai` is HOSTED, and the capability only mints under a local BYOT controller, so the shipped path has never run against the only kind of team we have. The claim is true about the object it tested and false about the object we run. See `.66`.
Also merged: `.57` (adapter signals broken bindings as subprocess failure), `.56` (OATS_TEST_ROOT coupling fails legibly), `.28` (ordinary worker journey, bounded, residuals stated), `.30`'s harness (preserved on main even though the proof is incomplete — it is what found the pi defect).
1. **`.63` — IMPLEMENTED AND ACKed, NOT LANDED.** Branch `e2ee-dev`, reviewed tip `64833dac`, task commit `2a25f085`. The root cause was NOT the resolver I traced: `aw mail show` was refused outright by the `.11` default-deny allowlist, which is why it diverged from `inbox`. **Read its current prerequisites off the board, not from here** — they have already changed more than once, and any count written down goes stale the next time a review round adds a commit. **Residual: no resident Pi/channel journey was rerun — cross-runtime local channel decryption is UNPROVED and must not be reported as proved.** 2. **`.47`** — ours to build, unblocked, blocks `.44`. AC already exposes the endpoints (`POST /{team_id}/agents/remove-member` and `add-member` in `aweb_clou
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).…
Written for the next aw-coordinator instance. Read this before `aw work ready`.
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) =…