marketing: FRE-199 fact-check verdict applied — second pair drafts/ → approved/
Sponsor fact-check card (FRE-199, interaction a7cba232) answered 2026-11-05 20:21Z: 'Approve both — move to approved/'. Status blockquotes updated to record the verdict and the date; page bodies untouched.
This commit is contained in:
113
marketing/approved/agent-parallel-tracking/copy.md
Normal file
113
marketing/approved/agent-parallel-tracking/copy.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# How do you keep track of multiple coding agents?
|
||||
|
||||
> **Status: approved — sponsor fact-check passed 2026-11-05** (FRE-199 pair 2
|
||||
> fact-check card, verdict: "Approve both — move to approved/"). Not published;
|
||||
> a human places it on nook.freno.me from `approved/`. Internal target:
|
||||
> Mon 2026-11-09, met four days early. This page never names a product of ours
|
||||
> and never names a competitor.
|
||||
|
||||
The honest answer: not by watching them. Run three agents and the watching
|
||||
already fails — the session you are not reading is the one that finished, or
|
||||
the one sitting on a question, and both states look identical from the outside.
|
||||
The fix is not more windows; it is giving each agent a way to announce its own
|
||||
state, so checking becomes something that happens to you instead of something
|
||||
you have to remember.
|
||||
|
||||
## Why attention is the limit
|
||||
|
||||
Parallel agents are cheap to start and expensive to supervise. Every running
|
||||
session can stop and wait for you — a permission prompt, a question, a finished
|
||||
turn — and from your side of the screen those are invisible until you go look.
|
||||
Operators who run agents at scale keep describing the same wall in different
|
||||
words. One practitioner running dozens of parallel threads a day put it as the
|
||||
limit moving "from tokens to my attention"; another, asked how many sessions
|
||||
they could run, got the answer from their own comment section: not compute —
|
||||
you. A developer who ran agents unattended for a month summarised the failure
|
||||
as silence: "the six hours of silence was the real problem, not the dialog
|
||||
itself." And the most common collision is the simplest — two agents waiting on
|
||||
you while you are deep in the third, and one of them idle so long you lost the
|
||||
thread of what you asked it to do.
|
||||
|
||||
None of that is a speed problem. It is a visibility problem: *which* of your
|
||||
agents needs you, and *how do you find out without touring every window?*
|
||||
|
||||
## What a per-agent signal actually is
|
||||
|
||||
A terminal coding agent has no shared dashboard by default — each session is
|
||||
its own process, its own window. But its state changes are events, and events
|
||||
can be wired outward. Claude Code documents the pieces:
|
||||
|
||||
- **Every state you care about fires an event.** `Stop` fires when Claude
|
||||
finishes responding — the end of a turn. `Notification` fires when Claude
|
||||
Code sends a notification, and the notification's type tells you which kind
|
||||
of waiting it is: a `permission_prompt`, an `idle_prompt`, `agent_needs_input`,
|
||||
or `agent_completed`. `SessionStart` and `SessionEnd` bracket the whole
|
||||
session.
|
||||
- **The event names the session it came from.** Every hook payload carries a
|
||||
`session_id`, so one handler can serve every window and still know which
|
||||
agent fired.
|
||||
- **A hook is just a command you choose.** The events are configured in the
|
||||
settings files and run whatever command you point them at — append to a log
|
||||
file, update a status line, send a desktop notification that names the
|
||||
project.
|
||||
- **The status line can carry per-session state.** Claude Code's status line
|
||||
is a customizable bar driven by a script you write; it receives session data
|
||||
on every render, and the docs name "work across multiple sessions and need
|
||||
to distinguish them" as a reason it exists.
|
||||
|
||||
The pattern in all four: stop touring windows and make each agent's
|
||||
running / waiting / finished state observable where you already are.
|
||||
|
||||
## What to check or do
|
||||
|
||||
1. **Name the states before naming the tools.** For your workflow the states
|
||||
are usually three — running, waiting on you, finished — and the expensive
|
||||
one is always "waiting on you". A tracking setup that cannot distinguish a
|
||||
permission wait from a completion will quietly hide the state that costs
|
||||
the most.
|
||||
2. **Wire the waiting events first.** A `Notification` hook matched on
|
||||
`permission_prompt` and `agent_needs_input` catches the blocked cases; the
|
||||
payload's `session_id` lets one handler label each alert with the project
|
||||
it came from.
|
||||
3. **Route completions separately.** `Stop` means the turn ended — not that
|
||||
the work was right, and not that nothing is blocked elsewhere. Treating
|
||||
"finished" and "needs you" as one notification is how a waiting agent gets
|
||||
buried under a pile of done messages.
|
||||
4. **Make the state visible without switching windows.** A per-session status
|
||||
line, a log file the hook appends to, or a desktop notification that names
|
||||
the project all work — the test is whether you can answer "does anything
|
||||
need me?" without leaving the window you are in.
|
||||
5. **Expect the ceiling to be yours.** Operators consistently find the
|
||||
bottleneck before the machines do. The number of agents you can run is the
|
||||
number whose waiting state reaches you reliably — not the number your
|
||||
terminal can host.
|
||||
|
||||
One next step: run two agents side by side and wire only their permission-wait
|
||||
events to a notification that names the project. The first time the second
|
||||
agent's prompt reaches you before you happen to check its window is the whole
|
||||
argument.
|
||||
|
||||
---
|
||||
|
||||
## Fact-check table (not part of the page)
|
||||
|
||||
Every technical claim above, with its primary source. Claims about Claude
|
||||
Code's behaviour come from its own documentation, re-read 2026-11-05.
|
||||
|
||||
| # | Claim in the page | Source |
|
||||
|---|---|---|
|
||||
| 1 | `Stop` fires when Claude finishes responding; `SessionStart`/`SessionEnd` are per-session events | Claude Code hooks reference — https://code.claude.com/docs/en/hooks (hook events table; "per session: SessionStart and SessionEnd; per turn: UserPromptSubmit, Stop, and StopFailure") |
|
||||
| 2 | `Notification` fires when Claude Code sends a notification; matcher supports notification types including `permission_prompt`, `idle_prompt`, `agent_needs_input`, `agent_completed` | same hooks reference (matcher table: "Notification | notification type") |
|
||||
| 3 | Every hook payload carries `session_id`, the current session identifier | same hooks reference (Common input fields: `session_id` — "Current session identifier") |
|
||||
| 4 | Hooks are configured in the settings files and run a command of your choosing | same hooks reference (configuration and command-hook examples) |
|
||||
| 5 | The status line is a customizable bar driven by a script, receives JSON session data, and the docs name "work across multiple sessions and need to distinguish them" as a use | Claude Code status line doc — https://code.claude.com/docs/en/statusline |
|
||||
| 6 | "The limit moved from tokens to my attention" / "fifty a day add up to something I could feel by Friday" | r/ClaudeCode 1xh5cum (2026-10-27, "Four months of 50+ parallel agent threads a day"), logged in `drafts/listening.md` Scan 3. Practitioner's own account, not a measurement. |
|
||||
| 7 | "How many sessions before you become the bottleneck" — the thread went to compute; the attention half stayed on the table | r/ClaudeCode 1xdjb2g (2026-10-23, 72 comments), logged in `drafts/listening.md` Scan 1. |
|
||||
| 8 | "The six hours of silence was the real problem, not the dialog itself" | r/ClaudeCode 1xipsk0 (2026-10-29, "~40 Claude Code agents unattended for a month"), quoted by the OP in-thread, logged in `drafts/listening.md` Scan 2. |
|
||||
| 9 | Two agents waiting while the human is in the third; idle so long the thread of the task was lost; "most of my idle time came from agents waiting on a permission prompt while I was in another window" | r/ClaudeAI 1xmzp2n (2026-11-03, "How do you keep track of multiple coding agents running in parallel?"), two independent commenters, logged in `drafts/listening.md` Scan 9. |
|
||||
| 10 | "You're the bottleneck agents were meant to eliminate" — approvals routing through one person | r/ClaudeCode 1xk0ghj (2026-10-31, "multiple agents working on multiple projects"), commenter's words, logged in `drafts/listening.md` Scan 4. |
|
||||
|
||||
**Ban compliance:** no product of ours named · no competitor named (herdr,
|
||||
tmux, dashboards: none named — the page answers generically) · no handles · no
|
||||
superlatives · no benchmark numbers · no invented testimonials (anecdotes are
|
||||
real threads, described without handles) · no price · no roadmap dates.
|
||||
71
marketing/approved/agent-parallel-tracking/rationale.md
Normal file
71
marketing/approved/agent-parallel-tracking/rationale.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# Rationale — "How do you keep track of multiple coding agents?"
|
||||
|
||||
FRE-199 item 1, page 1 of the second pair. Drafted 2026-11-05 by CMO (internal
|
||||
target Mon 2026-11-09, beaten by four days — the backlog held, so drafting
|
||||
early cost nothing).
|
||||
|
||||
## The phrase
|
||||
|
||||
Primary: **"how do you keep track of multiple coding agents running in
|
||||
parallel"** (variants: "how many sessions before you become the bottleneck",
|
||||
"which agent is waiting", "agent tracking dashboard").
|
||||
|
||||
## Why this phrase won the slot
|
||||
|
||||
- **Strongest recurrence in the backlog.** Seven independent threads across
|
||||
nine scans state the multi-agent attention problem in their own words — more
|
||||
than any other cluster after the pair-1 phrases. It is the natural next page:
|
||||
the pair-1 pages answer *one* agent's silence (done-signal) and *one*
|
||||
permission wait (waiting-on-permission); this is the fleet-scale version of
|
||||
the same pain, and the buyers are already at fleet scale.
|
||||
- **Buying intent.** Every quoting operator is running multiple agents *now*
|
||||
and losing time to supervision, not exploring.
|
||||
- **Answerable honestly, generically.** The mechanism (per-session hook events
|
||||
with `session_id`, typed notifications, the status line) is documented in the
|
||||
agent's own reference; every claim traces to it. No product needed.
|
||||
- **Distinct from pair 1.** Done-signal owns "one agent, is it finished";
|
||||
waiting-on-permission owns "one agent, why is it blocked". This page owns
|
||||
"several agents, which one needs me" — the phrase, the evidence, and the
|
||||
mechanism (typed Notification matchers, `session_id`, status line) do not
|
||||
overlap pair 1's.
|
||||
|
||||
## Evidence trail
|
||||
|
||||
| Thread | Date | What it showed |
|
||||
|---|---|---|
|
||||
| r/ClaudeAI 1xmzp2n — "How do you keep track of multiple coding agents running in parallel?" | 2026-11-03 | The exact question as a fresh thread: "How do you notice when one is waiting, done, or stuck?"; two commenters independently: agents "sat waiting on a permission prompt while I was deep in the third", idle "long enough that I lost the thread of what I had asked it to do" |
|
||||
| r/ClaudeCode 1xh5cum — "Four months of 50+ parallel agent threads a day" | 2026-10-27 | "The limit moved from tokens to my attention"; "fifty a day add up to something I could feel by Friday" |
|
||||
| r/ClaudeCode 1xdjb2g — "How many sessions can you run before you become the bottleneck?" | 2026-10-23 | 72 comments; the thread went to compute and left the attention half open |
|
||||
| r/ClaudeCode 1xipsk0 — "~40 Claude Code agents unattended for a month" | 2026-10-29 | "The six hours of silence was the real problem, not the dialog itself" |
|
||||
| r/ClaudeCode 1xk0ghj — "multiple agents working on multiple projects" | 2026-10-31 | "If every decision routes through you, you're the bottleneck agents were meant to eliminate" |
|
||||
| Hacker News 50298436 (herdr launch) | 2026-10-30 | A 30-year tmux user's stated switch reason: "visual indication which agent is working and which is waiting for an input" — used in rationale only; the page does not name any tool |
|
||||
|
||||
All rows live in `drafts/listening.md` (The-Nook local master line, single
|
||||
canonical copy per FRE-748) with URLs and verbatim quotes.
|
||||
|
||||
## Gates before this page ships
|
||||
|
||||
1. **Sponsor fact-check** of the claims table in `copy.md` (owner: Michael
|
||||
Freno). Page moves `drafts/` → `pending/` → `approved/` on his read, per
|
||||
the marketing tree's hard rule.
|
||||
2. **CTO eyes on the agent-behaviour claims** — five doc-sourced claims
|
||||
(hooks reference ×4, statusline doc ×1), all re-read 2026-11-05. Routed to
|
||||
the CTO per the FRE-199 plan.
|
||||
3. **Publish path:** `approved/` → a human places it on nook.freno.me.
|
||||
Nothing posts itself.
|
||||
|
||||
## Ban compliance (FRE-199 + positioning.md rule 1)
|
||||
|
||||
- The Nook: not named. The notch, the island, the companion: not mentioned.
|
||||
- Competitors: not named. The herdr evidence is rationale-only; the page's
|
||||
"what to check" recommends no tool at all — states and wiring, not products.
|
||||
- Claude Code is named only as the subject whose documented behaviour the page
|
||||
explains, with its own docs as the source — same status as pair 1.
|
||||
- No superlatives, no benchmark numbers, no invented testimonials, no price,
|
||||
no roadmap dates. Anecdotes are real threads, described without handles.
|
||||
|
||||
## Cadence note
|
||||
|
||||
Second pair. Queue behind it: the run-without-asking cluster (same pair), the
|
||||
fan-control phrase, and the invisible-permission variants — above the
|
||||
three-candidate floor. Two a week holds.
|
||||
Reference in New Issue
Block a user