@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.
@@ -1,30 +1,30 @@
1
1
  # Framework Platform Contract
2
2
 
3
- BCP Framework `0.2.0` establishes the first explicit framework-platform baseline. The goal is to make public entrypoints, supported runtime targets, CLI capabilities and documentation metadata visible and testable instead of relying on implicit package structure.
3
+ BCP Framework `0.2.x` exposes an explicit, machine-readable application-platform contract rather than relying on private repository structure.
4
4
 
5
- > **Release state:** unreleased development target until local RC validation, tagging and npm publication complete.
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
- ## What the platform contract covers
7
+ ## Sources of truth
8
8
 
9
- The platform contract is represented by `docs/platform-manifest.json` and release/package smoke tests.
9
+ ```text
10
+ docs/platform-manifest.json
11
+ -> framework/runtime/capability/public-entrypoint contract
10
12
 
11
- It records:
13
+ docs/api-manifest.json
14
+ -> public package source/environment/documentation ownership
12
15
 
13
- - the framework version and release state,
14
- - the minimum supported Node.js runtime,
15
- - the supported production build target,
16
- - public package entrypoints,
17
- - documented CLI command families,
18
- - framework capability groups,
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
- The manifest is metadata. Framework source, package exports and tests remain authoritative for actual runtime behavior.
23
+ Framework source and tests remain authoritative for runtime behavior. The manifests make that supported surface testable during release validation.
24
24
 
25
- ## Public entrypoints
25
+ ## Frozen public entrypoints
26
26
 
27
- The `0.2.0` platform baseline recognizes these public application imports:
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 prefer these entrypoints instead of importing internal files under `packages/`.
51
+ Application code should use these entrypoints instead of private `packages/*` implementation paths.
44
52
 
45
- The release package contract smoke test verifies that the prepared npm artifact still exposes these entrypoints. Accidentally removing one from the publish manifest should fail package validation before release.
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 framework-platform CLI baseline includes:
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 remains an alias for the same CLI.
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
- The platform baseline does not yet promise native `.exe`, mobile or desktop application compilation. Those remain future build-target work rather than part of `0.2.0`.
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 for 0.2.0
88
+ ## Compatibility policy
93
89
 
94
- `0.2.0` is intended to preserve applications that already work on `0.1.29`. This milestone does not intentionally remove public entrypoints or change the current standalone runtime model.
90
+ For `0.2.19`:
95
91
 
96
- Because BCP remains pre-1.0, applications should still validate upgrades through:
97
-
98
- ```bash
99
- bcp update --check
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
- See [Migrating to 0.2.0](migration-0.2.md).
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
- ## Package consistency validation
100
+ Intentional public-platform changes should normally move to `0.3.0` with explicit compatibility metadata and migration documentation.
108
101
 
109
- The `0.2.0` release process adds a platform-contract package smoke check. It verifies the staged npm artifact rather than only source files.
102
+ ## API compatibility gate
110
103
 
111
- The check covers:
112
-
113
- 1. framework version consistency,
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
- `bcp-docs-web` should use two machine-readable files for different purposes:
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
- ```text
128
- docs/docs-web-manifest.json
129
- -> website sections, routes, source Markdown and release navigation
110
+ To intentionally regenerate the snapshot:
130
111
 
131
- docs/platform-manifest.json
132
- -> framework version, public entrypoints, runtime target and capability metadata
112
+ ```bash
113
+ npm run api:snapshot
133
114
  ```
134
115
 
135
- Do not duplicate the platform entrypoint list in application code when it can be sourced from `platform-manifest.json`.
116
+ Snapshot changes during `0.2.19` require explicit review; regeneration is not a routine fix for a failing compatibility check.
136
117
 
137
- ## Stability labels
118
+ ## Release readiness
138
119
 
139
- Documentation should distinguish:
120
+ ```bash
121
+ npm run release:readiness
122
+ npm run release:readiness:report
123
+ ```
140
124
 
141
- - **platform baseline** public surface covered by the `0.2.0` contract,
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.0` is tagged or published:
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
- The release is not considered published until both `@chidchanun/bcp@0.2.0` and `create-bcp-app@0.2.0` are visible from npm.
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.18",
4
+ "version": "0.2.19",
5
5
  "releaseState": "unreleased",
6
- "baseline": "deployment-platform-v2",
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.17",
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.18.md"
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.