rcf-lite 0.29.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (775) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-001.json +1 -1
  3. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-002.json +1 -1
  4. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-003.json +1 -1
  5. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-004.json +1 -1
  6. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-005.json +1 -1
  7. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-006.json +1 -1
  8. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-007.json +1 -1
  9. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-009.json +1 -1
  10. package/blueprints/application-account-settings/contributions/tacs/tac-2601-application-account-settings-shell.json +4 -4
  11. package/blueprints/application-account-settings/contributions/tacs/tac-2602-application-account-settings-capability-discovery.json +2 -2
  12. package/blueprints/application-account-settings/contributions/tacs/tac-2603-application-account-settings-hosted-ui-bridge.json +2 -2
  13. package/blueprints/application-account-settings/contributions/tacs/tac-2604-application-account-settings-session-store.json +7 -7
  14. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25105.json +3 -15
  15. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25106.json +2 -10
  16. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25111.json +3 -6
  17. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25112.json +4 -4
  18. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-001.json +1 -1
  19. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-002.json +1 -1
  20. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-003.json +1 -1
  21. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-004.json +1 -1
  22. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-005.json +1 -1
  23. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-006.json +1 -1
  24. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-007.json +1 -1
  25. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-008.json +1 -1
  26. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-009.json +1 -1
  27. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-014.json +1 -1
  28. package/blueprints/application-admin-console/contributions/tacs/tac-2201-application-admin-console-shell.json +4 -4
  29. package/blueprints/application-admin-console/contributions/tacs/tac-2202-application-admin-console-capability-discovery.json +7 -7
  30. package/blueprints/application-admin-console/contributions/tacs/tac-2203-application-admin-console-permission-matrix.json +2 -2
  31. package/blueprints/application-admin-console/contributions/tacs/tac-2204-application-admin-console-audit-view.json +2 -2
  32. package/blueprints/application-admin-console/contributions/tacs/tac-2214-application-admin-console-access-gated-signin-surface.json +3 -2
  33. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21107.json +2 -2
  34. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21111.json +3 -11
  35. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21112.json +4 -4
  36. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21815.json +2 -2
  37. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21816.json +2 -2
  38. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-001.json +1 -1
  39. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-002.json +1 -2
  40. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-004.json +1 -1
  41. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-008.json +1 -1
  42. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-016.json +1 -1
  43. package/blueprints/application-api-rest/contributions/tacs/tac-301-application-api-rest-request-pipeline.json +4 -4
  44. package/blueprints/application-api-rest/contributions/tacs/tac-302-application-api-rest-auth-middleware.json +4 -4
  45. package/blueprints/application-api-rest/contributions/tacs/tac-303-application-api-rest-contract-surface.json +4 -4
  46. package/blueprints/application-api-rest/contributions/tacs/tac-304-application-api-rest-resource-layer.json +4 -4
  47. package/blueprints/application-api-rest/contributions/tacs/tac-305-application-api-rest-observability.json +4 -4
  48. package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +4 -4
  49. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2102.json +1 -1
  50. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +1 -1
  51. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2104.json +4 -4
  52. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2105.json +2 -2
  53. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +1 -1
  54. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2110.json +1 -1
  55. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2111.json +1 -1
  56. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json +1 -1
  57. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json +2 -2
  58. package/blueprints/application-charts/contributions/tacs/tac-1901-application-charts-render-shell.json +4 -4
  59. package/blueprints/application-charts/contributions/tacs/tac-1902-application-charts-keyboard-traversal.json +4 -4
  60. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18105.json +1 -1
  61. package/blueprints/application-dashboard/contributions/tacs/tac-2001-application-dashboard-tile-grid.json +4 -4
  62. package/blueprints/application-dashboard/contributions/tacs/tac-2002-application-dashboard-filter-chrome.json +4 -4
  63. package/blueprints/application-dashboard/contributions/tacs/tac-2003-application-dashboard-export-handle.json +2 -2
  64. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19106.json +1 -1
  65. package/blueprints/application-datatable/contributions/tacs/tac-1801-application-datatable-shell.json +4 -4
  66. package/blueprints/application-datatable/contributions/tacs/tac-1802-application-datatable-query-adapter.json +4 -4
  67. package/blueprints/application-datatable/contributions/tacs/tac-1803-application-datatable-selection-model.json +2 -2
  68. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17101.json +1 -1
  69. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17102.json +1 -1
  70. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17103.json +1 -1
  71. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17105.json +1 -1
  72. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-001.json +1 -1
  73. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-002.json +1 -1
  74. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-003.json +1 -1
  75. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-004.json +1 -1
  76. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-005.json +2 -2
  77. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-006.json +1 -1
  78. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-007.json +2 -2
  79. package/blueprints/application-empty-error-states/contributions/tacs/tac-2301-application-empty-error-states-state-machine.json +5 -5
  80. package/blueprints/application-empty-error-states/contributions/tacs/tac-2302-application-empty-error-states-recovery-router.json +2 -2
  81. package/blueprints/application-empty-error-states/contributions/tacs/tac-2303-application-empty-error-states-offline-buffer.json +5 -5
  82. package/blueprints/application-error-handling/contributions/tacs/tac-1701-application-error-handling-boundary.json +6 -6
  83. package/blueprints/application-error-handling/contributions/tacs/tac-1702-application-error-handling-record-factory.json +4 -4
  84. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16101.json +1 -1
  85. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16107.json +4 -4
  86. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-001.json +1 -1
  87. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-002.json +1 -1
  88. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-003.json +1 -1
  89. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-004.json +1 -1
  90. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-005.json +1 -1
  91. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-006.json +2 -2
  92. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-007.json +2 -2
  93. package/blueprints/application-file-upload/contributions/tacs/tac-2401-application-file-upload-input.json +7 -7
  94. package/blueprints/application-file-upload/contributions/tacs/tac-2402-application-file-upload-transport.json +8 -8
  95. package/blueprints/application-file-upload/contributions/tacs/tac-2403-application-file-upload-progress-announcer.json +11 -11
  96. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23102.json +1 -1
  97. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23105.json +1 -1
  98. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-001.json +1 -1
  99. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-002.json +1 -1
  100. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-003.json +1 -1
  101. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-004.json +1 -1
  102. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-005.json +1 -1
  103. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-006.json +2 -2
  104. package/blueprints/application-forms-wizard/contributions/tacs/tac-2501-application-forms-wizard-task-list.json +7 -7
  105. package/blueprints/application-forms-wizard/contributions/tacs/tac-2502-application-forms-wizard-error-summary.json +4 -4
  106. package/blueprints/application-forms-wizard/contributions/tacs/tac-2503-application-forms-wizard-draft-store.json +4 -4
  107. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24101.json +1 -1
  108. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-001.json +1 -1
  109. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-002.json +1 -1
  110. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-003.json +1 -1
  111. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-004.json +1 -1
  112. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-005.json +2 -2
  113. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-006.json +2 -2
  114. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2101-application-notifications-in-app-live-region.json +6 -6
  115. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2102-application-notifications-in-app-centre.json +9 -9
  116. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2103-application-notifications-in-app-preferences.json +4 -4
  117. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20101.json +1 -1
  118. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20102.json +1 -1
  119. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20103.json +2 -2
  120. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20105.json +4 -4
  121. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-001.json +1 -1
  122. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-002.json +1 -1
  123. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-003.json +1 -1
  124. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-004.json +1 -1
  125. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-005.json +1 -1
  126. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-006.json +1 -1
  127. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2701-application-onboarding-tour-step-runner.json +4 -4
  128. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2702-application-onboarding-tour-checklist-slot.json +2 -2
  129. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2703-application-onboarding-tour-completion-store.json +2 -2
  130. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26108.json +2 -2
  131. package/blueprints/application-spa/contributions/requirements/application-spa-req-004.json +1 -2
  132. package/blueprints/application-spa/contributions/requirements/application-spa-req-007.json +1 -1
  133. package/blueprints/application-spa/contributions/requirements/application-spa-req-014.json +1 -1
  134. package/blueprints/application-spa/contributions/requirements/application-spa-req-015.json +1 -1
  135. package/blueprints/application-spa/contributions/requirements/application-spa-req-017.json +1 -1
  136. package/blueprints/application-spa/contributions/requirements/application-spa-req-018.json +1 -1
  137. package/blueprints/application-spa/contributions/tacs/tac-201-application-spa-app-shell.json +4 -4
  138. package/blueprints/application-spa/contributions/tacs/tac-202-application-spa-theme-system.json +4 -4
  139. package/blueprints/application-spa/contributions/tacs/tac-207-application-spa-token-adherence-probe.json +6 -6
  140. package/blueprints/application-spa/contributions/tacs/tac-208-application-spa-icon-adherence-probe.json +6 -6
  141. package/blueprints/application-spa/contributions/tacs/tac-209-application-spa-csp-styled-adherence-probe.json +6 -6
  142. package/blueprints/application-spa/contributions/tacs/tac-210-application-spa-external-dependency-provisioning-probe.json +8 -8
  143. package/blueprints/application-spa/contributions/tacs/tac-211-application-spa-core-flow-e2e-probe.json +8 -8
  144. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1101.json +2 -2
  145. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1102.json +1 -1
  146. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1107.json +1 -1
  147. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1117.json +1 -1
  148. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1129.json +4 -4
  149. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1130.json +4 -4
  150. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1131.json +1 -1
  151. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1132.json +6 -6
  152. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1133.json +5 -5
  153. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1134.json +2 -2
  154. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-001.json +1 -1
  155. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-002.json +1 -1
  156. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-003.json +1 -1
  157. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-004.json +1 -1
  158. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-005.json +1 -1
  159. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-006.json +1 -1
  160. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-007.json +1 -1
  161. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-008.json +1 -1
  162. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-009.json +1 -1
  163. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-010.json +1 -1
  164. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-011.json +1 -1
  165. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-012.json +1 -1
  166. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-013.json +1 -1
  167. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-014.json +1 -1
  168. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-015.json +1 -1
  169. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-016.json +1 -1
  170. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-017.json +1 -1
  171. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-018.json +1 -1
  172. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-019.json +1 -1
  173. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-020.json +1 -1
  174. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-021.json +1 -1
  175. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-022.json +1 -1
  176. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-023.json +1 -1
  177. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-701-delivery-ci-workflows-gate-runner.json +6 -6
  178. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-702-delivery-ci-workflows-gate-report.json +4 -4
  179. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-703-delivery-ci-workflows-aggregate-report.json +4 -4
  180. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-704-delivery-ci-workflows-workflow-materialiser.json +6 -6
  181. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-705-delivery-ci-workflows-release-workflow.json +6 -6
  182. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-706-delivery-ci-workflows-scheduled-audit.json +4 -4
  183. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6101.json +1 -1
  184. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6102.json +1 -1
  185. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6103.json +1 -1
  186. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6104.json +1 -1
  187. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6106.json +1 -1
  188. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6107.json +1 -1
  189. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6109.json +1 -1
  190. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6110.json +1 -1
  191. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6111.json +1 -1
  192. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6113.json +1 -1
  193. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6115.json +1 -1
  194. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6116.json +1 -1
  195. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6117.json +1 -1
  196. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6118.json +1 -1
  197. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6119.json +1 -1
  198. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6120.json +1 -1
  199. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6122.json +1 -1
  200. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6123.json +1 -1
  201. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6124.json +1 -1
  202. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-001.json +1 -1
  203. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-002.json +1 -1
  204. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-003.json +1 -1
  205. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-004.json +1 -1
  206. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-005.json +1 -1
  207. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-006.json +1 -1
  208. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-007.json +1 -1
  209. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-008.json +1 -1
  210. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-009.json +1 -1
  211. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-010.json +1 -1
  212. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-011.json +1 -1
  213. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-012.json +1 -1
  214. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-013.json +1 -1
  215. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-014.json +1 -1
  216. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1301-deploy-cloudflare-workers-deploy-adapter.json +6 -6
  217. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1302-deploy-cloudflare-workers-wrangler-manifest.json +8 -8
  218. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1303-deploy-cloudflare-workers-preview-url-resolver.json +6 -6
  219. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1304-deploy-cloudflare-workers-promote-gate.json +8 -8
  220. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1305-deploy-cloudflare-workers-served-surface-verifier.json +8 -8
  221. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1306-deploy-cloudflare-workers-deploy-ci-workflows.json +8 -8
  222. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12101.json +1 -1
  223. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12102.json +2 -2
  224. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12105.json +1 -1
  225. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12109.json +1 -1
  226. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12113.json +2 -2
  227. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12114.json +1 -1
  228. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12115.json +1 -1
  229. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-001.json +1 -1
  230. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-002.json +1 -1
  231. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-003.json +1 -1
  232. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-004.json +1 -1
  233. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-005.json +1 -1
  234. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-006.json +1 -1
  235. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3801-deploy-hetzner-server-provisioner.json +3 -2
  236. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3802-deploy-hetzner-server-manifest-schema.json +3 -2
  237. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3803-deploy-hetzner-server-cloud-init-template.json +3 -2
  238. package/blueprints/deploy-hetzner-server/contributions/tacs/tac-3804-deploy-hetzner-server-firewall-shape.json +3 -2
  239. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37101.json +4 -4
  240. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37102.json +3 -3
  241. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37103.json +4 -4
  242. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37104.json +2 -2
  243. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37105.json +2 -2
  244. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37106.json +3 -3
  245. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37107.json +2 -2
  246. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37108.json +2 -2
  247. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37109.json +2 -2
  248. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-001.json +1 -1
  249. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-002.json +1 -1
  250. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-003.json +1 -1
  251. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-004.json +1 -1
  252. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-005.json +1 -1
  253. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-006.json +1 -1
  254. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-007.json +1 -1
  255. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3501-edge-cloudflare-access-jwt-validator.json +6 -4
  256. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3502-edge-cloudflare-access-application-declaration.json +3 -2
  257. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3503-edge-cloudflare-access-policy-shape.json +3 -2
  258. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3504-edge-cloudflare-access-audit-sink.json +3 -2
  259. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34101.json +1 -1
  260. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34102.json +5 -5
  261. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34103.json +1 -1
  262. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34104.json +3 -3
  263. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34105.json +1 -1
  264. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34106.json +1 -1
  265. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34107.json +5 -5
  266. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34110.json +1 -1
  267. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-001.json +1 -1
  268. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-002.json +1 -1
  269. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-003.json +1 -1
  270. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-004.json +1 -1
  271. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-005.json +1 -1
  272. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3701-edge-cloudflare-rate-limiting-manifest-schema.json +6 -4
  273. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3702-edge-cloudflare-rate-limiting-management-surface-doc.json +3 -2
  274. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3703-edge-cloudflare-rate-limiting-drift-audit-runner.json +3 -2
  275. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36101.json +2 -2
  276. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36103.json +1 -1
  277. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36104.json +6 -6
  278. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36106.json +2 -2
  279. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-001.json +1 -1
  280. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-002.json +1 -1
  281. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-003.json +1 -1
  282. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-004.json +1 -1
  283. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-005.json +1 -1
  284. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-006.json +1 -1
  285. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-007.json +1 -1
  286. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4001-edge-cloudflare-tunnel-connector-shape.json +3 -2
  287. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4002-edge-cloudflare-tunnel-manifest-schema.json +3 -2
  288. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4003-edge-cloudflare-tunnel-access-binding.json +3 -2
  289. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4004-edge-cloudflare-tunnel-zone-and-hostname-apply.json +3 -2
  290. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39101.json +3 -3
  291. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39102.json +2 -2
  292. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39103.json +4 -4
  293. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39104.json +2 -2
  294. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39105.json +2 -2
  295. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39106.json +5 -5
  296. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39107.json +2 -2
  297. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39108.json +3 -3
  298. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39109.json +4 -4
  299. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39110.json +3 -3
  300. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-001.json +1 -1
  301. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-002.json +1 -1
  302. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-003.json +1 -1
  303. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-004.json +1 -1
  304. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-005.json +1 -1
  305. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3601-edge-cloudflare-turnstile-widget-mount.json +3 -2
  306. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3602-edge-cloudflare-turnstile-server-verifier.json +9 -6
  307. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3603-edge-cloudflare-turnstile-magic-link-hook.json +3 -2
  308. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35101.json +3 -3
  309. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35102.json +4 -4
  310. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35103.json +6 -6
  311. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35104.json +2 -2
  312. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35105.json +1 -1
  313. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-001.json +1 -1
  314. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-002.json +1 -1
  315. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-003.json +1 -1
  316. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-004.json +1 -1
  317. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-005.json +1 -1
  318. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-006.json +1 -1
  319. package/blueprints/email-smtp-resend/contributions/tacs/tac-401-email-smtp-resend-send-adapter.json +8 -8
  320. package/blueprints/email-smtp-resend/contributions/tacs/tac-402-email-smtp-resend-webhook-verifier.json +10 -10
  321. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4101.json +1 -1
  322. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4102.json +1 -1
  323. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4103.json +1 -1
  324. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4105.json +1 -1
  325. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4106.json +2 -2
  326. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-001.json +1 -1
  327. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-002.json +1 -1
  328. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-003.json +1 -1
  329. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-004.json +1 -1
  330. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-005.json +1 -1
  331. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-006.json +1 -1
  332. package/blueprints/jobs-background/contributions/tacs/tac-3101-jobs-background-job-definition.json +4 -4
  333. package/blueprints/jobs-background/contributions/tacs/tac-3102-jobs-background-scheduler.json +6 -6
  334. package/blueprints/jobs-background/contributions/tacs/tac-3103-jobs-background-run-log.json +6 -6
  335. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30101.json +1 -1
  336. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30102.json +3 -3
  337. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30103.json +1 -1
  338. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30104.json +4 -4
  339. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30105.json +1 -1
  340. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30106.json +1 -1
  341. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30107.json +1 -1
  342. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30108.json +1 -1
  343. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30109.json +1 -1
  344. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-001.json +1 -1
  345. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-002.json +1 -1
  346. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-003.json +1 -1
  347. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-004.json +1 -1
  348. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-005.json +1 -1
  349. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-006.json +1 -1
  350. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3001-messaging-queue-cloudflare-producer-facade.json +6 -6
  351. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3002-messaging-queue-cloudflare-consumer-registration.json +2 -2
  352. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3003-messaging-queue-cloudflare-event-sink.json +2 -2
  353. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29101.json +1 -1
  354. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29102.json +1 -1
  355. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29103.json +1 -1
  356. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29104.json +2 -2
  357. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29105.json +1 -1
  358. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29106.json +2 -2
  359. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29107.json +1 -1
  360. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29108.json +1 -1
  361. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-001.json +1 -1
  362. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-002.json +1 -1
  363. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-003.json +1 -1
  364. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-004.json +1 -1
  365. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-005.json +1 -1
  366. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-006.json +1 -1
  367. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-101.json +1 -1
  368. package/blueprints/object-storage-s3/contributions/tacs/tac-2901-object-storage-s3-facade.json +6 -6
  369. package/blueprints/object-storage-s3/contributions/tacs/tac-2902-object-storage-s3-multipart-uploader.json +2 -2
  370. package/blueprints/object-storage-s3/contributions/tacs/tac-2903-object-storage-s3-event-sink.json +2 -2
  371. package/blueprints/object-storage-s3/contributions/tacs/tac-2904-object-storage-s3-hetzner-endpoint-helper.json +2 -2
  372. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28101.json +1 -1
  373. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28102.json +1 -1
  374. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28103.json +2 -2
  375. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28104.json +1 -1
  376. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28105.json +2 -2
  377. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28106.json +1 -1
  378. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28110.json +1 -1
  379. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +1 -1
  380. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +1 -1
  381. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-003.json +1 -1
  382. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-004.json +1 -1
  383. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-005.json +1 -1
  384. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-006.json +1 -1
  385. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-007.json +1 -1
  386. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-008.json +1 -1
  387. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-009.json +1 -1
  388. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-010.json +1 -1
  389. package/blueprints/observability-essentials/contributions/tacs/tac-801-observability-essentials-liveness-probe.json +4 -4
  390. package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +12 -12
  391. package/blueprints/observability-essentials/contributions/tacs/tac-803-observability-essentials-status-page.json +6 -6
  392. package/blueprints/observability-essentials/contributions/tacs/tac-804-observability-essentials-notification-outcome.json +8 -8
  393. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +1 -1
  394. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7103.json +3 -3
  395. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7106.json +2 -2
  396. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7107.json +1 -1
  397. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-001.json +1 -1
  398. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-002.json +1 -1
  399. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-003.json +1 -1
  400. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-004.json +1 -1
  401. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-005.json +1 -1
  402. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-006.json +8 -2
  403. package/blueprints/observability-logging/contributions/tacs/tac-1601-observability-logging-logger-factory.json +6 -6
  404. package/blueprints/observability-logging/contributions/tacs/tac-1602-observability-logging-redaction-boundary.json +2 -2
  405. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15101.json +4 -4
  406. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15103.json +2 -2
  407. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15104.json +2 -2
  408. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15105.json +1 -1
  409. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15106.json +1 -1
  410. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15107.json +2 -2
  411. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15108.json +1 -1
  412. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15109.json +3 -3
  413. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-001.json +1 -1
  414. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-002.json +1 -1
  415. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-003.json +1 -1
  416. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-004.json +1 -1
  417. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-005.json +1 -1
  418. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-006.json +1 -1
  419. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-007.json +1 -1
  420. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-008.json +1 -1
  421. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1501-observability-probe-endpoints-profile-resolver.json +6 -6
  422. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1502-observability-probe-endpoints-handler-set.json +4 -4
  423. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1503-observability-probe-endpoints-listener-topology.json +6 -6
  424. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1504-observability-probe-endpoints-non-http-adapters.json +4 -4
  425. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14101.json +2 -2
  426. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +1 -1
  427. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14105.json +3 -3
  428. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-001.json +1 -1
  429. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-002.json +1 -1
  430. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-003.json +1 -1
  431. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-004.json +1 -1
  432. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-005.json +1 -1
  433. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-006.json +1 -1
  434. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-007.json +1 -1
  435. package/blueprints/persistence-data-d1/contributions/tacs/tac-1401-persistence-data-d1-facade.json +6 -6
  436. package/blueprints/persistence-data-d1/contributions/tacs/tac-1402-persistence-data-d1-migration-catalog.json +4 -4
  437. package/blueprints/persistence-data-d1/contributions/tacs/tac-1403-persistence-data-d1-deploy-gate.json +4 -4
  438. package/blueprints/persistence-data-d1/contributions/tacs/tac-1404-persistence-data-d1-recovery-runner.json +4 -4
  439. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13101.json +2 -2
  440. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13102.json +1 -1
  441. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13107.json +2 -2
  442. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-001.json +1 -1
  443. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-002.json +1 -1
  444. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-003.json +1 -1
  445. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-004.json +1 -1
  446. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-005.json +1 -1
  447. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-006.json +1 -1
  448. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-007.json +1 -1
  449. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2801-persistence-data-postgres-facade.json +6 -6
  450. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2802-persistence-data-postgres-migration-runner.json +4 -4
  451. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2803-persistence-data-postgres-transaction-helper.json +2 -2
  452. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2804-persistence-data-postgres-recovery-runner.json +4 -4
  453. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27101.json +1 -1
  454. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27102.json +4 -4
  455. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27103.json +1 -1
  456. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27104.json +2 -2
  457. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27105.json +1 -1
  458. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27106.json +1 -1
  459. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27107.json +1 -1
  460. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27108.json +1 -1
  461. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27109.json +1 -1
  462. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27110.json +1 -1
  463. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-001.json +1 -1
  464. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-002.json +1 -1
  465. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-003.json +1 -1
  466. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-004.json +1 -1
  467. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-005.json +1 -1
  468. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-006.json +1 -1
  469. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-007.json +1 -1
  470. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-008.json +1 -1
  471. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-009.json +1 -1
  472. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-010.json +1 -1
  473. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-011.json +1 -1
  474. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-601-persistence-data-sqlite-store.json +6 -6
  475. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-602-persistence-data-sqlite-migration-runner.json +2 -2
  476. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-603-persistence-data-sqlite-migration-catalog.json +4 -4
  477. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-604-persistence-data-sqlite-backup-runner.json +2 -2
  478. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5101.json +2 -2
  479. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5103.json +1 -1
  480. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5104.json +1 -1
  481. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5106.json +1 -1
  482. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5110.json +2 -2
  483. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5111.json +1 -1
  484. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-001.json +1 -1
  485. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-002.json +1 -1
  486. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-003.json +1 -1
  487. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-004.json +1 -1
  488. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3301-platform-cloudflare-cron-triggers-scheduled-handler.json +6 -1
  489. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3302-platform-cloudflare-cron-triggers-expression-router.json +9 -2
  490. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3303-platform-cloudflare-cron-triggers-event-sink.json +6 -1
  491. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32101.json +6 -6
  492. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32102.json +5 -5
  493. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32103.json +3 -3
  494. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32104.json +4 -4
  495. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32105.json +4 -4
  496. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32106.json +4 -4
  497. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32107.json +3 -3
  498. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-001.json +1 -1
  499. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-002.json +1 -1
  500. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-003.json +1 -1
  501. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-004.json +1 -1
  502. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-005.json +1 -1
  503. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-006.json +1 -1
  504. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-007.json +1 -1
  505. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-008.json +1 -1
  506. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3401-platform-cloudflare-durable-objects-namespace-facade.json +6 -4
  507. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3402-platform-cloudflare-durable-objects-single-cell-shape.json +6 -4
  508. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3403-platform-cloudflare-durable-objects-alarm-handler.json +6 -4
  509. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3404-platform-cloudflare-durable-objects-websocket-hub.json +6 -4
  510. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3405-platform-cloudflare-durable-objects-event-sink.json +3 -2
  511. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33101.json +5 -5
  512. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33102.json +4 -4
  513. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33103.json +5 -5
  514. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33104.json +5 -5
  515. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33105.json +5 -5
  516. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33106.json +4 -4
  517. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33107.json +3 -3
  518. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33108.json +5 -5
  519. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33109.json +3 -3
  520. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33110.json +4 -4
  521. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33111.json +3 -3
  522. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33112.json +3 -3
  523. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33113.json +5 -5
  524. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-001.json +1 -1
  525. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-002.json +1 -1
  526. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-003.json +1 -1
  527. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-004.json +1 -1
  528. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-005.json +1 -1
  529. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-006.json +1 -1
  530. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-007.json +1 -1
  531. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3201-platform-cloudflare-kv-facade.json +3 -2
  532. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3202-platform-cloudflare-kv-cache-aside.json +3 -2
  533. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3203-platform-cloudflare-kv-event-sink.json +3 -2
  534. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31101.json +4 -4
  535. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31102.json +3 -3
  536. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31103.json +4 -4
  537. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31104.json +4 -4
  538. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31105.json +4 -4
  539. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31106.json +3 -3
  540. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31107.json +3 -3
  541. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31108.json +3 -3
  542. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31109.json +4 -4
  543. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31110.json +5 -5
  544. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31111.json +5 -5
  545. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-001.json +1 -1
  546. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-002.json +1 -1
  547. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-003.json +1 -1
  548. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-004.json +1 -1
  549. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-005.json +1 -1
  550. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-006.json +1 -1
  551. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-007.json +1 -1
  552. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3901-platform-docker-compose-host-compose-layout.json +3 -2
  553. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3902-platform-docker-compose-host-secrets-mount.json +3 -2
  554. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3903-platform-docker-compose-host-healthcheck-lint.json +3 -2
  555. package/blueprints/platform-docker-compose-host/contributions/tacs/tac-3904-platform-docker-compose-host-reverse-proxy-artefact.json +3 -2
  556. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38101.json +5 -5
  557. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38102.json +4 -4
  558. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38103.json +4 -4
  559. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38104.json +4 -4
  560. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38105.json +3 -3
  561. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38106.json +3 -3
  562. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38107.json +3 -3
  563. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38108.json +3 -3
  564. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38109.json +3 -3
  565. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38110.json +3 -3
  566. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-001.json +1 -1
  567. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-002.json +1 -1
  568. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-003.json +1 -1
  569. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-004.json +1 -1
  570. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-006.json +1 -1
  571. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-010.json +1 -1
  572. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-011.json +1 -1
  573. package/blueprints/security-auth-clerk/contributions/tacs/tac-1001-security-auth-clerk-middleware.json +6 -6
  574. package/blueprints/security-auth-clerk/contributions/tacs/tac-1002-security-auth-clerk-authorisation-adapter.json +8 -3
  575. package/blueprints/security-auth-clerk/contributions/tacs/tac-1003-security-auth-clerk-session-verifier.json +8 -8
  576. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9102.json +1 -1
  577. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9108.json +1 -1
  578. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9112.json +6 -6
  579. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9113.json +6 -6
  580. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-002.json +1 -1
  581. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-003.json +1 -1
  582. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-004.json +1 -1
  583. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-005.json +1 -1
  584. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-006.json +1 -1
  585. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-011.json +1 -1
  586. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-013.json +1 -1
  587. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-014.json +1 -1
  588. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-015.json +1 -1
  589. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-016.json +1 -1
  590. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-017.json +1 -1
  591. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-018.json +1 -1
  592. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-019.json +1 -1
  593. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1201-security-auth-keycloak-discovery-client.json +10 -10
  594. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1202-security-auth-keycloak-jwt-verifier.json +8 -8
  595. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1203-security-auth-keycloak-introspection-client.json +8 -8
  596. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1204-security-auth-keycloak-provider-router.json +6 -6
  597. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1205-security-auth-keycloak-role-adapter.json +4 -4
  598. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11102.json +1 -1
  599. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11103.json +2 -2
  600. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11104.json +1 -1
  601. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11106.json +3 -3
  602. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11111.json +2 -2
  603. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11114.json +1 -1
  604. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11115.json +5 -5
  605. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11116.json +7 -7
  606. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11117.json +7 -7
  607. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11118.json +7 -7
  608. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11119.json +7 -7
  609. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11120.json +6 -6
  610. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-002.json +1 -1
  611. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-003.json +1 -1
  612. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-004.json +1 -1
  613. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-005.json +1 -1
  614. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-008.json +1 -1
  615. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-009.json +1 -1
  616. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-010.json +1 -1
  617. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-011.json +1 -1
  618. package/blueprints/security-auth-magic-link/contributions/tacs/tac-501-security-auth-magic-link-manager.json +6 -6
  619. package/blueprints/security-auth-magic-link/contributions/tacs/tac-502-security-auth-magic-link-session-manager.json +6 -6
  620. package/blueprints/security-auth-magic-link/contributions/tacs/tac-503-security-auth-magic-link-login-routes.json +10 -10
  621. package/blueprints/security-auth-magic-link/contributions/tacs/tac-504-security-auth-magic-link-email-delivery-adapter.json +2 -2
  622. package/blueprints/security-auth-magic-link/contributions/tacs/tac-505-security-auth-magic-link-principal-registry.json +2 -2
  623. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3111.json +2 -2
  624. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-002.json +1 -1
  625. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-003.json +1 -1
  626. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-005.json +1 -1
  627. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-006.json +1 -1
  628. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-008.json +1 -1
  629. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-009.json +1 -1
  630. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-011.json +1 -1
  631. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-012.json +1 -1
  632. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-013.json +1 -1
  633. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1101-security-auth-oauth2-flow-controller.json +24 -14
  634. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1102-security-auth-oauth2-provider-adapter.json +4 -4
  635. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1103-security-auth-oauth2-session-bridge.json +10 -10
  636. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1104-security-auth-oauth2-provider-selector.json +8 -3
  637. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10111.json +1 -1
  638. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10112.json +1 -1
  639. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10114.json +5 -5
  640. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-001.json +1 -1
  641. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-002.json +1 -1
  642. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-003.json +1 -1
  643. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-004.json +1 -1
  644. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-005.json +1 -1
  645. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-006.json +1 -1
  646. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-007.json +1 -1
  647. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-008.json +1 -1
  648. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-009.json +1 -1
  649. package/blueprints/security-secrets-management/contributions/tacs/tac-901-security-secrets-management-manager-client.json +8 -8
  650. package/blueprints/security-secrets-management/contributions/tacs/tac-902-security-secrets-management-manifest.json +4 -4
  651. package/blueprints/security-secrets-management/contributions/tacs/tac-903-security-secrets-management-env-reflector.json +4 -4
  652. package/blueprints/security-secrets-management/contributions/tacs/tac-904-security-secrets-management-rotation-gate.json +8 -8
  653. package/blueprints/security-secrets-management/contributions/tacs/tac-905-security-secrets-management-agent-cli.json +4 -4
  654. package/fixtures/canary-manifest.json +9 -9
  655. package/guidance/define-draft-shapes.md +15 -10
  656. package/guidance/define-litmus.md +102 -0
  657. package/guidance/manifest.json +2 -1
  658. package/package.json +1 -1
  659. package/rcf/adrs/adr-4131-gates-bite-ack-recorded-override.json +30 -0
  660. package/rcf/adrs/adr-4137-standalone-theme-persistence.json +30 -0
  661. package/rcf/adrs/adr-4138-tree-wide-checks-before-scope-shortcircuit.json +35 -0
  662. package/rcf/code-nodes/cn-753.json +19 -0
  663. package/rcf/code-nodes/cn-754.json +17 -0
  664. package/rcf/code-nodes/cn-755.json +14 -0
  665. package/rcf/code-nodes/cn-756.json +15 -0
  666. package/rcf/code-nodes/cn-757.json +21 -0
  667. package/rcf/code-nodes/cn-758.json +16 -0
  668. package/rcf/code-nodes/cn-759.json +21 -0
  669. package/rcf/code-nodes/cn-760.json +19 -0
  670. package/rcf/code-nodes/cn-761.json +16 -0
  671. package/rcf/code-nodes/cn-762.json +18 -0
  672. package/rcf/code-nodes/cn-763.json +18 -0
  673. package/rcf/code-nodes/cn-764.json +15 -0
  674. package/rcf/code-nodes/cn-765.json +23 -0
  675. package/rcf/code-nodes/cn-766.json +17 -0
  676. package/rcf/code-nodes/cn-767.json +17 -0
  677. package/rcf/code-nodes/cn-768.json +19 -0
  678. package/rcf/code-nodes/cn-769.json +17 -0
  679. package/rcf/code-nodes/cn-770.json +18 -0
  680. package/rcf/code-nodes/cn-771.json +14 -0
  681. package/rcf/code-nodes/cn-772.json +14 -0
  682. package/rcf/code-nodes/cn-773.json +16 -0
  683. package/rcf/code-nodes/cn-774.json +20 -0
  684. package/rcf/code-nodes/cn-775.json +15 -0
  685. package/rcf/code-nodes/cn-776.json +17 -0
  686. package/rcf/code-nodes/cn-777.json +21 -0
  687. package/rcf/fbs/fbs-202.json +85 -9
  688. package/rcf/fbs/fbs-203.json +12 -4
  689. package/rcf/requirements/req-002.json +2 -2
  690. package/rcf/requirements/req-173.json +2 -2
  691. package/rcf/requirements/req-174.json +2 -2
  692. package/rcf/requirements/req-175.json +2 -2
  693. package/rcf/requirements/req-177.json +31 -0
  694. package/rcf/requirements/req-178.json +31 -0
  695. package/rcf/requirements/req-179.json +31 -0
  696. package/rcf/tacs/tac-001.json +7 -7
  697. package/rcf/tacs/tac-002.json +23 -23
  698. package/rcf/tacs/tac-003.json +5 -5
  699. package/rcf/tacs/tac-004.json +9 -9
  700. package/rcf/tacs/tac-005.json +7 -7
  701. package/rcf/tacs/tac-006.json +21 -21
  702. package/rcf/tacs/tac-007.json +7 -7
  703. package/rcf/tacs/tac-008.json +7 -7
  704. package/rcf/tacs/tac-4101-feedback-cli.json +5 -5
  705. package/rcf/tacs/tac-4102-feedback-store.json +9 -9
  706. package/rcf/tacs/tac-4103-feedback-redact.json +5 -5
  707. package/rcf/tacs/tac-4104-feedback-fingerprint.json +3 -3
  708. package/rcf/tacs/tac-4105-feedback-render.json +7 -7
  709. package/rcf/tacs/tac-4106-feedback-destination.json +5 -5
  710. package/rcf/tacs/tac-4107-feedback-gh.json +7 -7
  711. package/rcf/tacs/tac-4108-feedback-hook.json +7 -7
  712. package/rcf/tacs/tac-4121-define-ledgers.json +3 -2
  713. package/rcf/tacs/tac-4122-define-gates.json +36 -3
  714. package/rcf/tacs/tac-4123-define-readiness.json +29 -3
  715. package/rcf/tacs/tac-4125-build-bundle-refuse-override-skip.json +43 -0
  716. package/rcf/tacs/tac-4126-define-validate-findings.json +32 -0
  717. package/rcf/tacs/tac-4128-define-guidance.json +8 -2
  718. package/rcf/tacs/tac-4129-define-questions.json +3 -3
  719. package/rcf/tacs/tac-4134-wespa-host-fixture.json +9 -9
  720. package/rcf/test-suites/ts-007.json +1 -1
  721. package/rcf/test-suites/ts-215.json +64 -1
  722. package/rcf/test-suites/ts-216.json +18 -2
  723. package/rcf/test-suites/ts-219.json +10 -2
  724. package/rcf/test-suites/ts-220.json +18 -2
  725. package/rcf/test-suites/ts-222.json +4 -4
  726. package/rcf/test-suites/ts-225.json +10 -2
  727. package/rcf/test-suites/ts-228.json +4 -4
  728. package/rcf/test-suites/ts-229.json +49 -3
  729. package/rcf/test-suites/ts-230.json +100 -0
  730. package/rcf/test-suites/ts-231.json +119 -0
  731. package/rcf/test-suites/ts-232.json +109 -0
  732. package/rcf/test-suites/ts-233.json +61 -0
  733. package/rcf/test-suites/ts-234.json +53 -0
  734. package/rcf/test-suites/ts-235.json +53 -0
  735. package/rcf/test-suites/ts-236.json +44 -0
  736. package/rcf/user-stories/us-17302.json +36 -1
  737. package/rcf/user-stories/us-17401.json +11 -1
  738. package/rcf/user-stories/us-17402.json +6 -1
  739. package/rcf/user-stories/us-17403.json +11 -1
  740. package/rcf/user-stories/us-17404.json +66 -0
  741. package/rcf/user-stories/us-17405.json +66 -0
  742. package/rcf/user-stories/us-17406.json +51 -0
  743. package/rcf/user-stories/us-17503.json +2 -2
  744. package/rcf/user-stories/us-17504.json +46 -0
  745. package/rcf/user-stories/us-17702.json +51 -0
  746. package/rcf/user-stories/us-17802.json +40 -0
  747. package/rcf/user-stories/us-17902.json +46 -0
  748. package/rcf/user-stories/us-205.json +6 -1
  749. package/rcf/user-stories/us-206.json +25 -4
  750. package/rcf/user-stories/us-207.json +36 -0
  751. package/releases/releases.yaml +21 -1
  752. package/src/blueprint/consistency-lint.js +72 -3
  753. package/src/cli/build.js +206 -3
  754. package/src/cli/create.js +22 -2
  755. package/src/cli/freeze.js +68 -18
  756. package/src/cli/ledger.js +96 -4
  757. package/src/cli/readiness.js +151 -36
  758. package/src/cli/validate.js +8 -0
  759. package/src/core/errors/index.js +7 -1
  760. package/src/core/store/writer.js +181 -13
  761. package/src/define/concern-catalogue.js +130 -0
  762. package/src/define/freeze-record.js +74 -0
  763. package/src/define/ledgers.js +86 -7
  764. package/src/define/probe-runner.js +55 -0
  765. package/src/define/validate-findings.js +256 -0
  766. package/src/mcp/tools.js +1 -1
  767. package/src/query/gates.js +1235 -67
  768. package/src/query/index.js +6 -1
  769. package/src/query/readiness.js +179 -2
  770. package/src/query/refuse-on-admissibility.js +137 -4
  771. package/src/ruleset/ruleset.json +35 -0
  772. package/src/view/html-page.js +14 -2
  773. package/src/view/page-init.js +149 -8
  774. package/src/view/style.css +97 -18
  775. package/src/view/view-index.js +22 -0
