@chidchanun/bcp 0.1.28 → 0.2.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/docs/README.md CHANGED
@@ -1,34 +1,80 @@
1
1
  # BCP Framework Documentation Source
2
2
 
3
- The `docs/` directory is the documentation source of truth for BCP Framework and is intentionally organized for the **`bcp-docs-web`** website.
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.1.28`
5
+ > **Documentation target:** BCP Framework `0.2.0`
6
6
  >
7
- > **Release state:** unreleased development target. Do not label `0.1.28` as published until RC validation and npm publication complete.
7
+ > **Release state:** unreleased development target. Do not label `0.2.0` as published until RC validation, tagging and npm publication complete.
8
8
 
9
- ## Documentation flow
9
+ ## Documentation architecture
10
+
11
+ BCP `0.2.0` uses two machine-readable manifests:
12
+
13
+ ```text
14
+ docs/docs-web-manifest.json
15
+ -> website navigation, routes, Markdown sources and release pages
16
+
17
+ docs/platform-manifest.json
18
+ -> framework version, runtime target, public entrypoints and capability metadata
19
+ ```
20
+
21
+ Markdown files under `docs/` remain the authored content source.
22
+
23
+ Recommended flow:
10
24
 
11
25
  ```text
12
- BCP Framework source/tests
26
+ framework source/tests
13
27
 
14
28
  docs/
29
+ ├─ Markdown content
30
+ ├─ docs-web-manifest.json
31
+ └─ platform-manifest.json
15
32
 
16
- bcp-docs-web
33
+ bcp-docs-web
17
34
  ```
18
35
 
19
- Framework source and tests are authoritative for behavior. Markdown under `docs/` is the authored documentation layer. `bcp-docs-web` should render, organize and search these sources instead of becoming a competing source of truth.
36
+ Framework source and tests remain authoritative for runtime behavior.
37
+
38
+ ## 0.2.0 Framework Platform baseline
39
+
40
+ `0.2.0` establishes an explicit compatibility/platform contract rather than introducing a new runtime architecture.
41
+
42
+ New platform documents:
43
+
44
+ | Source | Purpose |
45
+ | --- | --- |
46
+ | `platform-manifest.json` | Machine-readable platform/version/public-entrypoint metadata |
47
+ | `platform-contract.md` | Human-readable public platform contract |
48
+ | `migration-0.2.md` | Upgrade guide from the `0.1.x` baseline |
49
+ | `releases/0.2.0.md` | Release notes for the milestone |
50
+
51
+ Compatibility intent from `0.1.29`:
52
+
53
+ ```text
54
+ intentional public-entrypoint removals: none
55
+ standalone runtime model change: none
56
+ supported production build target: standalone-node
57
+ ```
58
+
59
+ BCP remains pre-1.0, so application upgrades should still be validated before production deployment.
20
60
 
21
61
  ## Update rule
22
62
 
23
- When framework behavior changes:
63
+ When framework behavior or public surface changes:
24
64
 
25
65
  1. Update framework source.
26
66
  2. Add/update regression tests.
27
- 3. Update the matching file under `docs/`.
28
- 4. Update `docs/releases/<version>.md`.
29
- 5. Change release state to published only after npm publication succeeds.
67
+ 3. Update the matching Markdown guide.
68
+ 4. Update `platform-manifest.json` when public entrypoints/runtime/capability metadata changes.
69
+ 5. Update `docs-web-manifest.json` when website navigation/routes change.
70
+ 6. Update `docs/releases/<version>.md`.
71
+ 7. Change release state to published only after npm publication succeeds.
72
+
73
+ ## Current docs-web navigation
74
+
75
+ `docs/docs-web-manifest.json` is the authoritative ordered navigation contract.
30
76
 
31
- ## Recommended `bcp-docs-web` navigation
77
+ Current sections:
32
78
 
33
79
  ```text
34
80
  Getting Started
@@ -37,89 +83,131 @@ Authentication
37
83
  Database
38
84
  Runtime & Infrastructure
39
85
  Storage & Uploads
40
- API Reference
86
+ Developer Experience
87
+ Platform & Compatibility
41
88
  Releases
