rcf-lite 0.21.0 → 0.22.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 +16 -0
- package/blueprints/application-account-settings/CHANGELOG.md +12 -0
- package/blueprints/application-account-settings/README.md +114 -0
- package/blueprints/application-account-settings/blueprint.json +234 -0
- package/blueprints/application-account-settings/contributions/adrs/adr-2601-application-account-settings-capability-vocabulary.json +20 -0
- package/blueprints/application-account-settings/contributions/adrs/adr-2602-application-account-settings-security-surface-shape.json +20 -0
- package/blueprints/application-account-settings/contributions/adrs/adr-2603-application-account-settings-theme-persistence.json +20 -0
- package/blueprints/application-account-settings/contributions/adrs/adr-2604-application-account-settings-reauth-window.json +20 -0
- package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-001.json +18 -0
- package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-002.json +18 -0
- package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-003.json +18 -0
- package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-004.json +18 -0
- package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-005.json +18 -0
- package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-006.json +18 -0
- package/blueprints/application-account-settings/contributions/tacs/tac-2601-application-account-settings-shell.json +41 -0
- package/blueprints/application-account-settings/contributions/tacs/tac-2602-application-account-settings-capability-discovery.json +28 -0
- package/blueprints/application-account-settings/contributions/tacs/tac-2603-application-account-settings-hosted-ui-bridge.json +35 -0
- package/blueprints/application-account-settings/contributions/tacs/tac-2604-application-account-settings-session-store.json +40 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25101.json +34 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25102.json +27 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25103.json +27 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25104.json +27 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25105.json +33 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25106.json +27 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25107.json +27 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25108.json +27 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25109.json +33 -0
- package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25110.json +27 -0
- package/blueprints/application-account-settings/docs/topics.md +48 -0
- package/blueprints/application-account-settings/guide/application-account-settings.md +30 -0
- package/blueprints/application-account-settings/probe-packs/application-account-settings.pack.mjs +246 -0
- package/blueprints/application-admin-console/docs/topics.md +7 -0
- package/blueprints/application-api-rest/docs/topics.md +8 -1
- package/blueprints/application-charts/docs/topics.md +7 -0
- package/blueprints/application-dashboard/docs/topics.md +7 -0
- package/blueprints/application-datatable/docs/topics.md +7 -0
- package/blueprints/application-empty-error-states/CHANGELOG.md +9 -0
- package/blueprints/application-empty-error-states/README.md +88 -0
- package/blueprints/application-empty-error-states/blueprint.json +119 -0
- package/blueprints/application-empty-error-states/contributions/adrs/adr-2301-application-empty-error-states-status-contract.json +25 -0
- package/blueprints/application-empty-error-states/contributions/adrs/adr-2302-application-empty-error-states-stack-trace-visibility.json +25 -0
- package/blueprints/application-empty-error-states/contributions/adrs/adr-2303-application-empty-error-states-offline-strategy.json +25 -0
- package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-001.json +18 -0
- package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-002.json +18 -0
- package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-003.json +18 -0
- package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-004.json +18 -0
- package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-005.json +18 -0
- package/blueprints/application-empty-error-states/contributions/tacs/tac-2301-application-empty-error-states-state-machine.json +46 -0
- package/blueprints/application-empty-error-states/contributions/tacs/tac-2302-application-empty-error-states-recovery-router.json +36 -0
- package/blueprints/application-empty-error-states/contributions/tacs/tac-2303-application-empty-error-states-offline-buffer.json +40 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22101.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22102.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22103.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22104.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22105.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22106.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22107.json +29 -0
- package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22108.json +29 -0
- package/blueprints/application-empty-error-states/docs/topics.md +53 -0
- package/blueprints/application-empty-error-states/guide/application-empty-error-states.md +50 -0
- package/blueprints/application-empty-error-states/probe-packs/application-empty-error-states.pack.mjs +284 -0
- package/blueprints/application-error-handling/docs/topics.md +7 -0
- package/blueprints/application-file-upload/CHANGELOG.md +9 -0
- package/blueprints/application-file-upload/README.md +85 -0
- package/blueprints/application-file-upload/blueprint.json +114 -0
- package/blueprints/application-file-upload/contributions/adrs/adr-2401-application-file-upload-transport.json +25 -0
- package/blueprints/application-file-upload/contributions/adrs/adr-2402-application-file-upload-accepted-set.json +25 -0
- package/blueprints/application-file-upload/contributions/adrs/adr-2403-application-file-upload-virus-scan.json +25 -0
- package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-001.json +18 -0
- package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-002.json +18 -0
- package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-003.json +18 -0
- package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-004.json +18 -0
- package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-005.json +18 -0
- package/blueprints/application-file-upload/contributions/tacs/tac-2401-application-file-upload-input.json +46 -0
- package/blueprints/application-file-upload/contributions/tacs/tac-2402-application-file-upload-transport.json +47 -0
- package/blueprints/application-file-upload/contributions/tacs/tac-2403-application-file-upload-progress-announcer.json +46 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23101.json +28 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23102.json +28 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23103.json +29 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23104.json +28 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23105.json +29 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23106.json +28 -0
- package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23107.json +28 -0
- package/blueprints/application-file-upload/docs/topics.md +58 -0
- package/blueprints/application-file-upload/guide/application-file-upload.md +48 -0
- package/blueprints/application-file-upload/probe-packs/application-file-upload.pack.mjs +238 -0
- package/blueprints/application-forms-wizard/CHANGELOG.md +9 -0
- package/blueprints/application-forms-wizard/README.md +102 -0
- package/blueprints/application-forms-wizard/blueprint.json +120 -0
- package/blueprints/application-forms-wizard/contributions/adrs/adr-2501-application-forms-wizard-navigation.json +25 -0
- package/blueprints/application-forms-wizard/contributions/adrs/adr-2502-application-forms-wizard-save-and-return.json +25 -0
- package/blueprints/application-forms-wizard/contributions/adrs/adr-2503-application-forms-wizard-step-indicator.json +25 -0
- package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-001.json +18 -0
- package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-002.json +18 -0
- package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-003.json +18 -0
- package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-004.json +18 -0
- package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-005.json +18 -0
- package/blueprints/application-forms-wizard/contributions/tacs/tac-2501-application-forms-wizard-task-list.json +46 -0
- package/blueprints/application-forms-wizard/contributions/tacs/tac-2502-application-forms-wizard-error-summary.json +40 -0
- package/blueprints/application-forms-wizard/contributions/tacs/tac-2503-application-forms-wizard-draft-store.json +40 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24101.json +28 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24102.json +29 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24103.json +28 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24104.json +29 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24105.json +28 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24106.json +28 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24107.json +28 -0
- package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24108.json +29 -0
- package/blueprints/application-forms-wizard/docs/topics.md +49 -0
- package/blueprints/application-forms-wizard/guide/application-forms-wizard.md +48 -0
- package/blueprints/application-forms-wizard/probe-packs/application-forms-wizard.pack.mjs +233 -0
- package/blueprints/application-notifications-in-app/docs/topics.md +7 -0
- package/blueprints/application-onboarding-tour/CHANGELOG.md +12 -0
- package/blueprints/application-onboarding-tour/README.md +77 -0
- package/blueprints/application-onboarding-tour/blueprint.json +164 -0
- package/blueprints/application-onboarding-tour/contributions/adrs/adr-2701-application-onboarding-tour-dismissal-policy.json +20 -0
- package/blueprints/application-onboarding-tour/contributions/adrs/adr-2702-application-onboarding-tour-completion-store-shape.json +20 -0
- package/blueprints/application-onboarding-tour/contributions/adrs/adr-2703-application-onboarding-tour-checklist-anchor.json +20 -0
- package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-001.json +18 -0
- package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-002.json +18 -0
- package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-003.json +18 -0
- package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-004.json +18 -0
- package/blueprints/application-onboarding-tour/contributions/tacs/tac-2701-application-onboarding-tour-step-runner.json +41 -0
- package/blueprints/application-onboarding-tour/contributions/tacs/tac-2702-application-onboarding-tour-checklist-slot.json +35 -0
- package/blueprints/application-onboarding-tour/contributions/tacs/tac-2703-application-onboarding-tour-completion-store.json +34 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26101.json +27 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26102.json +27 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26103.json +27 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26104.json +27 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26105.json +27 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26106.json +27 -0
- package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26107.json +27 -0
- package/blueprints/application-onboarding-tour/docs/topics.md +48 -0
- package/blueprints/application-onboarding-tour/guide/application-onboarding-tour.md +59 -0
- package/blueprints/application-onboarding-tour/probe-packs/application-onboarding-tour.pack.mjs +231 -0
- package/blueprints/application-spa/docs/topics.md +8 -1
- package/blueprints/delivery-ci-workflows/docs/topics.md +8 -1
- package/blueprints/deploy-cloudflare-workers/docs/topics.md +8 -1
- package/blueprints/email-smtp-resend/docs/topics.md +8 -1
- package/blueprints/object-storage-s3/CHANGELOG.md +13 -0
- package/blueprints/object-storage-s3/README.md +108 -0
- package/blueprints/object-storage-s3/blueprint.json +72 -0
- package/blueprints/object-storage-s3/contributions/adrs/adr-2901-object-storage-s3-adapter.json +30 -0
- package/blueprints/object-storage-s3/contributions/adrs/adr-2902-object-storage-s3-presigned-ttl-floor.json +25 -0
- package/blueprints/object-storage-s3/contributions/adrs/adr-2903-object-storage-s3-multipart-threshold.json +25 -0
- package/blueprints/object-storage-s3/contributions/adrs/adr-2904-object-storage-s3-contract.json +25 -0
- package/blueprints/object-storage-s3/contributions/probes/event-secrecy.mjs +103 -0
- package/blueprints/object-storage-s3/contributions/probes/facade-round-trip.mjs +43 -0
- package/blueprints/object-storage-s3/contributions/probes/multipart-upload.mjs +84 -0
- package/blueprints/object-storage-s3/contributions/probes/presigned-url.mjs +101 -0
- package/blueprints/object-storage-s3/contributions/probes/probe-utils.mjs +85 -0
- package/blueprints/object-storage-s3/contributions/probes/put-get-round-trip.mjs +84 -0
- package/blueprints/object-storage-s3/contributions/probes/r2-real-account-smoke.mjs +64 -0
- package/blueprints/object-storage-s3/contributions/probes/run-event-secrecy.mjs +4 -0
- package/blueprints/object-storage-s3/contributions/probes/run-facade-round-trip.mjs +10 -0
- package/blueprints/object-storage-s3/contributions/probes/run-multipart-upload.mjs +4 -0
- package/blueprints/object-storage-s3/contributions/probes/run-presigned-url.mjs +4 -0
- package/blueprints/object-storage-s3/contributions/probes/run-put-get-round-trip.mjs +7 -0
- package/blueprints/object-storage-s3/contributions/probes/run-r2-real-account-smoke.mjs +4 -0
- package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-001.json +18 -0
- package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-002.json +18 -0
- package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-003.json +18 -0
- package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-004.json +18 -0
- package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-005.json +18 -0
- package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-006.json +18 -0
- package/blueprints/object-storage-s3/contributions/tacs/tac-2901-object-storage-s3-facade.json +57 -0
- package/blueprints/object-storage-s3/contributions/tacs/tac-2902-object-storage-s3-multipart-uploader.json +36 -0
- package/blueprints/object-storage-s3/contributions/tacs/tac-2903-object-storage-s3-event-sink.json +36 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28101.json +34 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28102.json +43 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28103.json +25 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28104.json +34 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28105.json +25 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28106.json +34 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28107.json +34 -0
- package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28108.json +34 -0
- package/blueprints/object-storage-s3/docs/topics.md +62 -0
- package/blueprints/object-storage-s3/guide/object-storage-s3.md +207 -0
- package/blueprints/observability-essentials/docs/topics.md +8 -1
- package/blueprints/observability-logging/CHANGELOG.md +4 -0
- package/blueprints/observability-logging/README.md +3 -0
- package/blueprints/observability-logging/blueprint.json +3 -2
- package/blueprints/observability-logging/docs/topics.md +7 -0
- package/blueprints/observability-probe-endpoints/docs/topics.md +8 -1
- package/blueprints/persistence-data-d1/docs/topics.md +8 -1
- package/blueprints/persistence-data-postgres/CHANGELOG.md +12 -0
- package/blueprints/persistence-data-postgres/README.md +101 -0
- package/blueprints/persistence-data-postgres/blueprint.json +80 -0
- package/blueprints/persistence-data-postgres/contributions/adrs/adr-2801-persistence-data-postgres-driver.json +30 -0
- package/blueprints/persistence-data-postgres/contributions/adrs/adr-2802-persistence-data-postgres-migration-shape.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/adrs/adr-2803-persistence-data-postgres-runner-mode.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/adrs/adr-2804-persistence-data-postgres-recovery.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/adrs/adr-2805-persistence-data-postgres-connection-pool-posture.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/probes/facade-round-trip.mjs +56 -0
- package/blueprints/persistence-data-postgres/contributions/probes/migration-apply.mjs +75 -0
- package/blueprints/persistence-data-postgres/contributions/probes/pool-posture-smoke.mjs +56 -0
- package/blueprints/persistence-data-postgres/contributions/probes/prepared-statement-scan.mjs +186 -0
- package/blueprints/persistence-data-postgres/contributions/probes/probe-utils.mjs +76 -0
- package/blueprints/persistence-data-postgres/contributions/probes/recovery-restore-round-trip.mjs +173 -0
- package/blueprints/persistence-data-postgres/contributions/probes/run-facade-round-trip.mjs +10 -0
- package/blueprints/persistence-data-postgres/contributions/probes/run-migration-apply.mjs +10 -0
- package/blueprints/persistence-data-postgres/contributions/probes/run-pool-posture-smoke.mjs +9 -0
- package/blueprints/persistence-data-postgres/contributions/probes/run-prepared-statement-scan.mjs +10 -0
- package/blueprints/persistence-data-postgres/contributions/probes/run-recovery-restore-round-trip.mjs +9 -0
- package/blueprints/persistence-data-postgres/contributions/probes/run-transaction-atomicity.mjs +10 -0
- package/blueprints/persistence-data-postgres/contributions/probes/transaction-atomicity.mjs +79 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-001.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-002.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-003.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-004.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-005.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-006.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-007.json +18 -0
- package/blueprints/persistence-data-postgres/contributions/tacs/tac-2801-persistence-data-postgres-facade.json +58 -0
- package/blueprints/persistence-data-postgres/contributions/tacs/tac-2802-persistence-data-postgres-migration-runner.json +40 -0
- package/blueprints/persistence-data-postgres/contributions/tacs/tac-2803-persistence-data-postgres-transaction-helper.json +35 -0
- package/blueprints/persistence-data-postgres/contributions/tacs/tac-2804-persistence-data-postgres-recovery-runner.json +40 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27101.json +34 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27102.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27103.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27104.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27105.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27106.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27107.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27108.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27109.json +25 -0
- package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27110.json +25 -0
- package/blueprints/persistence-data-postgres/docs/topics.md +64 -0
- package/blueprints/persistence-data-postgres/guide/persistence-data-postgres.md +172 -0
- package/blueprints/persistence-data-sqlite/docs/topics.md +8 -1
- package/blueprints/security-auth-clerk/CHANGELOG.md +4 -0
- package/blueprints/security-auth-clerk/README.md +3 -0
- package/blueprints/security-auth-clerk/blueprint.json +147 -30
- package/blueprints/security-auth-clerk/docs/topics.md +8 -1
- package/blueprints/security-auth-keycloak/CHANGELOG.md +4 -0
- package/blueprints/security-auth-keycloak/README.md +3 -0
- package/blueprints/security-auth-keycloak/blueprint.json +182 -37
- package/blueprints/security-auth-keycloak/docs/topics.md +8 -1
- package/blueprints/security-auth-magic-link/CHANGELOG.md +4 -0
- package/blueprints/security-auth-magic-link/README.md +3 -0
- package/blueprints/security-auth-magic-link/blueprint.json +159 -33
- package/blueprints/security-auth-magic-link/docs/topics.md +8 -1
- package/blueprints/security-auth-oauth2/CHANGELOG.md +4 -0
- package/blueprints/security-auth-oauth2/README.md +3 -0
- package/blueprints/security-auth-oauth2/blueprint.json +158 -32
- package/blueprints/security-auth-oauth2/docs/topics.md +8 -1
- package/blueprints/security-secrets-management/CHANGELOG.md +11 -0
- package/blueprints/security-secrets-management/blueprint.json +2 -1
- package/blueprints/security-secrets-management/docs/topics.md +8 -1
- package/fixtures/canary-manifest.json +9 -9
- package/package.json +1 -1
- package/rcf/code-nodes/cn-134.json +13 -0
- package/rcf/code-nodes/cn-135.json +12 -0
- package/rcf/code-nodes/cn-136.json +13 -0
- package/rcf/code-nodes/cn-137.json +13 -0
- package/rcf/code-nodes/cn-138.json +12 -0
- package/rcf/code-nodes/cn-139.json +12 -0
- package/rcf/code-nodes/cn-140.json +13 -0
- package/rcf/code-nodes/cn-141.json +13 -0
- package/rcf/code-nodes/cn-142.json +12 -0
- package/rcf/code-nodes/cn-143.json +13 -0
- package/rcf/code-nodes/cn-144.json +13 -0
- package/rcf/code-nodes/cn-145.json +12 -0
- package/rcf/code-nodes/cn-146.json +12 -0
- package/rcf/code-nodes/cn-147.json +13 -0
- package/rcf/code-nodes/cn-148.json +13 -0
- package/rcf/code-nodes/cn-149.json +12 -0
- package/rcf/code-nodes/cn-150.json +13 -0
- package/rcf/code-nodes/cn-151.json +13 -0
- package/rcf/code-nodes/cn-152.json +12 -0
- package/rcf/code-nodes/cn-153.json +12 -0
- package/rcf/code-nodes/cn-154.json +13 -0
- package/rcf/code-nodes/cn-155.json +14 -0
- package/rcf/code-nodes/cn-156.json +13 -0
- package/rcf/code-nodes/cn-157.json +13 -0
- package/rcf/code-nodes/cn-158.json +12 -0
- package/rcf/code-nodes/cn-159.json +13 -0
- package/rcf/code-nodes/cn-160.json +12 -0
- package/rcf/code-nodes/cn-161.json +12 -0
- package/rcf/code-nodes/cn-162.json +13 -0
- package/rcf/code-nodes/cn-163.json +12 -0
- package/rcf/code-nodes/cn-164.json +13 -0
- package/rcf/code-nodes/cn-165.json +12 -0
- package/rcf/code-nodes/cn-166.json +12 -0
- package/rcf/code-nodes/cn-167.json +12 -0
- package/rcf/code-nodes/cn-168.json +12 -0
- package/rcf/code-nodes/cn-169.json +12 -0
- package/rcf/code-nodes/cn-170.json +12 -0
- package/rcf/code-nodes/cn-171.json +12 -0
- package/rcf/code-nodes/cn-172.json +12 -0
- package/rcf/code-nodes/cn-173.json +12 -0
- package/rcf/code-nodes/cn-174.json +12 -0
- package/rcf/code-nodes/cn-175.json +13 -0
- package/rcf/code-nodes/cn-176.json +12 -0
- package/rcf/code-nodes/cn-177.json +12 -0
- package/rcf/code-nodes/cn-178.json +12 -0
- package/rcf/code-nodes/cn-179.json +12 -0
- package/rcf/code-nodes/cn-180.json +13 -0
- package/rcf/code-nodes/cn-181.json +12 -0
- package/rcf/code-nodes/cn-182.json +13 -0
- package/rcf/code-nodes/cn-183.json +12 -0
- package/rcf/code-nodes/cn-184.json +13 -0
- package/rcf/code-nodes/cn-185.json +12 -0
- package/rcf/code-nodes/cn-186.json +12 -0
- package/rcf/code-nodes/cn-200.json +14 -0
- package/rcf/code-nodes/cn-201.json +13 -0
- package/rcf/code-nodes/cn-202.json +14 -0
- package/rcf/code-nodes/cn-203.json +14 -0
- package/rcf/code-nodes/cn-204.json +13 -0
- package/rcf/code-nodes/cn-205.json +14 -0
- package/rcf/fbs/fbs-043.json +23 -0
- package/rcf/fbs/fbs-044.json +23 -0
- package/rcf/fbs/fbs-045.json +23 -0
- package/rcf/fbs/fbs-046.json +24 -0
- package/rcf/fbs/fbs-047.json +24 -0
- package/rcf/fbs/fbs-060.json +22 -0
- package/rcf/fbs/fbs-061.json +20 -0
- package/rcf/requirements/req-024.json +69 -0
- package/rcf/requirements/req-025.json +59 -0
- package/rcf/requirements/req-026.json +154 -0
- package/rcf/requirements/req-027.json +33 -0
- package/rcf/requirements/req-028.json +13 -0
- package/rcf/requirements/req-040.json +13 -0
- package/rcf/requirements/req-041.json +125 -0
- package/rcf/test-suites/ts-053.json +70 -0
- package/rcf/test-suites/ts-054.json +70 -0
- package/rcf/test-suites/ts-055.json +77 -0
- package/rcf/test-suites/ts-056.json +78 -0
- package/rcf/test-suites/ts-057.json +78 -0
- package/rcf/test-suites/ts-070.json +62 -0
- package/rcf/test-suites/ts-071.json +62 -0
- package/rcf/user-stories/us-2401.json +62 -0
- package/rcf/user-stories/us-2501.json +58 -0
- package/rcf/user-stories/us-2601.json +51 -0
- package/rcf/user-stories/us-2701.json +55 -0
- package/rcf/user-stories/us-2801.json +55 -0
- package/rcf/user-stories/us-4001.json +69 -0
- package/rcf/user-stories/us-4101.json +69 -0
- package/releases/releases.yaml +11 -1
- package/src/blueprint/apply.js +10 -1
- package/src/blueprint/capabilities.js +41 -2
- package/src/cli/blueprint.js +8 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"reqId": "application-onboarding-tour-REQ-003",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"title": "Checklist surface: on the dashboard when application-dashboard is applied, on the settings page when not",
|
|
5
|
+
"description": "A first-run checklist renders on the dashboard-top anchor when application-dashboard is applied (open by default, so a new principal sees the outstanding items at a glance) and collapses to a settings-page anchor when application-dashboard is not applied (closed by default, so an existing principal reaching the settings surface can expand it). The collapse contract is a <details> element whose open state mirrors the anchor choice: dashboard-top -> open, settings-page -> closed. The checklist enumerates the applied tour surfaces with a link back to the restart-tour affordance on the settings surface. The blueprint contributes the anchor slot contract (ADR-2703) and the surface conditionality, not the checklist items.",
|
|
6
|
+
"category": "functional",
|
|
7
|
+
"domain": "application",
|
|
8
|
+
"priority": "must",
|
|
9
|
+
"rationale": "Per visual round 4 spec (2026-09-06) section 5.5, REQ 3 of the onboarding-tour blueprint.",
|
|
10
|
+
"tags": [
|
|
11
|
+
"blueprint:application-onboarding-tour",
|
|
12
|
+
"category:03-checklist-slot"
|
|
13
|
+
],
|
|
14
|
+
"version": "1.0.0",
|
|
15
|
+
"status": "approved",
|
|
16
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
17
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"reqId": "application-onboarding-tour-REQ-004",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"title": "Completion-state persistence per principal in the applied persistence blueprint with an spa-local-storage fallback per Q4",
|
|
5
|
+
"description": "The completion state persists per principal in the applied persistence blueprint (server-side-per-principal when a persistence blueprint is applied and the operator picks that store) or per browser in spa-local-storage as the Q4 fallback when no persistence blueprint is applied. spa-session-storage is a third option the operator can pick when a per-session tour is deliberately wanted. A restart-tour control renders on the settings surface (composing on application-account-settings when applied; on any settings-shaped surface as a fallback) and clears the completion state so the tour re-opens on the next principal load.",
|
|
6
|
+
"category": "functional",
|
|
7
|
+
"domain": "application",
|
|
8
|
+
"priority": "must",
|
|
9
|
+
"rationale": "Per visual round 4 spec (2026-09-06) section 5.5, REQ 4 of the onboarding-tour blueprint. Q4 default (spa-local-storage fallback) ratified per spec section 10.",
|
|
10
|
+
"tags": [
|
|
11
|
+
"blueprint:application-onboarding-tour",
|
|
12
|
+
"category:04-completion-store"
|
|
13
|
+
],
|
|
14
|
+
"version": "1.0.0",
|
|
15
|
+
"status": "approved",
|
|
16
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
17
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
18
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tacId": "TAC-2701-application-onboarding-tour-step-runner",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"tadId": "TAD-001",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"name": "Onboarding-tour step runner",
|
|
8
|
+
"purpose": "Owns the rendered tour surface: the step manifest walk, the anchor resolver, the tooltip-as-dialog mount, and the focus lifecycle across open, walk and close. The step runner is the base surface every step-shaped AC anchors on.",
|
|
9
|
+
"responsibilities": [
|
|
10
|
+
"Walk the elicited step manifest in order and resolve each step's anchor selector against the live DOM (AC-26101-1).",
|
|
11
|
+
"Mount each step's tooltip as an ARIA APG dialog-modal (role=\"dialog\", aria-labelledby, aria-describedby) and move focus into it on open (AC-26102-1, AC-26107-1).",
|
|
12
|
+
"Return focus to the anchor on close (Escape, dismiss control, or last-step confirm) (AC-26102-1).",
|
|
13
|
+
"Trap focus between the tour controls (previous, next, dismiss) and refuse Tab escape to the underlying surface while Escape still exits (AC-26101-1).",
|
|
14
|
+
"Keep the tooltip visible at every breakpoint the applied SPA blueprint declares; refuse a step render whose anchor would clip the tooltip below the viewport minimum (AC-26102-1)."
|
|
15
|
+
],
|
|
16
|
+
"internalStructure": "One step runner module that reads the applied elicits, mounts the tooltip mount-point at document.body-level, drives the manifest walk, and calls the completion-state store on the last step. The framework is not prescribed; the runner interfaces are what the project realises against React, Vue, Svelte or vanilla DOM.",
|
|
17
|
+
"interfaces": [
|
|
18
|
+
{
|
|
19
|
+
"name": "renderTourRunner",
|
|
20
|
+
"kind": "factory",
|
|
21
|
+
"description": "renderTourRunner({ stepManifest, anchorResolver, dialogMount, focusLifecycle, completionStore }) -> { openAtStep(stepId), dismiss(), destroy() }. The project supplies the stepManifest (from the elicit), the anchorResolver (from a CSS selector to a live element), the dialogMount (an element or a factory), the focusLifecycle (open, walk, close hooks) and the completionStore (the resolved TAC-2703 backend)."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "stepManifest",
|
|
25
|
+
"kind": "shape",
|
|
26
|
+
"description": "[{ id, anchorSelector, heading, body, order }]. Ordered list of 3 to 5 steps. Each step is opened by openAtStep(stepId) or advanced by the previous / next controls."
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"dependencies": [
|
|
30
|
+
{
|
|
31
|
+
"name": "Completion store",
|
|
32
|
+
"kind": "tac",
|
|
33
|
+
"tacId": "TAC-2703-application-onboarding-tour-completion-store",
|
|
34
|
+
"description": "The step runner calls the completion store on the last step to persist the completion record."
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"tradeoffs": "The step runner mounts the tooltip at document.body-level rather than inline at the anchor so a positioned parent (transform, contain) does not clip the tooltip. This costs one extra pointer resolution on every step open (anchor selector -> live element -> viewport rect); the alternative would silently clip tooltips inside common flex/grid layouts.",
|
|
38
|
+
"notes": "Composes on the applied SPA blueprint for the routing and iconography, and on the applied dashboard blueprint for the highest-value first surface. Known mechanism-reach gaps: the runner cannot prove the described-text screen-reader read order without a real screen reader (documented under AC-26107-1); the runner cannot prove focus does not escape the tooltip in every framework rendering (documented under AC-26101-1). See README Known mechanism-reach gaps.",
|
|
39
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
40
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
41
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tacId": "TAC-2702-application-onboarding-tour-checklist-slot",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"tadId": "TAD-001",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"name": "Onboarding-tour checklist slot",
|
|
8
|
+
"purpose": "Owns the checklist surface: the anchor-slot resolution (dashboard-top vs settings-page vs custom-anchor), the collapse contract (<details open> on dashboard-top; <details> closed on settings-page), and the enumeration of the applied tour surfaces with a link back to the restart-tour affordance on the settings surface.",
|
|
9
|
+
"responsibilities": [
|
|
10
|
+
"Read the elicited checklist-anchor (ADR-2703) at load and mount the checklist at the resolved slot (AC-26103-1).",
|
|
11
|
+
"Render the checklist as a <details> element carrying data-role=\"onboarding-tour-checklist\" whose open state mirrors the anchor: open on dashboard-top, closed on settings-page (AC-26103-1).",
|
|
12
|
+
"Enumerate the applied tour surfaces as list items with a link to the restart-tour control on the settings surface.",
|
|
13
|
+
"Suppress the checklist entirely when neither the dashboard nor the settings surface is applied and no custom-anchor is supplied."
|
|
14
|
+
],
|
|
15
|
+
"internalStructure": "One checklist module that reads the applied capability set from the sidecar-adjacent applied-blueprint list, picks the anchor per the elicited value or the default derived at apply time, and mounts the <details> element into the resolved slot. The framework is not prescribed.",
|
|
16
|
+
"interfaces": [
|
|
17
|
+
{
|
|
18
|
+
"name": "renderChecklist",
|
|
19
|
+
"kind": "factory",
|
|
20
|
+
"description": "renderChecklist({ anchor, appliedSet, items }) -> { mount(rootElement), unmount() }. The project supplies the anchor (one of dashboard-top, settings-page, custom-anchor with a selector), the appliedSet (from the applied-blueprint list) and the items (from the manifest walk)."
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"dependencies": [
|
|
24
|
+
{
|
|
25
|
+
"name": "Step runner",
|
|
26
|
+
"kind": "tac",
|
|
27
|
+
"tacId": "TAC-2701-application-onboarding-tour-step-runner",
|
|
28
|
+
"description": "The checklist links back to the step runner via the restart-tour control on the settings surface."
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"tradeoffs": "The <details>/<summary> collapse contract is chosen over an ARIA APG disclosure widget because <details> ships browser-native keyboard behaviour (Space, Enter to toggle) and screen-reader-native semantics; a bespoke disclosure widget would need every keyboard case re-implemented. The trade-off is styling constraints; the fixture ships an unstyled <details> to make the shape testable.",
|
|
32
|
+
"notes": "Composes on application-dashboard for the dashboard-top slot and application-account-settings for the settings-page slot; a project applying neither falls back to a custom-anchor. Known mechanism-reach gap: the checklist cannot inspect which items a principal has already completed without a persistence-blueprint reader; documented under AC-26103-1 as a fixture-side signal only.",
|
|
33
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
34
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
35
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tacId": "TAC-2703-application-onboarding-tour-completion-store",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"tadId": "TAD-001",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"name": "Onboarding-tour completion-state store",
|
|
8
|
+
"purpose": "Owns the completion-state store contract: the writer the step runner calls on the last step, the reader first-run detection calls on principal load, and the clearer the restart-tour control calls. Delegates to the applied persistence blueprint when server-side-per-principal is elicited (and refuses at apply if no persistence blueprint is applied); falls back to spa-local-storage per Q4 or spa-session-storage per the elicit.",
|
|
9
|
+
"responsibilities": [
|
|
10
|
+
"Write the completion record on the last step (AC-26104-1).",
|
|
11
|
+
"Read the completion record on principal load so first-run detection can gate the tour auto-open (AC-26105-1).",
|
|
12
|
+
"Clear the completion record when the restart-tour control fires (AC-26104-1, AC-26106-1).",
|
|
13
|
+
"Refuse at apply when server-side-per-principal is elicited without an applied persistence blueprint."
|
|
14
|
+
],
|
|
15
|
+
"internalStructure": "One completion-store module with three backends (spa-local-storage, spa-session-storage, server-side-per-principal) selected at apply time from the elicited completion-state-store answer or the Q4 fallback (spa-local-storage). The server-side backend calls the applied persistence blueprint's writer through the projects own adapter interface; the two SPA backends read and write window.localStorage / window.sessionStorage under a namespaced key derived from the applied blueprint set version.",
|
|
16
|
+
"interfaces": [
|
|
17
|
+
{
|
|
18
|
+
"name": "completionStore",
|
|
19
|
+
"kind": "shape",
|
|
20
|
+
"description": "{ read(principalId): CompletionRecord | null, write(principalId, record), clear(principalId) }. CompletionRecord = { completedAt: ISO string, blueprintSetVersion: string, stepIds: string[] }. The blueprintSetVersion is the versioned identifier of the applied blueprint set so a dismiss-until-next-major or dismiss-until-next-minor policy can re-open the tour on the right bump."
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"dependencies": [
|
|
24
|
+
{
|
|
25
|
+
"name": "Persistence blueprint",
|
|
26
|
+
"kind": "external",
|
|
27
|
+
"description": "Optional composition: only the server-side-per-principal backend delegates to an applied persistence blueprint writer. spa-local-storage and spa-session-storage need no persistence blueprint. The rcf-schemas 0.6.1 TAC dependency kind enum is limited to tac and external, so the composition-optional relation is recorded as external and made explicit in the description and notes."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"tradeoffs": "spa-local-storage is chosen as the Q4 default because a per-session tour that re-plays on every new session is worse than a one-time tour that persists across sessions on that browser; spa-session-storage remains an option for a project that deliberately wants a per-session tour. server-side-per-principal is chosen when the tour completion is a real profile fact (a cross-device onboarding) rather than a per-browser convenience.",
|
|
31
|
+
"notes": "The blueprintSetVersion in the CompletionRecord is what lets ADR-2701's dismiss-until-next-major and dismiss-until-next-minor policies re-open the tour on the right bump. Known mechanism-reach gap: the server-side-per-principal backend cannot prove a round-trip in a unit test without an applied persistence blueprint; the pack skips the persistence round-trip check for spa-* stores (inspects the storage directly) and drives it for server-side-per-principal on the fixture branch that stands up an in-fixture writer. The Persistence blueprint dependency is recorded with kind external per the rcf-schemas 0.6.1 enum and is optional-composition semantically: server-side-per-principal delegates to the applied persistence blueprint writer, and the spa-local-storage and spa-session-storage backends need no persistence blueprint applied. Refusal at apply for the server-side-per-principal branch is enforced in the store module.",
|
|
32
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
33
|
+
"updatedAt": "2026-09-07T00:45:00Z"
|
|
34
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26101",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-001",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "First-run principal sees the tour open on the highest-value surface and can walk it or dismiss it with the keyboard",
|
|
8
|
+
"asA": "first-run principal reaching the application",
|
|
9
|
+
"iWant": "the tour to open on the highest-value surface with the first step, and to be able to walk through it or dismiss it using only the keyboard",
|
|
10
|
+
"soThat": "I can learn the surface my project ships without a mouse, and I can leave the tour at any point without a trap",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26101-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "Given a first-run principal on the SPA, the tour opens on the highest-value surface with the first step; Escape dismisses the tour and hides the tooltip; keyboard-only users reach every tour control (previous, next, dismiss) via Tab in DOM order and activate the next control with Enter (WCAG 2.1.1 Keyboard, WCAG 2.1.2 No Keyboard Trap, WCAG 2.4.3 Focus Order). Anchors to TAC-2701-application-onboarding-tour-step-runner; probed by application-onboarding-tour.pack.mjs check AC-26101-1."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2701-application-onboarding-tour-step-runner"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26102",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-002",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Each step's tooltip renders as an ARIA APG dialog-modal with focus lifecycle and focus not obscured",
|
|
8
|
+
"asA": "principal walking through the tour",
|
|
9
|
+
"iWant": "each step's tooltip to behave like a proper dialog, with focus arriving on open and returning to the anchor on close and remaining visible at every breakpoint",
|
|
10
|
+
"soThat": "an assistive-technology user hears the step content on open and returns to context on close, and no tooltip is clipped at the viewport edge",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26102-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "Given a step showing a tooltip anchored to a UI element, focus moves to the tooltip on open; the tooltip carries role=\"dialog\" with aria-labelledby pointing at the step heading; focus returns to the anchor on close (Escape or the dismiss control) per the ARIA APG dialog-modal pattern; focus is not obscured on the 1440 wide breakpoint or the 360 narrow breakpoint (WCAG 2.4.11 Focus Not Obscured Minimum). Anchors to TAC-2701-application-onboarding-tour-step-runner; probed by application-onboarding-tour.pack.mjs check AC-26102-1."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2701-application-onboarding-tour-step-runner"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26103",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-003",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Checklist surface renders on the dashboard when application-dashboard is applied and on the settings page when not",
|
|
8
|
+
"asA": "returning principal who dismissed the tour and later wants to check the outstanding items",
|
|
9
|
+
"iWant": "the checklist to render on the dashboard shell when application-dashboard is applied and on the settings page when it is not, with a collapse contract that opens the checklist on the dashboard and closes it on the settings page by default",
|
|
10
|
+
"soThat": "the checklist meets me where I am, and it does not intrude on the settings surface where it is a reference rather than a primary task",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26103-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "Given the applied capability set includes application-dashboard, the checklist renders inside a <details open> element on the dashboard-top anchor slot; given the applied capability set does NOT include application-dashboard, the checklist renders inside a <details> (closed) element on the settings-page anchor slot; the <details> element carries data-role=\"onboarding-tour-checklist\" in both branches. Anchors to TAC-2702-application-onboarding-tour-checklist-slot; probed by application-onboarding-tour.pack.mjs check AC-26103-1 on both application-dashboard and settings-page branches."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2702-application-onboarding-tour-checklist-slot"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26104",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-004",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Completion-state persists per principal and the restart-tour control clears it",
|
|
8
|
+
"asA": "returning principal who completed the tour",
|
|
9
|
+
"iWant": "the completion state to persist per principal in the applied persistence store (or per browser in spa-local-storage as the Q4 fallback), and a restart-tour control I can reach from the settings surface",
|
|
10
|
+
"soThat": "the tour does not re-open at every session, and I can bring it back deliberately when I need to",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26104-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "Given a completed tour, the completion state persists per principal in the applied persistence blueprint (or in spa-local-storage as the Q4 fallback per ADR-2702 when no persistence blueprint is applied); a restart-tour control is reachable from the settings surface (composing on application-account-settings when applied; on any settings surface as a fallback); activating the control clears the completion state and re-opens the tour on the next principal load. Anchors to TAC-2703-application-onboarding-tour-completion-store; probed by application-onboarding-tour.pack.mjs check AC-26104-1."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2703-application-onboarding-tour-completion-store"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26105",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-004",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "First-run detection: a principal with no completion state sees the tour; a principal with completion state does not",
|
|
8
|
+
"asA": "returning principal",
|
|
9
|
+
"iWant": "the tour to open only on my first run, not on every visit",
|
|
10
|
+
"soThat": "I am not re-onboarded on every session and the surface stays clean",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26105-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "Given a principal whose completion-state store contains no completion record for the applied blueprint set version, the tour auto-opens on the highest-value surface; given a principal whose completion-state store contains a completion record for the applied blueprint set version, the tour does NOT auto-open and only the checklist and the restart-tour control render. The check is documented as a mechanism-reach gap in the README (not directly probed at runtime; enforced by the fixture branch under manual boot for the gate reviewer)."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2703-application-onboarding-tour-completion-store"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26106",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-004",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Restart-tour control clears completion state and re-opens the tour",
|
|
8
|
+
"asA": "returning principal who completed the tour but wants to see it again",
|
|
9
|
+
"iWant": "a restart-tour control on the settings surface that clears my completion state and re-opens the tour",
|
|
10
|
+
"soThat": "I can revisit the guidance without clearing local storage by hand or hunting through the surface for a hidden trigger",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26106-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "The restart-tour control renders on the settings surface as a <button data-action=\"restart-tour\"> reachable via Tab and activatable with Enter; activating it clears the completion state in the applied store (per ADR-2702) and re-opens the tour on the highest-value surface on the next principal load. Covered as part of AC-26104-1's pack check (the check exercises the restart flow end-to-end)."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2703-application-onboarding-tour-completion-store"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"usId": "application-onboarding-tour-US-26107",
|
|
3
|
+
"prdId": "PRD-001",
|
|
4
|
+
"reqId": "application-onboarding-tour-REQ-002",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"status": "approved",
|
|
7
|
+
"title": "Screen-reader traversal announces the step heading and body on open",
|
|
8
|
+
"asA": "assistive-technology user",
|
|
9
|
+
"iWant": "the tooltip to announce the step heading and body on open through the ARIA APG dialog-modal contract",
|
|
10
|
+
"soThat": "I hear the step content the moment focus arrives, not after a manual navigation",
|
|
11
|
+
"acceptanceCriteria": [
|
|
12
|
+
{
|
|
13
|
+
"id": "AC-26107-1",
|
|
14
|
+
"testable": true,
|
|
15
|
+
"scope": "runtime",
|
|
16
|
+
"description": "The tooltip carries aria-labelledby pointing at the step heading and aria-describedby pointing at the step body; focus moves into the tooltip on open so the screen reader reads the labelled and described text. Documented as a mechanism-reach gap for the described-text read order because rcf-lite does not drive a real screen reader in CI; the pack asserts the DOM contract and the fixture README names the manual screen-reader smoke."
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"tacIds": [
|
|
20
|
+
"TAC-2701-application-onboarding-tour-step-runner"
|
|
21
|
+
],
|
|
22
|
+
"tags": [
|
|
23
|
+
"blueprint:application-onboarding-tour"
|
|
24
|
+
],
|
|
25
|
+
"createdAt": "2026-09-06T23:15:00Z",
|
|
26
|
+
"updatedAt": "2026-09-06T23:15:00Z"
|
|
27
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# application-onboarding-tour: coordination vocabulary
|
|
2
|
+
|
|
3
|
+
## Global topics
|
|
4
|
+
|
|
5
|
+
The blueprint claims no new global topics at v1.0.0. Onboarding-tour is a consumer of the applied SPA, dashboard, notifications-in-app and account-settings surfaces; every ADR (dismissal-policy, completion-state-store shape, checklist-anchor slot) is non-global.
|
|
6
|
+
|
|
7
|
+
## Deliberately unclaimed topics
|
|
8
|
+
|
|
9
|
+
- `completionStateStore` (the shape of a completion-state record beyond this blueprint's needs). Reserved for the applied persistence blueprint's own ADR set when server-side-per-principal is elicited. The onboarding-tour blueprint hands off the store to the applied provider through the completion-store interface.
|
|
10
|
+
- `stepManifestFormat` (the shape of a shared onboarding manifest across blueprints). Reserved until a second blueprint contributes a step-shaped manifest surface (a settings walk-through, a role-tour); the dashboardShell rejection precedent stands: mint a topic only when a second consumer arrives.
|
|
11
|
+
|
|
12
|
+
## Shelf id band and suffix block
|
|
13
|
+
|
|
14
|
+
| Blueprint | US band | ADR/TAC suffix block | Status | Global topics |
|
|
15
|
+
|---|---|---|---|---|
|
|
16
|
+
| application-datatable | 17101-17899 | 18xx | shipped v1.0.0 | none |
|
|
17
|
+
| application-charts | 18101-18899 | 19xx | shipped v1.0.0 | none |
|
|
18
|
+
| application-dashboard | 19101-19899 | 20xx | shipped v1.0.0 | none |
|
|
19
|
+
| application-notifications-in-app | 20101-20899 | 21xx | shipped v1.0.0 | none |
|
|
20
|
+
| application-admin-console | 21101-21899 | 22xx | shipped v1.0.0 | none |
|
|
21
|
+
| application-empty-error-states | 22101-22899 | 23xx | shipped v1.0.0 | none |
|
|
22
|
+
| application-file-upload | 23101-23899 | 24xx | shipped v1.0.0 | none |
|
|
23
|
+
| application-forms-wizard | 24101-24899 | 25xx | shipped v1.0.0 | none |
|
|
24
|
+
| application-account-settings | 25101-25899 | 26xx | shipped v1.0.0 | none |
|
|
25
|
+
| application-onboarding-tour | 26101-26899 | 27xx | shipped v1.0.0 | none |
|
|
26
|
+
| persistence-data-postgres | 27101-27899 | 28xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
|
|
27
|
+
| object-storage-s3 | 28101-28899 | 29xx | shipped v1.0.0 | `objectStorageContract` |
|
|
28
|
+
|
|
29
|
+
The shelf-wide band registry lives in `packages/rcf-lite/docs/blueprint-authoring.md` section 5.
|
|
30
|
+
|
|
31
|
+
## Cross-references
|
|
32
|
+
|
|
33
|
+
- `application-spa` (round 1, shipped v1.5.0+): supplies the routing shell (`/tour`, `/dashboard`, `/settings`), the iconography and theming the tour uses. The tour still renders without the SPA blueprint; the project supplies its own routing.
|
|
34
|
+
- `application-dashboard` (round 3, shipped v1.0.0): supplies the dashboard-top anchor slot where the checklist mounts as `<details open>` for returning principals. When absent, the checklist collapses to a `<details>` (closed) on the settings-page anchor (ADR-2703).
|
|
35
|
+
- `application-notifications-in-app` (round 3, shipped v1.0.0): supplies the polite `aria-live` live region the tour-completion announcement uses. When absent, the tour is silent at the announce layer (the step runner still logs one line if a logging companion is present).
|
|
36
|
+
- `application-account-settings` (round 4 T-4, shipped v1.0.0): supplies the settings surface where the restart-tour control lives. When absent, the restart-tour control renders on any settings-shaped surface (`/settings`, `/account`, `/account/settings`).
|
|
37
|
+
- `application-empty-error-states` (round 4 T-1, shipped v1.0.0): the tour composes on the forbidden state when a principal reaches `/tour` without an authenticated session and an auth blueprint is applied. When no auth blueprint is applied, the tour behaves as a single-principal experience per the composition table.
|
|
38
|
+
|
|
39
|
+
## Probe pack
|
|
40
|
+
|
|
41
|
+
`probe-packs/application-onboarding-tour.pack.mjs` ships four surface-observable checks anchored to blueprint AC ids:
|
|
42
|
+
|
|
43
|
+
- `AC-26101-1` step-container focus lifecycle and Escape (always fires).
|
|
44
|
+
- `AC-26102-1` tooltip-as-dialog contract at 1440 wide and 360 narrow breakpoints via `browser.resize` (always fires).
|
|
45
|
+
- `AC-26103-1` checklist slot on both dashboard-top (open) and settings-page (closed) branches (always fires; branch selection reads the applied-blueprint set from the sidecar).
|
|
46
|
+
- `AC-26104-1` completion-state persistence and restart-tour re-open (always fires; store selection reads the elicited `completion-state-store` answer, defaulting to `spa-local-storage` per Q4).
|
|
47
|
+
|
|
48
|
+
The pack applies to any FBS binding `TAC-2701-application-onboarding-tour-step-runner` or whose `navModel` routes match the operator-configured tour-anchor path glob (`/tour`, `/welcome`, `/getting-started`, `/onboarding`). See `packages/rcf-lite/docs/blueprint-authoring.md` section 8c for the pack authoring rules.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# application-onboarding-tour guide
|
|
2
|
+
|
|
3
|
+
Operator-facing guide to the onboarding-tour blueprint. Reach for it when your project wants a keyboard-accessible product tour with a first-run checklist that composes on the surfaces you already have, and where the completion state honestly persists.
|
|
4
|
+
|
|
5
|
+
## When to reach for this blueprint
|
|
6
|
+
|
|
7
|
+
- You have a first-run onboarding narrative that fits 3 to 5 steps and every step anchors on a live element in your DOM.
|
|
8
|
+
- You want the tour to honour WCAG 2.2 AA keyboard rules (2.1.1 Keyboard, 2.1.2 No Keyboard Trap, 2.4.3 Focus Order, 2.4.11 Focus Not Obscured Minimum) and the ARIA APG dialog-modal pattern out of the box, without a hand-rolled tooltip library.
|
|
9
|
+
- You want a checklist surface that meets returning principals where they are (on the dashboard when the dashboard blueprint is applied, on the settings surface when it is not) and does not intrude when the tour is done.
|
|
10
|
+
- You want a documented restart-tour affordance without inventing the persistence flow.
|
|
11
|
+
|
|
12
|
+
## When NOT to reach for this blueprint
|
|
13
|
+
|
|
14
|
+
- You need a multi-hour interactive product simulation. This blueprint contributes an onboarding contract, not a training platform.
|
|
15
|
+
- Your tour has more than five steps per surface. Refactor into multiple applied tours (one per surface family) rather than one long tour.
|
|
16
|
+
- You need per-org customisation of the tour content at runtime. The blueprint contributes the WHAT; the elicited `per-step-content-voice` is a project-owned string, not a per-tenant surface.
|
|
17
|
+
|
|
18
|
+
## Standards trace
|
|
19
|
+
|
|
20
|
+
- ARIA APG dialog-modal pattern (`https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/`): the tooltip is a modal dialog with `role="dialog"`, `aria-labelledby` to the step heading, `aria-describedby` to the step body, focus into the tooltip on open and back to the anchor on close.
|
|
21
|
+
- WCAG 2.2 AA 2.1.1 Keyboard (`https://www.w3.org/WAI/WCAG22/Understanding/keyboard.html`): every tour control activatable with the keyboard.
|
|
22
|
+
- WCAG 2.2 AA 2.1.2 No Keyboard Trap (`https://www.w3.org/WAI/WCAG22/Understanding/no-keyboard-trap.html`): Escape always exits; focus never permanently trapped.
|
|
23
|
+
- WCAG 2.2 AA 2.4.3 Focus Order (`https://www.w3.org/WAI/WCAG22/Understanding/focus-order.html`): Tab reaches every tour control in DOM order inside the tooltip.
|
|
24
|
+
- WCAG 2.2 AA 2.4.11 Focus Not Obscured Minimum (`https://www.w3.org/WAI/WCAG22/Understanding/focus-not-obscured-minimum.html`): the tooltip is visible at the 1440 wide and 360 narrow breakpoints (probed via `browser.resize`).
|
|
25
|
+
|
|
26
|
+
## Q4 fallback
|
|
27
|
+
|
|
28
|
+
When no persistence blueprint is applied AND the operator does not answer `completion-state-store` explicitly, the store defaults to `spa-local-storage` per Q4 of the ratified spec. A per-session tour that re-plays on every new session is worse than a one-time tour that persists across sessions on that browser; the elicit surface offers all three shapes for a deliberate override.
|
|
29
|
+
|
|
30
|
+
## Mechanism-reach gaps
|
|
31
|
+
|
|
32
|
+
- `AC-26105-1` first-run detection: manual verification via the fixture README boot line (open `/tour` twice, confirm the tour auto-opens on run 1 and does not on run 2).
|
|
33
|
+
- `AC-26107-1` screen-reader traversal: the pack asserts the DOM contract; the manual VoiceOver smoke is in the fixture README.
|
|
34
|
+
|
|
35
|
+
Both gaps ride runner cleanup `w-2026-09-04-dave-020`.
|
|
36
|
+
|
|
37
|
+
## Compose targets
|
|
38
|
+
|
|
39
|
+
The tour reaches these applied blueprints with the effect named in the README's composition table. None is a hard dependency; every unapplied target has a documented fallback.
|
|
40
|
+
|
|
41
|
+
- `application-spa` (routing, iconography, theming).
|
|
42
|
+
- `application-dashboard` (dashboard-top checklist anchor; fallback `settings-page`).
|
|
43
|
+
- `application-notifications-in-app` (polite `aria-live` announce on completion; fallback silent at announce layer).
|
|
44
|
+
- `application-account-settings` (restart-tour control home; fallback any settings-shaped surface).
|
|
45
|
+
- Any `security-auth-*` (per-principal completion state; fallback per-browser bare namespace).
|
|
46
|
+
|
|
47
|
+
## Apply
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
rcf define blueprint add <path-to>/blueprints/application-onboarding-tour
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Verify
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
rcf verify browser <fbs-id> --url <runtime-url> --probe-pack application-onboarding-tour --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Runs the four checks against the shipped fixture at `packages/rcf-lite/test/fixtures/probe-pack-application-onboarding-tour/`. See the fixture README for the four break-switch runs the gate reviewer walks manually.
|