@@ -0,0 +1,51 @@
1
+ {
2
+ "usId": "US-17702",
3
+ "prdId": "PRD-001",
4
+ "reqId": "REQ-177",
5
+ "version": "0.1.1",
6
+ "status": "draft",
7
+ "title": "bundle refuses and skips",
8
+ "description": "User story under REQ-177 for DEFINE step 3 PR 8 (spec section 4 bundle row, section 11.7 US-17702). `rcf build bundle --next` refuses on an unfrozen tree (exit 4, message naming `rcf define readiness`); `--override \"<reason>\"` writes `freeze.override { reason, by, at }` and proceeds; on a non-empty delta the next-item compute skips re-execute FBS impacted by the delta with the reason and hands out the next unimpacted FBS; when every actionable FBS is impacted and no override is given the verb refuses with exit 4.",
9
+ "asA": "an operator closing a change",
10
+ "iWant": "`rcf build bundle --next` to refuse without a freeze record, to accept a recorded override, to skip FBS impacted by a non-empty delta and hand out the next unimpacted one, and to refuse when every actionable item is impacted and no override is given",
11
+ "soThat": "I cannot bundle a stale next item against an unfrozen tree, a hotfix path exists with a recorded reason, and the 0.29.0 output on a frozen tree with an empty delta is unchanged",
12
+ "acceptanceCriteria": [
13
+ {
14
+ "id": "AC-17702-1",
15
+ "description": "[failure] given no freeze record, when rcf build bundle --next runs, then it exits 4 naming rcf define readiness.",
16
+ "testable": true
17
+ },
18
+ {
19
+ "id": "AC-17702-2",
20
+ "description": "[happy] given --override \"hotfix\", when bundle --next runs on an unfrozen tree, then freeze.override records reason, by and at and the bundle is produced.",
21
+ "testable": true
22
+ },
23
+ {
24
+ "id": "AC-17702-3",
25
+ "description": "[happy] given a delta impacting FBS-018, when bundle --next runs, then FBS-018 is skipped with the reason and the next unimpacted FBS is handed out.",
26
+ "testable": true
27
+ },
28
+ {
29
+ "id": "AC-17702-4",
30
+ "description": "[failure] given every actionable FBS impacted and no override, when bundle --next runs, then it exits 4.",
31
+ "testable": true
32
+ },
33
+ {
34
+ "id": "AC-17702-5",
35
+ "description": "[must-not] given a frozen tree with an empty delta, when bundle --next runs, then its output is unchanged from 0.29.0.",
36
+ "testable": true
37
+ },
38
+ {
39
+ "id": "AC-17702-6",
40
+ "description": "[happy] (PR 9, TAC-4125) given a project with `git config user.email` set, when bundle --next --override \"...\" runs, then freeze.override.by is the git identity; when it is absent, GITHUB_ACTOR wins; then USER; then USERNAME; then the literal `operator` as a never-null fallback.",
41
+ "testable": true
42
+ }
43
+ ],
44
+ "tacIds": [
45
+ "TAC-4125-build-bundle-refuse-override-skip",
46
+ "TAC-4120-define-delta-and-freeze"
47
+ ],
48
+ "tags": [],
49
+ "createdAt": "2026-10-03T18:30:00Z",
50
+ "updatedAt": "2026-10-03T20:30:00Z"
51
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "usId": "US-17802",
3
+ "prdId": "PRD-001",
4
+ "reqId": "REQ-178",
5
+ "version": "0.1.0",
6
+ "status": "draft",
7
+ "title": "validate findings",
8
+ "description": "User story under REQ-178 for DEFINE step 3 PR 8 (spec section 4 validate row, section 11.7 US-17802). `rcf define validate` reports a finding and exits non-zero for an interface kind outside the closed vocabulary, a bracketed AC prefix outside the known classes, a `tacIds` naming a non-TAC and an unresolving `ownerRef` or `deliveredBy`. Absence of an AC class marker is NOT a validate finding (decision 10): the dogfood tree and every legacy tree would otherwise fail CI; D4 reports absence as the floor.",
9
+ "asA": "an author of chain documents",
10
+ "iWant": "validate to catch misuse of the four closed vocabularies (interface kind, AC class, tacIds, ownerRef / deliveredBy) at the one surface everyone runs today",
11
+ "soThat": "a typo or a wrong vocabulary value fails fast and is not left to the gates",
12
+ "acceptanceCriteria": [
13
+ {
14
+ "id": "AC-17802-1",
15
+ "description": "[failure] given an interface kind \"widget\", when validate runs, then it reports a finding and exits non-zero.",
16
+ "testable": true
17
+ },
18
+ {
19
+ "id": "AC-17802-2",
20
+ "description": "[failure] given an AC description starting \"[sometimes]\", when validate runs, then it reports a finding.",
21
+ "testable": true
22
+ },
23
+ {
24
+ "id": "AC-17802-3",
25
+ "description": "[happy] given the rcf-lite dogfood tree, when validate runs, then it is clean.",
26
+ "testable": true
27
+ },
28
+ {
29
+ "id": "AC-17802-4",
30
+ "description": "[must-not] given an AC with no bracketed prefix, when validate runs, then no finding is raised.",
31
+ "testable": true
32
+ }
33
+ ],
34
+ "tacIds": [
35
+ "TAC-4126-define-validate-findings"
36
+ ],
37
+ "tags": [],
38
+ "createdAt": "2026-10-03T18:30:00Z",
39
+ "updatedAt": "2026-10-03T18:30:00Z"
40
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "usId": "US-17902",
3
+ "prdId": "PRD-001",
4
+ "reqId": "REQ-179",
5
+ "version": "0.1.1",
6
+ "status": "draft",
7
+ "title": "NV-DL enforced",
8
+ "description": "User story under REQ-179 for DEFINE step 3 PR 8 (spec section 4 NV-DL row, section 11.7 US-17902). The rcf-lite ruleset carries NV-DL-ADM-01..05 with `refuseByDefault: true` and `overrideChannel: recordedInChain`. ADM-01 is the bundle refusal on an unfrozen tree; ADM-05 is the bundle skip of impacted FBS; ADM-02..04 are D4 and D3 findings surfaced through the admissibility wrap. `freeze.override` (bundle --override) and an `--ack` reason (readiness / freeze) satisfy `recordedInChain`. readiness compute still runs and prints under refusal; 0.29.0 informational posture on the compute is unchanged (ADR-4123).",
9
+ "asA": "an operator of the DEFINE stage gates",
10
+ "iWant": "the five NV-DL rules to refuse by default with a recorded-in-chain override channel so a build verb cannot proceed on an unfrozen tree without a documented reason",
11
+ "soThat": "the ruleset's intent (ruling-sheet item 1) is enforced in code and the readiness compute still prints its diagnostics under a refusal",
12
+ "acceptanceCriteria": [
13
+ {
14
+ "id": "AC-17902-1",
15
+ "description": "[happy] given ruleset.json, when read, then NV-DL-ADM-01 to 05 carry refuseByDefault true and overrideChannel recordedInChain.",
16
+ "testable": true
17
+ },
18
+ {
19
+ "id": "AC-17902-2",
20
+ "description": "[failure] given an unfrozen tree, when a build verb runs under the admissibility gate, then it refuses citing NV-DL-ADM-01.",
21
+ "testable": true
22
+ },
23
+ {
24
+ "id": "AC-17902-3",
25
+ "description": "[happy] given freeze.override present, when the same verb runs, then it proceeds and names the override.",
26
+ "testable": true
27
+ },
28
+ {
29
+ "id": "AC-17902-4",
30
+ "description": "[must-not] given readiness, when the gate refuses, then the compute still runs and prints (0.29.0 informational posture unchanged).",
31
+ "testable": true
32
+ },
33
+ {
34
+ "id": "AC-17902-5",
35
+ "description": "[happy] (PR 9, REQ-179 enforcement locus) given a readiness result with D4 state `failing` and a non-empty validateErrors array, when `runWithAdmissibilityGate` composes its envelope, then NV-DL-ADM-02 and NV-DL-ADM-04 appear in `defineRules` and in the refusal line alongside the NV-BL rules; a stage acknowledged at the current tree hash (freeze.gates with hash match) is not cited.",
36
+ "testable": true
37
+ }
38
+ ],
39
+ "tacIds": [
40
+ "TAC-4125-build-bundle-refuse-override-skip",
41
+ "TAC-4126-define-validate-findings"
42
+ ],
43
+ "tags": [],
44
+ "createdAt": "2026-10-03T18:30:00Z",
45
+ "updatedAt": "2026-10-03T20:30:00Z"
46
+ }
@@ -49,6 +49,11 @@
49
49
  "id": "AC-205-8",
