f4b18c2 · Breadcrumb trail for gathering · 2 months ago
Breadcrumb trail
A broadcast is a trail, not a blast. Info gathering follows one thread, in one room, for the life of the work.
When to post vs gather
| `work.anchor` | action |
|---|---|
| empty | post the ask once, persist the thread ts Slack actually returned |
| set | gather — read that thread. Do not open a second |
row has no mapped room | gap — report it, do not guess a channel |
state: closed | skip |
A second anchor is a bug, not a retry.
How to gather
- Guard every id. Unknown sources are
<outside-scope>and never named. - Read replies under the anchor only. Sibling messages in the same room are not on this trail.
- Each reply is a crumb, or it is omitted:
- {resolved name}: {claim} [{permalink}]
- : {claim} [{permalink}] - Hard rules:
- - No permalink → the line does not render. Do not paraphrase it in.
- - Name lookup failed or rate-limited →
<unresolved:{id}>. Never guess from context, nickname, or "the team". - - No new replies →
trail: silent. Silence is data. Do not fill it. - File the trail to
reports. Do not fan crumbs back into rooms. - Write the same trail to Notion
Last Status Updateon that project page. After a post, writeBroadcast TS(the returned thread ts) andBroadcast Permalink. If the post yields no ts, do not PATCH — leave the anchor empty so the next run retries. Never write an empty ts. - The room message is a template (
kickoff,nudge,blocked,done). See docs/broadcasts.md.
Live shape
See examples/trail.md for a filled report. Dry-run prints the plan with empty trails; it does not invent crumbs.
What this is not
Not a summary. Not a ranking. Not sentiment. The relay moves cited text and counts silence.