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
@@ -16,7 +16,7 @@
16
16
  // every other query verb has.
17
17
 
18
18
  import { parseArgs } from 'node:util';
19
- import { readFile } from 'node:fs/promises';
19
+ import { readFile, stat } from 'node:fs/promises';
20
20
  import { join } from 'node:path';
21
21
 
22
22
  import { resolveTestPointers, walkTree } from '#core/store';
@@ -29,13 +29,17 @@ import {
29
29
  STAGE_GATES,
30
30
  STAGE_ORDER,
31
31
  STAGE_SHORT_NAMES,
32
+ ackable,
33
+ extractInterfacePathTokens,
32
34
  stagePolicy,
33
35
  } from '../query/gates.js';
34
36
  import {
35
37
  computeReadiness,
38
+ countLitmusReadersAtHash,
36
39
  formatTreeLine,
37
40
  formatVerdictLines,
38
41
  parseLevelFlag,
42
+ parseLitmusFlag,
39
43
  parsePersonaFlag,
40
44
  } from '../query/readiness.js';
41
45
  import { runWithAdmissibilityGate } from '../query/index.js';
@@ -45,6 +49,7 @@ const OPTION_SPEC = {
45
49
  check: { type: 'string' },
46
50
  level: { type: 'string' },
47
51
  persona: { type: 'string' },
52
+ litmus: { type: 'string' },
48
53
  help: { type: 'boolean' },
49
54
  };
50
55
 
@@ -73,11 +78,16 @@ Options:
73
78
  brief | skeleton | shapes | stories |
74
79
  crosscut | consistency | decisions |
75
80
  freeze. Exits 4 on a blocking-stage
76
- failure (D1 / D2 / D4 / D7 / D8); exits 0
77
- with a visible '[warn]' line on an
78
- unacknowledged warn-with-ack failure
79
- (D3 / D5 / D6). Use --check all to print
80
- every stage under this exit-code policy.
81
+ failure (D1 / D2 / D4 / D7 / D8) and on
82
+ an unacknowledged D3 or D5 bite failure
83
+ (ADR-4131, 0.30.0 PR 5 and PR 6); exits 0
84
+ when D3 or D5 is acknowledged at the
85
+ current tree hash; exits 0 with a visible
86
+ '[warn]' line on an unacknowledged warn-
87
+ with-ack failure (D6 until PR 7 bites it).
88
+ Use
89
+ --check all to print every stage under
90
+ this exit-code policy.
81
91
  --level <intent|build> Pick which verdict the exit code follows.
82
92
  --level intent exits 4 when
83
93
  levels.intentComplete.ok is false
@@ -97,6 +107,17 @@ Options:
97
107
  per-stage detail to matching-persona
98
108
  checks. Never affects the exit code or
99
109
  the JSON content.
110
+ --litmus <n> Require n distinct litmus readings at the
111
+ current tree hash before passing (0.30.0
112
+ PR 7, ADR-4131 extended). A litmus reading
113
+ is a probe-ledger entry whose finding
114
+ begins litmus:<reader>: and whose text
115
+ includes the current tree hash. Fewer
116
+ than n distinct readers exits 4 naming
117
+ the shortfall. No process is spawned and
118
+ no network call is made; the harness
119
+ lands the readings through
120
+ rcf define ledger probes add.
100
121
  --help Print this help.
