rcf-lite 0.29.0 → 0.31.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 (775) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-001.json +1 -1
  3. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-002.json +1 -1
  4. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-003.json +1 -1
  5. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-004.json +1 -1
  6. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-005.json +1 -1
  7. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-006.json +1 -1
  8. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-007.json +1 -1
  9. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-009.json +1 -1
  10. package/blueprints/application-account-settings/contributions/tacs/tac-2601-application-account-settings-shell.json +4 -4
  11. package/blueprints/application-account-settings/contributions/tacs/tac-2602-application-account-settings-capability-discovery.json +2 -2
  12. package/blueprints/application-account-settings/contributions/tacs/tac-2603-application-account-settings-hosted-ui-bridge.json +2 -2
  13. package/blueprints/application-account-settings/contributions/tacs/tac-2604-application-account-settings-session-store.json +7 -7
  14. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25105.json +3 -15
  15. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25106.json +2 -10
  16. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25111.json +3 -6
  17. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25112.json +4 -4
  18. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-001.json +1 -1
  19. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-002.json +1 -1
  20. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-003.json +1 -1
  21. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-004.json +1 -1
  22. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-005.json +1 -1
  23. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-006.json +1 -1
  24. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-007.json +1 -1
  25. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-008.json +1 -1
  26. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-009.json +1 -1
  27. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-014.json +1 -1
  28. package/blueprints/application-admin-console/contributions/tacs/tac-2201-application-admin-console-shell.json +4 -4
  29. package/blueprints/application-admin-console/contributions/tacs/tac-2202-application-admin-console-capability-discovery.json +7 -7
  30. package/blueprints/application-admin-console/contributions/tacs/tac-2203-application-admin-console-permission-matrix.json +2 -2
  31. package/blueprints/application-admin-console/contributions/tacs/tac-2204-application-admin-console-audit-view.json +2 -2
  32. package/blueprints/application-admin-console/contributions/tacs/tac-2214-application-admin-console-access-gated-signin-surface.json +3 -2
  33. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21107.json +2 -2
  34. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21111.json +3 -11
  35. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21112.json +4 -4
  36. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21815.json +2 -2
  37. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21816.json +2 -2
  38. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-001.json +1 -1
  39. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-002.json +1 -2
  40. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-004.json +1 -1
  41. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-008.json +1 -1
  42. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-016.json +1 -1
  43. package/blueprints/application-api-rest/contributions/tacs/tac-301-application-api-rest-request-pipeline.json +4 -4
  44. package/blueprints/application-api-rest/contributions/tacs/tac-302-application-api-rest-auth-middleware.json +4 -4
  45. package/blueprints/application-api-rest/contributions/tacs/tac-303-application-api-rest-contract-surface.json +4 -4
  46. package/blueprints/application-api-rest/contributions/tacs/tac-304-application-api-rest-resource-layer.json +4 -4
  47. package/blueprints/application-api-rest/contributions/tacs/tac-305-application-api-rest-observability.json +4 -4
  48. package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +4 -4
  49. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2102.json +1 -1
  50. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +1 -1
  51. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2104.json +4 -4
  52. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2105.json +2 -2
  53. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +1 -1
  54. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2110.json +1 -1
  55. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2111.json +1 -1
  56. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json +1 -1
  57. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json +2 -2
  58. package/blueprints/application-charts/contributions/tacs/tac-1901-application-charts-render-shell.json +4 -4
  59. package/blueprints/application-charts/contributions/tacs/tac-1902-application-charts-keyboard-traversal.json +4 -4
  60. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18105.json +1 -1
  61. package/blueprints/application-dashboard/contributions/tacs/tac-2001-application-dashboard-tile-grid.json +4 -4
  62. package/blueprints/application-dashboard/contributions/tacs/tac-2002-application-dashboard-filter-chrome.json +4 -4
  63. package/blueprints/application-dashboard/contributions/tacs/tac-2003-application-dashboard-export-handle.json +2 -2
  64. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19106.json +1 -1
  65. package/blueprints/application-datatable/contributions/tacs/tac-1801-application-datatable-shell.json +4 -4
  66. package/blueprints/application-datatable/contributions/tacs/tac-1802-application-datatable-query-adapter.json +4 -4
  67. package/blueprints/application-datatable/contributions/tacs/tac-1803-application-datatable-selection-model.json +2 -2
  68. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17101.json +1 -1
  69. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17102.json +1 -1
  70. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17103.json +1 -1
  71. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17105.json +1 -1
  72. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-001.json +1 -1
  73. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-002.json +1 -1
  74. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-003.json +1 -1
  75. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-004.json +1 -1
  76. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-005.json +2 -2
  77. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-006.json +1 -1
  78. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-007.json +2 -2
  79. package/blueprints/application-empty-error-states/contributions/tacs/tac-2301-application-empty-error-states-state-machine.json +5 -5
  80. package/blueprints/application-empty-error-states/contributions/tacs/tac-2302-application-empty-error-states-recovery-router.json +2 -2
  81. package/blueprints/application-empty-error-states/contributions/tacs/tac-2303-application-empty-error-states-offline-buffer.json +5 -5
  82. package/blueprints/application-error-handling/contributions/tacs/tac-1701-application-error-handling-boundary.json +6 -6
  83. package/blueprints/application-error-handling/contributions/tacs/tac-1702-application-error-handling-record-factory.json +4 -4
  84. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16101.json +1 -1
  85. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16107.json +4 -4
  86. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-001.json +1 -1
  87. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-002.json +1 -1
  88. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-003.json +1 -1
  89. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-004.json +1 -1
  90. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-005.json +1 -1
  91. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-006.json +2 -2
  92. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-007.json +2 -2
  93. package/blueprints/application-file-upload/contributions/tacs/tac-2401-application-file-upload-input.json +7 -7
  94. package/blueprints/application-file-upload/contributions/tacs/tac-2402-application-file-upload-transport.json +8 -8
  95. package/blueprints/application-file-upload/contributions/tacs/tac-2403-application-file-upload-progress-announcer.json +11 -11
  96. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23102.json +1 -1
  97. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23105.json +1 -1
  98. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-001.json +1 -1
  99. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-002.json +1 -1
  100. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-003.json +1 -1
  101. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-004.json +1 -1
  102. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-005.json +1 -1
  103. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-006.json +2 -2
  104. package/blueprints/application-forms-wizard/contributions/tacs/tac-2501-application-forms-wizard-task-list.json +7 -7
  105. package/blueprints/application-forms-wizard/contributions/tacs/tac-2502-application-forms-wizard-error-summary.json +4 -4
  106. package/blueprints/application-forms-wizard/contributions/tacs/tac-2503-application-forms-wizard-draft-store.json +4 -4
  107. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24101.json +1 -1
  108. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-001.json +1 -1
  109. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-002.json +1 -1
  110. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-003.json +1 -1
  111. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-004.json +1 -1
  112. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-005.json +2 -2
  113. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-006.json +2 -2
  114. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2101-application-notifications-in-app-live-region.json +6 -6
  115. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2102-application-notifications-in-app-centre.json +9 -9
  116. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2103-application-notifications-in-app-preferences.json +4 -4
  117. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20101.json +1 -1
  118. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20102.json +1 -1
  119. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20103.json +2 -2
  120. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20105.json +4 -4
  121. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-001.json +1 -1
  122. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-002.json +1 -1
  123. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-003.json +1 -1
  124. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-004.json +1 -1
  125. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-005.json +1 -1
  126. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-006.json +1 -1
  127. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2701-application-onboarding-tour-step-runner.json +4 -4
  128. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2702-application-onboarding-tour-checklist-slot.json +2 -2
  129. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2703-application-onboarding-tour-completion-store.json +2 -2
  130. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26108.json +2 -2
  131. package/blueprints/application-spa/contributions/requirements/application-spa-req-004.json +1 -2
  132. package/blueprints/application-spa/contributions/requirements/application-spa-req-007.json +1 -1
  133. package/blueprints/application-spa/contributions/requirements/application-spa-req-014.json +1 -1
  134. package/blueprints/application-spa/contributions/requirements/application-spa-req-015.json +1 -1
  135. package/blueprints/application-spa/contributions/requirements/application-spa-req-017.json +1 -1
  136. package/blueprints/application-spa/contributions/requirements/application-spa-req-018.json +1 -1
  137. package/blueprints/application-spa/contributions/tacs/tac-201-application-spa-app-shell.json +4 -4
  138. package/blueprints/application-spa/contributions/tacs/tac-202-application-spa-theme-system.json +4 -4
  139. package/blueprints/application-spa/contributions/tacs/tac-207-application-spa-token-adherence-probe.json +6 -6
  140. package/blueprints/application-spa/contributions/tacs/tac-208-application-spa-icon-adherence-probe.json +6 -6
  141. package/blueprints/application-spa/contributions/tacs/tac-209-application-spa-csp-styled-adherence-probe.json +6 -6
  142. package/blueprints/application-spa/contributions/tacs/tac-210-application-spa-external-dependency-provisioning-probe.json +8 -8
  143. package/blueprints/application-spa/contributions/tacs/tac-211-application-spa-core-flow-e2e-probe.json +8 -8
  144. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1101.json +2 -2
  145. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1102.json +1 -1
  146. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1107.json +1 -1
  147. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1117.json +1 -1
  148. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1129.json +4 -4
  149. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1130.json +4 -4
  150. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1131.json +1 -1
  151. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1132.json +6 -6
  152. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1133.json +5 -5
  153. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1134.json +2 -2
  154. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-001.json +1 -1
  155. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-002.json +1 -1
  156. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-003.json +1 -1
  157. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-004.json +1 -1
  158. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-005.json +1 -1
  159. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-006.json +1 -1
  160. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-007.json +1 -1
  161. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-008.json +1 -1
  162. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-009.json +1 -1
  163. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-010.json +1 -1
  164. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-011.json +1 -1
  165. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-012.json +1 -1
  166. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-013.json +1 -1
  167. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-014.json +1 -1
  168. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-015.json +1 -1
  169. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-016.json +1 -1
  170. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-017.json +1 -1
  171. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-018.json +1 -1
  172. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-019.json +1 -1
  173. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-020.json +1 -1
  174. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-021.json +1 -1
  175. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-022.json +1 -1
  176. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-023.json +1 -1
  177. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-701-delivery-ci-workflows-gate-runner.json +6 -6
  178. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-702-delivery-ci-workflows-gate-report.json +4 -4
  179. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-703-delivery-ci-workflows-aggregate-report.json +4 -4
  180. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-704-delivery-ci-workflows-workflow-materialiser.json +6 -6
  181. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-705-delivery-ci-workflows-release-workflow.json +6 -6
  182. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-706-delivery-ci-workflows-scheduled-audit.json +4 -4
  183. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6101.json +1 -1
  184. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6102.json +1 -1
  185. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6103.json +1 -1
  186. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6104.json +1 -1
  187. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6106.json +1 -1
  188. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6107.json +1 -1
  189. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6109.json +1 -1
  190. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6110.json +1 -1
  191. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6111.json +1 -1
  192. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6113.json +1 -1
  193. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6115.json +1 -1
  194. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6116.json +1 -1
  195. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6117.json +1 -1
  196. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6118.json +1 -1
  197. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6119.json +1 -1
  198. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6120.json +1 -1
  199. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6122.json +1 -1
  200. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6123.json +1 -1
  201. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6124.json +1 -1
  202. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-001.json +1 -1
  203. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-002.json +1 -1
  204. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-003.json +1 -1
  205. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-004.json +1 -1
  206. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-005.json +1 -1
  207. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-006.json +1 -1
  208. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-007.json +1 -1
  209. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-008.json +1 -1
  210. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-009.json +1 -1
  211. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-010.json +1 -1
  212. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-011.json +1 -1
  213. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-012.json +1 -1
  214. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-013.json +1 -1
  215. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-014.json +1 -1
  216. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1301-deploy-cloudflare-workers-deploy-adapter.json +6 -6
  217. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1302-deploy-cloudflare-workers-wrangler-manifest.json +8 -8
  218. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1303-deploy-cloudflare-workers-preview-url-resolver.json +6 -6
  219. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1304-deploy-cloudflare-workers-promote-gate.json +8 -8
  220. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1305-deploy-cloudflare-workers-served-surface-verifier.json +8 -8
  221. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1306-deploy-cloudflare-workers-deploy-ci-workflows.json +8 -8
  222. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12101.json +1 -1
  223. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12102.json +2 -2
  224. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12105.json +1 -1
  225. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12109.json +1 -1
  226. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12113.json +2 -2
  227. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12114.json +1 -1
  228. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12115.json +1 -1
  229. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-001.json +1 -1
  230. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-002.json +1 -1
  231. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-003.json +1 -1
  232. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-004.json +1 -1
  233. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-005.json +1 -1
  234. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-006.json +1 -1
  235. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3801-deploy-hetzner-server-provisioner.json +3 -2
  236. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3802-deploy-hetzner-server-manifest-schema.json +3 -2
  237. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3803-deploy-hetzner-server-cloud-init-template.json +3 -2
  238. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3804-deploy-hetzner-server-firewall-shape.json +3 -2
  239. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37101.json +4 -4
  240. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37102.json +3 -3
  241. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37103.json +4 -4
  242. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37104.json +2 -2
  243. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37105.json +2 -2
  244. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37106.json +3 -3
  245. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37107.json +2 -2
  246. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37108.json +2 -2
  247. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37109.json +2 -2
  248. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-001.json +1 -1
  249. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-002.json +1 -1
  250. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-003.json +1 -1
  251. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-004.json +1 -1
  252. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-005.json +1 -1
  253. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-006.json +1 -1
  254. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-007.json +1 -1
  255. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3501-edge-cloudflare-access-jwt-validator.json +6 -4
  256. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3502-edge-cloudflare-access-application-declaration.json +3 -2
  257. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3503-edge-cloudflare-access-policy-shape.json +3 -2
  258. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3504-edge-cloudflare-access-audit-sink.json +3 -2
  259. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34101.json +1 -1
  260. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34102.json +5 -5
  261. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34103.json +1 -1
  262. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34104.json +3 -3
  263. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34105.json +1 -1
  264. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34106.json +1 -1
  265. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34107.json +5 -5
  266. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34110.json +1 -1
  267. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-001.json +1 -1
  268. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-002.json +1 -1
  269. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-003.json +1 -1
  270. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-004.json +1 -1
  271. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-005.json +1 -1
  272. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3701-edge-cloudflare-rate-limiting-manifest-schema.json +6 -4
  273. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3702-edge-cloudflare-rate-limiting-management-surface-doc.json +3 -2
  274. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3703-edge-cloudflare-rate-limiting-drift-audit-runner.json +3 -2
  275. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36101.json +2 -2
  276. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36103.json +1 -1
  277. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36104.json +6 -6
  278. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36106.json +2 -2
  279. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-001.json +1 -1
  280. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-002.json +1 -1
  281. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-003.json +1 -1
  282. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-004.json +1 -1
  283. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-005.json +1 -1
  284. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-006.json +1 -1
  285. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-007.json +1 -1
  286. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4001-edge-cloudflare-tunnel-connector-shape.json +3 -2
  287. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4002-edge-cloudflare-tunnel-manifest-schema.json +3 -2
  288. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4003-edge-cloudflare-tunnel-access-binding.json +3 -2
  289. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4004-edge-cloudflare-tunnel-zone-and-hostname-apply.json +3 -2
  290. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39101.json +3 -3
  291. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39102.json +2 -2
  292. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39103.json +4 -4
  293. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39104.json +2 -2
  294. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39105.json +2 -2
  295. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39106.json +5 -5
  296. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39107.json +2 -2
  297. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39108.json +3 -3
  298. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39109.json +4 -4
  299. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39110.json +3 -3
  300. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-001.json +1 -1
  301. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-002.json +1 -1
  302. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-003.json +1 -1
  303. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-004.json +1 -1
  304. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-005.json +1 -1
  305. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3601-edge-cloudflare-turnstile-widget-mount.json +3 -2
  306. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3602-edge-cloudflare-turnstile-server-verifier.json +9 -6
  307. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3603-edge-cloudflare-turnstile-magic-link-hook.json +3 -2
  308. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35101.json +3 -3
  309. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35102.json +4 -4
  310. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35103.json +6 -6
  311. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35104.json +2 -2
  312. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35105.json +1 -1
  313. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-001.json +1 -1
  314. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-002.json +1 -1
  315. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-003.json +1 -1
  316. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-004.json +1 -1
  317. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-005.json +1 -1
  318. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-006.json +1 -1
  319. package/blueprints/email-smtp-resend/contributions/tacs/tac-401-email-smtp-resend-send-adapter.json +8 -8
  320. package/blueprints/email-smtp-resend/contributions/tacs/tac-402-email-smtp-resend-webhook-verifier.json +10 -10
  321. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4101.json +1 -1
  322. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4102.json +1 -1
  323. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4103.json +1 -1
  324. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4105.json +1 -1
  325. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4106.json +2 -2
  326. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-001.json +1 -1
  327. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-002.json +1 -1
  328. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-003.json +1 -1
  329. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-004.json +1 -1
  330. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-005.json +1 -1
  331. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-006.json +1 -1
  332. package/blueprints/jobs-background/contributions/tacs/tac-3101-jobs-background-job-definition.json +4 -4
  333. package/blueprints/jobs-background/contributions/tacs/tac-3102-jobs-background-scheduler.json +6 -6
  334. package/blueprints/jobs-background/contributions/tacs/tac-3103-jobs-background-run-log.json +6 -6
  335. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30101.json +1 -1
  336. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30102.json +3 -3
  337. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30103.json +1 -1
  338. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30104.json +4 -4
  339. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30105.json +1 -1
  340. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30106.json +1 -1
  341. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30107.json +1 -1
  342. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30108.json +1 -1
  343. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30109.json +1 -1
  344. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-001.json +1 -1
  345. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-002.json +1 -1
  346. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-003.json +1 -1
  347. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-004.json +1 -1
  348. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-005.json +1 -1
  349. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-006.json +1 -1
  350. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3001-messaging-queue-cloudflare-producer-facade.json +6 -6
  351. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3002-messaging-queue-cloudflare-consumer-registration.json +2 -2
  352. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3003-messaging-queue-cloudflare-event-sink.json +2 -2
  353. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29101.json +1 -1
  354. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29102.json +1 -1
  355. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29103.json +1 -1
  356. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29104.json +2 -2
  357. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29105.json +1 -1
  358. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29106.json +2 -2
  359. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29107.json +1 -1
  360. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29108.json +1 -1
  361. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-001.json +1 -1
  362. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-002.json +1 -1
  363. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-003.json +1 -1
  364. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-004.json +1 -1
  365. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-005.json +1 -1
  366. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-006.json +1 -1
  367. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-101.json +1 -1
  368. package/blueprints/object-storage-s3/contributions/tacs/tac-2901-object-storage-s3-facade.json +6 -6
  369. package/blueprints/object-storage-s3/contributions/tacs/tac-2902-object-storage-s3-multipart-uploader.json +2 -2
  370. package/blueprints/object-storage-s3/contributions/tacs/tac-2903-object-storage-s3-event-sink.json +2 -2
  371. package/blueprints/object-storage-s3/contributions/tacs/tac-2904-object-storage-s3-hetzner-endpoint-helper.json +2 -2
  372. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28101.json +1 -1
  373. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28102.json +1 -1
  374. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28103.json +2 -2
  375. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28104.json +1 -1
  376. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28105.json +2 -2
  377. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28106.json +1 -1
  378. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28110.json +1 -1
  379. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +1 -1
  380. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +1 -1
  381. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-003.json +1 -1
  382. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-004.json +1 -1
  383. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-005.json +1 -1
  384. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-006.json +1 -1
  385. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-007.json +1 -1
  386. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-008.json +1 -1
  387. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-009.json +1 -1
  388. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-010.json +1 -1
  389. package/blueprints/observability-essentials/contributions/tacs/tac-801-observability-essentials-liveness-probe.json +4 -4
  390. package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +12 -12
  391. package/blueprints/observability-essentials/contributions/tacs/tac-803-observability-essentials-status-page.json +6 -6
  392. package/blueprints/observability-essentials/contributions/tacs/tac-804-observability-essentials-notification-outcome.json +8 -8
  393. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +1 -1
  394. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7103.json +3 -3
  395. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7106.json +2 -2
  396. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7107.json +1 -1
  397. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-001.json +1 -1
  398. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-002.json +1 -1
  399. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-003.json +1 -1
  400. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-004.json +1 -1
  401. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-005.json +1 -1
  402. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-006.json +8 -2
  403. package/blueprints/observability-logging/contributions/tacs/tac-1601-observability-logging-logger-factory.json +6 -6
  404. package/blueprints/observability-logging/contributions/tacs/tac-1602-observability-logging-redaction-boundary.json +2 -2
  405. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15101.json +4 -4
  406. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15103.json +2 -2
  407. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15104.json +2 -2
  408. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15105.json +1 -1
  409. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15106.json +1 -1
  410. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15107.json +2 -2
  411. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15108.json +1 -1
  412. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15109.json +3 -3
  413. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-001.json +1 -1
  414. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-002.json +1 -1
  415. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-003.json +1 -1
  416. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-004.json +1 -1
  417. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-005.json +1 -1
  418. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-006.json +1 -1
  419. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-007.json +1 -1
  420. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-008.json +1 -1
  421. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1501-observability-probe-endpoints-profile-resolver.json +6 -6
  422. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1502-observability-probe-endpoints-handler-set.json +4 -4
  423. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1503-observability-probe-endpoints-listener-topology.json +6 -6
  424. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1504-observability-probe-endpoints-non-http-adapters.json +4 -4
  425. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14101.json +2 -2
  426. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +1 -1
  427. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14105.json +3 -3
  428. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-001.json +1 -1
  429. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-002.json +1 -1
  430. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-003.json +1 -1
  431. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-004.json +1 -1
  432. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-005.json +1 -1
  433. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-006.json +1 -1
  434. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-007.json +1 -1
  435. package/blueprints/persistence-data-d1/contributions/tacs/tac-1401-persistence-data-d1-facade.json +6 -6
  436. package/blueprints/persistence-data-d1/contributions/tacs/tac-1402-persistence-data-d1-migration-catalog.json +4 -4
  437. package/blueprints/persistence-data-d1/contributions/tacs/tac-1403-persistence-data-d1-deploy-gate.json +4 -4
  438. package/blueprints/persistence-data-d1/contributions/tacs/tac-1404-persistence-data-d1-recovery-runner.json +4 -4
  439. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13101.json +2 -2
  440. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13102.json +1 -1
  441. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13107.json +2 -2
  442. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-001.json +1 -1
  443. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-002.json +1 -1
  444. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-003.json +1 -1
  445. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-004.json +1 -1
  446. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-005.json +1 -1
  447. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-006.json +1 -1
  448. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-007.json +1 -1
  449. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2801-persistence-data-postgres-facade.json +6 -6
  450. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2802-persistence-data-postgres-migration-runner.json +4 -4
  451. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2803-persistence-data-postgres-transaction-helper.json +2 -2
  452. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2804-persistence-data-postgres-recovery-runner.json +4 -4
  453. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27101.json +1 -1
  454. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27102.json +4 -4
  455. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27103.json +1 -1
  456. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27104.json +2 -2
  457. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27105.json +1 -1
  458. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27106.json +1 -1
  459. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27107.json +1 -1
  460. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27108.json +1 -1
  461. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27109.json +1 -1
  462. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27110.json +1 -1
  463. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-001.json +1 -1
  464. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-002.json +1 -1
  465. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-003.json +1 -1
  466. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-004.json +1 -1
  467. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-005.json +1 -1
  468. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-006.json +1 -1
  469. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-007.json +1 -1
  470. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-008.json +1 -1
  471. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-009.json +1 -1
  472. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-010.json +1 -1
  473. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-011.json +1 -1
  474. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-601-persistence-data-sqlite-store.json +6 -6
  475. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-602-persistence-data-sqlite-migration-runner.json +2 -2
  476. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-603-persistence-data-sqlite-migration-catalog.json +4 -4
  477. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-604-persistence-data-sqlite-backup-runner.json +2 -2
  478. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5101.json +2 -2
  479. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5103.json +1 -1
  480. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5104.json +1 -1
  481. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5106.json +1 -1
  482. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5110.json +2 -2
  483. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5111.json +1 -1
  484. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-001.json +1 -1
  485. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-002.json +1 -1
  486. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-003.json +1 -1
  487. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-004.json +1 -1
  488. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3301-platform-cloudflare-cron-triggers-scheduled-handler.json +6 -1
  489. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3302-platform-cloudflare-cron-triggers-expression-router.json +9 -2
  490. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3303-platform-cloudflare-cron-triggers-event-sink.json +6 -1
  491. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32101.json +6 -6
  492. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32102.json +5 -5
  493. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32103.json +3 -3
  494. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32104.json +4 -4
  495. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32105.json +4 -4
  496. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32106.json +4 -4
  497. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32107.json +3 -3
  498. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-001.json +1 -1
  499. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-002.json +1 -1
  500. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-003.json +1 -1
  501. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-004.json +1 -1
  502. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-005.json +1 -1
  503. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-006.json +1 -1
  504. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-007.json +1 -1
  505. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-008.json +1 -1
  506. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3401-platform-cloudflare-durable-objects-namespace-facade.json +6 -4
  507. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3402-platform-cloudflare-durable-objects-single-cell-shape.json +6 -4
  508. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3403-platform-cloudflare-durable-objects-alarm-handler.json +6 -4
  509. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3404-platform-cloudflare-durable-objects-websocket-hub.json +6 -4
  510. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3405-platform-cloudflare-durable-objects-event-sink.json +3 -2
  511. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33101.json +5 -5
  512. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33102.json +4 -4
  513. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33103.json +5 -5
  514. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33104.json +5 -5
  515. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33105.json +5 -5
  516. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33106.json +4 -4
  517. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33107.json +3 -3
  518. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33108.json +5 -5
  519. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33109.json +3 -3
  520. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33110.json +4 -4
  521. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33111.json +3 -3
  522. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33112.json +3 -3
  523. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33113.json +5 -5
  524. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-001.json +1 -1
  525. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-002.json +1 -1
  526. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-003.json +1 -1
  527. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-004.json +1 -1
  528. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-005.json +1 -1
  529. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-006.json +1 -1
  530. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-007.json +1 -1
  531. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3201-platform-cloudflare-kv-facade.json +3 -2
  532. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3202-platform-cloudflare-kv-cache-aside.json +3 -2
  533. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3203-platform-cloudflare-kv-event-sink.json +3 -2
  534. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31101.json +4 -4
  535. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31102.json +3 -3
  536. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31103.json +4 -4
  537. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31104.json +4 -4
  538. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31105.json +4 -4
  539. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31106.json +3 -3
  540. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31107.json +3 -3
  541. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31108.json +3 -3
  542. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31109.json +4 -4
  543. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31110.json +5 -5
  544. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31111.json +5 -5
  545. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-001.json +1 -1
  546. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-002.json +1 -1
  547. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-003.json +1 -1
  548. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-004.json +1 -1
  549. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-005.json +1 -1
  550. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-006.json +1 -1
  551. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-007.json +1 -1
  552. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3901-platform-docker-compose-host-compose-layout.json +3 -2
  553. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3902-platform-docker-compose-host-secrets-mount.json +3 -2
  554. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3903-platform-docker-compose-host-healthcheck-lint.json +3 -2
  555. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3904-platform-docker-compose-host-reverse-proxy-artefact.json +3 -2
  556. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38101.json +5 -5
  557. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38102.json +4 -4
  558. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38103.json +4 -4
  559. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38104.json +4 -4
  560. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38105.json +3 -3
  561. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38106.json +3 -3
  562. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38107.json +3 -3
  563. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38108.json +3 -3
  564. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38109.json +3 -3
  565. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38110.json +3 -3
  566. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-001.json +1 -1
  567. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-002.json +1 -1
  568. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-003.json +1 -1
  569. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-004.json +1 -1
  570. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-006.json +1 -1
  571. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-010.json +1 -1
  572. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-011.json +1 -1
  573. package/blueprints/security-auth-clerk/contributions/tacs/tac-1001-security-auth-clerk-middleware.json +6 -6
  574. package/blueprints/security-auth-clerk/contributions/tacs/tac-1002-security-auth-clerk-authorisation-adapter.json +8 -3
  575. package/blueprints/security-auth-clerk/contributions/tacs/tac-1003-security-auth-clerk-session-verifier.json +8 -8
  576. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9102.json +1 -1
  577. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9108.json +1 -1
  578. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9112.json +6 -6
  579. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9113.json +6 -6
  580. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-002.json +1 -1
  581. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-003.json +1 -1
  582. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-004.json +1 -1
  583. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-005.json +1 -1
  584. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-006.json +1 -1
  585. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-011.json +1 -1
  586. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-013.json +1 -1
  587. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-014.json +1 -1
  588. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-015.json +1 -1
  589. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-016.json +1 -1
  590. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-017.json +1 -1
  591. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-018.json +1 -1
  592. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-019.json +1 -1
  593. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1201-security-auth-keycloak-discovery-client.json +10 -10
  594. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1202-security-auth-keycloak-jwt-verifier.json +8 -8
  595. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1203-security-auth-keycloak-introspection-client.json +8 -8
  596. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1204-security-auth-keycloak-provider-router.json +6 -6
  597. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1205-security-auth-keycloak-role-adapter.json +4 -4
  598. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11102.json +1 -1
  599. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11103.json +2 -2
  600. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11104.json +1 -1
  601. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11106.json +3 -3
  602. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11111.json +2 -2
  603. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11114.json +1 -1
  604. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11115.json +5 -5
  605. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11116.json +7 -7
  606. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11117.json +7 -7
  607. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11118.json +7 -7
  608. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11119.json +7 -7
  609. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11120.json +6 -6
  610. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-002.json +1 -1
  611. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-003.json +1 -1
  612. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-004.json +1 -1
  613. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-005.json +1 -1
  614. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-008.json +1 -1
  615. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-009.json +1 -1
  616. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-010.json +1 -1
  617. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-011.json +1 -1
  618. package/blueprints/security-auth-magic-link/contributions/tacs/tac-501-security-auth-magic-link-manager.json +6 -6
  619. package/blueprints/security-auth-magic-link/contributions/tacs/tac-502-security-auth-magic-link-session-manager.json +6 -6
  620. package/blueprints/security-auth-magic-link/contributions/tacs/tac-503-security-auth-magic-link-login-routes.json +10 -10
  621. package/blueprints/security-auth-magic-link/contributions/tacs/tac-504-security-auth-magic-link-email-delivery-adapter.json +2 -2
  622. package/blueprints/security-auth-magic-link/contributions/tacs/tac-505-security-auth-magic-link-principal-registry.json +2 -2
  623. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3111.json +2 -2
  624. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-002.json +1 -1
  625. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-003.json +1 -1
  626. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-005.json +1 -1
  627. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-006.json +1 -1
  628. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-008.json +1 -1
  629. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-009.json +1 -1
  630. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-011.json +1 -1
  631. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-012.json +1 -1
  632. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-013.json +1 -1
  633. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1101-security-auth-oauth2-flow-controller.json +24 -14
  634. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1102-security-auth-oauth2-provider-adapter.json +4 -4
  635. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1103-security-auth-oauth2-session-bridge.json +10 -10
  636. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1104-security-auth-oauth2-provider-selector.json +8 -3
  637. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10111.json +1 -1
  638. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10112.json +1 -1
  639. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10114.json +5 -5
  640. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-001.json +1 -1
  641. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-002.json +1 -1
  642. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-003.json +1 -1
  643. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-004.json +1 -1
  644. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-005.json +1 -1
  645. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-006.json +1 -1
  646. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-007.json +1 -1
  647. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-008.json +1 -1
  648. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-009.json +1 -1
  649. package/blueprints/security-secrets-management/contributions/tacs/tac-901-security-secrets-management-manager-client.json +8 -8
  650. package/blueprints/security-secrets-management/contributions/tacs/tac-902-security-secrets-management-manifest.json +4 -4
  651. package/blueprints/security-secrets-management/contributions/tacs/tac-903-security-secrets-management-env-reflector.json +4 -4
  652. package/blueprints/security-secrets-management/contributions/tacs/tac-904-security-secrets-management-rotation-gate.json +8 -8
  653. package/blueprints/security-secrets-management/contributions/tacs/tac-905-security-secrets-management-agent-cli.json +4 -4
  654. package/fixtures/canary-manifest.json +9 -9
  655. package/guidance/define-draft-shapes.md +15 -10
  656. package/guidance/define-litmus.md +102 -0
  657. package/guidance/manifest.json +2 -1
  658. package/package.json +1 -1
  659. package/rcf/adrs/adr-4131-gates-bite-ack-recorded-override.json +30 -0
  660. package/rcf/adrs/adr-4137-standalone-theme-persistence.json +30 -0
  661. package/rcf/adrs/adr-4138-tree-wide-checks-before-scope-shortcircuit.json +35 -0
  662. package/rcf/code-nodes/cn-753.json +19 -0
  663. package/rcf/code-nodes/cn-754.json +17 -0
  664. package/rcf/code-nodes/cn-755.json +14 -0
  665. package/rcf/code-nodes/cn-756.json +15 -0
  666. package/rcf/code-nodes/cn-757.json +21 -0
  667. package/rcf/code-nodes/cn-758.json +16 -0
  668. package/rcf/code-nodes/cn-759.json +21 -0
  669. package/rcf/code-nodes/cn-760.json +19 -0
  670. package/rcf/code-nodes/cn-761.json +16 -0
  671. package/rcf/code-nodes/cn-762.json +18 -0
  672. package/rcf/code-nodes/cn-763.json +18 -0
  673. package/rcf/code-nodes/cn-764.json +15 -0
  674. package/rcf/code-nodes/cn-765.json +23 -0
  675. package/rcf/code-nodes/cn-766.json +17 -0
  676. package/rcf/code-nodes/cn-767.json +17 -0
  677. package/rcf/code-nodes/cn-768.json +19 -0
  678. package/rcf/code-nodes/cn-769.json +17 -0
  679. package/rcf/code-nodes/cn-770.json +18 -0
  680. package/rcf/code-nodes/cn-771.json +14 -0
  681. package/rcf/code-nodes/cn-772.json +14 -0
  682. package/rcf/code-nodes/cn-773.json +16 -0
  683. package/rcf/code-nodes/cn-774.json +20 -0
  684. package/rcf/code-nodes/cn-775.json +15 -0
  685. package/rcf/code-nodes/cn-776.json +17 -0
  686. package/rcf/code-nodes/cn-777.json +21 -0
  687. package/rcf/fbs/fbs-202.json +85 -9
  688. package/rcf/fbs/fbs-203.json +12 -4
  689. package/rcf/requirements/req-002.json +2 -2
  690. package/rcf/requirements/req-173.json +2 -2
  691. package/rcf/requirements/req-174.json +2 -2
  692. package/rcf/requirements/req-175.json +2 -2
  693. package/rcf/requirements/req-177.json +31 -0
  694. package/rcf/requirements/req-178.json +31 -0
  695. package/rcf/requirements/req-179.json +31 -0
  696. package/rcf/tacs/tac-001.json +7 -7
  697. package/rcf/tacs/tac-002.json +23 -23
  698. package/rcf/tacs/tac-003.json +5 -5
  699. package/rcf/tacs/tac-004.json +9 -9
  700. package/rcf/tacs/tac-005.json +7 -7
  701. package/rcf/tacs/tac-006.json +21 -21
  702. package/rcf/tacs/tac-007.json +7 -7
  703. package/rcf/tacs/tac-008.json +7 -7
  704. package/rcf/tacs/tac-4101-feedback-cli.json +5 -5
  705. package/rcf/tacs/tac-4102-feedback-store.json +9 -9
  706. package/rcf/tacs/tac-4103-feedback-redact.json +5 -5
  707. package/rcf/tacs/tac-4104-feedback-fingerprint.json +3 -3
  708. package/rcf/tacs/tac-4105-feedback-render.json +7 -7
  709. package/rcf/tacs/tac-4106-feedback-destination.json +5 -5
  710. package/rcf/tacs/tac-4107-feedback-gh.json +7 -7
  711. package/rcf/tacs/tac-4108-feedback-hook.json +7 -7
  712. package/rcf/tacs/tac-4121-define-ledgers.json +3 -2
  713. package/rcf/tacs/tac-4122-define-gates.json +36 -3
  714. package/rcf/tacs/tac-4123-define-readiness.json +29 -3
  715. package/rcf/tacs/tac-4125-build-bundle-refuse-override-skip.json +43 -0
  716. package/rcf/tacs/tac-4126-define-validate-findings.json +32 -0
  717. package/rcf/tacs/tac-4128-define-guidance.json +8 -2
  718. package/rcf/tacs/tac-4129-define-questions.json +3 -3
  719. package/rcf/tacs/tac-4134-wespa-host-fixture.json +9 -9
  720. package/rcf/test-suites/ts-007.json +1 -1
  721. package/rcf/test-suites/ts-215.json +64 -1
  722. package/rcf/test-suites/ts-216.json +18 -2
  723. package/rcf/test-suites/ts-219.json +10 -2
  724. package/rcf/test-suites/ts-220.json +18 -2
  725. package/rcf/test-suites/ts-222.json +4 -4
  726. package/rcf/test-suites/ts-225.json +10 -2
  727. package/rcf/test-suites/ts-228.json +4 -4
  728. package/rcf/test-suites/ts-229.json +49 -3
  729. package/rcf/test-suites/ts-230.json +100 -0
  730. package/rcf/test-suites/ts-231.json +119 -0
  731. package/rcf/test-suites/ts-232.json +109 -0
  732. package/rcf/test-suites/ts-233.json +61 -0
  733. package/rcf/test-suites/ts-234.json +53 -0
  734. package/rcf/test-suites/ts-235.json +53 -0
  735. package/rcf/test-suites/ts-236.json +44 -0
  736. package/rcf/user-stories/us-17302.json +36 -1
  737. package/rcf/user-stories/us-17401.json +11 -1
  738. package/rcf/user-stories/us-17402.json +6 -1
  739. package/rcf/user-stories/us-17403.json +11 -1
  740. package/rcf/user-stories/us-17404.json +66 -0
  741. package/rcf/user-stories/us-17405.json +66 -0
  742. package/rcf/user-stories/us-17406.json +51 -0
  743. package/rcf/user-stories/us-17503.json +2 -2
  744. package/rcf/user-stories/us-17504.json +46 -0
  745. package/rcf/user-stories/us-17702.json +51 -0
  746. package/rcf/user-stories/us-17802.json +40 -0
  747. package/rcf/user-stories/us-17902.json +46 -0
  748. package/rcf/user-stories/us-205.json +6 -1
  749. package/rcf/user-stories/us-206.json +25 -4
  750. package/rcf/user-stories/us-207.json +36 -0
  751. package/releases/releases.yaml +21 -1
  752. package/src/blueprint/consistency-lint.js +72 -3
  753. package/src/cli/build.js +206 -3
  754. package/src/cli/create.js +22 -2
  755. package/src/cli/freeze.js +68 -18
  756. package/src/cli/ledger.js +96 -4
  757. package/src/cli/readiness.js +151 -36
  758. package/src/cli/validate.js +8 -0
  759. package/src/core/errors/index.js +7 -1
  760. package/src/core/store/writer.js +181 -13
  761. package/src/define/concern-catalogue.js +130 -0
  762. package/src/define/freeze-record.js +74 -0
  763. package/src/define/ledgers.js +86 -7
  764. package/src/define/probe-runner.js +55 -0
  765. package/src/define/validate-findings.js +256 -0
  766. package/src/mcp/tools.js +1 -1
  767. package/src/query/gates.js +1235 -67
  768. package/src/query/index.js +6 -1
  769. package/src/query/readiness.js +179 -2
  770. package/src/query/refuse-on-admissibility.js +137 -4
  771. package/src/ruleset/ruleset.json +35 -0
  772. package/src/view/html-page.js +14 -2
  773. package/src/view/page-init.js +149 -8
  774. package/src/view/style.css +97 -18
  775. package/src/view/view-index.js +22 -0