42
89
  ```
43
90
 
44
91
  ### Getting Started
45
92
 
46
- | Website route | Markdown source | Purpose |
47
- | --- | --- | --- |
48
- | `/docs/getting-started` | `getting-started.md` | Create and run a BCP application |
49
- | `/docs/configuration` | `configuration.md` | Framework configuration/environment |
50
- | `/docs/application-modules` | `application-modules.md` | Client/server boundaries |
51
- | `/docs/deployment` | `deployment.md` | Standalone production deployment |
52
- | `/docs/updating` | `updating.md` | Framework upgrades |
93
+ | Website route | Markdown source |
94
+ | --- | --- |
95
+ | `/docs/getting-started` | `getting-started.md` |
96
+ | `/docs/configuration` | `configuration.md` |
97
+ | `/docs/application-modules` | `application-modules.md` |
98
+ | `/docs/project-metadata` | `project-metadata.md` |
99
+ | `/docs/deployment` | `deployment.md` |
100
+ | `/docs/updating` | `updating.md` |
53
101
 
54
102
  ### Routing & Data
55
103
 
56
- | Website route | Markdown source | Purpose |
57
- | --- | --- | --- |
58
- | `/docs/routing` | `routing.md` | File-based page/API routing |
59
- | `/docs/server-data-loaders` | `server-data-loaders.md` | Server-side page data |
60
- | `/docs/route-guards` | `route-guards.md` | Scoped route authorization |
61
- | `/docs/form-actions` | `form-actions.md` | Server mutations/forms |
62
- | `/docs/server-request-apis` | `server-request-apis.md` | Request/cookie/response APIs |
63
- | `/docs/validation` | `validation.md` | Typed validation |
64
- | `/docs/error-handling` | `error-handling.md` | Structured HTTP errors |
104
+ | Website route | Markdown source |
105
+ | --- | --- |
106
+ | `/docs/routing` | `routing.md` |
107
+ | `/docs/server-data-loaders` | `server-data-loaders.md` |
108
+ | `/docs/route-guards` | `route-guards.md` |
109
+ | `/docs/form-actions` | `form-actions.md` |
110
+ | `/docs/server-request-apis` | `server-request-apis.md` |
111
+ | `/docs/validation` | `validation.md` |
112
+ | `/docs/error-handling` | `error-handling.md` |
65
113
 
66
114
  ### Authentication
67
115
 
68
- | Website route | Markdown source | Purpose |
69
- | --- | --- | --- |
70
- | `/docs/authentication` | `authentication.md` | Authentication Core |
71
- | `/docs/auth-route-guards` | `auth-route-guards.md` | Auth-aware route guards |
72
- | `/docs/session-auth` | `session-auth.md` | JWT cookie sessions |
116
+ | Website route | Markdown source |
117
+ | --- | --- |
118
+ | `/docs/authentication` | `authentication.md` |
119
+ | `/docs/auth-route-guards` | `auth-route-guards.md` |
120
+ | `/docs/session-auth` | `session-auth.md` |
73
121
 
74
122
  ### Database
75
123
 
76
- | Website route | Markdown source | Purpose |
77
- | --- | --- | --- |
78
- | `/docs/database` | `database.md` | MySQL database primitives |
79
- | `/docs/database-migrations` | `database-migrations.md` | Migration CLI/files |
124
+ | Website route | Markdown source |
125
+ | --- | --- |
126
+ | `/docs/database` | `database.md` |
127
+ | `/docs/database-migrations` | `database-migrations.md` |
80
128
 
81
129
  ### Runtime & Infrastructure
82
130
 
83
- | Website route | Markdown source | Purpose |
84
- | --- | --- | --- |
85
- | `/docs/middleware` | `middleware.md` | Middleware System v2 |
86
- | `/docs/hydration` | `hydration.md` | SSR/client hydration parity |
87
- | `/docs/developer-tools` | `developer-tools.md` | `doctor` / `inspect` |
88
- | `/docs/development-logging` | `development-logging.md` | Logging/observability |
89
- | `/docs/caching` | `caching.md` | Cache/revalidation |
90
- | `/docs/security` | `security.md` | Security/body limits |
91
- | `/docs/production-hardening` | `production-hardening.md` | Graceful shutdown, trusted proxy and production timeouts |
131
+ | Website route | Markdown source |
132
+ | --- | --- |
133
+ | `/docs/middleware` | `middleware.md` |
134
+ | `/docs/hydration` | `hydration.md` |
135
+ | `/docs/development-logging` | `development-logging.md` |
136
+ | `/docs/caching` | `caching.md` |
137
+ | `/docs/security` | `security.md` |
138
+ | `/docs/production-hardening` | `production-hardening.md` |
92
139
 
93
140
  ### Storage & Uploads
94
141
 
95
- | Website route | Markdown source | Purpose |
96
- | --- | --- | --- |
97
- | `/docs/file-upload` | `file-upload.md` | Buffered + streaming multipart uploads |
98
- | `/docs/storage` | `storage.md` | StorageAdapter, streaming and file delivery |
99
- | `/docs/storage-ecosystem` | `storage-ecosystem.md` | Listing, copy/move, metadata, bulk delete, signed URLs |
100
- | `/docs/s3-storage` | `s3-storage.md` | S3/R2/MinIO adapter and direct object access |
142
+ | Website route | Markdown source |
143
+ | --- | --- |
144
+ | `/docs/file-upload` | `file-upload.md` |
145
+ | `/docs/storage` | `storage.md` |
146
+ | `/docs/storage-ecosystem` | `storage-ecosystem.md` |
147
+ | `/docs/s3-storage` | `s3-storage.md` |
101
148
 
102
- ## API Reference ownership
149
+ ### Developer Experience
150
+
151
+ | Website route | Markdown source |
152
+ | --- | --- |
153
+ | `/docs/generators` | `generators.md` |
154
+ | `/docs/developer-tools` | `developer-tools.md` |
155
+
156
+ ### Platform & Compatibility
157
+
158
+ | Website route | Markdown source |
159
+ | --- | --- |
160
+ | `/docs/platform-contract` | `platform-contract.md` |
161
+ | `/docs/migration-0.2` | `migration-0.2.md` |
162
+
163
+ ## Platform manifest
164
+
165
+ `docs/platform-manifest.json` is intended for tooling and `bcp-docs-web` metadata displays.
166
+
167
+ It records:
168
+
169
+ ```text
170
+ schema version
171
+ framework/version/release state
172
+ Node/React/runtime baseline
173
+ production build target
174
+ public package entrypoints
175
+ CLI command families
176
+ capability groups
177
+ storage-provider families
178
+ previous-baseline compatibility intent
179
+ documentation contract files
180
+ ```
103
181
 
104
- Recommended entrypoint groups:
182
+ Do not treat the manifest as executable runtime configuration. It describes the supported platform surface; framework source/tests remain authoritative.
183
+
184
+ ## Public entrypoint baseline
185
+
186
+ The `0.2.0` platform recognizes:
105
187
 
106
188
  ```text
