diff --git a/TODO.md b/TODO.md index 599f31b1..5311ccbc 100644 --- a/TODO.md +++ b/TODO.md @@ -17,14 +17,15 @@ the owner's OS user and can never be granted. Indirection there really is accide ## Urgent - **due 2026-08-22** — **Settings to choose which server each feature uses** — [fleet/settings-to-choose-which-server-each-feature](todo/fleet/settings-to-choose-which-server-each-feature.md) +- **An affordance: a scoped agent warns when a request lands outside its scope** — [affordances/an-affordance-a-scoped-agent-warns-on-the](todo/affordances/an-affordance-a-scoped-agent-warns-on-the.md) ## Themes -**90 open, 29 closed**, across 31 themes. +**91 open, 29 closed**, across 31 themes. | Theme | Open | Closed | | ------------------------------------------------------------------------------------------ | ---- | ------ | -| [Affordances](todo/affordances/) | 1 | 0 | +| [Affordances](todo/affordances/) | 2 | 0 | | [Agents coordinating agents](todo/agent-coordination/) | 2 | 0 | | [Speaking into a session from the backend](todo/agent-delivery/) | 1 | 1 | | [Backburner](todo/backburner/) | 3 | 0 | @@ -65,6 +66,7 @@ the owner's OS user and can never be granted. Indirection there really is accide ## Newest ten +- `2026-08-25` **An affordance: a scoped agent warns when a request lands outside its scope** — [affordances/an-affordance-a-scoped-agent-warns-on-the](todo/affordances/an-affordance-a-scoped-agent-warns-on-the.md) - `2026-08-25` **Resurrect Projects/Apps** — [backburner/resurrect-projects-apps](todo/backburner/resurrect-projects-apps.md) - `2026-08-23` **A worker cannot verify that the owner delegated to a manager, so it has to ask every time** — [agent-coordination/a-peer-cannot-verify-a-delegation](todo/agent-coordination/a-peer-cannot-verify-a-delegation.md) - `2026-08-23` **An agent cannot learn its own transcript id, so it cannot sign its own work** — [agent-coordination/an-agent-cannot-learn-its-own-session-id](todo/agent-coordination/an-agent-cannot-learn-its-own-session-id.md) @@ -74,4 +76,3 @@ the owner's OS user and can never be granted. Indirection there really is accide - `2026-08-22` **A plugin's permission should be on for every role by default, off only on request** — [multi-user/a-plugin-s-permission-should-be-on-for-every](todo/multi-user/a-plugin-s-permission-should-be-on-for-every.md) - `2026-08-22` **A user's settings should export and import as a plain file** — [settings/a-user-s-settings-should-export-and-import-as](todo/settings/a-user-s-settings-should-export-and-import-as.md) - `2026-08-22` **The same for system settings, owned by the Super Admin** — [settings/the-same-for-system-settings-owned-by-the](todo/settings/the-same-for-system-settings-owned-by-the.md) -- `2026-08-22` **All keyboard shortcuts configurable** — [shell/all-keyboard-shortcuts-configurable](todo/shell/all-keyboard-shortcuts-configurable.md) diff --git a/todo/affordances/an-affordance-a-scoped-agent-warns-on-the.md b/todo/affordances/an-affordance-a-scoped-agent-warns-on-the.md new file mode 100644 index 00000000..9741c4ee --- /dev/null +++ b/todo/affordances/an-affordance-a-scoped-agent-warns-on-the.md @@ -0,0 +1,40 @@ +--- +id: affordances/an-affordance-a-scoped-agent-warns-on-the +title: 'An affordance: a scoped agent warns when a request lands outside its scope' +theme: affordances +status: open +priority: urgent +created: 2026-08-25 +date_source: stated +order: 2 +--- + +**An affordance: a scoped agent warns when a request lands outside its scope.** Wanted 2026-08-25, +urgent. Born from a real miss the same day: a commander-coordination thread landed in the standing todo +chat, and the agent acted on it instead of noticing it was not its job. The owner keeps many sessions +open with different roles, and a message in the wrong one currently gets executed by whoever receives +it. + +One affordance, two triggers, both ending in the same move — **one line, "this may be meant for another +chat?", then wait for the confirm; on a confirm, do it without further protest**: + +1. **Named scope.** The session has been named or tasked with a specific thing — a commander's task, a + chat the owner titled, a role stated in conversation ("you are my todo guy"). A request outside that + scope gets the warning first. Filing or noting something ABOUT another subject stays in scope; + DOING the other subject does not. + +2. **No name, but the request assumes a context this conversation does not hold.** Mid-work, a message + arrives about something the agent has never heard of — and the phrasing assumes it knows exactly + what is meant ("as I explained", "the change we agreed", a "he" with no referent here). That + assumption is the signal: the context exists in SOME chat, and it is not this one. Warn the same + way. + +The second trigger is the one that earns the affordance: it needs no configuration at all, only the +observation that the owner is speaking to a shared history the transcript does not contain. + +Notes for whoever writes it: affordances live in `capabilities/affordances/` and reach every Claude +session per turn via `affordanceBlock` — hot, no restart. "What am I named or tasked with" already has +partial answers — a commander gets its identity in the `commanderBlock` preamble, and a chat's title +lives in the transcript's own `summary` entries — but trigger 2 deliberately works without either. +Keep the warning cheap and single-shot: a wrongly-suspicious agent costs one line; a wrongly-obedient +one costs what the todo chat paid on 2026-08-25 — work done in the wrong place by the wrong agent.