@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
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
# Framework Platform Contract
|
|
2
2
|
|
|
3
|
-
BCP Framework `0.2.
|
|
3
|
+
BCP Framework `0.2.x` exposes an explicit, machine-readable application-platform contract rather than relying on private repository structure.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The current development baseline is **`0.2.19 — Stability & API Freeze`** and remains unreleased until the complete RC sequence passes, the exact release commit is tagged and npm publication completes.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Sources of truth
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
```text
|
|
10
|
+
docs/platform-manifest.json
|
|
11
|
+
-> framework/runtime/capability/public-entrypoint contract
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
docs/api-manifest.json
|
|
14
|
+
-> public package source/environment/documentation ownership
|
|
12
15
|
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- built-in/scaffolded storage-provider families,
|
|
20
|
-
- compatibility expectations for the previous baseline,
|
|
21
|
-
- documentation files used by `bcp-docs-web`.
|
|
16
|
+
docs/api-freeze-snapshot.json
|
|
17
|
+
-> frozen 0.2.19 CLI and prepared npm export contract
|
|
18
|
+
|
|
19
|
+
docs/docs-web-manifest.json
|
|
20
|
+
-> documentation routes and release navigation
|
|
21
|
+
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Framework source and tests remain authoritative for runtime behavior. The manifests make that supported surface testable during release validation.
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## Frozen public entrypoints
|
|
26
26
|
|
|
27
|
-
The `0.2.
|
|
27
|
+
The `0.2.19` baseline supports:
|
|
28
28
|
|
|
29
29
|
```text
|
|
30
30
|
bcp
|
|
@@ -35,125 +35,110 @@ bcp/validation
|
|
|
35
35
|
bcp/error
|
|
36
36
|
bcp/database
|
|
37
37
|
bcp/auth
|
|
38
|
+
bcp/jobs
|
|
39
|
+
bcp/workflow
|
|
40
|
+
bcp/events
|
|
41
|
+
bcp/realtime
|
|
42
|
+
bcp/testing
|
|
43
|
+
bcp/plugins
|
|
44
|
+
bcp/observability
|
|
45
|
+
bcp/deployment
|
|
38
46
|
bcp/server
|
|
39
47
|
bcp/server-only
|
|
40
48
|
bcp/middleware
|
|
41
49
|
```
|
|
42
50
|
|
|
43
|
-
Application code should
|
|
51
|
+
Application code should use these entrypoints instead of private `packages/*` implementation paths.
|
|
44
52
|
|
|
45
|
-
The
|
|
53
|
+
The prepared npm package also exposes `./package.json`; that package export is included in the freeze snapshot even though it is not an application API module.
|
|
46
54
|
|
|
47
55
|
## CLI baseline
|
|
48
56
|
|
|
49
|
-
The
|
|
57
|
+
The frozen command families are:
|
|
50
58
|
|
|
51
59
|
```text
|
|
52
60
|
bcp dev
|
|
53
61
|
bcp build
|
|
62
|
+
bcp package
|
|
54
63
|
bcp start
|
|
55
64
|
bcp routes
|
|
56
65
|
bcp update
|
|
57
66
|
bcp db ...
|
|
58
67
|
bcp generate ...
|
|
68
|
+
bcp config ...
|
|
59
69
|
bcp doctor
|
|
60
70
|
bcp inspect
|
|
61
71
|
bcp help
|
|
62
72
|
bcp version
|
|
63
73
|
```
|
|
64
74
|
|
|
65
|
-
The Windows-safe `bcp-framework` executable
|
|
75
|
+
The Windows-safe `bcp-framework` executable is an alias for the same CLI.
|
|
66
76
|
|
|
67
77
|
## Runtime baseline
|
|
68
78
|
|
|
69
|
-
BCP `0.2.0` continues to target a standalone Node.js web application:
|
|
70
|
-
|
|
71
|
-
```text
|
|
72
|
-
BCP source application
|
|
73
|
-
↓
|
|
74
|
-
bcp build
|
|
75
|
-
↓
|
|
76
|
-
.bcp-framework/build/
|
|
77
|
-
├─ client/
|
|
78
|
-
├─ public/
|
|
79
|
-
└─ server/
|
|
80
|
-
└─ server.mjs
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Minimum runtime:
|
|
84
|
-
|
|
85
79
|
```text
|
|
86
80
|
Node.js >= 24.11.0
|
|
87
81
|
React 19
|
|
82
|
+
build target: standalone-node
|
|
83
|
+
package target: standalone-node
|
|
88
84
|
```
|
|
89
85
|
|
|
90
|
-
|
|
86
|
+
Prepared server/runtime entrypoints resolve to compiled ESM where required by the package contract. Their exact `types`, `default` and `browser` targets are frozen in `api-freeze-snapshot.json`.
|
|
91
87
|
|
|
92
|
-
## Compatibility policy
|
|
88
|
+
## Compatibility policy
|
|
93
89
|
|
|
94
|
-
`0.2.
|
|
90
|
+
For `0.2.19`:
|
|
95
91
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
bcp doctor
|
|
101
|
-
npm run typecheck
|
|
102
|
-
npm run build
|
|
92
|
+
```text
|
|
93
|
+
previous baseline: 0.2.18
|
|
94
|
+
intentional breaking changes: false
|
|
95
|
+
freeze state: frozen
|
|
103
96
|
```
|
|
104
97
|
|
|
105
|
-
|
|
98
|
+
Bug fixes may correct implementation behavior, but they must not silently remove a documented public entrypoint or change its prepared package-resolution/browser-boundary contract.
|
|
106
99
|
|
|
107
|
-
|
|
100
|
+
Intentional public-platform changes should normally move to `0.3.0` with explicit compatibility metadata and migration documentation.
|
|
108
101
|
|
|
109
|
-
|
|
102
|
+
## API compatibility gate
|
|
110
103
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
2. required public package exports,
|
|
115
|
-
3. both BCP CLI executable aliases,
|
|
116
|
-
4. minimum Node.js engine declaration,
|
|
117
|
-
5. inclusion of platform/docs metadata in the packed framework,
|
|
118
|
-
6. docs-web target/version consistency,
|
|
119
|
-
7. create-bcp-app version parity with the framework release.
|
|
120
|
-
|
|
121
|
-
This is additive to existing unit, integration, E2E, storage, production-hardening and Developer Experience package smoke checks.
|
|
122
|
-
|
|
123
|
-
## Docs-web contract
|
|
104
|
+
```bash
|
|
105
|
+
npm run api:check
|
|
106
|
+
```
|
|
124
107
|
|
|
125
|
-
|
|
108
|
+
The gate prepares the publish package, regenerates the current contract in memory and compares it to `docs/api-freeze-snapshot.json`.
|
|
126
109
|
|
|
127
|
-
|
|
128
|
-
docs/docs-web-manifest.json
|
|
129
|
-
-> website sections, routes, source Markdown and release navigation
|
|
110
|
+
To intentionally regenerate the snapshot:
|
|
130
111
|
|
|
131
|
-
|
|
132
|
-
|
|
112
|
+
```bash
|
|
113
|
+
npm run api:snapshot
|
|
133
114
|
```
|
|
134
115
|
|
|
135
|
-
|
|
116
|
+
Snapshot changes during `0.2.19` require explicit review; regeneration is not a routine fix for a failing compatibility check.
|
|
136
117
|
|
|
137
|
-
##
|
|
118
|
+
## Release readiness
|
|
138
119
|
|
|
139
|
-
|
|
120
|
+
```bash
|
|
121
|
+
npm run release:readiness
|
|
122
|
+
npm run release:readiness:report
|
|
123
|
+
```
|
|
140
124
|
|
|
141
|
-
|
|
142
|
-
- **supported** — behavior covered by current tests/docs,
|
|
143
|
-
- **experimental/roadmap** — not guaranteed by the current platform manifest,
|
|
144
|
-
- **internal** — not a public application import contract.
|
|
125
|
+
The readiness gate checks version/lock/manifests parity, compatibility metadata, freeze parity, release docs and stability capabilities. The optional local report is written to `.bcp-framework/release-readiness.json`.
|
|
145
126
|
|
|
146
127
|
## Release validation
|
|
147
128
|
|
|
148
|
-
Before `0.2.
|
|
129
|
+
Before `0.2.19` is tagged or published:
|
|
149
130
|
|
|
150
131
|
```bash
|
|
151
132
|
npm run typecheck
|
|
152
133
|
npm run test:unit
|
|
153
134
|
npm run test:integration
|
|
154
|
-
npm run test:package
|
|
155
135
|
npm run test:e2e
|
|
136
|
+
npm run test:package
|
|
137
|
+
npm run api:check
|
|
138
|
+
npm run release:readiness
|
|
156
139
|
npm run rc:check
|
|
157
140
|
```
|
|
158
141
|
|
|
159
|
-
|
|
142
|
+
`rc:check` must pass on the exact commit used for the release tag.
|
|
143
|
+
|
|
144
|
+
See [Stability & API Freeze](stability-api-freeze.md) and [Migrating to 0.2.x](migration-0.2.md).
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"framework": "bcp",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.19",
|
|
5
5
|
"releaseState": "unreleased",
|
|
6
|
-
"baseline": "
|
|
6
|
+
"baseline": "stability-api-freeze",
|
|
7
7
|
"runtime": {
|
|
8
8
|
"node": ">=24.11.0",
|
|
9
9
|
"react": "19",
|
|
@@ -95,6 +95,12 @@
|
|
|
95
95
|
"compiledAuthRuntime": true,
|
|
96
96
|
"compiledServerRuntime": true,
|
|
97
97
|
"compiledMiddlewareRuntime": true,
|
|
98
|
+
"stabilityApiFreeze": true,
|
|
99
|
+
"apiFreezeSnapshot": true,
|
|
100
|
+
"apiCompatibilityGate": true,
|
|
101
|
+
"releaseReadinessReport": true,
|
|
102
|
+
"packageExportParity": true,
|
|
103
|
+
"deploymentLifecycleIdempotency": true,
|
|
98
104
|
"backgroundJobsPlatform": true,
|
|
99
105
|
"jobQueueAdapterContract": true,
|
|
100
106
|
"inMemoryJobQueue": true,
|
|
@@ -224,7 +230,7 @@
|
|
|
224
230
|
"s3-compatible"
|
|
225
231
|
],
|
|
226
232
|
"compatibility": {
|
|
227
|
-
"previousBaseline": "0.2.
|
|
233
|
+
"previousBaseline": "0.2.18",
|
|
228
234
|
"intentionalBreakingChangesFromPreviousBaseline": false,
|
|
229
235
|
"migrationGuide": "migration-0.2.md"
|
|
230
236
|
},
|
|
@@ -232,9 +238,11 @@
|
|
|
232
238
|
"navigationManifest": "docs-web-manifest.json",
|
|
233
239
|
"platformManifest": "platform-manifest.json",
|
|
234
240
|
"apiManifest": "api-manifest.json",
|
|
241
|
+
"apiFreezeSnapshot": "api-freeze-snapshot.json",
|
|
235
242
|
"platformContract": "platform-contract.md",
|
|
236
243
|
"documentationPlatform": "documentation-platform.md",
|
|
237
244
|
"apiReference": "api-reference.md",
|
|
245
|
+
"stabilityApiFreeze": "stability-api-freeze.md",
|
|
238
246
|
"environmentValidation": "environment-validation.md",
|
|
239
247
|
"applicationPackaging": "application-packaging.md",
|
|
240
248
|
"authentication": "authentication.md",
|
|
@@ -253,6 +261,6 @@
|
|
|
253
261
|
"pluginModulePlatform": "plugin-module-platform.md",
|
|
254
262
|
"cachePlatformV2": "cache-platform-v2.md",
|
|
255
263
|
"migrationGuide": "migration-0.2.md",
|
|
256
|
-
"releaseNotes": "releases/0.2.
|
|
264
|
+
"releaseNotes": "releases/0.2.19.md"
|
|
257
265
|
}
|
|
258
266
|
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# BCP Framework 0.2.19
|
|
2
|
+
|
|
3
|
+
Status: **unreleased**
|
|
4
|
+
|
|
5
|
+
Milestone: **Stability & API Freeze**
|
|
6
|
+
|
|
7
|
+
`0.2.19` is the final `0.2.x` stabilization milestone before the next `0.3.0` application-platform baseline.
|
|
8
|
+
|
|
9
|
+
## Highlights
|
|
10
|
+
|
|
11
|
+
- freezes the documented `bcp/*` public entrypoint set;
|
|
12
|
+
- freezes the supported CLI command set;
|
|
13
|
+
- freezes prepared npm export resolution including browser boundaries;
|
|
14
|
+
- adds deterministic API snapshot generation;
|
|
15
|
+
- adds an API compatibility gate to RC validation;
|
|
16
|
+
- adds a release-readiness report;
|
|
17
|
+
- adds prepared-package Stability & API Freeze smoke coverage;
|
|
18
|
+
- adds deployment lifecycle idempotency regression coverage;
|
|
19
|
+
- keeps compatibility with `0.2.18` with no intentional breaking changes.
|
|
20
|
+
|
|
21
|
+
## API freeze snapshot
|
|
22
|
+
|
|
23
|
+
New source of truth:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
docs/api-freeze-snapshot.json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Generate intentionally with:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm run api:snapshot
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Validate without changing the snapshot:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm run api:check
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The compatibility check prepares the publish package and compares the current package/CLI/API ownership contract against the committed snapshot.
|
|
42
|
+
|
|
43
|
+
## Release readiness
|
|
44
|
+
|
|
45
|
+
New commands:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npm run release:readiness
|
|
49
|
+
npm run release:readiness:report
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
The persisted report is written locally to:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
.bcp-framework/release-readiness.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Readiness includes package/lock/manifests version parity, freeze/baseline metadata, release-note/docs presence and public API parity.
|
|
59
|
+
|
|
60
|
+
## RC pipeline
|
|
61
|
+
|
|
62
|
+
`release:check` now includes:
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
typecheck
|
|
66
|
+
full test suite
|
|
67
|
+
API compatibility check
|
|
68
|
+
release readiness check
|
|
69
|
+
release metadata check
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
`test:package` / `package:check` also include `stability-api-freeze-package-smoke.mjs`.
|
|
73
|
+
|
|
74
|
+
## Compatibility
|
|
75
|
+
|
|
76
|
+
```text
|
|
77
|
+
previous baseline: 0.2.18
|
|
78
|
+
intentional breaking changes: false
|
|
79
|
+
freeze state: frozen
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The existing public package surface remains unchanged from `0.2.18`:
|
|
83
|
+
|
|
84
|
+
```text
|
|
85
|
+
bcp
|
|
86
|
+
bcp/island
|
|
87
|
+
bcp/cache
|
|
88
|
+
bcp/config
|
|
89
|
+
bcp/validation
|
|
90
|
+
bcp/error
|
|
91
|
+
bcp/database
|
|
92
|
+
bcp/auth
|
|
93
|
+
bcp/jobs
|
|
94
|
+
bcp/workflow
|
|
95
|
+
bcp/events
|
|
96
|
+
bcp/realtime
|
|
97
|
+
bcp/testing
|
|
98
|
+
bcp/plugins
|
|
99
|
+
bcp/observability
|
|
100
|
+
bcp/deployment
|
|
101
|
+
bcp/server
|
|
102
|
+
bcp/server-only
|
|
103
|
+
bcp/middleware
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Validation before release
|
|
107
|
+
|
|
108
|
+
Run on the exact release commit:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npm run typecheck
|
|
112
|
+
npm run test:unit
|
|
113
|
+
npm run test:integration
|
|
114
|
+
npm run test:e2e
|
|
115
|
+
npm run test:package
|
|
116
|
+
npm run api:check
|
|
117
|
+
npm run release:readiness
|
|
118
|
+
npm run rc:check
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Do not tag or publish until the complete RC sequence passes.
|
|
122
|
+
|
|
123
|
+
## Next baseline
|
|
124
|
+
|
|
125
|
+
`0.3.0` is the next planned BCP Application Platform baseline. Intentional public API changes should be made there with explicit migration and compatibility metadata rather than silently changing the frozen `0.2.19` contract.
|