@chidchanun/bcp 0.2.18 → 0.2.19
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/README.md +96 -228
- package/docs/README.md +36 -44
- package/docs/api-freeze-snapshot.json +232 -0
- package/docs/api-manifest.json +1 -1
- package/docs/docs-web-manifest.json +5 -3
- package/docs/migration-0.2.md +79 -80
- package/docs/platform-contract.md +64 -79
- package/docs/platform-manifest.json +12 -4
- package/docs/releases/0.2.19.md +125 -0
- package/docs/releasing.md +104 -179
- package/docs/stability-api-freeze.md +179 -0
- package/package.json +1 -1
package/docs/releasing.md
CHANGED
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
# Releasing BCP Framework
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
BCP Framework is developed in a private npm workspace layout and staged into separate publish artifacts so monorepo-only paths cannot accidentally become the public package contract.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
The selected public npm identities are:
|
|
5
|
+
The public npm identities are:
|
|
8
6
|
|
|
9
7
|
```text
|
|
10
8
|
@chidchanun/bcp
|
|
11
9
|
create-bcp-app
|
|
12
10
|
```
|
|
13
11
|
|
|
14
|
-
Application source continues importing
|
|
12
|
+
Application source continues importing through the dependency key `bcp`.
|
|
15
13
|
|
|
16
14
|
## 1. Synchronize versions
|
|
17
15
|
|
|
18
|
-
Use the version helper
|
|
16
|
+
Use the version helper:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm run version:set -- <version>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
For the current development target:
|
|
19
23
|
|
|
20
24
|
```bash
|
|
21
|
-
npm run version:set -- 0.
|
|
25
|
+
npm run version:set -- 0.2.19
|
|
22
26
|
```
|
|
23
27
|
|
|
24
|
-
It synchronizes
|
|
28
|
+
It synchronizes:
|
|
25
29
|
|
|
26
30
|
```text
|
|
27
31
|
package.json
|
|
@@ -30,113 +34,129 @@ create-bcp-app/package.json
|
|
|
30
34
|
package-lock.json
|
|
31
35
|
```
|
|
32
36
|
|
|
33
|
-
Review
|
|
37
|
+
Review release notes/changelog after changing the version.
|
|
38
|
+
|
|
39
|
+
## 2. Stability/API compatibility gate
|
|
34
40
|
|
|
35
|
-
|
|
41
|
+
`0.2.19` freezes the current `0.2.x` public contract in:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
docs/api-freeze-snapshot.json
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Validate it with:
|
|
36
48
|
|
|
37
49
|
```bash
|
|
38
|
-
npm run
|
|
50
|
+
npm run api:check
|
|
39
51
|
```
|
|
40
52
|
|
|
41
|
-
|
|
53
|
+
The checker prepares the exact publish staging package and compares its public exports/browser boundaries plus CLI/API ownership to the committed freeze snapshot.
|
|
54
|
+
|
|
55
|
+
Do not use this as a routine way to make the check pass:
|
|
42
56
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- staged public package exports and executable metadata
|
|
47
|
-
- public npm access configuration
|
|
48
|
-
- exact `v<version>` matching when the check runs from a Git tag
|
|
57
|
+
```bash
|
|
58
|
+
npm run api:snapshot
|
|
59
|
+
```
|
|
49
60
|
|
|
50
|
-
|
|
61
|
+
Snapshot regeneration is for an explicitly reviewed platform-baseline change. Intentional public API changes should normally move to `0.3.0` rather than silently changing the frozen `0.2.19` surface.
|
|
51
62
|
|
|
52
|
-
## 3.
|
|
63
|
+
## 3. Release-readiness metadata
|
|
53
64
|
|
|
54
|
-
|
|
65
|
+
Run:
|
|
55
66
|
|
|
56
67
|
```bash
|
|
57
|
-
npm
|
|
58
|
-
npm whoami
|
|
68
|
+
npm run release:readiness
|
|
59
69
|
```
|
|
60
70
|
|
|
61
|
-
|
|
71
|
+
For a local machine-readable report:
|
|
62
72
|
|
|
63
73
|
```bash
|
|
64
|
-
npm run release:
|
|
74
|
+
npm run release:readiness:report
|
|
65
75
|
```
|
|
66
76
|
|
|
67
|
-
|
|
77
|
+
Output:
|
|
68
78
|
|
|
69
79
|
```text
|
|
70
|
-
|
|
71
|
-
create-bcp-app
|
|
80
|
+
.bcp-framework/release-readiness.json
|
|
72
81
|
```
|
|
73
82
|
|
|
74
|
-
The check
|
|
83
|
+
The readiness check covers package/lock/manifests version parity, previous-baseline metadata, release docs, public entrypoint parity, CLI parity and stability capability flags.
|
|
75
84
|
|
|
76
|
-
|
|
85
|
+
## 4. Run the normal release gate
|
|
77
86
|
|
|
78
87
|
```bash
|
|
79
|
-
|
|
88
|
+
npm run release:check
|
|
80
89
|
```
|
|
81
90
|
|
|
82
|
-
|
|
91
|
+
For `0.2.19`, this runs:
|
|
92
|
+
|
|
93
|
+
```text
|
|
94
|
+
typecheck
|
|
95
|
+
full unit/integration/E2E/package test suite
|
|
96
|
+
API compatibility gate
|
|
97
|
+
release-readiness gate
|
|
98
|
+
release metadata validation
|
|
99
|
+
```
|
|
83
100
|
|
|
84
|
-
|
|
85
|
-
|
|
101
|
+
The package smoke suite performs real `npm pack` operations, clean installs and executable checks. Stability package smoke also verifies the prepared package against the freeze snapshot.
|
|
102
|
+
|
|
103
|
+
## 5. Verify npm package names and ownership
|
|
104
|
+
|
|
105
|
+
Authenticate first:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
npm login
|
|
109
|
+
npm whoami
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Then:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
86
115
|
npm run release:name-check
|
|
87
116
|
```
|
|
88
117
|
|
|
89
|
-
|
|
118
|
+
Defaults are locked by `scripts/release-env.mjs` to:
|
|
90
119
|
|
|
91
120
|
```text
|
|
92
|
-
|
|
93
|
-
|
|
121
|
+
@chidchanun/bcp
|
|
122
|
+
create-bcp-app
|
|
94
123
|
```
|
|
95
124
|
|
|
96
|
-
|
|
125
|
+
A deliberate future rename may override `BCP_PACKAGE_NAME` / `BCP_CREATE_PACKAGE_NAME`.
|
|
97
126
|
|
|
98
|
-
##
|
|
99
|
-
|
|
100
|
-
Run:
|
|
127
|
+
## 6. Verify version availability
|
|
101
128
|
|
|
102
129
|
```bash
|
|
103
130
|
npm run release:version-check
|
|
104
131
|
```
|
|
105
132
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
The gate fails when:
|
|
133
|
+
The gate fails if the exact version already exists or if the local stable version cannot advance the selected registry release.
|
|
109
134
|
|
|
110
|
-
|
|
111
|
-
- the local version is older than or equal to the registry's current latest version
|
|
135
|
+
Published npm versions are immutable; use a new patch version for a post-publication fix.
|
|
112
136
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
## 5. Run npm publish dry-run and clean-install smoke
|
|
137
|
+
## 7. Publish dry-run and clean-install smoke
|
|
116
138
|
|
|
117
139
|
```bash
|
|
118
140
|
npm run release:dry-run
|
|
119
141
|
```
|
|
120
142
|
|
|
121
|
-
This performs
|
|
122
|
-
|
|
123
|
-
No package is uploaded to the npm registry.
|
|
143
|
+
This performs npm publish dry-runs, packs fresh tarballs and validates clean installs without uploading a package.
|
|
124
144
|
|
|
125
|
-
Artifacts are written
|
|
145
|
+
Artifacts are written under:
|
|
126
146
|
|
|
127
147
|
```text
|
|
128
148
|
.package/artifacts/
|
|
129
149
|
```
|
|
130
150
|
|
|
131
|
-
##
|
|
151
|
+
## 8. Complete Release Candidate gate
|
|
132
152
|
|
|
133
|
-
|
|
153
|
+
Immediately before tagging:
|
|
134
154
|
|
|
135
155
|
```bash
|
|
136
156
|
npm run rc:check
|
|
137
157
|
```
|
|
138
158
|
|
|
139
|
-
|
|
159
|
+
Equivalent high-level sequence:
|
|
140
160
|
|
|
141
161
|
```bash
|
|
142
162
|
npm run release:check
|
|
@@ -145,15 +165,16 @@ npm run release:version-check
|
|
|
145
165
|
npm run release:dry-run
|
|
146
166
|
```
|
|
147
167
|
|
|
148
|
-
|
|
168
|
+
The exact commit that passes this sequence must be the release-tag commit.
|
|
149
169
|
|
|
150
|
-
##
|
|
170
|
+
## 9. Inspect prepared package contents
|
|
151
171
|
|
|
152
172
|
Review:
|
|
153
173
|
|
|
154
174
|
```text
|
|
155
175
|
.package/bcp/package.json
|
|
156
176
|
.package/bcp/LICENSE
|
|
177
|
+
.package/bcp/docs/api-freeze-snapshot.json
|
|
157
178
|
.package/create-bcp-app/package.json
|
|
158
179
|
.package/artifacts/*.tgz
|
|
159
180
|
```
|
|
@@ -165,156 +186,60 @@ npm pack --dry-run .package/bcp
|
|
|
165
186
|
npm pack --dry-run .package/create-bcp-app
|
|
166
187
|
```
|
|
167
188
|
|
|
168
|
-
|
|
189
|
+
## 10. Create the release tag
|
|
169
190
|
|
|
170
|
-
|
|
171
|
-
@chidchanun/bcp
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
but exposes application import paths through the npm alias key:
|
|
175
|
-
|
|
176
|
-
```text
|
|
177
|
-
bcp
|
|
178
|
-
bcp/island
|
|
179
|
-
bcp/cache
|
|
180
|
-
bcp/config
|
|
181
|
-
bcp/middleware
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
and the executable:
|
|
185
|
-
|
|
186
|
-
```text
|
|
187
|
-
bcp
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
A newly generated application's `package.json` pins the selected framework release exactly so a later plain package-manager install cannot silently move BCP to a different release:
|
|
191
|
-
|
|
192
|
-
```json
|
|
193
|
-
{
|
|
194
|
-
"scripts": {
|
|
195
|
-
"update": "bcp update"
|
|
196
|
-
},
|
|
197
|
-
"dependencies": {
|
|
198
|
-
"bcp": "npm:@chidchanun/bcp@0.1.10"
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
The explicit updater is responsible for resolving and installing later framework releases.
|
|
204
|
-
|
|
205
|
-
## 8. Create the release tag
|
|
206
|
-
|
|
207
|
-
Only after `npm run rc:check` passes and `CHANGELOG.md` is ready:
|
|
191
|
+
For `0.2.19`:
|
|
208
192
|
|
|
209
193
|
```bash
|
|
210
194
|
git status
|
|
211
|
-
git tag -a v0.
|
|
212
|
-
git push origin v0.
|
|
195
|
+
git tag -a v0.2.19 -m "BCP Framework v0.2.19"
|
|
196
|
+
git push origin v0.2.19
|
|
213
197
|
```
|
|
214
198
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
The GitHub Release Check workflow validates a `v*` tag, rechecks the npm target version, and uploads the npm tarballs as workflow artifacts. It does not publish them.
|
|
199
|
+
Always use the exact version in `package.json`.
|
|
218
200
|
|
|
219
|
-
##
|
|
201
|
+
## 11. Guarded publish
|
|
220
202
|
|
|
221
|
-
After the tag
|
|
203
|
+
After reviewing the tag/RC result:
|
|
222
204
|
|
|
223
205
|
```bash
|
|
224
206
|
npm run release:publish:yes
|
|
225
207
|
```
|
|
226
208
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
The command refuses to publish unless all of these conditions are true:
|
|
209
|
+
The publish command requires a clean working tree, the exact `v<version>` tag at HEAD, npm authentication, successful release gates and an unpublished target version.
|
|
230
210
|
|
|
231
|
-
|
|
232
|
-
- the git working tree is clean
|
|
233
|
-
- HEAD has the exact tag `v<package-version>`
|
|
234
|
-
- npm authentication succeeds
|
|
235
|
-
- the RC checks succeed again
|
|
236
|
-
- staged package names and versions match the selected release
|
|
237
|
-
- the target version has not already been accepted by npm
|
|
238
|
-
|
|
239
|
-
Stable BCP releases use this npm dist-tag by default, including stable `0.x` releases:
|
|
211
|
+
Stable BCP releases publish to:
|
|
240
212
|
|
|
241
213
|
```text
|
|
242
214
|
latest
|
|
243
215
|
```
|
|
244
216
|
|
|
245
|
-
Use `BCP_DIST_TAG` only
|
|
246
|
-
|
|
247
|
-
```bash
|
|
248
|
-
BCP_DIST_TAG=beta npm run release:publish:yes
|
|
249
|
-
```
|
|
250
|
-
|
|
251
|
-
PowerShell example:
|
|
252
|
-
|
|
253
|
-
```powershell
|
|
254
|
-
$env:BCP_DIST_TAG="beta"
|
|
255
|
-
npm run release:publish:yes
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
The framework publishes first. After `npm publish` succeeds, the release script accepts either normal version visibility or the selected dist-tag pointing at the new version. This prevents npm registry/security-processing delays from being misclassified as a failed publish.
|
|
259
|
-
|
|
260
|
-
Using `latest` for stable releases is also part of the updater contract: `bcp update` resolves `@chidchanun/bcp@latest` by default.
|
|
261
|
-
|
|
262
|
-
## 10. Recover from a partial publish
|
|
217
|
+
Use `BCP_DIST_TAG` only for intentionally separate channels such as `next` or `beta`.
|
|
263
218
|
|
|
264
|
-
If
|
|
219
|
+
If a partial publish occurs after one package succeeds, resume with:
|
|
265
220
|
|
|
266
221
|
```bash
|
|
267
222
|
npm run release:resume
|
|
268
223
|
```
|
|
269
224
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
Do not use resume mode to overwrite or replace an existing npm version; npm versions are immutable.
|
|
273
|
-
|
|
274
|
-
## 11. Install or update the stable release
|
|
275
|
-
|
|
276
|
-
The recommended new-project path is:
|
|
277
|
-
|
|
278
|
-
```bash
|
|
279
|
-
npx create-bcp-app@latest my-app
|
|
280
|
-
```
|
|
281
|
-
|
|
282
|
-
A generated application keeps the documented `bcp` import name through an npm alias and pins the selected framework version exactly.
|
|
283
|
-
|
|
284
|
-
For an existing project already on an updater-capable release:
|
|
285
|
-
|
|
286
|
-
```bash
|
|
287
|
-
npm run update
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
For a project on BCP 0.1.9 or older, bootstrap the updater once with:
|
|
225
|
+
## 0.2.19 release checklist
|
|
291
226
|
|
|
292
227
|
```bash
|
|
293
|
-
|
|
228
|
+
npm run version:set -- 0.2.19
|
|
229
|
+
npm run typecheck
|
|
230
|
+
npm run test:unit
|
|
231
|
+
npm run test:integration
|
|
232
|
+
npm run test:e2e
|
|
233
|
+
npm run test:package
|
|
234
|
+
npm run api:check
|
|
235
|
+
npm run release:readiness
|
|
236
|
+
npm run rc:check
|
|
294
237
|
```
|
|
295
238
|
|
|
296
|
-
|
|
239
|
+
Only after all checks pass:
|
|
297
240
|
|
|
298
241
|
```bash
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
Application code then continues using:
|
|
303
|
-
|
|
304
|
-
```ts
|
|
305
|
-
import {
|
|
306
|
-
Link,
|
|
307
|
-
} from "bcp";
|
|
242
|
+
git tag -a v0.2.19 -m "BCP Framework v0.2.19"
|
|
243
|
+
git push origin v0.2.19
|
|
244
|
+
npm run release:publish:yes
|
|
308
245
|
```
|
|
309
|
-
|
|
310
|
-
The scoped package can also be installed directly as `@chidchanun/bcp@latest`, but applications using the framework's documented `bcp` import path should prefer the alias form above.
|
|
311
|
-
|
|
312
|
-
## 12. Trusted publishing
|
|
313
|
-
|
|
314
|
-
For subsequent releases, prefer npm Trusted Publishing with GitHub Actions instead of a long-lived write token. npm supports GitHub Actions OIDC publishing and recommends trusted publishing for CI-based releases.
|
|
315
|
-
|
|
316
|
-
After the npm package settings are available, configure the repository/workflow as a trusted publisher and move the real publish action into the guarded GitHub release workflow.
|
|
317
|
-
|
|
318
|
-
## License
|
|
319
|
-
|
|
320
|
-
BCP Framework and `create-bcp-app` use the MIT License. See `LICENSE` and `create-bcp-app/LICENSE`.
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Stability & API Freeze — 0.2.19
|
|
2
|
+
|
|
3
|
+
BCP Framework `0.2.19` is the final stabilization milestone for the `0.2.x` platform before the next `0.3.0` application-platform baseline.
|
|
4
|
+
|
|
5
|
+
This release intentionally does **not** add a new application subsystem. Its purpose is to freeze the supported public package/CLI contract, strengthen release gates and catch accidental compatibility regressions before publication.
|
|
6
|
+
|
|
7
|
+
## Frozen contract
|
|
8
|
+
|
|
9
|
+
The committed source of truth is:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
docs/api-freeze-snapshot.json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
It records:
|
|
16
|
+
|
|
17
|
+
- the supported `bcp/*` public entrypoint set;
|
|
18
|
+
- the supported CLI command set;
|
|
19
|
+
- prepared npm `exports` including `types`, `default` and `browser` targets;
|
|
20
|
+
- API source/environment ownership from `docs/api-manifest.json`;
|
|
21
|
+
- the compatibility baseline (`0.2.18`);
|
|
22
|
+
- the no-intentional-breaking-change policy for `0.2.19`.
|
|
23
|
+
|
|
24
|
+
The frozen public package entrypoints are:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
bcp
|
|
28
|
+
bcp/island
|
|
29
|
+
bcp/cache
|
|
30
|
+
bcp/config
|
|
31
|
+
bcp/validation
|
|
32
|
+
bcp/error
|
|
33
|
+
bcp/database
|
|
34
|
+
bcp/auth
|
|
35
|
+
bcp/jobs
|
|
36
|
+
bcp/workflow
|
|
37
|
+
bcp/events
|
|
38
|
+
bcp/realtime
|
|
39
|
+
bcp/testing
|
|
40
|
+
bcp/plugins
|
|
41
|
+
bcp/observability
|
|
42
|
+
bcp/deployment
|
|
43
|
+
bcp/server
|
|
44
|
+
bcp/server-only
|
|
45
|
+
bcp/middleware
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`./package.json` is also frozen as a package export, although it is not an application API entrypoint.
|
|
49
|
+
|
|
50
|
+
## API compatibility gate
|
|
51
|
+
|
|
52
|
+
Run:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm run api:check
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The compatibility checker prepares the exact npm staging package, generates the current contract and compares it to `docs/api-freeze-snapshot.json`.
|
|
59
|
+
|
|
60
|
+
The check fails when, for example:
|
|
61
|
+
|
|
62
|
+
- a public entrypoint is removed or added;
|
|
63
|
+
- a CLI command changes without an explicit new platform baseline;
|
|
64
|
+
- `bcp/server` stops resolving to `server.mjs` in the prepared package;
|
|
65
|
+
- a server-only browser poison target disappears;
|
|
66
|
+
- an entrypoint changes API source/environment ownership;
|
|
67
|
+
- the current version/baseline no longer matches the committed freeze.
|
|
68
|
+
|
|
69
|
+
This prevents source metadata, prepared npm metadata and documentation metadata from drifting independently.
|
|
70
|
+
|
|
71
|
+
## Snapshot regeneration
|
|
72
|
+
|
|
73
|
+
To intentionally regenerate the contract:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm run api:snapshot
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
That command rewrites:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
docs/api-freeze-snapshot.json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For `0.2.19`, snapshot changes require explicit review because the milestone promises no intentional breaking changes from `0.2.18`.
|
|
86
|
+
|
|
87
|
+
Large or breaking public-surface changes should normally be deferred to `0.3.0` rather than silently updating the `0.2.19` snapshot.
|
|
88
|
+
|
|
89
|
+
## Release readiness
|
|
90
|
+
|
|
91
|
+
Run:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npm run release:readiness
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The readiness report checks:
|
|
98
|
+
|
|
99
|
+
- root/client/create-app version parity;
|
|
100
|
+
- `package-lock.json` version parity;
|
|
101
|
+
- platform/API/docs-web version parity;
|
|
102
|
+
- `unreleased` release state;
|
|
103
|
+
- `0.2.18` previous-baseline metadata;
|
|
104
|
+
- no intentional breaking changes;
|
|
105
|
+
- API freeze snapshot version/baseline;
|
|
106
|
+
- public entrypoint parity;
|
|
107
|
+
- CLI freeze parity;
|
|
108
|
+
- current release notes and docs route;
|
|
109
|
+
- stability capability flags.
|
|
110
|
+
|
|
111
|
+
To also persist a local machine-readable report:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm run release:readiness:report
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The report is written to:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
.bcp-framework/release-readiness.json
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
It is a local build artifact and is not the release source of truth.
|
|
124
|
+
|
|
125
|
+
## RC integration
|
|
126
|
+
|
|
127
|
+
`0.2.19` strengthens the release pipeline:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
npm run typecheck
|
|
131
|
+
npm test
|
|
132
|
+
-> unit
|
|
133
|
+
-> integration
|
|
134
|
+
-> e2e
|
|
135
|
+
-> prepared-package smoke
|
|
136
|
+
-> Stability & API Freeze smoke
|
|
137
|
+
npm run api:check
|
|
138
|
+
npm run release:readiness
|
|
139
|
+
release metadata check
|
|
140
|
+
npm name/version checks
|
|
141
|
+
npm publish dry-run
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`npm run rc:check` must pass on the exact commit that will be tagged.
|
|
145
|
+
|
|
146
|
+
## Lifecycle stabilization
|
|
147
|
+
|
|
148
|
+
The stability suite adds explicit idempotency coverage for Deployment Platform v2:
|
|
149
|
+
|
|
150
|
+
- concurrent/repeated `start()` calls must start a resource once;
|
|
151
|
+
- concurrent/repeated `shutdown()` calls must stop a resource once;
|
|
152
|
+
- shutdown remains reverse ordered;
|
|
153
|
+
- a stopped runtime cannot be restarted.
|
|
154
|
+
|
|
155
|
+
Existing subsystem-specific suites remain authoritative for jobs, workflows, outbox/events, realtime, cache, plugins and deployment behavior.
|
|
156
|
+
|
|
157
|
+
## Compatibility policy
|
|
158
|
+
|
|
159
|
+
`0.2.19` declares:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
previous baseline: 0.2.18
|
|
163
|
+
intentional breaking changes: false
|
|
164
|
+
freeze state: frozen
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Bug fixes may still change incorrect implementation behavior, but they must not silently remove documented public entrypoints or change their package-resolution contract.
|
|
168
|
+
|
|
169
|
+
## Moving to 0.3.0
|
|
170
|
+
|
|
171
|
+
`0.3.0` is the next platform baseline. That milestone may intentionally revise the frozen surface, but changes should be accompanied by:
|
|
172
|
+
|
|
173
|
+
1. a reviewed API snapshot update;
|
|
174
|
+
2. explicit compatibility/breaking-change metadata;
|
|
175
|
+
3. migration documentation;
|
|
176
|
+
4. updated package/docs manifests;
|
|
177
|
+
5. regression and prepared-package coverage.
|
|
178
|
+
|
|
179
|
+
The `0.2.19` snapshot therefore becomes the comparison point for the next platform-generation work.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chidchanun/bcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.19",
|
|
4
4
|
"description": "BCP Framework - a React full-stack framework with file-based routing, SSR, APIs, middleware, islands, caching and standalone production builds.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|