101
122
  `;
102
123
 
@@ -108,6 +129,42 @@ const STATE_LABEL = {
108
129
  notApplicable: 'notApplicable',
109
130
  };
110
131
 
132
+ /**
133
+ * ADR-4131 (0.30.0 PR 5): walk the tree's TAC interfaces, extract the
134
+ * `path:` tokens the engineer named, resolve each one against
135
+ * `projectRoot` on disk, and return the set of tokens that resolve.
136
+ * `shapes:pathsResolve` reads the set from the stage context and
137
+ * decides the D3 bite without I/O. The compute is pure; this helper is
138
+ * the one place I/O happens for the check.
139
+ *
140
+ * @param {string} projectRoot
141
+ * @param {import('#core/store/walker.js').TreeModel} tree
142
+ * @returns {Promise<Set<string>>}
143
+ */
144
+ async function resolveInterfacePaths(projectRoot, tree) {
145
+ const resolved = new Set();
146
+ /** @type {Set<string>} */
147
+ const candidates = new Set();
148
+ for (const tac of tree.tacs ?? []) {
149
+ for (const iface of tac.interfaces ?? []) {
150
+ const desc = typeof iface?.description === 'string' ? iface.description : '';
151
+ for (const token of extractInterfacePathTokens(desc)) {
152
+ candidates.add(token);
153
+ }
154
+ }
155
+ }
156
+ await Promise.all([...candidates].map(async (token) => {
157
+ try {
158
+ await stat(join(projectRoot, token));
159
+ resolved.add(token);
160
+ } catch {
161
+ // Missing path stays out of the set; the gate decides whether
162
+ // `authoredAt: D3` lets it through.
163
+ }
164
+ }));
165
+ return resolved;
166
+ }
167
+
111
168
  /**
112
169
  * Read `rcf/.identity/profile.md` when it exists; return null on
113
170
  * ENOENT. Any other read error surfaces as null so the profile
@@ -209,6 +266,15 @@ export async function main(argv, deps = {}) {
209
266
  return 2;
210
267
  }
211
268
 
269
+ /** @type {number | null} */
270
+ let litmus;
271
+ try {
272
+ litmus = parseLitmusFlag(flags.litmus);
273
+ } catch (err) {
274
+ stderr.write(`[error] usage readiness: ${/** @type {Error} */ (err).message}\n`);
275
+ return 2;
276
+ }
277
+
212
278
  const projectRoot = await findProjectRoot(cwd);
213
279
  if (!projectRoot) {
214
280
  stderr.write('[error] usage no project root found (no rcf/manifest.json in this directory or any ancestor). Run `npx rcf init` to create and wire a project.\n');
@@ -219,11 +285,12 @@ export async function main(argv, deps = {}) {
219
285
  const staleErrors = await checkCodeNodeResolution({ projectRoot, tree });
220
286
  const validateErrors = [...errors, ...staleErrors];
221
287
 
222
- const [freeze, ledgers, testPointers, profileText] = await Promise.all([
288
+ const [freeze, ledgers, testPointers, profileText, resolvedPaths] = await Promise.all([
223
289
  loadFreezeRecord({ projectRoot }),
224
290
  loadAllLedgers({ projectRoot }),
225
291
  resolveTestPointers({ projectRoot, tree }),
226
292
  readProfileText(projectRoot),
293
+ resolveInterfacePaths(projectRoot, tree),
227
294
  ]);
228
295
 
229
296
  const startedAt = Date.now();
@@ -232,33 +299,34 @@ export async function main(argv, deps = {}) {
232
299
  : null;
233
300
 
234
301
  // Readiness is a diagnostic: even a chain that refuses admissibility
235
- // wants to know which stage gate blocks it. The wrap runs first so
236
- // the ruleset toolScope guard is honoured (NV-BL-SR-03 addendum);
237
- // on refuse the refusal envelope is threaded through as informational
238
- // context and the compute still runs (ADR-4123).
302
+ // wants to know which stage gate blocks it (AC-17902-4). Compute
303
+ // readiness once up front, then run the admissibility wrap passing
304
+ // the computed stages and validate-errors so it can cite
305
+ // NV-DL-ADM-02 (D4 floor), NV-DL-ADM-03 (D3 bite) and NV-DL-ADM-04
306
+ // (validate findings) alongside the NV-BL rules (PR 9).
307
+ /** @type {import('../query/readiness.js').ReadinessResult} */
308
+ const result = computeReadiness(tree, {
309
+ freeze,
310
+ ledgers,
311
+ profile: undefined,
312
+ profileText,
313
+ testPointers,
314
+ validateErrors,
315
+ resolvedPaths,
316
+ });
239
317
  const gated = await runWithAdmissibilityGate({
240
318
  tree,
241
319
  chainRulesetVersion,
242
- produce: () => computeReadiness(tree, {
243
- freeze,
244
- ledgers,
245
- profile: undefined,
246
- profileText,
247
- testPointers,
248
- validateErrors,
249
- }),
320
+ defineStages: result.stages,
321
+ defineValidateErrors: validateErrors,
322
+ produce: () => result,
250
323
  });
251
-
252
- /** @type {import('../query/readiness.js').ReadinessResult} */
253
- const result = gated.status === 'refused-admissibility'
254
- ? computeReadiness(tree, {
255
- freeze, ledgers, profile: undefined, profileText, testPointers, validateErrors,
256
- })
257
- : gated.payload;
258
324
  const wallMs = Date.now() - startedAt;
259
325
 
260
326
  if (gated.status === 'refused-admissibility') {
261
327
  stderr.write(`[warn] readiness: chain admissibility refused (informational; the readiness compute still ran). ${gated.refusal}\n`);
328
+ } else if (Array.isArray(gated.defineRules) && gated.defineRules.length > 0) {
329
+ stderr.write(`[warn] readiness: DEFINE-stage admissibility rules bite (informational; the readiness compute still ran): [${gated.defineRules.join(', ')}]. Resolve the failing stages or record an --ack reason on freeze.gates to satisfy recordedInChain.\n`);
262
330
  }
263
331
 
264
332
  if (flags.json) {
@@ -267,13 +335,13 @@ export async function main(argv, deps = {}) {
267
335
  // `_meta.level` is null when the flag was absent (spec section
268
336
  // 3.3): consumers can tell "no --level given" from "--level
269
337
  // build" explicitly, which matters for the ticket artefact.
270
- const envelope = { ...result, _meta: { wallMs, level } };
338
+ const envelope = { ...result, _meta: { wallMs, level, litmus } };
271
339
  stdout.write(`${JSON.stringify(envelope, null, 2)}\n`);
272
- return decideExitCode(result, checkStage, level, stderr);
340
+ return decideExitCode(result, checkStage, level, litmus, ledgers, stderr);
273
341
  }
274
342
 
275
343
  renderText(stdout, stderr, result, wallMs, checkStage, level, persona, profileText);
276
- return decideExitCode(result, checkStage, level, stderr);
344
+ return decideExitCode(result, checkStage, level, litmus, ledgers, stderr);
277
345
  }
278
346
 
279
347
  /**
@@ -322,7 +390,7 @@ function renderText(stdout, stderr, result, wallMs, checkStage, level, persona,
322
390
 
323
391
  for (const stage of result.stages) {
324
392
  if (checkStage && checkStage !== 'all' && stage.stage !== checkStage) continue;
325
- stdout.write(`\n${stage.stage} (${stage.gate}): ${STATE_LABEL[stage.state] ?? stage.state}${stage.reason ? ` (${stage.reason})` : ''}\n`);
393
+ stdout.write(`\n${formatStageLine(stage)}\n`);
326
394
  for (const c of stage.checks) {
327
395
  if (persona && c.persona !== persona) continue;
328
396
  const mark = c.ok ? 'ok' : 'FAIL';
@@ -337,6 +405,20 @@ function renderText(stdout, stderr, result, wallMs, checkStage, level, persona,
337
405
  }
338
406
  }
339
407
 
408
+ /**
409
+ * Format the per-stage header line the text report prints, e.g.
410
+ * `D3 (define.shapes): failing`. A `reason` trailer is appended only
411
+ * when the envelope carries one (the `notApplicable` envelopes do; the
412
+ * ADR-4138 tree-wide failing envelope does not). Exported so the
413
+ * printed line is testable without driving the whole CLI.
414
+ *
415
+ * @param {{ stage: string, gate: string, state: string, reason?: string }} stage
416
+ * @returns {string}
417
+ */
418
+ export function formatStageLine(stage) {
419
+ return `${stage.stage} (${stage.gate}): ${STATE_LABEL[stage.state] ?? stage.state}${stage.reason ? ` (${stage.reason})` : ''}`;
420
+ }
421
+
340
422
  /**
341
423
  * Render the per-persona next-action lines (spec section 4). When a
342
424
  * `--level` is given the matching persona's line heads the pair; when
@@ -426,13 +508,15 @@ function formatChipLine(result) {
426
508
 
427
509
  /**
428
510
  * Decide the exit code for an invocation (spec section 3.2 matrix):
429
- * - No `--check` and no `--level`: always 0.
511
+ * - No `--check`, no `--level`, no `--litmus`: always 0.
430
512
  * - `--check` alone: today's stage policy (4 on blocking failure,
431
513
  * 0 with `[warn]` on warn-with-ack failure).
432
514
  * - `--level intent`: 4 iff `levels.intentComplete.ok === false`.
433
515
  * - `--level build`: 4 iff `levels.readyToBuild.ok === false`
434
516
  * (stricter than `--check all`; the warn line still prints).
435
- * - Both: 4 if either policy says 4.
517
+ * - `--litmus <n>`: 4 iff fewer than n distinct litmus readings at
518
+ * the current tree hash (spec section 11.6, ADR-4131 extended).
519
+ * - Several: 4 if any policy says 4.
436
520
  *
437
521
  * Warn lines are emitted whenever a warn-with-ack stage is failing,
438
522
  * independent of exit code, so an operator always sees why.
@@ -440,13 +524,27 @@ function formatChipLine(result) {
440
524
  * @param {import('../query/readiness.js').ReadinessResult} result
441
525
  * @param {string | null} checkStage
442
526
  * @param {'intent' | 'build' | null} level
527
+ * @param {number | null} litmus
528
+ * @param {object} ledgers
443
529
  * @param {NodeJS.WritableStream} stderr
444
530
  * @returns {number}
445
531
  */
446
- function decideExitCode(result, checkStage, level, stderr) {
532
+ function decideExitCode(result, checkStage, level, litmus, ledgers, stderr) {
447
533
  let exitCode = 0;
448
534
 
449
- // --check policy (unchanged from PR A).
535
+ // --check policy. ADR-4131 (0.30.0 PR 5): D3 bites, so a failing D3
536
+ // without an acknowledgement at the current tree hash exits 4.
537
+ // 0.30.0 PR 6 lifts the bite to D5 (crosscut:catalogue, the four new
538
+ // D4/D2 engineer checks ride D5's ack because the --ack channel is
539
+ // per gate). 0.30.0 PR 7 lifts the bite to D6 (the four consistency
540
+ // scans; the --ack channel D3/D5/D6 already share stays unchanged).
541
+ // The 'acknowledged' state is already folded by foldState() in
542
+ // gates.js when the freeze record acknowledges the gate at the
543
+ // current hash, so a failing-but-unacked bite stays failing here and
544
+ // exit 4 is the right answer. `ackable(stage)` names the three gates
545
+ // that accept an --ack override; a failing ackable stage that is not
546
+ // acknowledged bites.
547
+ const BITING_STAGES = new Set(['D3', 'D5', 'D6']);
450
548
  if (checkStage) {
451
549
  const stages = checkStage === 'all'
452
550
  ? result.stages
@@ -454,9 +552,10 @@ function decideExitCode(result, checkStage, level, stderr) {
454
552
  for (const s of stages) {
455
553
  if (s.state !== 'failing') continue;
456
554
  const policy = stagePolicy(s.stage);
457
- if (policy === 'blocking') {
555
+ const bites = BITING_STAGES.has(s.stage);
556
+ if (policy === 'blocking' || bites) {
458
557
  exitCode = 4;
459
- } else {
558
+ } else if (ackable(s.stage)) {
460
559
  stderr.write(`[warn] readiness: ${s.stage} (${s.gate}) is failing without an acknowledgement at the current tree hash. Run \`rcf define freeze --ack ${s.gate} --reason "<text>"\` to acknowledge, or edit the tree to clear the failure.\n`);
