@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 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.18Deployment Platform v2`
5
+ > **Development target:** `0.2.19Stability & API Freeze`
6
6
  >
7
- > `0.2.18` remains unreleased until local validation, RC checks, tagging and npm publication complete.
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
- | Background jobs | Delay, retry/backoff, cancellation and concurrent workers |
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, event bus and durable queue handoff |
27
- | Realtime | Channels/rooms, presence, broker delivery, WebSocket adapter contract, SSE and heartbeat |
28
- | Testing | Request/route/page/auth/database/middleware/jobs/workflow/outbox/realtime/SSE test harnesses |
29
- | Plugins & modules | Dependency ordering, lifecycle hooks, config parsing, service registry and async extension hooks |
30
- | Caching | Cache Platform v2 adapters, Redis-compatible cache/locks, stampede protection, TTL/tag/path invalidation and metrics |
31
- | Observability | Metrics, Prometheus, health/readiness, distributed tracing, W3C trace context and correlation IDs |
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
- | Uploads & storage | Multipart streaming, Local/S3-compatible storage and signed URLs |
34
- | Configuration | Typed config/environment validation and diagnostics |
35
- | Production | Standalone Node.js build, compiled server entrypoints, packaging, dependency pruning and Docker starter |
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
- ## Core backend entrypoints
67
+ ## Public entrypoints — frozen for 0.2.19
71
68
 
72
- ```ts
73
- import { createCacheStore } from "bcp/cache";
74
- import { db } from "bcp/database";
75
- import { createAuth } from "bcp/auth";
76
- import { createJobQueue } from "bcp/jobs";
77
- import { createWorkflow } from "bcp/workflow";
78
- import { createTransactionalOutbox } from "bcp/events";
79
- import { createRealtime } from "bcp/realtime";
80
- import { createTestApp } from "bcp/testing";
81
- import { createPluginHost } from "bcp/plugins";
82
- import { createTracer } from "bcp/observability";
83
- import { createDeploymentRuntime } from "bcp/deployment";
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
- ## Durable application infrastructure
91
+ Application code should use these public entrypoints instead of private `packages/*` implementation files.
87
92
 
88
- BCP keeps durable application state separate from transient delivery:
93
+ ## Stability & API Freeze 0.2.19
94
+
95
+ The committed freeze contract is:
89
96
 
90
97
  ```text
91
- HTTP / API
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
- Database/outbox/jobs/workflows remain durable truth. Realtime is transient delivery. Cache is an optimization layer. Tracing correlates operations without replacing state contracts.
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
- `0.2.18` adds the server-only `bcp/deployment` entrypoint.
113
-
114
- ```ts
115
- import {
116
- createDeploymentRuntime,
117
- } from "bcp/deployment";
103
+ Check compatibility:
118
104
 
119
- export const deployment =
120
- createDeploymentRuntime({
121
- serviceName: "orders-api",
122
- version: "1.0.0",
123
- });
105
+ ```bash
106
+ npm run api:check
124
107
  ```
125
108
 
126
- Register resources in dependency order:
109
+ Regenerate the snapshot only when an intentional platform-baseline change is reviewed:
127
110
 
128
- ```ts
129
- deployment.addResource({
130
- name: "database",
131
-
132
- async start() {
133
- await db.connect();
134
- },
111
+ ```bash
112
+ npm run api:snapshot
113
+ ```
135
114
 
136
- async ready() {
137
- return db.status === "ready";
138
- },
115
+ Release metadata readiness:
139
116
 
140
- async stop() {
141
- await db.close();
142
- },
143
- });
117
+ ```bash
118
+ npm run release:readiness
119
+ ```
144
120
 
145
- deployment.addResource({
146
- name: "workers",
121
+ Persist a local machine-readable report:
147
122
 
148
- start() {
149
- worker = jobs.startWorker();
150
- },
123
+ ```bash
124
+ npm run release:readiness:report
125
+ ```
151
126
 
152
- async stop() {
153
- await worker.stop();
154
- },
155
- });
127
+ Output:
156
128
 
157
- await deployment.start();
129
+ ```text
130
+ .bcp-framework/release-readiness.json
158
131
  ```
159
132
 
160
- Startup follows registration order. Shutdown runs in reverse order, so workers can stop before their database/cache/Redis dependencies close. If startup fails midway, already-started resources are rolled back in reverse order.
133
+ Read more: [Stability & API Freeze](docs/stability-api-freeze.md)
161
134
 
162
- Readiness:
135
+ ## Core backend entrypoints
163
136
 
164
137
  ```ts
