@chidchanun/bcp 0.2.19 → 0.3.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/README.md +183 -98
- package/docs/README.md +77 -32
- package/docs/api-freeze-snapshot.json +243 -232
- package/docs/api-manifest.json +21 -13
- package/docs/api-reference.md +105 -12
- package/docs/application-platform.md +378 -0
- package/docs/docs-web-manifest.json +8 -5
- package/docs/migration-0.3.md +159 -0
- package/docs/platform-contract.md +48 -19
- package/docs/platform-manifest.json +21 -6
- package/docs/releases/0.3.0.md +129 -0
- package/docs/stability-api-freeze.md +62 -91
- package/package.json +8 -2
- package/packages/bundler/src/client-boundary.ts +1 -0
- package/packages/client/src/application.mjs +1873 -0
- package/packages/client/src/application.ts +12 -0
- package/packages/server/src/application.ts +845 -0
|
@@ -1,27 +1,12 @@
|
|
|
1
1
|
# Stability & API Freeze — 0.2.19
|
|
2
2
|
|
|
3
|
-
BCP Framework `0.2.19` is the final stabilization milestone for the `0.2.x` platform
|
|
3
|
+
BCP Framework `0.2.19` is the final stabilization milestone for the `0.2.x` platform and the compatibility point used to establish the `0.3.0` Application Platform baseline.
|
|
4
4
|
|
|
5
|
-
This release intentionally
|
|
5
|
+
This release intentionally did **not** add a new application subsystem. Its purpose was to freeze the supported public package/CLI contract, strengthen release gates and catch accidental compatibility regressions.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Historical 0.2.19 contract
|
|
8
8
|
|
|
9
|
-
The
|
|
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:
|
|
9
|
+
The `0.2.19` release froze these public package entrypoints:
|
|
25
10
|
|
|
26
11
|
```text
|
|
27
12
|
bcp
|
|
@@ -45,7 +30,37 @@ bcp/server-only
|
|
|
45
30
|
bcp/middleware
|
|
46
31
|
```
|
|
47
32
|
|
|
48
|
-
`./package.json`
|
|
33
|
+
`./package.json` was also included in the prepared npm package contract, although it is not an application API module.
|
|
34
|
+
|
|
35
|
+
The historical compatibility policy was:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
release: 0.2.19
|
|
39
|
+
previous baseline: 0.2.18
|
|
40
|
+
intentional breaking changes: false
|
|
41
|
+
freeze state: frozen
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Current snapshot file
|
|
45
|
+
|
|
46
|
+
The repository continues to use:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
docs/api-freeze-snapshot.json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
as the **current reviewed API baseline**, not as a permanently immutable copy of the `0.2.19` file.
|
|
53
|
+
|
|
54
|
+
After the Application Platform work begins, that file advances to the reviewed `0.3.0` baseline with:
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
version: 0.3.0
|
|
58
|
+
baselineVersion: 0.2.19
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
and adds `bcp/application` while preserving the `0.2.19` entrypoints.
|
|
62
|
+
|
|
63
|
+
The historical `0.2.19` release notes and this guide document why the freeze exists; the current snapshot is the contract enforced by the active release gate.
|
|
49
64
|
|
|
50
65
|
## API compatibility gate
|
|
51
66
|
|
|
@@ -59,81 +74,49 @@ The compatibility checker prepares the exact npm staging package, generates the
|
|
|
59
74
|
|
|
60
75
|
The check fails when, for example:
|
|
61
76
|
|
|
62
|
-
- a public entrypoint
|
|
63
|
-
- a CLI command changes
|
|
64
|
-
-
|
|
77
|
+
- a public entrypoint changes unexpectedly;
|
|
78
|
+
- a CLI command changes outside an intentional baseline update;
|
|
79
|
+
- a compiled runtime target drifts;
|
|
65
80
|
- a server-only browser poison target disappears;
|
|
66
81
|
- an entrypoint changes API source/environment ownership;
|
|
67
|
-
-
|
|
68
|
-
|
|
69
|
-
This prevents source metadata, prepared npm metadata and documentation metadata from drifting independently.
|
|
82
|
+
- version/baseline metadata no longer matches the committed contract.
|
|
70
83
|
|
|
71
84
|
## Snapshot regeneration
|
|
72
85
|
|
|
73
|
-
To intentionally regenerate the contract:
|
|
86
|
+
To intentionally regenerate the current contract:
|
|
74
87
|
|
|
75
88
|
```bash
|
|
76
89
|
npm run api:snapshot
|
|
77
90
|
```
|
|
78
91
|
|
|
79
|
-
|
|
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`.
|
|
92
|
+
Do not regenerate the snapshot merely to silence an unexpected compatibility failure. Snapshot updates should accompany an intentional, reviewed platform-baseline change with migration documentation and regression coverage.
|
|
86
93
|
|
|
87
|
-
|
|
94
|
+
`0.3.0` is such an intentional additive baseline update: it adds `bcp/application` and uses `0.2.19` as its previous compatibility baseline.
|
|
88
95
|
|
|
89
96
|
## Release readiness
|
|
90
97
|
|
|
91
|
-
|
|
98
|
+
The current release uses:
|
|
92
99
|
|
|
93
100
|
```bash
|
|
94
101
|
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
102
|
npm run release:readiness:report
|
|
115
103
|
```
|
|
116
104
|
|
|
117
|
-
The
|
|
105
|
+
The readiness gate evolves with the active milestone. During `0.2.19` it validated freeze metadata; for `0.3.0` it validates the Application Platform baseline, `bcp/application` ownership, package/runtime parity and the `0.2.19` previous baseline.
|
|
106
|
+
|
|
107
|
+
The optional report is written to:
|
|
118
108
|
|
|
119
109
|
```text
|
|
120
110
|
.bcp-framework/release-readiness.json
|
|
121
111
|
```
|
|
122
112
|
|
|
123
|
-
It is a local build artifact and is not the release source of truth.
|
|
124
|
-
|
|
125
113
|
## RC integration
|
|
126
114
|
|
|
127
|
-
|
|
115
|
+
The stability infrastructure remains part of every later RC:
|
|
128
116
|
|
|
129
117
|
```text
|
|
130
118
|
npm run typecheck
|
|
131
119
|
npm test
|
|
132
|
-
-> unit
|
|
133
|
-
-> integration
|
|
134
|
-
-> e2e
|
|
135
|
-
-> prepared-package smoke
|
|
136
|
-
-> Stability & API Freeze smoke
|
|
137
120
|
npm run api:check
|
|
138
121
|
npm run release:readiness
|
|
139
122
|
release metadata check
|
|
@@ -143,37 +126,25 @@ npm publish dry-run
|
|
|
143
126
|
|
|
144
127
|
`npm run rc:check` must pass on the exact commit that will be tagged.
|
|
145
128
|
|
|
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.
|
|
129
|
+
## Lifecycle stabilization retained
|
|
156
130
|
|
|
157
|
-
|
|
131
|
+
The `0.2.19` suite added explicit idempotency coverage for Deployment Platform v2:
|
|
158
132
|
|
|
159
|
-
`
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
previous baseline: 0.2.18
|
|
163
|
-
intentional breaking changes: false
|
|
164
|
-
freeze state: frozen
|
|
165
|
-
```
|
|
133
|
+
- concurrent/repeated `start()` calls start a resource once;
|
|
134
|
+
- concurrent/repeated `shutdown()` calls stop a resource once;
|
|
135
|
+
- shutdown remains reverse ordered.
|
|
166
136
|
|
|
167
|
-
|
|
137
|
+
Those regressions remain part of the unit suite after the baseline advances.
|
|
168
138
|
|
|
169
|
-
##
|
|
139
|
+
## Relationship to 0.3.0
|
|
170
140
|
|
|
171
|
-
`0.3.0
|
|
141
|
+
`0.3.0 — BCP Application Platform` follows the process established by this freeze:
|
|
172
142
|
|
|
173
|
-
1.
|
|
174
|
-
2.
|
|
175
|
-
3.
|
|
176
|
-
4.
|
|
177
|
-
5.
|
|
143
|
+
1. use `0.2.19` as the previous baseline;
|
|
144
|
+
2. add the intentional public surface (`bcp/application`);
|
|
145
|
+
3. update and review the current API snapshot;
|
|
146
|
+
4. add migration documentation;
|
|
147
|
+
5. update package/platform/docs manifests;
|
|
148
|
+
6. add unit and prepared-package regression coverage.
|
|
178
149
|
|
|
179
|
-
|
|
150
|
+
See [Application Platform](application-platform.md) and [Migrating to 0.3.0](migration-0.3.md).
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chidchanun/bcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "BCP Framework - a React full-stack
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "BCP Framework - a React full-stack application platform with routing, SSR, APIs, lifecycle composition and standalone production builds.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"bcp",
|
|
17
17
|
"react",
|
|
18
18
|
"framework",
|
|
19
|
+
"application-platform",
|
|
19
20
|
"ssr",
|
|
20
21
|
"routing",
|
|
21
22
|
"fullstack"
|
|
@@ -102,6 +103,11 @@
|
|
|
102
103
|
"browser": "./packages/client/src/server-only.browser.mjs",
|
|
103
104
|
"default": "./packages/client/src/deployment.mjs"
|
|
104
105
|
},
|
|
106
|
+
"./application": {
|
|
107
|
+
"types": "./packages/client/src/application.ts",
|
|
108
|
+
"browser": "./packages/client/src/server-only.browser.mjs",
|
|
109
|
+
"default": "./packages/client/src/application.mjs"
|
|
110
|
+
},
|
|
105
111
|
"./server": {
|
|
106
112
|
"types": "./packages/client/src/server.ts",
|
|
107
113
|
"browser": "./packages/client/src/server-only.browser.mjs",
|