@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/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
BCP Framework is a React full-stack framework for file-based routing, SSR, SPA navigation, server data loading, API routes, authentication, authorization, SQL databases, background jobs, scheduling, workflow orchestration, transactional events, realtime delivery, framework-native testing, plugin/module composition, distributed caching, observability, deployment lifecycle, uploads, storage and standalone Node.js deployment.
|
|
4
4
|
|
|
5
|
-
> **Development target:** `0.2.
|
|
5
|
+
> **Development target:** `0.2.19 — Stability & API Freeze`
|
|
6
6
|
>
|
|
7
|
-
> `0.2.
|
|
7
|
+
> `0.2.19` remains unreleased until local validation, RC checks, tagging and npm publication complete.
|
|
8
8
|
|
|
9
9
|
## Current platform
|
|
10
10
|
|
|
@@ -19,21 +19,18 @@ BCP Framework is a React full-stack framework for file-based routing, SSR, SPA n
|
|
|
19
19
|
| Security | Same-origin validation and signed CSRF tokens |
|
|
20
20
|
| Middleware | Middleware System v2 with onion execution |
|
|
21
21
|
| Database | MySQL, PostgreSQL and SQLite adapters, transactions, lifecycle and migrations |
|
|
22
|
-
|
|
|
23
|
-
| Scheduling | Interval/UTC cron schedules and scheduler leases |
|
|
24
|
-
| Durable jobs | Redis-compatible queue/schedule adapters, visibility timeout, heartbeat, stale recovery and DLQ |
|
|
22
|
+
| Jobs | Delay, retries, scheduling, Redis-compatible durable queues, heartbeat, stale recovery and DLQ |
|
|
25
23
|
| Workflows | Sequential/parallel steps, retries, persisted delays, compensation and run leases |
|
|
26
|
-
| Events | Transactional outbox, SQL persistence, dispatcher leases, retries
|
|
27
|
-
| Realtime | Channels/rooms, presence, broker delivery,
|
|
28
|
-
| Testing | Request/route/page/auth/database/middleware/jobs/workflow/outbox/realtime/SSE
|
|
29
|
-
| Plugins & modules | Dependency ordering, lifecycle hooks, config parsing,
|
|
30
|
-
| Caching |
|
|
31
|
-
| Observability |
|
|
24
|
+
| Events | Transactional outbox, SQL persistence, dispatcher leases, retries and durable queue handoff |
|
|
25
|
+
| Realtime | Channels/rooms, presence, broker delivery, socket adapter contract, SSE and heartbeat |
|
|
26
|
+
| Testing | Request/route/page/auth/database/middleware/jobs/workflow/outbox/realtime/SSE harnesses |
|
|
27
|
+
| Plugins & modules | Dependency ordering, lifecycle hooks, config parsing, shared services and async hooks |
|
|
28
|
+
| Caching | Redis-compatible adapters/locks, stampede protection, TTL/tag/path invalidation and metrics |
|
|
29
|
+
| Observability | Prometheus metrics, health/readiness, distributed tracing, W3C trace context and correlation IDs |
|
|
32
30
|
| Deployment | Resource lifecycle, readiness, diagnostics, runtime identity, signal handling and graceful shutdown |
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
| Documentation | Manifest-driven docs, platform metadata and API reference |
|
|
31
|
+
| Stability | Frozen public/CLI/package contract, compatibility gate and release-readiness report |
|
|
32
|
+
| Production | Standalone Node.js build, compiled server entrypoints, dependency pruning and Docker starter |
|
|
33
|
+
| Documentation | Manifest-driven docs, API/platform metadata and release contracts |
|
|
37
34
|
|
|
38
35
|
## Requirements
|
|
39
36
|
|
|
@@ -67,147 +64,113 @@ Generated projects normally use one framework dependency:
|
|
|
67
64
|
}
|
|
68
65
|
```
|
|
69
66
|
|
|
70
|
-
##
|
|
67
|
+
## Public entrypoints — frozen for 0.2.19
|
|
71
68
|
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
69
|
+
```text
|
|
70
|
+
bcp
|
|
71
|
+
bcp/island
|
|
72
|
+
bcp/cache
|
|
73
|
+
bcp/config
|
|
74
|
+
bcp/validation
|
|
75
|
+
bcp/error
|
|
76
|
+
bcp/database
|
|
77
|
+
bcp/auth
|
|
78
|
+
bcp/jobs
|
|
79
|
+
bcp/workflow
|
|
80
|
+
bcp/events
|
|
81
|
+
bcp/realtime
|
|
82
|
+
bcp/testing
|
|
83
|
+
bcp/plugins
|
|
84
|
+
bcp/observability
|
|
85
|
+
bcp/deployment
|
|
86
|
+
bcp/server
|
|
87
|
+
bcp/server-only
|
|
88
|
+
bcp/middleware
|
|
84
89
|
```
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
Application code should use these public entrypoints instead of private `packages/*` implementation files.
|
|
87
92
|
|
|
88
|
-
|
|
93
|
+
## Stability & API Freeze — 0.2.19
|
|
94
|
+
|
|
95
|
+
The committed freeze contract is:
|
|
89
96
|
|
|
90
97
|
```text
|
|
91
|
-
|
|
92
|
-
|
|
|
93
|
-
+-- Database
|
|
94
|
-
| +-- Transactional Outbox
|
|
95
|
-
|
|
|
96
|
-
+-- Jobs / Scheduler
|
|
97
|
-
| +-- Workflow
|
|
98
|
-
|
|
|
99
|
-
+-- Realtime
|
|
100
|
-
|
|
|
101
|
-
+-- Cache
|
|
102
|
-
|
|
|
103
|
-
+-- Observability
|
|
104
|
-
|
|
|
105
|
-
+-- Deployment lifecycle
|
|
98
|
+
docs/api-freeze-snapshot.json
|
|
106
99
|
```
|
|
107
100
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
## Deployment Platform v2 — 0.2.18
|
|
101
|
+
It locks the current public entrypoint set, CLI command set, API ownership and exact prepared npm export targets.
|
|
111
102
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```ts
|
|
115
|
-
import {
|
|
116
|
-
createDeploymentRuntime,
|
|
117
|
-
} from "bcp/deployment";
|
|
103
|
+
Check compatibility:
|
|
118
104
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
serviceName: "orders-api",
|
|
122
|
-
version: "1.0.0",
|
|
123
|
-
});
|
|
105
|
+
```bash
|
|
106
|
+
npm run api:check
|
|
124
107
|
```
|
|
125
108
|
|
|
126
|
-
|
|
109
|
+
Regenerate the snapshot only when an intentional platform-baseline change is reviewed:
|
|
127
110
|
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
async start() {
|
|
133
|
-
await db.connect();
|
|
134
|
-
},
|
|
111
|
+
```bash
|
|
112
|
+
npm run api:snapshot
|
|
113
|
+
```
|
|
135
114
|
|
|
136
|
-
|
|
137
|
-
return db.status === "ready";
|
|
138
|
-
},
|
|
115
|
+
Release metadata readiness:
|
|
139
116
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
});
|
|
117
|
+
```bash
|
|
118
|
+
npm run release:readiness
|
|
119
|
+
```
|
|
144
120
|
|
|
145
|
-
|
|
146
|
-
name: "workers",
|
|
121
|
+
Persist a local machine-readable report:
|
|
147
122
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
123
|
+
```bash
|
|
124
|
+
npm run release:readiness:report
|
|
125
|
+
```
|
|
151
126
|
|
|
152
|
-
|
|
153
|
-
await worker.stop();
|
|
154
|
-
},
|
|
155
|
-
});
|
|
127
|
+
Output:
|
|
156
128
|
|
|
157
|
-
|
|
129
|
+
```text
|
|
130
|
+
.bcp-framework/release-readiness.json
|
|
158
131
|
```
|
|
159
132
|
|
|
160
|
-
|
|
133
|
+
Read more: [Stability & API Freeze](docs/stability-api-freeze.md)
|
|
161
134
|
|
|
162
|
-
|
|
135
|
+
## Core backend entrypoints
|
|
163
136
|
|
|
164
137
|
```ts
|
|
165
|
-
import {
|
|
166
|
-
|
|
167
|
-
} from "bcp/
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
}
|
|
138
|
+
import { createCacheStore } from "bcp/cache";
|
|
139
|
+
import { db } from "bcp/database";
|
|
140
|
+
import { createAuth } from "bcp/auth";
|
|
141
|
+
import { createJobQueue } from "bcp/jobs";
|
|
142
|
+
import { createWorkflow } from "bcp/workflow";
|
|
143
|
+
import { createTransactionalOutbox } from "bcp/events";
|
|
144
|
+
import { createRealtime } from "bcp/realtime";
|
|
145
|
+
import { createTestApp } from "bcp/testing";
|
|
146
|
+
import { createPluginHost } from "bcp/plugins";
|
|
147
|
+
import { createTracer } from "bcp/observability";
|
|
148
|
+
import { createDeploymentRuntime } from "bcp/deployment";
|
|
174
149
|
```
|
|
175
150
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
Diagnostics:
|
|
151
|
+
## Deployment lifecycle
|
|
179
152
|
|
|
180
153
|
```ts
|
|
181
154
|
import {
|
|
182
|
-
|
|
155
|
+
createDeploymentRuntime,
|
|
183
156
|
} from "bcp/deployment";
|
|
184
|
-
```
|
|
185
157
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
BCP_INSTANCE_ID
|
|
191
|
-
BCP_RELEASE
|
|
192
|
-
NODE_ENV
|
|
193
|
-
BCP_SHUTDOWN_TIMEOUT_MS
|
|
194
|
-
```
|
|
158
|
+
const deployment =
|
|
159
|
+
createDeploymentRuntime({
|
|
160
|
+
serviceName: "orders-api",
|
|
161
|
+
});
|
|
195
162
|
|
|
196
|
-
|
|
163
|
+
deployment.addResource({
|
|
164
|
+
name: "database",
|
|
165
|
+
start: () => db.connect(),
|
|
166
|
+
ready: () => db.status === "ready",
|
|
167
|
+
stop: () => db.close(),
|
|
168
|
+
});
|
|
197
169
|
|
|
198
|
-
|
|
199
|
-
const removeSignalHandlers =
|
|
200
|
-
deployment.installSignalHandlers();
|
|
170
|
+
await deployment.start();
|
|
201
171
|
```
|
|
202
172
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
The runtime can also integrate with the existing framework shutdown registry:
|
|
206
|
-
|
|
207
|
-
```ts
|
|
208
|
-
const unregister =
|
|
209
|
-
deployment.registerShutdownHook();
|
|
210
|
-
```
|
|
173
|
+
Startup follows registration order. Shutdown runs in reverse order. Repeated/concurrent start while active and repeated/concurrent shutdown are covered by the `0.2.19` stability suite.
|
|
211
174
|
|
|
212
175
|
Read more: [Deployment Platform v2](docs/deployment-platform-v2.md)
|
|
213
176
|
|
|
@@ -232,94 +195,7 @@ bcp/server -> server.mjs
|
|
|
232
195
|
bcp/middleware -> middleware.mjs
|
|
233
196
|
```
|
|
234
197
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
## Observability Platform v3 — 0.2.17
|
|
238
|
-
|
|
239
|
-
```ts
|
|
240
|
-
import {
|
|
241
|
-
createTracer,
|
|
242
|
-
} from "bcp/observability";
|
|
243
|
-
|
|
244
|
-
export const tracer =
|
|
245
|
-
createTracer({
|
|
246
|
-
serviceName: "orders-api",
|
|
247
|
-
});
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
`bcp/observability` supports root/child spans, AsyncLocalStorage context, W3C `traceparent`, correlation IDs, request tracing, trace carriers, memory/composite exporters and trace-to-Prometheus metrics.
|
|
251
|
-
|
|
252
|
-
Read more: [Observability Platform v3](docs/observability-v3.md)
|
|
253
|
-
|
|
254
|
-
## Cache Platform v2 — 0.2.16
|
|
255
|
-
|
|
256
|
-
```ts
|
|
257
|
-
import {
|
|
258
|
-
createCacheStore,
|
|
259
|
-
createRedisCacheAdapter,
|
|
260
|
-
createRedisCacheLockAdapter,
|
|
261
|
-
} from "bcp/cache";
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
Cache Store v2 supports local singleflight, distributed cache-fill leases, heartbeat renewal, TTL, tag/path invalidation and cache metrics while keeping the original `cache()` / `dedupe()` APIs available.
|
|
265
|
-
|
|
266
|
-
Read more: [Cache Platform v2](docs/cache-platform-v2.md)
|
|
267
|
-
|
|
268
|
-
## Plugin & Module Platform — 0.2.15
|
|
269
|
-
|
|
270
|
-
`bcp/plugins` supports dependency ordering, setup/start/stop/dispose lifecycle, modules, config parsing, shared services and async hooks.
|
|
271
|
-
|
|
272
|
-
Read more: [Plugin & Module Platform](docs/plugin-module-platform.md)
|
|
273
|
-
|
|
274
|
-
## Testing Platform — 0.2.14
|
|
275
|
-
|
|
276
|
-
`bcp/testing` provides runner-neutral request/route/page/auth/database/middleware/jobs/workflow/outbox/realtime/SSE test helpers.
|
|
277
|
-
|
|
278
|
-
Read more: [Testing Platform](docs/testing-platform.md)
|
|
279
|
-
|
|
280
|
-
## Realtime Platform — 0.2.13
|
|
281
|
-
|
|
282
|
-
`bcp/realtime` provides channels/rooms, presence, broker delivery, provider-neutral socket adapters, SSE and heartbeat handling.
|
|
283
|
-
|
|
284
|
-
Read more: [Realtime Platform](docs/realtime-platform.md)
|
|
285
|
-
|
|
286
|
-
## Transactional Outbox & Events — 0.2.12
|
|
287
|
-
|
|
288
|
-
Use `bcp/events` to persist integration events in the same SQL transaction as business data, then dispatch after commit through durable jobs or custom publishers.
|
|
289
|
-
|
|
290
|
-
Read more: [Transactional Outbox & Events](docs/transactional-outbox-events.md)
|
|
291
|
-
|
|
292
|
-
## Workflow Orchestration — 0.2.11
|
|
293
|
-
|
|
294
|
-
`bcp/workflow` supports sequential/parallel steps, retries, persisted delays, run leases, compensation and optional durable queue execution.
|
|
295
|
-
|
|
296
|
-
Read more: [Workflow Orchestration](docs/workflow-orchestration.md)
|
|
297
|
-
|
|
298
|
-
## Public entrypoints
|
|
299
|
-
|
|
300
|
-
```text
|
|
301
|
-
bcp
|
|
302
|
-
bcp/island
|
|
303
|
-
bcp/cache
|
|
304
|
-
bcp/config
|
|
305
|
-
bcp/validation
|
|
306
|
-
bcp/error
|
|
307
|
-
bcp/database
|
|
308
|
-
bcp/auth
|
|
309
|
-
bcp/jobs
|
|
310
|
-
bcp/workflow
|
|
311
|
-
bcp/events
|
|
312
|
-
bcp/realtime
|
|
313
|
-
bcp/testing
|
|
314
|
-
bcp/plugins
|
|
315
|
-
bcp/observability
|
|
316
|
-
bcp/deployment
|
|
317
|
-
bcp/server
|
|
318
|
-
bcp/server-only
|
|
319
|
-
bcp/middleware
|
|
320
|
-
```
|
|
321
|
-
|
|
322
|
-
Application code should use public entrypoints instead of private `packages/*` implementation files.
|
|
198
|
+
The exact prepared export map is now part of the API freeze contract.
|
|
323
199
|
|
|
324
200
|
## CLI
|
|
325
201
|
|
|
@@ -356,34 +232,25 @@ bcp generate migration create_users
|
|
|
356
232
|
|
|
357
233
|
## Packaging
|
|
358
234
|
|
|
359
|
-
Build and run directly:
|
|
360
|
-
|
|
361
235
|
```bash
|
|
362
236
|
npm run build
|
|
363
|
-
npm start
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
Create a standalone deployment package:
|
|
367
|
-
|
|
368
|
-
```bash
|
|
369
237
|
bcp package
|
|
370
238
|
```
|
|
371
239
|
|
|
372
|
-
Application packages include production dependency manifests, deployment/environment metadata, file
|
|
240
|
+
Application packages include production dependency manifests, deployment/environment metadata, file-integrity metadata and a Docker starter while excluding `.env` secrets and application devDependencies.
|
|
373
241
|
|
|
374
|
-
##
|
|
375
|
-
|
|
376
|
-
Machine-readable contracts:
|
|
242
|
+
## Machine-readable contracts
|
|
377
243
|
|
|
378
244
|
```text
|
|
379
245
|
docs/platform-manifest.json
|
|
380
246
|
docs/docs-web-manifest.json
|
|
381
247
|
docs/api-manifest.json
|
|
248
|
+
docs/api-freeze-snapshot.json
|
|
382
249
|
```
|
|
383
250
|
|
|
384
251
|
## Release validation
|
|
385
252
|
|
|
386
|
-
Before publishing `0.2.
|
|
253
|
+
Before publishing `0.2.19`:
|
|
387
254
|
|
|
388
255
|
```bash
|
|
389
256
|
npm run typecheck
|
|
@@ -391,12 +258,14 @@ npm run test:unit
|
|
|
391
258
|
npm run test:integration
|
|
392
259
|
npm run test:e2e
|
|
393
260
|
npm run test:package
|
|
261
|
+
npm run api:check
|
|
262
|
+
npm run release:readiness
|
|
394
263
|
npm run rc:check
|
|
395
264
|
```
|
|
396
265
|
|
|
397
|
-
`
|
|
266
|
+
`release:check` now runs the full tests, API compatibility gate, release-readiness gate and release metadata validation.
|
|
398
267
|
|
|
399
|
-
Do not tag or publish until the exact final release commit passes the
|
|
268
|
+
Do not tag or publish until the exact final release commit passes the complete RC sequence.
|
|
400
269
|
|
|
401
270
|
## Release history
|
|
402
271
|
|
|
@@ -427,14 +296,13 @@ Do not tag or publish until the exact final release commit passes the full RC se
|
|
|
427
296
|
| `0.2.16` | Cache Platform v2 |
|
|
428
297
|
| `0.2.17` | Observability Platform v3 |
|
|
429
298
|
| `0.2.18` | Deployment Platform v2 |
|
|
299
|
+
| `0.2.19` | Stability & API Freeze |
|
|
430
300
|
|
|
431
301
|
## Roadmap
|
|
432
302
|
|
|
433
|
-
`0.2.
|
|
434
|
-
|
|
435
|
-
The next milestone is **`0.2.19 — Stability & API Freeze`**, focused on final API consistency, deprecation policy, performance/regression hardening, migration diagnostics and release-quality compatibility before `0.3.0`.
|
|
303
|
+
`0.2.19` freezes the supported `0.2.x` application/runtime contract and becomes the compatibility reference for the next platform generation.
|
|
436
304
|
|
|
437
|
-
|
|
305
|
+
The next planned milestone is **`0.3.0 — BCP Application Platform`**. Intentional public API changes should be made there with explicit migration documentation and compatibility metadata.
|
|
438
306
|
|
|
439
307
|
Native desktop/mobile compilation remains later roadmap work.
|
|
440
308
|
|
package/docs/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The `docs/` directory is the documentation source of truth for BCP Framework and is organized for **`bcp-docs-web`**.
|
|
4
4
|
|
|
5
|
-
> **Documentation target:** BCP Framework `0.2.
|
|
5
|
+
> **Documentation target:** BCP Framework `0.2.19 — Stability & API Freeze`
|
|
6
6
|
>
|
|
7
7
|
> **Release state:** unreleased development target until RC validation, tagging and npm publication complete.
|
|
8
8
|
|
|
@@ -17,6 +17,9 @@ docs/platform-manifest.json
|
|
|
17
17
|
|
|
18
18
|
docs/api-manifest.json
|
|
19
19
|
-> public package entrypoints, source ownership and guide mapping
|
|
20
|
+
|
|
21
|
+
docs/api-freeze-snapshot.json
|
|
22
|
+
-> frozen public/CLI/prepared-package compatibility contract
|
|
20
23
|
```
|
|
21
24
|
|
|
22
25
|
Framework source and tests remain authoritative for runtime behavior.
|
|
@@ -44,56 +47,41 @@ Framework source and tests remain authoritative for runtime behavior.
|
|
|
44
47
|
| `0.2.16` | Cache Platform v2 |
|
|
45
48
|
| `0.2.17` | Observability Platform v3 |
|
|
46
49
|
| `0.2.18` | Deployment Platform v2 |
|
|
50
|
+
| `0.2.19` | Stability & API Freeze |
|
|
47
51
|
|
|
48
|
-
## 0.2.
|
|
52
|
+
## 0.2.19 — Stability & API Freeze
|
|
49
53
|
|
|
50
|
-
`0.2.
|
|
54
|
+
`0.2.19` freezes the supported `0.2.x` public package and CLI contract without adding a new application subsystem.
|
|
51
55
|
|
|
52
|
-
Primary
|
|
56
|
+
Primary stability commands:
|
|
53
57
|
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
} from "bcp/deployment";
|
|
58
|
+
```bash
|
|
59
|
+
npm run api:check
|
|
60
|
+
npm run api:snapshot
|
|
61
|
+
npm run release:readiness
|
|
62
|
+
npm run release:readiness:report
|
|
60
63
|
```
|
|
61
64
|
|
|
62
|
-
|
|
65
|
+
The freeze snapshot captures:
|
|
63
66
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
+-- resource start order
|
|
71
|
-
+-- readiness checks
|
|
72
|
-
+-- diagnostics
|
|
73
|
-
+-- deployment metadata
|
|
74
|
-
+-- SIGTERM / SIGINT
|
|
75
|
-
|
|
|
76
|
-
v
|
|
77
|
-
state = ready
|
|
78
|
-
|
|
|
79
|
-
shutdown/drain
|
|
80
|
-
|
|
|
81
|
-
v
|
|
82
|
-
reverse-order resource stop
|
|
83
|
-
```
|
|
67
|
+
- public `bcp/*` entrypoints;
|
|
68
|
+
- CLI command names;
|
|
69
|
+
- prepared npm export targets;
|
|
70
|
+
- browser poison boundaries;
|
|
71
|
+
- API source/environment ownership;
|
|
72
|
+
- compatibility with `0.2.18`.
|
|
84
73
|
|
|
85
|
-
|
|
74
|
+
`npm run api:check` prepares the exact npm staging package and rejects drift from the committed snapshot.
|
|
86
75
|
|
|
87
76
|
New/updated sources:
|
|
88
77
|
|
|
89
78
|
| Source | Purpose |
|
|
90
79
|
| --- | --- |
|
|
91
|
-
| `
|
|
92
|
-
| `api-
|
|
93
|
-
| `platform-manifest.json` |
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `releases/0.2.18.md` | Deployment Platform v2 release notes |
|
|
80
|
+
| `stability-api-freeze.md` | Freeze policy, compatibility checks and release readiness |
|
|
81
|
+
| `api-freeze-snapshot.json` | Frozen public/CLI/package contract |
|
|
82
|
+
| `platform-manifest.json` | Stability capability flags and `0.2.18` compatibility baseline |
|
|
83
|
+
| `docs-web-manifest.json` | Stability guide and `0.2.19` release route |
|
|
84
|
+
| `releases/0.2.19.md` | Stability & API Freeze release notes |
|
|
97
85
|
|
|
98
86
|
## Update rule
|
|
99
87
|
|
|
@@ -105,13 +93,15 @@ When framework behavior or public surface changes:
|
|
|
105
93
|
4. Update `platform-manifest.json` for runtime/public-entrypoint/capability changes.
|
|
106
94
|
5. Update `api-manifest.json` for public API ownership/guide changes.
|
|
107
95
|
6. Update `docs-web-manifest.json` for website route/navigation changes.
|
|
108
|
-
7.
|
|
109
|
-
8.
|
|
96
|
+
7. Review `api-freeze-snapshot.json`; do not regenerate it casually during `0.2.19`.
|
|
97
|
+
8. Update `docs/releases/<version>.md`.
|
|
98
|
+
9. Change release state only after the release workflow reaches that state.
|
|
110
99
|
|
|
111
100
|
## Important docs-web routes
|
|
112
101
|
|
|
113
102
|
| Website route | Markdown source |
|
|
114
103
|
| --- | --- |
|
|
104
|
+
| `/docs/stability-api-freeze` | `stability-api-freeze.md` |
|
|
115
105
|
| `/docs/observability-v3` | `observability-v3.md` |
|
|
116
106
|
| `/docs/deployment-platform-v2` | `deployment-platform-v2.md` |
|
|
117
107
|
| `/docs/durable-jobs` | `durable-jobs.md` |
|
|
@@ -122,7 +112,7 @@ When framework behavior or public surface changes:
|
|
|
122
112
|
| `/docs/plugin-module-platform` | `plugin-module-platform.md` |
|
|
123
113
|
| `/docs/cache-platform-v2` | `cache-platform-v2.md` |
|
|
124
114
|
| `/docs/api-reference` | `api-reference.md` |
|
|
125
|
-
| `/releases/0.2.
|
|
115
|
+
| `/releases/0.2.19` | `releases/0.2.19.md` |
|
|
126
116
|
|
|
127
117
|
Every route/source pair is validated by unit tests.
|
|
128
118
|
|
|
@@ -150,11 +140,11 @@ bcp/server-only
|
|
|
150
140
|
bcp/middleware
|
|
151
141
|
```
|
|
152
142
|
|
|
153
|
-
The API-manifest entrypoint set
|
|
143
|
+
The API-manifest entrypoint set, platform public-entrypoint set and freeze snapshot must remain aligned.
|
|
154
144
|
|
|
155
145
|
## Release validation
|
|
156
146
|
|
|
157
|
-
Before publishing `0.2.
|
|
147
|
+
Before publishing `0.2.19`:
|
|
158
148
|
|
|
159
149
|
```bash
|
|
160
150
|
npm run typecheck
|
|
@@ -162,9 +152,11 @@ npm run test:unit
|
|
|
162
152
|
npm run test:integration
|
|
163
153
|
npm run test:e2e
|
|
164
154
|
npm run test:package
|
|
155
|
+
npm run api:check
|
|
156
|
+
npm run release:readiness
|
|
165
157
|
npm run rc:check
|
|
166
158
|
```
|
|
167
159
|
|
|
168
|
-
|
|
160
|
+
Stability validation covers public/CLI/export parity, prepared-package browser/runtime boundaries, release metadata and deployment lifecycle idempotency in addition to all existing subsystem suites.
|
|
169
161
|
|
|
170
162
|
The final release tag must point to the exact commit that passed the complete RC sequence.
|