107
189
  bcp
108
- bcp/server
109
- bcp/auth
110
- bcp/database
111
- bcp/validation
112
- bcp/error
190
+ bcp/island
113
191
  bcp/cache
114
192
  bcp/config
193
+ bcp/validation
194
+ bcp/error
195
+ bcp/database
196
+ bcp/auth
197
+ bcp/server
198
+ bcp/server-only
115
199
  bcp/middleware
116
200
  ```
117
201
 
118
- | Entrypoint | Primary guide |
202
+ `bcp-docs-web` can use this list to build an API-reference index without hard-coding a second entrypoint list.
203
+
204
+ ## API guide ownership
205
+
206
+ | Entrypoint | Primary guides |
119
207
  | --- | --- |
120
208
  | `bcp` | `routing.md`, `server-data-loaders.md`, `form-actions.md` |
121
- | `bcp/server` | `server-request-apis.md`, `file-upload.md`, `storage.md`, `storage-ecosystem.md`, `s3-storage.md`, `development-logging.md`, `production-hardening.md` |
122
- | `bcp/auth` | `authentication.md`, `auth-route-guards.md` |
209
+ | `bcp/server` | `server-request-apis.md`, `file-upload.md`, `storage.md`, `storage-ecosystem.md`, `production-hardening.md` |
210
+ | `bcp/auth` | `authentication.md`, `auth-route-guards.md`, `session-auth.md` |
123
211
  | `bcp/database` | `database.md`, `database-migrations.md` |
124
212
  | `bcp/validation` | `validation.md` |
125
213
  | `bcp/error` | `error-handling.md` |
@@ -133,163 +221,92 @@ bcp/middleware
133
221
 
134
222
  - React SSR/hydration
135
223
  - file-based page/API routing
136
- - static/dynamic/catch-all/optional-catch-all routes
137
- - route groups/layouts/metadata
224
+ - dynamic/catch-all/optional catch-all routes
225
+ - layouts/metadata/route groups
138
226
  - SPA navigation
139
227
  - loaders/guards/form actions
140
228
  - client islands / partial hydration
141
- - Fast Refresh
142
229
 
143
- ### Server and production runtime
230
+ ### Server/runtime
144
231
 
145
- - request-scoped APIs/cookies/redirects/request IDs
146
- - JWT sessions/authentication
232
+ - request-scoped server APIs
233
+ - JWT cookie sessions
147
234
  - Middleware System v2
148
- - validation/structured errors
149
- - structured logging
150
- - response caching/security gateway
151
- - production hardening gateway
152
- - configurable request/header/keep-alive/shutdown timeouts
153
- - `SIGTERM` / `SIGINT` graceful shutdown
154
- - application shutdown hooks
155
- - trusted-proxy forwarding-header controls
156
-
157
- ### Storage & Uploads
158
-
159
- - buffered multipart `FormData` upload APIs
160
- - production streaming multipart upload (`storeMultipartFile()`)
161
- - backward-compatible `StorageAdapter` contract
162
- - local filesystem storage
163
- - S3/R2/MinIO-compatible storage
164
- - streaming reads/writes and byte ranges
165
- - ETag/Last-Modified file delivery
166
- - upload/storage limits and abort cleanup
167
- - object listing with cursors
168
- - native/fallback copy and move
169
- - portable user metadata
170
- - bulk deletion
171
- - S3 presigned read/write URLs
172
- - create-app Local Server / Amazon S3 / Cloudflare R2 presets
235
+ - validation and structured HTTP errors
236
+ - structured logging/request IDs
237
+ - response caching/revalidation
238
+ - production hardening/timeouts
239
+ - graceful shutdown and shutdown hooks
240
+ - trusted-proxy controls
173
241
 
174
242
  ### Database
175
243
 
176
- - `bcp/database`
177
- - lazy MySQL pool
178
- - prepared execution/query helpers
244
+ - MySQL framework primitives
245
+ - prepared query/execute helpers
179
246
  - transactions
180
247
  - migrations/status/rollback
181
248
 
249
+ ### Storage & uploads
250
+
251
+ - buffered multipart APIs
252
+ - streaming multipart upload
253
+ - local filesystem storage
254
+ - Amazon S3 / Cloudflare R2 / S3-compatible storage
255
+ - streaming reads/writes and byte ranges
256
+ - list/copy/move
257
+ - portable metadata
258
+ - bulk delete
259
+ - S3 signed read/write URLs
260
+
182
261
  ### Developer Experience
183
262
 
184
263
  - `create-bcp-app`
185
- - `bcp update`
186
- - `bcp doctor`
187
- - `bcp inspect`
264
+ - Local / Amazon S3 / Cloudflare R2 storage presets
265
+ - non-secret `bcp.project.json`
266
+ - page/API/middleware/migration generators
267
+ - Doctor/Inspect v2
268
+ - framework updater
188
269
  - Windows-safe `bcp-framework` alias
189
- - standalone production build
190
- - unit/integration/E2E/package/RC checks
191
-
192
- ## BCP 0.1.28 documentation focus
193
270
 
194
- ### Production hardening
271
+ ## Build/runtime baseline
195
272
 
196
- Public cleanup API:
197
-
198
- ```ts
199
- import {
200
- getProductionHardeningConfig,
201
- registerShutdownHook,
202
- } from "bcp/server";
203
- ```
204
-
205
- Production environment controls:
206
-
207
- ```dotenv
208
- BCP_REQUEST_TIMEOUT_MS=120000
209
- BCP_HEADERS_TIMEOUT_MS=66000
210
- BCP_KEEP_ALIVE_TIMEOUT_MS=65000
211
- BCP_SHUTDOWN_TIMEOUT_MS=10000
212
- BCP_TRUST_PROXY=false
213
- ```
214
-
215
- Document these boundaries clearly:
216
-
217
- - trusted proxy mode is off by default,
218
- - forwarding headers are sanitized when trust is disabled,
219
- - enable trust only behind a trusted reverse proxy/load balancer,
220
- - Docker/process-manager `SIGTERM` triggers graceful shutdown,
221
- - shutdown hooks are process-lifetime resource cleanup, not request cleanup,
222
- - shutdown force-closes remaining public connections after the configured timeout.
223
-
224
- See `production-hardening.md`.
225
-
226
- ### Local Server generator fix
227
-
228
- `create-bcp-app --storage local` now generates:
273
+ Supported `0.2.0` production target:
229
274
 
230
275
  ```text
