rcf-lite 0.20.0 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/blueprints/application-account-settings/CHANGELOG.md +12 -0
  3. package/blueprints/application-account-settings/README.md +114 -0
  4. package/blueprints/application-account-settings/blueprint.json +234 -0
  5. package/blueprints/application-account-settings/contributions/adrs/adr-2601-application-account-settings-capability-vocabulary.json +20 -0
  6. package/blueprints/application-account-settings/contributions/adrs/adr-2602-application-account-settings-security-surface-shape.json +20 -0
  7. package/blueprints/application-account-settings/contributions/adrs/adr-2603-application-account-settings-theme-persistence.json +20 -0
  8. package/blueprints/application-account-settings/contributions/adrs/adr-2604-application-account-settings-reauth-window.json +20 -0
  9. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-001.json +18 -0
  10. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-002.json +18 -0
  11. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-003.json +18 -0
  12. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-004.json +18 -0
  13. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-005.json +18 -0
  14. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-006.json +18 -0
  15. package/blueprints/application-account-settings/contributions/tacs/tac-2601-application-account-settings-shell.json +41 -0
  16. package/blueprints/application-account-settings/contributions/tacs/tac-2602-application-account-settings-capability-discovery.json +28 -0
  17. package/blueprints/application-account-settings/contributions/tacs/tac-2603-application-account-settings-hosted-ui-bridge.json +35 -0
  18. package/blueprints/application-account-settings/contributions/tacs/tac-2604-application-account-settings-session-store.json +40 -0
  19. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25101.json +34 -0
  20. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25102.json +27 -0
  21. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25103.json +27 -0
  22. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25104.json +27 -0
  23. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25105.json +33 -0
  24. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25106.json +27 -0
  25. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25107.json +27 -0
  26. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25108.json +27 -0
  27. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25109.json +33 -0
  28. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25110.json +27 -0
  29. package/blueprints/application-account-settings/docs/topics.md +48 -0
  30. package/blueprints/application-account-settings/guide/application-account-settings.md +30 -0
  31. package/blueprints/application-account-settings/probe-packs/application-account-settings.pack.mjs +246 -0
  32. package/blueprints/application-admin-console/CHANGELOG.md +11 -0
  33. package/blueprints/application-admin-console/README.md +98 -0
  34. package/blueprints/application-admin-console/blueprint.json +226 -0
  35. package/blueprints/application-admin-console/contributions/adrs/adr-2201-application-admin-console-capability-vocabulary.json +25 -0
  36. package/blueprints/application-admin-console/contributions/adrs/adr-2202-application-admin-console-baseline-roles.json +25 -0
  37. package/blueprints/application-admin-console/contributions/adrs/adr-2203-application-admin-console-invite-transport.json +20 -0
  38. package/blueprints/application-admin-console/contributions/adrs/adr-2204-application-admin-console-audit-retention.json +20 -0
  39. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-001.json +18 -0
  40. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-002.json +18 -0
  41. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-003.json +18 -0
  42. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-004.json +18 -0
  43. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-005.json +18 -0
  44. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-006.json +18 -0
  45. package/blueprints/application-admin-console/contributions/tacs/tac-2201-application-admin-console-shell.json +40 -0
  46. package/blueprints/application-admin-console/contributions/tacs/tac-2202-application-admin-console-capability-discovery.json +44 -0
  47. package/blueprints/application-admin-console/contributions/tacs/tac-2203-application-admin-console-permission-matrix.json +34 -0
  48. package/blueprints/application-admin-console/contributions/tacs/tac-2204-application-admin-console-audit-view.json +40 -0
  49. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21101.json +34 -0
  50. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21102.json +34 -0
  51. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21103.json +34 -0
  52. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21104.json +28 -0
  53. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21105.json +34 -0
  54. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21106.json +27 -0
  55. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21107.json +27 -0
  56. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21108.json +27 -0
  57. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21109.json +33 -0
  58. package/blueprints/application-admin-console/docs/topics.md +42 -0
  59. package/blueprints/application-admin-console/guide/application-admin-console.md +29 -0
  60. package/blueprints/application-admin-console/probe-packs/application-admin-console.pack.mjs +182 -0
  61. package/blueprints/application-api-rest/docs/topics.md +13 -1
  62. package/blueprints/application-charts/CHANGELOG.md +12 -0
  63. package/blueprints/application-charts/README.md +73 -0
  64. package/blueprints/application-charts/blueprint.json +26 -0
  65. package/blueprints/application-charts/contributions/adrs/adr-1901-application-charts-engine-choice.json +25 -0
  66. package/blueprints/application-charts/contributions/adrs/adr-1902-application-charts-accessible-palette.json +25 -0
  67. package/blueprints/application-charts/contributions/adrs/adr-1903-application-charts-motion.json +25 -0
  68. package/blueprints/application-charts/contributions/requirements/application-charts-req-001.json +15 -0
  69. package/blueprints/application-charts/contributions/requirements/application-charts-req-002.json +15 -0
  70. package/blueprints/application-charts/contributions/requirements/application-charts-req-003.json +15 -0
  71. package/blueprints/application-charts/contributions/requirements/application-charts-req-004.json +15 -0
  72. package/blueprints/application-charts/contributions/tacs/tac-1901-application-charts-render-shell.json +42 -0
  73. package/blueprints/application-charts/contributions/tacs/tac-1902-application-charts-keyboard-traversal.json +40 -0
  74. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18101.json +35 -0
  75. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18102.json +35 -0
  76. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18103.json +35 -0
  77. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18104.json +35 -0
  78. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18105.json +35 -0
  79. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18106.json +35 -0
  80. package/blueprints/application-charts/docs/topics.md +44 -0
  81. package/blueprints/application-charts/guide/application-charts.md +44 -0
  82. package/blueprints/application-charts/probe-packs/application-charts.pack.mjs +191 -0
  83. package/blueprints/application-dashboard/CHANGELOG.md +10 -0
  84. package/blueprints/application-dashboard/README.md +102 -0
  85. package/blueprints/application-dashboard/assets/guidance/dashboard-design.md +124 -0
  86. package/blueprints/application-dashboard/blueprint.json +29 -0
  87. package/blueprints/application-dashboard/contributions/adrs/adr-2001-application-dashboard-primary-kpi-enum.json +25 -0
  88. package/blueprints/application-dashboard/contributions/adrs/adr-2002-application-dashboard-timeframe-presets.json +25 -0
  89. package/blueprints/application-dashboard/contributions/adrs/adr-2003-application-dashboard-export-formats.json +25 -0
  90. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-001.json +15 -0
  91. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-002.json +15 -0
  92. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-003.json +15 -0
  93. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-004.json +15 -0
  94. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-005.json +15 -0
  95. package/blueprints/application-dashboard/contributions/tacs/tac-2001-application-dashboard-tile-grid.json +47 -0
  96. package/blueprints/application-dashboard/contributions/tacs/tac-2002-application-dashboard-filter-chrome.json +41 -0
  97. package/blueprints/application-dashboard/contributions/tacs/tac-2003-application-dashboard-export-handle.json +35 -0
  98. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19101.json +35 -0
  99. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19102.json +35 -0
  100. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19103.json +35 -0
  101. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19104.json +35 -0
  102. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19105.json +35 -0
  103. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19106.json +35 -0
  104. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19107.json +35 -0
  105. package/blueprints/application-dashboard/docs/topics.md +50 -0
  106. package/blueprints/application-dashboard/guide/application-dashboard.md +48 -0
  107. package/blueprints/application-dashboard/probe-packs/application-dashboard.pack.mjs +231 -0
  108. package/blueprints/application-datatable/CHANGELOG.md +8 -0
  109. package/blueprints/application-datatable/README.md +43 -0
  110. package/blueprints/application-datatable/blueprint.json +33 -0
  111. package/blueprints/application-datatable/contributions/adrs/adr-1801-application-datatable-pattern-choice.json +25 -0
  112. package/blueprints/application-datatable/contributions/adrs/adr-1802-application-datatable-url-state.json +20 -0
  113. package/blueprints/application-datatable/contributions/adrs/adr-1803-application-datatable-page-size.json +20 -0
  114. package/blueprints/application-datatable/contributions/adrs/adr-1804-application-datatable-selection-persistence.json +20 -0
  115. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-001.json +15 -0
  116. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-002.json +15 -0
  117. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-003.json +15 -0
  118. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-004.json +15 -0
  119. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-005.json +15 -0
  120. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-006.json +15 -0
  121. package/blueprints/application-datatable/contributions/tacs/tac-1801-application-datatable-shell.json +50 -0
  122. package/blueprints/application-datatable/contributions/tacs/tac-1802-application-datatable-query-adapter.json +39 -0
  123. package/blueprints/application-datatable/contributions/tacs/tac-1803-application-datatable-selection-model.json +28 -0
  124. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17101.json +44 -0
  125. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17102.json +44 -0
  126. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17103.json +44 -0
  127. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17104.json +44 -0
  128. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17105.json +44 -0
  129. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17106.json +44 -0
  130. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17107.json +44 -0
  131. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17108.json +44 -0
  132. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17109.json +44 -0
  133. package/blueprints/application-datatable/docs/topics.md +42 -0
  134. package/blueprints/application-datatable/guide/application-datatable.md +38 -0
  135. package/blueprints/application-datatable/probe-packs/application-datatable.pack.mjs +240 -0
  136. package/blueprints/application-empty-error-states/CHANGELOG.md +9 -0
  137. package/blueprints/application-empty-error-states/README.md +88 -0
  138. package/blueprints/application-empty-error-states/blueprint.json +119 -0
  139. package/blueprints/application-empty-error-states/contributions/adrs/adr-2301-application-empty-error-states-status-contract.json +25 -0
  140. package/blueprints/application-empty-error-states/contributions/adrs/adr-2302-application-empty-error-states-stack-trace-visibility.json +25 -0
  141. package/blueprints/application-empty-error-states/contributions/adrs/adr-2303-application-empty-error-states-offline-strategy.json +25 -0
  142. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-001.json +18 -0
  143. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-002.json +18 -0
  144. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-003.json +18 -0
  145. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-004.json +18 -0
  146. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-005.json +18 -0
  147. package/blueprints/application-empty-error-states/contributions/tacs/tac-2301-application-empty-error-states-state-machine.json +46 -0
  148. package/blueprints/application-empty-error-states/contributions/tacs/tac-2302-application-empty-error-states-recovery-router.json +36 -0
  149. package/blueprints/application-empty-error-states/contributions/tacs/tac-2303-application-empty-error-states-offline-buffer.json +40 -0
  150. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22101.json +29 -0
  151. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22102.json +29 -0
  152. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22103.json +29 -0
  153. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22104.json +29 -0
  154. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22105.json +29 -0
  155. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22106.json +29 -0
  156. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22107.json +29 -0
  157. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22108.json +29 -0
  158. package/blueprints/application-empty-error-states/docs/topics.md +53 -0
  159. package/blueprints/application-empty-error-states/guide/application-empty-error-states.md +50 -0
  160. package/blueprints/application-empty-error-states/probe-packs/application-empty-error-states.pack.mjs +284 -0
  161. package/blueprints/application-error-handling/docs/topics.md +12 -0
  162. package/blueprints/application-file-upload/CHANGELOG.md +9 -0
  163. package/blueprints/application-file-upload/README.md +85 -0
  164. package/blueprints/application-file-upload/blueprint.json +114 -0
  165. package/blueprints/application-file-upload/contributions/adrs/adr-2401-application-file-upload-transport.json +25 -0
  166. package/blueprints/application-file-upload/contributions/adrs/adr-2402-application-file-upload-accepted-set.json +25 -0
  167. package/blueprints/application-file-upload/contributions/adrs/adr-2403-application-file-upload-virus-scan.json +25 -0
  168. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-001.json +18 -0
  169. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-002.json +18 -0
  170. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-003.json +18 -0
  171. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-004.json +18 -0
  172. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-005.json +18 -0
  173. package/blueprints/application-file-upload/contributions/tacs/tac-2401-application-file-upload-input.json +46 -0
  174. package/blueprints/application-file-upload/contributions/tacs/tac-2402-application-file-upload-transport.json +47 -0
  175. package/blueprints/application-file-upload/contributions/tacs/tac-2403-application-file-upload-progress-announcer.json +46 -0
  176. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23101.json +28 -0
  177. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23102.json +28 -0
  178. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23103.json +29 -0
  179. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23104.json +28 -0
  180. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23105.json +29 -0
  181. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23106.json +28 -0
  182. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23107.json +28 -0
  183. package/blueprints/application-file-upload/docs/topics.md +58 -0
  184. package/blueprints/application-file-upload/guide/application-file-upload.md +48 -0
  185. package/blueprints/application-file-upload/probe-packs/application-file-upload.pack.mjs +238 -0
  186. package/blueprints/application-forms-wizard/CHANGELOG.md +9 -0
  187. package/blueprints/application-forms-wizard/README.md +102 -0
  188. package/blueprints/application-forms-wizard/blueprint.json +120 -0
  189. package/blueprints/application-forms-wizard/contributions/adrs/adr-2501-application-forms-wizard-navigation.json +25 -0
  190. package/blueprints/application-forms-wizard/contributions/adrs/adr-2502-application-forms-wizard-save-and-return.json +25 -0
  191. package/blueprints/application-forms-wizard/contributions/adrs/adr-2503-application-forms-wizard-step-indicator.json +25 -0
  192. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-001.json +18 -0
  193. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-002.json +18 -0
  194. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-003.json +18 -0
  195. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-004.json +18 -0
  196. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-005.json +18 -0
  197. package/blueprints/application-forms-wizard/contributions/tacs/tac-2501-application-forms-wizard-task-list.json +46 -0
  198. package/blueprints/application-forms-wizard/contributions/tacs/tac-2502-application-forms-wizard-error-summary.json +40 -0
  199. package/blueprints/application-forms-wizard/contributions/tacs/tac-2503-application-forms-wizard-draft-store.json +40 -0
  200. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24101.json +28 -0
  201. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24102.json +29 -0
  202. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24103.json +28 -0
  203. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24104.json +29 -0
  204. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24105.json +28 -0
  205. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24106.json +28 -0
  206. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24107.json +28 -0
  207. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24108.json +29 -0
  208. package/blueprints/application-forms-wizard/docs/topics.md +49 -0
  209. package/blueprints/application-forms-wizard/guide/application-forms-wizard.md +48 -0
  210. package/blueprints/application-forms-wizard/probe-packs/application-forms-wizard.pack.mjs +233 -0
  211. package/blueprints/application-notifications-in-app/CHANGELOG.md +9 -0
  212. package/blueprints/application-notifications-in-app/README.md +80 -0
  213. package/blueprints/application-notifications-in-app/blueprint.json +30 -0
  214. package/blueprints/application-notifications-in-app/contributions/adrs/adr-2101-application-notifications-in-app-live-region-role-mapping.json +25 -0
  215. package/blueprints/application-notifications-in-app/contributions/adrs/adr-2102-application-notifications-in-app-toast-timeout-floor.json +25 -0
  216. package/blueprints/application-notifications-in-app/contributions/adrs/adr-2103-application-notifications-in-app-retention-window.json +25 -0
  217. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-001.json +15 -0
  218. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-002.json +15 -0
  219. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-003.json +15 -0
  220. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-004.json +15 -0
  221. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-005.json +15 -0
  222. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2101-application-notifications-in-app-live-region.json +46 -0
  223. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2102-application-notifications-in-app-centre.json +52 -0
  224. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2103-application-notifications-in-app-preferences.json +40 -0
  225. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20101.json +35 -0
  226. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20102.json +35 -0
  227. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20103.json +35 -0
  228. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20104.json +35 -0
  229. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20105.json +35 -0
  230. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20106.json +26 -0
  231. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20107.json +26 -0
  232. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20108.json +26 -0
  233. package/blueprints/application-notifications-in-app/docs/topics.md +46 -0
  234. package/blueprints/application-notifications-in-app/guide/application-notifications-in-app.md +47 -0
  235. package/blueprints/application-notifications-in-app/probe-packs/application-notifications-in-app.pack.mjs +328 -0
  236. package/blueprints/application-onboarding-tour/CHANGELOG.md +12 -0
  237. package/blueprints/application-onboarding-tour/README.md +77 -0
  238. package/blueprints/application-onboarding-tour/blueprint.json +164 -0
  239. package/blueprints/application-onboarding-tour/contributions/adrs/adr-2701-application-onboarding-tour-dismissal-policy.json +20 -0
  240. package/blueprints/application-onboarding-tour/contributions/adrs/adr-2702-application-onboarding-tour-completion-store-shape.json +20 -0
  241. package/blueprints/application-onboarding-tour/contributions/adrs/adr-2703-application-onboarding-tour-checklist-anchor.json +20 -0
  242. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-001.json +18 -0
  243. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-002.json +18 -0
  244. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-003.json +18 -0
  245. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-004.json +18 -0
  246. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2701-application-onboarding-tour-step-runner.json +41 -0
  247. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2702-application-onboarding-tour-checklist-slot.json +35 -0
  248. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2703-application-onboarding-tour-completion-store.json +34 -0
  249. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26101.json +27 -0
  250. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26102.json +27 -0
  251. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26103.json +27 -0
  252. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26104.json +27 -0
  253. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26105.json +27 -0
  254. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26106.json +27 -0
  255. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26107.json +27 -0
  256. package/blueprints/application-onboarding-tour/docs/topics.md +48 -0
  257. package/blueprints/application-onboarding-tour/guide/application-onboarding-tour.md +59 -0
  258. package/blueprints/application-onboarding-tour/probe-packs/application-onboarding-tour.pack.mjs +231 -0
  259. package/blueprints/application-spa/docs/topics.md +13 -1
  260. package/blueprints/delivery-ci-workflows/docs/topics.md +13 -1
  261. package/blueprints/deploy-cloudflare-workers/docs/topics.md +13 -1
  262. package/blueprints/email-smtp-resend/docs/topics.md +13 -1
  263. package/blueprints/object-storage-s3/CHANGELOG.md +13 -0
  264. package/blueprints/object-storage-s3/README.md +108 -0
  265. package/blueprints/object-storage-s3/blueprint.json +72 -0
  266. package/blueprints/object-storage-s3/contributions/adrs/adr-2901-object-storage-s3-adapter.json +30 -0
  267. package/blueprints/object-storage-s3/contributions/adrs/adr-2902-object-storage-s3-presigned-ttl-floor.json +25 -0
  268. package/blueprints/object-storage-s3/contributions/adrs/adr-2903-object-storage-s3-multipart-threshold.json +25 -0
  269. package/blueprints/object-storage-s3/contributions/adrs/adr-2904-object-storage-s3-contract.json +25 -0
  270. package/blueprints/object-storage-s3/contributions/probes/event-secrecy.mjs +103 -0
  271. package/blueprints/object-storage-s3/contributions/probes/facade-round-trip.mjs +43 -0
  272. package/blueprints/object-storage-s3/contributions/probes/multipart-upload.mjs +84 -0
  273. package/blueprints/object-storage-s3/contributions/probes/presigned-url.mjs +101 -0
  274. package/blueprints/object-storage-s3/contributions/probes/probe-utils.mjs +85 -0
  275. package/blueprints/object-storage-s3/contributions/probes/put-get-round-trip.mjs +84 -0
  276. package/blueprints/object-storage-s3/contributions/probes/r2-real-account-smoke.mjs +64 -0
  277. package/blueprints/object-storage-s3/contributions/probes/run-event-secrecy.mjs +4 -0
  278. package/blueprints/object-storage-s3/contributions/probes/run-facade-round-trip.mjs +10 -0
  279. package/blueprints/object-storage-s3/contributions/probes/run-multipart-upload.mjs +4 -0
  280. package/blueprints/object-storage-s3/contributions/probes/run-presigned-url.mjs +4 -0
  281. package/blueprints/object-storage-s3/contributions/probes/run-put-get-round-trip.mjs +7 -0
  282. package/blueprints/object-storage-s3/contributions/probes/run-r2-real-account-smoke.mjs +4 -0
  283. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-001.json +18 -0
  284. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-002.json +18 -0
  285. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-003.json +18 -0
  286. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-004.json +18 -0
  287. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-005.json +18 -0
  288. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-006.json +18 -0
  289. package/blueprints/object-storage-s3/contributions/tacs/tac-2901-object-storage-s3-facade.json +57 -0
  290. package/blueprints/object-storage-s3/contributions/tacs/tac-2902-object-storage-s3-multipart-uploader.json +36 -0
  291. package/blueprints/object-storage-s3/contributions/tacs/tac-2903-object-storage-s3-event-sink.json +36 -0
  292. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28101.json +34 -0
  293. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28102.json +43 -0
  294. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28103.json +25 -0
  295. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28104.json +34 -0
  296. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28105.json +25 -0
  297. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28106.json +34 -0
  298. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28107.json +34 -0
  299. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28108.json +34 -0
  300. package/blueprints/object-storage-s3/docs/topics.md +62 -0
  301. package/blueprints/object-storage-s3/guide/object-storage-s3.md +207 -0
  302. package/blueprints/observability-essentials/docs/topics.md +13 -1
  303. package/blueprints/observability-logging/CHANGELOG.md +9 -0
  304. package/blueprints/observability-logging/README.md +4 -1
  305. package/blueprints/observability-logging/blueprint.json +114 -21
  306. package/blueprints/observability-logging/docs/topics.md +12 -0
  307. package/blueprints/observability-probe-endpoints/docs/topics.md +13 -1
  308. package/blueprints/persistence-data-d1/docs/topics.md +13 -1
  309. package/blueprints/persistence-data-postgres/CHANGELOG.md +12 -0
  310. package/blueprints/persistence-data-postgres/README.md +101 -0
  311. package/blueprints/persistence-data-postgres/blueprint.json +80 -0
  312. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2801-persistence-data-postgres-driver.json +30 -0
  313. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2802-persistence-data-postgres-migration-shape.json +25 -0
  314. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2803-persistence-data-postgres-runner-mode.json +25 -0
  315. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2804-persistence-data-postgres-recovery.json +25 -0
  316. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2805-persistence-data-postgres-connection-pool-posture.json +25 -0
  317. package/blueprints/persistence-data-postgres/contributions/probes/facade-round-trip.mjs +56 -0
  318. package/blueprints/persistence-data-postgres/contributions/probes/migration-apply.mjs +75 -0
  319. package/blueprints/persistence-data-postgres/contributions/probes/pool-posture-smoke.mjs +56 -0
  320. package/blueprints/persistence-data-postgres/contributions/probes/prepared-statement-scan.mjs +186 -0
  321. package/blueprints/persistence-data-postgres/contributions/probes/probe-utils.mjs +76 -0
  322. package/blueprints/persistence-data-postgres/contributions/probes/recovery-restore-round-trip.mjs +173 -0
  323. package/blueprints/persistence-data-postgres/contributions/probes/run-facade-round-trip.mjs +10 -0
  324. package/blueprints/persistence-data-postgres/contributions/probes/run-migration-apply.mjs +10 -0
  325. package/blueprints/persistence-data-postgres/contributions/probes/run-pool-posture-smoke.mjs +9 -0
  326. package/blueprints/persistence-data-postgres/contributions/probes/run-prepared-statement-scan.mjs +10 -0
  327. package/blueprints/persistence-data-postgres/contributions/probes/run-recovery-restore-round-trip.mjs +9 -0
  328. package/blueprints/persistence-data-postgres/contributions/probes/run-transaction-atomicity.mjs +10 -0
  329. package/blueprints/persistence-data-postgres/contributions/probes/transaction-atomicity.mjs +79 -0
  330. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-001.json +18 -0
  331. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-002.json +18 -0
  332. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-003.json +18 -0
  333. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-004.json +18 -0
  334. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-005.json +18 -0
  335. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-006.json +18 -0
  336. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-007.json +18 -0
  337. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2801-persistence-data-postgres-facade.json +58 -0
  338. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2802-persistence-data-postgres-migration-runner.json +40 -0
  339. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2803-persistence-data-postgres-transaction-helper.json +35 -0
  340. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2804-persistence-data-postgres-recovery-runner.json +40 -0
  341. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27101.json +34 -0
  342. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27102.json +25 -0
  343. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27103.json +25 -0
  344. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27104.json +25 -0
  345. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27105.json +25 -0
  346. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27106.json +25 -0
  347. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27107.json +25 -0
  348. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27108.json +25 -0
  349. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27109.json +25 -0
  350. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27110.json +25 -0
  351. package/blueprints/persistence-data-postgres/docs/topics.md +64 -0
  352. package/blueprints/persistence-data-postgres/guide/persistence-data-postgres.md +172 -0
  353. package/blueprints/persistence-data-sqlite/docs/topics.md +13 -1
  354. package/blueprints/security-auth-clerk/CHANGELOG.md +9 -0
  355. package/blueprints/security-auth-clerk/README.md +3 -0
  356. package/blueprints/security-auth-clerk/blueprint.json +147 -29
  357. package/blueprints/security-auth-clerk/docs/topics.md +13 -1
  358. package/blueprints/security-auth-keycloak/CHANGELOG.md +9 -0
  359. package/blueprints/security-auth-keycloak/README.md +3 -0
  360. package/blueprints/security-auth-keycloak/blueprint.json +182 -36
  361. package/blueprints/security-auth-keycloak/docs/topics.md +13 -1
  362. package/blueprints/security-auth-magic-link/CHANGELOG.md +9 -0
  363. package/blueprints/security-auth-magic-link/README.md +3 -0
  364. package/blueprints/security-auth-magic-link/blueprint.json +159 -32
  365. package/blueprints/security-auth-magic-link/docs/topics.md +13 -1
  366. package/blueprints/security-auth-oauth2/CHANGELOG.md +9 -0
  367. package/blueprints/security-auth-oauth2/README.md +3 -0
  368. package/blueprints/security-auth-oauth2/blueprint.json +158 -31
  369. package/blueprints/security-auth-oauth2/docs/topics.md +13 -1
  370. package/blueprints/security-secrets-management/CHANGELOG.md +11 -0
  371. package/blueprints/security-secrets-management/blueprint.json +2 -1
  372. package/blueprints/security-secrets-management/docs/topics.md +13 -1
  373. package/fixtures/canary-manifest.json +9 -9
  374. package/package.json +2 -2
  375. package/rcf/code-nodes/cn-106.json +13 -0
  376. package/rcf/code-nodes/cn-107.json +14 -0
  377. package/rcf/code-nodes/cn-108.json +13 -0
  378. package/rcf/code-nodes/cn-109.json +12 -0
  379. package/rcf/code-nodes/cn-110.json +12 -0
  380. package/rcf/code-nodes/cn-111.json +14 -0
  381. package/rcf/code-nodes/cn-112.json +14 -0
  382. package/rcf/code-nodes/cn-113.json +12 -0
  383. package/rcf/code-nodes/cn-114.json +13 -0
  384. package/rcf/code-nodes/cn-115.json +13 -0
  385. package/rcf/code-nodes/cn-116.json +12 -0
  386. package/rcf/code-nodes/cn-117.json +13 -0
  387. package/rcf/code-nodes/cn-118.json +13 -0
  388. package/rcf/code-nodes/cn-119.json +13 -0
  389. package/rcf/code-nodes/cn-120.json +13 -0
  390. package/rcf/code-nodes/cn-121.json +12 -0
  391. package/rcf/code-nodes/cn-122.json +12 -0
  392. package/rcf/code-nodes/cn-123.json +13 -0
  393. package/rcf/code-nodes/cn-124.json +13 -0
  394. package/rcf/code-nodes/cn-125.json +13 -0
  395. package/rcf/code-nodes/cn-126.json +13 -0
  396. package/rcf/code-nodes/cn-127.json +12 -0
  397. package/rcf/code-nodes/cn-128.json +14 -0
  398. package/rcf/code-nodes/cn-129.json +14 -0
  399. package/rcf/code-nodes/cn-130.json +14 -0
  400. package/rcf/code-nodes/cn-131.json +15 -0
  401. package/rcf/code-nodes/cn-132.json +12 -0
  402. package/rcf/code-nodes/cn-133.json +13 -0
  403. package/rcf/code-nodes/cn-134.json +13 -0
  404. package/rcf/code-nodes/cn-135.json +12 -0
  405. package/rcf/code-nodes/cn-136.json +13 -0
  406. package/rcf/code-nodes/cn-137.json +13 -0
  407. package/rcf/code-nodes/cn-138.json +12 -0
  408. package/rcf/code-nodes/cn-139.json +12 -0
  409. package/rcf/code-nodes/cn-140.json +13 -0
  410. package/rcf/code-nodes/cn-141.json +13 -0
  411. package/rcf/code-nodes/cn-142.json +12 -0
  412. package/rcf/code-nodes/cn-143.json +13 -0
  413. package/rcf/code-nodes/cn-144.json +13 -0
  414. package/rcf/code-nodes/cn-145.json +12 -0
  415. package/rcf/code-nodes/cn-146.json +12 -0
  416. package/rcf/code-nodes/cn-147.json +13 -0
  417. package/rcf/code-nodes/cn-148.json +13 -0
  418. package/rcf/code-nodes/cn-149.json +12 -0
  419. package/rcf/code-nodes/cn-150.json +13 -0
  420. package/rcf/code-nodes/cn-151.json +13 -0
  421. package/rcf/code-nodes/cn-152.json +12 -0
  422. package/rcf/code-nodes/cn-153.json +12 -0
  423. package/rcf/code-nodes/cn-154.json +13 -0
  424. package/rcf/code-nodes/cn-155.json +14 -0
  425. package/rcf/code-nodes/cn-156.json +13 -0
  426. package/rcf/code-nodes/cn-157.json +13 -0
  427. package/rcf/code-nodes/cn-158.json +12 -0
  428. package/rcf/code-nodes/cn-159.json +13 -0
  429. package/rcf/code-nodes/cn-160.json +12 -0
  430. package/rcf/code-nodes/cn-161.json +12 -0
  431. package/rcf/code-nodes/cn-162.json +13 -0
  432. package/rcf/code-nodes/cn-163.json +12 -0
  433. package/rcf/code-nodes/cn-164.json +13 -0
  434. package/rcf/code-nodes/cn-165.json +12 -0
  435. package/rcf/code-nodes/cn-166.json +12 -0
  436. package/rcf/code-nodes/cn-167.json +12 -0
  437. package/rcf/code-nodes/cn-168.json +12 -0
  438. package/rcf/code-nodes/cn-169.json +12 -0
  439. package/rcf/code-nodes/cn-170.json +12 -0
  440. package/rcf/code-nodes/cn-171.json +12 -0
  441. package/rcf/code-nodes/cn-172.json +12 -0
  442. package/rcf/code-nodes/cn-173.json +12 -0
  443. package/rcf/code-nodes/cn-174.json +12 -0
  444. package/rcf/code-nodes/cn-175.json +13 -0
  445. package/rcf/code-nodes/cn-176.json +12 -0
  446. package/rcf/code-nodes/cn-177.json +12 -0
  447. package/rcf/code-nodes/cn-178.json +12 -0
  448. package/rcf/code-nodes/cn-179.json +12 -0
  449. package/rcf/code-nodes/cn-180.json +13 -0
  450. package/rcf/code-nodes/cn-181.json +12 -0
  451. package/rcf/code-nodes/cn-182.json +13 -0
  452. package/rcf/code-nodes/cn-183.json +12 -0
  453. package/rcf/code-nodes/cn-184.json +13 -0
  454. package/rcf/code-nodes/cn-185.json +12 -0
  455. package/rcf/code-nodes/cn-186.json +12 -0
  456. package/rcf/code-nodes/cn-200.json +14 -0
  457. package/rcf/code-nodes/cn-201.json +13 -0
  458. package/rcf/code-nodes/cn-202.json +14 -0
  459. package/rcf/code-nodes/cn-203.json +14 -0
  460. package/rcf/code-nodes/cn-204.json +13 -0
  461. package/rcf/code-nodes/cn-205.json +14 -0
  462. package/rcf/fbs/fbs-036.json +22 -0
  463. package/rcf/fbs/fbs-037.json +19 -0
  464. package/rcf/fbs/fbs-038.json +19 -0
  465. package/rcf/fbs/fbs-039.json +21 -0
  466. package/rcf/fbs/fbs-040.json +20 -0
  467. package/rcf/fbs/fbs-041.json +13 -0
  468. package/rcf/fbs/fbs-042.json +13 -0
  469. package/rcf/fbs/fbs-043.json +23 -0
  470. package/rcf/fbs/fbs-044.json +23 -0
  471. package/rcf/fbs/fbs-045.json +23 -0
  472. package/rcf/fbs/fbs-046.json +24 -0
  473. package/rcf/fbs/fbs-047.json +24 -0
  474. package/rcf/fbs/fbs-060.json +22 -0
  475. package/rcf/fbs/fbs-061.json +20 -0
  476. package/rcf/requirements/req-017.json +18 -0
  477. package/rcf/requirements/req-018.json +18 -0
  478. package/rcf/requirements/req-019.json +38 -0
  479. package/rcf/requirements/req-020.json +13 -0
  480. package/rcf/requirements/req-021.json +13 -0
  481. package/rcf/requirements/req-022.json +13 -0
  482. package/rcf/requirements/req-023.json +14 -0
  483. package/rcf/requirements/req-024.json +69 -0
  484. package/rcf/requirements/req-025.json +59 -0
  485. package/rcf/requirements/req-026.json +154 -0
  486. package/rcf/requirements/req-027.json +33 -0
  487. package/rcf/requirements/req-028.json +13 -0
  488. package/rcf/requirements/req-040.json +13 -0
  489. package/rcf/requirements/req-041.json +125 -0
  490. package/rcf/test-suites/ts-046.json +78 -0
  491. package/rcf/test-suites/ts-047.json +54 -0
  492. package/rcf/test-suites/ts-048.json +54 -0
  493. package/rcf/test-suites/ts-049.json +70 -0
  494. package/rcf/test-suites/ts-050.json +69 -0
  495. package/rcf/test-suites/ts-051.json +22 -0
  496. package/rcf/test-suites/ts-052.json +20 -0
  497. package/rcf/test-suites/ts-053.json +70 -0
  498. package/rcf/test-suites/ts-054.json +70 -0
  499. package/rcf/test-suites/ts-055.json +77 -0
  500. package/rcf/test-suites/ts-056.json +78 -0
  501. package/rcf/test-suites/ts-057.json +78 -0
  502. package/rcf/test-suites/ts-070.json +62 -0
  503. package/rcf/test-suites/ts-071.json +62 -0
  504. package/rcf/user-stories/us-1701.json +56 -0
  505. package/rcf/user-stories/us-1801.json +40 -0
  506. package/rcf/user-stories/us-1901.json +40 -0
  507. package/rcf/user-stories/us-2001.json +50 -0
  508. package/rcf/user-stories/us-2101.json +45 -0
  509. package/rcf/user-stories/us-2201.json +60 -0
  510. package/rcf/user-stories/us-2301.json +51 -0
  511. package/rcf/user-stories/us-2401.json +62 -0
  512. package/rcf/user-stories/us-2501.json +58 -0
  513. package/rcf/user-stories/us-2601.json +51 -0
  514. package/rcf/user-stories/us-2701.json +55 -0
  515. package/rcf/user-stories/us-2801.json +55 -0
  516. package/rcf/user-stories/us-4001.json +69 -0
  517. package/rcf/user-stories/us-4101.json +69 -0
  518. package/releases/releases.yaml +21 -1
  519. package/src/blueprint/apply.js +107 -1
  520. package/src/blueprint/capabilities.js +357 -0
  521. package/src/blueprint/loader.js +247 -0
  522. package/src/browser-verify/boot.js +180 -0
  523. package/src/browser-verify/index.js +13 -0
  524. package/src/browser-verify/manifest-writer.js +31 -6
  525. package/src/browser-verify/pack-browser.js +294 -0
  526. package/src/browser-verify/pack-loader.js +176 -0
  527. package/src/browser-verify/pack-runner.js +193 -0
  528. package/src/browser-verify/pack-schema.js +155 -0
  529. package/src/browser-verify/runner.js +24 -1
  530. package/src/cli/blueprint.js +99 -0
  531. package/src/cli/browser-verify.js +147 -7
  532. package/src/core/errors/index.js +7 -0