50
50
  "description": "[must-not] Given the LookupModal, when the user types a query, picks a result or closes the modal, then no `postMessage` is sent to the parent window, no outbound network request beyond the `./index.json` fetch is made, and no search term is written to `localStorage` / `sessionStorage` / cookies.",
51
51
  "testable": true
52
+ },
53
+ {
54
+ "id": "AC-205-9",
55
+ "description": "[happy] Given the SearchButton (`.rcf-search-btn`) in the shell's `.tools` group, when it is rendered in either theme and in each of its states (default, `:hover`, `:focus-visible`, `:active`), then the computed foreground / background contrast ratio for the button text, the icon stroke against the background and the focus-ring colour against the adjacent surface meets WCAG 2.1 AA (>= 4.5:1 for the text, >= 3:1 for the icon and the focus-ring boundary) in both the light (`:root`) and dark (`:root[data-theme=\"dark\"]`) token sets.",
56
+ "testable": true
52
57
  }
53
58
  ],
54
59
  "tacIds": [
@@ -60,5 +65,5 @@
60
65
  "navigation"
61
66
  ],
62
67
  "createdAt": "2026-10-02T19:00:00Z",
63
- "updatedAt": "2026-10-02T19:00:00Z"
68
+ "updatedAt": "2026-10-04T14:00:00Z"
64
69
  }
