space-architect 2.0.2 → 4.0.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/README.md +16 -3
- data/lib/space_architect/architect_project.rb +186 -65
- data/lib/space_architect/bug_report.rb +93 -0
- data/lib/space_architect/cli/architect.rb +104 -28
- data/lib/space_architect/harness.rb +63 -9
- data/lib/space_architect/templates/iteration.md.erb +15 -1
- data/lib/space_architect.rb +1 -0
- data/lib/space_core/cli/help.rb +88 -18
- data/lib/space_core/cli/loop_status.rb +47 -0
- data/lib/space_core/cli/repeatable_options.rb +52 -43
- data/lib/space_core/cli/status.rb +54 -13
- data/lib/space_core/commands.rb +20 -0
- data/lib/space_core/paths.rb +23 -0
- data/lib/space_core/shell_integration.rb +1 -1
- data/lib/space_core/space.rb +51 -1
- data/lib/space_core/space_store.rb +1 -1
- data/lib/space_core/terminal.rb +1 -18
- data/lib/space_core/version.rb +1 -1
- data/lib/space_core.rb +2 -0
- data/lib/space_src/cli/clone.rb +0 -1
- data/lib/space_src/cli/config.rb +0 -1
- data/lib/space_src/cli/daemon.rb +0 -1
- data/lib/space_src/cli/org.rb +0 -1
- data/lib/space_src/cli/repo.rb +0 -1
- data/lib/space_src/cli/shell.rb +0 -1
- data/lib/space_src/cli/status.rb +0 -1
- data/lib/space_src/cli/sync.rb +0 -1
- data/lib/space_src/cli.rb +0 -1
- data/skill/architect/SKILL.md +47 -19
- data/skill/architect/dispatch.md +37 -23
- metadata +5 -1
data/skill/architect/dispatch.md
CHANGED
|
@@ -27,12 +27,15 @@ pattern match), so the post-flight `git log` is what the loop actually trusts.
|
|
|
27
27
|
If a lane committed, treat the worktree as tampered: reset and re-dispatch.
|
|
28
28
|
|
|
29
29
|
**Preflight (once per environment):** run `claude --version`, and confirm the
|
|
30
|
-
builder model resolves with a one-shot
|
|
30
|
+
builder model resolves with a one-shot
|
|
31
31
|
(`echo ok | claude -p --model <builder-model> --max-turns 1`). No API key —
|
|
32
32
|
the builder runs on your Claude plan — but note headless `claude -p` draws on
|
|
33
33
|
the Agent SDK credit pool (separate from interactive usage since June 15 2026;
|
|
34
|
-
see `docs/DESIGN.md` §4).
|
|
35
|
-
|
|
34
|
+
see `docs/DESIGN.md` §4). Past that one-time check, no dispatch needs a manual
|
|
35
|
+
start-check: every foreground dispatch self-verifies. Shortly after launch it
|
|
36
|
+
prints a liveness line to stderr naming the streamed model and confirming the
|
|
37
|
+
run log is growing — or a WARN line instead when the streamed model disagrees
|
|
38
|
+
with the pinned `<builder-model>` or the log isn't growing.
|
|
36
39
|
|
|
37
40
|
## Canonical dispatch — `architect dispatch <iteration> <lane>`
|
|
38
41
|
|
|
@@ -49,23 +52,30 @@ Write the lane's prompt to `build/<id>-<lane>/prompt.md` first (never pass a
|
|
|
49
52
|
big prompt as a shell argument — shells mangle quotes), then:
|
|
50
53
|
|
|
51
54
|
```bash
|
|
52
|
-
# single-lane iteration — run from the space root
|
|
55
|
+
# single-lane iteration — run from the space root; dispatch runs in the lane's
|
|
56
|
+
# provisioned worktree (materialized on demand from the frozen declaration)
|
|
53
57
|
architect dispatch <iteration> <lane>
|
|
54
58
|
```
|
|
55
59
|
|
|
56
|
-
For multi-lane iterations,
|
|
57
|
-
each lane from its worktree:
|
|
60
|
+
For multi-lane iterations, materialize every declared lane in one shot with
|
|
61
|
+
`architect provision`, then dispatch each lane from its worktree:
|
|
58
62
|
|
|
59
63
|
```bash
|
|
60
|
-
#
|
|
61
|
-
architect
|
|
62
|
-
architect dispatch <iteration>
|
|
64
|
+
architect provision <iteration> # all declared lanes: worktree + lane/<id>-<lane> branch
|
|
65
|
+
architect dispatch <iteration> lane-a # own background Bash call each
|
|
66
|
+
architect dispatch <iteration> lane-b
|
|
63
67
|
```
|
|
64
68
|
|
|
65
|
-
`architect
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
`architect provision` reads the frozen lane declarations from `space.yaml` and,
|
|
70
|
+
per lane, creates `build/<id>-<lane>/wt` off the resolved base (`--base`
|
|
71
|
+
override, else `project/<slug>` when it exists, else the repo's default branch —
|
|
72
|
+
a repo commit, distinct from the freeze, which is a space commit), adds it with a
|
|
73
|
+
`lane/<iteration>-<lane>` branch, and records it in `space.yaml`. It is
|
|
74
|
+
idempotent (`--lane <name>` provisions a single lane), and wraps the
|
|
75
|
+
`architect worktree add` primitive — still registered for edge cases, not a step
|
|
76
|
+
in the flow. `dispatch`, `integrate`, and `gate` also lazily materialize a lane
|
|
77
|
+
whose worktree is missing from its frozen declaration, so the flow can't
|
|
78
|
+
dead-end on a missing worktree.
|
|
69
79
|
|
|
70
80
|
Issue each dispatch as its **own background Bash tool call** — one call per
|
|
71
81
|
lane. Never use a shell `&` loop. A `for … & done` launcher is a *launcher*
|
|
@@ -112,7 +122,9 @@ lanes pass; the CLI does the git mechanics. Canonical path:
|
|
|
112
122
|
architect integrate <iteration> --lanes <passing-set> # e.g. --lanes lane-a,lane-b
|
|
113
123
|
architect gate <iteration> # integration smoke (raw output; verdict stays yours)
|
|
114
124
|
architect integrate <iteration> --lanes <passing-set> --teardown # or remove worktrees + lane branches after
|
|
115
|
-
|
|
125
|
+
# end of project: landing is the architect's, not a CLI command — write the PR
|
|
126
|
+
# body to build/land/<repo>-pr-body.md yourself, then present the paste-and-run
|
|
127
|
+
# block (cd, git push -u origin project/<slug>, gh pr create) — see SKILL.md §6
|
|
116
128
|
```
|
|
117
129
|
|
|
118
130
|
`architect integrate` commits each named lane on its branch and merges it
|
|
@@ -138,8 +150,8 @@ git -C repos/<repo> merge --no-ff lane/<iteration>-<lane>
|
|
|
138
150
|
<run the gate commands> # integration smoke after every merge
|
|
139
151
|
architect worktree remove <iteration> <lane>
|
|
140
152
|
git -C repos/<repo> branch -d lane/<iteration>-<lane>
|
|
141
|
-
# at project end:
|
|
142
|
-
|
|
153
|
+
# at project end there is no CLI step: the architect writes
|
|
154
|
+
# build/land/<repo>-pr-body.md and presents the push + gh pr create block
|
|
143
155
|
```
|
|
144
156
|
|
|
145
157
|
### Parallel + fast-follow
|
|
@@ -155,10 +167,12 @@ integrate without conflict.
|
|
|
155
167
|
fast-follow lane's `--touch` set and exclude them from every parallel lane's
|
|
156
168
|
touch-set — so the parallel set is disjoint by construction.
|
|
157
169
|
|
|
158
|
-
2. **
|
|
170
|
+
2. **Provision and dispatch the parallel lanes** (off the repo base). Provision
|
|
171
|
+
only the parallel lanes by name — leave the fast-follow lane unmaterialized
|
|
172
|
+
until step 4, so it can root at the integrated tip:
|
|
159
173
|
```bash
|
|
160
|
-
architect
|
|
161
|
-
architect
|
|
174
|
+
architect provision <iteration> --lane lane-a
|
|
175
|
+
architect provision <iteration> --lane lane-b
|
|
162
176
|
architect dispatch <iteration> lane-a # own background Bash call each
|
|
163
177
|
architect dispatch <iteration> lane-b
|
|
164
178
|
```
|
|
@@ -170,11 +184,11 @@ integrate without conflict.
|
|
|
170
184
|
architect gate <iteration>
|
|
171
185
|
```
|
|
172
186
|
|
|
173
|
-
4. **
|
|
174
|
-
git ref — passing `project/<slug>` roots the new worktree at the merged
|
|
175
|
-
(the keystone move):
|
|
187
|
+
4. **Provision the fast-follow lane off the integrated tip.** `--base` accepts
|
|
188
|
+
any git ref — passing `project/<slug>` roots the new worktree at the merged
|
|
189
|
+
tip (the keystone move); `--lane ff` provisions just that lane:
|
|
176
190
|
```bash
|
|
177
|
-
architect
|
|
191
|
+
architect provision <iteration> --lane ff --base project/<slug>
|
|
178
192
|
architect dispatch <iteration> ff
|
|
179
193
|
```
|
|
180
194
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: space-architect
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eric Jacobs
|
|
@@ -240,6 +240,7 @@ files:
|
|
|
240
240
|
- exe/src
|
|
241
241
|
- lib/space_architect.rb
|
|
242
242
|
- lib/space_architect/architect_project.rb
|
|
243
|
+
- lib/space_architect/bug_report.rb
|
|
243
244
|
- lib/space_architect/cli.rb
|
|
244
245
|
- lib/space_architect/cli/architect.rb
|
|
245
246
|
- lib/space_architect/cli/research.rb
|
|
@@ -271,6 +272,7 @@ files:
|
|
|
271
272
|
- lib/space_core/cli/helpers.rb
|
|
272
273
|
- lib/space_core/cli/init.rb
|
|
273
274
|
- lib/space_core/cli/list.rb
|
|
275
|
+
- lib/space_core/cli/loop_status.rb
|
|
274
276
|
- lib/space_core/cli/new.rb
|
|
275
277
|
- lib/space_core/cli/pack.rb
|
|
276
278
|
- lib/space_core/cli/path.rb
|
|
@@ -281,6 +283,7 @@ files:
|
|
|
281
283
|
- lib/space_core/cli/show.rb
|
|
282
284
|
- lib/space_core/cli/status.rb
|
|
283
285
|
- lib/space_core/cli/use.rb
|
|
286
|
+
- lib/space_core/commands.rb
|
|
284
287
|
- lib/space_core/config.rb
|
|
285
288
|
- lib/space_core/errors.rb
|
|
286
289
|
- lib/space_core/git_client.rb
|
|
@@ -288,6 +291,7 @@ files:
|
|
|
288
291
|
- lib/space_core/oci_builder.rb
|
|
289
292
|
- lib/space_core/oci_packer.rb
|
|
290
293
|
- lib/space_core/oci_runner.rb
|
|
294
|
+
- lib/space_core/paths.rb
|
|
291
295
|
- lib/space_core/repo_reference.rb
|
|
292
296
|
- lib/space_core/repo_resolver.rb
|
|
293
297
|
- lib/space_core/shell_integration.rb
|