From d1a41d653403ba5f7043471f9e0a4142dedbaddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Tue, 25 Aug 2026 08:24:06 +0000 Subject: [PATCH] say what dispatch can be, and ask about retention last MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a commander was told to ask what should happen to each category and never told what the answers could be. nobody starting a commander knows that either — it is the commander's job to know, not the owner's to guess. so the list is in the file: nothing, somewhere else on this machine, tell them, wake a conversation they already have, start an agent on it, run another task, send it to another machine. with the constraint that stops it becoming a wall: offer the two or three that plausibly fit what this commander produces. a menu of seven is the same as no menu. and retention moved to the end, after notifications. it was between dispatch and notifications, which asks what to delete before the owner has finished deciding what happens to the thing. Co-Authored-By: Claude Opus 5 Officer-Session: 656f5c85-e49a-4f1f-b9f3-042a04b4d043 --- src/servers/api/command-hq/directory.ts | 36 ++++++++++++++++++------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/src/servers/api/command-hq/directory.ts b/src/servers/api/command-hq/directory.ts index 0bac6ca1..18d87892 100644 --- a/src/servers/api/command-hq/directory.ts +++ b/src/servers/api/command-hq/directory.ts @@ -456,6 +456,23 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { "Write each one into `DISPATCHING.md` as you agree it, in the owner's words as much as your own. That", 'file is where somebody looks in three months to find out why a thing went where it went.', '', + '**Say what the choices ARE.** Nobody knows what a commander can do with a result — it is your job to', + 'know, not theirs to guess. What is available:', + '', + '- **Nothing.** It stays in `data/`, filed, and the owner reads it when they want to. A complete answer.', + '- **Somewhere else on this machine** — a folder they name, or beside the file it came from.', + '- **Tell them** — a notification, on the item or on a batch.', + '- **Wake a conversation they already have** — `PUT /api/chat/sessions//nudge` sends a message into', + ' an existing chat, so a category can be handed to an agent that already knows what to do with it. It', + ' arrives within the minute rather than instantly.', + '- **Start an agent on it** — the same way you spawn one to classify.', + '- **Run another platform task on it** — whatever `GET /api/tasks` offers.', + '- **Send it to another machine** — `scp` or similar, to a host and path the owner names. They arrange', + ' the access; you say plainly when it is unreachable.', + '', + 'Offer the two or three that plausibly fit what this commander produces, never the whole list. A menu', + 'of seven is the same as no menu.', + '', '**Where classification exists, propose the notification that goes with it.** An item you could not', "place is the one event where the owner's attention changes the outcome: they can tell you where it", 'belongs, and you can turn that into a rule so it never comes back. Offer that as the dispatch — a', @@ -491,7 +508,16 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { "Same for `DISPATCHING.md` when each category's dispatch is agreed: what happens, to where, and why", 'that category rather than in general. Write it as you agree it, not afterwards from memory.', '', - '**Once an item goes all the way through, ask what should survive it.** A pipeline leaves copies in', + 'Notifications are the LAST thing, after all of that is settled and never beside it:', + '', + '**Would you like to be notified?** — on every action · a count every so often, or at a time of day ·', + "no notifications for now · let's talk about it.", + '', + 'Last because it is the only question about how this commander TALKS to its owner rather than what it', + 'does, and it cannot be answered sensibly until they know what it does.', + '', + '**Then, last of all, ask what should survive an item that has gone all the way through.** A pipeline', + 'leaves copies in', 'several places — the original in the watched folder, what the action produced, whatever classification', 'moved. Nobody decided that; it is just what happens, and it accumulates quietly.', '', @@ -506,14 +532,6 @@ export function commanderClaudeMd(params: CommanderClaudeMdParams): string { 'Ask it plainly, once the rest works and they can see what it produces. Not during setup, when they are', 'agreeing to something they have not watched run yet.', '', - 'Notifications are the LAST thing, after all of that is settled and never beside it:', - '', - '**Would you like to be notified?** — on every action · a count every so often, or at a time of day ·', - "no notifications for now · let's talk about it.", - '', - 'Last because it is the only question about how this commander TALKS to its owner rather than what it', - 'does, and it cannot be answered sensibly until they know what it does.', - '', 'AskUserQuestion takes at most FOUR options. Where "let\'s talk about it" belongs, it is one of the', 'four — not a fifth.', '',