461
560
  }
462
561
  }
@@ -490,6 +589,22 @@ function decideExitCode(result, checkStage, level, stderr) {
490
589
  }
491
590
  }
492
591
 
592
+ // --litmus policy (0.30.0 PR 7, ADR-4131 extended; R9 clarified
593
+ // 2026-10-03, w-2026-10-03-dave-011). Count distinct readers who
594
+ // have landed a probe-ledger entry at the current LITMUS HASH whose
595
+ // finding begins litmus:<reader>:; exit 4 when fewer than n have
596
+ // attested. The litmus hash is the tree hash computed with the
597
+ // probes ledger excluded (see computeLitmusHash in src/query/readiness.js)
598
+ // so a reader's own write does not shift the hash it is attesting to.
599
+ if (typeof litmus === 'number' && litmus > 0) {
600
+ const hash = result.tree.litmusHash;
601
+ const readers = countLitmusReadersAtHash(ledgers, hash);
602
+ if (readers.size < litmus) {
603
+ stderr.write(`[warn] readiness: --litmus ${litmus} requires ${litmus} distinct litmus reading(s) at litmus hash ${hash}; found ${readers.size}. Spawn ${litmus - readers.size} more fresh-context reader(s) and land their readings through \`rcf define ledger probes add --req <reqId> --finding "litmus:<reader>: ..." --severity low\` with the litmus hash in the finding text (read it from \`rcf define readiness --json\` under \`tree.litmusHash\`).\n`);
604
+ exitCode = 4;
605
+ }
606
+ }
607
+
493
608
  return exitCode;
