rcf-lite 0.16.0 → 0.17.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.
- package/CHANGELOG.md +14 -0
- package/blueprints/application-spa/assets/tc-templates/e2e.md +85 -0
- package/blueprints/application-spa/blueprint.json +24 -2
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1134.json +24 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1135.json +24 -0
- package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/pull-request-checks.yml +69 -0
- package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/notes.md +18 -0
- package/blueprints/delivery-ci-workflows/blueprint.json +301 -60
- package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6124.json +28 -0
- package/fixtures/canary-manifest.json +9 -9
- package/package.json +13 -1
- package/rcf/code-nodes/cn-070.json +12 -0
- package/rcf/code-nodes/cn-071.json +12 -0
- package/rcf/code-nodes/cn-072.json +12 -0
- package/rcf/code-nodes/cn-073.json +12 -0
- package/rcf/fbs/fbs-020.json +18 -0
- package/rcf/fbs/fbs-021.json +18 -0
- package/rcf/fbs/fbs-022.json +18 -0
- package/rcf/fbs/fbs-023.json +18 -0
- package/rcf/prd.json +3 -2
- package/rcf/requirements/req-011.json +22 -0
- package/rcf/test-suites/ts-030.json +66 -0
- package/rcf/test-suites/ts-031.json +59 -0
- package/rcf/test-suites/ts-032.json +50 -0
- package/rcf/test-suites/ts-033.json +83 -0
- package/rcf/user-stories/us-1101.json +51 -0
- package/rcf/user-stories/us-1102.json +60 -0
- package/rcf/user-stories/us-1103.json +51 -0
- package/rcf/user-stories/us-1104.json +60 -0
- package/releases/releases.yaml +11 -1
- package/src/blueprint/supersede.js +2 -2
- package/src/cli/doctor.js +182 -5
- package/src/cli/init.js +166 -0
- package/src/setup/playwright-checks.js +426 -0
- package/src/verify/cli/run.js +28 -0
- package/src/verify/engine/index.js +24 -4
- package/src/verify/engine/launcher.js +41 -10
|
@@ -1,60 +1,273 @@
|
|
|
1
1
|
{
|
|
2
2
|
"slug": "delivery-ci-workflows",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"category": "delivery",
|
|
5
5
|
"contributions": [
|
|
6
|
-
{
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
{
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
{
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
|
|
6
|
+
{
|
|
7
|
+
"id": "delivery-ci-workflows-REQ-001",
|
|
8
|
+
"kind": "req",
|
|
9
|
+
"path": "requirements/delivery-ci-workflows-req-001.json"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "delivery-ci-workflows-REQ-002",
|
|
13
|
+
"kind": "req",
|
|
14
|
+
"path": "requirements/delivery-ci-workflows-req-002.json"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "delivery-ci-workflows-REQ-003",
|
|
18
|
+
"kind": "req",
|
|
19
|
+
"path": "requirements/delivery-ci-workflows-req-003.json"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "delivery-ci-workflows-REQ-004",
|
|
23
|
+
"kind": "req",
|
|
24
|
+
"path": "requirements/delivery-ci-workflows-req-004.json"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "delivery-ci-workflows-REQ-005",
|
|
28
|
+
"kind": "req",
|
|
29
|
+
"path": "requirements/delivery-ci-workflows-req-005.json"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "delivery-ci-workflows-REQ-006",
|
|
33
|
+
"kind": "req",
|
|
34
|
+
"path": "requirements/delivery-ci-workflows-req-006.json"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "delivery-ci-workflows-REQ-007",
|
|
38
|
+
"kind": "req",
|
|
39
|
+
"path": "requirements/delivery-ci-workflows-req-007.json"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "delivery-ci-workflows-REQ-008",
|
|
43
|
+
"kind": "req",
|
|
44
|
+
"path": "requirements/delivery-ci-workflows-req-008.json"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"id": "delivery-ci-workflows-REQ-009",
|
|
48
|
+
"kind": "req",
|
|
49
|
+
"path": "requirements/delivery-ci-workflows-req-009.json"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"id": "delivery-ci-workflows-REQ-010",
|
|
53
|
+
"kind": "req",
|
|
54
|
+
"path": "requirements/delivery-ci-workflows-req-010.json"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "delivery-ci-workflows-REQ-011",
|
|
58
|
+
"kind": "req",
|
|
59
|
+
"path": "requirements/delivery-ci-workflows-req-011.json"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "delivery-ci-workflows-REQ-012",
|
|
63
|
+
"kind": "req",
|
|
64
|
+
"path": "requirements/delivery-ci-workflows-req-012.json"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "delivery-ci-workflows-REQ-013",
|
|
68
|
+
"kind": "req",
|
|
69
|
+
"path": "requirements/delivery-ci-workflows-req-013.json"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "delivery-ci-workflows-REQ-014",
|
|
73
|
+
"kind": "req",
|
|
74
|
+
"path": "requirements/delivery-ci-workflows-req-014.json"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "delivery-ci-workflows-REQ-015",
|
|
78
|
+
"kind": "req",
|
|
79
|
+
"path": "requirements/delivery-ci-workflows-req-015.json"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"id": "delivery-ci-workflows-REQ-016",
|
|
83
|
+
"kind": "req",
|
|
84
|
+
"path": "requirements/delivery-ci-workflows-req-016.json"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "delivery-ci-workflows-REQ-017",
|
|
88
|
+
"kind": "req",
|
|
89
|
+
"path": "requirements/delivery-ci-workflows-req-017.json"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"id": "delivery-ci-workflows-REQ-018",
|
|
93
|
+
"kind": "req",
|
|
94
|
+
"path": "requirements/delivery-ci-workflows-req-018.json"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"id": "delivery-ci-workflows-REQ-019",
|
|
98
|
+
"kind": "req",
|
|
99
|
+
"path": "requirements/delivery-ci-workflows-req-019.json"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "delivery-ci-workflows-REQ-020",
|
|
103
|
+
"kind": "req",
|
|
104
|
+
"path": "requirements/delivery-ci-workflows-req-020.json"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "delivery-ci-workflows-REQ-021",
|
|
108
|
+
"kind": "req",
|
|
109
|
+
"path": "requirements/delivery-ci-workflows-req-021.json"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "delivery-ci-workflows-REQ-022",
|
|
113
|
+
"kind": "req",
|
|
114
|
+
"path": "requirements/delivery-ci-workflows-req-022.json"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "delivery-ci-workflows-REQ-023",
|
|
118
|
+
"kind": "req",
|
|
119
|
+
"path": "requirements/delivery-ci-workflows-req-023.json"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"id": "delivery-ci-workflows-US-6101",
|
|
123
|
+
"kind": "us",
|
|
124
|
+
"path": "user-stories/delivery-ci-workflows-us-6101.json"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"id": "delivery-ci-workflows-US-6102",
|
|
128
|
+
"kind": "us",
|
|
129
|
+
"path": "user-stories/delivery-ci-workflows-us-6102.json"
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"id": "delivery-ci-workflows-US-6103",
|
|
133
|
+
"kind": "us",
|
|
134
|
+
"path": "user-stories/delivery-ci-workflows-us-6103.json"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"id": "delivery-ci-workflows-US-6104",
|
|
138
|
+
"kind": "us",
|
|
139
|
+
"path": "user-stories/delivery-ci-workflows-us-6104.json"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"id": "delivery-ci-workflows-US-6105",
|
|
143
|
+
"kind": "us",
|
|
144
|
+
"path": "user-stories/delivery-ci-workflows-us-6105.json"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "delivery-ci-workflows-US-6106",
|
|
148
|
+
"kind": "us",
|
|
149
|
+
"path": "user-stories/delivery-ci-workflows-us-6106.json"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "delivery-ci-workflows-US-6107",
|
|
153
|
+
"kind": "us",
|
|
154
|
+
"path": "user-stories/delivery-ci-workflows-us-6107.json"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"id": "delivery-ci-workflows-US-6108",
|
|
158
|
+
"kind": "us",
|
|
159
|
+
"path": "user-stories/delivery-ci-workflows-us-6108.json"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"id": "delivery-ci-workflows-US-6109",
|
|
163
|
+
"kind": "us",
|
|
164
|
+
"path": "user-stories/delivery-ci-workflows-us-6109.json"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"id": "delivery-ci-workflows-US-6110",
|
|
168
|
+
"kind": "us",
|
|
169
|
+
"path": "user-stories/delivery-ci-workflows-us-6110.json"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"id": "delivery-ci-workflows-US-6111",
|
|
173
|
+
"kind": "us",
|
|
174
|
+
"path": "user-stories/delivery-ci-workflows-us-6111.json"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "delivery-ci-workflows-US-6112",
|
|
178
|
+
"kind": "us",
|
|
179
|
+
"path": "user-stories/delivery-ci-workflows-us-6112.json"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"id": "delivery-ci-workflows-US-6113",
|
|
183
|
+
"kind": "us",
|
|
184
|
+
"path": "user-stories/delivery-ci-workflows-us-6113.json"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"id": "delivery-ci-workflows-US-6114",
|
|
188
|
+
"kind": "us",
|
|
189
|
+
"path": "user-stories/delivery-ci-workflows-us-6114.json"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"id": "delivery-ci-workflows-US-6115",
|
|
193
|
+
"kind": "us",
|
|
194
|
+
"path": "user-stories/delivery-ci-workflows-us-6115.json"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"id": "delivery-ci-workflows-US-6116",
|
|
198
|
+
"kind": "us",
|
|
199
|
+
"path": "user-stories/delivery-ci-workflows-us-6116.json"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"id": "delivery-ci-workflows-US-6117",
|
|
203
|
+
"kind": "us",
|
|
204
|
+
"path": "user-stories/delivery-ci-workflows-us-6117.json"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": "delivery-ci-workflows-US-6118",
|
|
208
|
+
"kind": "us",
|
|
209
|
+
"path": "user-stories/delivery-ci-workflows-us-6118.json"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"id": "delivery-ci-workflows-US-6119",
|
|
213
|
+
"kind": "us",
|
|
214
|
+
"path": "user-stories/delivery-ci-workflows-us-6119.json"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"id": "delivery-ci-workflows-US-6120",
|
|
218
|
+
"kind": "us",
|
|
219
|
+
"path": "user-stories/delivery-ci-workflows-us-6120.json"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"id": "delivery-ci-workflows-US-6121",
|
|
223
|
+
"kind": "us",
|
|
224
|
+
"path": "user-stories/delivery-ci-workflows-us-6121.json"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"id": "delivery-ci-workflows-US-6122",
|
|
228
|
+
"kind": "us",
|
|
229
|
+
"path": "user-stories/delivery-ci-workflows-us-6122.json"
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"id": "delivery-ci-workflows-US-6123",
|
|
233
|
+
"kind": "us",
|
|
234
|
+
"path": "user-stories/delivery-ci-workflows-us-6123.json"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "delivery-ci-workflows-US-6124",
|
|
238
|
+
"kind": "us",
|
|
239
|
+
"path": "user-stories/delivery-ci-workflows-us-6124.json"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"id": "TAC-701-delivery-ci-workflows-gate-runner",
|
|
243
|
+
"kind": "tac",
|
|
244
|
+
"path": "tacs/tac-701-delivery-ci-workflows-gate-runner.json"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"id": "TAC-702-delivery-ci-workflows-gate-report",
|
|
248
|
+
"kind": "tac",
|
|
249
|
+
"path": "tacs/tac-702-delivery-ci-workflows-gate-report.json"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"id": "TAC-703-delivery-ci-workflows-aggregate-report",
|
|
253
|
+
"kind": "tac",
|
|
254
|
+
"path": "tacs/tac-703-delivery-ci-workflows-aggregate-report.json"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"id": "TAC-704-delivery-ci-workflows-workflow-materialiser",
|
|
258
|
+
"kind": "tac",
|
|
259
|
+
"path": "tacs/tac-704-delivery-ci-workflows-workflow-materialiser.json"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"id": "TAC-705-delivery-ci-workflows-release-workflow",
|
|
263
|
+
"kind": "tac",
|
|
264
|
+
"path": "tacs/tac-705-delivery-ci-workflows-release-workflow.json"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": "TAC-706-delivery-ci-workflows-scheduled-audit",
|
|
268
|
+
"kind": "tac",
|
|
269
|
+
"path": "tacs/tac-706-delivery-ci-workflows-scheduled-audit.json"
|
|
270
|
+
},
|
|
58
271
|
{
|
|
59
272
|
"id": "ADR-701-delivery-ci-workflows-ci-gates",
|
|
60
273
|
"kind": "adr",
|
|
@@ -69,12 +282,36 @@
|
|
|
69
282
|
"scope": "global",
|
|
70
283
|
"topic": "strictCoverageGate"
|
|
71
284
|
},
|
|
72
|
-
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{
|
|
285
|
+
{
|
|
286
|
+
"id": "ADR-703-delivery-ci-workflows-node-only-runner",
|
|
287
|
+
"kind": "adr",
|
|
288
|
+
"path": "adrs/adr-703-delivery-ci-workflows-node-only-runner.json"
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"id": "ADR-704-delivery-ci-workflows-report-shape",
|
|
292
|
+
"kind": "adr",
|
|
293
|
+
"path": "adrs/adr-704-delivery-ci-workflows-report-shape.json"
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"id": "ADR-705-delivery-ci-workflows-elicitation-surface",
|
|
297
|
+
"kind": "adr",
|
|
298
|
+
"path": "adrs/adr-705-delivery-ci-workflows-elicitation-surface.json"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"id": "ADR-706-delivery-ci-workflows-branch-model-defaults",
|
|
302
|
+
"kind": "adr",
|
|
303
|
+
"path": "adrs/adr-706-delivery-ci-workflows-branch-model-defaults.json"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"id": "ADR-707-delivery-ci-workflows-release-workflow-shape",
|
|
307
|
+
"kind": "adr",
|
|
308
|
+
"path": "adrs/adr-707-delivery-ci-workflows-release-workflow-shape.json"
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"id": "ADR-708-delivery-ci-workflows-provider-hint-shape",
|
|
312
|
+
"kind": "adr",
|
|
313
|
+
"path": "adrs/adr-708-delivery-ci-workflows-provider-hint-shape.json"
|
|
314
|
+
},
|
|
78
315
|
{
|
|
79
316
|
"id": "ADR-709-delivery-ci-workflows-release-artefacts",
|
|
80
317
|
"kind": "adr",
|
|
@@ -82,6 +319,10 @@
|
|
|
82
319
|
"scope": "global",
|
|
83
320
|
"topic": "releaseArtefacts"
|
|
84
321
|
},
|
|
85
|
-
{
|
|
322
|
+
{
|
|
323
|
+
"id": "ADR-710-delivery-ci-workflows-scheduled-audit",
|
|
324
|
+
"kind": "adr",
|
|
325
|
+
"path": "adrs/adr-710-delivery-ci-workflows-scheduled-audit.json"
|
|
326
|
+
}
|
|
86
327
|
]
|
|
87
328
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "delivery-ci-workflows-US-6124",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "delivery-ci-workflows-REQ-019",
|
|
5
|
+
"version": "2.2.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "The e2e check is documented in the illustrative pull-request-checks workflow and the check catalogue",
|
|
8
|
+
"asA": "operator whose project applies at least one blueprint declaring a browserSurface",
|
|
9
|
+
"iWant": "the illustrative pull-request-checks workflow to ship a documented e2e job block naming the four points a browser-facing project's e2e job satisfies (distinct job running the project's testLevel: e2e cases against a local preview or a --parity-env runtime, browser-artefact upload, distinct row in the aggregate pipeline report, per-gate report at .rcf/reports/ci/e2e.json), and the elicited checkSet.e2e entry to exist in the check catalogue so a project that turns the check off does so through a supported knob",
|
|
10
|
+
"soThat": "browser-facing projects get a documentation contract they copy-paste today, ahead of the runtime materialiser landing (spec amendment A2, 2026-09-03: rcf-lite ships no workflow-materialiser at this train, so this AC is documentation-only; the runtime iff wiring lands in a follow-up train with its own paired TS entry)",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-6124-1",
|
|
14
|
+
"description": "The illustrative pull-request-checks.yml under blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/ carries a documented e2e job block whose header comment names the four points a browser-facing project's e2e job satisfies: (a) runs the project's testLevel: e2e cases against a local preview or a --parity-env runtime, (b) uploads screenshots and HTML captures as workflow artefacts, (c) writes a distinct row to the aggregate pipeline report at .rcf/reports/ci/pipeline.json, (d) writes a per-gate report at .rcf/reports/ci/e2e.json with checkKind: 'e2e'. The header also tells a non-browser project to delete the e2e job before committing. The elicited checkSet.e2e entry exists in the delivery-ci-workflows check catalogue (blueprint.json) so a project that turns the check off does so through a supported knob. The runtime iff wiring (materialiser adds or omits the job based on manifest.blueprints[].source.browserSurface.declared and .rcf/config/delivery-ci-workflows.json:checkSet.e2e) lands in a follow-up train with its own TS entry; this AC is documentation-only per spec amendment A2 (2026-09-03).",
|
|
15
|
+
"given": "the delivery-ci-workflows blueprint at v2.2.0",
|
|
16
|
+
"when": "blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/pull-request-checks.yml and blueprint.json are inspected",
|
|
17
|
+
"then": "the illustrative pull-request-checks.yml declares an e2e job; the block above it names the four points and the delete-me note for non-browser projects; blueprint.json's check catalogue carries checkSet.e2e",
|
|
18
|
+
"testable": true,
|
|
19
|
+
"scope": "library"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"tacIds": [
|
|
23
|
+
"TAC-701-delivery-ci-workflows-gate-runner",
|
|
24
|
+
"TAC-702-delivery-ci-workflows-gate-report"
|
|
25
|
+
],
|
|
26
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
27
|
+
"updatedAt": "2026-09-03T18:30:50Z"
|
|
28
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"registerCanary": [
|
|
3
3
|
{
|
|
4
|
-
"id": "rc-2026-09-
|
|
5
|
-
"createdAt": "2026-09-
|
|
6
|
-
"buildVersion": "0.
|
|
4
|
+
"id": "rc-2026-09-04-001",
|
|
5
|
+
"createdAt": "2026-09-04T09:05:34.919Z",
|
|
6
|
+
"buildVersion": "0.17.0-mockdriver",
|
|
7
7
|
"fixturePromptId": "canary-prompt-01",
|
|
8
8
|
"responseWordCount": 55,
|
|
9
9
|
"grades": {
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"shipDespiteFailReason": "mock canary driver used; no real subagent was dispatched. This record verifies canary infrastructure only, not the register itself."
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
|
-
"id": "rc-2026-09-
|
|
38
|
-
"createdAt": "2026-09-
|
|
39
|
-
"buildVersion": "0.
|
|
37
|
+
"id": "rc-2026-09-04-002",
|
|
38
|
+
"createdAt": "2026-09-04T09:05:34.920Z",
|
|
39
|
+
"buildVersion": "0.17.0-mockdriver",
|
|
40
40
|
"fixturePromptId": "canary-prompt-02",
|
|
41
41
|
"responseWordCount": 55,
|
|
42
42
|
"grades": {
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"shipDespiteFailReason": "mock canary driver used; no real subagent was dispatched. This record verifies canary infrastructure only, not the register itself."
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
"id": "rc-2026-09-
|
|
71
|
-
"createdAt": "2026-09-
|
|
72
|
-
"buildVersion": "0.
|
|
70
|
+
"id": "rc-2026-09-04-003",
|
|
71
|
+
"createdAt": "2026-09-04T09:05:34.920Z",
|
|
72
|
+
"buildVersion": "0.17.0-mockdriver",
|
|
73
73
|
"fixturePromptId": "canary-prompt-03",
|
|
74
74
|
"responseWordCount": 55,
|
|
75
75
|
"grades": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rcf-lite",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "One-install tooling for the Requirements Confidence Framework (RCF): the unified `rcf` CLI grouped into the five RCF tool groups (discover, define, build, verify, audit) plus a small core set (init, doctor, guidance, mcp), an MCP server, the live tree viewer and the fresh-context adversarial ship-gate verifier. Consumes @stravica-ai/rcf-schemas.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -69,6 +69,18 @@
|
|
|
69
69
|
"js-yaml": "^4.1.0",
|
|
70
70
|
"mermaid": "11.6.0"
|
|
71
71
|
},
|
|
72
|
+
"peerDependencies": {
|
|
73
|
+
"@playwright/mcp": ">=0.0.40",
|
|
74
|
+
"playwright": ">=1.50.0"
|
|
75
|
+
},
|
|
76
|
+
"peerDependenciesMeta": {
|
|
77
|
+
"@playwright/mcp": {
|
|
78
|
+
"optional": true
|
|
79
|
+
},
|
|
80
|
+
"playwright": {
|
|
81
|
+
"optional": true
|
|
82
|
+
}
|
|
83
|
+
},
|
|
72
84
|
"scripts": {
|
|
73
85
|
"test": "node --test --test-concurrency=1 'test/**/*.test.js'",
|
|
74
86
|
"vendor": "node scripts/vendor-mermaid.mjs",
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-070",
|
|
3
|
+
"path": "src/verify/engine/launcher.js#PLAYWRIGHT_MCP_VERSION",
|
|
4
|
+
"title": "Pinned Playwright MCP version + composer",
|
|
5
|
+
"description": "Exports the PLAYWRIGHT_MCP_VERSION constant, the playwrightMcpConfig(version) composer, and the isSemverString(value) guard the CLI's override uses. DEFAULT_MCP_CONFIG is composed from PLAYWRIGHT_MCP_VERSION so nothing in the module surfaces @playwright/mcp@latest. The exported constant + composer are what src/verify/cli/run.js reuses when --playwright-mcp-version fires, and what src/verify/engine/index.js reads when it threads the effective pin into report.run.runStats.playwrightMcpVersion.",
|
|
6
|
+
"implementsAcIds": ["AC-1101-1", "AC-1101-2", "AC-1101-3", "AC-1101-4"],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
11
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-071",
|
|
3
|
+
"path": "test/blueprint/apply-spa-v1-4-0-schema.test.js",
|
|
4
|
+
"title": "Application-spa v1.4.0 browserSurface + browser-facing user stories + e2e template",
|
|
5
|
+
"description": "The SPA blueprint at 1.4.0 declares the top-level browserSurface object and contributes application-spa-US-1134 (icon on the home route) and application-spa-US-1135 (unauthenticated protected route lands on sign-in) as browser-facing acceptance criteria. blueprints/application-spa/assets/tc-templates/e2e.md ships as the paste-in test-case template naming rcf verify browser as the driver seam. blueprints/delivery-ci-workflows/blueprint.json bumps to 2.2.0 with US-6124 binding AC-6124-1 on the elicited e2e check, plus the illustrative e2e job in pull-request-checks.yml and the alternate-provider notes. The applied SPA v1.4.0 manifest still validates against rcf-schemas 0.5.1 (test/blueprint/apply-spa-v1-4-0-schema.test.js) with no browserSurface field on the applied blueprint record; doctor and any future workflow-materialiser read browserSurface off the applied record's source reference.",
|
|
6
|
+
"implementsAcIds": ["AC-1102-1", "AC-1102-2", "AC-1102-3", "AC-1102-4", "AC-1102-5"],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
11
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-072",
|
|
3
|
+
"path": "src/setup/playwright-checks.js#loadBrowserFacingSources",
|
|
4
|
+
"title": "Doctor's browser-facing projection + four Playwright checks",
|
|
5
|
+
"description": "loadBrowserFacingSources(projectRoot) walks manifest.blueprints[].source, reads each blueprint.json, and returns { browserFacing, sources[] } (spec 3.1). checkPlaywrightPresent(projectRoot) uses require.resolve('playwright'); checkBrowserPresent() probes PATH for chrome/chromium then ~/.cache/ms-playwright then `npx --no-install @playwright/mcp browser-status --json`; checkPlaywrightMcpReachable() spawns `npx --no-install @playwright/mcp --help` with a 15-second diagnostic ceiling. hasPlaywrightSignature + findProjectPlaywrightKey are the shared signature detectors doctor's redundant-entry check and init's project-scope probe consume. FIX_LINES exports the spec-verbatim fix lines; SKIP_LINE_NON_BROWSER_FACING is the single skip line for non-browser-facing projects. src/cli/doctor.js wires the four checks into KNOWN_CHECKS, honours the --check filter override on API-only projects (spec 3.5), and prints the skip line before the summary (spec 3.4).",
|
|
6
|
+
"implementsAcIds": ["AC-1103-1", "AC-1103-2", "AC-1103-3", "AC-1103-4"],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
11
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cnId": "CN-073",
|
|
3
|
+
"path": "src/cli/init.js#runPlaywrightMcpPass",
|
|
4
|
+
"title": "Init's Playwright MCP pass + probeClaudeCodeMcp seam + redundant-entry check",
|
|
5
|
+
"description": "runPlaywrightMcpPass in src/cli/init.js implements the four-branch decision tree: project-scope Playwright signature detected -> left alone; probe found at any scope in Claude Code -> left alone; probe none -> write distinctly-named playwright-rcf entry; probe inconclusive -> write with the 'could not probe' notice. --no-playwright-mcp suppresses the write step entirely; the probe still runs so the print-out remains honest. probeClaudeCodeMcp in src/setup/playwright-checks.js shells out to `claude mcp list` (5s timeout) plus `claude mcp get <name>` for the scope; parseClaudeMcpListOutput and parseClaudeMcpGetScope carry the parsing logic. Doctor's playwright-mcp-redundant check (runPlaywrightMcpRedundantCheck in src/cli/doctor.js) fires only on browser-facing projects when both project and user scopes carry a Playwright signature; --fix does not repair the drift (deliberate operator choice per spec 4.5).",
|
|
6
|
+
"implementsAcIds": ["AC-1104-1", "AC-1104-2", "AC-1104-3", "AC-1104-4", "AC-1104-5"],
|
|
7
|
+
"dependencies": [],
|
|
8
|
+
"version": "0.1.0",
|
|
9
|
+
"status": "draft",
|
|
10
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
11
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
12
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-020",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"buildOrder": 20,
|
|
6
|
+
"executionStatus": "verified",
|
|
7
|
+
"title": "Verify pins the Playwright MCP version",
|
|
8
|
+
"summary": "Extend packages/rcf-lite/src/verify/engine/launcher.js with an exported PLAYWRIGHT_MCP_VERSION constant and a playwrightMcpConfig(version) composer; DEFAULT_MCP_CONFIG composes @playwright/mcp@<version> not @latest. Extend the CLI (src/verify/cli/run.js) with a --playwright-mcp-version override, a loud stderr override notice, and preflight-print of the pinned default. Stamp the effective pin on report.run.runStats.playwrightMcpVersion.",
|
|
9
|
+
"acIds": ["AC-1101-1","AC-1101-2","AC-1101-3","AC-1101-4"],
|
|
10
|
+
"dependsOnFbsIds": [],
|
|
11
|
+
"contextRequirements": { "tacIds": [], "adrIds": [] },
|
|
12
|
+
"domain": "verify",
|
|
13
|
+
"estimatedSize": "small",
|
|
14
|
+
"riskLevel": "low",
|
|
15
|
+
"notes": "Landed in the ratified 2026-09-03 e2e-contract train. Covers US-1101 on REQ-011.",
|
|
16
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
17
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-021",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"buildOrder": 21,
|
|
6
|
+
"executionStatus": "verified",
|
|
7
|
+
"title": "Blueprints amend for e2e as a declared test level",
|
|
8
|
+
"summary": "Bump application-spa to 1.4.0, add top-level browserSurface object, add US-1134 (icon) and US-1135 (auth) as new browser-facing acceptance criteria, and ship assets/tc-templates/e2e.md as the paste-in template. Bump delivery-ci-workflows to 2.2.0, add US-6124 with AC-6124-1 for the elicited e2e check, add the illustrative e2e job in pull-request-checks.yml, and add the alternate-provider notes for the e2e job. Prove the applied SPA v1.4.0 manifest validates against rcf-schemas 0.5.1 with no browserSurface field on the applied blueprint record.",
|
|
9
|
+
"acIds": ["AC-1102-1","AC-1102-2","AC-1102-3","AC-1102-4","AC-1102-5"],
|
|
10
|
+
"dependsOnFbsIds": [],
|
|
11
|
+
"contextRequirements": { "tacIds": [], "adrIds": [] },
|
|
12
|
+
"domain": "verify",
|
|
13
|
+
"estimatedSize": "small",
|
|
14
|
+
"riskLevel": "low",
|
|
15
|
+
"notes": "Landed in the ratified 2026-09-03 e2e-contract train. Covers US-1102 on REQ-011.",
|
|
16
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
17
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-022",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"buildOrder": 22,
|
|
6
|
+
"executionStatus": "verified",
|
|
7
|
+
"title": "Doctor: playwright-present, browser-present, playwright-mcp-reachable, playwright-mcp-redundant",
|
|
8
|
+
"summary": "Declare @playwright/mcp and playwright as optional peer dependencies. Add src/setup/playwright-checks.js with the four checks and the loadBrowserFacingSources projection over manifest.blueprints. Wire the four checks into src/cli/doctor.js: run the three probes iff at least one applied blueprint declares a browserSurface OR the operator explicitly asks by --check; print the skip line otherwise; playwright-mcp-redundant fires only on browser-facing projects.",
|
|
9
|
+
"acIds": ["AC-1103-1","AC-1103-2","AC-1103-3","AC-1103-4"],
|
|
10
|
+
"dependsOnFbsIds": [],
|
|
11
|
+
"contextRequirements": { "tacIds": [], "adrIds": [] },
|
|
12
|
+
"domain": "verify",
|
|
13
|
+
"estimatedSize": "small",
|
|
14
|
+
"riskLevel": "low",
|
|
15
|
+
"notes": "Landed in the ratified 2026-09-03 e2e-contract train. Covers US-1103 on REQ-011.",
|
|
16
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
17
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fbsId": "FBS-023",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"bsId": "BS-001",
|
|
5
|
+
"buildOrder": 23,
|
|
6
|
+
"executionStatus": "verified",
|
|
7
|
+
"title": "Init: Playwright MCP entry only when no scope-visible entry exists",
|
|
8
|
+
"summary": "Add a --no-playwright-mcp flag. After the rcf mcp entry write, detect a project-scope Playwright signature (any args string matching /^@playwright\/mcp(@|$)/) and leave it alone if present. Otherwise probe the harness (claude mcp list + claude mcp get <name>) and, on 'none' or 'inconclusive', write a distinctly named playwright-rcf project-scope entry. --no-playwright-mcp suppresses the write step entirely; the probe still runs so the print-out remains honest.",
|
|
9
|
+
"acIds": ["AC-1104-1","AC-1104-2","AC-1104-3","AC-1104-4","AC-1104-5"],
|
|
10
|
+
"dependsOnFbsIds": [],
|
|
11
|
+
"contextRequirements": { "tacIds": [], "adrIds": [] },
|
|
12
|
+
"domain": "verify",
|
|
13
|
+
"estimatedSize": "small",
|
|
14
|
+
"riskLevel": "low",
|
|
15
|
+
"notes": "Landed in the ratified 2026-09-03 e2e-contract train. Covers US-1104 on REQ-011.",
|
|
16
|
+
"createdAt": "2026-09-03T17:00:00Z",
|
|
17
|
+
"updatedAt": "2026-09-03T17:00:00Z"
|
|
18
|
+
}
|