rcf-lite 0.12.0 → 0.13.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/CHANGELOG.md +11 -0
- package/README.md +2 -0
- package/bin/view-supervisor-child.mjs +0 -0
- package/blueprints/application-api-rest/README.md +40 -0
- package/blueprints/application-api-rest/assets/middleware/auth-classes.md +45 -0
- package/blueprints/application-api-rest/assets/openapi/openapi-skeleton.yaml +322 -0
- package/blueprints/application-api-rest/assets/sample-data/sample-resources.json +53 -0
- package/blueprints/application-api-rest/assets/samples/request-response-pairs.md +204 -0
- package/blueprints/application-api-rest/blueprint.json +265 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-301-application-api-rest-error-envelope.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-302-application-api-rest-auth-model.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-303-application-api-rest-api-versioning.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-304-application-api-rest-logging.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-305-application-api-rest-pagination.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-306-application-api-rest-idempotency.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-307-application-api-rest-openapi-generation.json +25 -0
- package/blueprints/application-api-rest/contributions/adrs/adr-308-application-api-rest-rate-limiting.json +25 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-001.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-002.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-003.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-004.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-005.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-006.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-007.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-008.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-009.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-010.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-011.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-012.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-013.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-014.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-015.json +18 -0
- package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-016.json +18 -0
- package/blueprints/application-api-rest/contributions/tacs/tac-301-application-api-rest-request-pipeline.json +48 -0
- package/blueprints/application-api-rest/contributions/tacs/tac-302-application-api-rest-auth-middleware.json +41 -0
- package/blueprints/application-api-rest/contributions/tacs/tac-303-application-api-rest-contract-surface.json +46 -0
- package/blueprints/application-api-rest/contributions/tacs/tac-304-application-api-rest-resource-layer.json +46 -0
- package/blueprints/application-api-rest/contributions/tacs/tac-305-application-api-rest-observability.json +40 -0
- package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +46 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2101.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2102.json +73 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +63 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2104.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2105.json +63 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2106.json +73 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2107.json +90 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +90 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2109.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2110.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2111.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2112.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2113.json +73 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2114.json +63 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2115.json +63 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2116.json +63 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2117.json +64 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json +72 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json +63 -0
- package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2120.json +73 -0
- package/blueprints/application-api-rest/docs/topics.md +46 -0
- package/blueprints/application-api-rest/guide/application-api-rest.md +41 -0
- package/blueprints/application-spa/README.md +90 -0
- package/blueprints/application-spa/assets/component-specs/actions-and-text-inputs.md +36 -0
- package/blueprints/application-spa/assets/component-specs/data-display.md +19 -0
- package/blueprints/application-spa/assets/component-specs/feedback-and-status.md +27 -0
- package/blueprints/application-spa/assets/component-specs/overlays.md +23 -0
- package/blueprints/application-spa/assets/component-specs/selection-controls.md +23 -0
- package/blueprints/application-spa/assets/sample-data/sample-entities.json +41 -0
- package/blueprints/application-spa/assets/tokens/design-tokens.json +140 -0
- package/blueprints/application-spa/assets/tokens/theme.css +169 -0
- package/blueprints/application-spa/assets/viewports.md +18 -0
- package/blueprints/application-spa/assets/wireframes/dashboard.md +48 -0
- package/blueprints/application-spa/assets/wireframes/detail.md +40 -0
- package/blueprints/application-spa/assets/wireframes/empty.md +31 -0
- package/blueprints/application-spa/assets/wireframes/error.md +46 -0
- package/blueprints/application-spa/assets/wireframes/form.md +50 -0
- package/blueprints/application-spa/assets/wireframes/list.md +45 -0
- package/blueprints/application-spa/assets/wireframes/session-expired.md +35 -0
- package/blueprints/application-spa/assets/wireframes/sign-in.md +41 -0
- package/blueprints/application-spa/assets/wireframes/sign-out.md +32 -0
- package/blueprints/application-spa/blueprint.json +387 -0
- package/blueprints/application-spa/contributions/adrs/adr-201-application-spa-routing.json +25 -0
- package/blueprints/application-spa/contributions/adrs/adr-202-application-spa-theming.json +25 -0
- package/blueprints/application-spa/contributions/adrs/adr-203-application-spa-client-state.json +25 -0
- package/blueprints/application-spa/contributions/adrs/adr-204-application-spa-error-envelope.json +25 -0
- package/blueprints/application-spa/contributions/adrs/adr-205-application-spa-auth-model.json +25 -0
- package/blueprints/application-spa/contributions/adrs/adr-206-application-spa-iconography.json +13 -0
- package/blueprints/application-spa/contributions/adrs/adr-207-application-spa-motion.json +13 -0
- package/blueprints/application-spa/contributions/adrs/adr-208-application-spa-i18n.json +13 -0
- package/blueprints/application-spa/contributions/adrs/adr-209-application-spa-telemetry-naming.json +13 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-001.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-002.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-003.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-004.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-005.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-006.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-007.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-008.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-009.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-010.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-011.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-012.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-013.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-014.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-015.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-016.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-017.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-018.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-019.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-020.json +18 -0
- package/blueprints/application-spa/contributions/requirements/application-spa-req-021.json +18 -0
- package/blueprints/application-spa/contributions/tacs/tac-201-application-spa-app-shell.json +45 -0
- package/blueprints/application-spa/contributions/tacs/tac-202-application-spa-theme-system.json +32 -0
- package/blueprints/application-spa/contributions/tacs/tac-203-application-spa-component-library.json +32 -0
- package/blueprints/application-spa/contributions/tacs/tac-204-application-spa-client-data-layer.json +27 -0
- package/blueprints/application-spa/contributions/tacs/tac-205-application-spa-forms-engine.json +27 -0
- package/blueprints/application-spa/contributions/tacs/tac-206-application-spa-telemetry.json +19 -0
- package/blueprints/application-spa/contributions/tacs/tac-207-application-spa-token-adherence-probe.json +57 -0
- package/blueprints/application-spa/contributions/tacs/tac-208-application-spa-icon-adherence-probe.json +56 -0
- package/blueprints/application-spa/contributions/tacs/tac-209-application-spa-csp-styled-adherence-probe.json +61 -0
- package/blueprints/application-spa/contributions/tacs/tac-210-application-spa-external-dependency-provisioning-probe.json +70 -0
- package/blueprints/application-spa/contributions/tacs/tac-211-application-spa-core-flow-e2e-probe.json +70 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1101.json +72 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1102.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1103.json +72 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1104.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1105.json +69 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1106.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1107.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1108.json +90 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1109.json +90 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1110.json +100 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1111.json +90 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1112.json +81 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1113.json +82 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1114.json +60 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1115.json +73 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1116.json +72 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1117.json +73 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1118.json +54 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1119.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1120.json +72 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1121.json +73 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1122.json +69 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1123.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1124.json +60 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1125.json +69 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1126.json +78 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1127.json +63 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1128.json +51 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1129.json +54 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1130.json +54 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1131.json +72 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1132.json +72 -0
- package/blueprints/application-spa/contributions/user-stories/application-spa-us-1133.json +72 -0
- package/blueprints/application-spa/docs/topics.md +57 -0
- package/blueprints/application-spa/guide/application-spa.md +40 -0
- package/blueprints/ci-pipeline/README.md +49 -0
- package/blueprints/ci-pipeline/assets/ci-provider-examples/github-actions.yml +61 -0
- package/blueprints/ci-pipeline/assets/ci-provider-examples/notes.md +50 -0
- package/blueprints/ci-pipeline/assets/report-samples/per-gate.json +12 -0
- package/blueprints/ci-pipeline/assets/report-samples/pipeline.json +28 -0
- package/blueprints/ci-pipeline/blueprint.json +46 -0
- package/blueprints/ci-pipeline/contributions/adrs/adr-701-ci-pipeline-ci-gates.json +25 -0
- package/blueprints/ci-pipeline/contributions/adrs/adr-702-ci-pipeline-strict-coverage-gate.json +25 -0
- package/blueprints/ci-pipeline/contributions/adrs/adr-703-ci-pipeline-node-only-runner.json +25 -0
- package/blueprints/ci-pipeline/contributions/adrs/adr-704-ci-pipeline-report-shape.json +25 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-001.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-002.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-003.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-004.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-005.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-006.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-007.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-008.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-009.json +18 -0
- package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-010.json +18 -0
- package/blueprints/ci-pipeline/contributions/tacs/tac-701-ci-pipeline-gate-runner.json +59 -0
- package/blueprints/ci-pipeline/contributions/tacs/tac-702-ci-pipeline-gate-report.json +32 -0
- package/blueprints/ci-pipeline/contributions/tacs/tac-703-ci-pipeline-aggregate-report.json +41 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6101.json +37 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6102.json +36 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6103.json +37 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6104.json +37 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6105.json +36 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6106.json +36 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6107.json +37 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6108.json +37 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6109.json +36 -0
- package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6110.json +36 -0
- package/blueprints/ci-pipeline/docs/topics.md +49 -0
- package/blueprints/ci-pipeline/guide/ci-pipeline.md +79 -0
- package/blueprints/deploy-cloudflare-workers/README.md +63 -0
- package/blueprints/deploy-cloudflare-workers/assets/ci-workflows/build-and-upload.yml.md +109 -0
- package/blueprints/deploy-cloudflare-workers/assets/ci-workflows/promote.yml.md +120 -0
- package/blueprints/deploy-cloudflare-workers/assets/verification/served-surface-probes.md +90 -0
- package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/bootstrap-vs-steady-state.md +87 -0
- package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/preview-alias-shape.md +86 -0
- package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/wrangler-toml-shape.md +85 -0
- package/blueprints/deploy-cloudflare-workers/blueprint.json +48 -0
- package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1301-deploy-cloudflare-workers-deployment-target.json +30 -0
- package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1302-deploy-cloudflare-workers-default-vendor.json +35 -0
- package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1303-deploy-cloudflare-workers-preview-vs-production.json +30 -0
- package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1304-deploy-cloudflare-workers-rollback-is-promote.json +25 -0
- package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1305-deploy-cloudflare-workers-dev-mode-drift.json +25 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-001.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-002.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-003.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-004.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-005.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-006.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-007.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-008.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-009.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-010.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-011.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-012.json +18 -0
- package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1301-deploy-cloudflare-workers-deploy-adapter.json +54 -0
- package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1302-deploy-cloudflare-workers-wrangler-manifest.json +45 -0
- package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1303-deploy-cloudflare-workers-preview-url-resolver.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1304-deploy-cloudflare-workers-promote-gate.json +57 -0
- package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1305-deploy-cloudflare-workers-served-surface-verifier.json +51 -0
- package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1306-deploy-cloudflare-workers-deploy-ci-workflows.json +64 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12101.json +54 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12102.json +45 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12103.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12104.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12105.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12106.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12107.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12108.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12109.json +47 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12110.json +46 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12111.json +45 -0
- package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12112.json +46 -0
- package/blueprints/deploy-cloudflare-workers/docs/topics.md +46 -0
- package/blueprints/deploy-cloudflare-workers/guide/deploy-cloudflare-workers.md +74 -0
- package/blueprints/email-smtp-resend/README.md +45 -0
- package/blueprints/email-smtp-resend/assets/from-address-rotation-pattern.md +44 -0
- package/blueprints/email-smtp-resend/assets/resend-verification-pointer.md +25 -0
- package/blueprints/email-smtp-resend/assets/stub-adapter.md +65 -0
- package/blueprints/email-smtp-resend/blueprint.json +23 -0
- package/blueprints/email-smtp-resend/contributions/adrs/adr-401-email-smtp-resend-transport-choice.json +30 -0
- package/blueprints/email-smtp-resend/contributions/adrs/adr-402-email-smtp-resend-retry-and-backoff-posture.json +30 -0
- package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-001.json +18 -0
- package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-002.json +18 -0
- package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-003.json +18 -0
- package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-004.json +18 -0
- package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-005.json +18 -0
- package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-006.json +18 -0
- package/blueprints/email-smtp-resend/contributions/tacs/tac-401-email-smtp-resend-send-adapter.json +53 -0
- package/blueprints/email-smtp-resend/contributions/tacs/tac-402-email-smtp-resend-webhook-verifier.json +56 -0
- package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4101.json +45 -0
- package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4102.json +36 -0
- package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4103.json +45 -0
- package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4104.json +45 -0
- package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4105.json +36 -0
- package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4106.json +37 -0
- package/blueprints/email-smtp-resend/docs/topics.md +44 -0
- package/blueprints/email-smtp-resend/guide/email-smtp-resend.md +71 -0
- package/blueprints/observability-essentials/README.md +53 -0
- package/blueprints/observability-essentials/assets/probe-samples/liveness-body.json +4 -0
- package/blueprints/observability-essentials/assets/probe-samples/readiness-body.json +18 -0
- package/blueprints/observability-essentials/assets/status-page-samples/status-page-clean.html +22 -0
- package/blueprints/observability-essentials/assets/status-page-samples/status-page-with-notice.html +25 -0
- package/blueprints/observability-essentials/blueprint.json +54 -0
- package/blueprints/observability-essentials/contributions/adrs/adr-801-observability-essentials-health-probes.json +30 -0
- package/blueprints/observability-essentials/contributions/adrs/adr-802-observability-essentials-readiness-semantics.json +30 -0
- package/blueprints/observability-essentials/contributions/adrs/adr-803-observability-essentials-status-page-contract.json +30 -0
- package/blueprints/observability-essentials/contributions/adrs/adr-804-observability-essentials-probe-secrecy.json +25 -0
- package/blueprints/observability-essentials/contributions/adrs/adr-805-observability-essentials-notification-outcome-model.json +25 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-003.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-004.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-005.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-006.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-007.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-008.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-009.json +18 -0
- package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-010.json +18 -0
- package/blueprints/observability-essentials/contributions/tacs/tac-801-observability-essentials-liveness-probe.json +32 -0
- package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +43 -0
- package/blueprints/observability-essentials/contributions/tacs/tac-803-observability-essentials-status-page.json +37 -0
- package/blueprints/observability-essentials/contributions/tacs/tac-804-observability-essentials-notification-outcome.json +42 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7102.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7103.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7104.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7105.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7106.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7107.json +46 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7108.json +47 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7109.json +45 -0
- package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7110.json +46 -0
- package/blueprints/observability-essentials/docs/topics.md +57 -0
- package/blueprints/observability-essentials/guide/observability-essentials.md +68 -0
- package/blueprints/observability-probe-endpoints/README.md +53 -0
- package/blueprints/observability-probe-endpoints/assets/docker/dockerfile-healthcheck.md +19 -0
- package/blueprints/observability-probe-endpoints/assets/kubernetes/podspec-probes-separate-port.md +54 -0
- package/blueprints/observability-probe-endpoints/assets/kubernetes/podspec-probes.md +36 -0
- package/blueprints/observability-probe-endpoints/assets/load-balancer/health-check-config.md +23 -0
- package/blueprints/observability-probe-endpoints/assets/systemd/notify-service.md +30 -0
- package/blueprints/observability-probe-endpoints/assets/uptime-monitor/monitor-config.md +22 -0
- package/blueprints/observability-probe-endpoints/blueprint.json +44 -0
- package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1501-observability-probe-endpoints-health-probes.json +30 -0
- package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1502-observability-probe-endpoints-readiness-semantics.json +30 -0
- package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1503-observability-probe-endpoints-kubernetes-default.json +30 -0
- package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1504-observability-probe-endpoints-separate-port-option.json +30 -0
- package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1505-observability-probe-endpoints-external-response-secrecy.json +30 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-001.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-002.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-003.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-004.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-005.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-006.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-007.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-008.json +18 -0
- package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1501-observability-probe-endpoints-profile-resolver.json +39 -0
- package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1502-observability-probe-endpoints-handler-set.json +40 -0
- package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1503-observability-probe-endpoints-listener-topology.json +51 -0
- package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1504-observability-probe-endpoints-non-http-adapters.json +39 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14101.json +46 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +46 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14103.json +46 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14104.json +45 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14105.json +46 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14106.json +45 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14107.json +45 -0
- package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14108.json +46 -0
- package/blueprints/observability-probe-endpoints/docs/topics.md +51 -0
- package/blueprints/observability-probe-endpoints/guide/observability-probe-endpoints.md +83 -0
- package/blueprints/persistence-data-d1/README.md +50 -0
- package/blueprints/persistence-data-d1/assets/batch-usage/batch-atomicity-example.md +72 -0
- package/blueprints/persistence-data-d1/assets/facade-shape/facade-module-shape.md +115 -0
- package/blueprints/persistence-data-d1/assets/migration-shape/migration-file-shape.md +119 -0
- package/blueprints/persistence-data-d1/assets/wrangler-config/d1-binding-shape.md +93 -0
- package/blueprints/persistence-data-d1/blueprint.json +42 -0
- package/blueprints/persistence-data-d1/contributions/adrs/adr-1401-persistence-data-d1-store-model.json +30 -0
- package/blueprints/persistence-data-d1/contributions/adrs/adr-1402-persistence-data-d1-migration-discipline.json +30 -0
- package/blueprints/persistence-data-d1/contributions/adrs/adr-1403-persistence-data-d1-event-secrecy.json +25 -0
- package/blueprints/persistence-data-d1/contributions/adrs/adr-1404-persistence-data-d1-store-boundary.json +25 -0
- package/blueprints/persistence-data-d1/contributions/adrs/adr-1405-persistence-data-d1-recovery-model.json +30 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-001.json +18 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-002.json +18 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-003.json +18 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-004.json +18 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-005.json +18 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-006.json +18 -0
- package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-007.json +18 -0
- package/blueprints/persistence-data-d1/contributions/tacs/tac-1401-persistence-data-d1-facade.json +51 -0
- package/blueprints/persistence-data-d1/contributions/tacs/tac-1402-persistence-data-d1-migration-catalog.json +31 -0
- package/blueprints/persistence-data-d1/contributions/tacs/tac-1403-persistence-data-d1-deploy-gate.json +38 -0
- package/blueprints/persistence-data-d1/contributions/tacs/tac-1404-persistence-data-d1-recovery-runner.json +39 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13101.json +45 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13102.json +45 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13103.json +46 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13104.json +45 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13105.json +45 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13106.json +46 -0
- package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13107.json +38 -0
- package/blueprints/persistence-data-d1/docs/topics.md +59 -0
- package/blueprints/persistence-data-d1/guide/persistence-data-d1.md +77 -0
- package/blueprints/persistence-data-sqlite/README.md +50 -0
- package/blueprints/persistence-data-sqlite/assets/backup-procedures/hot-checkpoint-note.md +22 -0
- package/blueprints/persistence-data-sqlite/assets/backup-procedures/sqlite-file-copy.md +70 -0
- package/blueprints/persistence-data-sqlite/assets/schema-samples/catalog-file-layout.md +73 -0
- package/blueprints/persistence-data-sqlite/assets/schema-samples/migration-shape.md +76 -0
- package/blueprints/persistence-data-sqlite/blueprint.json +50 -0
- package/blueprints/persistence-data-sqlite/contributions/adrs/adr-601-persistence-data-sqlite-store-model.json +30 -0
- package/blueprints/persistence-data-sqlite/contributions/adrs/adr-602-persistence-data-sqlite-migration-discipline.json +30 -0
- package/blueprints/persistence-data-sqlite/contributions/adrs/adr-603-persistence-data-sqlite-event-secrecy.json +25 -0
- package/blueprints/persistence-data-sqlite/contributions/adrs/adr-604-persistence-data-sqlite-store-boundary.json +25 -0
- package/blueprints/persistence-data-sqlite/contributions/adrs/adr-605-persistence-data-sqlite-backup-model.json +25 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-001.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-002.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-003.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-004.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-005.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-006.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-007.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-008.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-009.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-010.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-011.json +18 -0
- package/blueprints/persistence-data-sqlite/contributions/tacs/tac-601-persistence-data-sqlite-store.json +57 -0
- package/blueprints/persistence-data-sqlite/contributions/tacs/tac-602-persistence-data-sqlite-migration-runner.json +34 -0
- package/blueprints/persistence-data-sqlite/contributions/tacs/tac-603-persistence-data-sqlite-migration-catalog.json +31 -0
- package/blueprints/persistence-data-sqlite/contributions/tacs/tac-604-persistence-data-sqlite-backup-runner.json +33 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5101.json +46 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5102.json +46 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5103.json +37 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5104.json +45 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5105.json +45 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5106.json +46 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5107.json +45 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5108.json +46 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5109.json +46 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5110.json +37 -0
- package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5111.json +37 -0
- package/blueprints/persistence-data-sqlite/docs/topics.md +49 -0
- package/blueprints/persistence-data-sqlite/guide/persistence-data-sqlite.md +69 -0
- package/blueprints/security-auth-clerk/README.md +50 -0
- package/blueprints/security-auth-clerk/assets/authorisation/role-claim-mapping-sample.md +99 -0
- package/blueprints/security-auth-clerk/assets/middleware/node-middleware-shape.md +86 -0
- package/blueprints/security-auth-clerk/assets/wiring/clerk-provider-react.md +48 -0
- package/blueprints/security-auth-clerk/assets/wiring/clerk-provider-vue.md +41 -0
- package/blueprints/security-auth-clerk/blueprint.json +42 -0
- package/blueprints/security-auth-clerk/contributions/adrs/adr-1001-security-auth-clerk-auth-model.json +30 -0
- package/blueprints/security-auth-clerk/contributions/adrs/adr-1002-security-auth-clerk-middleware-boundary.json +25 -0
- package/blueprints/security-auth-clerk/contributions/adrs/adr-1003-security-auth-clerk-authorisation-adapter-contract.json +25 -0
- package/blueprints/security-auth-clerk/contributions/adrs/adr-1004-security-auth-clerk-claims-mapping-discipline.json +25 -0
- package/blueprints/security-auth-clerk/contributions/adrs/adr-1005-security-auth-clerk-session-lifecycle.json +25 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-001.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-002.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-003.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-004.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-005.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-006.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-007.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-008.json +18 -0
- package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-009.json +18 -0
- package/blueprints/security-auth-clerk/contributions/tacs/tac-1001-security-auth-clerk-middleware.json +42 -0
- package/blueprints/security-auth-clerk/contributions/tacs/tac-1002-security-auth-clerk-authorisation-adapter.json +30 -0
- package/blueprints/security-auth-clerk/contributions/tacs/tac-1003-security-auth-clerk-session-verifier.json +38 -0
- package/blueprints/security-auth-clerk/contributions/tacs/tac-1004-security-auth-clerk-claims-mapper.json +22 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9101.json +46 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9102.json +38 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9103.json +46 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9104.json +46 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9105.json +36 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9106.json +36 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9107.json +37 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9108.json +36 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9109.json +36 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9110.json +37 -0
- package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9111.json +36 -0
- package/blueprints/security-auth-clerk/docs/topics.md +56 -0
- package/blueprints/security-auth-clerk/guide/security-auth-clerk.md +71 -0
- package/blueprints/security-auth-keycloak/README.md +56 -0
- package/blueprints/security-auth-keycloak/assets/local-container/keycloak-bootstrap.md +54 -0
- package/blueprints/security-auth-keycloak/assets/middleware/verifier-wiring.md +93 -0
- package/blueprints/security-auth-keycloak/assets/mock-introspection/mock-introspection-shape.md +62 -0
- package/blueprints/security-auth-keycloak/assets/provider-router/router-shape.md +71 -0
- package/blueprints/security-auth-keycloak/assets/realm-skeleton/realm-config-shape.md +55 -0
- package/blueprints/security-auth-keycloak/blueprint.json +49 -0
- package/blueprints/security-auth-keycloak/contributions/adrs/adr-1201-security-auth-keycloak-auth-model.json +35 -0
- package/blueprints/security-auth-keycloak/contributions/adrs/adr-1202-security-auth-keycloak-verification-mode-choice.json +30 -0
- package/blueprints/security-auth-keycloak/contributions/adrs/adr-1203-security-auth-keycloak-provider-routing-seam.json +30 -0
- package/blueprints/security-auth-keycloak/contributions/adrs/adr-1204-security-auth-keycloak-session-vs-token-contract.json +25 -0
- package/blueprints/security-auth-keycloak/contributions/adrs/adr-1205-security-auth-keycloak-jwks-rotation-cache-lifetime.json +30 -0
- package/blueprints/security-auth-keycloak/contributions/adrs/adr-1206-security-auth-keycloak-refresh-and-sign-out-posture.json +25 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-001.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-002.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-003.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-004.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-005.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-006.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-007.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-008.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-009.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-010.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-011.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-012.json +18 -0
- package/blueprints/security-auth-keycloak/contributions/tacs/tac-1201-security-auth-keycloak-discovery-client.json +51 -0
- package/blueprints/security-auth-keycloak/contributions/tacs/tac-1202-security-auth-keycloak-jwt-verifier.json +46 -0
- package/blueprints/security-auth-keycloak/contributions/tacs/tac-1203-security-auth-keycloak-introspection-client.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/tacs/tac-1204-security-auth-keycloak-provider-router.json +37 -0
- package/blueprints/security-auth-keycloak/contributions/tacs/tac-1205-security-auth-keycloak-role-adapter.json +32 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11101.json +47 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11102.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11103.json +36 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11104.json +36 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11105.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11106.json +46 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11107.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11108.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11109.json +37 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11110.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11111.json +45 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11112.json +37 -0
- package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11113.json +36 -0
- package/blueprints/security-auth-keycloak/docs/topics.md +74 -0
- package/blueprints/security-auth-keycloak/guide/security-auth-keycloak.md +81 -0
- package/blueprints/security-auth-magic-link/README.md +46 -0
- package/blueprints/security-auth-magic-link/assets/email-templates/magic-link-email.md +44 -0
- package/blueprints/security-auth-magic-link/assets/email-templates/stub-adapter.md +55 -0
- package/blueprints/security-auth-magic-link/assets/principal-registry-samples/allow-list-file.md +46 -0
- package/blueprints/security-auth-magic-link/assets/principal-registry-samples/single-address.md +35 -0
- package/blueprints/security-auth-magic-link/blueprint.json +45 -0
- package/blueprints/security-auth-magic-link/contributions/adrs/adr-501-security-auth-magic-link-model.json +30 -0
- package/blueprints/security-auth-magic-link/contributions/adrs/adr-502-security-auth-magic-link-token-secrecy.json +25 -0
- package/blueprints/security-auth-magic-link/contributions/adrs/adr-503-security-auth-magic-link-anti-enumeration-budget.json +25 -0
- package/blueprints/security-auth-magic-link/contributions/adrs/adr-504-security-auth-magic-link-session-lifecycle.json +30 -0
- package/blueprints/security-auth-magic-link/contributions/adrs/adr-505-security-auth-magic-link-rate-limiting.json +25 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-001.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-002.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-003.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-004.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-005.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-006.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-007.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-008.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-009.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-010.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-011.json +18 -0
- package/blueprints/security-auth-magic-link/contributions/tacs/tac-501-security-auth-magic-link-manager.json +45 -0
- package/blueprints/security-auth-magic-link/contributions/tacs/tac-502-security-auth-magic-link-session-manager.json +46 -0
- package/blueprints/security-auth-magic-link/contributions/tacs/tac-503-security-auth-magic-link-login-routes.json +76 -0
- package/blueprints/security-auth-magic-link/contributions/tacs/tac-504-security-auth-magic-link-email-delivery-adapter.json +26 -0
- package/blueprints/security-auth-magic-link/contributions/tacs/tac-505-security-auth-magic-link-principal-registry.json +26 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3101.json +64 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3102.json +54 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3103.json +45 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3104.json +55 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3105.json +46 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3106.json +46 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3107.json +54 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3108.json +46 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3109.json +48 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3110.json +45 -0
- package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3111.json +45 -0
- package/blueprints/security-auth-magic-link/docs/topics.md +45 -0
- package/blueprints/security-auth-magic-link/guide/security-auth-magic-link.md +65 -0
- package/blueprints/security-auth-oauth2/README.md +50 -0
- package/blueprints/security-auth-oauth2/assets/mock-provider/mock-oidc-shape.md +55 -0
- package/blueprints/security-auth-oauth2/assets/provider-selector/list-shape.md +27 -0
- package/blueprints/security-auth-oauth2/assets/providers/generic-oidc-discovery.md +31 -0
- package/blueprints/security-auth-oauth2/assets/providers/github-oauth2-only.md +31 -0
- package/blueprints/security-auth-oauth2/assets/providers/google-oidc.md +31 -0
- package/blueprints/security-auth-oauth2/assets/session-bridge/opaque-handle-shape.md +59 -0
- package/blueprints/security-auth-oauth2/blueprint.json +44 -0
- package/blueprints/security-auth-oauth2/contributions/adrs/adr-1101-security-auth-oauth2-auth-model.json +35 -0
- package/blueprints/security-auth-oauth2/contributions/adrs/adr-1102-security-auth-oauth2-provider-abstraction-contract.json +25 -0
- package/blueprints/security-auth-oauth2/contributions/adrs/adr-1103-security-auth-oauth2-pkce-discipline.json +25 -0
- package/blueprints/security-auth-oauth2/contributions/adrs/adr-1104-security-auth-oauth2-session-bridge-shape.json +25 -0
- package/blueprints/security-auth-oauth2/contributions/adrs/adr-1105-security-auth-oauth2-refresh-token-posture.json +25 -0
- package/blueprints/security-auth-oauth2/contributions/adrs/adr-1106-security-auth-oauth2-multi-provider-routing.json +25 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-001.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-002.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-003.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-004.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-005.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-006.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-007.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-008.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-009.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-010.json +18 -0
- package/blueprints/security-auth-oauth2/contributions/tacs/tac-1101-security-auth-oauth2-flow-controller.json +61 -0
- package/blueprints/security-auth-oauth2/contributions/tacs/tac-1102-security-auth-oauth2-provider-adapter.json +33 -0
- package/blueprints/security-auth-oauth2/contributions/tacs/tac-1103-security-auth-oauth2-session-bridge.json +51 -0
- package/blueprints/security-auth-oauth2/contributions/tacs/tac-1104-security-auth-oauth2-provider-selector.json +29 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10101.json +47 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10102.json +45 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10103.json +36 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10104.json +36 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10105.json +55 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10106.json +45 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10107.json +46 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10108.json +46 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10109.json +37 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10110.json +37 -0
- package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10111.json +28 -0
- package/blueprints/security-auth-oauth2/docs/topics.md +58 -0
- package/blueprints/security-auth-oauth2/guide/security-auth-oauth2.md +65 -0
- package/blueprints/security-secrets-management/README.md +48 -0
- package/blueprints/security-secrets-management/assets/cli-usage/agent-access-pattern.md +69 -0
- package/blueprints/security-secrets-management/assets/manifest-samples/environment-aware-example.md +33 -0
- package/blueprints/security-secrets-management/assets/manifest-samples/secrets-yaml-shape.md +74 -0
- package/blueprints/security-secrets-management/assets/ui-integration/three-way-choice.md +44 -0
- package/blueprints/security-secrets-management/blueprint.json +43 -0
- package/blueprints/security-secrets-management/contributions/adrs/adr-901-security-secrets-management-secrets-source.json +30 -0
- package/blueprints/security-secrets-management/contributions/adrs/adr-902-security-secrets-management-default-vendor.json +35 -0
- package/blueprints/security-secrets-management/contributions/adrs/adr-903-security-secrets-management-agent-access-discipline.json +25 -0
- package/blueprints/security-secrets-management/contributions/adrs/adr-904-security-secrets-management-dotenv-reflection.json +25 -0
- package/blueprints/security-secrets-management/contributions/adrs/adr-905-security-secrets-management-rotation-and-audit.json +30 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-001.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-002.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-003.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-004.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-005.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-006.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-007.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-008.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-009.json +18 -0
- package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-010.json +18 -0
- package/blueprints/security-secrets-management/contributions/tacs/tac-901-security-secrets-management-manager-client.json +52 -0
- package/blueprints/security-secrets-management/contributions/tacs/tac-902-security-secrets-management-manifest.json +34 -0
- package/blueprints/security-secrets-management/contributions/tacs/tac-903-security-secrets-management-env-reflector.json +46 -0
- package/blueprints/security-secrets-management/contributions/tacs/tac-904-security-secrets-management-rotation-gate.json +57 -0
- package/blueprints/security-secrets-management/contributions/tacs/tac-905-security-secrets-management-agent-cli.json +59 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8101.json +46 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8102.json +45 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8103.json +37 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8104.json +45 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8105.json +55 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8106.json +46 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8107.json +46 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8108.json +45 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8109.json +46 -0
- package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8110.json +45 -0
- package/blueprints/security-secrets-management/docs/topics.md +46 -0
- package/blueprints/security-secrets-management/guide/security-secrets-management.md +68 -0
- package/fixtures/canary-manifest.json +1 -101
- package/package.json +15 -9
- package/rcf/.identity/profile.md +37 -0
- package/rcf/knowledge/INDEX.md +12 -0
- package/rcf/knowledge/README.md +41 -0
- package/rcf/knowledge/docs/.gitkeep +0 -0
- package/rcf/knowledge/notes/.gitkeep +0 -0
- package/scripts/preinstall-node-check.mjs +61 -0
- package/src/blueprint/apply.js +12 -6
- package/src/blueprint/conflicts.js +8 -8
- package/src/blueprint/index.js +2 -1
- package/src/blueprint/list.js +60 -0
- package/src/blueprint/loader.js +26 -1
- package/src/blueprint/namespace.js +20 -16
- package/src/blueprint/shelf-resolver.js +173 -0
- package/src/blueprint/supersede.js +3 -2
- package/src/browser-verify/invariants.js +40 -0
- package/src/browser-verify/runner.js +2 -0
- package/src/cli/blueprint.js +53 -9
- package/src/cli/init.js +2 -0
- package/src/core/store/writer.js +64 -2
- package/src/setup/agent-setup.js +28 -10
package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-api-rest-US-2118",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-api-rest-REQ-014",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Forward-only migrations with named reverts and a live schema-version report",
|
|
8
|
+
"asA": "platform operator deploying schema changes",
|
|
9
|
+
"iWant": "every migration to know how to undo itself and every instance to report what schema it runs",
|
|
10
|
+
"soThat": "deploys are ordered, reversible on purpose, and verifiable from the outside",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-2118-1",
|
|
14
|
+
"description": "Migrations apply strictly forward in a deterministic order; the tool refuses to apply migrations out of order or to skip gaps.",
|
|
15
|
+
"given": "a migration set with an out-of-order or missing member",
|
|
16
|
+
"when": "migration is attempted",
|
|
17
|
+
"then": "the tool refuses with an error naming the ordering violation",
|
|
18
|
+
"testable": true,
|
|
19
|
+
"scope": "runtime"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "AC-2118-2",
|
|
23
|
+
"description": "Every migration ships a named revert step, and the revert is exercised at least once in verification (apply then revert restores the prior schema).",
|
|
24
|
+
"given": "any migration in the set",
|
|
25
|
+
"when": "it is applied and its named revert executed",
|
|
26
|
+
"then": "the schema returns to its prior state",
|
|
27
|
+
"testable": true,
|
|
28
|
+
"scope": "runtime"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "AC-2118-3",
|
|
32
|
+
"description": "The deploy order between migrations and application rollout is stated in the project documentation, including which schema versions each application version tolerates.",
|
|
33
|
+
"given": "the project's deploy documentation",
|
|
34
|
+
"when": "the migration-versus-rollout order is looked up",
|
|
35
|
+
"then": "the order and the tolerated schema-version window are stated",
|
|
36
|
+
"testable": true,
|
|
37
|
+
"scope": "runtime"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "AC-2118-4",
|
|
41
|
+
"description": "GET /v1/_meta returns the current schema version and application version against a declared schema, under the same wire contract as every other endpoint.",
|
|
42
|
+
"given": "a running instance",
|
|
43
|
+
"when": "/v1/_meta is fetched",
|
|
44
|
+
"then": "the response conforms to the declared meta schema carrying schema version and application version",
|
|
45
|
+
"testable": true,
|
|
46
|
+
"scope": "runtime"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "AC-2118-5",
|
|
50
|
+
"description": "The schema version reported by /v1/_meta equals the version recorded by the migration tool in the database, so the endpoint reports reality rather than a build-time constant.",
|
|
51
|
+
"given": "an instance after applying a new migration",
|
|
52
|
+
"when": "/v1/_meta and the migration tool's recorded version are compared",
|
|
53
|
+
"then": "they are equal, and change together when the next migration applies",
|
|
54
|
+
"testable": true,
|
|
55
|
+
"scope": "runtime"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "AC-2118-6",
|
|
59
|
+
"description": "The /v1/_meta endpoint declares an auth class like any other endpoint (service or admin by default), and startup readiness (AC-2108-4) gates on migrations being current.",
|
|
60
|
+
"given": "the generated spec and a booting instance behind on migrations",
|
|
61
|
+
"when": "the _meta declaration and the startup probe are inspected",
|
|
62
|
+
"then": "_meta carries its declared auth class, and the startup probe withholds 200 until migrations are current",
|
|
63
|
+
"testable": true,
|
|
64
|
+
"scope": "runtime"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"tacIds": [
|
|
68
|
+
"TAC-306-application-api-rest-operability"
|
|
69
|
+
],
|
|
70
|
+
"createdAt": "2026-08-19T10:00:00Z",
|
|
71
|
+
"updatedAt": "2026-08-19T10:00:00Z"
|
|
72
|
+
}
|
package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-api-rest-US-2119",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-api-rest-REQ-015",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Spec-derived contract conformance across request, error, and auth axes",
|
|
8
|
+
"asA": "API consumer trusting the published contract",
|
|
9
|
+
"iWant": "every declared endpoint proven conformant on the happy path, the error path, and the auth boundary",
|
|
10
|
+
"soThat": "the contract holds by verification, including for the endpoint added yesterday",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-2119-1",
|
|
14
|
+
"description": "For every declared operation, a schema-conforming request receives a response that validates against the operation's declared response schema for its status code.",
|
|
15
|
+
"given": "each operation in the generated spec",
|
|
16
|
+
"when": "a valid request is executed against it",
|
|
17
|
+
"then": "the response validates against the declared schema for the returned status",
|
|
18
|
+
"testable": true,
|
|
19
|
+
"scope": "runtime"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "AC-2119-2",
|
|
23
|
+
"description": "For every declared operation accepting a body or parameters, an invalid request receives the declared error envelope with the documented 4xx status.",
|
|
24
|
+
"given": "each operation with declared inputs",
|
|
25
|
+
"when": "a request violating the input schema is executed",
|
|
26
|
+
"then": "the response is the documented 4xx carrying the problem-details envelope",
|
|
27
|
+
"testable": true,
|
|
28
|
+
"scope": "runtime"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "AC-2119-3",
|
|
32
|
+
"description": "For every declared operation, the endpoint's x-auth-class is honoured: a caller below the declared class is rejected with 401 or 403 per AC-2106-5.",
|
|
33
|
+
"given": "each non-public operation",
|
|
34
|
+
"when": "an under-privileged request is executed",
|
|
35
|
+
"then": "the rejection matches the declared class semantics",
|
|
36
|
+
"testable": true,
|
|
37
|
+
"scope": "runtime"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "AC-2119-4",
|
|
41
|
+
"description": "Conformance coverage is derived from the generated spec at verification time: an operation added to the surface is covered without anyone registering it manually, and an uncoverable operation fails the run.",
|
|
42
|
+
"given": "a newly added declared operation",
|
|
43
|
+
"when": "the conformance run executes",
|
|
44
|
+
"then": "the new operation is exercised on all three axes or the run fails naming it",
|
|
45
|
+
"testable": true,
|
|
46
|
+
"scope": "runtime"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "AC-2119-5",
|
|
50
|
+
"description": "The conformance run is part of the standard verification pipeline and its per-operation results are reported, so contract conformance is visible at every build, not sampled occasionally.",
|
|
51
|
+
"given": "the project's verification pipeline",
|
|
52
|
+
"when": "it runs",
|
|
53
|
+
"then": "the conformance results appear per operation and a conformance failure fails the pipeline",
|
|
54
|
+
"testable": true,
|
|
55
|
+
"scope": "runtime"
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"tacIds": [
|
|
59
|
+
"TAC-303-application-api-rest-contract-surface"
|
|
60
|
+
],
|
|
61
|
+
"createdAt": "2026-08-19T10:00:00Z",
|
|
62
|
+
"updatedAt": "2026-08-19T10:00:00Z"
|
|
63
|
+
}
|
package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2120.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-api-rest-US-2120",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-api-rest-REQ-016",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Security baselines: clean logs, redacted PII, TLS enforced, explicit CORS",
|
|
8
|
+
"asA": "security reviewer signing off the service",
|
|
9
|
+
"iWant": "secrets out of logs, PII redacted by stated policy, TLS mandatory outside development, and CORS deny-by-default",
|
|
10
|
+
"soThat": "the defects functional tests never catch are closed by specification",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-2120-1",
|
|
14
|
+
"description": "No secret material (bearer tokens, API keys, passwords, session identifiers, idempotency keys) appears in log output at any level, including debug.",
|
|
15
|
+
"given": "traffic exercising auth, sessions, and idempotency with logging at the most verbose level",
|
|
16
|
+
"when": "all log output is scanned for the known secret values",
|
|
17
|
+
"then": "none appears in any line",
|
|
18
|
+
"testable": true,
|
|
19
|
+
"scope": "runtime"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "AC-2120-2",
|
|
23
|
+
"description": "The PII-redaction policy is stated in project documentation, naming the field classes it covers and the redaction form, and log and error output conform to it.",
|
|
24
|
+
"given": "the stated policy and traffic carrying PII fields",
|
|
25
|
+
"when": "logs and error responses are inspected",
|
|
26
|
+
"then": "every covered field class appears only in its declared redacted form",
|
|
27
|
+
"testable": true,
|
|
28
|
+
"scope": "runtime"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "AC-2120-3",
|
|
32
|
+
"description": "In non-development environments the service is reachable only over TLS: plain HTTP is refused or redirected, and no listener serves business endpoints in cleartext.",
|
|
33
|
+
"given": "a non-development deployment",
|
|
34
|
+
"when": "a plain HTTP request is attempted",
|
|
35
|
+
"then": "it is refused or redirected to TLS and no cleartext business response is served",
|
|
36
|
+
"testable": true,
|
|
37
|
+
"scope": "deployed"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "AC-2120-4",
|
|
41
|
+
"description": "CORS is deny-by-default: a cross-origin request from an undeclared origin receives no permissive CORS headers, and no wildcard origin is served on any credentialed endpoint.",
|
|
42
|
+
"given": "a cross-origin request from an origin not on the declared allowlist",
|
|
43
|
+
"when": "the response headers are inspected",
|
|
44
|
+
"then": "no Access-Control-Allow-Origin permits the undeclared origin, and no credentialed endpoint ever serves a wildcard",
|
|
45
|
+
"testable": true,
|
|
46
|
+
"scope": "runtime"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "AC-2120-5",
|
|
50
|
+
"description": "Per-endpoint CORS overrides are declared configuration: an endpoint allowing specific origins lists them, the declaration is auditable alongside the endpoint, and behaviour matches it.",
|
|
51
|
+
"given": "an endpoint with a declared CORS override",
|
|
52
|
+
"when": "cross-origin requests from declared and undeclared origins arrive",
|
|
53
|
+
"then": "declared origins succeed per the declaration and undeclared origins are refused",
|
|
54
|
+
"testable": true,
|
|
55
|
+
"scope": "runtime"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "AC-2120-6",
|
|
59
|
+
"description": "Problem-details responses never leak internals: stack traces, SQL, file paths, and dependency hostnames are absent from every error body in non-development environments.",
|
|
60
|
+
"given": "induced 4xx and 5xx errors in a non-development configuration",
|
|
61
|
+
"when": "every error body is scanned",
|
|
62
|
+
"then": "no stack trace, query text, filesystem path, or internal hostname appears",
|
|
63
|
+
"testable": true,
|
|
64
|
+
"scope": "deployed"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"tacIds": [
|
|
68
|
+
"TAC-301-application-api-rest-request-pipeline",
|
|
69
|
+
"TAC-305-application-api-rest-observability"
|
|
70
|
+
],
|
|
71
|
+
"createdAt": "2026-08-19T10:00:00Z",
|
|
72
|
+
"updatedAt": "2026-08-19T10:00:00Z"
|
|
73
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# application-api-rest blueprint coordination vocabulary
|
|
2
|
+
|
|
3
|
+
This file is the application-api-rest half of the cross-blueprint contract; the application-spa blueprint's `blueprints/application-spa/docs/topics.md` defines the format and the founding vocabulary. The conflict detector matches scope:global ADR topics by EXACT string equality, and AC ids are unnamespaced by the 0.4.4 grammar. Any blueprint intended to compose with this one must reuse these exact strings and respect these bands.
|
|
4
|
+
|
|
5
|
+
## Global ADR topics this blueprint contributes (exact strings)
|
|
6
|
+
|
|
7
|
+
| Topic string | application-api-rest contribution | Origin | Composition note |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| `errorEnvelope` | ADR-301-application-api-rest-error-envelope | Reused verbatim from the application-spa vocabulary | DELIBERATE pairing: application-spa contributes ADR-204-application-spa-error-envelope on this topic. Applying both blueprints to one project surfaces the conflict for operator resolution. Expected resolution: one project-level ADR adopting RFC 7807 end to end, superseding both halves |
|
|
10
|
+
| `authModel` | ADR-302-application-api-rest-auth-model | Reused verbatim from the application-spa vocabulary | DELIBERATE pairing with SPA's ADR-205-application-spa-auth-model (cookie-based sessions, client half). Expected resolution: one project-level ADR fixing the credential transport and mapping the client session model onto the four server classes |
|
|
11
|
+
| `apiVersioning` | ADR-303-application-api-rest-api-versioning | Minted here; pre-cleared as unclaimed in the application-spa vocabulary | The one versioning strategy for the project's wire contract. Any blueprint contributing a versioned API surface must join or supersede this decision |
|
|
12
|
+
| `logging` | ADR-304-application-api-rest-logging | Minted here; pre-cleared as unclaimed in the application-spa vocabulary | The project's primary logging shape. Any blueprint contributing log-emitting server components conflicts here by design |
|
|
13
|
+
|
|
14
|
+
Rules for new topics (inherited from the application-spa vocabulary, restated as law): lower camel case, one concept per topic, no version suffixes. A topic names the decision area, not the chosen answer. Do not mint variants of existing strings (`errorShape`, `auth`, `apiVersion`, `logShape` are all wrong).
|
|
15
|
+
|
|
16
|
+
## Id number bands
|
|
17
|
+
|
|
18
|
+
Band allocation is ratified policy (2026-08-19); the band IS the AC-collision enforcement mechanism, since AC ids are not namespaced by the 0.4.4 grammar. Composing blueprints take a fresh band rather than proposing namespaced AC ids.
|
|
19
|
+
|
|
20
|
+
This table is maintained shelf-wide across every blueprint's `docs/topics.md`. Rows are recorded at ship, never predicted.
|
|
21
|
+
|
|
22
|
+
| Blueprint | US band | ADR/TAC suffix block | Status | Global topics |
|
|
23
|
+
|---|---|---|---|---|
|
|
24
|
+
| application-spa | 1101-1899 | 2xx | shipped v1.3.0 | `clientRouting`, `theming`, `clientState`, `errorEnvelope`, `authModel` |
|
|
25
|
+
| application-api-rest | 2101-2899 | 3xx | shipped v1.0.0 | `errorEnvelope`, `authModel`, `apiVersioning`, `logging` |
|
|
26
|
+
| security-auth-magic-link | 3101-3899 | 5xx | shipped v1.0.0 | `authModel` |
|
|
27
|
+
| email-smtp-resend | 4101-4899 | 4xx | shipped v1.0.0 | none |
|
|
28
|
+
| hello-panel (walkthrough exemplar) | 4101-4899 | 4xx | doc-reserved; teaching exemplar in `packages/rcf-lite/docs/blueprint-authoring-walkthrough.md`, not shipped as a blueprint directory | `operatorPanel` |
|
|
29
|
+
| persistence-data-sqlite | 5101-5899 | 6xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
30
|
+
| ci-pipeline | 6101-6899 | 7xx | shipped v1.0.0 | `ciGates`, `strictCoverageGate` |
|
|
31
|
+
| observability-essentials | 7101-7899 | 8xx | shipped v1.0.0 | `healthProbes`, `readinessSemantics`, `statusPageContract` |
|
|
32
|
+
| security-secrets-management | 8101-8899 | 9xx | shipped v1.0.0 | `secretsSource` |
|
|
33
|
+
| security-auth-clerk | 9101-9899 | 10xx | shipped v1.0.0 | `authModel` |
|
|
34
|
+
| security-auth-oauth2 | 10101-10899 | 11xx | shipped v1.0.0 | `authModel` |
|
|
35
|
+
| security-auth-keycloak | 11101-11899 | 12xx | shipped v1.0.0 | `authModel` |
|
|
36
|
+
| deploy-cloudflare-workers | 12101-12899 | 13xx | shipped v1.0.0 | `deploymentTarget` |
|
|
37
|
+
| persistence-data-d1 | 13101-13899 | 14xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
38
|
+
| observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.0.0 | `healthProbes`, `readinessSemantics` |
|
|
39
|
+
|
|
40
|
+
Suffix-family ids (ADR, TAC): SPA numbers in the 2xx range, this package takes 3xx (ADR-301 to ADR-308, TAC-301 to TAC-306); the next blueprint should take 4xx.
|
|
41
|
+
|
|
42
|
+
## Shared expectations for future composing blueprints
|
|
43
|
+
|
|
44
|
+
- Reuse `errorEnvelope`, `authModel`, `apiVersioning`, and `logging` exactly as spelled here when your blueprint holds an opinion on those decision areas; contribute your own scope:global ADR on the same string and let composition surface the pairing.
|
|
45
|
+
- This blueprint's decisions state the server-side halves: RFC 7807 produced at the pipeline's error boundary, four auth classes enforced in middleware, path-versioned contract, JSON-line logs. Compose compatible client or worker halves, or expect the operator to supersede with project-level decisions.
|
|
46
|
+
- Global topics that plausibly belong to a future blueprint and are NOT claimed here: `messageSerialisation` and `deliverySemantics` (a message-consumer blueprint's natural globals), `caching` (unclaimed by both application-spa and application-api-rest; claim it if your blueprint owns the caching story). Define any of these in your own package's topics doc, in this file's format.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# The REST API blueprint: an operator's guide
|
|
2
|
+
|
|
3
|
+
This guide is for the human running the project, not the coding agent. It explains what applying this blueprint buys you, when it is the wrong tool, and what still needs your judgement afterwards.
|
|
4
|
+
|
|
5
|
+
## What this blueprint is
|
|
6
|
+
|
|
7
|
+
A specification package for a REST service: single deployable, versioned wire contract, no UI in scope. Applying it (`rcf define blueprint add <path>`) merges 50 namespaced documents into your RCF tree: 16 requirements, 20 user stories carrying 117 acceptance criteria, 6 architectural components, and 8 decision records. It also ships reference assets: an OpenAPI 3.1 skeleton with the probe endpoints, error envelope, pagination envelope, and rate-limit shapes pre-populated; a middleware-slot reference for the four auth classes; sample request-response pairs per verb class; and neutral sample resources.
|
|
8
|
+
|
|
9
|
+
The point, in one sentence: the operational and contractual floor of your API becomes part of the specification, so the same build cycle that verifies your features also verifies that the service is documented, observable, probeable, secured, and honest about errors.
|
|
10
|
+
|
|
11
|
+
## What it deliberately is not
|
|
12
|
+
|
|
13
|
+
- It is not code. No framework choice, no middleware implementation, no test files. Your working agent implements tests from the ACs the same way it does for your own stories, and writes the service in whatever stack the project chose. (Adherence is expressed as ACs, decision 5 of the design brief.)
|
|
14
|
+
- It is not your product spec. It says every endpoint declares an auth class and every error wears the envelope; it cannot know what your resources are. Elicitation still happens; this package is the floor under it.
|
|
15
|
+
- It does not ship FBS work items. Build tasks are derived in the host project at creation time, where the project's own constraints, sequencing, and existing work apply. The blueprint contributes the WHAT (REQ/US/AC/TAC/ADR); your project derives the HOW.
|
|
16
|
+
|
|
17
|
+
## When to reach for it
|
|
18
|
+
|
|
19
|
+
Any project whose primary surface is an HTTP API meant to be consumed by clients you do not control end to end: a backend for an SPA, a service in a fleet, a public API. Compose it freely with the application-spa blueprint; that composition is the intended shape for a product with both tiers.
|
|
20
|
+
|
|
21
|
+
## When it does not fit
|
|
22
|
+
|
|
23
|
+
- GraphQL or RPC-first services: the resource-modelling, pagination, and filtering requirements assume REST semantics; the observability, probe, and security categories transfer, but you would be opting out of half the doc set. Wait for (or ask for) a blueprint of that shape instead.
|
|
24
|
+
- Serverless function collections without a shared pipeline: the middleware-ordering architecture assumes one deployable with one request path. The per-category requirements still read well as a checklist, but the TAC structure will not map.
|
|
25
|
+
- Pure internal batch or worker processes with no HTTP surface: only the migrations, logging, and security categories would apply; a worker blueprint is the right home.
|
|
26
|
+
|
|
27
|
+
## What a good outcome looks like
|
|
28
|
+
|
|
29
|
+
Attack the finished service from the outside and try to catch it lying: fetch /docs and call an endpoint straight from the spec, send garbage JSON, reuse an idempotency key with a different body, hammer a public endpoint past its limit, kill the database and watch /healthz/ready tell the truth while /healthz/live stays up, grep the logs for the bearer token you just used. A build that honours this doc set answers every one of those correctly. That is the measure: what an integrating client and an on-call engineer get out of the box.
|
|
30
|
+
|
|
31
|
+
## Your decisions that remain open
|
|
32
|
+
|
|
33
|
+
1. Resources. The blueprint's conventions bind to the resource inventory your project declares during elicitation; the widgets resource in the assets is anatomy, not product.
|
|
34
|
+
2. The four global decisions. Error envelope, auth model, API versioning, and logging shape ship as accepted defaults. Disagree by superseding with a project-level ADR, not by editing the blueprint's files.
|
|
35
|
+
3. Composition conflicts. Adding this blueprint alongside the application-spa blueprint surfaces deliberate conflicts on `errorEnvelope` and `authModel`. That is the mechanism working: resolve each with one project-level decision (RFC 7807 end to end; one credential transport mapped onto the four classes).
|
|
36
|
+
4. Class defaults and budgets. The four auth classes are fixed; their rate limits, the idempotency TTL, the pagination limits, and the readiness check set are project configuration the ACs require you to declare honestly.
|
|
37
|
+
5. Exposure policy for /docs and /openapi.* in production: always-on, authenticated, or off. The ACs require the policy stated; they do not pick it for you.
|
|
38
|
+
|
|
39
|
+
## Cost honesty
|
|
40
|
+
|
|
41
|
+
This doc set makes an API slower to declare done, on purpose: 117 criteria is the price of "no endpoint ships undocumented, unmeasured, or unguarded". If you are prototyping a throwaway integration, that price is wrong; skip the blueprint rather than opting out of half of it. If other people's code will call this service, the price is the product.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# application-spa blueprint (v1.3.0)
|
|
2
|
+
|
|
3
|
+
The first content blueprint on the rcf-build-lite blueprint mechanism (design brief v2, ratified; Phase 2 of the blueprint programme). Scope: single-page applications with public and authenticated surfaces, session-based auth, single deployable, dark and light by default, fully responsive by default.
|
|
4
|
+
|
|
5
|
+
## Apply
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
rcf define blueprint add <path-to>/blueprints/application-spa
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Phase 1 resolves local path sources only; registry and git-ref resolution is a mechanism follow-up. Apply is idempotent; `rcf define blueprint list` shows the applied entry; `rcf define blueprint remove application-spa` cleanly removes an unreferenced application.
|
|
12
|
+
|
|
13
|
+
## Anatomy
|
|
14
|
+
|
|
15
|
+
| Piece | Where | What |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| Metadata | `blueprint.json` | Slug, version, and the 74 contributions with scope/topic on the five global ADRs |
|
|
18
|
+
| Doc set | `contributions/` | 21 REQs, 33 USs (193 ACs), 11 TACs, 9 ADRs, all schema-valid against rcf-schemas 0.4.5 and namespaced (`application-spa-REQ-001` prefix family; `ADR-201-application-spa-routing` suffix family) |
|
|
19
|
+
| Design tokens | `assets/tokens/design-tokens.json` | Colour (both themes, contrast-validated), spacing, radius, typography, elevation, motion, breakpoints |
|
|
20
|
+
| Stylesheet | `assets/tokens/theme.css` | The tokens realised as CSS custom properties with the theme-switch, focus, and reduced-motion machinery |
|
|
21
|
+
| Wireframes | `assets/wireframes/` | Nine canonical surfaces: dashboard, list, detail, form, empty, error, sign-in, sign-out, session-expired |
|
|
22
|
+
| Component specs | `assets/component-specs/` | Behaviour contracts for the full application-spa-REQ-006 component inventory |
|
|
23
|
+
| Viewport table | `assets/viewports.md` | The ratified 360/768/1024/1440 baseline and per-breakpoint layout rules |
|
|
24
|
+
| Sample data | `assets/sample-data/` | Neutral entities for skeletons, wireframe realisation, and state demos |
|
|
25
|
+
| Guide | `guide/application-spa.md` | Operator-facing: when to use it, when not, what stays your call |
|
|
26
|
+
| Coordination vocabulary | `docs/topics.md` | Exact global-topic strings and id number bands for composing blueprints |
|
|
27
|
+
|
|
28
|
+
The doc set is contributions (copied into the project tree by `rcf define blueprint add`); the guide, assets, and docs are package-resident references. Guide rendering into `rcf/knowledge/docs/blueprint-guides/` and asset ingestion are mechanism follow-ups; until they land, the working agent reads them from the applied blueprint's source path recorded in `manifest.blueprints[].source`.
|
|
29
|
+
|
|
30
|
+
## What it contributes, and what it deliberately does not
|
|
31
|
+
|
|
32
|
+
Contributed kinds: REQ, US (with inline ACs), TAC, ADR. Adherence is expressed as ACs; the blueprint ships no test files (ratified decision 5) and no code.
|
|
33
|
+
|
|
34
|
+
No FBS contributions, as a matter of principle (ratified policy 2026-08-19): FBSs are the work of the implementing agent, not the blueprint; project constraints have to be applied at the time of creation. The blueprint contributes the WHAT; the implementing agent derives the HOW-tasks (FBS) in the host project, where the ACs contributed here get picked up by the project's own build sequencing. Structurally the same conclusion falls out of the mechanism: an FBS binds to a bsId and a buildOrder slot the blueprint cannot know.
|
|
35
|
+
|
|
36
|
+
## The five global decisions
|
|
37
|
+
|
|
38
|
+
ADR-201 clientRouting, ADR-202 theming, ADR-203 clientState, ADR-204 errorEnvelope, ADR-205 authModel ship `scope: global`. Composing with the application-api-rest blueprint deliberately conflicts on `errorEnvelope` and `authModel`; see `docs/topics.md` for the exact strings, the expected resolutions, and the AC id band allocation (application-spa owns 1101-1899).
|
|
39
|
+
|
|
40
|
+
## Quality bar (ratified)
|
|
41
|
+
|
|
42
|
+
WCAG 2.2 AA (contrast 4.5:1 body / 3:1 large-and-non-text, visible focus, 24x24 targets, no traps), breakpoints 360/768/1024/1440 with zero horizontal overflow, dark/light token parity, modular type scale with 14/16px body floors, motion tokens honouring reduced motion, performance budget (FMP under 2s on 3G-fast, Lighthouse 90+, main-thread under 3s). Every bar is carried by ACs in the doc set, not by this README.
|
|
43
|
+
|
|
44
|
+
## What v1.1.0 adds
|
|
45
|
+
|
|
46
|
+
v1.1.0 is an additive-non-global minor bump. No global topics change; no contribution is removed. The bump introduces the mechanism-reach cure for the icon and semantic-token disciplines that watchpost run4 caught shipping while the build cycle ran green.
|
|
47
|
+
|
|
48
|
+
- `application-spa-US-1129` (anchored to application-spa-REQ-005) with four ACs binding the token-adherence probe.
|
|
49
|
+
- `application-spa-US-1130` (anchored to application-spa-REQ-011) with four ACs binding the icon-adherence probe.
|
|
50
|
+
- `TAC-207-application-spa-token-adherence-probe`: a Node build-scan probe the project realises; scans the built component-scope stylesheets for raw palette literals, diffs the light and dark token key sets for parity, writes a stable JSON report, and exits non-zero on any violation.
|
|
51
|
+
- `TAC-208-application-spa-icon-adherence-probe`: a Node build-scan probe the project realises; scans the component source for inline SVG outside the icon registry and for icon references naming aliases the registry does not declare, writes a stable JSON report, and exits non-zero on any violation.
|
|
52
|
+
- `ADR-202-application-spa-theming` and `ADR-206-application-spa-iconography` are amended in place at version 1.1.0: the decision is unchanged; the consequences narrative names the new probe and the ci-pipeline gate-failure path the probe rides.
|
|
53
|
+
|
|
54
|
+
The v1.1 probes are runtime-observable AC binding at the ship gate. When a project wires each probe as a required gate in the ci-pipeline runner (TAC-701), a violation refuses ship through TAC-702's per-gate report and TAC-703's aggregate report; the run4 pattern of a discipline declared but not compelled no longer applies to these two categories.
|
|
55
|
+
|
|
56
|
+
## What v1.2.0 adds
|
|
57
|
+
|
|
58
|
+
v1.2.0 is an additive-non-global minor bump. No global topics change; no contribution is removed. The bump cures the styled-under-shipped-CSP mechanism-reach gap watchpost caught at first production review (w-2026-08-24-003, w-2026-08-24-004): FBS-011 declared strict CSP (`style-src 'self'`, no `'unsafe-inline'`), FBS-013/015 rendered inline `<style>` blocks, every existing UI-bearing gate passed, and every production page rendered unstyled at deploy because the harness bypassed the production security-header path.
|
|
59
|
+
|
|
60
|
+
- `application-spa-US-1131` (anchored to application-spa-REQ-018) with six ACs binding the styled-under-shipped-CSP probe.
|
|
61
|
+
- `TAC-209-application-spa-csp-styled-adherence-probe`: a Node probe the project realises; boots the target server through the production entry-point path, drives a real headless browser at every enumerated UI route, refuses on any inline `<style>` block, any style-src relaxation, any browser-default computed body background, or any non-200 text/css stylesheet response.
|
|
62
|
+
- The rcf-lite package gains a matching `noInlineStyleBlocks` block-severity invariant in `V1_INVARIANTS` (DOM-string arm of AC-1131-2 the browser-verify runner can enforce natively).
|
|
63
|
+
|
|
64
|
+
## What v1.3.0 adds
|
|
65
|
+
|
|
66
|
+
v1.3.0 is an additive-non-global minor bump. No global topics change; no contribution is removed. The bump cures the deployment-gate class defect the watchpost first-production review caught (w-2026-08-24-005, class cure w-2026-08-24-006): the app was signed off as DEPLOYED with the only login path (magic-link email) inert because RESEND_API_KEY carried a placeholder value, admin access was reachable only via manually minted tokens, and the gap was filed as a "quirk" note in status.md rather than blocked at gate time. A real key existed in the estate the whole time.
|
|
67
|
+
|
|
68
|
+
The bump encodes three class rules the deployment / handover gates now compel:
|
|
69
|
+
|
|
70
|
+
1. **External-service dependency provisioning.** Every external service the app calls at runtime is enumerated on a stable manifest; every credential field is checked against the canonical placeholder-shape detector; every `verified` dependency requires captured live-handshake evidence from the shipped runtime; every `deferred` dependency requires an operator-ratified persistent record (a README note or a status.md quirk line does NOT satisfy).
|
|
71
|
+
2. **Core-flow end-to-end.** Every core user flow is enumerated on a stable manifest; authentication is ALWAYS included when the app has a application-spa-REQ-009 surface; every flow executes end-to-end against the shipped runtime (production entry-point construction, production security headers, real external providers) driven by a real browser, with captured evidence per flow; a skipped, timed-out, or absent flow is a hard refusal.
|
|
72
|
+
3. **Sign-off vocabulary.** A run in which every core flow completes and every external dependency is verified-or-ratified-deferred lands at aggregate verdict `ok`. Any placeholder-shape credential, any missing handshake evidence, any unratified deferral, any core-flow fail-or-skip lands at aggregate verdict `deployed-with-defects`. A "documented workaround exists" does not convert a broken flow into `ok`; the aggregate verdict is what the ci-pipeline runner surfaces.
|
|
73
|
+
|
|
74
|
+
Contributions:
|
|
75
|
+
|
|
76
|
+
- `application-spa-US-1132` (anchored to application-spa-REQ-018) with six ACs binding the external-service-dependency provisioning probe.
|
|
77
|
+
- `application-spa-US-1133` (anchored to application-spa-REQ-008) with six ACs binding the core-flow end-to-end probe.
|
|
78
|
+
- `TAC-210-application-spa-external-dependency-provisioning-probe`: a Node probe the project realises; reads the external-service-dependency manifest, applies the canonical placeholder-shape detector to every credential field, replays a live handshake against the shipped runtime for every `verified` entry, and reads the ratified-deferrals store for every `deferred` entry. Writes `reports/external-dependency-provisioning.json`.
|
|
79
|
+
- `TAC-211-application-spa-core-flow-e2e-probe`: a Node probe the project realises; boots the target server through the production entry-point path, drives a real headless browser through every enumerated core flow against real external providers, and refuses on any fail/skip/absent flow. Writes `reports/core-flow-e2e-adherence.json`.
|
|
80
|
+
- The rcf-lite package gains a shared `detectPlaceholderCredentialShape` utility under `packages/rcf-lite/src/deployment/` that TAC-210 realisations import; extending the placeholder-shape ruleset is a rcf-lite minor bump, never a per-project fork.
|
|
81
|
+
|
|
82
|
+
## Known mechanism-reach gaps
|
|
83
|
+
|
|
84
|
+
The blueprint declares a broader UI floor than v1.1-v1.3 cures. The following categories still declare their discipline through the AC layer but have no blueprint-side runtime-observable probe; a project inherits them as project-side ownership until a future minor bump adds probes.
|
|
85
|
+
|
|
86
|
+
- **Component-library baseline (application-spa-REQ-006, US-1111 and peers).** The component-library discipline (cards, tables, tabs, pagination, forms) is declared through ACs anchored to TAC-203-application-spa-component-library. A project ships components without a blueprint-side probe checking that shipped components realise the discipline; project-side TCs bind the ACs to the runtime surface, and `rcf audit coverage --strict` refuses ship when a component AC is uncovered. Blueprint-side probe candidate for a future minor.
|
|
87
|
+
- **Responsive baseline (application-spa-REQ-004, US-1105).** The 360/768/1024/1440 no-horizontal-overflow discipline is declared through ACs; there is no blueprint-side probe that renders every route at every baseline and reports overflow. `rcf verify browser` covers a subset when the project wires the uiBaseline pack; the mechanism-reach question of which routes the pack visits is project-owned.
|
|
88
|
+
- **Motion and reduced-motion (application-spa-REQ-012, US-1112).** Reduced-motion respect is declared through ACs; no blueprint-side probe inspects the built stylesheet output for animation declarations that ignore `prefers-reduced-motion`.
|
|
89
|
+
|
|
90
|
+
These gaps are the honest residual. The icon, token, styled-under-CSP, external-dependency provisioning, and core-flow E2E cures demonstrate the shape a future sweep takes for the remaining categories: name the runtime-observable surface, ship a Node probe TAC, add a low-band US with runtime-observable ACs binding the TAC, amend the anchor ADR when the consequences narrative needs the probe named.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Component specs: actions and text inputs
|
|
2
|
+
|
|
3
|
+
Contracts for buttons, text inputs, and textareas (application-spa-US-1108). Not code: the working agent implements these against the tokens in assets/tokens.
|
|
4
|
+
|
|
5
|
+
## Button
|
|
6
|
+
|
|
7
|
+
Variants: primary (primary/onPrimary), secondary (surface-raised + border, onSurface), ghost (transparent, primary text), destructive (danger/onDanger).
|
|
8
|
+
|
|
9
|
+
| State | Spec |
|
|
10
|
+
|---|---|
|
|
11
|
+
| default | Variant fill and text tokens; radius-sm; space-2 vertical, space-4 horizontal padding; target 24x24 minimum |
|
|
12
|
+
| hover | Perceptible shift of the variant fill (token-derived, both themes); cursor pointer |
|
|
13
|
+
| focus | focusRing outline, 2px offset 2px; never outline suppression without replacement |
|
|
14
|
+
| active | Pressed shift of fill; no layout movement |
|
|
15
|
+
| disabled | Reduced-emphasis fill; excluded from Tab order; aria-disabled or disabled; boundary still 3:1 |
|
|
16
|
+
| busy | Inline spinner replaces or precedes label; label persists or is announced; repeat activation ignored (AC-1108-2) |
|
|
17
|
+
|
|
18
|
+
Semantics: real button element (or role plus full keyboard equivalence). Enter and Space activate. Icon-only buttons carry an accessible name (AC-1118-4). Destructive buttons never take default focus in confirmations (AC-1108-3).
|
|
19
|
+
|
|
20
|
+
## Text input
|
|
21
|
+
|
|
22
|
+
Anatomy: visible label (programmatically associated), control, optional helper text, error slot. Placeholder is a hint, never the label (AC-1108-5).
|
|
23
|
+
|
|
24
|
+
| State | Spec |
|
|
25
|
+
|---|---|
|
|
26
|
+
| default | surface background, border token boundary, radius-sm, onSurface text |
|
|
27
|
+
| focus | focusRing outline; border may echo the ring colour |
|
|
28
|
+
| disabled | surface-sunken fill; excluded from Tab; announced disabled |
|
|
29
|
+
| error | danger border and icon; message in error slot wired via aria-describedby with aria-invalid (AC-1108-6) |
|
|
30
|
+
| success | success border or icon where confirmation is meaningful; never colour alone (AC-1126-6) |
|
|
31
|
+
|
|
32
|
+
Behaviour: validation timing per application-spa-US-1113. Attributes per data intent: type, inputmode, autocomplete (AC-1113-6). Text at text-body size; 16px minimum on mobile to avoid zoom-on-focus.
|
|
33
|
+
|
|
34
|
+
## Textarea
|
|
35
|
+
|
|
36
|
+
Text-input contract plus: resizable within declared min and max rows (AC-1108-7), content scrolls inside the control when full, character-count indicator where a limit exists (count exposed to assistive technology as it approaches the limit).
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Component specs: data display
|
|
2
|
+
|
|
3
|
+
Contracts for card, table, tabs, and pagination (application-spa-US-1111).
|
|
4
|
+
|
|
5
|
+
## Card
|
|
6
|
+
|
|
7
|
+
Anatomy: surface-raised fill, radius-md, elevation-1, space-4 or space-6 internal padding, optional media slot, heading, body, actions row. Clickable-whole-card: exactly one link covering the card with one accessible name; secondary actions inside remain independently operable without nested-interactive violations (AC-1111-1). Hover on clickable cards: elevation-2 shift. Cards never carry their own bespoke palette; intent accents come from semantic tokens.
|
|
8
|
+
|
|
9
|
+
## Table
|
|
10
|
+
|
|
11
|
+
Markup: semantic table, thead/th with scope, caption or labelled heading. Column headers associate to cells (AC-1111-2). Sortable headers are buttons inside th exposing aria-sort, cycling none, ascending, descending (AC-1111-3). Row density: space-3 vertical padding; zebra striping optional via surface-raised; row hover highlight where rows act. Below 768: card layout per row, or a table-scoped horizontal scroll container with a visible affordance; the page never scrolls horizontally (AC-1105-4). Owns its state quartet: skeleton rows for loading, in-table empty state, in-table error with retry (AC-1111-4). Bulk selection, where declared: header checkbox supports all and indeterminate; selected count surfaces with the bulk actions.
|
|
12
|
+
|
|
13
|
+
## Tabs
|
|
14
|
+
|
|
15
|
+
Pattern (AC-1111-5): tablist with tab roles; one Tab stop; ArrowLeft/ArrowRight move between tabs (Home and End jump); activation mode declared per use (automatic on focus, or manual with Enter/Space); each panel labelled by its tab. Active tab: primary underline or fill indicator meeting 3:1 non-text contrast plus a non-colour signal. Persistence, where the journey spec declares it, serialises the active tab to the URL or stored state (AC-1111-6). Overflowing tab sets scroll within the tablist with affordances, never wrap into a second row.
|
|
16
|
+
|
|
17
|
+
## Pagination
|
|
18
|
+
|
|
19
|
+
Anatomy: previous, numbered window or position statement, next; optional page-size select. Impossible moves render disabled with state exposed, not hidden (AC-1111-7). Current page exposed via aria-current. Page changes update the canonical URL (AC-1111-8) and move focus predictably to the updated collection region. Cursor-paginated collections without total counts state relative position honestly (for example "Page 3") without inventing totals.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Component specs: feedback and status
|
|
2
|
+
|
|
3
|
+
Contracts for alert, banner, empty state, loading and skeleton, error state, and spinner (application-spa-US-1112).
|
|
4
|
+
|
|
5
|
+
## Alert
|
|
6
|
+
|
|
7
|
+
Intents: info (accent), success, warning, danger, each pairing intent colour, intent icon from the alias registry, and a non-colour signal (AC-1112-1). Anatomy: icon, optional title, body, optional actions, optional dismiss. Dynamic alerts announce via live region (polite; assertive for danger) without stealing focus (AC-1112-2). Static page-load alerts are ordinary content. Body copy follows application-spa-REQ-017: situation plus next step.
|
|
8
|
+
|
|
9
|
+
## Banner
|
|
10
|
+
|
|
11
|
+
Lives in the shell-owned slot below the top bar; pushes layout, never overlaps (AC-1112-3). One banner at a time; priority order: offline (application-spa-US-1121) beats promotional. Dismissible when the condition is not persistent; persistent conditions (offline) clear themselves when resolved. Full-width, surface-raised or intent-toned fill, space-3 vertical padding.
|
|
12
|
+
|
|
13
|
+
## Empty state
|
|
14
|
+
|
|
15
|
+
Shape per assets/wireframes/empty.md: visual, headline naming the absent content, filling action (AC-1112-4). Context-specific copy per instance (AC-1117-3).
|
|
16
|
+
|
|
17
|
+
## Skeleton and loading
|
|
18
|
+
|
|
19
|
+
Skeletons mirror the incoming layout: text lines, avatar circles, card blocks in the target geometry (AC-1112-5). Shimmer within motion tokens; static under reduced motion (AC-1119-5). Region marked busy for assistive technology; skeletons themselves are hidden from the accessibility tree. Appear-delay of roughly 150ms so cached-fast loads never flash a skeleton (AC-1117-6).
|
|
20
|
+
|
|
21
|
+
## Error state
|
|
22
|
+
|
|
23
|
+
Shape per assets/wireframes/error.md region variant: intent icon, what failed in user terms, consequence, retry or alternative (AC-1112-6). Distinguishes user-fixable from system failure (AC-1117-4). Never a raw exception or internal id (AC-1124-4).
|
|
24
|
+
|
|
25
|
+
## Spinner
|
|
26
|
+
|
|
27
|
+
Indeterminate operations only, where no content shape is known (AC-1112-7). Always paired with an accessible label naming the operation. Sizes: inline (1em, inside buttons per the busy contract) and regional (space-8). Uses onSurfaceMuted or intent colour; rotation duration from motion tokens; static-with-label under reduced motion.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Component specs: overlays
|
|
2
|
+
|
|
3
|
+
Contracts for modal, drawer, tooltip, popover, and toast (application-spa-US-1110). Shared rules: token-driven surfaces and backdrops in both themes; Escape closes topmost-first (AC-1110-8); motion from motion tokens honouring reduced motion.
|
|
4
|
+
|
|
5
|
+
## Modal
|
|
6
|
+
|
|
7
|
+
Focus: trapped while open; initial focus on the first meaningful element (never a destructive action, AC-1108-3); returns to trigger on close (AC-1110-1). Background inert. Dismissal: Escape and explicit close always; backdrop click only for non-destructive intents (AC-1110-2). Structure: labelled by its heading; described by its body where useful. Sizing: max-width per breakpoint; full-screen at 360 where content demands; internal scroll, never page scroll behind. Enter: motion-base ease-out; exit motion-fast.
|
|
8
|
+
|
|
9
|
+
## Drawer
|
|
10
|
+
|
|
11
|
+
Modal contract plus: slides from the declared edge; full-width at 360, token-sized panel above (AC-1110-3). Used for secondary flows that keep page context relevant; anything demanding full attention is a modal or a route.
|
|
12
|
+
|
|
13
|
+
## Tooltip
|
|
14
|
+
|
|
15
|
+
Trigger: hover and keyboard focus, short token delay; hides on blur, pointer-leave, and Escape (AC-1110-4). Content: text only, no interactive content; interactive needs a popover. Wired via aria-describedby. Never the only carrier of essential information. Positions to stay in-viewport.
|
|
16
|
+
|
|
17
|
+
## Popover
|
|
18
|
+
|
|
19
|
+
Opens on activation, receives focus, returns it on close; closes on Escape and outside click; repositions within the viewport (AC-1110-5). Carries interactive content (menus, filter panels, the [...] overflow menu). Menu-flavoured popovers add menu semantics with arrow-key traversal (AC-1103-3).
|
|
20
|
+
|
|
21
|
+
## Toast
|
|
22
|
+
|
|
23
|
+
One shell-owned region (AC-1110-6): top-right above 768, bottom full-width at 360. Auto-dismiss on motion-token-derived duration scaled to content length; hover and focus pause the timer. Announced via polite live region; assertive only for danger toasts. Never receives focus automatically; never the only path to an action (AC-1110-7). Maximum three visible; older toasts collapse into a count. Each toast: intent icon (semantic alias), one sentence, optional single action, dismiss control.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Component specs: selection controls
|
|
2
|
+
|
|
3
|
+
Contracts for select, checkbox, radio group, switch, and combobox (application-spa-US-1109). All render default, hover, focus, disabled, and error states from tokens in both themes, and meet the 24x24 target including label hit area.
|
|
4
|
+
|
|
5
|
+
## Select
|
|
6
|
+
|
|
7
|
+
Keyboard: Enter, Space, or arrows open; arrows traverse; type-ahead jumps; Enter commits; Escape cancels and restores the prior value (AC-1109-1). Semantics: native select preferred; a styled listbox must replicate the full grammar and expose expanded state and active option. Long option lists scroll within the popup; the popup repositions to stay in-viewport.
|
|
8
|
+
|
|
9
|
+
## Checkbox
|
|
10
|
+
|
|
11
|
+
States: unchecked, checked, indeterminate (parent-of-mixed only). Space toggles. The label is part of the hit area. Indeterminate is set programmatically and announced (AC-1109-2). Error state renders the danger boundary plus message per the input contract.
|
|
12
|
+
|
|
13
|
+
## Radio group
|
|
14
|
+
|
|
15
|
+
Grouped under a fieldset with a legend (or labelled group role). One Tab stop; arrows move selection and selection follows focus; exactly one checked member (AC-1109-3). Wrapping: arrows cycle from last to first.
|
|
16
|
+
|
|
17
|
+
## Switch
|
|
18
|
+
|
|
19
|
+
Role switch with checked state exposed; Space and Enter toggle (AC-1109-4). Applies immediately, no submit; a pending toggle shows busy and reverts visibly on failure (application-spa-US-1120 optimistic contract). Label states the thing controlled, not the current value. On and off are distinguishable without colour alone: thumb position plus track token.
|
|
20
|
+
|
|
21
|
+
## Combobox
|
|
22
|
+
|
|
23
|
+
Grammar (AC-1109-5): typing filters the listbox; ArrowDown enters and traverses it; Enter commits the active option; Escape closes without commit; Tab commits-or-closes per declared mode and always exits. ARIA: combobox role, aria-expanded, aria-activedescendant (or focus-moving equivalent), listbox with option roles. Zero matches renders the designed no-matches message inside the listbox (AC-1109-6). Async option loading shows an in-listbox loading state, never a frozen popup. Multi-select variants render choices as dismissible chips inside the field with each chip keyboard-removable.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"blueprint": "application-spa",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"notes": "Neutral sample entities for wireframe realisation, skeleton shaping, and state-quartet demos. Names and values are deliberately generic; replace with project entities during elicitation. Includes the shapes the wireframes reference: a listable collection, a detail record, a user profile, and a problem-details error (ADR-204)."
|
|
6
|
+
},
|
|
7
|
+
"users": [
|
|
8
|
+
{ "id": "u-1001", "displayName": "Alex Morgan", "email": "alex.morgan@example.com", "role": "member", "themePreference": "dark", "createdAt": "2026-05-04T09:12:00Z" },
|
|
9
|
+
{ "id": "u-1002", "displayName": "Sam Patel", "email": "sam.patel@example.com", "role": "admin", "themePreference": null, "createdAt": "2026-03-18T14:40:00Z" }
|
|
10
|
+
],
|
|
11
|
+
"items": [
|
|
12
|
+
{ "id": "itm-2001", "title": "Quarterly readiness review", "status": "active", "owner": "u-1001", "updatedAt": "2026-08-14T16:22:00Z", "tags": ["review", "q3"] },
|
|
13
|
+
{ "id": "itm-2002", "title": "Supplier onboarding pack", "status": "draft", "owner": "u-1002", "updatedAt": "2026-08-11T08:05:00Z", "tags": ["onboarding"] },
|
|
14
|
+
{ "id": "itm-2003", "title": "Renewal follow-up", "status": "archived", "owner": "u-1001", "updatedAt": "2026-07-30T11:47:00Z", "tags": ["renewal", "follow-up"] }
|
|
15
|
+
],
|
|
16
|
+
"itemDetail": {
|
|
17
|
+
"id": "itm-2001",
|
|
18
|
+
"title": "Quarterly readiness review",
|
|
19
|
+
"status": "active",
|
|
20
|
+
"owner": { "id": "u-1001", "displayName": "Alex Morgan" },
|
|
21
|
+
"description": "Assess readiness across the five workstreams ahead of the quarterly checkpoint.",
|
|
22
|
+
"activity": [
|
|
23
|
+
{ "at": "2026-08-14T16:22:00Z", "by": "u-1001", "action": "updated", "summary": "Revised workstream three notes" },
|
|
24
|
+
{ "at": "2026-08-12T10:03:00Z", "by": "u-1002", "action": "commented", "summary": "Added supplier context" }
|
|
25
|
+
],
|
|
26
|
+
"updatedAt": "2026-08-14T16:22:00Z"
|
|
27
|
+
},
|
|
28
|
+
"collectionPage": {
|
|
29
|
+
"data": ["itm-2001", "itm-2002", "itm-2003"],
|
|
30
|
+
"cursor": { "next": "cur-3f9a", "prev": null },
|
|
31
|
+
"limit": 25
|
|
32
|
+
},
|
|
33
|
+
"problemDetails": {
|
|
34
|
+
"type": "https://example.com/problems/validation",
|
|
35
|
+
"title": "The request could not be processed",
|
|
36
|
+
"status": 422,
|
|
37
|
+
"detail": "The title field is required.",
|
|
38
|
+
"instance": "/items",
|
|
39
|
+
"errors": [{ "field": "title", "message": "Enter a title before saving." }]
|
|
40
|
+
}
|
|
41
|
+
}
|