@@ -5,10 +5,10 @@
5
5
  "version": "0.1.0",
6
6
  "status": "draft",
7
7
  "title": "wespa's embedding contract is proved by a CI host fixture",
8
- "description": "A same-origin test-host fixture served by the viewer's dev server (route `/test-host.html` behind a `--test-host` flag or an env guard; off by default so wespa's proxy allow-list is unaffected) mimics the wespa shell: a 56px header, a resizable sidebar (64px collapsed, 200-400px expanded, user-resizable live via a drag handle), a content pane carrying an `<iframe src=\"./?embed=1&theme=light\">`. The host posts `{ type: \"rcf-view-theme\", theme: \"light\"|\"dark\" }` on a toggle control; it stores no theme itself so a passing run proves the iframe reads the message. The viewer sends no outbound postMessage. Three lints run in the test suite: (1) framing lint (`GET /` returns no `X-Frame-Options`, no CSP `frame-ancestors` that forbids same-origin, and the fixture loads the iframe without a browser error); (2) target lint (no `target=\"_top\"` string in the server-rendered HTML); (3) localStorage namespace lint (every `localStorage.{setItem,getItem,removeItem}` and shared `storage.*` call site in `src/view/**` uses a key starting with `rcf-view:v1:`). See viewer UI refresh design doc section 9 and Dex's wespa requirements of 2026-10-02.",
8
+ "description": "A same-origin test-host fixture served by the viewer's dev server (route `/test-host.html` behind a `--test-host` flag or an env guard; off by default so wespa's proxy allow-list is unaffected) mimics the wespa shell: a 56px header, a resizable sidebar (64px collapsed, 200-400px expanded, user-resizable live via a drag handle), a content pane carrying an `<iframe src=\"./?embed=1&theme=light\">`. The host posts `{ type: \"rcf-view-theme\", theme: \"light\"|\"dark\" }` on a toggle control; it stores no theme itself so a passing run proves the iframe reads the message. The viewer sends no outbound postMessage. Three lints run in the test suite: (1) framing lint (`GET /` returns no `X-Frame-Options`, no CSP `frame-ancestors` that forbids same-origin, and the fixture loads the iframe without a browser error); (2) target lint (no `target=\"_top\"` string in the server-rendered HTML); (3) localStorage namespace lint (every `localStorage.{setItem,getItem,removeItem}` and shared `storage.*` call site in `src/view/**` uses a key starting with `rcf-view:v1:`). Amended 2026-10-04 (w-2026-10-04-dave-001): the viewer's own three-state theme control (Light|Dark|Auto) sits right of the SearchButton in non-embed mode, is hidden entirely under `embed=1` and in non-embed mode persists its setting under `rcf-view:v1:theme` per ADR-4137 (Dave's storage ruling 2026-10-04). See viewer UI refresh design doc section 9 and section 11 recommendation 6, and Dex's wespa requirements of 2026-10-02.",
9
9
  "asA": "Dex integrating the rcf-lite viewer behind wespa's reverse proxy",
