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.
Files changed (625) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +2 -0
  3. package/bin/view-supervisor-child.mjs +0 -0
  4. package/blueprints/application-api-rest/README.md +40 -0
  5. package/blueprints/application-api-rest/assets/middleware/auth-classes.md +45 -0
  6. package/blueprints/application-api-rest/assets/openapi/openapi-skeleton.yaml +322 -0
  7. package/blueprints/application-api-rest/assets/sample-data/sample-resources.json +53 -0
  8. package/blueprints/application-api-rest/assets/samples/request-response-pairs.md +204 -0
  9. package/blueprints/application-api-rest/blueprint.json +265 -0
  10. package/blueprints/application-api-rest/contributions/adrs/adr-301-application-api-rest-error-envelope.json +25 -0
  11. package/blueprints/application-api-rest/contributions/adrs/adr-302-application-api-rest-auth-model.json +25 -0
  12. package/blueprints/application-api-rest/contributions/adrs/adr-303-application-api-rest-api-versioning.json +25 -0
  13. package/blueprints/application-api-rest/contributions/adrs/adr-304-application-api-rest-logging.json +25 -0
  14. package/blueprints/application-api-rest/contributions/adrs/adr-305-application-api-rest-pagination.json +25 -0
  15. package/blueprints/application-api-rest/contributions/adrs/adr-306-application-api-rest-idempotency.json +25 -0
  16. package/blueprints/application-api-rest/contributions/adrs/adr-307-application-api-rest-openapi-generation.json +25 -0
  17. package/blueprints/application-api-rest/contributions/adrs/adr-308-application-api-rest-rate-limiting.json +25 -0
  18. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-001.json +18 -0
  19. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-002.json +18 -0
  20. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-003.json +18 -0
  21. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-004.json +18 -0
  22. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-005.json +18 -0
  23. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-006.json +18 -0
  24. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-007.json +18 -0
  25. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-008.json +18 -0
  26. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-009.json +18 -0
  27. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-010.json +18 -0
  28. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-011.json +18 -0
  29. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-012.json +18 -0
  30. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-013.json +18 -0
  31. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-014.json +18 -0
  32. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-015.json +18 -0
  33. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-016.json +18 -0
  34. package/blueprints/application-api-rest/contributions/tacs/tac-301-application-api-rest-request-pipeline.json +48 -0
  35. package/blueprints/application-api-rest/contributions/tacs/tac-302-application-api-rest-auth-middleware.json +41 -0
  36. package/blueprints/application-api-rest/contributions/tacs/tac-303-application-api-rest-contract-surface.json +46 -0
  37. package/blueprints/application-api-rest/contributions/tacs/tac-304-application-api-rest-resource-layer.json +46 -0
  38. package/blueprints/application-api-rest/contributions/tacs/tac-305-application-api-rest-observability.json +40 -0
  39. package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +46 -0
  40. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2101.json +72 -0
  41. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2102.json +73 -0
  42. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +63 -0
  43. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2104.json +72 -0
  44. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2105.json +63 -0
  45. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2106.json +73 -0
  46. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2107.json +90 -0
  47. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +90 -0
  48. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2109.json +72 -0
  49. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2110.json +72 -0
  50. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2111.json +72 -0
  51. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2112.json +72 -0
  52. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2113.json +73 -0
  53. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2114.json +63 -0
  54. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2115.json +63 -0
  55. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2116.json +63 -0
  56. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2117.json +64 -0
  57. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json +72 -0
  58. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json +63 -0
  59. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2120.json +73 -0
  60. package/blueprints/application-api-rest/docs/topics.md +46 -0
  61. package/blueprints/application-api-rest/guide/application-api-rest.md +41 -0
  62. package/blueprints/application-spa/README.md +90 -0
  63. package/blueprints/application-spa/assets/component-specs/actions-and-text-inputs.md +36 -0
  64. package/blueprints/application-spa/assets/component-specs/data-display.md +19 -0
  65. package/blueprints/application-spa/assets/component-specs/feedback-and-status.md +27 -0
  66. package/blueprints/application-spa/assets/component-specs/overlays.md +23 -0
  67. package/blueprints/application-spa/assets/component-specs/selection-controls.md +23 -0
  68. package/blueprints/application-spa/assets/sample-data/sample-entities.json +41 -0
  69. package/blueprints/application-spa/assets/tokens/design-tokens.json +140 -0
  70. package/blueprints/application-spa/assets/tokens/theme.css +169 -0
  71. package/blueprints/application-spa/assets/viewports.md +18 -0
  72. package/blueprints/application-spa/assets/wireframes/dashboard.md +48 -0
  73. package/blueprints/application-spa/assets/wireframes/detail.md +40 -0
  74. package/blueprints/application-spa/assets/wireframes/empty.md +31 -0
  75. package/blueprints/application-spa/assets/wireframes/error.md +46 -0
  76. package/blueprints/application-spa/assets/wireframes/form.md +50 -0
  77. package/blueprints/application-spa/assets/wireframes/list.md +45 -0
  78. package/blueprints/application-spa/assets/wireframes/session-expired.md +35 -0
  79. package/blueprints/application-spa/assets/wireframes/sign-in.md +41 -0
  80. package/blueprints/application-spa/assets/wireframes/sign-out.md +32 -0
  81. package/blueprints/application-spa/blueprint.json +387 -0
  82. package/blueprints/application-spa/contributions/adrs/adr-201-application-spa-routing.json +25 -0
  83. package/blueprints/application-spa/contributions/adrs/adr-202-application-spa-theming.json +25 -0
  84. package/blueprints/application-spa/contributions/adrs/adr-203-application-spa-client-state.json +25 -0
  85. package/blueprints/application-spa/contributions/adrs/adr-204-application-spa-error-envelope.json +25 -0
  86. package/blueprints/application-spa/contributions/adrs/adr-205-application-spa-auth-model.json +25 -0
  87. package/blueprints/application-spa/contributions/adrs/adr-206-application-spa-iconography.json +13 -0
  88. package/blueprints/application-spa/contributions/adrs/adr-207-application-spa-motion.json +13 -0
  89. package/blueprints/application-spa/contributions/adrs/adr-208-application-spa-i18n.json +13 -0
  90. package/blueprints/application-spa/contributions/adrs/adr-209-application-spa-telemetry-naming.json +13 -0
  91. package/blueprints/application-spa/contributions/requirements/application-spa-req-001.json +18 -0
  92. package/blueprints/application-spa/contributions/requirements/application-spa-req-002.json +18 -0
  93. package/blueprints/application-spa/contributions/requirements/application-spa-req-003.json +18 -0
  94. package/blueprints/application-spa/contributions/requirements/application-spa-req-004.json +18 -0
  95. package/blueprints/application-spa/contributions/requirements/application-spa-req-005.json +18 -0
  96. package/blueprints/application-spa/contributions/requirements/application-spa-req-006.json +18 -0
  97. package/blueprints/application-spa/contributions/requirements/application-spa-req-007.json +18 -0
  98. package/blueprints/application-spa/contributions/requirements/application-spa-req-008.json +18 -0
  99. package/blueprints/application-spa/contributions/requirements/application-spa-req-009.json +18 -0
  100. package/blueprints/application-spa/contributions/requirements/application-spa-req-010.json +18 -0
  101. package/blueprints/application-spa/contributions/requirements/application-spa-req-011.json +18 -0
  102. package/blueprints/application-spa/contributions/requirements/application-spa-req-012.json +18 -0
  103. package/blueprints/application-spa/contributions/requirements/application-spa-req-013.json +18 -0
  104. package/blueprints/application-spa/contributions/requirements/application-spa-req-014.json +18 -0
  105. package/blueprints/application-spa/contributions/requirements/application-spa-req-015.json +18 -0
  106. package/blueprints/application-spa/contributions/requirements/application-spa-req-016.json +18 -0
  107. package/blueprints/application-spa/contributions/requirements/application-spa-req-017.json +18 -0
  108. package/blueprints/application-spa/contributions/requirements/application-spa-req-018.json +18 -0
  109. package/blueprints/application-spa/contributions/requirements/application-spa-req-019.json +18 -0
  110. package/blueprints/application-spa/contributions/requirements/application-spa-req-020.json +18 -0
  111. package/blueprints/application-spa/contributions/requirements/application-spa-req-021.json +18 -0
  112. package/blueprints/application-spa/contributions/tacs/tac-201-application-spa-app-shell.json +45 -0
  113. package/blueprints/application-spa/contributions/tacs/tac-202-application-spa-theme-system.json +32 -0
  114. package/blueprints/application-spa/contributions/tacs/tac-203-application-spa-component-library.json +32 -0
  115. package/blueprints/application-spa/contributions/tacs/tac-204-application-spa-client-data-layer.json +27 -0
  116. package/blueprints/application-spa/contributions/tacs/tac-205-application-spa-forms-engine.json +27 -0
  117. package/blueprints/application-spa/contributions/tacs/tac-206-application-spa-telemetry.json +19 -0
  118. package/blueprints/application-spa/contributions/tacs/tac-207-application-spa-token-adherence-probe.json +57 -0
  119. package/blueprints/application-spa/contributions/tacs/tac-208-application-spa-icon-adherence-probe.json +56 -0
  120. package/blueprints/application-spa/contributions/tacs/tac-209-application-spa-csp-styled-adherence-probe.json +61 -0
  121. package/blueprints/application-spa/contributions/tacs/tac-210-application-spa-external-dependency-provisioning-probe.json +70 -0
  122. package/blueprints/application-spa/contributions/tacs/tac-211-application-spa-core-flow-e2e-probe.json +70 -0
  123. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1101.json +72 -0
  124. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1102.json +63 -0
  125. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1103.json +72 -0
  126. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1104.json +63 -0
  127. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1105.json +69 -0
  128. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1106.json +63 -0
  129. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1107.json +63 -0
  130. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1108.json +90 -0
  131. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1109.json +90 -0
  132. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1110.json +100 -0
  133. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1111.json +90 -0
  134. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1112.json +81 -0
  135. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1113.json +82 -0
  136. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1114.json +60 -0
  137. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1115.json +73 -0
  138. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1116.json +72 -0
  139. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1117.json +73 -0
  140. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1118.json +54 -0
  141. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1119.json +63 -0
  142. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1120.json +72 -0
  143. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1121.json +73 -0
  144. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1122.json +69 -0
  145. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1123.json +63 -0
  146. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1124.json +60 -0
  147. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1125.json +69 -0
  148. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1126.json +78 -0
  149. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1127.json +63 -0
  150. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1128.json +51 -0
  151. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1129.json +54 -0
  152. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1130.json +54 -0
  153. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1131.json +72 -0
  154. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1132.json +72 -0
  155. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1133.json +72 -0
  156. package/blueprints/application-spa/docs/topics.md +57 -0
  157. package/blueprints/application-spa/guide/application-spa.md +40 -0
  158. package/blueprints/ci-pipeline/README.md +49 -0
  159. package/blueprints/ci-pipeline/assets/ci-provider-examples/github-actions.yml +61 -0
  160. package/blueprints/ci-pipeline/assets/ci-provider-examples/notes.md +50 -0
  161. package/blueprints/ci-pipeline/assets/report-samples/per-gate.json +12 -0
  162. package/blueprints/ci-pipeline/assets/report-samples/pipeline.json +28 -0
  163. package/blueprints/ci-pipeline/blueprint.json +46 -0
  164. package/blueprints/ci-pipeline/contributions/adrs/adr-701-ci-pipeline-ci-gates.json +25 -0
  165. package/blueprints/ci-pipeline/contributions/adrs/adr-702-ci-pipeline-strict-coverage-gate.json +25 -0
  166. package/blueprints/ci-pipeline/contributions/adrs/adr-703-ci-pipeline-node-only-runner.json +25 -0
  167. package/blueprints/ci-pipeline/contributions/adrs/adr-704-ci-pipeline-report-shape.json +25 -0
  168. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-001.json +18 -0
  169. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-002.json +18 -0
  170. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-003.json +18 -0
  171. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-004.json +18 -0
  172. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-005.json +18 -0
  173. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-006.json +18 -0
  174. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-007.json +18 -0
  175. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-008.json +18 -0
  176. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-009.json +18 -0
  177. package/blueprints/ci-pipeline/contributions/requirements/ci-pipeline-req-010.json +18 -0
  178. package/blueprints/ci-pipeline/contributions/tacs/tac-701-ci-pipeline-gate-runner.json +59 -0
  179. package/blueprints/ci-pipeline/contributions/tacs/tac-702-ci-pipeline-gate-report.json +32 -0
  180. package/blueprints/ci-pipeline/contributions/tacs/tac-703-ci-pipeline-aggregate-report.json +41 -0
  181. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6101.json +37 -0
  182. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6102.json +36 -0
  183. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6103.json +37 -0
  184. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6104.json +37 -0
  185. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6105.json +36 -0
  186. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6106.json +36 -0
  187. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6107.json +37 -0
  188. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6108.json +37 -0
  189. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6109.json +36 -0
  190. package/blueprints/ci-pipeline/contributions/user-stories/ci-pipeline-us-6110.json +36 -0
  191. package/blueprints/ci-pipeline/docs/topics.md +49 -0
  192. package/blueprints/ci-pipeline/guide/ci-pipeline.md +79 -0
  193. package/blueprints/deploy-cloudflare-workers/README.md +63 -0
  194. package/blueprints/deploy-cloudflare-workers/assets/ci-workflows/build-and-upload.yml.md +109 -0
  195. package/blueprints/deploy-cloudflare-workers/assets/ci-workflows/promote.yml.md +120 -0
  196. package/blueprints/deploy-cloudflare-workers/assets/verification/served-surface-probes.md +90 -0
  197. package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/bootstrap-vs-steady-state.md +87 -0
  198. package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/preview-alias-shape.md +86 -0
  199. package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/wrangler-toml-shape.md +85 -0
  200. package/blueprints/deploy-cloudflare-workers/blueprint.json +48 -0
  201. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1301-deploy-cloudflare-workers-deployment-target.json +30 -0
  202. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1302-deploy-cloudflare-workers-default-vendor.json +35 -0
  203. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1303-deploy-cloudflare-workers-preview-vs-production.json +30 -0
  204. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1304-deploy-cloudflare-workers-rollback-is-promote.json +25 -0
  205. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1305-deploy-cloudflare-workers-dev-mode-drift.json +25 -0
  206. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-001.json +18 -0
  207. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-002.json +18 -0
  208. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-003.json +18 -0
  209. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-004.json +18 -0
  210. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-005.json +18 -0
  211. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-006.json +18 -0
  212. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-007.json +18 -0
  213. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-008.json +18 -0
  214. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-009.json +18 -0
  215. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-010.json +18 -0
  216. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-011.json +18 -0
  217. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-012.json +18 -0
  218. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1301-deploy-cloudflare-workers-deploy-adapter.json +54 -0
  219. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1302-deploy-cloudflare-workers-wrangler-manifest.json +45 -0
  220. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1303-deploy-cloudflare-workers-preview-url-resolver.json +46 -0
  221. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1304-deploy-cloudflare-workers-promote-gate.json +57 -0
  222. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1305-deploy-cloudflare-workers-served-surface-verifier.json +51 -0
  223. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1306-deploy-cloudflare-workers-deploy-ci-workflows.json +64 -0
  224. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12101.json +54 -0
  225. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12102.json +45 -0
  226. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12103.json +46 -0
  227. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12104.json +46 -0
  228. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12105.json +46 -0
  229. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12106.json +46 -0
  230. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12107.json +46 -0
  231. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12108.json +46 -0
  232. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12109.json +47 -0
  233. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12110.json +46 -0
  234. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12111.json +45 -0
  235. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12112.json +46 -0
  236. package/blueprints/deploy-cloudflare-workers/docs/topics.md +46 -0
  237. package/blueprints/deploy-cloudflare-workers/guide/deploy-cloudflare-workers.md +74 -0
  238. package/blueprints/email-smtp-resend/README.md +45 -0
  239. package/blueprints/email-smtp-resend/assets/from-address-rotation-pattern.md +44 -0
  240. package/blueprints/email-smtp-resend/assets/resend-verification-pointer.md +25 -0
  241. package/blueprints/email-smtp-resend/assets/stub-adapter.md +65 -0
  242. package/blueprints/email-smtp-resend/blueprint.json +23 -0
  243. package/blueprints/email-smtp-resend/contributions/adrs/adr-401-email-smtp-resend-transport-choice.json +30 -0
  244. package/blueprints/email-smtp-resend/contributions/adrs/adr-402-email-smtp-resend-retry-and-backoff-posture.json +30 -0
  245. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-001.json +18 -0
  246. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-002.json +18 -0
  247. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-003.json +18 -0
  248. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-004.json +18 -0
  249. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-005.json +18 -0
  250. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-006.json +18 -0
  251. package/blueprints/email-smtp-resend/contributions/tacs/tac-401-email-smtp-resend-send-adapter.json +53 -0
  252. package/blueprints/email-smtp-resend/contributions/tacs/tac-402-email-smtp-resend-webhook-verifier.json +56 -0
  253. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4101.json +45 -0
  254. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4102.json +36 -0
  255. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4103.json +45 -0
  256. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4104.json +45 -0
  257. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4105.json +36 -0
  258. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4106.json +37 -0
  259. package/blueprints/email-smtp-resend/docs/topics.md +44 -0
  260. package/blueprints/email-smtp-resend/guide/email-smtp-resend.md +71 -0
  261. package/blueprints/observability-essentials/README.md +53 -0
  262. package/blueprints/observability-essentials/assets/probe-samples/liveness-body.json +4 -0
  263. package/blueprints/observability-essentials/assets/probe-samples/readiness-body.json +18 -0
  264. package/blueprints/observability-essentials/assets/status-page-samples/status-page-clean.html +22 -0
  265. package/blueprints/observability-essentials/assets/status-page-samples/status-page-with-notice.html +25 -0
  266. package/blueprints/observability-essentials/blueprint.json +54 -0
  267. package/blueprints/observability-essentials/contributions/adrs/adr-801-observability-essentials-health-probes.json +30 -0
  268. package/blueprints/observability-essentials/contributions/adrs/adr-802-observability-essentials-readiness-semantics.json +30 -0
  269. package/blueprints/observability-essentials/contributions/adrs/adr-803-observability-essentials-status-page-contract.json +30 -0
  270. package/blueprints/observability-essentials/contributions/adrs/adr-804-observability-essentials-probe-secrecy.json +25 -0
  271. package/blueprints/observability-essentials/contributions/adrs/adr-805-observability-essentials-notification-outcome-model.json +25 -0
  272. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +18 -0
  273. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +18 -0
  274. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-003.json +18 -0
  275. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-004.json +18 -0
  276. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-005.json +18 -0
  277. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-006.json +18 -0
  278. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-007.json +18 -0
  279. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-008.json +18 -0
  280. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-009.json +18 -0
  281. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-010.json +18 -0
  282. package/blueprints/observability-essentials/contributions/tacs/tac-801-observability-essentials-liveness-probe.json +32 -0
  283. package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +43 -0
  284. package/blueprints/observability-essentials/contributions/tacs/tac-803-observability-essentials-status-page.json +37 -0
  285. package/blueprints/observability-essentials/contributions/tacs/tac-804-observability-essentials-notification-outcome.json +42 -0
  286. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +45 -0
  287. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7102.json +45 -0
  288. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7103.json +45 -0
  289. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7104.json +45 -0
  290. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7105.json +45 -0
  291. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7106.json +45 -0
  292. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7107.json +46 -0
  293. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7108.json +47 -0
  294. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7109.json +45 -0
  295. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7110.json +46 -0
  296. package/blueprints/observability-essentials/docs/topics.md +57 -0
  297. package/blueprints/observability-essentials/guide/observability-essentials.md +68 -0
  298. package/blueprints/observability-probe-endpoints/README.md +53 -0
  299. package/blueprints/observability-probe-endpoints/assets/docker/dockerfile-healthcheck.md +19 -0
  300. package/blueprints/observability-probe-endpoints/assets/kubernetes/podspec-probes-separate-port.md +54 -0
  301. package/blueprints/observability-probe-endpoints/assets/kubernetes/podspec-probes.md +36 -0
  302. package/blueprints/observability-probe-endpoints/assets/load-balancer/health-check-config.md +23 -0
  303. package/blueprints/observability-probe-endpoints/assets/systemd/notify-service.md +30 -0
  304. package/blueprints/observability-probe-endpoints/assets/uptime-monitor/monitor-config.md +22 -0
  305. package/blueprints/observability-probe-endpoints/blueprint.json +44 -0
  306. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1501-observability-probe-endpoints-health-probes.json +30 -0
  307. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1502-observability-probe-endpoints-readiness-semantics.json +30 -0
  308. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1503-observability-probe-endpoints-kubernetes-default.json +30 -0
  309. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1504-observability-probe-endpoints-separate-port-option.json +30 -0
  310. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1505-observability-probe-endpoints-external-response-secrecy.json +30 -0
  311. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-001.json +18 -0
  312. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-002.json +18 -0
  313. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-003.json +18 -0
  314. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-004.json +18 -0
  315. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-005.json +18 -0
  316. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-006.json +18 -0
  317. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-007.json +18 -0
  318. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-008.json +18 -0
  319. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1501-observability-probe-endpoints-profile-resolver.json +39 -0
  320. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1502-observability-probe-endpoints-handler-set.json +40 -0
  321. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1503-observability-probe-endpoints-listener-topology.json +51 -0
  322. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1504-observability-probe-endpoints-non-http-adapters.json +39 -0
  323. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14101.json +46 -0
  324. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +46 -0
  325. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14103.json +46 -0
  326. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14104.json +45 -0
  327. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14105.json +46 -0
  328. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14106.json +45 -0
  329. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14107.json +45 -0
  330. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14108.json +46 -0
  331. package/blueprints/observability-probe-endpoints/docs/topics.md +51 -0
  332. package/blueprints/observability-probe-endpoints/guide/observability-probe-endpoints.md +83 -0
  333. package/blueprints/persistence-data-d1/README.md +50 -0
  334. package/blueprints/persistence-data-d1/assets/batch-usage/batch-atomicity-example.md +72 -0
  335. package/blueprints/persistence-data-d1/assets/facade-shape/facade-module-shape.md +115 -0
  336. package/blueprints/persistence-data-d1/assets/migration-shape/migration-file-shape.md +119 -0
  337. package/blueprints/persistence-data-d1/assets/wrangler-config/d1-binding-shape.md +93 -0
  338. package/blueprints/persistence-data-d1/blueprint.json +42 -0
  339. package/blueprints/persistence-data-d1/contributions/adrs/adr-1401-persistence-data-d1-store-model.json +30 -0
  340. package/blueprints/persistence-data-d1/contributions/adrs/adr-1402-persistence-data-d1-migration-discipline.json +30 -0
  341. package/blueprints/persistence-data-d1/contributions/adrs/adr-1403-persistence-data-d1-event-secrecy.json +25 -0
  342. package/blueprints/persistence-data-d1/contributions/adrs/adr-1404-persistence-data-d1-store-boundary.json +25 -0
  343. package/blueprints/persistence-data-d1/contributions/adrs/adr-1405-persistence-data-d1-recovery-model.json +30 -0
  344. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-001.json +18 -0
  345. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-002.json +18 -0
  346. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-003.json +18 -0
  347. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-004.json +18 -0
  348. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-005.json +18 -0
  349. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-006.json +18 -0
  350. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-007.json +18 -0
  351. package/blueprints/persistence-data-d1/contributions/tacs/tac-1401-persistence-data-d1-facade.json +51 -0
  352. package/blueprints/persistence-data-d1/contributions/tacs/tac-1402-persistence-data-d1-migration-catalog.json +31 -0
  353. package/blueprints/persistence-data-d1/contributions/tacs/tac-1403-persistence-data-d1-deploy-gate.json +38 -0
  354. package/blueprints/persistence-data-d1/contributions/tacs/tac-1404-persistence-data-d1-recovery-runner.json +39 -0
  355. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13101.json +45 -0
  356. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13102.json +45 -0
  357. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13103.json +46 -0
  358. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13104.json +45 -0
  359. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13105.json +45 -0
  360. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13106.json +46 -0
  361. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13107.json +38 -0
  362. package/blueprints/persistence-data-d1/docs/topics.md +59 -0
  363. package/blueprints/persistence-data-d1/guide/persistence-data-d1.md +77 -0
  364. package/blueprints/persistence-data-sqlite/README.md +50 -0
  365. package/blueprints/persistence-data-sqlite/assets/backup-procedures/hot-checkpoint-note.md +22 -0
  366. package/blueprints/persistence-data-sqlite/assets/backup-procedures/sqlite-file-copy.md +70 -0
  367. package/blueprints/persistence-data-sqlite/assets/schema-samples/catalog-file-layout.md +73 -0
  368. package/blueprints/persistence-data-sqlite/assets/schema-samples/migration-shape.md +76 -0
  369. package/blueprints/persistence-data-sqlite/blueprint.json +50 -0
  370. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-601-persistence-data-sqlite-store-model.json +30 -0
  371. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-602-persistence-data-sqlite-migration-discipline.json +30 -0
  372. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-603-persistence-data-sqlite-event-secrecy.json +25 -0
  373. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-604-persistence-data-sqlite-store-boundary.json +25 -0
  374. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-605-persistence-data-sqlite-backup-model.json +25 -0
  375. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-001.json +18 -0
  376. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-002.json +18 -0
  377. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-003.json +18 -0
  378. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-004.json +18 -0
  379. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-005.json +18 -0
  380. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-006.json +18 -0
  381. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-007.json +18 -0
  382. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-008.json +18 -0
  383. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-009.json +18 -0
  384. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-010.json +18 -0
  385. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-011.json +18 -0
  386. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-601-persistence-data-sqlite-store.json +57 -0
  387. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-602-persistence-data-sqlite-migration-runner.json +34 -0
  388. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-603-persistence-data-sqlite-migration-catalog.json +31 -0
  389. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-604-persistence-data-sqlite-backup-runner.json +33 -0
  390. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5101.json +46 -0
  391. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5102.json +46 -0
  392. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5103.json +37 -0
  393. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5104.json +45 -0
  394. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5105.json +45 -0
  395. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5106.json +46 -0
  396. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5107.json +45 -0
  397. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5108.json +46 -0
  398. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5109.json +46 -0
  399. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5110.json +37 -0
  400. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5111.json +37 -0
  401. package/blueprints/persistence-data-sqlite/docs/topics.md +49 -0
  402. package/blueprints/persistence-data-sqlite/guide/persistence-data-sqlite.md +69 -0
  403. package/blueprints/security-auth-clerk/README.md +50 -0
  404. package/blueprints/security-auth-clerk/assets/authorisation/role-claim-mapping-sample.md +99 -0
  405. package/blueprints/security-auth-clerk/assets/middleware/node-middleware-shape.md +86 -0
  406. package/blueprints/security-auth-clerk/assets/wiring/clerk-provider-react.md +48 -0
  407. package/blueprints/security-auth-clerk/assets/wiring/clerk-provider-vue.md +41 -0
  408. package/blueprints/security-auth-clerk/blueprint.json +42 -0
  409. package/blueprints/security-auth-clerk/contributions/adrs/adr-1001-security-auth-clerk-auth-model.json +30 -0
  410. package/blueprints/security-auth-clerk/contributions/adrs/adr-1002-security-auth-clerk-middleware-boundary.json +25 -0
  411. package/blueprints/security-auth-clerk/contributions/adrs/adr-1003-security-auth-clerk-authorisation-adapter-contract.json +25 -0
  412. package/blueprints/security-auth-clerk/contributions/adrs/adr-1004-security-auth-clerk-claims-mapping-discipline.json +25 -0
  413. package/blueprints/security-auth-clerk/contributions/adrs/adr-1005-security-auth-clerk-session-lifecycle.json +25 -0
  414. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-001.json +18 -0
  415. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-002.json +18 -0
  416. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-003.json +18 -0
  417. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-004.json +18 -0
  418. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-005.json +18 -0
  419. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-006.json +18 -0
  420. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-007.json +18 -0
  421. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-008.json +18 -0
  422. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-009.json +18 -0
  423. package/blueprints/security-auth-clerk/contributions/tacs/tac-1001-security-auth-clerk-middleware.json +42 -0
  424. package/blueprints/security-auth-clerk/contributions/tacs/tac-1002-security-auth-clerk-authorisation-adapter.json +30 -0
  425. package/blueprints/security-auth-clerk/contributions/tacs/tac-1003-security-auth-clerk-session-verifier.json +38 -0
  426. package/blueprints/security-auth-clerk/contributions/tacs/tac-1004-security-auth-clerk-claims-mapper.json +22 -0
  427. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9101.json +46 -0
  428. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9102.json +38 -0
  429. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9103.json +46 -0
  430. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9104.json +46 -0
  431. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9105.json +36 -0
  432. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9106.json +36 -0
  433. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9107.json +37 -0
  434. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9108.json +36 -0
  435. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9109.json +36 -0
  436. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9110.json +37 -0
  437. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9111.json +36 -0
  438. package/blueprints/security-auth-clerk/docs/topics.md +56 -0
  439. package/blueprints/security-auth-clerk/guide/security-auth-clerk.md +71 -0
  440. package/blueprints/security-auth-keycloak/README.md +56 -0
  441. package/blueprints/security-auth-keycloak/assets/local-container/keycloak-bootstrap.md +54 -0
  442. package/blueprints/security-auth-keycloak/assets/middleware/verifier-wiring.md +93 -0
  443. package/blueprints/security-auth-keycloak/assets/mock-introspection/mock-introspection-shape.md +62 -0
  444. package/blueprints/security-auth-keycloak/assets/provider-router/router-shape.md +71 -0
  445. package/blueprints/security-auth-keycloak/assets/realm-skeleton/realm-config-shape.md +55 -0
  446. package/blueprints/security-auth-keycloak/blueprint.json +49 -0
  447. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1201-security-auth-keycloak-auth-model.json +35 -0
  448. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1202-security-auth-keycloak-verification-mode-choice.json +30 -0
  449. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1203-security-auth-keycloak-provider-routing-seam.json +30 -0
  450. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1204-security-auth-keycloak-session-vs-token-contract.json +25 -0
  451. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1205-security-auth-keycloak-jwks-rotation-cache-lifetime.json +30 -0
  452. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1206-security-auth-keycloak-refresh-and-sign-out-posture.json +25 -0
  453. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-001.json +18 -0
  454. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-002.json +18 -0
  455. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-003.json +18 -0
  456. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-004.json +18 -0
  457. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-005.json +18 -0
  458. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-006.json +18 -0
  459. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-007.json +18 -0
  460. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-008.json +18 -0
  461. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-009.json +18 -0
  462. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-010.json +18 -0
  463. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-011.json +18 -0
  464. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-012.json +18 -0
  465. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1201-security-auth-keycloak-discovery-client.json +51 -0
  466. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1202-security-auth-keycloak-jwt-verifier.json +46 -0
  467. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1203-security-auth-keycloak-introspection-client.json +45 -0
  468. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1204-security-auth-keycloak-provider-router.json +37 -0
  469. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1205-security-auth-keycloak-role-adapter.json +32 -0
  470. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11101.json +47 -0
  471. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11102.json +45 -0
  472. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11103.json +36 -0
  473. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11104.json +36 -0
  474. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11105.json +45 -0
  475. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11106.json +46 -0
  476. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11107.json +45 -0
  477. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11108.json +45 -0
  478. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11109.json +37 -0
  479. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11110.json +45 -0
  480. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11111.json +45 -0
  481. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11112.json +37 -0
  482. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11113.json +36 -0
  483. package/blueprints/security-auth-keycloak/docs/topics.md +74 -0
  484. package/blueprints/security-auth-keycloak/guide/security-auth-keycloak.md +81 -0
  485. package/blueprints/security-auth-magic-link/README.md +46 -0
  486. package/blueprints/security-auth-magic-link/assets/email-templates/magic-link-email.md +44 -0
  487. package/blueprints/security-auth-magic-link/assets/email-templates/stub-adapter.md +55 -0
  488. package/blueprints/security-auth-magic-link/assets/principal-registry-samples/allow-list-file.md +46 -0
  489. package/blueprints/security-auth-magic-link/assets/principal-registry-samples/single-address.md +35 -0
  490. package/blueprints/security-auth-magic-link/blueprint.json +45 -0
  491. package/blueprints/security-auth-magic-link/contributions/adrs/adr-501-security-auth-magic-link-model.json +30 -0
  492. package/blueprints/security-auth-magic-link/contributions/adrs/adr-502-security-auth-magic-link-token-secrecy.json +25 -0
  493. package/blueprints/security-auth-magic-link/contributions/adrs/adr-503-security-auth-magic-link-anti-enumeration-budget.json +25 -0
  494. package/blueprints/security-auth-magic-link/contributions/adrs/adr-504-security-auth-magic-link-session-lifecycle.json +30 -0
  495. package/blueprints/security-auth-magic-link/contributions/adrs/adr-505-security-auth-magic-link-rate-limiting.json +25 -0
  496. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-001.json +18 -0
  497. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-002.json +18 -0
  498. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-003.json +18 -0
  499. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-004.json +18 -0
  500. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-005.json +18 -0
  501. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-006.json +18 -0
  502. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-007.json +18 -0
  503. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-008.json +18 -0
  504. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-009.json +18 -0
  505. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-010.json +18 -0
  506. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-011.json +18 -0
  507. package/blueprints/security-auth-magic-link/contributions/tacs/tac-501-security-auth-magic-link-manager.json +45 -0
  508. package/blueprints/security-auth-magic-link/contributions/tacs/tac-502-security-auth-magic-link-session-manager.json +46 -0
  509. package/blueprints/security-auth-magic-link/contributions/tacs/tac-503-security-auth-magic-link-login-routes.json +76 -0
  510. package/blueprints/security-auth-magic-link/contributions/tacs/tac-504-security-auth-magic-link-email-delivery-adapter.json +26 -0
  511. package/blueprints/security-auth-magic-link/contributions/tacs/tac-505-security-auth-magic-link-principal-registry.json +26 -0
  512. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3101.json +64 -0
  513. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3102.json +54 -0
  514. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3103.json +45 -0
  515. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3104.json +55 -0
  516. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3105.json +46 -0
  517. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3106.json +46 -0
  518. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3107.json +54 -0
  519. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3108.json +46 -0
  520. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3109.json +48 -0
  521. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3110.json +45 -0
  522. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3111.json +45 -0
  523. package/blueprints/security-auth-magic-link/docs/topics.md +45 -0
  524. package/blueprints/security-auth-magic-link/guide/security-auth-magic-link.md +65 -0
  525. package/blueprints/security-auth-oauth2/README.md +50 -0
  526. package/blueprints/security-auth-oauth2/assets/mock-provider/mock-oidc-shape.md +55 -0
  527. package/blueprints/security-auth-oauth2/assets/provider-selector/list-shape.md +27 -0
  528. package/blueprints/security-auth-oauth2/assets/providers/generic-oidc-discovery.md +31 -0
  529. package/blueprints/security-auth-oauth2/assets/providers/github-oauth2-only.md +31 -0
  530. package/blueprints/security-auth-oauth2/assets/providers/google-oidc.md +31 -0
  531. package/blueprints/security-auth-oauth2/assets/session-bridge/opaque-handle-shape.md +59 -0
  532. package/blueprints/security-auth-oauth2/blueprint.json +44 -0
  533. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1101-security-auth-oauth2-auth-model.json +35 -0
  534. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1102-security-auth-oauth2-provider-abstraction-contract.json +25 -0
  535. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1103-security-auth-oauth2-pkce-discipline.json +25 -0
  536. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1104-security-auth-oauth2-session-bridge-shape.json +25 -0
  537. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1105-security-auth-oauth2-refresh-token-posture.json +25 -0
  538. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1106-security-auth-oauth2-multi-provider-routing.json +25 -0
  539. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-001.json +18 -0
  540. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-002.json +18 -0
  541. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-003.json +18 -0
  542. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-004.json +18 -0
  543. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-005.json +18 -0
  544. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-006.json +18 -0
  545. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-007.json +18 -0
  546. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-008.json +18 -0
  547. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-009.json +18 -0
  548. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-010.json +18 -0
  549. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1101-security-auth-oauth2-flow-controller.json +61 -0
  550. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1102-security-auth-oauth2-provider-adapter.json +33 -0
  551. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1103-security-auth-oauth2-session-bridge.json +51 -0
  552. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1104-security-auth-oauth2-provider-selector.json +29 -0
  553. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10101.json +47 -0
  554. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10102.json +45 -0
  555. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10103.json +36 -0
  556. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10104.json +36 -0
  557. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10105.json +55 -0
  558. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10106.json +45 -0
  559. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10107.json +46 -0
  560. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10108.json +46 -0
  561. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10109.json +37 -0
  562. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10110.json +37 -0
  563. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10111.json +28 -0
  564. package/blueprints/security-auth-oauth2/docs/topics.md +58 -0
  565. package/blueprints/security-auth-oauth2/guide/security-auth-oauth2.md +65 -0
  566. package/blueprints/security-secrets-management/README.md +48 -0
  567. package/blueprints/security-secrets-management/assets/cli-usage/agent-access-pattern.md +69 -0
  568. package/blueprints/security-secrets-management/assets/manifest-samples/environment-aware-example.md +33 -0
  569. package/blueprints/security-secrets-management/assets/manifest-samples/secrets-yaml-shape.md +74 -0
  570. package/blueprints/security-secrets-management/assets/ui-integration/three-way-choice.md +44 -0
  571. package/blueprints/security-secrets-management/blueprint.json +43 -0
  572. package/blueprints/security-secrets-management/contributions/adrs/adr-901-security-secrets-management-secrets-source.json +30 -0
  573. package/blueprints/security-secrets-management/contributions/adrs/adr-902-security-secrets-management-default-vendor.json +35 -0
  574. package/blueprints/security-secrets-management/contributions/adrs/adr-903-security-secrets-management-agent-access-discipline.json +25 -0
  575. package/blueprints/security-secrets-management/contributions/adrs/adr-904-security-secrets-management-dotenv-reflection.json +25 -0
  576. package/blueprints/security-secrets-management/contributions/adrs/adr-905-security-secrets-management-rotation-and-audit.json +30 -0
  577. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-001.json +18 -0
  578. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-002.json +18 -0
  579. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-003.json +18 -0
  580. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-004.json +18 -0
  581. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-005.json +18 -0
  582. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-006.json +18 -0
  583. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-007.json +18 -0
  584. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-008.json +18 -0
  585. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-009.json +18 -0
  586. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-010.json +18 -0
  587. package/blueprints/security-secrets-management/contributions/tacs/tac-901-security-secrets-management-manager-client.json +52 -0
  588. package/blueprints/security-secrets-management/contributions/tacs/tac-902-security-secrets-management-manifest.json +34 -0
  589. package/blueprints/security-secrets-management/contributions/tacs/tac-903-security-secrets-management-env-reflector.json +46 -0
  590. package/blueprints/security-secrets-management/contributions/tacs/tac-904-security-secrets-management-rotation-gate.json +57 -0
  591. package/blueprints/security-secrets-management/contributions/tacs/tac-905-security-secrets-management-agent-cli.json +59 -0
  592. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8101.json +46 -0
  593. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8102.json +45 -0
  594. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8103.json +37 -0
  595. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8104.json +45 -0
  596. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8105.json +55 -0
  597. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8106.json +46 -0
  598. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8107.json +46 -0
  599. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8108.json +45 -0
  600. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8109.json +46 -0
  601. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8110.json +45 -0
  602. package/blueprints/security-secrets-management/docs/topics.md +46 -0
  603. package/blueprints/security-secrets-management/guide/security-secrets-management.md +68 -0
  604. package/fixtures/canary-manifest.json +1 -101
  605. package/package.json +15 -9
  606. package/rcf/.identity/profile.md +37 -0
  607. package/rcf/knowledge/INDEX.md +12 -0
  608. package/rcf/knowledge/README.md +41 -0
  609. package/rcf/knowledge/docs/.gitkeep +0 -0
  610. package/rcf/knowledge/notes/.gitkeep +0 -0
  611. package/scripts/preinstall-node-check.mjs +61 -0
  612. package/src/blueprint/apply.js +12 -6
  613. package/src/blueprint/conflicts.js +8 -8
  614. package/src/blueprint/index.js +2 -1
  615. package/src/blueprint/list.js +60 -0
  616. package/src/blueprint/loader.js +26 -1
  617. package/src/blueprint/namespace.js +20 -16
  618. package/src/blueprint/shelf-resolver.js +173 -0
  619. package/src/blueprint/supersede.js +3 -2
  620. package/src/browser-verify/invariants.js +40 -0
  621. package/src/browser-verify/runner.js +2 -0
  622. package/src/cli/blueprint.js +53 -9
  623. package/src/cli/init.js +2 -0
  624. package/src/core/store/writer.js +64 -2
  625. package/src/setup/agent-setup.js +28 -10
