rcf-lite 0.16.0 → 0.18.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 +36 -0
- package/blueprints/application-api-rest/README.md +5 -1
- package/blueprints/application-api-rest/blueprint.json +1 -1
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-006.json +4 -4
- package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +9 -8
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +3 -3
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +27 -27
- package/blueprints/application-api-rest/docs/topics.md +2 -2
- package/blueprints/application-api-rest/guide/application-api-rest.md +5 -1
- 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/application-spa/docs/topics.md +2 -2
- 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/blueprints/delivery-ci-workflows/docs/topics.md +2 -2
- package/blueprints/deploy-cloudflare-workers/docs/topics.md +2 -2
- package/blueprints/email-smtp-resend/docs/topics.md +2 -2
- package/blueprints/observability-essentials/README.md +6 -2
- package/blueprints/observability-essentials/blueprint.json +133 -33
- package/blueprints/observability-essentials/contributions/adrs/adr-801-observability-essentials-health-probes.json +4 -4
- package/blueprints/observability-essentials/contributions/adrs/adr-802-observability-essentials-readiness-semantics.json +4 -4
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +4 -4
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +4 -4
- package/blueprints/observability-essentials/contributions/tacs/tac-801-observability-essentials-liveness-probe.json +10 -9
- package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +17 -11
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +12 -3
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7102.json +12 -3
- package/blueprints/observability-essentials/docs/topics.md +15 -8
- package/blueprints/observability-essentials/guide/observability-essentials.md +9 -3
- package/blueprints/observability-probe-endpoints/README.md +5 -1
- package/blueprints/observability-probe-endpoints/blueprint.json +116 -24
- package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1503-observability-probe-endpoints-kubernetes-default.json +5 -5
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +11 -2
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14107.json +11 -2
- package/blueprints/observability-probe-endpoints/docs/topics.md +6 -6
- package/blueprints/observability-probe-endpoints/guide/observability-probe-endpoints.md +10 -0
- package/blueprints/persistence-data-d1/docs/topics.md +2 -2
- package/blueprints/persistence-data-sqlite/docs/topics.md +2 -2
- package/blueprints/security-auth-clerk/docs/topics.md +2 -2
- package/blueprints/security-auth-keycloak/docs/topics.md +2 -2
- package/blueprints/security-auth-magic-link/docs/topics.md +2 -2
- package/blueprints/security-auth-oauth2/docs/topics.md +2 -2
- package/blueprints/security-secrets-management/docs/topics.md +2 -2
- 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/code-nodes/cn-074.json +19 -0
- package/rcf/code-nodes/cn-075.json +15 -0
- package/rcf/code-nodes/cn-076.json +14 -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/fbs/fbs-024.json +24 -0
- package/rcf/fbs/fbs-025.json +25 -0
- package/rcf/fbs/fbs-026.json +27 -0
- package/rcf/fbs/fbs-027.json +25 -0
- package/rcf/prd.json +3 -2
- package/rcf/requirements/req-011.json +22 -0
- package/rcf/requirements/req-012.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/test-suites/ts-034.json +32 -0
- package/rcf/test-suites/ts-035.json +23 -0
- package/rcf/test-suites/ts-036.json +65 -0
- package/rcf/test-suites/ts-037.json +55 -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/rcf/user-stories/us-1201.json +34 -0
- package/rcf/user-stories/us-1202.json +25 -0
- package/rcf/user-stories/us-1203.json +43 -0
- package/rcf/user-stories/us-1204.json +25 -0
- package/releases/releases.yaml +21 -1
- package/src/blueprint/index.js +1 -0
- package/src/blueprint/remove-resolution.js +104 -0
- package/src/blueprint/supersede.js +2 -2
- package/src/cli/blueprint.js +41 -0
- package/src/cli/doctor.js +257 -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
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
The blueprint ships one illustrative provider example (GitHub Actions, four workflow files under `github-actions/`). Every mainstream provider hosts the same workflow set by translating four points per workflow and keeping the Node entry-point invocations unchanged. These notes are read alongside `guide/delivery-ci-workflows.md`, not instead of it.
|
|
4
4
|
|
|
5
|
+
## The e2e job (v2.2.0)
|
|
6
|
+
|
|
7
|
+
When a project applies at least one blueprint declaring `.browserSurface.declared: true` on its source `blueprint.json` (for example `application-spa` v1.4.0), the workflow-materialiser adds an `e2e` job to `pull-request-checks`. The GitHub Actions shape ships in `github-actions/pull-request-checks.yml`. Every provider hosts the same job by translating four points:
|
|
8
|
+
|
|
9
|
+
1. **Trigger.** Same trigger as the check-set job on the same workflow; the e2e job is a peer, not a separate workflow.
|
|
10
|
+
2. **Browser tooling install.** After Node + package-manager setup, install a Playwright browser: `npx playwright install chromium --with-deps` (or the provider's equivalent). rcf-lite pins `@playwright/mcp` for `rcf verify`; the same browser installation drives the project's e2e suite.
|
|
11
|
+
3. **Runner invocation.** `node scripts/rcf-ci-e2e.js` (the project-owned e2e runner; writes `.rcf/reports/ci/e2e.json` with `checkKind: "e2e"`).
|
|
12
|
+
4. **Browser-artefact upload.** Upload screenshots and HTML captures alongside the per-gate report so a failing run has visible evidence.
|
|
13
|
+
|
|
14
|
+
The four provider translations follow the same substitution shape as the check-set job:
|
|
15
|
+
|
|
16
|
+
- **GitLab CI.** Add an `e2e` job in `.gitlab-ci.yml`; `image: mcr.microsoft.com/playwright:v1.50.0-noble` or install chromium via `apt-get` then `npx playwright install`; invoke `node scripts/rcf-ci-e2e.js`; upload with `artifacts: { when: always, paths: [.rcf/reports/ci/e2e.json, playwright-report/, test-results/] }`.
|
|
17
|
+
- **CircleCI.** Add an `e2e` job in `.circleci/config.yml`; `- browser-tools/install-browser-tools` orb + `npx playwright install chromium`; invoke as above; `store_artifacts: { path: playwright-report }` plus `store_artifacts: { path: .rcf/reports/ci/e2e.json }`.
|
|
18
|
+
- **Buildkite.** Add an `e2e` step; install chromium via the pipeline setup hook or a Docker plugin (`docker#v5.0.0`); invoke as above; `artifact_paths: [".rcf/reports/ci/e2e.json", "playwright-report/**", "test-results/**"]`.
|
|
19
|
+
- **Jenkins.** Add an `e2e` stage; install chromium via `sh 'npx playwright install chromium --with-deps'`; invoke as above; `archiveArtifacts artifacts: '.rcf/reports/ci/e2e.json, playwright-report/**, test-results/**', allowEmptyArchive: true`.
|
|
20
|
+
|
|
21
|
+
Projects that apply no browser-facing blueprint delete the `e2e` job from the workflow (or the materialiser omits it on regeneration); the workflow reads byte-identical to a 2.1 project in that case.
|
|
22
|
+
|
|
5
23
|
## The workflow set the matrix materialises
|
|
6
24
|
|
|
7
25
|
Which workflow files exist depends on `workflowShape`:
|
|
@@ -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
|
+
}
|
|
@@ -41,14 +41,14 @@ This table is maintained shelf-wide across every blueprint's `docs/topics.md`. R
|
|
|
41
41
|
| hello-panel (walkthrough exemplar) | 4101-4899 | 4xx | doc-reserved; teaching exemplar in `packages/rcf-lite/docs/blueprint-authoring-walkthrough.md`, not shipped as a blueprint directory | `operatorPanel` |
|
|
42
42
|
| persistence-data-sqlite | 5101-5899 | 6xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
43
43
|
| delivery-ci-workflows | 6101-6899 | 7xx | shipped v2.0.0 (renamed from ci-pipeline) | `ciGates`, `strictCoverageGate`, `releaseArtefacts` |
|
|
44
|
-
| observability-essentials | 7101-7899 | 8xx | shipped
|
|
44
|
+
| observability-essentials | 7101-7899 | 8xx | shipped v2.0.0 | `statusPageContract` |
|
|
45
45
|
| security-secrets-management | 8101-8899 | 9xx | shipped v1.0.0 | `secretsSource` |
|
|
46
46
|
| security-auth-clerk | 9101-9899 | 10xx | shipped v1.0.0 | `authModel` |
|
|
47
47
|
| security-auth-oauth2 | 10101-10899 | 11xx | shipped v1.0.0 | `authModel` |
|
|
48
48
|
| security-auth-keycloak | 11101-11899 | 12xx | shipped v1.0.0 | `authModel` |
|
|
49
49
|
| deploy-cloudflare-workers | 12101-12899 | 13xx | shipped v1.0.0 | `deploymentTarget` |
|
|
50
50
|
| persistence-data-d1 | 13101-13899 | 14xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
51
|
-
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.
|
|
51
|
+
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.1.0 | `healthProbes`, `readinessSemantics` |
|
|
52
52
|
|
|
53
53
|
US 6101-6110 sit at the LOW end of the 6101-6899 band on purpose. A project-side story that mechanically derives from `delivery-ci-workflows-REQ-011` into the number `6111` would collide against delivery-ci-workflows-US-6111 in this package; the band leaves headroom at the HIGH end (US 6181-6899) so a project's own stories anchored to delivery-ci-workflows REQs can allocate without conflict. The watchpost run4 lesson applies here too.
|
|
54
54
|
|
|
@@ -27,14 +27,14 @@ This table is maintained shelf-wide across every blueprint's `docs/topics.md`. R
|
|
|
27
27
|
| hello-panel (walkthrough exemplar) | 4101-4899 | 4xx | doc-reserved; teaching exemplar in `packages/rcf-lite/docs/blueprint-authoring-walkthrough.md`, not shipped as a blueprint directory | `operatorPanel` |
|
|
28
28
|
| persistence-data-sqlite | 5101-5899 | 6xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
29
29
|
| delivery-ci-workflows | 6101-6899 | 7xx | shipped v2.0.0 (renamed from ci-pipeline) | `ciGates`, `strictCoverageGate`, `releaseArtefacts` |
|
|
30
|
-
| observability-essentials | 7101-7899 | 8xx | shipped
|
|
30
|
+
| observability-essentials | 7101-7899 | 8xx | shipped v2.0.0 | `statusPageContract` |
|
|
31
31
|
| security-secrets-management | 8101-8899 | 9xx | shipped v1.0.0 | `secretsSource` |
|
|
32
32
|
| security-auth-clerk | 9101-9899 | 10xx | shipped v1.0.0 | `authModel` |
|
|
33
33
|
| security-auth-oauth2 | 10101-10899 | 11xx | shipped v1.0.0 | `authModel` |
|
|
34
34
|
| security-auth-keycloak | 11101-11899 | 12xx | shipped v1.0.0 | `authModel` |
|
|
35
35
|
| deploy-cloudflare-workers | 12101-12899 | 13xx | shipped v1.0.0 | `deploymentTarget` |
|
|
36
36
|
| persistence-data-d1 | 13101-13899 | 14xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
37
|
-
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.
|
|
37
|
+
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.1.0 | `healthProbes`, `readinessSemantics` |
|
|
38
38
|
|
|
39
39
|
US 12101-12112 sit at the LOW end of the 12101-12899 band on purpose. A project-side story that mechanically derives from a deploy-cloudflare-workers REQ id into the number `12112` would collide against deploy-cloudflare-workers-US-12112 in this package; the band leaves headroom at the HIGH end (US 12181-12899) so a project's own stories anchored to deploy-cloudflare-workers REQs can allocate without conflict. The watchpost run4 lesson applies here too. Band spacing between the last shipped block (security-secrets-management, 8101-8899, 9xx) and this one (12101-12899, 13xx) leaves the 9xxx-11xxx US bands and the 10xx-12xx suffix blocks open for concurrent-lane authoring so a peer authoring another blueprint in the same PR window does not collide with this one.
|
|
40
40
|
|
|
@@ -23,14 +23,14 @@ This table is maintained shelf-wide across every blueprint's `docs/topics.md`. R
|
|
|
23
23
|
| hello-panel (walkthrough exemplar) | 4101-4899 | 4xx | doc-reserved; teaching exemplar in `packages/rcf-lite/docs/blueprint-authoring-walkthrough.md`, not shipped as a blueprint directory | `operatorPanel` |
|
|
24
24
|
| persistence-data-sqlite | 5101-5899 | 6xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
25
25
|
| delivery-ci-workflows | 6101-6899 | 7xx | shipped v2.0.0 (renamed from ci-pipeline) | `ciGates`, `strictCoverageGate`, `releaseArtefacts` |
|
|
26
|
-
| observability-essentials | 7101-7899 | 8xx | shipped
|
|
26
|
+
| observability-essentials | 7101-7899 | 8xx | shipped v2.0.0 | `statusPageContract` |
|
|
27
27
|
| security-secrets-management | 8101-8899 | 9xx | shipped v1.0.0 | `secretsSource` |
|
|
28
28
|
| security-auth-clerk | 9101-9899 | 10xx | shipped v1.0.0 | `authModel` |
|
|
29
29
|
| security-auth-oauth2 | 10101-10899 | 11xx | shipped v1.0.0 | `authModel` |
|
|
30
30
|
| security-auth-keycloak | 11101-11899 | 12xx | shipped v1.0.0 | `authModel` |
|
|
31
31
|
| deploy-cloudflare-workers | 12101-12899 | 13xx | shipped v1.0.0 | `deploymentTarget` |
|
|
32
32
|
| persistence-data-d1 | 13101-13899 | 14xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
33
|
-
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.
|
|
33
|
+
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.1.0 | `healthProbes`, `readinessSemantics` |
|
|
34
34
|
|
|
35
35
|
US 4101-4106 sit at the LOW end of the 4101-4899 band on purpose. A project-side story that mechanically derives from an email-smtp-resend REQ id into the number `4106` (leading `4` + sequence `106`) would collide against email-smtp-resend-US-4106 in this package; the band leaves headroom at the HIGH end (US 4181-4899) so a project's own stories anchored to email-smtp-resend REQs can allocate without conflict. The watchpost run4 lesson applies here too.
|
|
36
36
|
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
# Observability blueprint (
|
|
1
|
+
# Observability blueprint (v2.0.0)
|
|
2
2
|
|
|
3
|
-
The fifth content blueprint on the rcf-build-lite blueprint mechanism (design brief v2, ratified; Phase 5 of the blueprint programme). Scope: two HTTP health probes (liveness
|
|
3
|
+
The fifth content blueprint on the rcf-build-lite blueprint mechanism (design brief v2, ratified; Phase 5 of the blueprint programme). Scope: two HTTP health probes (liveness and readiness, path-neutral from v2.0.0: liveness answering strictly on in-process state, readiness aggregating over an explicit boot-time-declared dependency set with strict-any-fail semantics), a public status page rendering a declared component list plus stable-fielded incident notices, and a durable notification-outcome sink recording every attempt's outcome for later query by recipient and window. Targeted at small greenfield rcf-lite projects. Historical uptime charts, metrics export, and distributed tracing are documented future variants; the v2.0.0 blueprint ships the current-state contract only.
|
|
4
|
+
|
|
5
|
+
## Breaking change in v2.0.0 (2026-09-04)
|
|
6
|
+
|
|
7
|
+
This blueprint no longer claims the shelf-wide `healthProbes` or `readinessSemantics` global topics. Path binding moved to `observability-probe-endpoints` (spec `projects/rcf-lite-wsd/specs/rcf-lite-probe-path-alignment-spec-2026-09-04.md`, section 4). Essentials-alone projects now supply `probeInterface.paths.liveness` and `probeInterface.paths.readiness` at boot (a one-line configuration change per environment). Projects that compose `observability-probe-endpoints` v1.1.0 or later inherit its resolved path set automatically and see no functional change beyond the topic ownership. See CHANGELOG.md for the full migration checklist.
|
|
4
8
|
|
|
5
9
|
## Apply
|
|
6
10
|
|