space-architect 3.0.0 → 5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 135a6282cfe3e3073265b71867e7d228673cbfb9b7253feaaba5ad67a180b7cb
4
- data.tar.gz: 0d0406a99feadadebb24a6167c11837de25bede933e752ef6507524208f4e5a7
3
+ metadata.gz: 6846eab011f92f0b54a7bb886d7b97cf8c727beb3fc6d279a2db603062645520
4
+ data.tar.gz: 0bc8f0b22f785fd2d3ed77419a1ad3b6058e4b76a6aaee41b7a66793b865702a
5
5
  SHA512:
6
- metadata.gz: c8b161eff4f4b5a788c2e3c9b423bcc31a495915a076afb70445f6b0cdaf1cc2573ee381ce0c3e09ca712a8398b70ca091b015260b6b4e9c24914ece4a0f5539
7
- data.tar.gz: f61cdd897881530ad2e81df5bd846c4e644fb85ac6847c4afd147e643b6045b59c7ecb89fd12b83f9a7b5c2ef12813c5e88e7634449a919aac2e4bc75052a6b0
6
+ metadata.gz: 77216fd23779d4ee5ae16f3c141fc9f7670b3efc3c8b7fe31292c31284be0903616505c4199fbe4e5d7b12988d0638e7a31cba600a4625caad2b939255fc9370
7
+ data.tar.gz: ca1fb9e9bd1c20c6ef201d60f763cdcb87b18b9c289169ff601be6c858b0558f283986b2b24bb82cf73b4b1001c3ce0a9955bd02675557548fcc2e930aea27d2
data/CHANGELOG.md CHANGED
@@ -5,6 +5,92 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [5.0.0] - 2026-07-06
9
+
10
+ ### Added
11
+
12
+ - **`architect dispatch --prompt <file>`** — the lane prompt is authored anywhere
13
+ (a fresh scratch file) and dispatch copies it byte-for-byte to the canonical
14
+ `build/<id>-<lane>/prompt.md` before launch, announcing the copy. The CLI owns
15
+ the canonical path; the architect never blind-writes it (#48, #42).
16
+ - **`architect brief new --from <file>` / `--stdin`** — write the authored brief
17
+ in one step instead of filling a pre-seeded template. Bare `brief new` still
18
+ scaffolds the placeholder, and now says so
19
+ (`Brief ready: … (template — Read it before editing)`).
20
+ - **Flexible commit messages on every committing loop command** — `init`, `new`,
21
+ `freeze`, `brief new`, `section`, `verdict`, `evidence`, `merge`, and
22
+ `integrate` all take `-m`/`--message` and `--message-from <file>`. The first
23
+ line completes the subject after a short canonical prefix (`I01 spec: <your
24
+ subject>`, `lane <lane>: <your subject>`); remaining lines become the commit
25
+ body. Without the flags, the canonical messages are unchanged. The space's git
26
+ log is the loop's durable memory — detailed bodies are the point.
27
+
28
+ ### Changed
29
+
30
+ - **`worktree add`/`provision` no longer pre-seed `prompt.md` with a placeholder
31
+ stub.** The unannounced stub made the architect's first `Write` trip the
32
+ harness read-before-write guard on every single lane (a failed-write → read →
33
+ rewrite round trip; 40 occurrences mined from real transcripts). Dispatch
34
+ still refuses a missing, empty, or legacy-stub prompt (#48, #42).
35
+ - **`architect merge --message` semantics** — the message now composes with the
36
+ canonical `lane <lane>:` prefix (subject + body) instead of replacing the
37
+ whole message, matching every other committing command.
38
+ - **Skill prose** — the architect authors all content (lane prompts, brief, PR
39
+ bodies) in fresh timestamped scratch files and hands them to the CLI via
40
+ `--from`/`--prompt`; PR bodies land at
41
+ `build/land/<repo>-pr-body-<yyyymmdd-hhmm>.md`; committing commands should
42
+ carry detailed `--message-from` bodies.
43
+
44
+ ## [4.0.0] - 2026-07-05
45
+
46
+ Backfilled — the bump shipped without an entry. Five iterations run through the
47
+ Architect Loop against `space-architect`'s own live-loop papercuts (#46), plus
48
+ the `dispatched_at` producer (#45) and a test-suite hygiene pass (#32).
49
+
50
+ ### Added
51
+
52
+ - **`architect provision <iteration> [--base <ref>] [--lane <name>]`** — materializes
53
+ every declared lane's worktree + `lane/<id>-<lane>` branch in one shot from the
54
+ frozen lane plan (idempotent; base resolves `--base`, else `project/<slug>` HEAD,
55
+ else the repo's default branch). `dispatch`/`integrate`/`gate`/`verify`
56
+ auto-materialize a missing worktree from the frozen declaration, so the flow
57
+ can't dead-end (#26).
58
+ - **Fenced ` ```lanes ` block in the Specification** — `name`, `repo`, `touch`
59
+ globs, parsed at **freeze** into `space.yaml` lane entries, making the lane plan
60
+ (including the out-of-bounds touch-set contract) part of the frozen spec (#26).
61
+ - **`space.yaml` schema v2** — the never-bumped `version` key now means something:
62
+ canonicalize on save, read + self-heal the two known v1 variants (v1a
63
+ `architect:`, v1b `project:`+`version: 1`) on load; a both-keys conflict refuses
64
+ and names both blocks rather than silently picking one (#33).
65
+ - **`dispatched_at` on lane entries** — every dispatch stamps an ISO 8601 launch
66
+ time after preflight, before the run, on both foreground and detached paths
67
+ (#18, producer landed via #45).
68
+ - **Self-verifying dispatch liveness** — a transient fiber inside dispatch checks
69
+ the launched run matches intent (model, growth of `run.jsonl`), retiring the
70
+ manual "canary" ceremony (#43, #44).
71
+ - **`architect help` grouped by loop phase** — Spec / Build / Judge / Land /
72
+ Project, commands in loop order, with an embedded loop-status block when run
73
+ inside a project space; `space status` reports on a bare call and still sets on
74
+ `space status <value>`.
75
+
76
+ ### Changed
77
+
78
+ - **Lane declaration is single-source-of-truth** — lanes were declared twice
79
+ (Specification prose + `worktree add` flags) with the touch-set divorced from
80
+ the frozen spec; the ` ```lanes ` block at freeze is now the one declaration.
81
+ The single-lane "dispatch in the repo checkout" fast path is removed (it never
82
+ worked with `merge_lane!`); manual `worktree add` remains as the internal
83
+ primitive `provision` wraps (#26).
84
+ - **Skill prose** (`SKILL.md` §4–§6, `dispatch.md`) rewritten to the
85
+ declare → freeze → provision → dispatch lane lifecycle.
86
+
87
+ ### Fixed
88
+
89
+ - **`architect integrate <it> --teardown`** (no `--lanes`) backtraced; teardown-only
90
+ mode now deletes per-lane branches and worktrees, never `project/<slug>` or
91
+ `main` (#30).
92
+ - **Test suite hygiene** — zero warnings, zero stray output, 58.8s → 49.1s (#32).
93
+
8
94
  ## [3.0.0] - 2026-07-01
9
95
 
10
96
  ### Added
data/README.md CHANGED
@@ -102,7 +102,9 @@ space show 20260531-name-of-space
102
102
  space path 20260531-name-of-space
103
103
  space current # based on $PWD
104
104
  space show # based on $PWD
105
- space status done # based on $PWD
105
+ space status # report: metadata + loop status (based on $PWD)
106
+ space status 20260531-name-of-space # report another space
107
+ space status done # set: active | paused | done | archived
106
108
  space status 20260531-name-of-space done
107
109
  space config set default_provider github.com
108
110
  space config set default_organization example-org
@@ -115,6 +117,12 @@ space use 20260531-name-of-space # records recent state, prints the
115
117
  space ls --color=always # auto | always | never (--colors also accepted)
116
118
  ```
117
119
 
120
+ `space status` is **report-or-set**: with no status keyword (bare, or with just
121
+ a space id) it *reports* the space — its metadata plus a compact loop-status
122
+ block (project status, current iteration, derived state) when the space runs an
123
+ Architect project, quietly omitted otherwise; pass a status keyword (`active`,
124
+ `paused`, `done`, `archived`) to *set* it instead. 🔁
125
+
118
126
  Repos are passed with a repeatable `-r` flag (`-r org/repo -r org/lib`); the
119
127
  comma form (`-r a,b`) works too. Space ids are date-prefixed
120
128
  (`20260531-name-of-space`) so they sort naturally, and duplicate names on the
@@ -263,8 +271,12 @@ build/
263
271
  ```
264
272
 
265
273
  **Iteration file anatomy** — one file, grown section by section. You author the
266
- *content*; the CLI owns the *persistence* (each command writes the section,
267
- commits it with the canonical message, and prints back what changed):
274
+ *content* in fresh scratch files; the CLI owns the *persistence* (each command
275
+ writes the section, commits it, and prints back what changed). Every committing
276
+ command takes `-m`/`--message` and `--message-from <file>` — your first line
277
+ completes the subject after a short canonical prefix (`I01 spec: <subject>`),
278
+ the rest becomes the body. The space's git log is the loop's durable memory:
279
+ write detailed messages.
268
280
 
269
281
  | Section | Holds | How you persist it |
270
282
  |---------|-------|--------------------|
@@ -291,12 +303,12 @@ inside a lane worktree are never grounded.
291
303
 
292
304
  ```sh
293
305
  architect init # scaffold ARCHITECT.md + the space.yaml project: block + SessionStart hook
294
- architect brief new # scaffold the durable project BRIEF.md
306
+ architect brief new --from <f> # write the durable project BRIEF.md (authored in a scratch file)
295
307
  architect new <iteration> # scaffold architecture/I<NN>-<iteration>.md
296
- architect section <it> <section> --from <f> # write + commit a section
308
+ architect section <it> <section> --from <f> # write + commit a section (add -m/--message-from for a detailed commit)
297
309
  architect freeze <iteration> # freeze the Acceptance Criteria ❄️
298
310
  architect worktree add <repo> <it> <lane> # isolated worktree per lane (2–4 lanes)
299
- architect dispatch <it> <lane> # dispatch a builder (add --detach to survive long runs)
311
+ architect dispatch <it> <lane> --prompt <f> # copy the lane prompt in + dispatch a builder (--detach to survive long runs)
300
312
  architect verify <iteration> # post-flight mechanical checks (reports only)
301
313
  architect evidence <it> --lane <lane> # transcribe the builder's report verbatim
302
314
  architect gate <iteration> # run the frozen gate commands, stream raw output
@@ -308,14 +320,19 @@ architect variant add|compare|promote … # competing (harness, model) lanes
308
320
  architect research dispatch|status|wait … # parallel read-only research lanes (see below)
309
321
  ```
310
322
 
323
+ `architect help` (or bare `architect`, `architect --help`) lists these grouped by
324
+ loop phase — **Spec · Build · Judge · Land · Project · Groups**, in canonical
325
+ order — and, inside an architect space, ends with a compact loop-status block
326
+ (project status + current iteration) so you can see where you are in the loop. 🧭
327
+
311
328
  A typical session:
312
329
 
313
330
  ```sh
314
331
  architect init # first time
315
332
  architect new my-feature # scaffold I01-my-feature.md
316
- architect section my-feature specification --from spec.md
333
+ architect section my-feature specification --from spec.md -m "pull-based dispatcher seam"
317
334
  architect freeze my-feature # lock it ❄️
318
- architect dispatch my-feature lane-a --detach # send a builder; poll the report
335
+ architect dispatch my-feature lane-a --prompt tmp/prompts/I01-lane-a.md --detach # send a builder; poll the report
319
336
  architect verify my-feature # mechanical post-flight checks
320
337
  architect evidence my-feature --lane lane-a # transcribe raw evidence
321
338
  architect gate my-feature # run the frozen gates yourself