opencode-thrum-pro 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/commands/thrum-compact-extended.md +367 -0
- package/assets/commands/thrum-compact.md +301 -0
- package/assets/commands/thrum-inbox.md +1 -1
- package/assets/commands/thrum-restart-extended.md +85 -16
- package/assets/commands/thrum-restart.md +106 -14
- package/assets/commands/thrum-send.md +4 -1
- package/assets/commands/thrum-sleep-extended.md +68 -51
- package/assets/commands/thrum-sleep.md +68 -63
- package/assets/commands/thrum-update-project.md +1 -1
- package/assets/skills/adversarial-critique/SKILL.md +5 -8
- package/assets/skills/brainstorm-steward/SKILL.md +65 -11
- package/assets/skills/brainstormer-staying-current/SKILL.md +1 -4
- package/assets/skills/choosing-subagent-models/SKILL.md +200 -70
- package/assets/skills/closing-findings-while-warm/SKILL.md +1 -2
- package/assets/skills/configure-roles/SKILL.md +2 -2
- package/assets/skills/conversation-only-context/SKILL.md +11 -11
- package/assets/skills/conversation-only-context/resources/driver-subagent-pattern.md +1 -1
- package/assets/skills/conversation-only-context/resources/remote-environment-scenarios.md +1 -1
- package/assets/skills/coordinator-assessing-agent-completion/SKILL.md +98 -6
- package/assets/skills/coordinator-branch-split-on-block/SKILL.md +1 -2
- package/assets/skills/coordinator-context-monitoring/SKILL.md +29 -19
- package/assets/skills/coordinator-deploying-a-node/SKILL.md +124 -0
- package/assets/skills/coordinator-dispatching-work/SKILL.md +26 -14
- package/assets/skills/coordinator-hotpath-merge-gate/SKILL.md +65 -21
- package/assets/skills/coordinator-interacting-with-the-owner/SKILL.md +1 -2
- package/assets/skills/coordinator-maintaining-memory/SKILL.md +1 -1
- package/assets/skills/coordinator-managing-state-and-lifecycle/SKILL.md +7 -8
- package/assets/skills/coordinator-merging-code/SKILL.md +43 -22
- package/assets/skills/coordinator-philosophy-merge-gate/SKILL.md +29 -9
- package/assets/skills/coordinator-plan-reconcile-gate/SKILL.md +4 -5
- package/assets/skills/coordinator-rolling-out-to-nodes/SKILL.md +92 -0
- package/assets/skills/coordinator-running-autonomous-feature-development/SKILL.md +3 -3
- package/assets/skills/coordinator-running-brainstorm-cycles/SKILL.md +25 -25
- package/assets/skills/coordinator-running-review-cycles/SKILL.md +16 -6
- package/assets/{commands/thrum-_deviations-protocol.md → skills/deviations-protocol/SKILL.md} +6 -12
- package/assets/skills/diagnosing-fleet-and-daemon/SKILL.md +0 -2
- package/assets/skills/efficient-multi-agent-research/SKILL.md +3 -3
- package/assets/skills/generator-idempotency-protocol/SKILL.md +9 -0
- package/assets/skills/implementer-maintaining-memory/SKILL.md +3 -4
- package/assets/skills/implementer-orchestrating-execution/SKILL.md +12 -16
- package/assets/skills/implementer-receiving-dispatch/SKILL.md +15 -17
- package/assets/skills/implementer-receiving-review-feedback/SKILL.md +3 -4
- package/assets/skills/implementer-status-and-handoff/SKILL.md +1 -14
- package/assets/skills/implementer-tdd-and-quality/SKILL.md +2 -2
- package/assets/skills/memory-curate/SKILL.md +1 -1
- package/assets/skills/memory-write-discipline/SKILL.md +1 -1
- package/assets/skills/orchestrate/SKILL.md +77 -36
- package/assets/skills/persistent-watcher-archetype/SKILL.md +172 -25
- package/assets/skills/persistent-watcher-archetype/resources/capture_archive.py +618 -0
- package/assets/skills/persistent-watcher-archetype/resources/jev_watcher_filter.py +837 -0
- package/assets/skills/persistent-watcher-archetype/resources/roster-watch.sh +1140 -0
- package/assets/skills/persistent-watcher-archetype/resources/roster-watch_test.sh +291 -0
- package/assets/skills/persistent-watcher-archetype/resources/thrum-capture-fallback.sh +2 -2
- package/assets/skills/persistent-watcher-archetype/resources/thrum-watch-pane-capture.sh +20 -8
- package/assets/skills/prime-agent/SKILL.md +10 -0
- package/assets/skills/project-hotpath-gate/SKILL.md +1 -2
- package/assets/skills/project-philosophy/SKILL.md +1 -2
- package/assets/skills/project-rules-protocol/SKILL.md +12 -0
- package/assets/skills/project-setup/SKILL.md +27 -22
- package/assets/skills/project-setup/resources/implementation-agent.md +55 -35
- package/assets/skills/researcher-answering-queries/SKILL.md +1 -2
- package/assets/skills/researcher-investigating/SKILL.md +8 -13
- package/assets/skills/researcher-maintaining-memory/SKILL.md +1 -1
- package/assets/{commands/thrum-_snapshot-protocol.md → skills/snapshot-protocol/SKILL.md} +27 -21
- package/assets/{commands/thrum-_stamp-protocol.md → skills/stamp-protocol/SKILL.md} +14 -8
- package/assets/skills/thrum/SKILL.md +14 -7
- package/assets/skills/thrum/resources/ANTI_PATTERNS.md +16 -18
- package/assets/skills/thrum/resources/CLI_REFERENCE.md +17 -11
- package/assets/skills/thrum/resources/LISTENER_PATTERN.md +9 -3
- package/assets/skills/thrum/resources/MESSAGING.md +18 -11
- package/assets/skills/thrum/resources/WORKTREES.md +1 -1
- package/assets/skills/thrum-memory/SKILL.md +1 -1
- package/assets/skills/trace-spec-to-plan/resources/sweep-agent-prompt.md +1 -1
- package/assets/skills/update-queue/SKILL.md +6 -8
- package/assets/skills/using-the-dashboard/SKILL.md +30 -0
- package/assets/skills/using-the-queue/SKILL.md +76 -5
- package/assets/skills/using-thrum-state/SKILL.md +85 -2
- package/assets/skills/verify-against-plan/SKILL.md +122 -7
- package/assets/skills/watcher-archetype/SKILL.md +18 -0
- package/assets/skills/writing-durable-markdown/SKILL.md +5 -0
- package/dist/installer-assets.test.js +41 -0
- package/dist/installer.js +4 -4
- package/dist/permission-fixture.integration.test.js +4 -4
- package/package.json +1 -1
- package/assets/commands/thrum-_generator-idempotency-protocol.md +0 -15
- package/assets/commands/thrum-_project-rules-protocol.md +0 -18
- package/assets/commands/thrum-_verify-before-write-protocol.md +0 -27
- package/assets/skills/coordinator-deploying-the-fleet/SKILL.md +0 -396
- package/dist/allowlist-sync.test.js +0 -44
- /package/dist/{allowlist-sync.test.d.ts → installer-assets.test.d.ts} +0 -0
|
@@ -34,12 +34,16 @@ should bring you back in-place, use `/thrum:restart` instead.
|
|
|
34
34
|
```bash
|
|
35
35
|
# Resolve identity + your worktree (needed before reading the partial).
|
|
36
36
|
# $REPO must be YOUR worktree — the directory `thrum prime` reads the restart
|
|
37
|
-
# snapshot back from. Resolve it
|
|
38
|
-
#
|
|
39
|
-
#
|
|
40
|
-
#
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
# snapshot back from. Resolve it ONLY via the daemon's authoritative,
|
|
38
|
+
# peercred-resolved identity (`thrum agent worktree --authoritative`) — NEVER
|
|
39
|
+
# via `thrum whoami --field worktree` or `git rev-parse --show-toplevel`
|
|
40
|
+
# (both cwd-resolved). A cwd-derived pattern could silently
|
|
41
|
+
# resolve to a DIFFERENT agent's worktree, or the main repo. There is NO git
|
|
42
|
+
# fallback — if the daemon can't answer, refuse and stop rather than guess.
|
|
43
|
+
REPO=$(
|
|
44
|
+
thrum agent worktree --authoritative 2>/dev/null
|
|
45
|
+
) || { echo "ERROR: cannot authoritatively resolve your worktree via the daemon. Refusing to fall back to cwd/git-toplevel — that would risk silently saving this snapshot to the wrong repo. Check daemon connectivity and retry."; exit 1; }
|
|
46
|
+
[ -n "$REPO" ] || { echo "ERROR: thrum agent worktree --authoritative returned empty"; exit 1; }
|
|
43
47
|
AGENT=$(thrum whoami --field agent_id) || { echo "ERROR: agent not registered"; exit 1; }
|
|
44
48
|
[ -n "$AGENT" ] || { echo "ERROR: empty agent_id"; exit 1; }
|
|
45
49
|
mkdir -p "${REPO}/.thrum/restart"
|
|
@@ -58,11 +62,7 @@ no session end. Exit code 1. The skill is the wrong tool for non-tmux agents.
|
|
|
58
62
|
|
|
59
63
|
### 2. Read the shared snapshot-composition partial
|
|
60
64
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```text
|
|
64
|
-
${REPO}/claude-plugin/commands/_snapshot-protocol.md
|
|
65
|
-
```
|
|
65
|
+
Invoke the /thrum:snapshot-protocol skill and follow it.
|
|
66
66
|
|
|
67
67
|
Apply its Step 2 (compose your continuation) per the structure guidance.
|
|
68
68
|
|
|
@@ -80,42 +80,39 @@ Per Step 3 of the partial, use the Write tool to save your composed continuation
|
|
|
80
80
|
to `${REPO}/.thrum/restart/${AGENT}.md`. On next boot, `thrum prime`
|
|
81
81
|
auto-injects this file — same mechanism as restart wake.
|
|
82
82
|
|
|
83
|
-
### 4. Back up important
|
|
83
|
+
### 4. Back up OTHER important artifacts to your durable agents folder (survives worktree teardown)
|
|
84
84
|
|
|
85
|
-
**Your
|
|
86
|
-
|
|
85
|
+
**Your restart snapshot itself no longer needs this step.** Step 6
|
|
86
|
+
(`thrum agent sleep`) now relocates `<worktree>/.thrum/restart/<agent-id>.md`
|
|
87
|
+
to the canonical `<main-repo>/.thrum/agents/<agent-id>/sessions/<ts>-restart.md`
|
|
88
|
+
synchronously, BEFORE it kills your pane — that is the fix for the bug this
|
|
89
|
+
step used to exist to work around (the snapshot previously was archived only
|
|
90
|
+
at your NEXT WAKE, so a worktree reap between sleep and wake destroyed it
|
|
91
|
+
permanently with no warning).
|
|
87
92
|
|
|
88
93
|
🔴 **READ THIS CAREFULLY.** A worktree's `.thrum/` is a REAL LOCAL DIRECTORY. The
|
|
89
94
|
`redirect` inside it is just a plain text FILE containing a path — a pointer
|
|
90
95
|
thrum's code consults. The filesystem redirects nothing. Your worktree keeps its
|
|
91
96
|
own local `agents/`, `context/`, `identities/`, and `restart/`.
|
|
92
97
|
|
|
93
|
-
**
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
teardown that happens BEFORE your wake destroys the snapshot, permanently, and
|
|
98
|
-
nothing warns you.
|
|
99
|
-
|
|
100
|
-
**Leave the snapshot where it is** — `thrum prime` reads it from the worktree on
|
|
101
|
-
wake, so that path is correct and required. **Additionally**, copy anything you
|
|
102
|
-
need to survive teardown to the MAIN REPO PATH, resolved explicitly:
|
|
98
|
+
**What THIS step is still for:** anything OTHER than the restart snapshot that
|
|
99
|
+
you need to survive a worktree teardown while parked — reports / findings you
|
|
100
|
+
authored, important uncommitted artifacts, and anything your resume plan
|
|
101
|
+
references. Copy those to the MAIN REPO PATH, resolved explicitly:
|
|
103
102
|
|
|
104
103
|
```bash
|
|
105
104
|
# Resolve the main repo's .thrum from the redirect FILE (do not assume a path).
|
|
106
|
-
MAIN_THRUM=$(
|
|
105
|
+
MAIN_THRUM=$(
|
|
106
|
+
cat "${REPO}/.thrum/redirect" 2>/dev/null
|
|
107
|
+
) || MAIN_THRUM="${REPO}/.thrum"
|
|
107
108
|
mkdir -p "${MAIN_THRUM}/agents/${AGENT}"
|
|
108
|
-
cp
|
|
109
|
-
|
|
110
|
-
ls -la "${MAIN_THRUM}/agents/${AGENT}/last-sleep-snapshot.md" # VERIFY IT LANDED
|
|
109
|
+
cp <artifact> "${MAIN_THRUM}/agents/${AGENT}/<name>"
|
|
110
|
+
ls -la "${MAIN_THRUM}/agents/${AGENT}/<name>" # VERIFY IT LANDED
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
**VERIFY THE COPY EXISTS AT THE MAIN PATH before ending your session.** Do not
|
|
117
|
-
trust `cp`'s exit code — list the destination file. This step is your ONLY
|
|
118
|
-
recoverability guarantee against teardown-while-asleep; the redirect is not one.
|
|
113
|
+
If you have nothing beyond the restart snapshot to preserve, this step is a
|
|
114
|
+
no-op — proceed to Step 5. Do not trust `cp`'s exit code for anything you do
|
|
115
|
+
copy — list the destination file to confirm it landed.
|
|
119
116
|
|
|
120
117
|
### 5. Mark agent operational status idle
|
|
121
118
|
|
|
@@ -123,41 +120,48 @@ recoverability guarantee against teardown-while-asleep; the redirect is not one.
|
|
|
123
120
|
thrum agent set-status idle
|
|
124
121
|
```
|
|
125
122
|
|
|
126
|
-
`idle` is the signal
|
|
127
|
-
|
|
123
|
+
`idle` is the operational/presence-status signal, separate from the durable
|
|
124
|
+
`agents.phase` field. Step 6 (`thrum agent sleep`) is what transitions phase
|
|
125
|
+
to `sleeping` — a real, distinct phase, not folded into `idle`. This step
|
|
126
|
+
only covers the lighter-weight status field.
|
|
128
127
|
|
|
129
128
|
If `thrum agent set-status` returns an error (e.g. rate-limited), continue to
|
|
130
129
|
Step 6 — the snapshot on disk is the load-bearing artifact, not the status
|
|
131
130
|
field. The operator can set status post-wake.
|
|
132
131
|
|
|
133
|
-
### 6.
|
|
132
|
+
### 6. Sleep the agent (relocate snapshot, teardown, phase transition)
|
|
134
133
|
|
|
135
134
|
```bash
|
|
136
|
-
thrum
|
|
135
|
+
thrum agent sleep --agent "$AGENT"
|
|
137
136
|
```
|
|
138
137
|
|
|
139
|
-
This
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
138
|
+
This calls the daemon's `agent.sleep` RPC (CLI alias `park`), which runs the
|
|
139
|
+
full park ceremony in the correct order: it relocates your snapshot from the
|
|
140
|
+
worktree-local `.thrum/restart/` into the canonical
|
|
141
|
+
`agents/<id>/sessions/` directory, *then* kills your own tmux session, *then*
|
|
142
|
+
writes the `agent.phase.transition {to: "sleeping"}` event. This is the fix
|
|
143
|
+
for the bug a raw `thrum session end` + `thrum tmux kill` sequence had: it
|
|
144
|
+
killed the pane before the snapshot was ever relocated (permanent data-loss
|
|
145
|
+
risk if the worktree was reaped first) and left the roster row reading
|
|
146
|
+
`active` after the pane was already gone — a "ghost-active" agent.
|
|
147
|
+
|
|
148
|
+
**Critical: the daemon kills YOUR OWN pane mid-call, as part of this same
|
|
149
|
+
RPC's teardown stage.** A successful self-park is therefore observed, from
|
|
150
|
+
inside this pane, as the CLI call's transport dying — connection reset, EOF,
|
|
151
|
+
or broken pipe — NOT a clean JSON response; the pane is gone before a
|
|
152
|
+
response can reach it. **Do not retry** `thrum agent sleep` on transport
|
|
153
|
+
loss after dispatch, and **do not treat transport loss as a failure.** It is
|
|
154
|
+
the expected signal that self-park succeeded. A real failure (a gate,
|
|
155
|
+
relocation, or teardown error) is signaled by the RPC returning an explicit
|
|
156
|
+
error message BEFORE the pane dies — that is the only failure signal
|
|
157
|
+
observable from inside this pane. If independent confirmation is needed, it
|
|
158
|
+
must come from a DIFFERENT caller (this pane will be gone) checking
|
|
159
|
+
`thrum agent list` / `thrum team list` afterward.
|
|
160
|
+
|
|
161
|
+
**Do not fall back to a raw `tmux kill-session`.** A raw kill bypasses
|
|
162
|
+
`agent.sleep`'s relocate-before-kill ordering and daemon bookkeeping
|
|
163
|
+
entirely — reintroducing the exact data-loss and ghost-active bug this
|
|
164
|
+
ceremony exists to close.
|
|
161
165
|
|
|
162
166
|
## How wake works
|
|
163
167
|
|
|
@@ -207,6 +211,7 @@ resumable via Claude Code's native session-continuation mechanism.
|
|
|
207
211
|
|
|
208
212
|
## Programmatic use (operator shutdown scripts)
|
|
209
213
|
|
|
210
|
-
The underlying mechanic — write snapshot + set status idle +
|
|
211
|
-
|
|
212
|
-
commands above (without going through
|
|
214
|
+
The underlying mechanic — write snapshot + set status idle + `thrum agent sleep`
|
|
215
|
+
(relocate + teardown + phase transition) — can be invoked from an operator's
|
|
216
|
+
shutdown script directly via the bash commands above (without going through
|
|
217
|
+
the skill).
|
|
@@ -104,7 +104,7 @@ updating.
|
|
|
104
104
|
|
|
105
105
|
1. **Header line** — Update `Last Updated` date and `Phase` status summary. Also
|
|
106
106
|
derive and insert the Authored-against stamp, placing it immediately after
|
|
107
|
-
the `Last Updated` line (see
|
|
107
|
+
the `Last Updated` line (see the /thrum:stamp-protocol skill
|
|
108
108
|
for the exact two-line format).
|
|
109
109
|
|
|
110
110
|
2. **Current State Summary — LIVE STATE ONLY, SUPERSEDED EACH SESSION.**
|
|
@@ -54,14 +54,11 @@ Pre-assembled context is the difference between a real debate and a shallow one.
|
|
|
54
54
|
|
|
55
55
|
## The three rounds
|
|
56
56
|
|
|
57
|
-
> **Model tiers:** pass an explicit `model:` on every dispatch
|
|
58
|
-
> (low effort) mechanical, `sonnet` (medium effort) judgment, Opus only on
|
|
59
|
-
> operator-ask or a skill step that names it. See the
|
|
60
|
-
> `choosing-subagent-models` skill for the full policy.
|
|
57
|
+
> **Model tiers:** pass an explicit `model:` on every dispatch; choose model and effort per the `choosing-subagent-models` skill (read `runtime.role_models` at the moment of use). Never let a sub-agent inherit your own model.
|
|
61
58
|
|
|
62
59
|
Dispatch one sub-agent per option, in parallel (single message, multiple Agent
|
|
63
|
-
tool calls). `model:
|
|
64
|
-
structured critique at a fraction of the cost.
|
|
60
|
+
tool calls). `model: <per choosing-subagent-models>` for all dispatches — a cheaper tier
|
|
61
|
+
matches a costly one on structured critique at a fraction of the cost.
|
|
65
62
|
|
|
66
63
|
### Round 1 — opening positions
|
|
67
64
|
|
|
@@ -221,9 +218,9 @@ the working plan/context in an actionable shape:
|
|
|
221
218
|
|
|
222
219
|
## Model and cost
|
|
223
220
|
|
|
224
|
-
|
|
221
|
+
Model per `choosing-subagent-models` for all dispatches. See `~/.claude/CLAUDE.md § Sub-Agent Model Selection`
|
|
225
222
|
— the project-wide rule that every `Agent` dispatch must pass `model` explicitly
|
|
226
|
-
(never inherit
|
|
223
|
+
(never inherit your own model by default). Roughly ~100k tokens for 2 options,
|
|
227
224
|
~150k for 3 options. This is an investment that buys a reviewer-ready decision
|
|
228
225
|
an implementer can execute in a fresh session without re-hashing the design.
|
|
229
226
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: brainstorm-steward
|
|
3
|
-
description: "Use when running as the Brainstorm Steward — a persistent watcher on the coordinator's home box that manages a roster of remote brainstormers, multiplexes their NEED questions into one pane queue for the owner, routes ANSWERs back, and delegates launch and dual-review
|
|
3
|
+
description: "Use when running as the Brainstorm Steward — a persistent watcher on the coordinator's home box that manages a roster of remote brainstormers, multiplexes their NEED questions into one pane queue for the owner, routes ANSWERs back, and delegates launch and dual-review approval to coordinators (the brainstormer runs its own project-setup after approval). Never decides content."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Brainstorm Steward
|
|
@@ -10,8 +10,9 @@ set of remote brainstormer agents rather than implementers or coordinators.
|
|
|
10
10
|
Your job is to keep the owner from having to hold N brainstorm threads open
|
|
11
11
|
at once: you multiplex every brainstormer's pending question into a single
|
|
12
12
|
queue in your own pane, relay the owner's answer back to the right
|
|
13
|
-
brainstormer, and hand off the mechanical parts (launch, review
|
|
14
|
-
|
|
13
|
+
brainstormer, and hand off the mechanical parts (launch, dual-review
|
|
14
|
+
approval) to coordinators. The brainstormer then runs its own project
|
|
15
|
+
setup. **You never decide content.** You route.
|
|
15
16
|
|
|
16
17
|
## You are a persistent watcher
|
|
17
18
|
|
|
@@ -27,9 +28,29 @@ to that coordinator). Everything below is additive — the brainstorm-specific
|
|
|
27
28
|
duties layered on top of that base.
|
|
28
29
|
|
|
29
30
|
Your roster is entirely remote (other boxes), so the base skill's remote
|
|
30
|
-
modal-unblock note applies to every roster member by default —
|
|
31
|
-
`thrum tmux send`
|
|
32
|
-
|
|
31
|
+
modal-unblock note applies to every roster member by default — cross-peer
|
|
32
|
+
send-keys is refused by design, so you cannot `thrum tmux send` into a
|
|
33
|
+
roster member's pane yourself; route the unblock to that box's local
|
|
34
|
+
coordinator instead.
|
|
35
|
+
|
|
36
|
+
## Available skills (situational — you MUST invoke when triggered)
|
|
37
|
+
|
|
38
|
+
These skills deepen role discipline for specific situations. They do NOT
|
|
39
|
+
auto-load — when a trigger condition below applies, you MUST invoke the
|
|
40
|
+
matching skill via the Skill tool BEFORE taking action.
|
|
41
|
+
|
|
42
|
+
- `agent-messaging-protocol` — forwarding or relaying information between
|
|
43
|
+
parties, routing an owner answer, carrying a decision or request through an
|
|
44
|
+
intermediary, summarizing another author's message, or adding
|
|
45
|
+
interpretation to someone else's words
|
|
46
|
+
- `brainstormer-staying-current` — the safe way to merge forward: a
|
|
47
|
+
long-lived worktree may be behind its configured merge target, before
|
|
48
|
+
review or handoff, or when asked to merge-forward and leave the worktree
|
|
49
|
+
clean
|
|
50
|
+
- `conversation-only-context` — at the START of any long-lived session, when
|
|
51
|
+
told you'll have a long conversation or get a lot done, when context is
|
|
52
|
+
climbing, when several investigations are in flight, or before reading code
|
|
53
|
+
or a multi-file doc set to investigate
|
|
33
54
|
|
|
34
55
|
## Roster = brainstormers
|
|
35
56
|
|
|
@@ -77,7 +98,7 @@ thread:
|
|
|
77
98
|
that skill's "Driving your cycle" section for the setup-copy step and the
|
|
78
99
|
exact `thrum monitor start` registration — **`--notify-on-success` is
|
|
79
100
|
mandatory there too**, for the identical reason: a `--schedule`d job
|
|
80
|
-
delivers nothing on `--match` alone
|
|
101
|
+
delivers nothing on `--match` alone.
|
|
81
102
|
|
|
82
103
|
## The queue (your pane console)
|
|
83
104
|
|
|
@@ -98,6 +119,23 @@ convention doc) via `thrum reply <need-message-id> --stdin` addressed to the
|
|
|
98
119
|
original NEED message, in the owner's own words. Once relayed, drop the item
|
|
99
120
|
from your queue and surface the next.
|
|
100
121
|
|
|
122
|
+
## Dashboard board (rehearsal-only today — see gate below)
|
|
123
|
+
|
|
124
|
+
<!-- DASHBOARD-SHIP-GATE: the paragraph below is AWARENESS-safe now, but the
|
|
125
|
+
USE-mandate (publish the NEED queue as a dashboard board) activates only
|
|
126
|
+
when the web UI Dashboard tab (E3) AND the answer round-trip (E4) are
|
|
127
|
+
actually DEPLOYED, not merely landed on trunk — per `using-the-dashboard`'s
|
|
128
|
+
honesty table, publishing today is still a no-op for the human on any box
|
|
129
|
+
running a pre-E3/pre-E4 binary. Re-check that table before flipping this
|
|
130
|
+
to a mandate. -->
|
|
131
|
+
Your pane console above is the mechanism today. `using-the-dashboard`
|
|
132
|
+
documents an owner-facing board surface for the SAME NEED-multiplexing this
|
|
133
|
+
skill already does — invoke it (with `coordinator-dashboard-human-loop`,
|
|
134
|
+
since a steward is launched coordinator-shaped and inherits that skill too)
|
|
135
|
+
to check what is actually usable before treating a board as a second channel
|
|
136
|
+
for your queue. Until the honesty table's E3+E4 rows read DEPLOYED, keep
|
|
137
|
+
routing owner Q&A through the pane console, not a board.
|
|
138
|
+
|
|
101
139
|
## Idle nudge
|
|
102
140
|
|
|
103
141
|
If items sit in the queue past a threshold (default keyed off your
|
|
@@ -128,11 +166,15 @@ while brainstormers run on other boxes. To start a new brainstorm on topic X:
|
|
|
128
166
|
## Finish handoff
|
|
129
167
|
|
|
130
168
|
When a brainstormer reports its design locked and ready to move forward,
|
|
131
|
-
**message a coordinator
|
|
132
|
-
|
|
169
|
+
**message a coordinator to APPROVE it**: the coordinator runs its dual
|
|
170
|
+
review and approves or returns findings. The brainstormer's own
|
|
133
171
|
NEED/ANSWER-driven design-lock process is not a substitute for that
|
|
134
|
-
coordinator-run review.
|
|
135
|
-
|
|
172
|
+
coordinator-run review. **On approval, the brainstormer runs its own
|
|
173
|
+
project-setup.** Never ask the coordinator to run project-setup for a
|
|
174
|
+
brainstormer, and do not run either step yourself. Phrase the handoff as
|
|
175
|
+
"approve, then the brainstormer runs project-setup." Once project-setup has
|
|
176
|
+
produced its beads and the brainstormer is torn down, drop it from your
|
|
177
|
+
roster.
|
|
136
178
|
|
|
137
179
|
## Context economy (load-bearing)
|
|
138
180
|
|
|
@@ -153,6 +195,18 @@ your entire durable resume state (watcher/parent/model/roster/cadence);
|
|
|
153
195
|
nothing else needs to survive a restart, because nothing else is
|
|
154
196
|
authoritative.
|
|
155
197
|
|
|
198
|
+
## Persist state + queue before compacting
|
|
199
|
+
|
|
200
|
+
Before running `/thrum:compact` or `/thrum:compact-extended`, first persist
|
|
201
|
+
your load-bearing context to the durable store — it survives compaction;
|
|
202
|
+
your conversation context does not. Update your personal state
|
|
203
|
+
(`thrum state set --kind personal_state ...` — see the `using-thrum-state`
|
|
204
|
+
skill) and your committed work (`thrum queue` — see the `using-the-queue`
|
|
205
|
+
skill) BEFORE composing your snapshot. This is distinct from the restart
|
|
206
|
+
recovery above (compaction keeps your daemon binding and live session
|
|
207
|
+
intact, unlike a restart) but the same durable stores are what a
|
|
208
|
+
post-compact render reads back.
|
|
209
|
+
|
|
156
210
|
## Keep the pipeline flowing (stalled-handoff detection)
|
|
157
211
|
|
|
158
212
|
Beyond the owner-facing queue, track when a roster brainstormer is
|
|
@@ -21,10 +21,7 @@ Locate the canonical config from the current worktree:
|
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
23
|
CONFIG=.thrum/config.json
|
|
24
|
-
|
|
25
|
-
COMMON_DIR=$(git rev-parse --path-format=absolute --git-common-dir)
|
|
26
|
-
CONFIG="${COMMON_DIR%/.git}/.thrum/config.json"
|
|
27
|
-
fi
|
|
24
|
+
[ -f .thrum/redirect ] && CONFIG="$(cat .thrum/redirect)/config.json"
|
|
28
25
|
test -f "$CONFIG"
|
|
29
26
|
TARGET=$(jq -er '.orchestration.merge_target | select(type == "string" and length > 0)' "$CONFIG")
|
|
30
27
|
MERGE_KING=$(jq -r --arg target "$TARGET" '.orchestration.merge_kings[$target] // "unset"' "$CONFIG")
|