space-architect 5.5.1 → 6.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 +110 -0
- data/lib/space_architect/architect_project.rb +534 -57
- data/lib/space_architect/bug_report.rb +18 -7
- data/lib/space_architect/cli/architect.rb +123 -7
- data/lib/space_architect/cli/research.rb +3 -4
- data/lib/space_architect/harness.rb +73 -28
- data/lib/space_architect/session_sync/runner.rb +4 -2
- data/lib/space_architect/skill_installer.rb +3 -3
- data/lib/space_architect/templates/iteration.md.erb +35 -7
- data/lib/space_core/cli/help.rb +2 -0
- data/lib/space_core/commands.rb +32 -1
- data/lib/space_core/paths.rb +35 -0
- data/lib/space_core/space_store.rb +1 -1
- data/lib/space_core/version.rb +1 -1
- data/lib/space_src/cli/sync.rb +23 -10
- data/lib/space_src/cli.rb +1 -0
- data/lib/space_src/cloner.rb +2 -0
- data/lib/space_src/nav.rb +1 -0
- data/lib/space_src/sync/engine.rb +46 -7
- data/lib/space_src/sync/report.rb +18 -0
- data/lib/space_src.rb +1 -0
- data/skill/architect/SKILL.md +96 -14
- data/skill/architect/dispatch.md +27 -12
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aa2517580f1eefb1906810b2a2d1e2500814e9042a812c5aa8a6ccc7474f0067
|
|
4
|
+
data.tar.gz: 66259d63c107e8fe76dc8036766015170ce2d1a0c4ac4d0e617d2b4fed5811fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d2ca2365a338b78284e80573a137ddb0b79fdd10147d03c59f2b01aad7a8e8482899630545673f72f86d3abab075fb8fb9e76eeabf23ebe019f12c0bce1a6aaa
|
|
7
|
+
data.tar.gz: 2e1df0a9c9ea9b9ba162420120872d4671e031a712fb08d9995caa4a6e49fd3d50526ec8cc7cd8fc5acf463bb8b454632c99a6dfa51440182cadc24a27a26e87
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,116 @@ 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
|
+
## [6.0.0] - 2026-08-03
|
|
9
|
+
|
|
10
|
+
Twelve iterations of the Architect Loop run against this repo's own tooling, each
|
|
11
|
+
frozen before dispatch and judged by a separate session against criteria written
|
|
12
|
+
before results existed. Major because `architect freeze` gains two hard
|
|
13
|
+
preconditions it did not have — see the **BREAKING** items under Changed.
|
|
14
|
+
|
|
15
|
+
Roughly half the release is machinery that stops the next papercut being written:
|
|
16
|
+
gates you can execute *before* freezing them, lane boundaries that cannot silently
|
|
17
|
+
disagree with themselves, and an escape valve for the case where the frozen
|
|
18
|
+
contract is the thing that is wrong. Suite: 1212 → 1297 runs, 4811 → 5148
|
|
19
|
+
assertions, green throughout, with the last known flake causally explained rather
|
|
20
|
+
than retried away.
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **`architect rehearse ITERATION`** — the phase between authoring and freeze
|
|
25
|
+
(#81, consolidating #73, #39, #34). Runs the *drafted* (unfrozen, working-tree)
|
|
26
|
+
gates through the identical execution path `architect gate` uses — `execute_gates`
|
|
27
|
+
is extracted byte-for-byte, so the two can never diverge — and classifies each
|
|
28
|
+
RED / GREEN / BROKEN / EMPTY. Prints the resolved `dir` that was always in the
|
|
29
|
+
result hash and never rendered. `--record` emits a paste-able provenance block
|
|
30
|
+
for the iteration's AC preamble.
|
|
31
|
+
- **Scope-asymmetry reporting in `rehearse`** — for each gate whose command is a
|
|
32
|
+
recognizable file-scoped grep invocation, the gate's own pattern is re-run across
|
|
33
|
+
the whole repo via `git grep` and anything matching outside the gate's declared
|
|
34
|
+
paths is named, loudest when it also falls outside every declared lane's touch
|
|
35
|
+
set. Catches the failure mode where a boundary is stated consistently in three
|
|
36
|
+
places and is wrong in all three because all three were drawn from one too-narrow
|
|
37
|
+
grep. Reports only: it never touches `rehearse`'s exit code, its RED/GREEN/BROKEN
|
|
38
|
+
classification, or the rehearsal stamp. An invocation carrying a flag `git grep`
|
|
39
|
+
has no equivalent for (`-x`) is declined by name and counted as not-analyzed
|
|
40
|
+
rather than answered wrong.
|
|
41
|
+
- **`architect integrate --accept-bounds REASON`** — merges a lane that wrote
|
|
42
|
+
outside its declared touch set when the *declaration* is the defect and the freeze
|
|
43
|
+
rules correctly forbid widening it after the fact. Recorded per-lane in
|
|
44
|
+
`space.yaml` against the lane that was actually out of bounds, never silently, and
|
|
45
|
+
never able to override the no-builder-commits check.
|
|
46
|
+
- **`architect freeze --skip-rehearse REASON`** — the deliberate escape from the new
|
|
47
|
+
rehearsal precondition, with the reason recorded in `space.yaml`. An empty REASON
|
|
48
|
+
is refused.
|
|
49
|
+
- **`Space::Core::Paths` glob helpers** — one documented decision about when a
|
|
50
|
+
content-tree glob includes dotfiles, guarded by `test/paths_guard_test.rb` so the
|
|
51
|
+
flags cannot drift apart again across call sites.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **BREAKING — `architect freeze` requires a fresh rehearsal stamp.** The stamp is
|
|
56
|
+
digest-keyed to the gates block, so editing one byte of a gate after rehearsing
|
|
57
|
+
invalidates it; it records that the architect *looked*, never that the gates
|
|
58
|
+
passed. An iteration that froze cleanly on 5.x now errors with
|
|
59
|
+
`has not been rehearsed against its current gates`. Run `architect rehearse
|
|
60
|
+
ITERATION` first, or `architect freeze ITERATION --skip-rehearse REASON` to skip
|
|
61
|
+
deliberately.
|
|
62
|
+
- **BREAKING — `architect freeze` refuses an untouched scaffold placeholder.** An
|
|
63
|
+
Acceptance Criteria section still carrying the template's placeholder AC1 with no
|
|
64
|
+
active gate is now an error rather than a successful freeze (#73). Narrow by
|
|
65
|
+
design: a hand-authored prose-only AC without the placeholder still freezes, so
|
|
66
|
+
the spike path the skill sanctions is untouched.
|
|
67
|
+
- **`architect integrate` commits its own `space.yaml` mutation.** It previously
|
|
68
|
+
wrote `integration_branch`/`integrate_sha` to disk and deferred the commit to
|
|
69
|
+
whatever committing command ran next, leaving a window in which a dying session
|
|
70
|
+
lost the record of which lanes had merged — which happened, and cost a full
|
|
71
|
+
judging session. The commit is made by pathspec so unrelated dirty files are not
|
|
72
|
+
swept in, once per call rather than once per lane, and from an `ensure` so a merge
|
|
73
|
+
conflict partway through the lane set still preserves what already merged.
|
|
74
|
+
- **`architect evidence` replaces a lane's subsection instead of appending.**
|
|
75
|
+
Re-transcribing a corrected report no longer leaves both copies in Builder Report.
|
|
76
|
+
- **Gate commands are spawned through an explicit `/bin/sh -c`**, so the documented
|
|
77
|
+
shell is the actual shell regardless of the invoking environment.
|
|
78
|
+
- **Skill prose (`skill/architect/`, `docs/DESIGN.md`).** The lane-prompt template
|
|
79
|
+
tells builders not to title their scratch report (the CLI supplies the `### <lane>`
|
|
80
|
+
heading) and to keep internal headings at `###` or deeper; `SKILL.md` §4 carries
|
|
81
|
+
the boundary-enumeration discipline and the content rule that a criterion renaming
|
|
82
|
+
an identifier must be drawn from a whole-repo grep, not `lib/` alone. These are
|
|
83
|
+
load-bearing: lane prompts are assembled from `dispatch.md`, and at least one
|
|
84
|
+
defect in this release was caused by prose and code disagreeing.
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
- **`architect research dispatch` silently launched only the first prompt (#83).**
|
|
89
|
+
Given five prompt paths it launched one, exited 0, and printed nothing on stderr —
|
|
90
|
+
destroying evidence the architect then writes research grounds from. dry-cli binds
|
|
91
|
+
only the first positional to a scalar `argument` and drops the rest into the
|
|
92
|
+
options hash; `Supervisor#dispatch` had always handled an array correctly. Fixed
|
|
93
|
+
with dry-cli's own `type: :array`, the established idiom at
|
|
94
|
+
`space_src/cli/clone.rb:19`. Net −1 line.
|
|
95
|
+
- **`architect bug-report` buried the title in an HTML comment `gh` ignores (#41)**,
|
|
96
|
+
forcing a manual `--title` on every filing.
|
|
97
|
+
- **The dispatch liveness check was a point-sample race in production**, not only in
|
|
98
|
+
tests. It now waits for a real stream-json init event and reports true elapsed
|
|
99
|
+
time, and scans the run log incrementally instead of re-parsing it from the top
|
|
100
|
+
every 50ms — 92.6MB → 615KB of reads over a 300-poll worst case.
|
|
101
|
+
- **`Commands.wrap`'s quote scanner was not backslash-aware.** Verified at the
|
|
102
|
+
property level with `bash` as the oracle over an eight-command battery, rather than
|
|
103
|
+
by adding another example.
|
|
104
|
+
- **`Dir.glob` calls silently skipped dotfiles** in `SkillInstaller.same_content?`
|
|
105
|
+
and its siblings; consolidated behind the new `Space::Core::Paths` decision.
|
|
106
|
+
- **The last suite flake, explained rather than retried.** `FileUtils.cp_r` of the
|
|
107
|
+
git fixture templates raced `git maintenance --detach`, which outlived `system()`
|
|
108
|
+
and mutated `.git/objects/` mid-copy. Stress: 13/24 failures → 0/24, twice.
|
|
109
|
+
- **A clone-concurrency test's fiber rendezvous was unbounded** — correct only by an
|
|
110
|
+
accident of `Async::Task#async`'s greedy dispatch, and would have hung `rake test`
|
|
111
|
+
forever with no message if scheduling ever shifted. Now bounded, failing legibly
|
|
112
|
+
while keeping the exact peak-concurrency assertion it was written for.
|
|
113
|
+
- **The scope-asymmetry check overstated its own certainty.** It replayed a gate's
|
|
114
|
+
pattern but dropped the gate's `-w`, so the whole-repo re-run was *broader* than
|
|
115
|
+
the gate it stood in for and printed the surplus under its loudest line ("no lane
|
|
116
|
+
may legally fix these"). `-w` is now replayed and `-x` declined by name.
|
|
117
|
+
|
|
8
118
|
## [5.5.1] - 2026-07-25
|
|
9
119
|
|
|
10
120
|
### Fixed
|