@@ -0,0 +1,130 @@
1
+ // Concern catalogue (REQ-174 amendment paragraph; spec 2026-10-01
2
+ // section 4 row "D5 catalogue", 0.30.0 PR 6).
3
+ //
4
+ // Eight concerns keyed by REQ shape. For every REQ in scope, D5's
5
+ // crosscut:catalogue check enumerates the applicable (reqShape,
6
+ // concern) pairs via this module and asserts a concern-ledger entry
7
+ // keyed <REQ>:<concern> exists with disposition applied or waived (a
8
+ // waived entry carries a reason).
9
+ //
10
+ // The catalogue is deliberately keyed on the concern name so a
11
+ // shape-wise question like "what concerns apply to this REQ?" is a
12
+ // filter against one map, not a scan across eight. The reverse view
13
+ // (which shape triggers which concern) is a transpose and lives in
14
+ // applicableConcernsFor().
15
+ //
16
+ // Keys share names with the baseline catalogue
17
+ // (packages/rcf-lite/src/core/baseline-catalog) where names coincide:
18
+ // `auth` is the only name the two share today (the baseline-AC
19
+ // catalogue has no per-concern crosscut keys yet). The gate reader
20
+ // composes the ledger key as `<REQ>:<concern>`, so no key translation
21
+ // is needed between the two surfaces.
22
+ //
23
+ // Pure: no I/O, no state, no time. The export is frozen at module
24
+ // load so a consumer cannot mutate the shared source.
25
+
26
+ /**
27
+ * Canonical ordering of concern names (spec section 4 row 'D5
28
+ * catalogue'). Readers that iterate the catalogue use this so display
29
+ * order stays stable.
30
+ *
31
+ * @type {ReadonlyArray<string>}
32
+ */
33
+ export const CONCERN_KEYS = Object.freeze([
34
+ 'auth',
35
+ 'errorEnvelope',
36
+ 'loggingAudit',
37
+ 'retention',
38
+ 'performance',
39
+ 'secrets',
40
+ 'timeAndTimezone',
41
+ 'concurrencyIdempotency',
42
+ ]);
43
+
44
+ /**
45
+ * The eight REQ shapes the catalogue reasons over. These are the
46
+ * values a REQ's shapeClassification.shapes array may carry; a REQ
47
+ * may carry more than one. `other` is the catch-all whose only
48
+ * applicable concern today is none.
49
+ *
50
+ * @type {ReadonlyArray<string>}
51
+ */
52
+ export const REQ_SHAPES = Object.freeze([
53
+ 'auth',
54
+ 'httpApi',
55
+ 'cliCommand',
56
+ 'persistence',
57
+ 'batch',
58
+ 'externalIntegration',
59
+ 'webUi',
60
+ 'other',
61
+ ]);
62
+
63
+ /**
64
+ * Shape set helper. The `loggingAudit` row below reads "every shape
65
+ * but other"; expressing that once beats enumerating the seven
66
+ * concrete shapes.
67
+ */
68
+ const ALL_BUT_OTHER = Object.freeze(REQ_SHAPES.filter((s) => s !== 'other'));
69
+
70
+ /**
71
+ * Per-concern applicability map keyed by concern name (spec section 4
72
+ * row 'D5 catalogue', verbatim):
73
+ *
74
+ * auth -> auth, httpApi
75
+ * errorEnvelope -> httpApi, cliCommand
76
+ * loggingAudit -> every REQ shape but other
77
+ * retention -> persistence
78
+ * performance -> httpApi, batch
79
+ * secrets -> auth, externalIntegration
80
+ * timeAndTimezone -> persistence, batch
81
+ * concurrencyIdempotency -> httpApi, persistence
82
+ *
83
+ * @type {Readonly<Record<string, ReadonlyArray<string>>>}
84
+ */
85
+ export const CONCERN_APPLICABILITY = Object.freeze({
86
+ auth: Object.freeze(['auth', 'httpApi']),
87
+ errorEnvelope: Object.freeze(['httpApi', 'cliCommand']),
88
+ loggingAudit: ALL_BUT_OTHER,
89
+ retention: Object.freeze(['persistence']),
90
+ performance: Object.freeze(['httpApi', 'batch']),
91
+ secrets: Object.freeze(['auth', 'externalIntegration']),
92
+ timeAndTimezone: Object.freeze(['persistence', 'batch']),
93
+ concurrencyIdempotency: Object.freeze(['httpApi', 'persistence']),
94
+ });
95
+
96
+ /**
97
+ * Which concerns apply to a REQ shape. Reads the per-concern map
98
+ * once and returns the names, in CONCERN_KEYS order, whose shape set
99
+ * contains the input. An unknown shape returns [].
100
+ *
101
+ * @param {string} reqShape
102
+ * @returns {string[]}
103
+ */
104
+ export function applicableConcernsFor(reqShape) {
105
+ if (typeof reqShape !== 'string' || reqShape.length === 0) return [];
106
+ const out = [];
107
+ for (const concern of CONCERN_KEYS) {
108
+ const shapes = CONCERN_APPLICABILITY[concern];
109
+ if (shapes && shapes.includes(reqShape)) out.push(concern);
110
+ }
111
+ return out;
112
+ }
113
+
114
+ /**
115
+ * Union of applicable concerns across a set of REQ shapes. A REQ
116
+ * carries an array of shapes (shapeClassification.shapes); the
117
+ * applicable concerns for that REQ are the union of applicableConcerns
118
+ * for each shape, in CONCERN_KEYS order with no duplicates.
119
+ *
120
+ * @param {Iterable<string>} shapes
121
+ * @returns {string[]}
122
+ */
123
+ export function applicableConcernsForShapes(shapes) {
124
+ const seen = new Set();
125
+ for (const shape of shapes ?? []) {
126
+ for (const c of applicableConcernsFor(shape)) seen.add(c);
127
+ }
128
+ // Preserve canonical order.
129
+ return CONCERN_KEYS.filter((c) => seen.has(c));
130
+ }
@@ -44,6 +44,8 @@
44
44
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
45
45
  import { dirname, join } from 'node:path';
