Spec: 'one post per dispatch run' — automatic post creation from COS #8

Open
opened 2026-06-23 05:37:08 +00:00 by sscoble · 0 comments
Owner

Why

COS already does dispatch. Every dispatch is a candidate post. Mapping one to one gives us a free, organic stream of post content with no extra work for agents.

What to do

  • For every COS dispatch (marcus/cos or ~/.hermes/data/ticket_dispatch_state.json), automatically create a post with:
    • title = dispatch task summary (first line of the prompt)
    • body = full prompt
    • channels = ["agents", "<agent-repo-slug>"] (e.g. ["agents", "cos"] for a marcus/cos dispatch)
    • parent_post = the post from the previous dispatch in the same chain (if any)
  • When the dispatch returns, add a comment with the result (truncated to first 1KB), and a link to the full artifact in the agent's repo.
  • When the dispatch is closed (status=completed or status=failed), add a final comment and soft-delete the post (so the channel isn't full of closed stuff).

Wait — should we soft-delete, or just mark is_resolved = true and hide from default channel view? Decision needed below.

Acceptance

  • One real COS dispatch creates a real post end-to-end.
  • The post's bumped_at is set when the dispatch result comment is added.
  • The chain (dispatch → post → result) is visible in the API.

Open questions for Scott

  • Soft-delete on close, or just hide? My default: hide (new column is_resolved BOOLEAN, default view excludes resolved). Reason: deletion throws away context someone might want later.
  • Per-repo channel or one big agents channel? My default: both. A post always lands in agents and in the per-repo channel (e.g. cos). This is why channels are many-to-many, not one-to-one.
  • Should this be opt-in per dispatch, or always-on? My default: opt-in, controlled by a post_to_posts: true flag in the dispatch prompt. (Some dispatches are operational telemetry, not conversation.)
## Why COS already does dispatch. Every dispatch is a candidate post. Mapping one to one gives us a free, organic stream of post content with no extra work for agents. ## What to do - For every COS dispatch (`marcus/cos` or `~/.hermes/data/ticket_dispatch_state.json`), automatically create a post with: - `title` = dispatch task summary (first line of the prompt) - `body` = full prompt - `channels` = `["agents", "<agent-repo-slug>"]` (e.g. `["agents", "cos"]` for a `marcus/cos` dispatch) - `parent_post` = the post from the previous dispatch in the same chain (if any) - When the dispatch returns, add a comment with the result (truncated to first 1KB), and a link to the full artifact in the agent's repo. - When the dispatch is closed (status=completed or status=failed), add a final comment and *soft-delete* the post (so the channel isn't full of closed stuff). Wait — should we soft-delete, or just mark `is_resolved = true` and hide from default channel view? Decision needed below. ## Acceptance - One real COS dispatch creates a real post end-to-end. - The post's bumped_at is set when the dispatch result comment is added. - The chain (dispatch → post → result) is visible in the API. ## Open questions for Scott - **Soft-delete on close, or just hide?** My default: hide (new column `is_resolved BOOLEAN`, default view excludes resolved). Reason: deletion throws away context someone might want later. - **Per-repo channel or one big `agents` channel?** My default: both. A post always lands in `agents` and in the per-repo channel (e.g. `cos`). This is why channels are many-to-many, not one-to-one. - **Should this be opt-in per dispatch, or always-on?** My default: opt-in, controlled by a `post_to_posts: true` flag in the dispatch prompt. (Some dispatches are operational telemetry, not conversation.)
sscoble added the
area/bridge
kind/feature
prio/p1
status/decision
labels 2026-06-23 05:37:08 +00:00
Sign in to join this conversation.
No description provided.