231
- lib/storage.ts
232
- storage/
233
- ├─ .gitkeep
234
- └─ README.md
235
- ```
236
-
237
- Runtime objects remain ignored while the scaffold stays visible/tracked.
238
-
239
- ### 0.1.27 storage ecosystem remains supported
240
-
241
- The storage ecosystem continues to include listing, copy/move, portable metadata, bulk deletion and S3 signed URLs. `0.1.28` hardens deployment/runtime behavior rather than replacing those APIs.
242
-
243
- ## CLI commands
244
-
245
- ```bash
246
- bcp dev
247
- bcp routes
248
- bcp build
249
- bcp start
250
- bcp doctor
251
- bcp doctor --json
252
- bcp inspect
253
- bcp inspect --json
254
- bcp update
255
- bcp version
256
-
257
- bcp db create create_users
258
- bcp db migrate
259
- bcp db status
260
- bcp db rollback
276
+ standalone-node
261
277
  ```
262
278
 
263
- On Windows, direct project-local commands should prefer:
279
+ Build output:
264
280
 
265
- ```powershell
266
- npm exec -- bcp-framework doctor
267
- npm exec -- bcp-framework inspect
268
- npm exec -- bcp-framework dev
269
- npm exec -- bcp-framework build
281
+ ```text
282
+ .bcp-framework/build/
283
+ ├─ client/
284
+ ├─ public/
285
+ └─ server/
286
+ └─ server.mjs
270
287
  ```