@@ -0,0 +1,25 @@
1
+ {
2
+ "adrId": "ADR-2202-application-admin-console-baseline-roles",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "accepted",
7
+ "title": "Owner + Admin + Member + Viewer baseline; elicited additions per project",
8
+ "context": "A permission matrix needs a starting role set. SaaS UI research 2026 (industry sources including Auth0, Okta, Clerk internal role catalogues; NN/g admin-console pattern research) converges on the four-role Owner + Admin + Member + Viewer baseline as the modal starter posture. Every project has its own domain-specific additions (SupportAgent, Auditor, Reviewer), so the baseline is the floor, not the ceiling.",
9
+ "decision": "v1.0.0 declares Owner, Admin, Member, Viewer as the baseline four role labels the console renders in the matrix. The project elicits additional labels at apply time via the baselineRoles elicit (when the roleModel capability is applied); the baseline four render first, additions after. The four labels are prose, not code: a projects auth blueprint may map them to internal role ids at surface time.",
10
+ "consequences": "A fresh project applying admin-console with clerk (declares roleModel) gets a working matrix at Owner + Admin + Member + Viewer immediately; a project with domain-specific roles adds them via the elicit answer without a code change. The mapping between baseline label and internal role id is the applying projects concern (industry practice: label vs id decoupling).",
11
+ "alternativesConsidered": [
12
+ {
13
+ "name": "Elicit the entire role set",
14
+ "summary": "No baseline; every project elicits their own four-plus roles.",
15
+ "reasonNotChosen": "Adds friction for the modal case (the Owner/Admin/Member/Viewer baseline covers most greenfield projects) and pushes cognitive load onto the operator every apply."
16
+ },
17
+ {
18
+ "name": "Ship only two roles (Admin + User)",
19
+ "summary": "A tighter baseline.",
20
+ "reasonNotChosen": "The Admin/User binary loses the distinction between an operator (Admin), a paying customer (Member) and a shared read-only stakeholder (Viewer) that SaaS UI research treats as a load-bearing shape."
21
+ }
22
+ ],
23
+ "createdAt": "2026-09-05T01:30:00Z",
24
+ "updatedAt": "2026-09-05T01:30:00Z"
25
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "adrId": "ADR-2203-application-admin-console-invite-transport",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "accepted",
7
+ "title": "Invite transport: email default (delegated to the email sibling), elicited",
8
+ "context": "A users surface invite action needs a delivery transport. The shelf ships an email sibling under the application-notifications family (application-notifications-email, reserved as a family-prefix); a projects transport preference varies (email is the modal case; a Slack- or Teams-first workplace prefers a chat transport; an in-app-only demo needs no external transport).",
9
+ "decision": "v1.0.0 declares email as the recommended default invite transport; the console delegates delivery to the applied application-notifications-email sibling when present, otherwise records the invite as a pending event on the notification centre for a later transport to pick up. The transport is elicited at apply time via the inviteTransport elicit (enum: email, in-app-only, custom), so the console does not hardcode the delivery path.",
10
+ "consequences": "A project on the modal SaaS shape (email invite) gets a working invite path once application-notifications-email lands (currently reserved). A project that wants in-app-only invites picks that at apply. A future custom transport declares its own capability and the console delegates via the same elicit.",
11
+ "alternativesConsidered": [
12
+ {
13
+ "name": "Hard-code email as the transport",
14
+ "summary": "The invite always writes to the email sibling.",
15
+ "reasonNotChosen": "Refuses in-app-only demos and projects that want a chat-first workplace, and couples the console tightly to one shelf sibling."
16
+ }
17
+ ],
18
+ "createdAt": "2026-09-05T01:30:00Z",
19
+ "updatedAt": "2026-09-05T01:30:00Z"
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "adrId": "ADR-2204-application-admin-console-audit-retention",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "accepted",
7
+ "title": "Audit-log retention window: elicited (default 90 days when auditLog is applied)",
8
+ "context": "The audit view reads the applied logging companions event stream. Retention windows are domain-specific (finance and healthcare regulations push retention to years; consumer SaaS often trims to 90 days for storage cost and privacy hygiene). The console does not own the retention decision; the applying project does.",
9
+ "decision": "v1.0.0 declares audit-log retention as an elicited parameter (auditRetentionDays elicit, kind:string default \"90\", when: auditLog is applied). The console renders the audit view with the elicited window; the applied logging companion is responsible for actually enforcing the retention at the write layer. The console suppresses the audit view when the auditLog capability is not applied.",
10
+ "consequences": "A projects audit view honours the elicited window; the write-side retention is the loggers job (the console does not delete rows from the log). A project on a heavily-regulated domain elicits a longer window at apply; a consumer SaaS defaults to 90 days.",
11
+ "alternativesConsidered": [
12
+ {
13
+ "name": "Hard-code a 90-day retention",
14
+ "summary": "The console reads the last 90 days only.",
15
+ "reasonNotChosen": "Refuses regulated-domain projects that need to render older entries in the surface; the retention question is authentically the projects, not the shelfs."
16
+ }
17
+ ],
18
+ "createdAt": "2026-09-05T01:30:00Z",
19
+ "updatedAt": "2026-09-05T01:30:00Z"
20
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "reqId": "application-admin-console-REQ-001",
3
+ "prdId": "PRD-001",
4
+ "title": "The application ships an admin-console shell with navigation across the applied capability set and no dead links",
5
+ "description": "The application realises an admin-console surface whose navigation, on load, reads the applied blueprints capability declarations (via source read-back on manifest.blueprints[]) and renders links only for the surfaces the applied capabilities enable. A surface whose gating capability is not applied is neither linked nor reachable from the shell. The shell is the base surface REQ-002 to REQ-006 elaborate on.",
6
+ "category": "functional",
7
+ "domain": "application",
8
+ "priority": "must",
9
+ "rationale": "Per visual round spec section 5.5, REQ 1 of the admin-console blueprint.",
10
+ "tags": [
11
+ "blueprint:application-admin-console",
12
+ "category:01-shell"
13
+ ],
14
+ "version": "1.0.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-05T01:30:00Z",
17
+ "updatedAt": "2026-09-05T01:30:00Z"
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "reqId": "application-admin-console-REQ-002",
3
+ "prdId": "PRD-001",
4
+ "title": "Users surface conditional on principalDirectory, with directory, invite, deactivate, last-active columns",
5
+ "description": "When an applied blueprint declares the principalDirectory capability, the console renders a users route: a directory table listing every principal identified by data-user-id, an invite control per row for a principal without an active session, a deactivate control per row for an active principal, and last-active plus status columns. A principal without admin scope reaching /admin renders an access-denied state (REQ-006) with a request-access control routed to a notification. The users table is a datatable (T-1 consumer) with the same ARIA APG contract.",
6
+ "category": "functional",
7
+ "domain": "application",
8
+ "priority": "must",
9
+ "rationale": "Per visual round spec section 5.5, REQ 2 of the admin-console blueprint.",
10
+ "tags": [
11
+ "blueprint:application-admin-console",
12
+ "category:02-users"
13
+ ],
14
+ "version": "1.0.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-05T01:30:00Z",
17
+ "updatedAt": "2026-09-05T01:30:00Z"
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "reqId": "application-admin-console-REQ-003",
3
+ "prdId": "PRD-001",
4
+ "title": "Roles surface conditional on roleModel, with Owner + Admin + Member + Viewer baseline and permission matrix",
5
+ "description": "When an applied blueprint declares the roleModel capability, the console renders a roles route: the Owner + Admin + Member + Viewer baseline (elicited additions per ADR-2202), and a permission matrix as an ARIA APG grid (rows = roles, columns = permissions, cells = allowed/denied). Each cell announces the exact permission string as it takes focus (WCAG 4.1.3). The matrix suppresses when roleModel is not applied.",
6
+ "category": "functional",
7
+ "domain": "application",
8
+ "priority": "must",
9
+ "rationale": "Per visual round spec section 5.5, REQ 3 of the admin-console blueprint.",
10
+ "tags": [
11
+ "blueprint:application-admin-console",
12
+ "category:03-roles"
13
+ ],
14
+ "version": "1.0.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-05T01:30:00Z",
17
+ "updatedAt": "2026-09-05T01:30:00Z"
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "reqId": "application-admin-console-REQ-004",
3
+ "prdId": "PRD-001",
4
+ "title": "Orgs surface conditional on tenancy, with switcher and org-scoped invites",
5
+ "description": "When an applied blueprint declares the tenancy capability, the console renders an orgs route: an org switcher control on the shell and an org-scoped invite path from the users surface. The tenancy capability today has no shelf provider (reserved for a future application-tenancy-orgs blueprint per spec section 11); the surface is suppressed until that provider ships.",
6
+ "category": "functional",
7
+ "domain": "application",
8
+ "priority": "must",
9
+ "rationale": "Per visual round spec section 5.5, REQ 4 of the admin-console blueprint.",
10
+ "tags": [
11
+ "blueprint:application-admin-console",
12
+ "category:04-orgs"
13
+ ],
14
+ "version": "1.0.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-05T01:30:00Z",
17
+ "updatedAt": "2026-09-05T01:30:00Z"
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "reqId": "application-admin-console-REQ-005",
3
+ "prdId": "PRD-001",
4
+ "title": "Audit-log surface conditional on the auditLog capability (via the applied logging companion), reading the delivered event stream",
5
+ "description": "When the auditLog capability is applied (through the observability-logging companion or a future dedicated audit blueprint), the console renders an audit-log route: an audit table listing every entry identified by data-audit-id and carrying actor, target, before, after, timestamp, and correlationId columns; per-actor filter chrome and per-target filter chrome; retention window per ADR-2204. Consumes application-datatable (T-1) for the table shell.",
6
+ "category": "functional",
7
+ "domain": "application",
8
+ "priority": "must",
9
+ "rationale": "Per visual round spec section 5.5, REQ 5 of the admin-console blueprint.",
10
+ "tags": [
11
+ "blueprint:application-admin-console",
12
+ "category:05-audit"
13
+ ],
14
+ "version": "1.0.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-05T01:30:00Z",
17
+ "updatedAt": "2026-09-05T01:30:00Z"
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "reqId": "application-admin-console-REQ-006",
3
+ "prdId": "PRD-001",
4
+ "title": "Access-denied and request-access states per WCAG 2.2 AA",
5
+ "description": "A principal without admin scope reaching an admin route renders an access-denied state under WCAG 2.4.6 Headings and Labels and 3.3.4 Error Prevention: a heading naming the denied action, an explanation of why access was refused, and a request-access control routed to a POST /api/request-access endpoint the applied notification blueprint delivers on. The request-access control is keyboard-reachable and announces its state (idle, submitting, submitted) via a polite live region (WCAG 4.1.3).",
6
+ "category": "functional",
7
+ "domain": "application",
8
+ "priority": "must",
9
+ "rationale": "Per visual round spec section 5.5, REQ 6 of the admin-console blueprint.",
10
+ "tags": [
11
+ "blueprint:application-admin-console",
12
+ "category:06-access-denied"
13
+ ],
14
+ "version": "1.0.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-05T01:30:00Z",
17
+ "updatedAt": "2026-09-05T01:30:00Z"
18
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "tacId": "TAC-2201-application-admin-console-shell",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "name": "Admin-console shell",
8
+ "purpose": "Owns the rendered admin-console surface: the top-level nav landmark, the surface-manifest read at load, the conditional rendering of every applied surface (users, roles, orgs, audit), the access-denied and request-access states, and the shared page layout every surface renders within. The shell is the base surface every AC in this blueprint anchors on.",
9
+ "responsibilities": [
10
+ "Read the applied capability sidecar (rcf/blueprints/application-admin-console.applied.json) at load and configure the surface set (AC-21101-1, AC-21107-1).",
11
+ "Render a single primary navigation landmark carrying an accessible name and rendering only applied surfaces (AC-21101-1, AC-21101-2).",
12
+ "Render the access-denied state for a non-admin principal reaching any admin route with a keyboard-reachable request-access control announcing its state (AC-21106-1).",
13
+ "Delegate the users, roles, orgs and audit surfaces to their respective TACs (TAC-2201 through TAC-2204)."
14
+ ],
15
+ "internalStructure": "One shell module that mounts the surface, reads the applied capabilities sidecar, and renders the nav landmark, the page-layout scaffolding, and the route-level containers for each conditional surface. The framework is not prescribed; the shell interfaces are what the project realises against React, Vue, Svelte or vanilla DOM.",
16
+ "interfaces": [
17
+ {
18
+ "name": "renderShell",
19
+ "kind": "factory",
20
+ "description": "renderShell({ capsSidecarUrl, surfaceRegistry, accessGuard }) -> { mount(rootElement), unmount() }. The project supplies the capsSidecarUrl (where the sidecar is served from), the surfaceRegistry (maps a capability string to a surface component), and the accessGuard (returns whether the current principal has admin scope)."
21
+ },
22
+ {
23
+ "name": "capabilitiesSidecar",
24
+ "kind": "shape",
25
+ "description": "{ slug, version, appliedAt, appliedCapabilities: string[], appliedElicitations: {}, allowNoAuthYet?: boolean, notes?: string }. Written by apply, read by the shell."
26
+ }
27
+ ],
28
+ "dependencies": [
29
+ {
30
+ "name": "Capability discovery",
31
+ "kind": "tac",
32
+ "tacId": "TAC-2202-application-admin-console-capability-discovery",
33
+ "description": "The shell reads the surface-manifest through discovery."
34
+ }
35
+ ],
36
+ "tradeoffs": "The shell reads the sidecar file the apply verb writes; a runtime probe against manifest.blueprints[] would be more dynamic but ties the shell to the deploy-target having filesystem read access, which not every deploy target grants. The sidecar contract is deterministic and cacheable.",
37
+ "notes": "Known mechanism-reach gap: the shell contract cannot prove keyboard focus does not escape the surface in every frameworks rendering; project-side smoke tests supplement the pack. See README `Known mechanism-reach gaps`.",
38
+ "createdAt": "2026-09-05T01:30:00Z",
39
+ "updatedAt": "2026-09-05T01:30:00Z"
40
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "tacId": "TAC-2202-application-admin-console-capability-discovery",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "name": "Capability discovery",
8
+ "purpose": "Owns the apply-time reader that inspects every applied blueprints source blueprint.json for its capabilities[] declaration and composes the union as appliedCapabilities. Owns the write side that persists the discovered union plus elicit answers into rcf/blueprints/application-admin-console.applied.json. Runs at apply time (packages/rcf-lite/src/blueprint/capabilities.js); the shell reads the sidecar the runtime writes.",
9
+ "responsibilities": [
10
+ "Enumerate manifest.blueprints[] and read each applied blueprints source blueprint.json to extract its capabilities[] (AC-21107-1).",
11
+ "Compose the union of applied capabilities as a sorted string array (deterministic sidecar output).",
12
+ "Run the elicitation phase gated on the discovered capabilities: an elicit whose when.requiresCapability list has no overlap with the union does not prompt (AC-21109-2).",
13
+ "Write the sidecar file with appliedCapabilities[], appliedElicitations{}, allowNoAuthYet? and notes? (AC-21107-1)."
14
+ ],
15
+ "internalStructure": "Two helpers: discoverAppliedCapabilities(applied, projectRoot) reads and unions; writeSidecar({slug, version, appliedAt, appliedCapabilities, appliedElicitations, allowNoAuthYet?, notes?}) writes the file. Both live in packages/rcf-lite/src/blueprint/capabilities.js.",
16
+ "interfaces": [
17
+ {
18
+ "name": "discoverAppliedCapabilities",
19
+ "kind": "function",
20
+ "description": "Returns { union: string[], perSlug: Record<slug, string[]> }."
21
+ },
22
+ {
23
+ "name": "runElicitationPhase",
24
+ "kind": "function",
25
+ "description": "Applies each elicits[] entry against the discovered capability set and coerces answers per kind."
26
+ },
27
+ {
28
+ "name": "writeSidecar",
29
+ "kind": "function",
30
+ "description": "Writes rcf/blueprints/${slug}.applied.json."
31
+ }
32
+ ],
33
+ "dependencies": [
34
+ {
35
+ "name": "Blueprint loader",
36
+ "kind": "external",
37
+ "description": "Reads each applied blueprints source blueprint.json."
38
+ }
39
+ ],
40
+ "tradeoffs": "Source read-back rather than a schema-carried appliedCapabilities field on the applied record: the rcf-schemas 0.6.0 appliedBlueprintRecord is closed under additionalProperties:false, so a new field cannot land without a schema minor bump. The sidecar decouples the mechanism from the schema release cycle. A future rcf-schemas minor may add appliedCapabilities directly on the applied record and this TAC would move the write there; the sidecar would remain a supported read path for backward compatibility.",
41
+ "notes": "Reads the applied recordss source string. When the source is a library-qualified ref (wsd:auth-oauth2), the source blueprint is not on this local tree and the reader returns an empty capabilities list; the applied record is skipped from the union.",
42
+ "createdAt": "2026-09-05T01:30:00Z",
43
+ "updatedAt": "2026-09-05T01:30:00Z"
44
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "tacId": "TAC-2203-application-admin-console-permission-matrix",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "name": "Permission matrix",
8
+ "purpose": "Owns the roles surface: renders the permission matrix as an ARIA APG grid (role=\"grid\" on the outer element, role=\"row\" on every rank, role=\"rowheader\" on the leftmost cell of each role rank, role=\"columnheader\" on every permission column header, role=\"gridcell\" on inner cells). Each cell announces its permission string on focus (WCAG 4.1.3).",
9
+ "responsibilities": [
10
+ "Render the ARIA APG grid pattern per WAI-ARIA Authoring Practices Guide (AC-21103-1).",
11
+ "Render the Owner + Admin + Member + Viewer baseline in the first four rank rows; elicited additional roles rendered after (AC-21103-2).",
12
+ "Announce every cells permission string plus allowed/denied state via aria-label on focus (AC-21103-1, WCAG 4.1.3)."
13
+ ],
14
+ "internalStructure": "One grid module: computes the matrix rank layout, renders the header rank and the role ranks, wires focus management for two-dimensional keyboard navigation, and drives aria-label from a permission catalogue map. Framework-agnostic per shell contract.",
15
+ "interfaces": [
16
+ {
17
+ "name": "renderMatrix",
18
+ "kind": "factory",
19
+ "description": "renderMatrix({ roles: RoleSpec[], permissions: PermissionSpec[], matrix: Record<roleId, Record<permissionId, boolean>> }) -> { mount(rootElement), unmount() }."
20
+ }
21
+ ],
22
+ "dependencies": [
23
+ {
24
+ "name": "Admin-console shell",
25
+ "kind": "tac",
26
+ "tacId": "TAC-2201-application-admin-console-shell",
27
+ "description": "The matrix mounts inside the shell page-layout."
28
+ }
29
+ ],
30
+ "tradeoffs": "A grid pattern is more expensive to implement than a plain table but is the correct pattern for a keyboard-interactive matrix (per ARIA APG guidance). The pack asserts the pattern is present, not that every cell announces on focus perfectly in every framework: a project-side keyboard smoke complements the pack.",
31
+ "notes": "Consumes the datatable pattern-choice contract (ADR-1801, table vs grid per interactivity) at the shell edge, without namespacing conflicts because admin-console does not contribute an ADR on datatable pattern.",
32
+ "createdAt": "2026-09-05T01:30:00Z",
33
+ "updatedAt": "2026-09-05T01:30:00Z"
34
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "tacId": "TAC-2204-application-admin-console-audit-view",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "name": "Audit view",
8
+ "purpose": "Owns the audit-log surface: consumes the application-datatable shell (T-1) for filter chrome, pagination, four state regions and the row enumeration contract. Renders every audit entry with actor / target / before / after / timestamp / correlationId columns; the correlation id is the join key with the applied logging companion.",
9
+ "responsibilities": [
10
+ "Render every audit entry inside the datatable shell (AC-21105-1, AC-21105-2).",
11
+ "Enumerate every row by data-audit-id and expose every column via data-column (AC-21105-1).",
12
+ "Render per-actor and per-target filter chrome via the datatable query adapter (AC-21105-2)."
13
+ ],
14
+ "internalStructure": "A datatable adapter module: maps the audit event stream to the datatable columnsSpec, exposes the entry ids via data-audit-id, and threads the correlationId column through the datatable render.",
15
+ "interfaces": [
16
+ {
17
+ "name": "renderAuditView",
18
+ "kind": "factory",
19
+ "description": "renderAuditView({ eventStream, columns, retentionWindow }) -> { mount(rootElement), unmount() }."
20
+ }
21
+ ],
22
+ "dependencies": [
23
+ {
24
+ "name": "Datatable shell",
25
+ "kind": "tac",
26
+ "tacId": "TAC-1801-application-datatable-shell",
27
+ "description": "Consumed for the table shell contract; the audit view supplies columnsSpec and queryAdapter and delegates the DOM to the datatable."
28
+ },
29
+ {
30
+ "name": "Admin-console shell",
31
+ "kind": "tac",
32
+ "tacId": "TAC-2201-application-admin-console-shell",
33
+ "description": "The audit view mounts inside the shell page-layout."
34
+ }
35
+ ],
36
+ "tradeoffs": "Consuming the datatable shell rather than reimplementing gets ARIA APG grid + WCAG state regions for free; it constrains the audit views UI to the datatable contract. A future audit-specific timeline view supersedes this TAC in its own realisation.",
37
+ "notes": "The retention window is elicited (ADR-2204); the surface itself is capability-gated on auditLog (from the applied logging companion).",
38
+ "createdAt": "2026-09-05T01:30:00Z",
39
+ "updatedAt": "2026-09-05T01:30:00Z"
40
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "usId": "application-admin-console-US-21101",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "The console shell reads the applied capabilities at load and renders navigation only for surfaces that are gated on an applied capability",
8
+ "asA": "admin operator opening the console for the first time",
9
+ "iWant": "the console shell to inspect the applied capability set and render navigation only for surfaces whose gating capability is applied",
10
+ "soThat": "I do not click a link that leads to a surface the project cannot realise on the applied identity blueprint",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21101-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "The console shell reads rcf/blueprints/application-admin-console.applied.json (written by apply at deploy time) and, for each of principalDirectory, roleModel, tenancy, auditLog, renders a nav item ONLY when the capability is present in appliedCapabilities[]. A nav item that would route to a non-applied surface is neither rendered nor keyboard-reachable."
17
+ },
18
+ {
19
+ "id": "AC-21101-2",
20
+ "testable": true,
21
+ "scope": "runtime",
22
+ "description": "The shell has a single primary nav landmark (role=\"navigation\" or a nav element) with an accessible name naming the console."
23
+ }
24
+ ],
25
+ "tacIds": [
26
+ "TAC-2201-application-admin-console-shell",
27
+ "TAC-2202-application-admin-console-capability-discovery"
28
+ ],
29
+ "tags": [
30
+ "blueprint:application-admin-console"
31
+ ],
32
+ "createdAt": "2026-09-05T01:30:00Z",
33
+ "updatedAt": "2026-09-05T01:30:00Z"
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "usId": "application-admin-console-US-21102",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-002",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Users surface lists principals when principalDirectory is applied, and renders access-denied for non-admin",
8
+ "asA": "admin operator managing user directory",
9
+ "iWant": "a users route that lists every principal identified by data-user-id with invite, deactivate, last-active and status columns when the applied auth blueprint declares principalDirectory; and an access-denied state with a request-access control for a principal without admin scope",
10
+ "soThat": "I can see and act on the identity set the applied auth blueprint provides, and non-admin users have a clear next step when they hit the console",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21102-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "Given an authenticated admin AND an applied auth blueprint declaring principalDirectory, the users table lists every principal with data-user-id on each row, a role column (only when roleModel is applied; else suppressed), a last-active timestamp, and a status column; a principal without admin scope reaching /admin renders an access-denied state with a \"request access\" control routing to POST /api/request-access. Probed by application-admin-console pack check AC-21102-1."
17
+ },
18
+ {
19
+ "id": "AC-21102-2",
20
+ "testable": true,
21
+ "scope": "runtime",
22
+ "description": "Each row exposes an invite control for a principal without an active session (data-action=\"invite\") and a deactivate control for an active principal (data-action=\"deactivate\"); the controls are keyboard-reachable buttons."
23
+ }
24
+ ],
25
+ "tacIds": [
26
+ "TAC-2201-application-admin-console-shell",
27
+ "TAC-2202-application-admin-console-capability-discovery"
28
+ ],
29
+ "tags": [
30
+ "blueprint:application-admin-console"
31
+ ],
32
+ "createdAt": "2026-09-05T01:30:00Z",
33
+ "updatedAt": "2026-09-05T01:30:00Z"
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "usId": "application-admin-console-US-21103",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-003",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Roles surface renders the permission matrix as an ARIA APG grid when roleModel is applied",
8
+ "asA": "admin operator reviewing role permissions",
9
+ "iWant": "the roles route to render Owner, Admin, Member, Viewer as rows and the permission catalogue as columns in a proper ARIA APG grid, each cell announcing its permission string on focus",
10
+ "soThat": "sighted, keyboard-only and screen-reader users all perceive the same permission model",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21103-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "Given the roles surface AND an applied auth blueprint declaring roleModel, the permission matrix renders as an ARIA APG grid: role=\"grid\" on the outer element, role=\"row\" on every rank (including the header rank), role=\"columnheader\" on every permission column header, role=\"rowheader\" on the leftmost cell of each role rank, role=\"gridcell\" on every inner cell, and each cell carries an aria-label announcing the exact permission string plus the allowed/denied state on focus (WCAG 4.1.3). Probed by pack check AC-21103-1."
17
+ },
18
+ {
19
+ "id": "AC-21103-2",
20
+ "testable": true,
21
+ "scope": "runtime",
22
+ "description": "The baseline role set is Owner, Admin, Member, Viewer (ADR-2202); elicited additional roles rendered as extra rank rows, with the baseline four rendered first and additions after."
23
+ }
24
+ ],
25
+ "tacIds": [
26
+ "TAC-2201-application-admin-console-shell",
27
+ "TAC-2203-application-admin-console-permission-matrix"
28
+ ],
29
+ "tags": [
30
+ "blueprint:application-admin-console"
31
+ ],
32
+ "createdAt": "2026-09-05T01:30:00Z",
33
+ "updatedAt": "2026-09-05T01:30:00Z"
34
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "usId": "application-admin-console-US-21104",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-004",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Orgs surface renders an org switcher and org-scoped invite only when tenancy is applied",
8
+ "asA": "admin operator on a multi-tenant project",
9
+ "iWant": "the shell to expose an org switcher and the users surface to expose an org-scoped invite when the applied blueprints declare the tenancy capability",
10
+ "soThat": "the console lets me operate on one org at a time without mixing directories across tenants",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21104-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "Given an applied blueprint declaring tenancy, the shell renders an org switcher control (data-role=\"org-switcher\") on the console header; the users invite path renders an org selector. When tenancy is not applied, neither control is rendered nor reachable. Probed by pack check AC-21104-1."
17
+ }
18
+ ],
19
+ "tacIds": [
20
+ "TAC-2201-application-admin-console-shell",
21
+ "TAC-2202-application-admin-console-capability-discovery"
22
+ ],
23
+ "tags": [
24
+ "blueprint:application-admin-console"
25
+ ],
26
+ "createdAt": "2026-09-05T01:30:00Z",
27
+ "updatedAt": "2026-09-05T01:30:00Z"
28
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "usId": "application-admin-console-US-21105",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-005",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Audit-log surface renders the audit stream with correlation id when auditLog is applied",
8
+ "asA": "admin operator reviewing change history",
9
+ "iWant": "an audit-log route that lists every entry identified by data-audit-id with actor, target, before, after, timestamp and correlationId columns when the applied logging companion emits an audit stream",
10
+ "soThat": "I can trace a specific change through the logging pipelines correlation record",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21105-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "Given a role change AND the auditLog capability applied (via observability-logging or a dedicated audit blueprint), an audit-log entry writes with actor, target, before, after, timestamp, and correlationId from the logging companion; the entry surfaces on the audit view table where every row is enumerable by data-audit-id and every cell exposes its column via a data-column attribute. Probed by pack check AC-21105-1."
17
+ },
18
+ {
19
+ "id": "AC-21105-2",
20
+ "testable": true,
21
+ "scope": "runtime",
22
+ "description": "The audit view consumes the application-datatable shell (TAC-2204 depends on TAC-1801-application-datatable-shell), so filter chrome, pagination and the four state regions inherit from the datatable contract."
23
+ }
24
+ ],
25
+ "tacIds": [
26
+ "TAC-2201-application-admin-console-shell",
27
+ "TAC-2204-application-admin-console-audit-view"
28
+ ],
29
+ "tags": [
30
+ "blueprint:application-admin-console"
31
+ ],
32
+ "createdAt": "2026-09-05T01:30:00Z",
33
+ "updatedAt": "2026-09-05T01:30:00Z"
34
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "usId": "application-admin-console-US-21106",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-006",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Access-denied state renders a keyboard-reachable request-access control",
8
+ "asA": "a non-admin user routed to an admin URL",
9
+ "iWant": "a clearly-labelled access-denied state naming why access was refused and a keyboard-reachable request-access control",
10
+ "soThat": "I can request access without leaving the app or contacting an admin out of band",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21106-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "A non-admin principal reaching /admin renders a role=\"region\" with an accessible name naming the denied action (WCAG 2.4.6), a paragraph explaining why access was refused (WCAG 3.3.4), and a request-access control (data-action=\"request-access\") routed to POST /api/request-access. The control announces its state (idle, submitting, submitted) via a polite live region (WCAG 4.1.3)."
17
+ }
18
+ ],
19
+ "tacIds": [
20
+ "TAC-2201-application-admin-console-shell"
21
+ ],
22
+ "tags": [
23
+ "blueprint:application-admin-console"
24
+ ],
25
+ "createdAt": "2026-09-05T01:30:00Z",
26
+ "updatedAt": "2026-09-05T01:30:00Z"
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "usId": "application-admin-console-US-21107",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Console shell surfaces are self-configured from the applied capability sidecar at deploy time, not from client-side inference",
8
+ "asA": "admin operator opening the console the same way in every deploy environment",
9
+ "iWant": "the shell to read the applied capability set from a deterministic sidecar file, not to infer from a client-side probe",
10
+ "soThat": "a preview build renders the same nav a production build renders on the same commit",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21107-1",
14
+ "testable": true,
15
+ "scope": "runtime",
16
+ "description": "The console shell reads rcf/blueprints/application-admin-console.applied.json (written by apply at build time) as a build asset served under a stable path (e.g. /admin/caps.json); the shell never runs a runtime probe against manifest.blueprints[] over the network. The sidecar payload keys are appliedCapabilities[], appliedElicitations{} and allowNoAuthYet? per the mechanism spec."
17
+ }
18
+ ],
19
+ "tacIds": [
20
+ "TAC-2202-application-admin-console-capability-discovery"
21
+ ],
22
+ "tags": [
23
+ "blueprint:application-admin-console"
24
+ ],
25
+ "createdAt": "2026-09-05T01:30:00Z",
26
+ "updatedAt": "2026-09-05T01:30:00Z"
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "usId": "application-admin-console-US-21108",
3
+ "prdId": "PRD-001",
4
+ "reqId": "application-admin-console-REQ-003",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "The console does not declare providesRoles per spec 5.5.3; the mechanism composes at the capability edge instead",
8
+ "asA": "shelf author reasoning about future admin-console-shaped blueprints",
9
+ "iWant": "admin-console v1.0.0 to not declare providesRoles[]; composition with a second admin-console-shaped blueprint happens via capabilities[] and the crossBlueprintOwnership conflict path",
10
+ "soThat": "a specialised console (a vertical admin-console) declares its own capabilities[] and the mechanism reasons about the composition through one grammar, not two",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-21108-1",
14
+ "testable": true,
15
+ "scope": "library",
16
+ "description": "blueprint.json does not declare providesRoles (per spec 5.5.3); the loader is happy (providesRoles is optional). A future admin-console-shaped blueprint composes via capabilities[] and the crossBlueprintOwnership conflict on the same slug family, not via providesRoles[]."
17
+ }
18
+ ],
19
+ "tacIds": [
20
+ "TAC-2202-application-admin-console-capability-discovery"
21
+ ],
22
+ "tags": [
23
+ "blueprint:application-admin-console"
24
+ ],
25
+ "createdAt": "2026-09-05T01:30:00Z",
26
+ "updatedAt": "2026-09-05T01:30:00Z"
27
+ }