46
46
 
47
+ import { computeTreeHash } from '../query/delta.js';
48
+
47
49
  /**
48
50
  * Relative path (under the project root) of the freeze record. Used by
49
51
  * the walker-invisibility invariant test and by every caller that
@@ -245,3 +247,75 @@ export async function saveFreezeRecord({ projectRoot, record }) {
245
247
  await writeFile(filePath, `${JSON.stringify(validated, null, 2)}\n`, 'utf8');
246
248
  return { filePath };
247
249
  }
250
+
251
+ /**
252
+ * Apply `freeze.override { reason, by, at }` to the project's freeze
253
+ * record and persist it (0.30.0 PR 8, REQ-177 / TAC-4125). When no
254
+ * freeze record exists, a minimal placeholder is created so the
255
+ * override has a home: `frozenAt = at`, `treeHash` from the live tree
256
+ * via computeTreeHash on the supplied `docHashes` (passed by the
257
+ * caller so this module stays pure of walker I/O), `briefStatements`
258
+ * from the caller (defaults to 0 when the brief ledger is absent).
259
+ * On an existing record the override is set in place and every other
260
+ * field is preserved.
261
+ *
262
+ * The writer validates through saveFreezeRecord so the on-disk schema
263
+ * stays canonical. A missing-non-empty reason throws before any write.
264
+ *
265
+ * @param {object} args
266
+ * @param {string} args.projectRoot
267
+ * @param {string} args.reason - operator-supplied non-empty reason string.
268
+ * @param {string} args.by - author identity recorded on the override.
269
+ * @param {string} args.at - ISO-8601 timestamp.
270
+ * @param {Record<string, string>} [args.docHashes] - the live tree's docHashes map; used only when no prior record exists so a minimal record can be stamped.
271
+ * @param {string} [args.treeHash] - the live tree hash; used only when no prior record exists.
272
+ * @param {number} [args.briefStatements] - brief ledger high-water mark; used only when no prior record exists.
273
+ * @returns {Promise<{ filePath: string, record: import('../query/delta.js').FreezeRecord & Record<string, unknown> }>}
274
+ */
275
+ export async function applyOverrideToFreezeRecord({
276
+ projectRoot,
277
+ reason,
278
+ by,
279
+ at,
280
+ docHashes = {},
281
+ treeHash = null,
282
+ briefStatements = 0,
283
+ }) {
284
+ if (typeof reason !== 'string' || reason.length === 0) {
285
+ throw new FreezeRecordError(
286
+ "applyOverrideToFreezeRecord: 'reason' must be a non-empty string.",
287
+ { filePath: FREEZE_RECORD_REL_PATH, field: 'override.reason' },
288
+ );
289
+ }
290
+ if (typeof by !== 'string' || by.length === 0) {
291
+ throw new FreezeRecordError(
292
+ "applyOverrideToFreezeRecord: 'by' must be a non-empty string.",
293
+ { filePath: FREEZE_RECORD_REL_PATH, field: 'override.by' },
294
+ );
295
+ }
296
+ if (typeof at !== 'string' || at.length === 0) {
297
+ throw new FreezeRecordError(
298
+ "applyOverrideToFreezeRecord: 'at' must be a non-empty string.",
299
+ { filePath: FREEZE_RECORD_REL_PATH, field: 'override.at' },
300
+ );
301
+ }
302
+ const existing = await loadFreezeRecord({ projectRoot });
303
+ // On an unfrozen tree, mint a minimal record whose treeHash is the
304
+ // live tree hash computed from the caller-supplied docHashes map,
305
+ // so the override is attached to a verifiable snapshot rather than a
306
+ // placeholder. Callers (the build CLI) pass computeDelta's
307
+ // currentDocHashes so the hash agrees with the delta model.
308
+ const computedTreeHash = treeHash ?? computeTreeHash(docHashes);
309
+ /** @type {import('../query/delta.js').FreezeRecord & Record<string, unknown>} */
310
+ const record = existing
311
+ ? { ...existing, override: { reason, by, at } }
312
+ : {
313
+ frozenAt: at,
314
+ treeHash: computedTreeHash,
315
+ docHashes: { ...docHashes },
316
+ briefStatements,
317
+ override: { reason, by, at },
318
+ };
319
+ const { filePath } = await saveFreezeRecord({ projectRoot, record });
320
+ return { filePath, record };
321
+ }
@@ -102,7 +102,7 @@ export class LedgerError extends Error {
102
102
  * @param {string} message
103
103
  * @param {object} [opts]
104
104
  * @param {string} [opts.filePath]
105
- * @param {'parseFailure' | 'schemaFailure' | 'ioFailure' | 'usage'} [opts.code]
105
+ * @param {'parseFailure' | 'schemaFailure' | 'ioFailure' | 'usage' | 'conflict'} [opts.code]
106
106
  * @param {string} [opts.field]
107
107
  */
108
108
  constructor(message, opts = {}) {
@@ -390,26 +390,105 @@ export function nextIdFor(name, body) {
390
390
  * updated body. Pure over its inputs (does not write to disk); the
391
391
  * CLI calls `saveLedger` with the result.
392
392
  *
393
+ * Ruling R1 2026-10-05 (w-2026-10-05-dave-001): `add` is idempotent by
394
+ * id. When `args.id` is set (the harness carries it on a replayed
395
+ * turn):
396
+ * - no entry with that id exists: honour the override and add the
397
+ * entry at that id (any gaps in the id sequence are legal; the
398
+ * per-ledger validator enforces uniqueness, not contiguity);
399
+ * - entry with that id exists and the content matches: return
400
+ * `{ status: 'unchanged', body, entry }`, no new write;
401
+ * - entry with that id exists and the content differs: throw a
402
+ * `LedgerError` (code 'conflict') naming the id and the differing
403
+ * field keys so the CLI exits 3. Update is a separate verb.
404
+ * When `args.id` is omitted the next id is minted as before (the
405
+ * pre-R1 behaviour; a replayed turn without a carried id still works
406
+ * but duplicates the entry at a new id, which is why the harness is
407
+ * responsible for threading --id back).
408
+ *
393
409
  * @param {object} args
394
410
  * @param {LedgerName} args.name
395
411
  * @param {Record<string, unknown[]>} args.body
396
412
  * @param {Record<string, unknown>} args.entry - fields other than id / addedAt / status
413
+ * @param {number} [args.id] - optional id override (R1)
397
414
  * @param {string} [args.now] - ISO timestamp; defaults to Date.now()
398
- * @returns {{ body: Record<string, unknown[]>, entry: Record<string, unknown> }}
415
+ * @returns {{ body: Record<string, unknown[]>, entry: Record<string, unknown>, status?: 'added' | 'unchanged' }}
399
416
  */
400
- export function addEntry({ name, body, entry, now }) {
417
+ export function addEntry({ name, body, entry, id, now }) {
401
418
  const cfg = LEDGER_CONFIG[name];
402
419
  if (!cfg) throw new LedgerError(`Unknown ledger '${name}'.`, { code: 'usage' });
403
- const id = nextIdFor(name, body);
420
+ const list = /** @type {any[]} */ (body[cfg.arrayKey] ?? []);
421
+ let resolvedId;
422
+ if (id !== undefined) {
423
+ if (!Number.isInteger(id) || id < 1) {
424
+ throw new LedgerError(`${name} add --id must be a positive integer, got ${id}.`, {
425
+ filePath: ledgerRelPath(name), field: 'id', code: 'usage',
426
+ });
427
+ }
428
+ const existing = list.find((e) => Number(e?.id) === Number(id));
429
+ if (existing) {
430
+ // R1 idempotency check: compare caller-supplied fields against the
431
+ // existing entry. `addedAt` and `status` default on first add, so
432
+ // they are compared only when the caller explicitly supplied them.
433
+ const differing = [];
434
+ for (const [key, value] of Object.entries(entry)) {
435
+ if (value === undefined) continue;
436
+ if (key === 'id') continue;
437
+ if (key === 'addedAt' || key === 'status') {
438
+ // Default values auto-populated on first add; skip unless the
439
+ // caller passed them explicitly AND they differ.
440
+ if (existing[key] !== value) differing.push(key);
441
+ continue;
442
+ }
443
+ if (!deepEqual(existing[key], value)) differing.push(key);
444
+ }
445
+ if (differing.length === 0) {
446
+ return { body, entry: existing, status: 'unchanged' };
447
+ }
448
+ throw new LedgerError(
449
+ `${name} ledger entry ${id} already exists with different content; differing fields: ${differing.sort().join(', ')}. Use the update verb to patch.`,
450
+ { filePath: ledgerRelPath(name), field: `id ${id}`, code: 'conflict' },
451
+ );
452
+ }
453
+ resolvedId = id;
454
+ } else {
455
+ resolvedId = nextIdFor(name, body);
456
+ }
404
457
  const full = {
405
- id,
458
+ id: resolvedId,
406
459
  ...entry,
407
460
  addedAt: entry.addedAt ?? now ?? new Date().toISOString(),
408
461
  status: entry.status ?? 'open',
409
462
  };
410
- const nextBody = { ...body, [cfg.arrayKey]: [...(body[cfg.arrayKey] ?? []), full] };
463
+ const nextBody = { ...body, [cfg.arrayKey]: [...list, full] };
411
464
  validateLedger(name, nextBody, ledgerRelPath(name));
412
- return { body: nextBody, entry: full };
465
+ return { body: nextBody, entry: full, status: 'added' };
466
+ }
467
+
468
+ /**
469
+ * Deep-equality over JSON-shaped values. Used by R1's idempotency
470
+ * check to compare a caller-supplied field against the existing entry.
471
+ * Arrays and plain objects are compared structurally; primitives via
472
+ * Object.is. Pure.
473
+ */
474
+ function deepEqual(a, b) {
475
+ if (Object.is(a, b)) return true;
476
+ if (a === null || b === null) return false;
477
+ if (typeof a !== typeof b) return false;
478
+ if (Array.isArray(a)) {
479
+ if (!Array.isArray(b) || a.length !== b.length) return false;
480
+ for (let i = 0; i < a.length; i += 1) if (!deepEqual(a[i], b[i])) return false;
481
+ return true;
482
+ }
483
+ if (typeof a === 'object') {
484
+ if (typeof b !== 'object' || Array.isArray(b)) return false;
485
+ const ak = Object.keys(a);
486
+ const bk = Object.keys(b);
487
+ if (ak.length !== bk.length) return false;
488
+ for (const k of ak) if (!deepEqual(a[k], b[k])) return false;
489
+ return true;
490
+ }
491
+ return false;
413
492
  }
414
493
 
415
494
  /**
@@ -0,0 +1,55 @@
1
+ // Probe runner seam (REQ-175; spec 2026-10-01 section 4 row 'D6 scans
2
+ // and the injectable probe runner' and section 11.6; ADR-4131 extended
3
+ // by DEFINE step 3 PR 7).
4
+ //
5
+ // A probeRunner is `({ reqId, tree }) => findings[]` where each
6
+ // finding is `{ reqId, finding, severity?, hash?, status? }`. The
7
+ // shape mirrors a probe-ledger entry minus the ids and timestamps
8
+ // computeReadiness assigns when it merges the findings into the probe
9
+ // ledger it hands the gate.
10
+ //
11
+ // IMPORTANT: NO RUNNER SHIPS. rcf-lite has no LLM at runtime and does
12
+ // not spawn processes or make network calls. The harness is the
13
+ // runner: it either calls `ledger probes add` directly, or it drives a
14
+ // test invocation that passes a stub runner into computeReadiness. The
15
+ // seam exists so a test harness or a future harness-driven call site
16
+ // has one named extension point rather than monkey-patching the
17
+ // probe-ledger reader.
18
+ //
19
+ // Shape alone; the function stays as a type-level reference and is not
20
+ // invoked by the CLI today.
21
+
22
+ /**
23
+ * @typedef {{
24
+ * reqId: string,
25
+ * finding: string,
26
+ * severity?: 'low' | 'medium' | 'high',
27
+ * hash?: string,
28
+ * status?: 'open' | 'closed' | 'attested',
29
+ * }} ProbeFinding
30
+ */
31
+
32
+ /**
33
+ * @typedef {(args: { reqId: string, tree: unknown }) => ProbeFinding[]} ProbeRunner
34
+ */
35
+
36
+ /**
37
+ * The default "no runner" sentinel. computeReadiness treats a null or
38
+ * absent runner as "do not inject findings"; its result then equals
39
+ * the 0.29.0 result on the same fixture (AC-17504-2).
40
+ *
41
+ * @type {ProbeRunner | null}
42
+ */
43
+ export const NO_PROBE_RUNNER = null;
44
+
45
+ /**
46
+ * Guard that a value is a usable probeRunner function. Pure. Exported
47
+ * so computeReadiness can skip injection cleanly on a non-function
48
+ * (`undefined`, `null`, or a mis-typed value) without throwing.
49
+ *
50
+ * @param {unknown} value
51
+ * @returns {value is ProbeRunner}
52
+ */
53
+ export function isProbeRunner(value) {
54
+ return typeof value === 'function';
55
+ }
@@ -0,0 +1,256 @@
1
+ // `rcf define validate` finding set (0.30.0 PR 8; REQ-178 / TAC-4126).
2
+ //
3
+ // Four new findings over the walker's schema and broken-reference pass:
4
+ //
5
+ // - interface kind outside INTERFACE_KINDS (spec section 4 validate
6
+ // row; AC-17802-1).
7
+ // - bracketed AC class prefix outside the five known classes (spec
8
+ // section 4 validate row; AC-17802-2). An AC description with NO
9
+ // leading bracketed prefix is NOT a finding (decision 10, kept).
10
+ // - tacIds naming a non-TAC (spec section 4 validate row).
11
+ // - ownerRef or deliveredBy that does not resolve on the walker tree
12
+ // (spec section 4 validate row).
13
+ //
14
+ // Pure over the walker tree model: no filesystem I/O; the caller
15
+ // (src/cli/validate.js) merges the returned entries into the `errors`
16
+ // array it already exits on (exit 3), so --json and the text report
17
+ // render these exactly as a schema or broken-reference error does.
18
+ //
19
+ // Shape of each finding (matches rcfError shape consumed by
20
+ // formatErrors): { kind: 'defineValidate', rule, documentId, filePath,
21
+ // field, message }. `rule` fixes the class so a caller can match on
22
+ // one of five constants rather than a message substring.
23
+ //
24
+ // Decision 10 is binding: a validate finding for a missing class
25
+ // marker would fail the dogfood tree and every legacy tree's CI; D4
26
+ // reports absence as the floor already.
27
+
28
+ import { INTERFACE_KINDS, resolveOwnerRefField } from '../query/gates.js';
29
+
30
+ /** @typedef {{ kind: 'defineValidate', rule: string, documentId: string|null, filePath: string|null, field: string|null, message: string }} DefineValidateFinding */
31
+
32
+ const INTERFACE_KINDS_SET = new Set(INTERFACE_KINDS);
33
+ /** Known AC-class prefix set (same source of truth as src/query/gates.js). */
34
+ const KNOWN_AC_CLASSES = new Set(['happy', 'edge', 'failure', 'must-not', 'non-functional']);
35
+ /** Leading bracketed prefix on an AC description. */
36
+ const BRACKET_PREFIX_RE = /^\[([^\]]+)\]/;
37
+
38
+ /**
39
+ * Collect PR 8 define-validate findings from a walker tree model.
40
+ *
41
+ * @param {object} tree - walker tree.
42
+ * @returns {DefineValidateFinding[]}
43
+ */
44
+ export function collectDefineValidateFindings(tree) {
45
+ /** @type {DefineValidateFinding[]} */
46
+ const findings = [];
47
+ const tacIds = new Set();
48
+ for (const tac of tree.tacs ?? []) {
49
+ if (tac && typeof tac.tacId === 'string') tacIds.add(tac.tacId);
50
+ }
51
+ const allIds = tree.byId instanceof Map ? new Set(tree.byId.keys()) : new Set();
52
+
53
+ // 1. Interface kinds outside the vocabulary.
54
+ for (const tac of tree.tacs ?? []) {
55
+ const interfaces = Array.isArray(tac.interfaces) ? tac.interfaces : [];
56
+ for (const iface of interfaces) {
57
+ const kind = iface?.kind;
58
+ if (typeof kind === 'string' && INTERFACE_KINDS_SET.has(kind)) continue;
59
+ // Only emit a finding when `kind` is a string (walker schema
60
+ // already covers absent / non-string with its own error).
61
+ if (typeof kind !== 'string') continue;
62
+ findings.push({
63
+ kind: 'defineValidate',
64
+ rule: 'defineValidate:interfaceKind',
65
+ documentId: tac.tacId ?? null,
66
+ filePath: null,
67
+ field: `interfaces[${iface?.name ?? '?'}].kind`,
68
+ message: `define validate: interface kind ${JSON.stringify(kind)} on ${tac.tacId}:${iface?.name ?? '(unnamed)'} is outside the closed vocabulary ${JSON.stringify([...INTERFACE_KINDS])}`,
69
+ });
70
+ }
71
+ }
72
+
73
+ // 2. AC class prefix outside the known classes. Absence is NOT a
74
+ // finding (decision 10). Iterate every US's inline AC array.
75
+ for (const us of tree.userStories ?? []) {
76
+ const acs = Array.isArray(us.acceptanceCriteria) ? us.acceptanceCriteria : [];
77
+ for (const ac of acs) {
78
+ const desc = typeof ac?.description === 'string' ? ac.description : '';
79
+ const m = desc.match(BRACKET_PREFIX_RE);
80
+ if (!m) continue;
81
+ const prefix = m[1].trim();
82
+ if (KNOWN_AC_CLASSES.has(prefix)) continue;
83
+ findings.push({
84
+ kind: 'defineValidate',
85
+ rule: 'defineValidate:acClassPrefix',
86
+ documentId: ac?.id ?? us?.usId ?? null,
87
+ filePath: null,
88
+ field: 'description',
89
+ message: `define validate: AC ${ac?.id ?? '(unknown id)'} on ${us?.usId ?? '(unknown story)'} starts with bracketed prefix [${prefix}] which is not one of {happy, edge, failure, must-not, non-functional}`,
90
+ });
91
+ }
92
+ }
93
+
94
+ // 3. tacIds on a US naming a non-TAC.
95
+ for (const us of tree.userStories ?? []) {
96
+ const ids = Array.isArray(us.tacIds) ? us.tacIds : [];
97
+ for (const id of ids) {
98
+ if (typeof id !== 'string') continue;
99
+ if (tacIds.has(id)) continue;
100
+ findings.push({
101
+ kind: 'defineValidate',
102
+ rule: 'defineValidate:tacIdsResolves',
103
+ documentId: us.usId ?? null,
104
+ filePath: null,
105
+ field: 'tacIds',
106
+ message: `define validate: US ${us.usId ?? '(unknown)'} tacIds entry ${JSON.stringify(id)} does not resolve to any TAC on the tree`,
107
+ });
108
+ }
109
+ }
110
+
111
+ // 4a. ownerRef on an AC that does not resolve under R11 grammar on
112
+ // the named TAC or ADR (spec section 17, 2026-10-03). The
113
+ // `resolveOwnerRefField` helper accepts `interfaces[<name>]`,
114
+ // `responsibilities[<n>]`, `dependencies[<name>]`,
115
+ // `alternativesConsidered[<n>]` and bare schema fields
116
+ // (`purpose`, `internalStructure`, `decision`, etc.). Dotted
117
+ // forms are refused: the finding message names the field so
118
+ // the author can rewrite to bracket grammar.
119
+ const tacByIdLocal = new Map();
120
+ for (const tac of tree.tacs ?? []) {
121
+ if (tac?.tacId) tacByIdLocal.set(tac.tacId, tac);
122
+ }
123
+ const adrByIdLocal = new Map();
124
+ for (const adr of tree.adrs ?? []) {
125
+ if (adr?.adrId) adrByIdLocal.set(adr.adrId, adr);
126
+ }
127
+ for (const us of tree.userStories ?? []) {
128
+ const acs = Array.isArray(us.acceptanceCriteria) ? us.acceptanceCriteria : [];
129
+ for (const ac of acs) {
130
+ const ref = ac?.ownerRef;
131
+ if (!ref || typeof ref !== 'object') continue;
132
+ const tacId = typeof ref.tacId === 'string' ? ref.tacId : null;
133
+ const adrId = typeof ref.adrId === 'string' ? ref.adrId : null;
134
+ const field = typeof ref.field === 'string' ? ref.field : null;
135
+ if ((!tacId && !adrId) || !field) continue;
136
+ let owner = null;
137
+ let ownerLabel = null;
138
+ if (tacId) {
139
+ owner = tacByIdLocal.get(tacId) ?? null;
140
+ ownerLabel = tacId;
141
+ if (!owner) {
142
+ findings.push({
143
+ kind: 'defineValidate',
144
+ rule: 'defineValidate:ownerRefResolves',
145
+ documentId: ac?.id ?? us?.usId ?? null,
146
+ filePath: null,
147
+ field: 'ownerRef',
148
+ message: `define validate: AC ${ac?.id ?? '(unknown)'} ownerRef names TAC ${JSON.stringify(tacId)} which is not on the tree`,
149
+ });
150
+ continue;
151
+ }
152
+ } else if (adrId) {
153
+ owner = adrByIdLocal.get(adrId) ?? null;
154
+ ownerLabel = adrId;
155
+ if (!owner) {
156
+ findings.push({
157
+ kind: 'defineValidate',
158
+ rule: 'defineValidate:ownerRefResolves',
159
+ documentId: ac?.id ?? us?.usId ?? null,
160
+ filePath: null,
161
+ field: 'ownerRef',
162
+ message: `define validate: AC ${ac?.id ?? '(unknown)'} ownerRef names ADR ${JSON.stringify(adrId)} which is not on the tree`,
163
+ });
164
+ continue;
165
+ }
166
+ }
167
+ if (!resolveOwnerRefField(owner, field)) {
168
+ findings.push({
169
+ kind: 'defineValidate',
170
+ rule: 'defineValidate:ownerRefResolves',
171
+ documentId: ac?.id ?? us?.usId ?? null,
172
+ filePath: null,
173
+ field: 'ownerRef',
174
+ message: `define validate: AC ${ac?.id ?? '(unknown)'} ownerRef.field ${JSON.stringify(field)} does not resolve on ${ownerLabel} under R11 grammar (bracket forms: interfaces[<name>], responsibilities[<n>], dependencies[<name>], alternativesConsidered[<n>]; or a bare schema field name)`,
175
+ });
176
+ }
177
+ }
178
+ }
179
+
180
+ // 4b. deliveredBy on a REQ. Two forms are accepted by the schema:
181
+ // (i) a legacy string that must resolve to any id in the tree
182
+ // (back-compat for pre-DEFINE REQs; the walker's own schema
183
+ // check has long since been dropped so no production REQ should
184
+ // carry a bare string, but this path remains defensive);
185
+ // (ii) the object form `{ tacId | adrId, field }` which R11
186
+ // resolves under the same grammar as `ownerRef`. The object
187
+ // form was silently skipped before PR 9 (review 2026-10-03).
188
+ for (const req of tree.requirements ?? []) {
189
+ const d = req?.deliveredBy;
190
+ if (typeof d === 'string' && d.length > 0) {
191
+ if (!allIds.has(d)) {
192
+ findings.push({
193
+ kind: 'defineValidate',
194
+ rule: 'defineValidate:deliveredByResolves',
195
+ documentId: req.reqId ?? null,
196
+ filePath: null,
197
+ field: 'deliveredBy',
198
+ message: `define validate: REQ ${req.reqId ?? '(unknown)'} deliveredBy ${JSON.stringify(d)} does not resolve to any document on the tree`,
199
+ });
200
+ }
201
+ continue;
202
+ }
203
+ if (!d || typeof d !== 'object') continue;
204
+ const tacId = typeof d.tacId === 'string' ? d.tacId : null;
205
+ const adrId = typeof d.adrId === 'string' ? d.adrId : null;
206
+ const field = typeof d.field === 'string' ? d.field : null;
207
+ if (!tacId && !adrId) continue;
208
+ let owner = null;
209
+ let ownerLabel = null;
210
+ if (tacId) {
211
+ owner = tacByIdLocal.get(tacId) ?? null;
212
+ ownerLabel = tacId;
213
+ if (!owner) {
214
+ findings.push({
215
+ kind: 'defineValidate',
216
+ rule: 'defineValidate:deliveredByResolves',
217
+ documentId: req.reqId ?? null,
218
+ filePath: null,
219
+ field: 'deliveredBy',
220
+ message: `define validate: REQ ${req.reqId ?? '(unknown)'} deliveredBy names TAC ${JSON.stringify(tacId)} which is not on the tree`,
221
+ });
222
+ continue;
223
+ }
224
+ } else if (adrId) {
225
+ owner = adrByIdLocal.get(adrId) ?? null;
226
+ ownerLabel = adrId;
227
+ if (!owner) {
228
+ findings.push({
229
+ kind: 'defineValidate',
230
+ rule: 'defineValidate:deliveredByResolves',
231
+ documentId: req.reqId ?? null,
232
+ filePath: null,
233
+ field: 'deliveredBy',
234
+ message: `define validate: REQ ${req.reqId ?? '(unknown)'} deliveredBy names ADR ${JSON.stringify(adrId)} which is not on the tree`,
235
+ });
236
+ continue;
237
+ }
238
+ }
239
+ // `field` is schema-optional on deliveredBy; a REQ whose
240
+ // deliveredBy carries only a tacId/adrId with no field names the
241
+ // whole owner and resolves by presence of the owner alone.
242
+ if (!field) continue;
243
+ if (!resolveOwnerRefField(owner, field)) {
244
+ findings.push({
245
+ kind: 'defineValidate',
246
+ rule: 'defineValidate:deliveredByResolves',
247
+ documentId: req.reqId ?? null,
248
+ filePath: null,
249
+ field: 'deliveredBy',
250
+ message: `define validate: REQ ${req.reqId ?? '(unknown)'} deliveredBy.field ${JSON.stringify(field)} does not resolve on ${ownerLabel} under R11 grammar (bracket forms: interfaces[<name>], responsibilities[<n>], dependencies[<name>], alternativesConsidered[<n>]; or a bare schema field name)`,
251
+ });
252
+ }
253
+ }
254
+
255
+ return findings;
256
+ }
package/src/mcp/tools.js CHANGED
@@ -639,7 +639,7 @@ const DEFINITIONS = [
639
639
  properties: {
640
640
  kind: { type: 'string', enum: KIND_ENUM, description: 'Document kind' },
641
641
  parent: { type: 'string', description: 'Parent document id; required for every kind except cn (which has no parent)' },
642
- id: { type: 'string', description: 'Override the auto-assigned id (refuses on collision)' },
642
+ id: { type: 'string', description: 'Override the auto-assigned id. Idempotent by id: an existing id with identical content is a no-op; different content refuses as a conflict naming the differing fields (use rcf_update to patch)' },
643
643
  title: { type: 'string', description: 'Required for req / us / tac / adr / fbs / ts' },
644
644
  description: { type: 'string', description: 'Required for ac / tc' },
645
645
  purpose: { type: 'string', description: 'Required for ts' },