10
- "iWant": "a CI host fixture that proves the viewer honours the embedding contract and three lints that keep framing, target='_top' and localStorage namespace in place over time",
11
- "soThat": "regressions in the embedding contract are caught in the viewer's own suite before they reach wespa",
10
+ "iWant": "a CI host fixture that proves the viewer honours the embedding contract and three lints that keep framing, target='_top' and localStorage namespace in place over time; and a visible three-state theme control in the standalone viewer that is hidden under embed=1",
11
+ "soThat": "regressions in the embedding contract are caught in the viewer's own suite before they reach wespa, and standalone viewer users can switch theme without a URL edit",
12
12
  "acceptanceCriteria": [
13
13
  {
14
14
  "id": "AC-206-1",
@@ -39,6 +39,26 @@
39
39
  "id": "AC-206-6",
40
40
  "description": "[must-not] Given the test-host fixture and the viewer page, when either is loaded, then neither posts any outbound message beyond the host's `rcf-view-theme`; the viewer sends no `postMessage` of any shape, and the test-host adds no new postMessage shape.",
41
41
  "testable": true
42
+ },
43
+ {
44
+ "id": "AC-206-7",
45
+ "description": "[happy] Given the standalone viewer loaded without `embed=1`, when the shell paints, then a three-state theme control (`role=\"group\"`, three buttons Light|Dark|Auto with `aria-pressed`) renders in the header's `.tools` group right of the SearchButton; when a button is pressed, `<html data-theme>` is set to `light` or `dark` (or the attribute is removed for Auto so the `prefers-color-scheme` media query decides) live without a reload, and the pressed button's `aria-pressed` becomes `true` while the others become `false`.",
46
+ "testable": true
47
+ },
48
+ {
49
+ "id": "AC-206-8",
50
+ "description": "[happy] Given the standalone (non-embed) viewer, when a theme button is pressed, then the chosen value (`light`, `dark` or `auto`) is written to `localStorage['rcf-view:v1:theme']`; on the next page load the stored value is reapplied; the boot precedence is `?theme=` wins first, then the stored value, then the default (`auto`); and the postMessage `rcf-view-theme` listener still applies live but writes nothing to the stored key.",
51
+ "testable": true
52
+ },
53
+ {
54
+ "id": "AC-206-9",
55
+ "description": "[must-not] Given the viewer loaded with `?embed=1`, when the shell paints, then the three-state theme control is absent from the DOM entirely (no `[data-rcf-theme-control]` element rendered, not merely hidden by CSS), and no read or write of `localStorage['rcf-view:v1:theme']` happens on load, on a postMessage theme change, or on any user action inside the viewer.",
56
+ "testable": true
57
+ },
58
+ {
59
+ "id": "AC-206-10",
60
+ "description": "[happy] Given the standalone viewer with a stored value `rcf-view:v1:theme = dark`, when the URL carries `?theme=light`, then on load `<html data-theme>` is `light` (the explicit query wins) and the Light button is pressed; the stored value is left as `dark` and is reused on the next load without a `?theme=` query.",
61
+ "testable": true
42
62
  }
43
63
  ],