271
288
 
272
- Inside npm scripts, `bcp` is safe because npm prepends `node_modules/.bin` to `PATH`.
289
+ Native executable, desktop and mobile compilation are not part of the `0.2.0` platform contract.
273
290
 
274
291
  ## Releases
275
292
 
276
- Release notes live under:
293
+ Release notes live in:
277
294
 
278
295
  ```text
279
296
  docs/releases/
280
297
  ```
281
298
 
282
- Recommended routes:
299
+ Current manifest routes begin with:
283
300
 
284
301
  ```text
302
+ /releases/0.2.0
303
+ /releases/0.1.29
285
304
  /releases/0.1.28
286
305
  /releases/0.1.27
287
306
  /releases/0.1.26
288
- /releases/0.1.25
289
- /releases/0.1.24
290
307
  ```
291
308
 
292
- Use one of these release states:
309
+ Use release states consistently:
293
310
 
294
311
  ```text
295
312
  published
@@ -297,97 +314,96 @@ release candidate
297
314
  unreleased development target
298
315
  ```
299
316
 
300
- The existence of a release note alone does not mean the npm version is published.
301
-
302
- ## Suggested website model
303
-
304
- ```ts
305
- interface DocPage {
306
- title: string;
307
- slug: string;
308
- section: string;
309
- sourceFile: string;
310
- versionTarget?: string;
311
- releaseState?:
312
- | "published"
313
- | "rc"
314
- | "unreleased";
315
- }
316
- ```
317
+ The presence of a release note does not mean the npm version is published.
318
+
319
+ ## Suggested bcp-docs-web implementation
317
320
 
318
- ## Suggested website features
321
+ At build/startup:
319
322
 
320
- 1. Sidebar navigation from this source map.
321
- 2. Markdown rendering + syntax highlighting.
322
- 3. Previous/next navigation.
323
- 4. Version/release-state banner.
324
- 5. Release pages.
325
- 6. Full-text search.
326
- 7. Copy buttons for code blocks.
327
- 8. Mobile navigation.
328
- 9. GitHub source/edit links.
323
+ ```text
324
+ load docs-web-manifest.json
325
+ load platform-manifest.json
326
+
327
+ validate schema/version relationship
328
+
329
+ build sidebar + route map + release map
330
+
331
+ load referenced Markdown
332
+
333
+ render content + prev/next + search index
334
+
335
+ show version/release/platform metadata
336
+ ```
329
337
 