494
609
  }
495
610
 
@@ -8,6 +8,8 @@ import { formatErrors } from '#core/errors';
8
8
  import { checkCodeNodeResolution, walkTree } from '#core/store';
9
9
  import { validateCompanionPinsResolvable } from '../blueprint/companions.js';
10
10
  import { findProjectRoot } from '../view/index.js';
11
+ // 0.30.0 PR 8 (REQ-178 / TAC-4126): define-validate findings.
12
+ import { collectDefineValidateFindings } from '../define/validate-findings.js';
11
13
 
12
14
  const OPTION_SPEC = {
13
15
  quiet: { type: 'boolean' },
@@ -133,6 +135,12 @@ export async function main(argv, deps = {}) {
133
135
  // a pin that names no known provider is exit 3.
134
136
  const companionsErrors = await validateCompanionPinsResolvable({ projectRoot, tree });
135
137
  errors.push(...companionsErrors);
138
+ // 0.30.0 PR 8 (REQ-178, TAC-4126): interface kind outside vocabulary,
139
+ // bracketed AC class prefix outside the known classes, tacIds naming
140
+ // a non-TAC, and an unresolving ownerRef or deliveredBy. Absence of
141
+ // a class marker is NOT a finding (decision 10 kept).
142
+ const defineValidateFindings = collectDefineValidateFindings(tree);
143
+ errors.push(...defineValidateFindings);
136
144
  if (flags.json) {
137
145
  const issues = errors.map((e) => ({
138
146
  id: e.documentId ?? null,
@@ -7,7 +7,7 @@
7
7
  // renders them inline in the page so an owner can see what is broken.
8
8
 
9
9
  /**
10
- * @typedef {('validation'|'missingFile'|'brokenReference'|'parseFailure'|'ioFailure'|'usage'|'staleCode'|'missingCodeNodes'|'duplicateId')} ErrorKind
10
+ * @typedef {('validation'|'missingFile'|'brokenReference'|'parseFailure'|'ioFailure'|'usage'|'staleCode'|'missingCodeNodes'|'duplicateId'|'conflict')} ErrorKind
11
11
  */
12
12
 
13
13
  /**
@@ -49,6 +49,12 @@ const VALID_KINDS = new Set([
49
49
  // with the spec-verbatim refusal message; the CLI translates it to
50
50
  // exit 3 (not exit 2) with the message printed as-is on stderr.
51
51
  'requiresAppliedCapabilities',
52
+ // Ruling R1 extension 2026-10-05 (DEFINE step 3, PR 292 follow-up):
53
+ // a same-id `rcf define create` replay whose would-be body differs
54
+ // from the on-disk entry refuses with `kind: 'conflict'`; the CLI
55
+ // translates it to exit 3 with the id and the differing field keys
56
+ // named in the message. Mirrors `src/define/ledgers.js` R1 add path.
57
+ 'conflict',
52
58
  ]);
53
59
 
54
60
  /**
@@ -52,6 +52,111 @@ function canonicalKind(kind) {
52
52
  return KIND_ALIASES[kind] ?? kind;
53
53
  }
54
54
 
55
+ /**
56
+ * Fields the R1 create-replay compare ignores: every field the writer or
57
+ * a post-create side effect stamps on its own, never from the caller's
58
+ * input. A verbatim replay of a create must compare equal even after
59
+ * those stamps landed; every other field is deep-compared. Add a field
60
+ * here whenever a writer path or a post-create hook starts stamping one.
61
+ * Ruling R1 extension (PR 292 follow-up; list made exhaustive on the
62
+ * PR 293 landing review, d-2026-10-05-015 finding 2).
63
+ */
64
+ export const REPLAY_IGNORE_FIELDS = Object.freeze([
65
+ // Writer clock: assembleBody / createCn stamp it on every create and
66
+ // strip any caller-supplied value (B1 fix).
67
+ 'createdAt',
68
+ // Writer clock: stamped on every create and bumped by every update,
69
+ // including the classifier's own write-back below.
70
+ 'updatedAt',
71
+ // REQ shape classifier (src/req-detection/persist.js
72
+ // classifyAndPersistReq): src/cli/create.js runs it after every
73
+ // `create req` and persists the block through updateDocument, so the
74
+ // first create leaves a field the replay body never carries.
75
+ 'shapeClassification',
76
+ ]);
77
+ const REPLAY_IGNORE_SET = new Set(REPLAY_IGNORE_FIELDS);
78
+
79
+ /**
80
+ * Deep-equality over JSON-shaped values. Pure. Mirrors
81
+ * `src/define/ledgers.js` `deepEqual` so the R1 extension to `rcf
82
+ * define create` compares content the same way the add path does.
83
+ */
84
+ function deepEqual(a, b) {
85
+ if (Object.is(a, b)) return true;
86
+ if (a === null || b === null) return false;
87
+ if (typeof a !== typeof b) return false;
88
+ if (Array.isArray(a)) {
89
+ if (!Array.isArray(b) || a.length !== b.length) return false;
90
+ for (let i = 0; i < a.length; i += 1) if (!deepEqual(a[i], b[i])) return false;
91
+ return true;
92
+ }
93
+ if (typeof a === 'object') {
94
+ if (typeof b !== 'object' || Array.isArray(b)) return false;
95
+ const ak = Object.keys(a);
96
+ const bk = Object.keys(b);
97
+ if (ak.length !== bk.length) return false;
98
+ for (const k of ak) if (!deepEqual(a[k], b[k])) return false;
99
+ return true;
100
+ }
101
+ return false;
102
+ }
103
+
104
+ /**
105
+ * Compare an on-disk doc body to a would-be create body and return
106
+ * the sorted list of differing field keys. Ignores every field in
107
+ * REPLAY_IGNORE_FIELDS (writer- and classifier-owned stamps), so a
108
+ * verbatim replay does not show up as "updatedAt differs" or
109
+ * "shapeClassification differs". A key present on only one side counts as
110
+ * differing. R1 extension 2026-10-05 (PR 292 follow-up).
111
+ *
112
+ * @param {Record<string, unknown>} existing
113
+ * @param {Record<string, unknown>} candidate
114
+ * @returns {string[]}
115
+ */
116
+ function diffDocFields(existing, candidate) {
117
+ /** @type {Set<string>} */
118
+ const differing = new Set();
119
+ const keys = new Set([...Object.keys(existing ?? {}), ...Object.keys(candidate ?? {})]);
120
+ for (const key of keys) {
121
+ if (REPLAY_IGNORE_SET.has(key)) continue;
122
+ if (!deepEqual(existing?.[key], candidate?.[key])) differing.add(key);
123
+ }
124
+ return [...differing];
125
+ }
126
+
127
+ /**
128
+ * Ruling R1 extension (PR 292 follow-up, amended on the PR 293 landing
129
+ * review): resolve a same-id create replay against the entry already on
130
+ * the tree. Returns null when the id is free; otherwise the
131
+ * `{ status: 'unchanged' }` result (identical content, nothing is
132
+ * written) or a `kind: 'conflict'` refusal naming the differing field
133
+ * keys (exit 3; never a silent overwrite). Shared by the document path
134
+ * (createDocument), the inline AC / TC paths and the CN path so every
135
+ * `rcf define create <kind> --id` follows one rule.
136
+ *
137
+ * @param {object} args
138
+ * @param {string} args.kind - the CLI kind, for the message
139
+ * @param {string} args.id
140
+ * @param {object | null | undefined} args.existing - the entry on the tree
141
+ * @param {object} args.candidate - the would-be entry
142
+ * @param {string} args.filePath - repo-relative file the entry lives in
143
+ * @param {object} [args.extra] - extra fields carried on the unchanged result
144
+ * @returns {object | null}
145
+ */
146
+ function resolveReplay({ kind, id, existing, candidate, filePath, extra = {} }) {
147
+ if (!existing) return null;
148
+ const differing = diffDocFields(existing, candidate);
149
+ if (differing.length === 0) {
150
+ return { id, filePath, ...extra, body: existing, status: 'unchanged' };
151
+ }
152
+ return rcfError({
153
+ kind: 'conflict',
154
+ message: `create ${kind}: id ${id} already exists with different content; differing fields: ${differing.sort().join(', ')}. Use the update verb to patch.`,
155
+ documentId: id,
156
+ filePath,
157
+ });
158
+ }
159
+
55
160
  // ---------------------------------------------------------------------------
56
161
  // B5: post-write validation gate
57
162
  // ---------------------------------------------------------------------------
@@ -496,17 +601,28 @@ export async function createDocument({ projectRoot, tree, kind, body, options =
496
601
  });
497
602
  }
498
603
 
499
- // Allocate id (or take the override).
604
+ // Allocate id (or take the override). Ruling R1 2026-10-05 extended
605
+ // under w-2026-10-05-dave-013 (PR 292 follow-up): a replayed turn
606
+ // that carries `--id <existing>` with identical content is a no-op
607
+ // that returns `{ status: 'unchanged', body: existing }`; different
608
+ // content refuses with `kind: 'conflict'` naming the differing
609
+ // field keys. An unloadable (schema-invalid) doc still refuses
610
+ // unconditionally -- we cannot compare content against a doc we
611
+ // failed to load.
500
612
  let id = options.id;
613
+ /** @type {object | null} */
614
+ let existingDocForReplay = null;
501
615
  if (id) {
502
- // B5: an unloadable (schema-invalid) doc still occupies its id.
503
- if (tree.byId.has(id) || tree.invalidDocs?.has(id)) {
616
+ if (tree.invalidDocs?.has(id)) {
504
617
  return rcfError({
505
618
  kind: 'usage',
506
- message: `create ${kind}: id ${id} is already taken`,
619
+ message: `create ${kind}: id ${id} is already taken (file on disk failed to load; repair before replaying)`,
507
620
  documentId: id,
508
621
  });
509
622
  }
623
+ if (tree.byId.has(id)) {
624
+ existingDocForReplay = tree.byId.get(id);
625
+ }
510
626
  } else {
511
627
  try {
512
628
  id = nextIdForKind(tree, canonical, { parentId });
@@ -528,7 +644,7 @@ export async function createDocument({ projectRoot, tree, kind, body, options =
528
644
  }
529
645
  providedOrder = maxOrder + 1;
530
646
  } else if (Number.isInteger(providedOrder)) {
531
- const collision = siblings.find((sib) => sib.buildOrder === providedOrder);
647
+ const collision = siblings.find((sib) => sib.buildOrder === providedOrder && sib.fbsId !== id);
532
648
  if (collision) {
533
649
  return rcfError({
534
650
  kind: 'usage',
@@ -553,6 +669,16 @@ export async function createDocument({ projectRoot, tree, kind, body, options =
553
669
  });
554
670
  if (validation) return { ...validation, documentId: id };
555
671
 
672
+ // Ruling R1 extension 2026-10-05 (PR 292 follow-up): if the id
673
+ // already exists on the loaded tree, compare the would-be body to
674
+ // the existing doc (ignoring writer-owned timestamps) and either
675
+ // return `{ status: 'unchanged' }` or refuse with
676
+ // `kind: 'conflict'` naming the differing field keys.
677
+ const replay = resolveReplay({
678
+ kind, id, existing: existingDocForReplay, candidate: finalBody, filePath: relPath,
679
+ });
680
+ if (replay) return replay;
681
+
556
682
  // Cross-link ACs must resolve to existing ACs for fbs / ts.
557
683
  if (canonical === 'fbs' || canonical === 'testSuite') {
558
684
  const allAcIds = collectAllAcIds(tree);
@@ -644,10 +770,22 @@ async function createCn({ projectRoot, tree, options, body, walkErrors = [] }) {
644
770
  return rcfError({ kind: 'usage', message: 'create cn: --path is required' });
645
771
  }
646
772
 
773
+ // Ruling R1 extension (PR 293 landing review): a same-id replay is
774
+ // compared against the existing CN once the body is assembled below.
775
+ // An unloadable (schema-invalid) CN, or an id held by another kind,
776
+ // still refuses: there is no CN body to compare against.
647
777
  let id = options.id;
778
+ /** @type {object | null} */
779
+ let existingCnForReplay = null;
648
780
  if (id) {
649
- if (tree.byId.has(id) || tree.invalidDocs?.has(id)) {
650
- return rcfError({ kind: 'usage', message: `create cn: id ${id} is already taken`, documentId: id });
781
+ if (tree.invalidDocs?.has(id)) {
782
+ return rcfError({ kind: 'usage', message: `create cn: id ${id} is already taken (file on disk failed to load; repair before replaying)`, documentId: id });
783
+ }
784
+ if (tree.byId.has(id)) {
785
+ if (tree.kindById.get(id) !== 'codeNode') {
786
+ return rcfError({ kind: 'usage', message: `create cn: id ${id} is already taken`, documentId: id });
787
+ }
788
+ existingCnForReplay = tree.byId.get(id);
651
789
  }
652
790
  } else {
653
791
  id = nextIdForKind(tree, 'codeNode');
@@ -706,6 +844,11 @@ async function createCn({ projectRoot, tree, options, body, walkErrors = [] }) {
706
844
  const validation = validateDocument({ doc: finalBody, kind: 'codeNode', filePath: relPath });
707
845
  if (validation) return { ...validation, documentId: id };
708
846
 
847
+ const replay = resolveReplay({
848
+ kind: 'cn', id, existing: existingCnForReplay, candidate: finalBody, filePath: relPath,
849
+ });
850
+ if (replay) return replay;
851
+
709
852
  const absPath = pathForKindFile(projectRoot, 'codeNode', id);
710
853
  if (await fileExistsOnDisk(absPath)) {
711
854
  return rcfError({
@@ -919,12 +1062,14 @@ async function createInlineAc({ projectRoot, tree, options, body, walkErrors = [
919
1062
  const seedIndex = detectSeededPhantomAcIndex(currentAcs, parentUsId);
920
1063
  const replacingPhantom = seedIndex !== -1 && !options.id;
921
1064
 
1065
+ // Ruling R1 extension (PR 293 landing review): an explicit --id that
1066
+ // already names an AC on the parent US is a replay, resolved against
1067
+ // that AC once the would-be entry is built below.
922
1068
  let acId = options.id;
1069
+ /** @type {object | null} */
1070
+ let existingAcForReplay = null;
923
1071
  if (acId) {
924
- const existing = currentAcs.some((ac) => ac.id === acId);
925
- if (existing) {
926
- return rcfError({ kind: 'usage', message: `create ac: id ${acId} already exists on ${parentUsId}`, documentId: acId });
927
- }
1072
+ existingAcForReplay = currentAcs.find((ac) => ac.id === acId) ?? null;
928
1073
  } else if (replacingPhantom) {
929
1074
  // Reuse the seed's id (AC-<us>-1) so the operator's first AC is -1.
930
1075
  acId = currentAcs[seedIndex].id;
@@ -947,6 +1092,15 @@ async function createInlineAc({ projectRoot, tree, options, body, walkErrors = [
947
1092
  // consumer, so we only serialise when the CLI passed a value.
948
1093
  ...(body?.determinism !== undefined ? { determinism: body.determinism } : {}),
949
1094
  };
1095
+ const acReplay = resolveReplay({
1096
+ kind: 'ac',
1097
+ id: acId,
1098
+ existing: existingAcForReplay,
1099
+ candidate: acEntry,
1100
+ filePath: `rcf/user-stories/${parentUsId.toLowerCase()}.json`,
1101
+ extra: { parentId: parentUsId },
1102
+ });
1103
+ if (acReplay) return acReplay;
950
1104
  const nextAcs = replacingPhantom
951
1105
  ? currentAcs.map((ac, i) => (i === seedIndex ? acEntry : ac))
952
1106
  : [...currentAcs, acEntry];
@@ -1073,9 +1227,14 @@ async function createInlineTc({ projectRoot, tree, options, body, walkErrors = [
1073
1227
  return rcfError({ kind: 'usage', message: `create tc: parent ${parentTsId} has an unrecognised id shape` });
1074
1228
  }
1075
1229
  const tcId = options.id ?? `TC-${tsSuffix}-${slug}`;
1076
- // Slug collision fails explicitly (§D10 OQ-P4-R-1).
1077
1230
  const existing = (ts.testCases ?? []).find((tc) => tc.id === tcId);
1078
- if (existing) {
1231
+ // Ruling R1 extension (PR 293 landing review): idempotency is
1232
+ // id-carried. An explicit --id that already names a TC on the parent
1233
+ // TS is a replay, resolved against that TC once the would-be entry is
1234
+ // built below. A derived-slug collision (no --id) still refuses
1235
+ // explicitly (§D10 OQ-P4-R-1).
1236
+ const replayingTc = Boolean(options.id) && Boolean(existing);
1237
+ if (existing && !replayingTc) {
1079
1238
  return rcfError({
1080
1239
  kind: 'usage',
1081
1240
  message: `create tc: slug collision on ${tcId}, supply --slug explicitly`,
@@ -1089,6 +1248,15 @@ async function createInlineTc({ projectRoot, tree, options, body, walkErrors = [
1089
1248
  status: body?.status ?? 'pending',
1090
1249
  testPointer,
1091
1250
  };
1251
+ const tcReplay = resolveReplay({
1252
+ kind: 'tc',
1253
+ id: tcId,
1254
+ existing: replayingTc ? existing : null,
1255
+ candidate: tcEntry,
1256
+ filePath: `rcf/test-suites/${parentTsId.toLowerCase()}.json`,
1257
+ extra: { parentId: parentTsId },
1258
+ });
1259
+ if (tcReplay) return tcReplay;
1092
1260
  const nextTs = {
1093
1261
  ...ts,
1094
1262
  testCases: [...(ts.testCases ?? []), tcEntry],