44
64
  "tacIds": [
@@ -47,8 +67,9 @@
47
67
  "tags": [
48
68
  "view",
49
69
  "embedding",
70
+ "theme",
50
71
  "lint"
51
72
  ],
52
73
  "createdAt": "2026-10-02T20:00:00Z",
53
- "updatedAt": "2026-10-02T20:00:00Z"
74
+ "updatedAt": "2026-10-04T14:00:00Z"
54
75
  }
@@ -0,0 +1,36 @@
1
+ {
2
+ "usId": "US-207",
3
+ "prdId": "PRD-001",
4
+ "reqId": "REQ-002",
5
+ "version": "0.1.0",
6
+ "status": "draft",
7
+ "title": "Every viewer text and control colour pair meets WCAG 2.1 AA in both themes",
8
+ "description": "A static CSS-contrast audit test parses `packages/rcf-lite/src/view/style.css`, resolves the `--sv-*` custom properties for the light (`:root`) and dark (`:root[data-theme=\"dark\"]`) token blocks, and enumerates every rule that sets `color` together with a reachable `background` / `background-color` (own rule, then the nearest ancestor surface token, default `--sv-canvas` page background). Each pair is enumerated in both themes and across every reachable state variant: default, `:hover`, `:focus`, `:focus-visible`, `:active`, `[aria-pressed=\"true\"]`, `[aria-selected=\"true\"]`, `.is-active`, `:disabled`. For each pair the WCAG relative-luminance contrast ratio is computed and asserted against the WCAG 2.1 AA thresholds (>= 4.5:1 for normal text, >= 3:1 for large text and non-text UI boundaries per WCAG 1.4.3 and 1.4.11). Pairs that cannot be resolved statically (gradients, rgba over an unknown background) are computed against the two most likely surfaces (`--sv-canvas` and the ancestor surface token) and recorded as approximate rather than skipped. The test emits a BEFORE/AFTER table under `./output/contrast-report.md` and refuses the suite on any failing pair. Scope covers the whole viewer shell, every tab, components, SearchButton and LookupModal, Readiness, Requirements, Architecture, Build (Specs and DAG), ID lookup; Mermaid and Product Map themed palettes are audited on a best-effort basis and anything bound to a third-party default is listed as a known gap with its ratio. See viewer UI refresh design doc section 9 (theme) and Baz's 2026-10-04 review (`w-2026-10-04-dave-001`).",
9
+ "asA": "an engineer or reviewer looking at the review surface in either theme",
10
+ "iWant": "every text and control colour pair in the viewer to meet WCAG 2.1 AA in both themes, pinned by a test that fails the suite when a new rule breaks the floor",
11
+ "soThat": "the review surface stays readable in both themes and nobody has to re-do the audit by hand on every CSS change",
12
+ "acceptanceCriteria": [
13
+ {
14
+ "id": "AC-207-1",
15
+ "description": "[happy] Given the viewer stylesheet `src/view/style.css` and the two token blocks (`:root` and `:root[data-theme=\"dark\"]`), when the contrast test runs, then it enumerates every CSS rule that sets `color` (and every state rule merged over its base selector, so a state that changes only the background is paired with the inherited colour) paired with every reachable background (own rule, nearest ancestor surface token, page background `--sv-canvas`) and every state variant (default, `:hover`, `:focus`, `:focus-visible`, `:active`, `[aria-pressed=\"true\"]`, `[aria-selected=\"true\"]`, `.is-active`, `:disabled`), computes the WCAG relative-luminance contrast ratio for each, and asserts >= 4.5:1 for text, >= 3:1 for large text (>= 18.66px bold or >= 24px) and for non-text UI boundaries (control borders and outlines, focus rings against the adjacent colour, each enumerated as its own pair) per WCAG 1.4.3 and 1.4.11 in both the light and dark token sets.",
16
+ "testable": true
17
+ },
18
+ {
19
+ "id": "AC-207-2",
20
+ "description": "[failure] Given a contrast pair that falls below the applicable threshold, when the test runs, then the failure message names the selector, state, theme, foreground colour, background colour, computed ratio and the threshold applied, and the test exits non-zero so the suite blocks a merge that drops a pair below AA.",
21
+ "testable": true
22
+ }
23
+ ],
24
+ "tacIds": [
25
+ "TAC-4134-wespa-host-fixture"
26
+ ],
27
+ "tags": [
28
+ "view",
29
+ "contrast",
30
+ "accessibility",
31
+ "a11y",
32
+ "theme"
33
+ ],
34
+ "createdAt": "2026-10-04T14:00:00Z",
35
+ "updatedAt": "2026-10-05T12:30:00Z"
36
+ }
@@ -40,8 +40,28 @@
40
40
  # `npm install rcf-lite`.
41
41
 
42
42
  feedVersion: 1
43
- latest: "0.29.0"
43
+ latest: "0.31.0"
44
44
  releases:
