@rsaglobaltech/specgate 0.21.0 → 0.22.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.
- package/CHANGELOG.md +116 -0
- package/README.md +81 -96
- package/dist/packages/core/src/domain/BriefCards.js +320 -0
- package/dist/packages/core/src/domain/BriefCards.js.map +1 -0
- package/dist/packages/core/src/domain/DraftChecklist.js +5 -1
- package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -1
- package/dist/packages/core/src/domain/QuotedText.js +5 -0
- package/dist/packages/core/src/domain/QuotedText.js.map +1 -1
- package/dist/packages/core/src/domain/TicketText.js +337 -0
- package/dist/packages/core/src/domain/TicketText.js.map +1 -0
- package/dist/packages/core/src/infrastructure/ChangeWorkspace.js +7 -3
- package/dist/packages/core/src/infrastructure/ChangeWorkspace.js.map +1 -1
- package/dist/packages/core/src/infrastructure/IdsAcrossBranches.js +48 -0
- package/dist/packages/core/src/infrastructure/IdsAcrossBranches.js.map +1 -0
- package/dist/packages/mcp-spec-driven/src/native-tools.js +1 -1
- package/dist/packages/mcp-spec-driven/src/native-tools.js.map +1 -1
- package/dist/scripts/agents/commands.js +8 -6
- package/dist/scripts/agents/commands.js.map +1 -1
- package/dist/scripts/agents/contract-file.js +44 -0
- package/dist/scripts/agents/contract-file.js.map +1 -1
- package/dist/scripts/alm/cli.js +16 -4
- package/dist/scripts/alm/cli.js.map +1 -1
- package/dist/scripts/alm/port.js +1 -1
- package/dist/scripts/alm/port.js.map +1 -1
- package/dist/scripts/alm/providers/http-client.js +46 -3
- package/dist/scripts/alm/providers/http-client.js.map +1 -1
- package/dist/scripts/alm/providers/jira.js +108 -32
- package/dist/scripts/alm/providers/jira.js.map +1 -1
- package/dist/scripts/cli/commands/alm/PrCommand.js +198 -0
- package/dist/scripts/cli/commands/alm/PrCommand.js.map +1 -0
- package/dist/scripts/cli/commands/change/ChangeCommand.js +32 -6
- package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
- package/dist/scripts/cli/commands/change/TicketCommand.js +657 -0
- package/dist/scripts/cli/commands/change/TicketCommand.js.map +1 -0
- package/dist/scripts/cli/commands/harness/RunCommand.js +4 -2
- package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/AdoptCommand.js +58 -0
- package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/UpdateCommand.js +4 -0
- package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/CheckCommand.js +12 -0
- package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DraftCommand.js +240 -27
- package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/ExploreCommand.js +13 -13
- package/dist/scripts/cli/commands/spec/ExploreCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StatusCommand.js +18 -6
- package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
- package/dist/scripts/docs/journey-storyboard.js +67 -44
- package/dist/scripts/docs/journey-storyboard.js.map +1 -1
- package/dist/scripts/docs/nav.js +156 -139
- package/dist/scripts/docs/nav.js.map +1 -1
- package/dist/scripts/docs/record-journey.js +139 -49
- package/dist/scripts/docs/record-journey.js.map +1 -1
- package/dist/scripts/docs/terminal-storyboard.js +15 -11
- package/dist/scripts/docs/terminal-storyboard.js.map +1 -1
- package/dist/scripts/draft/brief-check.js +34 -0
- package/dist/scripts/draft/brief-check.js.map +1 -0
- package/dist/scripts/draft/brief-setup.js +182 -17
- package/dist/scripts/draft/brief-setup.js.map +1 -1
- package/dist/scripts/draft/drafting-guide.js +43 -1
- package/dist/scripts/draft/drafting-guide.js.map +1 -1
- package/dist/scripts/draft/ticket-guide.js +129 -0
- package/dist/scripts/draft/ticket-guide.js.map +1 -0
- package/dist/scripts/lib/surface.js +2 -0
- package/dist/scripts/lib/surface.js.map +1 -1
- package/dist/scripts/lib/ticket-keys.js +140 -0
- package/dist/scripts/lib/ticket-keys.js.map +1 -0
- package/dist/scripts/propose.js +8 -2
- package/dist/scripts/propose.js.map +1 -1
- package/dist/scripts/vcs/github-pr.js +88 -0
- package/dist/scripts/vcs/github-pr.js.map +1 -0
- package/package.json +1 -1
- package/templates/base/AGENTS.md.tpl +6 -5
|
@@ -24,56 +24,62 @@ exports.SCRATCH = {
|
|
|
24
24
|
steps: [
|
|
25
25
|
// Before phase 1 — writing the brief (start/write-the-brief), on a second
|
|
26
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
27
|
{
|
|
37
28
|
id: "brief-new",
|
|
38
29
|
page: "start/write-the-brief",
|
|
39
30
|
cwd: "lingo-new",
|
|
40
|
-
argv: sg("
|
|
41
|
-
surface: "
|
|
42
|
-
maxLines:
|
|
31
|
+
argv: sg("propose", "--from-brief", "--new-brief"),
|
|
32
|
+
surface: "propose",
|
|
33
|
+
maxLines: 18,
|
|
43
34
|
},
|
|
44
35
|
{
|
|
45
|
-
id: "brief-
|
|
36
|
+
id: "brief-agent",
|
|
46
37
|
page: "start/write-the-brief",
|
|
47
38
|
cwd: "lingo",
|
|
48
|
-
argv: sg("
|
|
49
|
-
surface: "
|
|
50
|
-
maxLines:
|
|
39
|
+
argv: sg("propose", "--from-brief", "--agent", "claude -p"),
|
|
40
|
+
surface: "propose",
|
|
41
|
+
maxLines: 30,
|
|
51
42
|
},
|
|
52
43
|
{
|
|
53
|
-
id: "brief-agent",
|
|
44
|
+
id: "brief-cards-agent",
|
|
54
45
|
page: "start/write-the-brief",
|
|
55
46
|
cwd: "lingo",
|
|
56
|
-
argv: sg("
|
|
57
|
-
surface: "
|
|
58
|
-
maxLines:
|
|
47
|
+
argv: sg("propose", "--from-brief", "--agent", "claude -p"),
|
|
48
|
+
surface: "propose",
|
|
49
|
+
maxLines: 20,
|
|
59
50
|
},
|
|
60
51
|
{
|
|
61
|
-
id: "brief-
|
|
52
|
+
id: "brief-check",
|
|
62
53
|
page: "start/write-the-brief",
|
|
63
54
|
cwd: "lingo",
|
|
64
|
-
argv: sg("
|
|
65
|
-
surface: "
|
|
66
|
-
maxLines:
|
|
67
|
-
expectExit: 1,
|
|
55
|
+
argv: sg("propose", "--from-brief", "--check"),
|
|
56
|
+
surface: "propose",
|
|
57
|
+
maxLines: 24,
|
|
68
58
|
},
|
|
69
59
|
{
|
|
70
60
|
id: "brief-ready",
|
|
71
61
|
page: "start/write-the-brief",
|
|
72
62
|
cwd: "lingo",
|
|
73
|
-
argv: sg("
|
|
74
|
-
surface: "
|
|
63
|
+
argv: sg("propose", "--from-brief"),
|
|
64
|
+
surface: "propose",
|
|
75
65
|
maxLines: 16,
|
|
76
66
|
},
|
|
67
|
+
{
|
|
68
|
+
id: "brief-draft",
|
|
69
|
+
page: "start/write-the-brief",
|
|
70
|
+
cwd: "lingo",
|
|
71
|
+
argv: sg("propose", "--from-brief", "courses"),
|
|
72
|
+
surface: "propose",
|
|
73
|
+
maxLines: 12,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "brief-scope",
|
|
77
|
+
page: "start/write-the-brief",
|
|
78
|
+
cwd: "lingo",
|
|
79
|
+
shell: "sed -n '/^## 0/,/^## 1/p' docs/specs/changes/draft-courses/DRAFTING.md | sed '$d'",
|
|
80
|
+
surface: null,
|
|
81
|
+
maxLines: 40,
|
|
82
|
+
},
|
|
77
83
|
// 1 — Install
|
|
78
84
|
{
|
|
79
85
|
id: "scratch-init",
|
|
@@ -104,24 +110,24 @@ exports.SCRATCH = {
|
|
|
104
110
|
id: "scratch-draft-list",
|
|
105
111
|
page: "start/scratch-2-specify",
|
|
106
112
|
cwd: S,
|
|
107
|
-
argv: sg("
|
|
108
|
-
surface: "
|
|
113
|
+
argv: sg("propose", "--from-brief"),
|
|
114
|
+
surface: "propose",
|
|
109
115
|
maxLines: 12,
|
|
110
116
|
},
|
|
111
117
|
{
|
|
112
118
|
id: "scratch-draft-open",
|
|
113
119
|
page: "start/scratch-2-specify",
|
|
114
120
|
cwd: S,
|
|
115
|
-
argv: sg("
|
|
116
|
-
surface: "
|
|
121
|
+
argv: sg("propose", "--from-brief", "bookings"),
|
|
122
|
+
surface: "propose",
|
|
117
123
|
maxLines: 16,
|
|
118
124
|
},
|
|
119
125
|
{
|
|
120
126
|
id: "scratch-draft-check",
|
|
121
127
|
page: "start/scratch-2-specify",
|
|
122
128
|
cwd: S,
|
|
123
|
-
argv: sg("
|
|
124
|
-
surface: "
|
|
129
|
+
argv: sg("propose", "--from-brief", "bookings"),
|
|
130
|
+
surface: "propose",
|
|
125
131
|
maxLines: 26,
|
|
126
132
|
expectExit: 1,
|
|
127
133
|
},
|
|
@@ -129,8 +135,8 @@ exports.SCRATCH = {
|
|
|
129
135
|
id: "scratch-draft-check-again",
|
|
130
136
|
page: "start/scratch-2-specify",
|
|
131
137
|
cwd: S,
|
|
132
|
-
argv: sg("
|
|
133
|
-
surface: "
|
|
138
|
+
argv: sg("propose", "--from-brief", "bookings"),
|
|
139
|
+
surface: "propose",
|
|
134
140
|
maxLines: 12,
|
|
135
141
|
},
|
|
136
142
|
{
|
|
@@ -213,11 +219,11 @@ exports.SCRATCH = {
|
|
|
213
219
|
maxLines: 12,
|
|
214
220
|
},
|
|
215
221
|
{
|
|
216
|
-
id: "scratch-
|
|
222
|
+
id: "scratch-propose",
|
|
217
223
|
page: "start/scratch-5-every-day",
|
|
218
224
|
cwd: S,
|
|
219
|
-
argv: sg("
|
|
220
|
-
surface: "
|
|
225
|
+
argv: sg("propose", "free-courts"),
|
|
226
|
+
surface: "propose",
|
|
221
227
|
maxLines: 14,
|
|
222
228
|
},
|
|
223
229
|
{
|
|
@@ -278,20 +284,28 @@ exports.EXISTING = {
|
|
|
278
284
|
maxLines: 20,
|
|
279
285
|
},
|
|
280
286
|
{
|
|
281
|
-
id: "existing-
|
|
287
|
+
id: "existing-propose",
|
|
282
288
|
page: "start/existing-2-specify",
|
|
283
289
|
cwd: E,
|
|
284
|
-
argv: sg("
|
|
285
|
-
surface: "
|
|
290
|
+
argv: sg("propose", "invoice-rounding"),
|
|
291
|
+
surface: "propose",
|
|
286
292
|
maxLines: 14,
|
|
287
293
|
},
|
|
288
294
|
{
|
|
289
|
-
id: "existing-
|
|
295
|
+
id: "existing-delta",
|
|
290
296
|
page: "start/existing-2-specify",
|
|
291
297
|
cwd: E,
|
|
292
|
-
shell: "cat
|
|
298
|
+
shell: "cat docs/specs/changes/invoice-rounding/specs/invoice-rounding/spec.md",
|
|
293
299
|
surface: null,
|
|
294
|
-
maxLines:
|
|
300
|
+
maxLines: 16,
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
id: "existing-status-change",
|
|
304
|
+
page: "start/existing-2-specify",
|
|
305
|
+
cwd: E,
|
|
306
|
+
argv: sg("status"),
|
|
307
|
+
surface: "status",
|
|
308
|
+
maxLines: 20,
|
|
295
309
|
},
|
|
296
310
|
// 3 — Close the first
|
|
297
311
|
{
|
|
@@ -319,6 +333,15 @@ exports.EXISTING = {
|
|
|
319
333
|
surface: "apply",
|
|
320
334
|
maxLines: 14,
|
|
321
335
|
},
|
|
336
|
+
// A change is archived once every requirement it adds is applied (ADR-0035).
|
|
337
|
+
{
|
|
338
|
+
id: "existing-archive",
|
|
339
|
+
page: "start/existing-3-first-requirement",
|
|
340
|
+
cwd: E,
|
|
341
|
+
argv: sg("archive", "invoice-rounding"),
|
|
342
|
+
surface: "archive",
|
|
343
|
+
maxLines: 14,
|
|
344
|
+
},
|
|
322
345
|
// 4 — The gate in CI
|
|
323
346
|
{
|
|
324
347
|
id: "existing-ci",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journey-storyboard.js","sourceRoot":"","sources":["../../../scripts/docs/journey-storyboard.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;
|
|
1
|
+
{"version":3,"file":"journey-storyboard.js","sourceRoot":"","sources":["../../../scripts/docs/journey-storyboard.ts"],"names":[],"mappings":"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"}
|
package/dist/scripts/docs/nav.js
CHANGED
|
@@ -20,28 +20,28 @@ exports.navEntry = navEntry;
|
|
|
20
20
|
exports.neighbours = neighbours;
|
|
21
21
|
exports.journeyOf = journeyOf;
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* is still in exactly one section.
|
|
23
|
+
* The places a reader goes, in the order they need them: start, where the
|
|
24
|
+
* work comes from, every day, the gate, existing code, reference, extensions;
|
|
25
|
+
* then forja, a companion tool, and everything else under "Advanced". Every
|
|
26
|
+
* shipped document is still in exactly one section.
|
|
27
27
|
*/
|
|
28
28
|
exports.NAV = [
|
|
29
29
|
{
|
|
30
30
|
title: "Start",
|
|
31
31
|
icon: "rocket",
|
|
32
|
-
summary: "
|
|
32
|
+
summary: "Install it, learn the ideas behind it, and follow one of two journeys of five short steps — a new project, or code you already have.",
|
|
33
33
|
entries: [
|
|
34
34
|
{
|
|
35
35
|
slug: "getting-started",
|
|
36
36
|
group: "Begin",
|
|
37
|
-
label: "
|
|
38
|
-
blurb: "
|
|
37
|
+
label: "Getting started",
|
|
38
|
+
blurb: "Install it, choose where you start and where the work comes from, then the four verbs.",
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
|
-
slug: "
|
|
41
|
+
slug: "concepts",
|
|
42
42
|
group: "Begin",
|
|
43
|
-
label: "
|
|
44
|
-
blurb: "
|
|
43
|
+
label: "Concepts",
|
|
44
|
+
blurb: "The six ideas behind every command, and the vocabulary: change, delta, draft, gate, matrix.",
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
47
|
slug: "start/scratch-1-install",
|
|
@@ -51,19 +51,13 @@ exports.NAV = [
|
|
|
51
51
|
label: "Install and set up",
|
|
52
52
|
blurb: "Create the project with your own tools, set Specgate up, run the gate once.",
|
|
53
53
|
},
|
|
54
|
-
{
|
|
55
|
-
slug: "start/write-the-brief",
|
|
56
|
-
group: "From scratch",
|
|
57
|
-
label: "Write the brief",
|
|
58
|
-
blurb: "Your plan as docs/brief.md, the four fields on top — or let your agent propose them.",
|
|
59
|
-
},
|
|
60
54
|
{
|
|
61
55
|
slug: "start/scratch-2-specify",
|
|
62
56
|
group: "From scratch",
|
|
63
57
|
step: 2,
|
|
64
58
|
time: "20–60 min a module",
|
|
65
59
|
label: "Specify",
|
|
66
|
-
blurb: "The brief becomes a draft per module, checked
|
|
60
|
+
blurb: "The brief becomes a draft change per module, checked against the brief, then reviewed by a person.",
|
|
67
61
|
},
|
|
68
62
|
{
|
|
69
63
|
slug: "start/scratch-3-build",
|
|
@@ -79,7 +73,7 @@ exports.NAV = [
|
|
|
79
73
|
step: 4,
|
|
80
74
|
time: "2 min",
|
|
81
75
|
label: "Prove",
|
|
82
|
-
blurb: "`
|
|
76
|
+
blurb: "`apply` marks a requirement Implemented only through the gate; `check` and `report` show where it stands.",
|
|
83
77
|
},
|
|
84
78
|
{
|
|
85
79
|
slug: "start/scratch-5-every-day",
|
|
@@ -87,7 +81,7 @@ exports.NAV = [
|
|
|
87
81
|
step: 5,
|
|
88
82
|
time: "10 min, once",
|
|
89
83
|
label: "Every day",
|
|
90
|
-
blurb: "The gate in CI, the
|
|
84
|
+
blurb: "The gate in CI, and the four verbs every day.",
|
|
91
85
|
},
|
|
92
86
|
{
|
|
93
87
|
slug: "start/existing-1-adopt",
|
|
@@ -111,7 +105,7 @@ exports.NAV = [
|
|
|
111
105
|
step: 3,
|
|
112
106
|
time: "5 min",
|
|
113
107
|
label: "First requirement",
|
|
114
|
-
blurb: "The test you already have names it; `
|
|
108
|
+
blurb: "The test you already have names it; `apply` marks it Implemented.",
|
|
115
109
|
},
|
|
116
110
|
{
|
|
117
111
|
slug: "start/existing-4-ci",
|
|
@@ -128,73 +122,38 @@ exports.NAV = [
|
|
|
128
122
|
label: "Every day",
|
|
129
123
|
blurb: "One behaviour per bug fix, one module at a time.",
|
|
130
124
|
},
|
|
125
|
+
{
|
|
126
|
+
slug: "quickstart",
|
|
127
|
+
group: "Someone else set it up",
|
|
128
|
+
label: "Joining a project",
|
|
129
|
+
blurb: "The repository already uses Specgate: see where it stands and deliver your first requirement.",
|
|
130
|
+
},
|
|
131
131
|
],
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
summary: "Start from an empty folder with a whole application: the architecture in place, sign-in working, Specgate adopted.",
|
|
134
|
+
title: "Where work comes from",
|
|
135
|
+
icon: "compass",
|
|
136
|
+
summary: "Three entries into the same lifecycle: a change you describe, a client brief, or a Jira ticket.",
|
|
138
137
|
entries: [
|
|
139
138
|
{
|
|
140
|
-
slug: "
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
blurb: "Generate a Next.js + Expo monorepo in TypeScript, with the hexagon in place.",
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
slug: "forja/java",
|
|
147
|
-
group: "Generate",
|
|
148
|
-
label: "Java backends",
|
|
149
|
-
blurb: "A Spring Boot or Quarkus API, a Next.js web app and Keycloak sign-in.",
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
slug: "forja/daily-use",
|
|
153
|
-
group: "Grow it",
|
|
154
|
-
label: "Daily use",
|
|
155
|
-
blurb: "Add use cases, entities and ports where the architecture expects them; check the setup.",
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
slug: "forja/specgate",
|
|
159
|
-
group: "Grow it",
|
|
160
|
-
label: "With Specgate",
|
|
161
|
-
blurb: "How a generated project adopts Specgate, and how a use case names its requirement.",
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
slug: "forja/e2e",
|
|
165
|
-
group: "Grow it",
|
|
166
|
-
label: "End-to-end tests",
|
|
167
|
-
blurb: "Playwright drives the sign-in flow in a real browser.",
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
slug: "forja/cli",
|
|
171
|
-
group: "Reference",
|
|
172
|
-
label: "forja command line",
|
|
173
|
-
blurb: "init, add, doctor: every flag and the values it accepts.",
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
slug: "forja/config",
|
|
177
|
-
group: "Reference",
|
|
178
|
-
label: "forja.config.json",
|
|
179
|
-
blurb: "Every field, its values and its defaults.",
|
|
139
|
+
slug: "start/write-the-brief",
|
|
140
|
+
label: "Write the brief",
|
|
141
|
+
blurb: "Your plan as docs/brief.md, the four fields on top — or let your agent propose them.",
|
|
180
142
|
},
|
|
181
143
|
{
|
|
182
|
-
slug: "
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
blurb: "Recipe by recipe: the folders, the files, the versions.",
|
|
144
|
+
slug: "from-a-brief",
|
|
145
|
+
label: "From a client brief",
|
|
146
|
+
blurb: "A brief to a reviewed draft: assumptions, open questions and the draft checklist.",
|
|
186
147
|
},
|
|
187
148
|
{
|
|
188
|
-
slug: "
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
blurb: "The hexagon forja generates and the rules that keep it.",
|
|
149
|
+
slug: "from-a-ticket",
|
|
150
|
+
label: "From a Jira ticket",
|
|
151
|
+
blurb: "A story with acceptance criteria to a change checked against it, a branch and a pull request.",
|
|
192
152
|
},
|
|
193
153
|
{
|
|
194
|
-
slug: "
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
blurb: "Develop forja, write a recipe, verify what it generates.",
|
|
154
|
+
slug: "existing-project-with-jira",
|
|
155
|
+
label: "An existing codebase, with Jira",
|
|
156
|
+
blurb: "Adopt a years-old codebase whose work arrives as Jira tickets: the spec grows ticket by ticket.",
|
|
198
157
|
},
|
|
199
158
|
],
|
|
200
159
|
},
|
|
@@ -208,70 +167,23 @@ exports.NAV = [
|
|
|
208
167
|
label: "Your team's first PR",
|
|
209
168
|
blurb: "What the author writes, what the reviewer reads, and what to do when check fails.",
|
|
210
169
|
},
|
|
211
|
-
{
|
|
212
|
-
slug: "writing-specs",
|
|
213
|
-
label: "Writing specs",
|
|
214
|
-
blurb: "Requirements, scenarios and the traceability matrix.",
|
|
215
|
-
},
|
|
216
170
|
{
|
|
217
171
|
slug: "reviewing-changes",
|
|
218
|
-
label: "
|
|
172
|
+
label: "Change a shipped requirement",
|
|
219
173
|
blurb: "Propose, review and archive a change to specs that already shipped.",
|
|
220
174
|
},
|
|
221
175
|
{
|
|
222
|
-
slug: "
|
|
223
|
-
label: "
|
|
224
|
-
blurb: "
|
|
176
|
+
slug: "writing-specs",
|
|
177
|
+
label: "Writing specs",
|
|
178
|
+
blurb: "Requirements, scenarios and the traceability matrix.",
|
|
225
179
|
},
|
|
226
180
|
{
|
|
227
181
|
slug: "new-project",
|
|
228
|
-
label: "A new
|
|
182
|
+
label: "A new product, step by step",
|
|
229
183
|
blurb: "The twelve steps six pilots took, from a client's brief to a running product.",
|
|
230
184
|
},
|
|
231
185
|
],
|
|
232
186
|
},
|
|
233
|
-
{
|
|
234
|
-
title: "Proven on real products",
|
|
235
|
-
icon: "check",
|
|
236
|
-
summary: "Six products built from real client briefs — what worked, and what Specgate got wrong.",
|
|
237
|
-
entries: [
|
|
238
|
-
{
|
|
239
|
-
slug: "projects/index",
|
|
240
|
-
label: "All six, compared",
|
|
241
|
-
blurb: "Brief, stack, requirements and tests for each pilot, side by side.",
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
slug: "projects/rebar-crew",
|
|
245
|
-
label: "Rebar Crew — field app",
|
|
246
|
-
blurb: "Expo + Next.js: 47 of 47, after a first round that was done and unusable.",
|
|
247
|
-
},
|
|
248
|
-
{
|
|
249
|
-
slug: "projects/bookings",
|
|
250
|
-
label: "Bookings — appointments",
|
|
251
|
-
blurb: "Next.js from a detailed brief: 38 of 38 in five cycles.",
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
slug: "projects/credit-shop",
|
|
255
|
-
label: "Credit shop — e-commerce",
|
|
256
|
-
blurb: "A five-line brief became 24 requirements, nearly every value an assumption.",
|
|
257
|
-
},
|
|
258
|
-
{
|
|
259
|
-
slug: "projects/fincore",
|
|
260
|
-
label: "FinCore — core banking",
|
|
261
|
-
blurb: "Spring Boot: 59 of 60, one legal question left to the client.",
|
|
262
|
-
},
|
|
263
|
-
{
|
|
264
|
-
slug: "projects/eventtech",
|
|
265
|
-
label: "EventTech — event operations",
|
|
266
|
-
blurb: "Quarkus with event sourcing and real time: 38 of 38.",
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
slug: "projects/healthtech",
|
|
270
|
-
label: "HealthTech — clinical cases",
|
|
271
|
-
blurb: "Quarkus in a regulated domain: 23 of 24, no clinical rule invented.",
|
|
272
|
-
},
|
|
273
|
-
],
|
|
274
|
-
},
|
|
275
187
|
{
|
|
276
188
|
title: "The gate in CI",
|
|
277
189
|
icon: "server",
|
|
@@ -316,10 +228,52 @@ exports.NAV = [
|
|
|
316
228
|
},
|
|
317
229
|
],
|
|
318
230
|
},
|
|
231
|
+
{
|
|
232
|
+
title: "Proven on real products",
|
|
233
|
+
icon: "check",
|
|
234
|
+
summary: "Six products built from real client briefs — what worked, and what Specgate got wrong.",
|
|
235
|
+
entries: [
|
|
236
|
+
{
|
|
237
|
+
slug: "projects/index",
|
|
238
|
+
label: "All six, compared",
|
|
239
|
+
blurb: "Brief, stack, requirements and tests for each pilot, side by side.",
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
slug: "projects/rebar-crew",
|
|
243
|
+
label: "Rebar Crew — field app",
|
|
244
|
+
blurb: "Expo + Next.js: 47 of 47, after a first round that was done and unusable.",
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
slug: "projects/bookings",
|
|
248
|
+
label: "Bookings — appointments",
|
|
249
|
+
blurb: "Next.js from a detailed brief: 38 of 38 in five cycles.",
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
slug: "projects/credit-shop",
|
|
253
|
+
label: "Credit shop — e-commerce",
|
|
254
|
+
blurb: "A five-line brief became 24 requirements, nearly every value an assumption.",
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
slug: "projects/fincore",
|
|
258
|
+
label: "FinCore — core banking",
|
|
259
|
+
blurb: "Spring Boot: 59 of 60, one legal question left to the client.",
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
slug: "projects/eventtech",
|
|
263
|
+
label: "EventTech — event operations",
|
|
264
|
+
blurb: "Quarkus with event sourcing and real time: 38 of 38.",
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
slug: "projects/healthtech",
|
|
268
|
+
label: "HealthTech — clinical cases",
|
|
269
|
+
blurb: "Quarkus in a regulated domain: 23 of 24, no clinical rule invented.",
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
},
|
|
319
273
|
{
|
|
320
274
|
title: "Reference",
|
|
321
275
|
icon: "book",
|
|
322
|
-
summary: "Every command, the
|
|
276
|
+
summary: "Every command, a router to the right guide, and what to do when something fails.",
|
|
323
277
|
entries: [
|
|
324
278
|
{
|
|
325
279
|
slug: "commands",
|
|
@@ -327,9 +281,9 @@ exports.NAV = [
|
|
|
327
281
|
blurb: "Every command, its flags and its JSON shape.",
|
|
328
282
|
},
|
|
329
283
|
{
|
|
330
|
-
slug: "
|
|
331
|
-
label: "How
|
|
332
|
-
blurb: "
|
|
284
|
+
slug: "how-to",
|
|
285
|
+
label: "How-to guides",
|
|
286
|
+
blurb: "I want to… — the guide for each task.",
|
|
333
287
|
},
|
|
334
288
|
{
|
|
335
289
|
slug: "faq",
|
|
@@ -361,7 +315,7 @@ exports.NAV = [
|
|
|
361
315
|
{
|
|
362
316
|
slug: "harness",
|
|
363
317
|
label: "The harness",
|
|
364
|
-
blurb: "Unattended delivery: plan → agent → gate →
|
|
318
|
+
blurb: "Unattended delivery: plan → agent → gate → apply, one worktree per requirement.",
|
|
365
319
|
},
|
|
366
320
|
{
|
|
367
321
|
slug: "harness-report",
|
|
@@ -385,6 +339,74 @@ exports.NAV = [
|
|
|
385
339
|
},
|
|
386
340
|
],
|
|
387
341
|
},
|
|
342
|
+
{
|
|
343
|
+
// ADR-0033: forja's documentation lives here, one site for both tools.
|
|
344
|
+
title: "New project (forja)",
|
|
345
|
+
icon: "package",
|
|
346
|
+
summary: "forja, a companion tool, generates a whole application with the architecture in place, sign-in working and Specgate adopted.",
|
|
347
|
+
entries: [
|
|
348
|
+
{
|
|
349
|
+
slug: "forja/getting-started",
|
|
350
|
+
group: "Generate",
|
|
351
|
+
label: "Getting started",
|
|
352
|
+
blurb: "Generate a Next.js + Expo monorepo in TypeScript, with the hexagon in place.",
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
slug: "forja/java",
|
|
356
|
+
group: "Generate",
|
|
357
|
+
label: "Java backends",
|
|
358
|
+
blurb: "A Spring Boot or Quarkus API, a Next.js web app and Keycloak sign-in.",
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
slug: "forja/daily-use",
|
|
362
|
+
group: "Grow it",
|
|
363
|
+
label: "Daily use",
|
|
364
|
+
blurb: "Add use cases, entities and ports where the architecture expects them; check the setup.",
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
slug: "forja/specgate",
|
|
368
|
+
group: "Grow it",
|
|
369
|
+
label: "With Specgate",
|
|
370
|
+
blurb: "How a generated project adopts Specgate, and how a use case names its requirement.",
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
slug: "forja/e2e",
|
|
374
|
+
group: "Grow it",
|
|
375
|
+
label: "End-to-end tests",
|
|
376
|
+
blurb: "Playwright drives the sign-in flow in a real browser.",
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
slug: "forja/cli",
|
|
380
|
+
group: "Reference",
|
|
381
|
+
label: "forja command line",
|
|
382
|
+
blurb: "init, add, doctor: every flag and the values it accepts.",
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
slug: "forja/config",
|
|
386
|
+
group: "Reference",
|
|
387
|
+
label: "forja.config.json",
|
|
388
|
+
blurb: "Every field, its values and its defaults.",
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
slug: "forja/generated-project",
|
|
392
|
+
group: "Reference",
|
|
393
|
+
label: "What it generates",
|
|
394
|
+
blurb: "Recipe by recipe: the folders, the files, the versions.",
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
slug: "forja/architecture",
|
|
398
|
+
group: "Reference",
|
|
399
|
+
label: "The generated architecture",
|
|
400
|
+
blurb: "The hexagon forja generates and the rules that keep it.",
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
slug: "forja/contributing",
|
|
404
|
+
group: "Reference",
|
|
405
|
+
label: "Contributing to forja",
|
|
406
|
+
blurb: "Develop forja, write a recipe, verify what it generates.",
|
|
407
|
+
},
|
|
408
|
+
],
|
|
409
|
+
},
|
|
388
410
|
{
|
|
389
411
|
title: "Advanced",
|
|
390
412
|
icon: "book",
|
|
@@ -393,18 +415,13 @@ exports.NAV = [
|
|
|
393
415
|
{
|
|
394
416
|
slug: "tutorial",
|
|
395
417
|
label: "Tutorial: Smart Parking",
|
|
396
|
-
blurb: "A complete worked example, from a blank folder to a delivered requirement.",
|
|
418
|
+
blurb: "A complete worked example on a domain pack, from a blank folder to a delivered requirement.",
|
|
397
419
|
},
|
|
398
420
|
{
|
|
399
421
|
slug: "agent-setup",
|
|
400
422
|
label: "Choosing your agent",
|
|
401
423
|
blurb: "Claude, Aider, Cursor or a three-line wrapper — and the two things that bite.",
|
|
402
424
|
},
|
|
403
|
-
{
|
|
404
|
-
slug: "how-to",
|
|
405
|
-
label: "How-to guides",
|
|
406
|
-
blurb: "Short answers to specific questions.",
|
|
407
|
-
},
|
|
408
425
|
{
|
|
409
426
|
slug: "supply-chain",
|
|
410
427
|
label: "Supply chain",
|