@@ -0,0 +1,140 @@
1
+ {
2
+ "meta": {
3
+ "name": "spa-blueprint-design-tokens",
4
+ "blueprint": "application-spa",
5
+ "version": "1.0.0",
6
+ "notes": "Canonical token values for application-spa-REQ-003, application-spa-REQ-005, application-spa-REQ-012, and application-spa-REQ-020. Colour pairings are contrast-validated: text tokens meet 4.5:1 and border/focus tokens meet 3:1 against every surface token in their theme. Parity rule: the light and dark colour key sets must remain identical; a key present in one theme and not the other is a defect (AC-1106-2)."
7
+ },
8
+ "color": {
9
+ "light": {
10
+ "surface": "#ffffff",
11
+ "surfaceRaised": "#f5f7fa",
12
+ "surfaceSunken": "#e9edf2",
13
+ "onSurface": "#1b2430",
14
+ "onSurfaceMuted": "#4a5568",
15
+ "primary": "#1d4ed8",
16
+ "onPrimary": "#ffffff",
17
+ "accent": "#0f6674",
18
+ "danger": "#b3261e",
19
+ "onDanger": "#ffffff",
20
+ "warning": "#8a4b0f",
21
+ "success": "#1a7431",
22
+ "muted": "#5b6572",
23
+ "border": "#697180",
24
+ "divider": "#d8dee6",
25
+ "focusRing": "#1d4ed8"
26
+ },
27
+ "dark": {
28
+ "surface": "#12161d",
29
+ "surfaceRaised": "#1a202a",
30
+ "surfaceSunken": "#0c0f15",
31
+ "onSurface": "#e8ecf2",
32
+ "onSurfaceMuted": "#a6b0bd",
33
+ "primary": "#8ab4ff",
34
+ "onPrimary": "#0e1a33",
35
+ "accent": "#5ad0e6",
36
+ "danger": "#ff8f88",
37
+ "onDanger": "#33100e",
38
+ "warning": "#f0b354",
39
+ "success": "#6dd58c",
40
+ "muted": "#98a2b0",
41
+ "border": "#8d97a5",
42
+ "divider": "#323a46",
43
+ "focusRing": "#8ab4ff"
44
+ },
45
+ "usage": {
46
+ "onSurface": "Body and heading text on any surface token.",
47
+ "onSurfaceMuted": "Secondary text; still passes 4.5:1 on every surface.",
48
+ "primary": "Primary actions and links; text-safe on surfaces; pair fills with onPrimary.",
49
+ "accent": "Highlights and selected states; text-safe on surfaces.",
50
+ "danger": "Destructive actions and error text; pair fills with onDanger.",
51
+ "warning": "Cautionary text and indicators; text-safe on surfaces.",
52
+ "success": "Positive confirmation text and indicators; text-safe on surfaces.",
53
+ "border": "Form-control and component boundaries (3:1 floor, WCAG 1.4.11).",
54
+ "divider": "Decorative separation only; never a control boundary.",
55
+ "focusRing": "Focus indicator colour (3:1 floor against surfaces)."
56
+ }
57
+ },
58
+ "spacing": {
59
+ "base": "4px",
60
+ "scale": {
61
+ "space-1": "0.25rem",
62
+ "space-2": "0.5rem",
63
+ "space-3": "0.75rem",
64
+ "space-4": "1rem",
65
+ "space-5": "1.25rem",
66
+ "space-6": "1.5rem",
67
+ "space-8": "2rem",
68
+ "space-10": "2.5rem",
69
+ "space-12": "3rem",
70
+ "space-16": "4rem",
71
+ "space-20": "5rem"
72
+ },
73
+ "notes": "All margins, paddings, and gaps resolve to this scale (AC-1104-1). Section spacing defaults: space-12 between page sections, space-6 within a section, space-2 between a label and its control."
74
+ },
75
+ "radius": {
76
+ "radius-sm": "4px",
77
+ "radius-md": "8px",
78
+ "radius-lg": "12px",
79
+ "radius-full": "9999px",
80
+ "notes": "radius-sm for inputs and small controls, radius-md for cards and overlays, radius-lg for prominent surfaces, radius-full for pills and avatars."
81
+ },
82
+ "typography": {
83
+ "scaleRatio": 1.25,
84
+ "fontFamily": {
85
+ "ui": "system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
86
+ "mono": "ui-monospace, 'SF Mono', 'Cascadia Mono', 'Roboto Mono', Menlo, monospace"
87
+ },
88
+ "size": {
89
+ "text-xs": "clamp(0.75rem, 0.72rem + 0.15vw, 0.8rem)",
90
+ "text-sm": "clamp(0.875rem, 0.85rem + 0.2vw, 0.95rem)",
91
+ "text-body": "clamp(0.875rem, 0.8rem + 0.5vw, 1rem)",
92
+ "text-lg": "clamp(1.094rem, 1rem + 0.6vw, 1.25rem)",
93
+ "text-xl": "clamp(1.367rem, 1.25rem + 0.75vw, 1.563rem)",
94
+ "text-2xl": "clamp(1.709rem, 1.55rem + 0.95vw, 1.953rem)",
95
+ "text-3xl": "clamp(2.136rem, 1.9rem + 1.2vw, 2.441rem)"
96
+ },
97
+ "lineHeight": {
98
+ "body": 1.5,
99
+ "heading": 1.2
100
+ },
101
+ "notes": "text-body resolves to at least 14px below 768 viewport width and at least 16px at 768 and above (AC-1127-2); clamp() carries the fluid scaling (AC-1127-3). Sizes above body follow the 1.25 modular scale."
102
+ },
103
+ "elevation": {
104
+ "light": {
105
+ "elevation-1": "0 1px 2px rgba(27, 36, 48, 0.08), 0 1px 3px rgba(27, 36, 48, 0.06)",
106
+ "elevation-2": "0 2px 6px rgba(27, 36, 48, 0.10), 0 4px 12px rgba(27, 36, 48, 0.08)",
107
+ "elevation-3": "0 8px 24px rgba(27, 36, 48, 0.16), 0 2px 6px rgba(27, 36, 48, 0.10)"
108
+ },
109
+ "dark": {
110
+ "elevation-1": "0 1px 2px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(232, 236, 242, 0.05)",
111
+ "elevation-2": "0 2px 6px rgba(0, 0, 0, 0.50), 0 0 0 1px rgba(232, 236, 242, 0.07)",
112
+ "elevation-3": "0 8px 24px rgba(0, 0, 0, 0.60), 0 0 0 1px rgba(232, 236, 242, 0.09)",
113
+ "notes": "Dark elevation pairs shadow with a faint outline plus the raised surface tokens so hierarchy survives without light-theme shadow contrast (AC-1106-5)."
114
+ }
115
+ },
116
+ "motion": {
117
+ "duration": {
118
+ "motion-fast": "150ms",
119
+ "motion-base": "200ms",
120
+ "motion-slow": "250ms"
121
+ },
122
+ "easing": {
123
+ "ease-out": "cubic-bezier(0.2, 0, 0, 1)",
124
+ "ease-in": "cubic-bezier(0.4, 0, 1, 1)",
125
+ "ease-in-out": "cubic-bezier(0.4, 0, 0.2, 1)"
126
+ },
127
+ "notes": "Defaults per ADR-207: enter and state changes use ease-out at motion-base; exits use motion-fast. prefers-reduced-motion collapses all of these (see theme.css)."
128
+ },
129
+ "breakpoints": {
130
+ "bp-360": "360px",
131
+ "bp-768": "768px",
132
+ "bp-1024": "1024px",
133
+ "bp-1440": "1440px",
134
+ "notes": "The ratified baseline breakpoints (application-spa-REQ-004). Container widths per breakpoint live in assets/viewports.md."
135
+ },
136
+ "targetSize": {
137
+ "minimum": "24px",
138
+ "notes": "Minimum interactive target per WCAG 2.2 and AC-1126-4; controls may render visually smaller only when padding or spacing preserves the 24x24 target."
139
+ }
140
+ }
@@ -0,0 +1,169 @@
1
+ /* application-spa blueprint theme stylesheet.
2
+ *
3
+ * Realises assets/tokens/design-tokens.json as CSS custom properties in
4
+ * both themes (application-spa-REQ-005, ADR-202). Selection model:
5
+ * 1. No stored choice: prefers-color-scheme decides (AC-1106-4).
6
+ * 2. Explicit choice: the application sets data-theme="light|dark" on
7
+ * the document root, which outranks the media query (AC-1107-5).
8
+ * Components consume the semantic custom properties only; raw colour
9
+ * values in component styles are a defect (AC-1106-1).
10
+ */
11
+
12
+ :root {
13
+ /* Colour, light theme (default). */
14
+ --color-surface: #ffffff;
15
+ --color-surface-raised: #f5f7fa;
16
+ --color-surface-sunken: #e9edf2;
17
+ --color-on-surface: #1b2430;
18
+ --color-on-surface-muted: #4a5568;
19
+ --color-primary: #1d4ed8;
20
+ --color-on-primary: #ffffff;
21
+ --color-accent: #0f6674;
22
+ --color-danger: #b3261e;
23
+ --color-on-danger: #ffffff;
24
+ --color-warning: #8a4b0f;
25
+ --color-success: #1a7431;
26
+ --color-muted: #5b6572;
27
+ --color-border: #697180;
28
+ --color-divider: #d8dee6;
29
+ --color-focus-ring: #1d4ed8;
30
+
31
+ /* Elevation, light theme. */
32
+ --elevation-1: 0 1px 2px rgba(27, 36, 48, 0.08), 0 1px 3px rgba(27, 36, 48, 0.06);
33
+ --elevation-2: 0 2px 6px rgba(27, 36, 48, 0.10), 0 4px 12px rgba(27, 36, 48, 0.08);
34
+ --elevation-3: 0 8px 24px rgba(27, 36, 48, 0.16), 0 2px 6px rgba(27, 36, 48, 0.10);
35
+
36
+ /* Spacing (4pt scale). */
37
+ --space-1: 0.25rem;
38
+ --space-2: 0.5rem;
39
+ --space-3: 0.75rem;
40
+ --space-4: 1rem;
41
+ --space-5: 1.25rem;
42
+ --space-6: 1.5rem;
43
+ --space-8: 2rem;
44
+ --space-10: 2.5rem;
45
+ --space-12: 3rem;
46
+ --space-16: 4rem;
47
+ --space-20: 5rem;
48
+
49
+ /* Radius. */
50
+ --radius-sm: 4px;
51
+ --radius-md: 8px;
52
+ --radius-lg: 12px;
53
+ --radius-full: 9999px;
54
+
55
+ /* Typography (fluid modular scale, ratio 1.25). */
56
+ --font-ui: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
57
+ --font-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', 'Roboto Mono', Menlo, monospace;
58
+ --text-xs: clamp(0.75rem, 0.72rem + 0.15vw, 0.8rem);
59
+ --text-sm: clamp(0.875rem, 0.85rem + 0.2vw, 0.95rem);
60
+ --text-body: clamp(0.875rem, 0.8rem + 0.5vw, 1rem);
61
+ --text-lg: clamp(1.094rem, 1rem + 0.6vw, 1.25rem);
62
+ --text-xl: clamp(1.367rem, 1.25rem + 0.75vw, 1.563rem);
63
+ --text-2xl: clamp(1.709rem, 1.55rem + 0.95vw, 1.953rem);
64
+ --text-3xl: clamp(2.136rem, 1.9rem + 1.2vw, 2.441rem);
65
+ --leading-body: 1.5;
66
+ --leading-heading: 1.2;
67
+
68
+ /* Motion (ADR-207). */
69
+ --motion-fast: 150ms;
70
+ --motion-base: 200ms;
71
+ --motion-slow: 250ms;
72
+ --ease-out: cubic-bezier(0.2, 0, 0, 1);
73
+ --ease-in: cubic-bezier(0.4, 0, 1, 1);
74
+ --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
75
+
76
+ /* Target size floor (WCAG 2.2, AC-1126-4). */
77
+ --target-min: 24px;
78
+
79
+ color-scheme: light;
80
+ }
81
+
82
+ /* Dark palette as a reusable declaration block: applied by media query
83
+ * when no explicit choice exists, and by data-theme when one does. */
84
+ @media (prefers-color-scheme: dark) {
85
+ :root:not([data-theme='light']) {
86
+ --color-surface: #12161d;
87
+ --color-surface-raised: #1a202a;
88
+ --color-surface-sunken: #0c0f15;
89
+ --color-on-surface: #e8ecf2;
90
+ --color-on-surface-muted: #a6b0bd;
91
+ --color-primary: #8ab4ff;
92
+ --color-on-primary: #0e1a33;
93
+ --color-accent: #5ad0e6;
94
+ --color-danger: #ff8f88;
95
+ --color-on-danger: #33100e;
96
+ --color-warning: #f0b354;
97
+ --color-success: #6dd58c;
98
+ --color-muted: #98a2b0;
99
+ --color-border: #8d97a5;
100
+ --color-divider: #323a46;
101
+ --color-focus-ring: #8ab4ff;
102
+ --elevation-1: 0 1px 2px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(232, 236, 242, 0.05);
103
+ --elevation-2: 0 2px 6px rgba(0, 0, 0, 0.50), 0 0 0 1px rgba(232, 236, 242, 0.07);
104
+ --elevation-3: 0 8px 24px rgba(0, 0, 0, 0.60), 0 0 0 1px rgba(232, 236, 242, 0.09);
105
+ color-scheme: dark;
106
+ }
107
+ }
108
+
109
+ :root[data-theme='dark'] {
110
+ --color-surface: #12161d;
111
+ --color-surface-raised: #1a202a;
112
+ --color-surface-sunken: #0c0f15;
113
+ --color-on-surface: #e8ecf2;
114
+ --color-on-surface-muted: #a6b0bd;
115
+ --color-primary: #8ab4ff;
116
+ --color-on-primary: #0e1a33;
117
+ --color-accent: #5ad0e6;
118
+ --color-danger: #ff8f88;
119
+ --color-on-danger: #33100e;
120
+ --color-warning: #f0b354;
121
+ --color-success: #6dd58c;
122
+ --color-muted: #98a2b0;
123
+ --color-border: #8d97a5;
124
+ --color-divider: #323a46;
125
+ --color-focus-ring: #8ab4ff;
126
+ --elevation-1: 0 1px 2px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(232, 236, 242, 0.05);
127
+ --elevation-2: 0 2px 6px rgba(0, 0, 0, 0.50), 0 0 0 1px rgba(232, 236, 242, 0.07);
128
+ --elevation-3: 0 8px 24px rgba(0, 0, 0, 0.60), 0 0 0 1px rgba(232, 236, 242, 0.09);
129
+ color-scheme: dark;
130
+ }
131
+
132
+ /* Base text defaults (application-spa-REQ-020). */
133
+ body {
134
+ font-family: var(--font-ui);
135
+ font-size: var(--text-body);
136
+ line-height: var(--leading-body);
137
+ color: var(--color-on-surface);
138
+ background: var(--color-surface);
139
+ }
140
+ h1, h2, h3, h4, h5, h6 {
141
+ line-height: var(--leading-heading);
142
+ }
143
+
144
+ /* Focus visibility (AC-1126-3): one consistent, token-driven indicator. */
145
+ :focus-visible {
146
+ outline: 2px solid var(--color-focus-ring);
147
+ outline-offset: 2px;
148
+ }
149
+
150
+ /* Reduced motion (application-spa-REQ-012, ADR-207): one root-level rule, not
151
+ * per-component checks. Essential motion opts back in explicitly. */
152
+ @media (prefers-reduced-motion: reduce) {
153
+ *,
154
+ *::before,
155
+ *::after {
156
+ animation-duration: 0.01ms !important;
157
+ animation-iteration-count: 1 !important;
158
+ transition-duration: 0.01ms !important;
159
+ scroll-behavior: auto !important;
160
+ }
161
+ }
162
+
163
+ /* Safe-area handling (application-spa-REQ-003): shell chrome applies the insets. */
164
+ .app-shell {
165
+ padding-top: env(safe-area-inset-top);
166
+ padding-right: env(safe-area-inset-right);
167
+ padding-bottom: env(safe-area-inset-bottom);
168
+ padding-left: env(safe-area-inset-left);
169
+ }
@@ -0,0 +1,18 @@
1
+ # Viewport table
2
+
3
+ The ratified baseline breakpoints (application-spa-REQ-004) and the layout behaviour declared at each. Every declared route must render without page-level horizontal overflow at all four widths (AC-1105-1).
4
+
5
+ | Breakpoint | Width | Container max-width | Columns | Navigation | Tables |
6
+ |---|---|---|---|---|---|
7
+ | bp-360 | 360px | 100% minus space-4 gutters | 4 | Top bar with menu disclosure; side nav closed | Card layout or scoped scroll container |
8
+ | bp-768 | 768px | 720px | 8 | Top bar full; side nav collapsible | Card layout or scoped scroll container up to 768; full table above |
9
+ | bp-1024 | 1024px | 960px | 12 | Top bar full; side nav open where declared | Full table |
10
+ | bp-1440 | 1440px | 1280px | 12 | Top bar full; side nav open where declared | Full table |
11
+
12
+ Rules that hold at every width:
13
+
14
+ - Reflow, not scale: layout reorganises between breakpoints (AC-1105-2); between the named widths the layout is fluid within the active column grid.
15
+ - Body text: minimum 14px below 768, minimum 16px at 768 and above; fluid between (application-spa-REQ-020).
16
+ - Interactive targets: minimum 24x24 CSS pixels at every width (AC-1105-6).
17
+ - Safe areas: shell chrome applies safe-area insets on notched viewports (application-spa-REQ-003).
18
+ - Test the four named widths as the floor, not the ceiling: resize continuously between 360 and 1440 when verifying reflow (AC-1127-3).
@@ -0,0 +1,48 @@
1
+ # Wireframe: dashboard
2
+
3
+ The authenticated home surface. Composes summary cards, a primary collection preview, and recent activity. Realise with the tokens in assets/tokens; all copy is placeholder shape, replaced per application-spa-US-1124.
4
+
5
+ ## 1024 and above
6
+
7
+ ```
8
+ +--------------------------------------------------------------------------+
9
+ | [skip-link (visible on focus)] |
10
+ | banner: logo | nav: Overview* Items Reports | search | theme | user menu |
11
+ +----------------+---------------------------------------------------------+
12
+ | side nav | h1 Dashboard |
13
+ | (if declared) | |
14
+ | Overview* | +-- card --------+ +-- card --------+ +-- card -------+ |
15
+ | Items | | metric label | | metric label | | metric label | |
16
+ | Reports | | 128 | | 42 | | 7 needs care | |
17
+ | | | delta context | | delta context | | warning tone | |
18
+ | | +----------------+ +----------------+ +---------------+ |
19
+ | | |
20
+ | | h2 Recent items [View all ->] |
21
+ | | +-----------------------------------------------------+ |
22
+ | | | item title | status chip | owner | updated | |
23
+ | | | item title | status chip | owner | updated | |
24
+ | | | item title | status chip | owner | updated | |
25
+ | | +-----------------------------------------------------+ |
26
+ | | |
27
+ | | h2 Activity |
28
+ | | | avatar actor did thing on item timestamp | |
29
+ | | | avatar actor did thing on item timestamp | |
30
+ +----------------+---------------------------------------------------------+
31
+ | contentinfo: product name | version | support link |
32
+ +--------------------------------------------------------------------------+
33
+ ```
34
+
35
+ ## 360
36
+
37
+ Single column: cards stack full-width (surface-raised, elevation-1), recent items render as cards per the table rule (AC-1105-4), activity list below. Navigation collapses into the menu disclosure; the theme toggle stays reachable in the top bar.
38
+
39
+ ## States
40
+
41
+ - Loading: skeletons mirror the three cards and the list rows (AC-1112-5); no full-page spinner.
42
+ - Empty (new account): each region renders its empty state; the recent-items region leads with the primary create action (AC-1112-4).
43
+ - Error: failed regions render the error-state component with retry, healthy regions still render; one failed query never blanks the dashboard.
44
+ - Re-entry: cached data renders instantly, then revalidates (AC-1120-2).
45
+
46
+ ## Landmarks and structure
47
+
48
+ banner, navigation, main (unique), contentinfo (AC-1103-5). Exactly one h1. Cards are not clickable wholesale unless the whole card is one link (AC-1111-1).
@@ -0,0 +1,40 @@
1
+ # Wireframe: detail (single resource)
2
+
3
+ The canonical single-resource surface at the resource's canonical URL. Deep-linkable cold (AC-1101-6), breadcrumbed when nested (AC-1101-3).
4
+
5
+ ## 1024 and above
6
+
7
+ ```
8
+ +--------------------------------------------------------------------------+
9
+ | shell |
10
+ +----------------+---------------------------------------------------------+
11
+ | side nav | breadcrumb: Home / Items / Quarterly readiness review |
12
+ | | h1 Quarterly readiness review [Edit] [... menu] |
13
+ | | status chip | owner | updated timestamp |
14
+ | | |
15
+ | | +--- main column (8 cols) ---+ +-- aside (4 cols) ----+ |
16
+ | | | h2 Description | | h2 Properties | |
17
+ | | | body text ... | | owner Alex Morgan | |
18
+ | | | | | status active | |
19
+ | | | h2 Activity | | created date | |
20
+ | | | timeline entries ... | | tags chips | |
21
+ | | +----------------------------+ +----------------------+ |
22
+ +----------------+---------------------------------------------------------+
23
+ ```
24
+
25
+ ## 360
26
+
27
+ Single column: header block, properties (collapsed into a definition list), description, activity. The overflow menu carries secondary actions; the primary action stays visible.
28
+
29
+ ## States
30
+
31
+ - Loading: skeleton for header block and both columns.
32
+ - Error, not found: the 404 surface (AC-1101-4); removed resource: the 410 surface (AC-1101-5).
33
+ - Error, load failure: error-state component with retry; the shell and breadcrumb still render.
34
+ - Success after edit: updated values render without reload on every route that displays this resource (AC-1120-6).
35
+ - Re-entry: cached render, background revalidation (AC-1120-2).
36
+
37
+ ## Behaviour contracts
38
+
39
+ - The [... menu] is an accessible popover (AC-1110-5); destructive entries open a confirmation modal with focus on the safe action (AC-1108-3).
40
+ - Timestamps format through locale APIs (AC-1122-3).
@@ -0,0 +1,31 @@
1
+ # Wireframe: empty state
2
+
3
+ The shape every empty region follows (AC-1112-4, AC-1117-3). Rendered inside the region it fills: a full route body, a table body, a combobox listbox, or an aside.
4
+
5
+ ## Shape (any width)
6
+
7
+ ```
8
+ +--------------------------------------------+
9
+ | |
10
+ | [ icon / small |
11
+ | illustration ] |
12
+ | |
13
+ | h2/h3 No items yet |
14
+ | |
15
+ | Body: one sentence naming what will |
16
+ | appear here and why it is useful. |
17
+ | |
18
+ | [ + Create your first item ] |
19
+ | [ secondary: learn more ] |
20
+ | |
21
+ +--------------------------------------------+
22
+ ```
23
+
24
+ ## Rules
25
+
26
+ - Three elements always: visual, headline naming the absent content, primary filling action (AC-1112-4). The secondary action is optional.
27
+ - Copy is context-specific: an empty "Items" list and an empty search result do not share copy (AC-1117-3); filtered-empty offers "clear filters" instead of "create".
28
+ - The visual uses the icon set through semantic aliases (application-spa-REQ-011), muted tones, decorative and hidden from assistive technology (AC-1118-4).
29
+ - Never renders while loading is still possible (AC-1117-6); the data layer must have settled on empty.
30
+ - Vertical centring within the region above 768; top-aligned with space-12 padding at 360.
31
+ - Template copy here is a shape, not shippable text (AC-1124-5).
@@ -0,0 +1,46 @@
1
+ # Wireframe: error states
2
+
3
+ Three distinct error surfaces, all fed by the problem-details envelope (ADR-204) and all phrased per application-spa-REQ-017.
4
+
5
+ ## Region error (a data load failed inside a healthy page)
6
+
7
+ ```
8
+ +--------------------------------------------+
9
+ | [ alert icon, danger alias ] |
10
+ | h3 We could not load your items |
11
+ | Body: The connection to the server |
12
+ | failed. Your other work is unaffected. |
13
+ | [ Try again ] |
14
+ +--------------------------------------------+
15
+ ```
16
+
17
+ Renders inside the failed region only; shell, navigation, and healthy regions stay live. Retry re-runs the query (AC-1121-2). 4xx-class problems adapt copy to the user-fixable cause; 5xx-class problems say it is not the user's fault (AC-1117-4).
18
+
19
+ ## Route error (404 / 410)
20
+
21
+ ```
22
+ +--------------------------------------------------------------------------+
23
+ | shell (navigation fully present) |
24
+ | |
25
+ | h1 There is nothing at this address |
26
+ | Body: The link may be mistyped or the page may have moved. |
27
+ | [ Go to dashboard ] [ search affordance if declared ] |
28
+ +--------------------------------------------------------------------------+
29
+ ```
30
+
31
+ 404 says "never existed or moved"; 410 names the resource as removed, in past tense, with a path to its collection (AC-1101-4, AC-1101-5).
32
+
33
+ ## Application error (error boundary caught a crash)
34
+
35
+ ```
36
+ +--------------------------------------------------------------------------+
37
+ | shell if the shell boundary survived, otherwise minimal branded frame |
38
+ | |
39
+ | h1 Something went wrong on our side |
40
+ | Body: The page hit a problem it could not recover from. |
41
+ | Nothing you did caused this. |
42
+ | [ Reload this page ] [ Go to dashboard ] |
43
+ +--------------------------------------------------------------------------+
44
+ ```
45
+
46
+ The boundary reports with route and component context (AC-1123-3). No stack traces, exception names, or internal ids anywhere on any of the three surfaces (AC-1124-4).
@@ -0,0 +1,50 @@
1
+ # Wireframe: form (create and edit)
2
+
3
+ The canonical mutation surface. Realises the application-spa-REQ-007 contract end to end; the forms engine (TAC-205) owns timing and error binding.
4
+
5
+ ## 1024 and above
6
+
7
+ ```
8
+ +--------------------------------------------------------------------------+
9
+ | shell |
10
+ +----------------+---------------------------------------------------------+
11
+ | side nav | breadcrumb: Home / Items / New item |
12
+ | | h1 New item |
13
+ | | |
14
+ | | [ error summary: appears here on failed submit, |
15
+ | | one link per failed field, focus lands here ] |
16
+ | | |
17
+ | | Title (required) |
18
+ | | [_______________________________________________] |
19
+ | | helper text: what a good title looks like |
20
+ | | |
21
+ | | Owner (required) Status |
22
+ | | [ combobox............v ] [ select.........v ] |
23
+ | | |
24
+ | | Description |
25
+ | | [ textarea ] |
26
+ | | [ ] |
27
+ | | |
28
+ | | Tags |
29
+ | | [ chip input___________________ ] |
30
+ | | |
31
+ | | [Cancel] [Create item] |
32
+ +----------------+---------------------------------------------------------+
33
+ ```
34
+
35
+ ## 360
36
+
37
+ Single column, labels above fields, actions full-width with the primary action last and reachable without scrolling past unrelated content. Field-appropriate mobile keyboards via inputmode and type (AC-1113-6).
38
+
39
+ ## States
40
+
41
+ - Field error: danger border, message under the field, aria-describedby wired (AC-1113-4); clears live on correction (AC-1113-1).
42
+ - Failed submit: summary renders and takes focus (AC-1113-2, AC-1113-3); values preserved (AC-1113-7).
43
+ - Submitting: primary button busy per AC-1108-2; fields stay readable, not blanked.
44
+ - Offline submit: queued-or-refused explicitly, payload intact (AC-1121-3).
45
+ - Success: route per journey spec, confirmation visible, affected collections updated (AC-1117-5).
46
+ - Dirty-leave: navigating away with unsaved changes asks for confirmation via modal (AC-1110-1).
47
+
48
+ ## Notes
49
+
50
+ Required marking is visible and programmatic (AC-1113-5). Autocomplete tokens on personal-data fields (AC-1113-6). No motion during entry (AC-1119-4).
@@ -0,0 +1,45 @@
1
+ # Wireframe: list (collection)
2
+
3
+ The canonical collection surface: filterable, sortable, paginated. One of these exists per listable resource class, always at the collection's canonical URL (application-spa-REQ-001).
4
+
5
+ ## 1024 and above
6
+
7
+ ```
8
+ +--------------------------------------------------------------------------+
9
+ | shell (as dashboard) |
10
+ +----------------+---------------------------------------------------------+
11
+ | side nav | breadcrumb: Home / Items (if depth > 2) |
12
+ | | h1 Items (128) [+ New item] |
13
+ | | |
14
+ | | [ filter: status v ] [ filter: owner v ] [ search... ] |
15
+ | | active filters as dismissible chips |
16
+ | | |
17
+ | | +-----------------------------------------------------+ |
18
+ | | | Title ^ | Status | Owner | Updated v | |
19
+ | | |-----------------------------------------------------| |
20
+ | | | item title | status chip | avatar | date | |
21
+ | | | item title | status chip | avatar | date | |
22
+ | | | ... 25 rows per page ... | |
23
+ | | +-----------------------------------------------------+ |
24
+ | | |
25
+ | | [< Prev] Page 3 of 6 [Next >] 25 per page v |
26
+ +----------------+---------------------------------------------------------+
27
+ ```
28
+
29
+ ## 360
30
+
31
+ Filters collapse into a single Filters disclosure showing an active-count badge. Rows render as cards: title prominent, status chip, owner, updated; the primary action stays visible without horizontal scroll (AC-1105-4).
32
+
33
+ ## States
34
+
35
+ - Loading: skeleton rows matching the column silhouette (AC-1111-4).
36
+ - Empty, no data: empty-state component; headline names the resource, primary action creates the first one (AC-1112-4).
37
+ - Empty, filtered to zero: distinct copy naming the filters, action clears them; do not reuse the no-data state.
38
+ - Error: error-state component inside the table region with retry (AC-1111-4).
39
+ - Success after create or edit: list reflects the write without manual refresh (AC-1120-3), confirmation per the journey spec.
40
+
41
+ ## Behaviour contracts
42
+
43
+ - Sort headers expose aria-sort and cycle predictably (AC-1111-3).
44
+ - Page and named filters serialise to the URL so positions are shareable (AC-1111-8).
45
+ - Pagination controls disable impossible moves rather than hiding them (AC-1111-7).
@@ -0,0 +1,35 @@
1
+ # Wireframe: session expired
2
+
3
+ Rendered when a request returns 401 mid-session (AC-1116-1). Distinct from sign-out: the user did not choose this, so the surface explains and preserves their place.
4
+
5
+ ## Shape
6
+
7
+ ```
8
+ +--------------------------------------------------------------------------+
9
+ | minimal banner: product logo | theme toggle |
10
+ | |
11
+ | +------------------------------+ |
12
+ | | [ info icon alias ] | |
13
+ | | | |
14
+ | | h1 Your session expired | |
15
+ | | | |
16
+ | | Body: For your security you | |
17
+ | | were signed out after a | |
18
+ | | period of inactivity. Sign | |
19
+ | | back in to pick up where | |
20
+ | | you left off. | |
21
+ | | | |
22
+ | | [ sign-in form or button | |
23
+ | | per project auth flow ] | |
24
+ | +------------------------------+ |
25
+ | |
26
+ | contentinfo |
27
+ +--------------------------------------------------------------------------+
28
+ ```
29
+
30
+ ## Behaviour
31
+
32
+ - The interrupted route is remembered; successful re-authentication returns the user there (AC-1116-2), with declared form-input preservation honoured (AC-1114-4).
33
+ - Tone is neutral and unblaming (application-spa-REQ-017): expiry is a security behaviour, not a user mistake.
34
+ - If multiple requests fail at once, the surface renders once; parallel 401s must not stack redirects or alerts.
35
+ - The data layer stops retrying while this surface is up and resumes cleanly after re-authentication (TAC-204).