45
+ - version: "0.31.0"
46
+ date: "2026-10-05"
47
+ breaking: true
48
+ headlines:
49
+ - "rcf-lite 0.31.0 gives the viewer a Light, Dark and Auto theme control in standalone mode and brings its text and control colours up to WCAG AA contrast in both themes, with a test that blocks any regression. Under embed=1 the control is absent, nothing is stored and the rcf-view-theme message contract is unchanged."
50
+ - "DEFINE step 3 rulings R1 to R13 land: tree-wide readiness checks now run before any scope short-circuit, so a narrowed scope still reports a draft marker, an unjoined core entity, an uncited standards pack, a missing Deploy ADR or an empty security or operational section anywhere in the tree. A stage whose scope is empty but whose tree-wide check fails now reads failing rather than not applicable, and the draft-settled check is tree-wide."
51
+ - "Write-backs that carry an id are idempotent: rcf define create <kind> --id and rcf define ledger <name> add --id exit 0 and write nothing when the same id is replayed with the same content, and exit 3 naming the differing fields when the content differs."
52
+ minAgentAction: null
53
+ notesUrl: "https://stravica.ai/docs/rcf/changelog/"
54
+
55
+ - version: "0.30.0"
56
+ date: "2026-10-03"
57
+ breaking: true
58
+ headlines:
59
+ - "rcf-lite 0.30.0 lands the DEFINE step 3 gates bite in one release. Readiness --check now exits 4 on a failing D3, D5 or D6 at the current tree hash and clears with --ack <gate>=<reason> on freeze.gates (D3/D5/D6 only; decision 9). rcf build bundle --next now refuses on an unfrozen tree with exit 4 and clears with --override \"<reason>\" writing freeze.override { reason, by, at }; freeze.override.by is resolved by the preference order git user.email -> GITHUB_ACTOR -> USER -> USERNAME -> operator. Impacted re-execute FBS are skipped with the reason on stderr; when every actionable FBS is impacted and no override is given the verb also exits 4."
60
+ - "rcf define validate now exits 3 on four new finding kinds: an interface kind outside the closed vocabulary, a bracketed AC class prefix outside the five known classes, a tacIds naming a non-TAC, and an unresolving ownerRef or object-form deliveredBy. R11 widens the ownerRef and object-form deliveredBy field grammar to every bracket path on the owning TAC or ADR (interfaces[<name>], responsibilities[<n>], dependencies[<name>], alternativesConsidered[<n>]) plus a bare schema field name; dotted grammar is refused and the finding names the dotted field. The pre-PR 9 validate silently skipped the object form of deliveredBy; it is now checked. Absence of an AC class marker is not a finding (D4 reports absence as the floor)."
61
+ - "NV-DL-ADM-01 through 05 flip to refuseByDefault with overrideChannel: recordedInChain. Per-rule enforcement locus and override channel: ADM-01 bundle refuses without a freeze (override: --override); ADM-02 D4 stories floor findings (override: freeze.override only; D4 is not ackable per decision 9; ruling R12 2026-10-03); ADM-03 D3 shapes bite findings (override: --ack on freeze.gates); ADM-04 validate finding set (override: a chain-document correction committed to git); ADM-05 bundle all-impacted refusal (override: --override). The admissibility wrap surfaces ADM-02, ADM-03 and ADM-04 alongside the NV-BL rules on readiness and freeze, which stay informational on the compute. The blueprint shelf is clean under R11 after the sweep (31 dotted-to-bracket rewrites, 493 dead-bracket collapses, 12 ownerRef / deliveredBy drops); the sweep script is re-runnable in dry-run mode on a consumer's own tree."
62
+ minAgentAction: null
63
+ notesUrl: "https://stravica.ai/docs/rcf/changelog/"
64
+
45
65
  - version: "0.29.0"
46
66
  date: "2026-10-03"
47
67
  breaking: true
@@ -319,9 +319,16 @@ export function runPass2(input) {
319
319
  continue;
320
320
  }
321
321
  const carried = collectTacSurfaceText(target).toLowerCase();