165
- import {
166
- createDeploymentReadinessResponse,
167
- } from "bcp/deployment";
168
-
169
- export function GET() {
170
- return createDeploymentReadinessResponse(
171
- deployment
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
- A ready runtime returns `200`; starting, draining, failed or unhealthy runtimes return `503`.
177
-
178
- Diagnostics:
151
+ ## Deployment lifecycle
179
152
 
180
153
  ```ts
181
154
  import {
182
- createDeploymentDiagnosticsResponse,
155
+ createDeploymentRuntime,
183
156
  } from "bcp/deployment";
184
- ```
185
157
 
186
- Deployment metadata can use:
187
-
188
- ```text
189
- BCP_DEPLOYMENT_ID
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
- Signal ownership is optional:
163
+ deployment.addResource({
164
+ name: "database",
165
+ start: () => db.connect(),
166
+ ready: () => db.status === "ready",
167
+ stop: () => db.close(),
168
+ });
197
169
 
198
- ```ts
199
- const removeSignalHandlers =
200
- deployment.installSignalHandlers();
170
+ await deployment.start();
201
171
  ```
202
172
 
203
- Default signals are `SIGTERM` and `SIGINT`. BCP sets `process.exitCode` after graceful shutdown instead of immediately terminating the process.
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
- TypeScript source remains the type surface, while prepared production runtime resolution points to compiled `.mjs` files.
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 integrity metadata and a Docker starter while excluding `.env` secrets and application devDependencies.
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
- ## Documentation Platform
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.18`:
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
- `0.2.18` adds unit and prepared-package smoke coverage for deployment lifecycle ordering, startup rollback, readiness/diagnostics, runtime metadata, server-only boundaries and compiled config/auth/observability/deployment/server/middleware runtimes.
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 full RC sequence.
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.18` establishes a consistent production lifecycle and compiled server runtime boundary for the current BCP 0.2.x platform.
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
- `0.3.0` is planned as the next BCP Application Platform baseline.
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.18Deployment Platform v2`
5
+ > **Documentation target:** BCP Framework `0.2.19Stability & 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.18Deployment Platform v2
52
+ ## 0.2.19Stability & API Freeze
49
53
 
50
- `0.2.18` adds the server-only `bcp/deployment` entrypoint and completes compiled production runtime coverage for key server package surfaces.
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 APIs:
56
+ Primary stability commands:
53
57
 
54
- ```ts
55
- import {
56
- createDeploymentDiagnosticsResponse,
57
- createDeploymentReadinessResponse,
58
- createDeploymentRuntime,
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
- Runtime model:
65
+ The freeze snapshot captures:
63
66
 
64
- ```text
65
- process start
66
- |
67
- v
68
- DeploymentRuntime
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
- Prepared npm runtime targets now include compiled ESM for `bcp/config`, `bcp/auth`, `bcp/deployment`, `bcp/server` and `bcp/middleware` in addition to the server entrypoints compiled in earlier releases.
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
- | `deployment-platform-v2.md` | Runtime lifecycle, readiness, diagnostics, metadata and graceful shutdown |
92
- | `api-reference.md` | `bcp/deployment` APIs |
93
- | `platform-manifest.json` | Deployment/compiled-runtime capability flags |
94
- | `api-manifest.json` | `bcp/deployment` source/guide ownership |
95
- | `docs-web-manifest.json` | Deployment v2 navigation and `0.2.18` release route |
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. Update `docs/releases/<version>.md`.
109
- 8. Change release state only after the release workflow reaches that state.
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.18` | `releases/0.2.18.md` |
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 must match the platform public-entrypoint set exactly.
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.18`:
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
- Deployment Platform v2 validation covers resource lifecycle ordering, startup rollback, readiness/diagnostics, runtime metadata, server-only boundaries, compiled production entrypoints and docs/platform/API parity.
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.