specrails-core 4.11.1 → 4.11.3
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specrails-core",
|
|
3
|
-
"version": "4.11.
|
|
3
|
+
"version": "4.11.3",
|
|
4
4
|
"description": "AI agent workflow system for Claude Code — installs 12 specialized agents, orchestration commands, and persona-driven product discovery into any repository",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -43,6 +43,10 @@ ticket, no more nesting. The contract that `$implement` enforces
|
|
|
43
43
|
|
|
44
44
|
Default execution mode is sequential.
|
|
45
45
|
|
|
46
|
+
## Desktop rail execution context
|
|
47
|
+
|
|
48
|
+
When the working directory is a specrails-desktop isolated rail worktree (path contains `/worktrees/`, typically on a `feat/...` branch), you are the ASSIGNED executor of that rail: implement every ticket sequentially in THIS worktree on THIS branch — the desktop assembles it into a batch PR afterwards, nothing needs to land on the integration branch first. The desktop's own bookkeeping (ticket-ownership rows in its `jobs.sqlite`, state under `~/.specrails/`) describes this very launch — never read those internals, and never stop to ask which process should run the batch.
|
|
49
|
+
|
|
46
50
|
## Steps
|
|
47
51
|
|
|
48
52
|
### 0. Bootstrap
|
|
@@ -12,7 +12,18 @@ Macro-orchestrator above `/specrails:implement`. Accepts a set of feature refere
|
|
|
12
12
|
- **`--wave-size N`**: max features per wave regardless of concurrency (default: unlimited)
|
|
13
13
|
- **`--dry-run` / `--preview`**: passed through to each `/specrails:implement` invocation; no git or backlog operations will run
|
|
14
14
|
|
|
15
|
-
**IMPORTANT:** Before running, ensure Read/Write/Bash/Glob/Grep permissions are set to "allow" —
|
|
15
|
+
**IMPORTANT:** Before running, ensure Read/Write/Bash/Glob/Grep permissions are set to "allow" — subagents cannot request permissions interactively.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Desktop rail execution context (isolated worktree)
|
|
20
|
+
|
|
21
|
+
specrails-desktop launches this command INSIDE an isolated rail worktree allocated for the batch. Detect it: the working directory path contains `/worktrees/` (e.g. `~/.specrails/projects/<slug>/worktrees/ticket-N`), typically on a `feat/...` branch. When that is the case, ALL of the following hold — they override any instinct to the contrary:
|
|
22
|
+
|
|
23
|
+
- **You ARE the assigned executor of this rail.** The desktop's own bookkeeping (rail slots, ticket-ownership rows in its `jobs.sqlite`, state under `~/.specrails/`) describes THIS very launch — it is never evidence of a competing process. NEVER read specrails-desktop's internal databases or state files, and NEVER stop to ask "which process should run this batch".
|
|
24
|
+
- **The current worktree + current branch ARE the workspace for the WHOLE batch.** Implement every ticket here, in dependency order — including tickets whose refs differ from the branch name. The desktop assembles this branch into a batch PR after you finish; nothing needs to land on the integration branch (main) first. Do NOT create sibling worktrees, do NOT switch branches, do NOT run any ticket "against main in the base repo".
|
|
25
|
+
- **Run tickets SEQUENTIALLY (effective concurrency 1)** regardless of `--concurrency`: parallel pipelines editing one shared checkout corrupt each other. Wave order still sequences the work; only the parallelism collapses.
|
|
26
|
+
- Everything else (per-ticket `/specrails:implement` delegation, wave gates, failure isolation, final report) applies unchanged.
|
|
16
27
|
|
|
17
28
|
---
|
|
18
29
|
|
|
@@ -198,7 +209,8 @@ For each wave `W`:
|
|
|
198
209
|
SPECRAILS_PROFILE_PATH=<resolved-per-rail-path> /specrails:implement <ref> [--dry-run]
|
|
199
210
|
```
|
|
200
211
|
- Each ref in the batch spawns with its own resolved profile path — **distinct rails in the same batch MAY use distinct profiles concurrently**.
|
|
201
|
-
- Run invocations in the batch in
|
|
212
|
+
- Run invocations in the batch **concurrently in the FOREGROUND**: emit every agent invocation for the batch in a single message with `run_in_background: false`. They still run in parallel, and your turn blocks until all of them return.
|
|
213
|
+
- **NEVER use `run_in_background: true`, and NEVER end your reply while a wave is still running.** In headless/pipeline execution (`claude -p`, specrails-desktop loops) the host tears the process down as soon as your turn ends — background agents are killed before they write a single file. Replies like "wave 1 is running in the background, I'll pick it up when it finishes" lose the entire wave.
|
|
202
214
|
- Wait for all in the batch to complete before starting the next batch.
|
|
203
215
|
3. For each completed invocation, record outcome in `WAVE_RESULTS`:
|
|
204
216
|
- `{ref, wave, status: "done" | "failed", profile: "<name or empty>", error_summary: "..." | null}`
|
|
@@ -11,6 +11,10 @@ How the user invokes you:
|
|
|
11
11
|
- `/specrails:batch-implement #1 #2 --parallel` — opt-in parallel, only when the
|
|
12
12
|
tickets touch disjoint files (run a safety check first; fall back to sequential).
|
|
13
13
|
|
|
14
|
+
## Desktop rail execution context
|
|
15
|
+
|
|
16
|
+
When the working directory is a specrails-desktop isolated rail worktree (path contains `/worktrees/`, typically on a `feat/...` branch), you are the ASSIGNED executor of that rail: implement every ticket sequentially in THIS worktree on THIS branch — the desktop assembles it into a batch PR afterwards, nothing needs to land on the integration branch first. The desktop's own bookkeeping (ticket-ownership rows in its `jobs.sqlite`, state under `~/.specrails/`) describes this very launch — never read those internals, and never stop to ask which process should run the batch.
|
|
17
|
+
|
|
14
18
|
## Why this drives the spawns at the ROOT level
|
|
15
19
|
|
|
16
20
|
Do NOT delegate to a nested `/specrails:implement` subagent per ticket that then
|