322
- const field = typeof delivery.field === 'string' ? delivery.field.toLowerCase() : '';
323
- const fieldTail = field ? field.split('.').pop() : '';
324
- if (fieldTail && !carried.includes(fieldTail)) {
322
+ const field = typeof delivery.field === 'string' ? delivery.field : '';
323
+ const fieldTail = extractDeliveryFieldTail(field);
324
+ // R11 (spec section 17, PR 9): a bare schema field name
325
+ // (`responsibilities`, `interfaces`, `purpose`, `decision`,
326
+ // etc.) resolves on the owner by presence; the lint treats
327
+ // these as covered by the surface text when the owner carries
328
+ // a non-empty value under that key. Bracket forms
329
+ // (`interfaces[<name>]`, `responsibilities[<n>]`) are parsed
330
+ // to their inner key for the carried-text match.
331
+ if (fieldTail && !carried.includes(fieldTail.toLowerCase())) {
325
332
  findings.push({
326
333
  id: `pass2-delivery-field-missing-${rid}-${delivery.tacId}`, pass: 'pass2', kind: 'reqDeliveryNotCarried',
327
334
  subject: rid, refs: [rid, delivery.tacId, fieldTail],
@@ -347,6 +354,68 @@ function collectTacSurfaceText(tac) {
347
354
  return parts.join(' ');
348
355
  }
349
356
 
357
+ /**
358
+ * R11 (spec section 17, PR 9): parse `deliveredBy.field` into the
359
+ * tail the carried-text match should see.
360
+ *
361
+ * - `interfaces[loan]` -> `loan` (bracket inner)
362
+ * - `responsibilities[verify]` -> `verify` (bracket inner)
363
+ * - `responsibilities[0]` -> `` (bare integer index
364
+ * resolves on the array;
365
+ * nothing to match)
366
+ * - bare `responsibilities`,
367
+ * `interfaces`, `purpose`,
368
+ * `decision`, `internalStructure`, ... -> `` (bare schema field;
369
+ * covered by the
370
+ * owner's presence
371
+ * alone -- the
372
+ * pre-PR 9 `.pop()`
373
+ * on a dotted form
374
+ * is preserved for
375
+ * legacy dotted
376
+ * pointers that have
377
+ * not yet been
378
+ * swept)
379
+ * - legacy dotted `interfaces.loan`
380
+ * or `decision.retryBackoff` -> `loan` / `retryBackoff`
381
+ *
382
+ * The returned tail is empty when nothing meaningful remains to
383
+ * match; callers skip the carried-text check in that case.
384
+ *
385
+ * @param {string} field
386
+ * @returns {string}
387
+ */
388
+ function extractDeliveryFieldTail(field) {
389
+ if (typeof field !== 'string' || field.length === 0) return '';
390
+ // Bracket form: `<root>[<inner>]`.
391
+ const bracket = field.match(/^[A-Za-z0-9_]+\[([^\]]+)\]$/);
392
+ if (bracket) {
393
+ const inner = bracket[1];
394
+ // A bare integer index on responsibilities / alternativesConsidered
395
+ // resolves by position; there is nothing semantic to match on the
396
+ // surface text, so skip the check (the resolver has already
397
+ // confirmed the index exists).
398
+ if (/^\d+$/.test(inner)) return '';
399
+ return inner;
400
+ }
401
+ // Legacy dotted form (`interfaces.loan`, `decision.retryBackoff`,
402
+ // `responsibilities.verify`): the tail is the last dotted segment.
403
+ if (field.includes('.')) return field.split('.').pop();
404
+ // Bare schema field name: resolves on the owner by presence; no
405
+ // tail to match.
406
+ const KNOWN_BARE_FIELDS = new Set([
407
+ 'purpose', 'internalStructure', 'tradeoffs', 'notes', 'name',
408
+ 'responsibilities', 'interfaces', 'dependencies',
409
+ 'decision', 'context', 'consequences', 'title',
410
+ 'alternativesConsidered', 'description',
411
+ ]);
412
+ if (KNOWN_BARE_FIELDS.has(field)) return '';
413
+ // Anything else: fall through to the pre-PR 9 behaviour and match
414
+ // the whole thing against the carried text. This covers composite
415
+ // free-form tokens the sweep may not have reached.
416
+ return field;
417
+ }
418
+
350
419
  /**
351
420
  * Load a blueprint from disk into the shape the passes consume.
352
421
  *
package/src/cli/build.js CHANGED
@@ -18,6 +18,10 @@
18
18
 
19
19
  import { writeFile } from 'node:fs/promises';
20
20
  import { parseArgs } from 'node:util';
21
+ import { execFile } from 'node:child_process';
22
+ import { promisify } from 'node:util';
23
+
24
+ const execFileAsync = promisify(execFile);
21
25
 
22
26
  import { formatErrors, isRcfError, rcfError, writeUnexpectedFailure } from '#core/errors';
23
27
  import { updateDocument, walkTree } from '#core/store';
@@ -41,6 +45,14 @@ import { firstBaselineDisagreement } from '../design/index.js';
41
45
  import { writeBrowserVerificationAck } from '../browser-verify/index.js';
42
46
  // Track C+D §5.4 Stage-1 refusal gate.
43
47
  import { fbsRefusalForOpenSweep } from '../req-baseline/gate.js';
48
+ // 0.30.0 PR 8 (REQ-177 / TAC-4125): bundle --next freeze gate.
49
+ import { computeDelta } from '../query/delta.js';
50
+ import { computeImpact } from '../query/impact.js';
51
+ import { loadAllLedgers } from '../define/ledgers.js';
52
+ import {
53
+ applyOverrideToFreezeRecord,
54
+ loadFreezeRecord,
55
+ } from '../define/freeze-record.js';
44
56
 
45
57
  const OPTION_SPEC = {
46
58
  next: { type: 'boolean' },
@@ -60,6 +72,12 @@ const OPTION_SPEC = {
60
72
  // browserVerification record.
61
73
  'accept-block': { type: 'boolean' },
62
74
  reason: { type: 'string' },
75
+ // 0.30.0 PR 8 (REQ-177, AC-17702-2 / AC-17702-4). Bundle --next with
76
+ // --override "<reason>" writes freeze.override { reason, by, at } and
77
+ // proceeds; without --override the verb refuses on an unfrozen tree
78
+ // (AC-17702-1) and when every actionable FBS is impacted by the
79
+ // delta (AC-17702-4).
80
+ override: { type: 'string' },
63
81
  };
64
82
 
65
83
  export const HELP = `Usage: rcf build <verb> [options]
@@ -96,6 +114,11 @@ Options (bundle):
96
114
  --strict Refuse (exit 4) a bundle for a blocked item;
97
115
  no effect with --next (it never selects
98
116
  blocked items)
117
+ --override "<reason>" With --next: proceed on an unfrozen tree or
118
+ an all-impacted delta, recording
119
+ freeze.override { reason, by, at } (REQ-177,
120
+ 0.30.0 PR 8). The reason must be a
121
+ non-empty string.
99
122
 
100
123
  Options (queue):
101
124
  --format <format> md (default) | json
@@ -292,7 +315,10 @@ export async function main(argv, deps = {}) {
292
315
  return 0;
293
316
  }
294
317
  if (mode === 'next') {
295
- return await emitNext({ tree, format, io });
318
+ return await emitNext({
319
+ tree, projectRoot, format, io,
320
+ overrideReason: typeof flags.override === 'string' ? flags.override : null,
321
+ });
296
322
  }
297
323
  return await emitBundle({
298
324
  tree, fbsId: positional, format, strict: Boolean(flags.strict), io,
@@ -356,9 +382,186 @@ async function emitBundle({ tree, fbsId, format, strict, io }) {
356
382
  return await emitToSink(output, io);
357
383
  }
358
384
 
359
- async function emitNext({ tree, format, io }) {
385
+ /**
386
+ * 0.30.0 PR 9 (TAC-4125; AC-17702-6): resolve the author identity for
387
+ * `freeze.override.by`. Preference order (first non-empty wins):
388
+ *
389
+ * 1. `git config user.email` under `projectRoot` (the identity git
390
+ * itself would attribute an override commit to; CI usually sets
391
+ * this through its own git config step).
392
+ * 2. `GITHUB_ACTOR` (set by GitHub Actions on every run so a CI
393
+ * override is attributed to the actor who triggered the workflow,
394
+ * even when no git identity is configured).
395
+ * 3. `USER` or `USERNAME` (local shell identity on Unix / Windows).
396
+ * 4. The literal string `operator` (never-null fallback so the write
397
+ * path cannot blow up on a stripped-down container).
398
+ *
399
+ * Pure of side effects beyond the one `git config` read; the git call
400
+ * is bounded to a short argv and never writes. Errors from `git
401
+ * config` (no `.git`, no git binary, missing key) fall through to the
402
+ * next arm silently; the resolution's shape is a single string.
403
+ *
404
+ * @param {object} args
405
+ * @param {string} args.projectRoot
406
+ * @returns {Promise<string>}
407
+ */
408
+ export async function resolveOverrideBy({ projectRoot }) {
409
+ // 1. git config user.email (bounded; refuses to log on failure).
410
+ try {
411
+ const { stdout } = await execFileAsync(
412
+ 'git', ['config', '--get', 'user.email'],
413
+ { cwd: projectRoot, encoding: 'utf8', timeout: 2000 },
414
+ );
415
+ const email = stdout.trim();
416
+ if (email.length > 0) return email;
417
+ } catch {
418
+ // Fall through to the environment arms.
419
+ }
420
+ // Env arms are trimmed so a whitespace-only value does not win
421
+ // over the next arm (codex review 2026-10-03, P2).
422
+ const envArm = (key) => {
423
+ const v = process.env[key];
424
+ if (typeof v !== 'string') return null;
425
+ const t = v.trim();
426
+ return t.length > 0 ? t : null;
427
+ };
428
+ // 2. GITHUB_ACTOR (GitHub Actions).
429
+ const actor = envArm('GITHUB_ACTOR');
430
+ if (actor) return actor;
431
+ // 3. USER or USERNAME.
432
+ const user = envArm('USER');
433
+ if (user) return user;
434
+ const username = envArm('USERNAME');
435
+ if (username) return username;
436
+ // 4. Never-null fallback.
437
+ return 'operator';
438
+ }
439
+
440
+ /**
441
+ * 0.30.0 PR 8 (REQ-177, TAC-4125): freeze gate for `bundle --next`.
442
+ * Loads the freeze record and the computed delta, writes
443
+ * freeze.override when --override "<reason>" is given, computes the
444
+ * set of re-execute FBS impacted by the delta, and returns a refusal
445
+ * when the tree is unfrozen and no override is given.
446
+ *
447
+ * Pure of CLI I/O: it writes freeze.override through the freeze-record
448
+ * module (which is the normal write path) but prints no output; the
449
+ * caller surfaces the refusal and the override line.
450
+ *
451
+ * @param {object} args
452
+ * @param {object} args.tree - walker tree.
453
+ * @param {string} args.projectRoot
454
+ * @param {string|null} args.overrideReason - the --override flag value, or null when absent.
455
+ * @returns {Promise<{ ok: true, impactedFbsIds: Set<string>, override: {reason:string, by:string, at:string}|null } | { ok: false, exitCode: 2|4, message: string }>}
456
+ */
457
+ async function enforceBundleNextFreezeGate({ tree, projectRoot, overrideReason }) {
458
+ if (overrideReason !== null && (typeof overrideReason !== 'string' || overrideReason.length === 0)) {
459
+ return {
460
+ ok: false,
461
+ exitCode: 2,
462
+ message: 'build bundle --next: --override requires a non-empty reason (e.g. --override "hotfix")',
463
+ };
464
+ }
465
+ const [freeze, ledgers] = await Promise.all([
466
+ loadFreezeRecord({ projectRoot }),
467
+ loadAllLedgers({ projectRoot }),
468
+ ]);
469
+ const delta = computeDelta(tree, freeze, ledgers);
470
+ if (!delta.frozen && overrideReason === null) {
471
+ return {
472
+ ok: false,
473
+ exitCode: 4,
474
+ message:
475
+ 'build bundle --next: refused on an unfrozen tree. Run `rcf define readiness` and close the change with `rcf define freeze`, '
476
+ + 'or re-run with --override "<reason>" to record `freeze.override { reason, by, at }` and proceed (NV-DL-ADM-01).',
477
+ };
478
+ }
479
+ let appliedOverride = null;
480
+ if (overrideReason !== null) {
481
+ const at = new Date().toISOString();
482
+ const by = await resolveOverrideBy({ projectRoot });
483
+ const { record } = await applyOverrideToFreezeRecord({
484
+ projectRoot,
485
+ reason: overrideReason,
486
+ by,
487
+ at,
488
+ docHashes: delta.currentDocHashes ?? {},
489
+ treeHash: delta.currentTreeHash,
490
+ briefStatements: ledgers?.brief?.statements?.length ?? 0,
491
+ });
492
+ appliedOverride = record.override;
493
+ }
494
+ // Compute impacted FBS set when the tree is frozen (unfrozen trees
495
+ // have no base to compare against; AC-17702-5 governs that path).
496
+ // "Impacted" means an FBS that must be re-executed because its own
497
+ // definition changed OR because it fans out from a changed/added
498
+ // pivot (REQ, US, AC, TAC, ADR) via expandFbsDependents.
499
+ const impactedFbsIds = new Set();
500
+ if (delta.frozen) {
501
+ const pivotIds = [
502
+ ...delta.changed.filter((id) => !id.startsWith('ledger:')),
503
+ ...delta.added.filter((id) => !id.startsWith('ledger:')),
504
+ ];
505
+ // A changed/added FBS is itself impacted.
506
+ for (const id of pivotIds) {
507
+ if (typeof id === 'string' && id.startsWith('FBS-')) impactedFbsIds.add(id);
508
+ }
509
+ const seen = new Set();
510
+ for (const id of pivotIds) {
511
+ const impact = computeImpact(tree, { id });
512
+ if (!impact.found || !Array.isArray(impact.nodes)) continue;
513
+ for (const node of impact.nodes) {
514
+ if (seen.has(node.id)) continue;
515
+ seen.add(node.id);
516
+ if (node.kind === 'fbs' && node.role !== 'pivot' && node.actionNeeded === 're-execute') {
517
+ impactedFbsIds.add(node.id);
518
+ }
519
+ }
520
+ }
521
+ }
522
+ return { ok: true, impactedFbsIds, override: appliedOverride };
523
+ }
524
+
525
+ async function emitNext({ tree, projectRoot, format, io, overrideReason = null }) {
526
+ // 0.30.0 PR 8 (REQ-177 / TAC-4125): refuse without a freeze record,
527
+ // write freeze.override on --override "<reason>" and proceed, skip
528
+ // impacted FBS from the next-item selection.
529
+ const gate = await enforceBundleNextFreezeGate({
530
+ tree, projectRoot, overrideReason,
531
+ });
532
+ if (!gate.ok) {
533
+ io.stderr.write(`[error] ${gate.message}\n`);
534
+ return gate.exitCode;
535
+ }
536
+ if (gate.override) {
537
+ const o = gate.override;
538
+ io.stderr.write(`[info] build bundle --next: freeze.override recorded (reason=${JSON.stringify(o.reason)}, by=${o.by}, at=${o.at}).\n`);
539
+ }
540
+ // Skip FBS impacted by a non-empty delta; the next-item compute
541
+ // walks the queue from the top and the first unimpacted actionable
542
+ // FBS wins. Every skipped FBS is named on stderr with the reason.
360
543
  const queue = computeQueue(tree);
361
- const next = selectNext(queue);
544
+ let next = null;
545
+ if (gate.impactedFbsIds.size === 0) {
546
+ next = selectNext(queue);
547
+ } else {
548
+ for (const item of queue.items) {
549
+ if (item.state !== 'actionable') continue;
550
+ if (gate.impactedFbsIds.has(item.fbsId)) {
551
+ io.stderr.write(`[info] build bundle --next: skipping ${item.fbsId} (impacted by the delta; re-freeze or re-execute first).\n`);
552
+ continue;
553
+ }
554
+ next = { fbsId: item.fbsId };
555
+ break;
556
+ }
557
+ }
558
+ if (!next && gate.impactedFbsIds.size > 0 && overrideReason === null) {
559
+ io.stderr.write(
560
+ '[error] build bundle --next: refused because every actionable FBS is impacted by the delta. '
561
+ + 'Re-run with --override "<reason>" to record `freeze.override { reason, by, at }` and proceed (NV-DL-ADM-05).\n',
562
+ );
563
+ return 4;
564
+ }
362
565
  if (next) {
363
566
  // Track C+D §5.4: Stage-1 (Define) refuses to enter Build for any
364
567
  // FBS binding an AC on a US that still has open baseline sweep