@rsaglobaltech/specgate 0.17.10 → 0.19.1

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.
Files changed (211) hide show
  1. package/CHANGELOG.md +133 -1
  2. package/README.md +4 -4
  3. package/bin/specgate.ts +48 -47
  4. package/dist/bin/specgate.js +48 -46
  5. package/dist/bin/specgate.js.map +1 -1
  6. package/dist/packages/core/src/application/ArchiveChangeUseCase.js +6 -2
  7. package/dist/packages/core/src/application/ArchiveChangeUseCase.js.map +1 -1
  8. package/dist/packages/core/src/application/ValidateProjectUseCase.js +1 -1
  9. package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
  10. package/dist/packages/core/src/domain/ChangeTemplates.js +1 -1
  11. package/dist/packages/core/src/domain/DeltaFeature.js +3 -3
  12. package/dist/packages/core/src/domain/DeltaFeature.js.map +1 -1
  13. package/dist/packages/core/src/domain/DerivedMatrix.js +9 -9
  14. package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -1
  15. package/dist/packages/core/src/domain/DoneVerification.js +1 -1
  16. package/dist/packages/core/src/domain/DoneVerification.js.map +1 -1
  17. package/dist/packages/core/src/domain/DraftChecklist.js +38 -6
  18. package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
  19. package/dist/packages/core/src/domain/GherkinTags.js +12 -12
  20. package/dist/packages/core/src/domain/GherkinTags.js.map +1 -1
  21. package/dist/packages/core/src/domain/InboundChange.js +1 -1
  22. package/dist/packages/core/src/domain/InboundChange.js.map +1 -1
  23. package/dist/packages/core/src/domain/Language.js +2 -2
  24. package/dist/packages/core/src/domain/Language.js.map +1 -1
  25. package/dist/packages/core/src/domain/Lockfile.js +7 -7
  26. package/dist/packages/core/src/domain/Lockfile.js.map +1 -1
  27. package/dist/packages/core/src/domain/PackDelta.js +1 -1
  28. package/dist/packages/core/src/domain/PackDelta.js.map +1 -1
  29. package/dist/packages/core/src/domain/PackSpec.js +21 -2
  30. package/dist/packages/core/src/domain/PackSpec.js.map +1 -1
  31. package/dist/packages/core/src/domain/RequirementGraph.js +2 -2
  32. package/dist/packages/core/src/domain/SpecParser.js +6 -6
  33. package/dist/packages/core/src/domain/SpecParser.js.map +1 -1
  34. package/dist/packages/core/src/domain/TraceMerge.js +4 -4
  35. package/dist/packages/core/src/domain/TraceMerge.js.map +1 -1
  36. package/dist/packages/core/src/domain/TraceabilityFormat.js +4 -4
  37. package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
  38. package/dist/packages/core/src/domain/ValueAnnotations.js +8 -8
  39. package/dist/packages/core/src/domain/ValueAnnotations.js.map +1 -1
  40. package/dist/packages/core/src/domain/WriteScope.js +3 -3
  41. package/dist/packages/core/src/domain/WriteScope.js.map +1 -1
  42. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +2 -2
  43. package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -1
  44. package/dist/packages/core/src/infrastructure/ConsoleReporter.js +2 -2
  45. package/dist/packages/core/src/infrastructure/ConsoleReporter.js.map +1 -1
  46. package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js +2 -2
  47. package/dist/packages/core/src/infrastructure/DerivedMatrixSources.js.map +1 -1
  48. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js +4 -4
  49. package/dist/packages/core/src/infrastructure/DiskLanguageRepository.js.map +1 -1
  50. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js +1 -1
  51. package/dist/packages/core/src/infrastructure/DiskPackDeltaRepository.js.map +1 -1
  52. package/dist/packages/core/src/infrastructure/GitContributionStager.js +3 -3
  53. package/dist/packages/core/src/infrastructure/GitContributionStager.js.map +1 -1
  54. package/dist/packages/core/src/infrastructure/RemotePackResolver.js +5 -5
  55. package/dist/packages/core/src/infrastructure/RemotePackResolver.js.map +1 -1
  56. package/dist/packages/core/test/unit/delta-feature.test.js +3 -3
  57. package/dist/packages/core/test/unit/delta-feature.test.js.map +1 -1
  58. package/dist/packages/core/test/unit/derived-matrix.test.js +8 -8
  59. package/dist/packages/core/test/unit/derived-matrix.test.js.map +1 -1
  60. package/dist/packages/core/test/unit/gherkin-tags.test.js +8 -8
  61. package/dist/packages/core/test/unit/gherkin-tags.test.js.map +1 -1
  62. package/dist/packages/core/test/unit/inbound-change.test.js +1 -1
  63. package/dist/packages/core/test/unit/inbound-change.test.js.map +1 -1
  64. package/dist/packages/core/test/unit/matrix-dependencies.test.js +5 -5
  65. package/dist/packages/core/test/unit/matrix-dependencies.test.js.map +1 -1
  66. package/dist/packages/core/test/unit/new-requirement.test.js +1 -1
  67. package/dist/packages/core/test/unit/new-requirement.test.js.map +1 -1
  68. package/dist/packages/core/test/unit/value-annotations.test.js +5 -5
  69. package/dist/packages/core/test/unit/value-annotations.test.js.map +1 -1
  70. package/dist/packages/core/test/unit/write-scope-status.test.js +5 -5
  71. package/dist/packages/core/test/unit/write-scope-status.test.js.map +1 -1
  72. package/dist/packages/mcp-spec-driven/src/native-tools.js +3 -3
  73. package/dist/packages/mcp-spec-driven/src/native-tools.js.map +1 -1
  74. package/dist/packages/mcp-spec-driven/src/server.js +1 -7
  75. package/dist/packages/mcp-spec-driven/src/server.js.map +1 -1
  76. package/dist/packages/mcp-spec-driven/src/tools.js +4 -4
  77. package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
  78. package/dist/scripts/agents/commands.js +18 -0
  79. package/dist/scripts/agents/commands.js.map +1 -1
  80. package/dist/scripts/agents/init.js +35 -48
  81. package/dist/scripts/agents/init.js.map +1 -1
  82. package/dist/scripts/alm/cli.js +37 -3
  83. package/dist/scripts/alm/cli.js.map +1 -1
  84. package/dist/scripts/alm/providers/index.js +1 -1
  85. package/dist/scripts/alm/providers/index.js.map +1 -1
  86. package/dist/scripts/change/instructions.js +2 -2
  87. package/dist/scripts/change/instructions.js.map +1 -1
  88. package/dist/scripts/cli/commands/alm/PullCommand.js +1 -1
  89. package/dist/scripts/cli/commands/alm/PullCommand.js.map +1 -1
  90. package/dist/scripts/cli/commands/change/ChangeCommand.js +106 -101
  91. package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
  92. package/dist/scripts/cli/commands/config/CiInitCommand.js +6 -4
  93. package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -1
  94. package/dist/scripts/cli/commands/config/CompletionCommand.js +10 -10
  95. package/dist/scripts/cli/commands/config/CompletionCommand.js.map +1 -1
  96. package/dist/scripts/cli/commands/config/ConfigInitCommand.js +11 -19
  97. package/dist/scripts/cli/commands/config/ConfigInitCommand.js.map +1 -1
  98. package/dist/scripts/cli/commands/config/ConfigSetCommand.js +5 -1
  99. package/dist/scripts/cli/commands/config/ConfigSetCommand.js.map +1 -1
  100. package/dist/scripts/cli/commands/harness/RunCommand.js +73 -38
  101. package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
  102. package/dist/scripts/cli/commands/pack/BundlePackCommand.js +36 -2
  103. package/dist/scripts/cli/commands/pack/BundlePackCommand.js.map +1 -1
  104. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +2 -2
  105. package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
  106. package/dist/scripts/cli/commands/pack/InferPackCommand.js +2 -1
  107. package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
  108. package/dist/scripts/cli/commands/pack/InitPackCommand.js +23 -32
  109. package/dist/scripts/cli/commands/pack/InitPackCommand.js.map +1 -1
  110. package/dist/scripts/cli/commands/pack/LintPackCommand.js +4 -3
  111. package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -1
  112. package/dist/scripts/cli/commands/project/AdoptCommand.js +17 -4
  113. package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
  114. package/dist/scripts/cli/commands/project/InitProjectCommand.js +8 -5
  115. package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
  116. package/dist/scripts/cli/commands/project/OnboardCommand.js +17 -24
  117. package/dist/scripts/cli/commands/project/OnboardCommand.js.map +1 -1
  118. package/dist/scripts/cli/commands/project/UpdateCommand.js +23 -43
  119. package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
  120. package/dist/scripts/cli/commands/quality/CheckCommand.js +30 -17
  121. package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
  122. package/dist/scripts/cli/commands/quality/DoctorCommand.js +27 -10
  123. package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
  124. package/dist/scripts/cli/commands/quality/FixCommand.js +24 -29
  125. package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
  126. package/dist/scripts/cli/commands/quality/ReportCommand.js +8 -4
  127. package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
  128. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +69 -16
  129. package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
  130. package/dist/scripts/cli/commands/spec/DoneCommand.js +37 -23
  131. package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
  132. package/dist/scripts/cli/commands/spec/DraftCommand.js +724 -26
  133. package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
  134. package/dist/scripts/cli/commands/spec/MatrixCommand.js +24 -27
  135. package/dist/scripts/cli/commands/spec/MatrixCommand.js.map +1 -1
  136. package/dist/scripts/cli/commands/spec/NewCommand.js +11 -14
  137. package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -1
  138. package/dist/scripts/cli/commands/spec/PetCommand.js +102 -0
  139. package/dist/scripts/cli/commands/spec/PetCommand.js.map +1 -0
  140. package/dist/scripts/cli/commands/spec/PlanCommand.js +34 -39
  141. package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
  142. package/dist/scripts/cli/commands/spec/ReqCommand.js +51 -58
  143. package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
  144. package/dist/scripts/cli/commands/spec/StatusCommand.js +99 -45
  145. package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
  146. package/dist/scripts/cli/commands/spec/StudioCommand.js +16 -24
  147. package/dist/scripts/cli/commands/spec/StudioCommand.js.map +1 -1
  148. package/dist/scripts/cli/commands/specops/ContributeCommand.js +24 -32
  149. package/dist/scripts/cli/commands/specops/ContributeCommand.js.map +1 -1
  150. package/dist/scripts/cli/commands/specops/DiffCommand.js +3 -2
  151. package/dist/scripts/cli/commands/specops/DiffCommand.js.map +1 -1
  152. package/dist/scripts/cli/commands/specops/SyncCommand.js +4 -3
  153. package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
  154. package/dist/scripts/docs/blocks.js +4 -4
  155. package/dist/scripts/docs/blocks.js.map +1 -1
  156. package/dist/scripts/docs/build-site.js +24 -9
  157. package/dist/scripts/docs/build-site.js.map +1 -1
  158. package/dist/scripts/docs/components.js +24 -24
  159. package/dist/scripts/docs/components.js.map +1 -1
  160. package/dist/scripts/docs/journey-storyboard.js +358 -0
  161. package/dist/scripts/docs/journey-storyboard.js.map +1 -0
  162. package/dist/scripts/docs/nav.js +120 -23
  163. package/dist/scripts/docs/nav.js.map +1 -1
  164. package/dist/scripts/docs/record-journey.js +376 -0
  165. package/dist/scripts/docs/record-journey.js.map +1 -0
  166. package/dist/scripts/docs/record-terminal.js +260 -43
  167. package/dist/scripts/docs/record-terminal.js.map +1 -1
  168. package/dist/scripts/docs/terminal-storyboard.js +151 -2
  169. package/dist/scripts/docs/terminal-storyboard.js.map +1 -1
  170. package/dist/scripts/draft/brief-setup.js +367 -0
  171. package/dist/scripts/draft/brief-setup.js.map +1 -0
  172. package/dist/scripts/draft/confined-agent.js +194 -0
  173. package/dist/scripts/draft/confined-agent.js.map +1 -0
  174. package/dist/scripts/draft/drafting-guide.js +147 -0
  175. package/dist/scripts/draft/drafting-guide.js.map +1 -0
  176. package/dist/scripts/gen_mcp_tools.js +4 -4
  177. package/dist/scripts/gen_mcp_tools.js.map +1 -1
  178. package/dist/scripts/harness/init.js +25 -16
  179. package/dist/scripts/harness/init.js.map +1 -1
  180. package/dist/scripts/harness/report.js +39 -40
  181. package/dist/scripts/harness/report.js.map +1 -1
  182. package/dist/scripts/harness/worktree-lock.js +2 -2
  183. package/dist/scripts/harness/worktree-lock.js.map +1 -1
  184. package/dist/scripts/lib/command.js +3 -2
  185. package/dist/scripts/lib/command.js.map +1 -1
  186. package/dist/scripts/lib/derived-writes.js +1 -1
  187. package/dist/scripts/lib/diagnostics.js +12 -16
  188. package/dist/scripts/lib/diagnostics.js.map +1 -1
  189. package/dist/scripts/lib/placeholders.js +4 -4
  190. package/dist/scripts/lib/placeholders.js.map +1 -1
  191. package/dist/scripts/lib/surface.js +33 -15
  192. package/dist/scripts/lib/surface.js.map +1 -1
  193. package/dist/scripts/lib/ui.js +356 -0
  194. package/dist/scripts/lib/ui.js.map +1 -0
  195. package/dist/scripts/merge-traceability.js +3 -3
  196. package/dist/scripts/pet/pet.js +331 -0
  197. package/dist/scripts/pet/pet.js.map +1 -0
  198. package/dist/scripts/pet.js +10 -0
  199. package/dist/scripts/pet.js.map +1 -0
  200. package/dist/scripts/plugin/gate-hook.js +1 -1
  201. package/dist/scripts/plugin/gate-hook.js.map +1 -1
  202. package/dist/scripts/schema/registry.js +2 -2
  203. package/dist/scripts/schema/registry.js.map +1 -1
  204. package/dist/scripts/specops/add.js +23 -32
  205. package/dist/scripts/specops/add.js.map +1 -1
  206. package/dist/scripts/specops/lock.js +4 -4
  207. package/dist/scripts/specops/lock.js.map +1 -1
  208. package/dist/scripts/specops/remove.js +15 -24
  209. package/dist/scripts/specops/remove.js.map +1 -1
  210. package/package.json +3 -2
  211. package/templates/base/AGENTS.md.tpl +6 -0
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ /**
3
+ * The getting-started journeys, declared as data.
4
+ *
5
+ * Two journeys, one per answer to the first question a newcomer has — "am I
6
+ * starting from nothing, or bringing code I already have?" — each in five
7
+ * phases, one page per phase under `docs/start/`. Every command a page shows
8
+ * with its output is a step here: `record-journey.ts` runs it for real against
9
+ * this CLI and writes the output into the page, between sentinels, and
10
+ * `docs-journey.test.ts` checks the pages and this list still agree.
11
+ *
12
+ * The same court-bookings brief the landing page records is the from-scratch
13
+ * project, so a reader who watched the demo meets the same product again.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.JOURNEYS = exports.EXISTING = exports.SCRATCH = void 0;
17
+ exports.blockName = blockName;
18
+ exports.displayCommand = displayCommand;
19
+ const S = "court-bookings";
20
+ const sg = (...args) => ["specgate", ...args];
21
+ exports.SCRATCH = {
22
+ id: "scratch",
23
+ project: S,
24
+ steps: [
25
+ // Before phase 1 — writing the brief (start/write-the-brief), on a second
26
+ // project, "Lingo", so the court-bookings journey starts clean.
27
+ {
28
+ id: "brief-none",
29
+ page: "start/write-the-brief",
30
+ cwd: "lingo",
31
+ argv: sg("draft"),
32
+ surface: "draft",
33
+ maxLines: 24,
34
+ expectExit: 1,
35
+ },
36
+ {
37
+ id: "brief-new",
38
+ page: "start/write-the-brief",
39
+ cwd: "lingo-new",
40
+ argv: sg("draft", "--new-brief"),
41
+ surface: "draft",
42
+ maxLines: 16,
43
+ },
44
+ {
45
+ id: "brief-plain",
46
+ page: "start/write-the-brief",
47
+ cwd: "lingo",
48
+ argv: sg("draft"),
49
+ surface: "draft",
50
+ maxLines: 60,
51
+ },
52
+ {
53
+ id: "brief-agent",
54
+ page: "start/write-the-brief",
55
+ cwd: "lingo",
56
+ argv: sg("draft", "--agent", "claude -p"),
57
+ surface: "draft",
58
+ maxLines: 30,
59
+ },
60
+ {
61
+ id: "brief-error",
62
+ page: "start/write-the-brief",
63
+ cwd: "lingo",
64
+ argv: sg("draft"),
65
+ surface: "draft",
66
+ maxLines: 20,
67
+ expectExit: 1,
68
+ },
69
+ {
70
+ id: "brief-ready",
71
+ page: "start/write-the-brief",
72
+ cwd: "lingo",
73
+ argv: sg("draft"),
74
+ surface: "draft",
75
+ maxLines: 16,
76
+ },
77
+ // 1 — Install
78
+ {
79
+ id: "scratch-init",
80
+ page: "start/scratch-1-install",
81
+ cwd: S,
82
+ argv: sg("init"),
83
+ surface: "init",
84
+ maxLines: 28,
85
+ },
86
+ {
87
+ id: "scratch-test-cmd",
88
+ page: "start/scratch-1-install",
89
+ cwd: S,
90
+ argv: sg("config", "set", "test_cmd", "node --test"),
91
+ surface: "config set",
92
+ maxLines: 6,
93
+ },
94
+ {
95
+ id: "scratch-check",
96
+ page: "start/scratch-1-install",
97
+ cwd: S,
98
+ argv: sg("check"),
99
+ surface: "check",
100
+ maxLines: 26,
101
+ },
102
+ // 2 — Specify
103
+ {
104
+ id: "scratch-draft-list",
105
+ page: "start/scratch-2-specify",
106
+ cwd: S,
107
+ argv: sg("draft"),
108
+ surface: "draft",
109
+ maxLines: 12,
110
+ },
111
+ {
112
+ id: "scratch-draft-open",
113
+ page: "start/scratch-2-specify",
114
+ cwd: S,
115
+ argv: sg("draft", "bookings"),
116
+ surface: "draft",
117
+ maxLines: 16,
118
+ },
119
+ {
120
+ id: "scratch-draft-check",
121
+ page: "start/scratch-2-specify",
122
+ cwd: S,
123
+ argv: sg("draft", "bookings"),
124
+ surface: "draft",
125
+ maxLines: 26,
126
+ expectExit: 1,
127
+ },
128
+ {
129
+ id: "scratch-draft-check-again",
130
+ page: "start/scratch-2-specify",
131
+ cwd: S,
132
+ argv: sg("draft", "bookings"),
133
+ surface: "draft",
134
+ maxLines: 12,
135
+ },
136
+ {
137
+ id: "scratch-archive",
138
+ page: "start/scratch-2-specify",
139
+ cwd: S,
140
+ argv: sg("change", "archive", "draft-bookings"),
141
+ surface: "change archive",
142
+ maxLines: 16,
143
+ },
144
+ {
145
+ id: "scratch-status",
146
+ page: "start/scratch-2-specify",
147
+ cwd: S,
148
+ argv: sg("status"),
149
+ surface: "status",
150
+ maxLines: 20,
151
+ },
152
+ // 3 — Build
153
+ {
154
+ id: "scratch-node-test",
155
+ page: "start/scratch-3-build",
156
+ cwd: S,
157
+ argv: ["node", "--test"],
158
+ surface: null,
159
+ maxLines: 14,
160
+ },
161
+ {
162
+ id: "scratch-harness-prompt",
163
+ page: "start/scratch-3-build",
164
+ cwd: S,
165
+ argv: sg("harness", "prompt", "REQ-003"),
166
+ surface: "harness prompt",
167
+ maxLines: 20,
168
+ },
169
+ // 4 — Prove
170
+ {
171
+ id: "scratch-done",
172
+ page: "start/scratch-4-prove",
173
+ cwd: S,
174
+ argv: sg("done", "REQ-002"),
175
+ surface: "done",
176
+ maxLines: 14,
177
+ },
178
+ {
179
+ id: "scratch-done-blocked",
180
+ page: "start/scratch-4-prove",
181
+ cwd: S,
182
+ argv: sg("done", "REQ-004"),
183
+ surface: "done",
184
+ maxLines: 14,
185
+ expectExit: 1,
186
+ },
187
+ {
188
+ id: "scratch-check-green",
189
+ page: "start/scratch-4-prove",
190
+ cwd: S,
191
+ argv: sg("check"),
192
+ surface: "check",
193
+ maxLines: 22,
194
+ },
195
+ {
196
+ id: "scratch-report",
197
+ page: "start/scratch-4-prove",
198
+ cwd: S,
199
+ argv: sg("report", "--out", "report.html"),
200
+ surface: "report",
201
+ maxLines: 6,
202
+ },
203
+ // 5 — Every day
204
+ {
205
+ id: "scratch-ci",
206
+ page: "start/scratch-5-every-day",
207
+ cwd: S,
208
+ argv: sg("ci", "init", "--provider", "github"),
209
+ surface: "ci init",
210
+ maxLines: 12,
211
+ },
212
+ {
213
+ id: "scratch-new",
214
+ page: "start/scratch-5-every-day",
215
+ cwd: S,
216
+ argv: sg("new", "A member sees which courts are free on a day"),
217
+ surface: "new",
218
+ maxLines: 14,
219
+ },
220
+ {
221
+ id: "scratch-status-daily",
222
+ page: "start/scratch-5-every-day",
223
+ cwd: S,
224
+ argv: sg("status"),
225
+ surface: "status",
226
+ maxLines: 20,
227
+ },
228
+ ],
229
+ };
230
+ const E = "invoicing";
231
+ exports.EXISTING = {
232
+ id: "existing",
233
+ project: E,
234
+ steps: [
235
+ // 1 — Adopt
236
+ {
237
+ id: "existing-onboard",
238
+ page: "start/existing-1-adopt",
239
+ cwd: E,
240
+ argv: sg("onboard"),
241
+ surface: "onboard",
242
+ maxLines: 30,
243
+ },
244
+ {
245
+ id: "existing-init",
246
+ page: "start/existing-1-adopt",
247
+ cwd: E,
248
+ argv: sg("init"),
249
+ surface: "init",
250
+ maxLines: 28,
251
+ },
252
+ {
253
+ id: "existing-test-cmd",
254
+ page: "start/existing-1-adopt",
255
+ cwd: E,
256
+ argv: sg("config", "set", "test_cmd", "node --test"),
257
+ surface: "config set",
258
+ maxLines: 6,
259
+ },
260
+ {
261
+ id: "existing-check",
262
+ page: "start/existing-1-adopt",
263
+ cwd: E,
264
+ argv: sg("check"),
265
+ surface: "check",
266
+ maxLines: 30,
267
+ },
268
+ // 2 — Specify what you rely on
269
+ {
270
+ id: "existing-status",
271
+ page: "start/existing-2-specify",
272
+ cwd: E,
273
+ argv: sg("status"),
274
+ surface: "status",
275
+ maxLines: 20,
276
+ },
277
+ {
278
+ id: "existing-new",
279
+ page: "start/existing-2-specify",
280
+ cwd: E,
281
+ argv: sg("new", "An invoice total is rounded to the cent"),
282
+ surface: "new",
283
+ maxLines: 14,
284
+ },
285
+ {
286
+ id: "existing-feature",
287
+ page: "start/existing-2-specify",
288
+ cwd: E,
289
+ shell: "cat features/an-invoice-total-is-rounded-to.feature",
290
+ surface: null,
291
+ maxLines: 14,
292
+ },
293
+ // 3 — Close the first
294
+ {
295
+ id: "existing-done-refused",
296
+ page: "start/existing-3-first-requirement",
297
+ cwd: E,
298
+ argv: sg("done", "REQ-004"),
299
+ surface: "done",
300
+ maxLines: 14,
301
+ expectExit: 1,
302
+ },
303
+ {
304
+ id: "existing-test",
305
+ page: "start/existing-3-first-requirement",
306
+ cwd: E,
307
+ shell: "cat test/total.test.js",
308
+ surface: null,
309
+ maxLines: 20,
310
+ },
311
+ {
312
+ id: "existing-done",
313
+ page: "start/existing-3-first-requirement",
314
+ cwd: E,
315
+ argv: sg("done", "REQ-004"),
316
+ surface: "done",
317
+ maxLines: 14,
318
+ },
319
+ // 4 — The gate in CI
320
+ {
321
+ id: "existing-ci",
322
+ page: "start/existing-4-ci",
323
+ cwd: E,
324
+ argv: sg("ci", "init", "--provider", "github"),
325
+ surface: "ci init",
326
+ maxLines: 12,
327
+ },
328
+ {
329
+ id: "existing-check-green",
330
+ page: "start/existing-4-ci",
331
+ cwd: E,
332
+ argv: sg("check"),
333
+ surface: "check",
334
+ maxLines: 22,
335
+ },
336
+ // 5 — Every day
337
+ {
338
+ id: "existing-status-daily",
339
+ page: "start/existing-5-every-day",
340
+ cwd: E,
341
+ argv: sg("status"),
342
+ surface: "status",
343
+ maxLines: 20,
344
+ },
345
+ ],
346
+ };
347
+ exports.JOURNEYS = [exports.SCRATCH, exports.EXISTING];
348
+ /** The block a step's output lives in. */
349
+ function blockName(step) {
350
+ return `out-${step.id}`;
351
+ }
352
+ /** The command as the page shows it. */
353
+ function displayCommand(step) {
354
+ if (step.shell)
355
+ return step.shell;
356
+ return (step.argv || []).map((a) => (/[ '"$]/.test(a) ? `"${a}"` : a)).join(" ");
357
+ }
358
+ //# sourceMappingURL=journey-storyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-storyboard.js","sourceRoot":"","sources":["../../../scripts/docs/journey-storyboard.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ exports.navSlugs = navSlugs;
19
19
  exports.navEntry = navEntry;
20
20
  exports.neighbours = neighbours;
21
21
  /**
22
- * Simplification plan, phase 6: six places a reader goes, in the order they
22
+ * Simplification plan, phase 6: the places a reader goes, in the order they
23
23
  * need them — start, every day, the gate, existing code, reference,
24
24
  * extensions — and everything else under "Advanced". Every shipped document
25
25
  * is still in exactly one section.
@@ -28,12 +28,67 @@ exports.NAV = [
28
28
  {
29
29
  title: "Start",
30
30
  icon: "rocket",
31
- summary: "Ten minutes from nothing to your first requirement through the gate.",
31
+ summary: "Two journeys of five phases — from scratch, or on code you already have — every output recorded from the CLI.",
32
32
  entries: [
33
33
  {
34
34
  slug: "getting-started",
35
- label: "Quickstart — 10 minutes",
36
- blurb: "Install, scaffold a project, and run the gate for the first time.",
35
+ label: "Start here — pick your path",
36
+ blurb: "Starting from scratch, or bringing code you already have? Both journeys at a glance.",
37
+ },
38
+ {
39
+ slug: "start/write-the-brief",
40
+ label: "Write the brief",
41
+ blurb: "Your plan as docs/brief.md, the four fields on top — or let your agent propose them.",
42
+ },
43
+ {
44
+ slug: "start/scratch-1-install",
45
+ label: "From scratch · 1 Install",
46
+ blurb: "Create the project with your own tools, set Specgate up, run the gate once.",
47
+ },
48
+ {
49
+ slug: "start/scratch-2-specify",
50
+ label: "From scratch · 2 Specify",
51
+ blurb: "The brief becomes a draft per module, checked by `draft --check`, then archived.",
52
+ },
53
+ {
54
+ slug: "start/scratch-3-build",
55
+ label: "From scratch · 3 Build",
56
+ blurb: "The first requirement, test first — by hand or handed to the harness.",
57
+ },
58
+ {
59
+ slug: "start/scratch-4-prove",
60
+ label: "From scratch · 4 Prove",
61
+ blurb: "`done` closes it only through the gate; `check` and `report` show where it stands.",
62
+ },
63
+ {
64
+ slug: "start/scratch-5-every-day",
65
+ label: "From scratch · 5 Every day",
66
+ blurb: "The gate in CI and the five-command loop.",
67
+ },
68
+ {
69
+ slug: "start/existing-1-adopt",
70
+ label: "Existing project · 1 Adopt",
71
+ blurb: "`onboard` and `init` on a working codebase, touching no code.",
72
+ },
73
+ {
74
+ slug: "start/existing-2-specify",
75
+ label: "Existing project · 2 Specify",
76
+ blurb: "One behaviour you rely on, written as a requirement with a real example.",
77
+ },
78
+ {
79
+ slug: "start/existing-3-first-requirement",
80
+ label: "Existing project · 3 First requirement",
81
+ blurb: "The test you already have names it; `done` closes it.",
82
+ },
83
+ {
84
+ slug: "start/existing-4-ci",
85
+ label: "Existing project · 4 CI",
86
+ blurb: "The gate on every pull request, without fixing the past first.",
87
+ },
88
+ {
89
+ slug: "start/existing-5-every-day",
90
+ label: "Existing project · 5 Every day",
91
+ blurb: "One behaviour per bug fix, one module at a time.",
37
92
  },
38
93
  {
39
94
  slug: "quickstart",
@@ -74,6 +129,48 @@ exports.NAV = [
74
129
  },
75
130
  ],
76
131
  },
132
+ {
133
+ title: "Proven on real products",
134
+ icon: "check",
135
+ summary: "Six products built from real client briefs — what worked, and what Specgate got wrong.",
136
+ entries: [
137
+ {
138
+ slug: "projects/index",
139
+ label: "All six, compared",
140
+ blurb: "Brief, stack, requirements and tests for each pilot, side by side.",
141
+ },
142
+ {
143
+ slug: "projects/rebar-crew",
144
+ label: "Rebar Crew — field app",
145
+ blurb: "Expo + Next.js: 47 of 47, after a first round that was done and unusable.",
146
+ },
147
+ {
148
+ slug: "projects/bookings",
149
+ label: "Bookings — appointments",
150
+ blurb: "Next.js from a detailed brief: 38 of 38 in five cycles.",
151
+ },
152
+ {
153
+ slug: "projects/credit-shop",
154
+ label: "Credit shop — e-commerce",
155
+ blurb: "A five-line brief became 24 requirements, nearly every value an assumption.",
156
+ },
157
+ {
158
+ slug: "projects/fincore",
159
+ label: "FinCore — core banking",
160
+ blurb: "Spring Boot: 59 of 60, one legal question left to the client.",
161
+ },
162
+ {
163
+ slug: "projects/eventtech",
164
+ label: "EventTech — event operations",
165
+ blurb: "Quarkus with event sourcing and real time: 38 of 38.",
166
+ },
167
+ {
168
+ slug: "projects/healthtech",
169
+ label: "HealthTech — clinical cases",
170
+ blurb: "Quarkus in a regulated domain: 23 of 24, no clinical rule invented.",
171
+ },
172
+ ],
173
+ },
77
174
  {
78
175
  title: "The gate in CI",
79
176
  icon: "server",
@@ -99,7 +196,12 @@ exports.NAV = [
99
196
  {
100
197
  slug: "case-studies/case-1",
101
198
  label: "Worked example: brownfield adoption",
102
- blurb: "An illustration — invented company, constructed numbers — of the workflow end to end.",
199
+ blurb: "One existing service adopted end to end — invented company, every command and output real.",
200
+ },
201
+ {
202
+ slug: "vs-openspec",
203
+ label: "Specgate or OpenSpec",
204
+ blurb: "Where they differ, where OpenSpec is ahead, and how to use both.",
103
205
  },
104
206
  {
105
207
  slug: "openspec",
@@ -160,10 +262,20 @@ exports.NAV = [
160
262
  label: "The harness",
161
263
  blurb: "Unattended delivery: plan → agent → gate → done, one worktree per requirement.",
162
264
  },
265
+ {
266
+ slug: "harness-report",
267
+ label: "What the harness has cost",
268
+ blurb: "First-attempt rate and cost per delivered requirement, from the run ledger.",
269
+ },
163
270
  {
164
271
  slug: "domain-packs",
165
272
  label: "Domain packs",
166
- blurb: "Install a curated domain model instead of writing one from scratch.",
273
+ blurb: "Install requirements a pilot already proved, or package your own.",
274
+ },
275
+ {
276
+ slug: "packs-end-to-end",
277
+ label: "Domain packs, end to end",
278
+ blurb: "Install a pack, upgrade it to a new version, and take it off again.",
167
279
  },
168
280
  {
169
281
  slug: "alm",
@@ -177,11 +289,6 @@ exports.NAV = [
177
289
  icon: "book",
178
290
  summary: "Longer reads, setups and the reasons behind the design.",
179
291
  entries: [
180
- {
181
- slug: "walkthrough",
182
- label: "Walkthrough",
183
- blurb: "The whole loop end to end, in one sitting.",
184
- },
185
292
  {
186
293
  slug: "tutorial",
187
294
  label: "Tutorial: Smart Parking",
@@ -192,21 +299,11 @@ exports.NAV = [
192
299
  label: "Choosing your agent",
193
300
  blurb: "Claude, Aider, Cursor or a three-line wrapper — and the two things that bite.",
194
301
  },
195
- {
196
- slug: "bootstrap-prompt",
197
- label: "Bootstrap prompt",
198
- blurb: "The prompt that turns an idea into a first specification.",
199
- },
200
302
  {
201
303
  slug: "how-to",
202
304
  label: "How-to guides",
203
305
  blurb: "Short answers to specific questions.",
204
306
  },
205
- {
206
- slug: "deployment",
207
- label: "Deployment",
208
- blurb: "How specgate's own docs site, npm package and container image are published.",
209
- },
210
307
  {
211
308
  slug: "supply-chain",
212
309
  label: "Supply chain",
@@ -214,8 +311,8 @@ exports.NAV = [
214
311
  },
215
312
  {
216
313
  slug: "release-process",
217
- label: "Release process",
218
- blurb: "How a version is cut, and what support it gets.",
314
+ label: "Releases & deployment",
315
+ blurb: "How a version is cut and published to npm, Docker and the docs site.",
219
316
  },
220
317
  {
221
318
  slug: "articles/specs-that-cannot-lie",
@@ -1 +1 @@
1
- {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../scripts/docs/nav.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav.js","sourceRoot":"","sources":["../../../scripts/docs/nav.ts"],"names":[],"mappings":"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"}