330
- Later:
338
+ Recommended website behavior:
331
339
 
332
- - generated symbol reference,
333
- - versioned snapshots,
334
- - interactive examples/playgrounds,
335
- - release comparison pages.
340
+ 1. Build navigation in manifest order.
341
+ 2. Resolve every website route to its Markdown source.
342
+ 3. Generate previous/next links from manifest ordering.
343
+ 4. Use `versionTarget` and `releaseState` for banners.
344
+ 5. Use `platform-manifest.json` for runtime/public-entrypoint metadata.
345
+ 6. Index Markdown headings/content for search.
346
+ 7. Never ingest runtime `.env` files into public documentation output.
336
347
 
337
348
  ## Source conventions
338
349
 
339
- - one H1 per page,
350
+ - one H1 per Markdown page,
340
351
  - stable heading hierarchy,
341
352
  - fenced code blocks with language tags,
342
353
  - relative links between docs,
343
354
  - exact public API names,
344
355
  - clear stable/RC/roadmap labels,
345
356
  - security limitations next to affected APIs,
346
- - runnable examples where possible,
347
- - no private/internal modules presented as public API.
357
+ - no framework-internal module presented as public API.
348
358
 
349
359
  ## Release validation
350
360
 
351
- Before publishing:
361
+ Before publishing `0.2.0`:
352
362
 
353
363
  ```bash
354
364
  npm run typecheck
355
365
  npm run test:unit
356
366
  npm run test:integration
357
- npm run test:e2e
358
367
  npm run test:package
368
+ npm run test:e2e
359
369
  npm run rc:check
360
370
  ```
361
371
 
362
- For `0.1.28`, package validation must confirm the staged artifact includes the production hardening runtime/gateway, shutdown APIs, Local Server generator fix, and the existing S3 runtime dependencies.
363
-
364
- A representative Docker app should also be built and stopped with `docker stop` to verify graceful `SIGTERM` shutdown.
372
+ `0.2.0` adds a platform-contract package smoke check that verifies:
365
373
 
366
- ## Documentation QA checklist
374
+ - prepared framework/create-app version parity,
375
+ - required public exports,
376
+ - both CLI executable aliases,
377
+ - Node.js engine baseline,
378
+ - inclusion of platform/docs contract files,
379
+ - docs-web target/version consistency.
367
380
 
368
- - linked Markdown files exist,
369
- - examples use public exports,
370
- - version/release states are current,
371
- - Windows direct CLI examples use `npm exec -- bcp-framework`,
372
- - upload/storage/auth security caveats are present,
373
- - release notes match the framework version,
374
- - S3 credentials are never shown as public browser variables,
375
- - signed URLs are documented as temporary credentials,
376
- - proxy trust is documented as opt-in,
377
- - roadmap APIs are not presented as published guarantees.
381
+ The final release tag must point to the commit that passed the complete RC sequence.
378
382
 
379
- ## Next direction after 0.1.28
383
+ ## Documentation QA checklist
380
384
 
381
- Planned `0.1.29 Developer Experience` focus:
385
+ - every manifest Markdown source exists,
386
+ - every website route is unique,
387
+ - docs-web target matches platform version,
388
+ - platform public entrypoints match package exports,
389
+ - examples use public APIs/commands,
390
+ - release states are accurate,
391
+ - secrets are never placed in project/docs metadata,
392
+ - proxy trust remains opt-in,
393
+ - roadmap features are not presented as release guarantees.
382
394
 
383
- - generators for common framework files,
384
- - richer `doctor` and `inspect`,
385
- - improved build/runtime diagnostics,
386
- - create-app preset improvements,
387
- - production configuration diagnostics.
395
+ ## Repository authority
388
396
 
389
- These remain roadmap items until their source/tests land.
397
+ The framework repository remains authoritative for:
390
398
 
391
- ## Repository authority
399
+ ```text
400
+ source
401
+ public exports
402
+ tests
403
+ Markdown docs
404
+ docs-web manifest
405
+ platform manifest
406
+ release notes
407
+ ```
392
408
 
393
- The framework repository remains authoritative for source, public exports, tests, docs and release notes. `bcp-docs-web` is the presentation/search/navigation layer for this content.
409
+ `bcp-docs-web` is the presentation/search/navigation layer for this content.