space-architect 2.0.0.rc1 → 2.0.0.rc2
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/README.md +34 -18
- data/lib/space_architect/{architect_mission.rb → architect_project.rb} +396 -77
- data/lib/space_architect/cli/architect.rb +170 -60
- data/lib/space_architect/cli/research.rb +1 -1
- data/lib/space_architect/gate_evaluator.rb +65 -0
- data/lib/space_architect/gate_lint.rb +140 -0
- data/lib/space_architect/harness.rb +24 -3
- data/lib/space_architect/templates/architect.md.erb +15 -4
- data/lib/space_architect/templates/brief.md.erb +5 -5
- data/lib/space_architect/templates/iteration.md.erb +17 -6
- data/lib/space_architect.rb +3 -1
- data/lib/space_core/cli/build.rb +27 -0
- data/lib/space_core/cli/help.rb +15 -2
- data/lib/space_core/cli/pack.rb +29 -0
- data/lib/space_core/cli/repo.rb +1 -1
- data/lib/space_core/cli/run.rb +29 -0
- data/lib/space_core/cli.rb +6 -0
- data/lib/space_core/oci_builder.rb +56 -0
- data/lib/space_core/oci_packer.rb +99 -0
- data/lib/space_core/oci_runner.rb +73 -0
- data/lib/space_core/space.rb +10 -2
- data/lib/space_core/space_store.rb +1 -1
- data/lib/space_core/templates/oci/dockerfile.erb +63 -0
- data/lib/space_core/templates/oci/dockerignore.erb +17 -0
- data/lib/space_core/templates/oci/entrypoint.sh.erb +10 -0
- data/lib/space_core/version.rb +1 -1
- data/skill/architect/SKILL.md +109 -53
- data/skill/architect/dispatch.md +147 -39
- data/skill/architect/research.md +1 -1
- data/skill/architect-research/SKILL.md +2 -2
- data/skill/architect-vocabulary/SKILL.md +24 -21
- metadata +13 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8bec4cc0a199a23ba60c9efd070163098e43a0a76bd8d2f85fbdbe4f7c7a6077
|
|
4
|
+
data.tar.gz: cc8a23d0ee170242104ef94f020abdb5ed58b8aa4e7c34c97edad42b9cf61433
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0564b3f3909ae233a788950f795afd6fbb3e2edc57ed87b8186cfdb2255d3380e66b140d7f217616ac5f63f9410f04b9f944ede1b06166bd60278429e0550f57
|
|
7
|
+
data.tar.gz: 1b9f709c3ff2dcb77237207fb9cffaad67983eb938f0fe8ee4fc36cc8c95a14acc72523b0c59ebed0c5147a4b792b41d487a21e80e6a11ba1d765f4db0719936
|
data/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/space-architect)
|
|
4
4
|
|
|
5
|
-
> **Task-scoped workspaces that double as Architect Loop
|
|
5
|
+
> **Task-scoped workspaces that double as Architect Loop projects — for humans and their agents!** ✨🛰️
|
|
6
6
|
|
|
7
7
|
`space-architect` is a Ruby toolkit for **spaces** — task-scoped project
|
|
8
8
|
workspaces that hold repos, notes, and artifacts under one obvious filesystem
|
|
@@ -18,7 +18,7 @@ The gem ships **three composable binaries** over clean library seams:
|
|
|
18
18
|
| **`src`** 🌲 | Tend evergreen repo checkouts for copy-on-write provisioning | `Space::Src` |
|
|
19
19
|
|
|
20
20
|
Each is a first-class executable. `architect` also forwards `architect space …`
|
|
21
|
-
and `architect src …` to the other two, so a
|
|
21
|
+
and `architect src …` to the other two, so a project can drive everything from
|
|
22
22
|
one command when that's handier. 🎀
|
|
23
23
|
|
|
24
24
|
## What's a space? 🪐
|
|
@@ -116,7 +116,7 @@ comma form (`-r a,b`) works too. Space ids are date-prefixed
|
|
|
116
116
|
same day get a counter (`…-name-of-space-2`). 📅
|
|
117
117
|
|
|
118
118
|
Everything `space` does is also reachable as `architect space …` from within a
|
|
119
|
-
|
|
119
|
+
project.
|
|
120
120
|
|
|
121
121
|
## `src` — the evergreen engine 🌲
|
|
122
122
|
|
|
@@ -149,24 +149,31 @@ fish integration (`src shell fish install`).
|
|
|
149
149
|
## `architect` — the Architect Loop 🏗️
|
|
150
150
|
|
|
151
151
|
The **Architect Loop** is a structured build cycle for you and headless AI
|
|
152
|
-
builders. Each loop lives inside a space as a *
|
|
152
|
+
builders. Each loop lives inside a space as a *project*.
|
|
153
153
|
|
|
154
154
|
**Roles:**
|
|
155
155
|
|
|
156
|
-
- **Architect** —
|
|
157
|
-
disagreements, writes and freezes iteration files,
|
|
158
|
-
builder output. Never writes implementation code.
|
|
159
|
-
- **Builder** —
|
|
160
|
-
lane in its own git worktree
|
|
161
|
-
work, writes raw evidence to `build/<id>-<lane>/report.md`.
|
|
162
|
-
own work; never edits `architecture/`.
|
|
156
|
+
- **Architect** — the judgment role: a strong reasoning model (or you), run
|
|
157
|
+
interactively. Arbitrates disagreements, writes and freezes iteration files,
|
|
158
|
+
calls kill/continue, merges builder output. Never writes implementation code.
|
|
159
|
+
- **Builder** — the execution role: a cheaper model run headless via `architect
|
|
160
|
+
dispatch`, one per lane in its own git worktree. Reads the iteration's Builder
|
|
161
|
+
Prompt, does the work, writes raw evidence to `build/<id>-<lane>/report.md`.
|
|
162
|
+
Never grades its own work; never edits `architecture/`.
|
|
163
|
+
|
|
164
|
+
The loop is **model-agnostic** — which models fill the two roles is your choice
|
|
165
|
+
(e.g. a strong Claude model judging a cheaper one on the same plan, or a
|
|
166
|
+
cross-vendor pairing for more independent review). Set it per dispatch with
|
|
167
|
+
`architect dispatch --model …`, or run several pairings head-to-head as a
|
|
168
|
+
**variant set** (`architect variant add`). See
|
|
169
|
+
[docs/DESIGN.md](docs/DESIGN.md) §1–§2 for the reasoning.
|
|
163
170
|
|
|
164
171
|
**Filesystem layout:**
|
|
165
172
|
|
|
166
173
|
```text
|
|
167
174
|
architecture/
|
|
168
|
-
ARCHITECT.md # cross-iteration index;
|
|
169
|
-
BRIEF.md # durable §-numbered
|
|
175
|
+
ARCHITECT.md # cross-iteration index; project-wide state
|
|
176
|
+
BRIEF.md # durable §-numbered project contract (optional)
|
|
170
177
|
I01-<iteration>.md # one self-contained file per iteration
|
|
171
178
|
build/
|
|
172
179
|
I01-<iteration>-<lane>/ # lane worktree + scratch per dispatch
|
|
@@ -193,11 +200,17 @@ prints the frozen Acceptance Criteria back. Any change to those sections
|
|
|
193
200
|
afterward is an automatic iteration FAIL. The builder never edits the iteration
|
|
194
201
|
file.
|
|
195
202
|
|
|
203
|
+
**Re-grounding 🧭** — `architect init` also scaffolds a `SessionStart` hook that
|
|
204
|
+
runs `architect ground` (emitting `ARCHITECT.md`, `BRIEF.md`, and the in-flight
|
|
205
|
+
iteration) so every fresh session starts oriented — the loop leans on
|
|
206
|
+
fresh-session judgment, and this is what makes picking up cold cheap. Builders
|
|
207
|
+
inside a lane worktree are never grounded.
|
|
208
|
+
|
|
196
209
|
**Command surface:**
|
|
197
210
|
|
|
198
211
|
```sh
|
|
199
|
-
architect init # scaffold ARCHITECT.md + the space.yaml
|
|
200
|
-
architect brief new # scaffold the durable
|
|
212
|
+
architect init # scaffold ARCHITECT.md + the space.yaml project: block + SessionStart hook
|
|
213
|
+
architect brief new # scaffold the durable project BRIEF.md
|
|
201
214
|
architect new <iteration> # scaffold architecture/I<NN>-<iteration>.md
|
|
202
215
|
architect section <it> <section> --from <f> # write + commit a section
|
|
203
216
|
architect freeze <iteration> # freeze the Acceptance Criteria ❄️
|
|
@@ -208,7 +221,8 @@ architect evidence <it> --lane <lane> # transcribe the builder's report ve
|
|
|
208
221
|
architect gate <iteration> # run the frozen gate commands, stream raw output
|
|
209
222
|
architect merge <it> <lane> # integrate ONE judged-passing lane (--no-ff)
|
|
210
223
|
architect integrate <it> --lanes a,b # integrate a set of passing lanes, in order
|
|
211
|
-
architect
|
|
224
|
+
architect land # end-of-project PR command (no push, no gh)
|
|
225
|
+
architect status # project state (read-only)
|
|
212
226
|
architect variant add|compare|promote … # competing (harness, model) lanes over one frozen spec
|
|
213
227
|
architect research dispatch|status|wait … # parallel read-only research lanes (see below)
|
|
214
228
|
```
|
|
@@ -225,6 +239,8 @@ architect verify my-feature # mechanical post-flight checks
|
|
|
225
239
|
architect evidence my-feature --lane lane-a # transcribe raw evidence
|
|
226
240
|
architect gate my-feature # run the frozen gates yourself
|
|
227
241
|
# … read the diff against the spec, then write the Verdict …
|
|
242
|
+
architect integrate my-feature --lanes lane-a # merge passing lanes → project/<slug>
|
|
243
|
+
architect land # print gh pr create at project end
|
|
228
244
|
```
|
|
229
245
|
|
|
230
246
|
### Streaming builder output 📡
|
|
@@ -346,7 +362,7 @@ The library is split into three namespaces you can require independently:
|
|
|
346
362
|
|
|
347
363
|
- **`Space::Core`** — the foundation: config, state, XDG, terminal, git/mise
|
|
348
364
|
clients, the space store. The `space` CLI runs on this alone.
|
|
349
|
-
- **`Space::Architect`** —
|
|
365
|
+
- **`Space::Architect`** — project state, the builder harness, dispatch, and the
|
|
350
366
|
research supervisor.
|
|
351
367
|
- **`Space::Src`** — the evergreen engine (tracking, sync, copy-on-write clone).
|
|
352
368
|
|
|
@@ -359,7 +375,7 @@ require "space_src" # just the evergreen engine
|
|
|
359
375
|
## Documentation 📖
|
|
360
376
|
|
|
361
377
|
- **[Command Reference](docs/reference.md)** — every command, flag, and behavior
|
|
362
|
-
- **[Design](docs/
|
|
378
|
+
- **[Design](docs/DESIGN.md)** — the source-backed rationale: the twelve invariant rules (R1–R12), the failure-mode → mitigation table, and why the loop is shaped this way
|
|
363
379
|
- **[Changelog](CHANGELOG.md)** — release history
|
|
364
380
|
|
|
365
381
|
## Development 🛠️
|