rcf-lite 0.25.0 → 0.27.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 (1192) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/blueprints/application-account-settings/CHANGELOG.md +35 -2
  3. package/blueprints/application-account-settings/README.md +10 -10
  4. package/blueprints/application-account-settings/blueprint.json +23 -3
  5. package/blueprints/application-account-settings/contributions/adrs/adr-2601-application-account-settings-capability-vocabulary.json +1 -1
  6. package/blueprints/application-account-settings/contributions/adrs/adr-2604-application-account-settings-reauth-window.json +5 -5
  7. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-001.json +6 -2
  8. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-002.json +4 -0
  9. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-003.json +7 -3
  10. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-004.json +4 -0
  11. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-005.json +4 -0
  12. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-006.json +6 -2
  13. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-007.json +22 -0
  14. package/blueprints/application-account-settings/contributions/requirements/application-account-settings-req-009.json +21 -0
  15. package/blueprints/application-account-settings/contributions/tacs/tac-2601-application-account-settings-shell.json +8 -4
  16. package/blueprints/application-account-settings/contributions/tacs/tac-2602-application-account-settings-capability-discovery.json +3 -3
  17. package/blueprints/application-account-settings/contributions/tacs/tac-2604-application-account-settings-session-store.json +13 -7
  18. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25101.json +19 -3
  19. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25102.json +27 -2
  20. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25103.json +13 -2
  21. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25104.json +23 -2
  22. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25105.json +51 -3
  23. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25106.json +25 -6
  24. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25107.json +13 -2
  25. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25108.json +27 -2
  26. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25109.json +4 -2
  27. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25110.json +13 -2
  28. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25111.json +71 -0
  29. package/blueprints/application-account-settings/contributions/user-stories/application-account-settings-us-25112.json +77 -0
  30. package/blueprints/application-account-settings/docs/topics.md +5 -5
  31. package/blueprints/application-account-settings/guide/application-account-settings.md +1 -1
  32. package/blueprints/application-account-settings/probe-packs/application-account-settings.pack.mjs +2 -2
  33. package/blueprints/application-admin-console/CHANGELOG.md +42 -6
  34. package/blueprints/application-admin-console/README.md +4 -4
  35. package/blueprints/application-admin-console/blueprint.json +31 -1
  36. package/blueprints/application-admin-console/contributions/adrs/adr-2201-application-admin-console-capability-vocabulary.json +2 -2
  37. package/blueprints/application-admin-console/contributions/adrs/adr-2203-application-admin-console-invite-transport.json +5 -5
  38. package/blueprints/application-admin-console/contributions/adrs/adr-2204-application-admin-console-audit-retention.json +7 -7
  39. package/blueprints/application-admin-console/contributions/adrs/adr-2214-application-admin-console-consume-zero-trust-gate.json +3 -3
  40. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-001.json +4 -0
  41. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-002.json +5 -1
  42. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-003.json +4 -0
  43. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-004.json +4 -0
  44. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-005.json +6 -2
  45. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-006.json +4 -0
  46. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-007.json +22 -0
  47. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-008.json +22 -0
  48. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-009.json +21 -0
  49. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-014.json +6 -2
  50. package/blueprints/application-admin-console/contributions/tacs/tac-2201-application-admin-console-shell.json +9 -7
  51. package/blueprints/application-admin-console/contributions/tacs/tac-2202-application-admin-console-capability-discovery.json +6 -6
  52. package/blueprints/application-admin-console/contributions/tacs/tac-2204-application-admin-console-audit-view.json +1 -1
  53. package/blueprints/application-admin-console/contributions/tacs/tac-2214-application-admin-console-access-gated-signin-surface.json +5 -5
  54. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21101.json +4 -2
  55. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21102.json +4 -2
  56. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21103.json +10 -4
  57. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21104.json +13 -2
  58. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21105.json +15 -3
  59. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21106.json +35 -2
  60. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21107.json +22 -3
  61. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21108.json +4 -2
  62. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21109.json +4 -2
  63. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21110.json +68 -0
  64. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21111.json +76 -0
  65. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21112.json +77 -0
  66. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21815.json +21 -2
  67. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21816.json +21 -2
  68. package/blueprints/application-admin-console/docs/topics.md +1 -1
  69. package/blueprints/application-admin-console/guide/application-admin-console.md +3 -3
  70. package/blueprints/application-admin-console/probe-packs/application-admin-console.pack.mjs +2 -2
  71. package/blueprints/application-api-rest/CHANGELOG.md +26 -0
  72. package/blueprints/application-api-rest/assets/samples/request-response-pairs.md +2 -0
  73. package/blueprints/application-api-rest/blueprint.json +1 -1
  74. package/blueprints/application-api-rest/contributions/adrs/adr-301-application-api-rest-error-envelope.json +1 -1
  75. package/blueprints/application-api-rest/contributions/adrs/adr-302-application-api-rest-auth-model.json +1 -1
  76. package/blueprints/application-api-rest/contributions/adrs/adr-303-application-api-rest-api-versioning.json +1 -1
  77. package/blueprints/application-api-rest/contributions/adrs/adr-304-application-api-rest-logging.json +1 -1
  78. package/blueprints/application-api-rest/contributions/adrs/adr-305-application-api-rest-pagination.json +1 -1
  79. package/blueprints/application-api-rest/contributions/adrs/adr-306-application-api-rest-idempotency.json +3 -3
  80. package/blueprints/application-api-rest/contributions/adrs/adr-307-application-api-rest-openapi-generation.json +1 -1
  81. package/blueprints/application-api-rest/contributions/adrs/adr-308-application-api-rest-rate-limiting.json +1 -1
  82. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-001.json +6 -2
  83. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-002.json +7 -3
  84. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-003.json +6 -2
  85. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-004.json +6 -2
  86. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-005.json +6 -2
  87. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-006.json +6 -2
  88. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-007.json +6 -2
  89. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-008.json +6 -2
  90. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-009.json +6 -2
  91. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-010.json +8 -4
  92. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-011.json +6 -2
  93. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-012.json +6 -2
  94. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-013.json +7 -3
  95. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-014.json +6 -2
  96. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-015.json +6 -2
  97. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-016.json +6 -2
  98. package/blueprints/application-api-rest/contributions/tacs/tac-301-application-api-rest-request-pipeline.json +1 -1
  99. package/blueprints/application-api-rest/contributions/tacs/tac-302-application-api-rest-auth-middleware.json +1 -1
  100. package/blueprints/application-api-rest/contributions/tacs/tac-303-application-api-rest-contract-surface.json +2 -2
  101. package/blueprints/application-api-rest/contributions/tacs/tac-304-application-api-rest-resource-layer.json +1 -1
  102. package/blueprints/application-api-rest/contributions/tacs/tac-305-application-api-rest-observability.json +1 -1
  103. package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +1 -1
  104. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2101.json +13 -7
  105. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2102.json +27 -13
  106. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +18 -9
  107. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2104.json +32 -10
  108. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2105.json +19 -6
  109. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2106.json +14 -8
  110. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2107.json +20 -12
  111. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +37 -15
  112. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2109.json +15 -9
  113. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2110.json +21 -11
  114. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2111.json +42 -8
  115. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2112.json +23 -13
  116. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2113.json +17 -11
  117. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2114.json +13 -8
  118. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2115.json +13 -8
  119. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2116.json +11 -6
  120. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2117.json +19 -14
  121. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json +20 -10
  122. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json +20 -7
  123. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2120.json +16 -10
  124. package/blueprints/application-api-rest/docs/topics.md +1 -1
  125. package/blueprints/application-charts/CHANGELOG.md +24 -3
  126. package/blueprints/application-charts/README.md +5 -5
  127. package/blueprints/application-charts/blueprint.json +112 -18
  128. package/blueprints/application-charts/contributions/adrs/adr-1901-application-charts-engine-choice.json +1 -1
  129. package/blueprints/application-charts/contributions/adrs/adr-1902-application-charts-accessible-palette.json +1 -1
  130. package/blueprints/application-charts/contributions/adrs/adr-1903-application-charts-motion.json +1 -1
  131. package/blueprints/application-charts/contributions/requirements/application-charts-req-001.json +11 -4
  132. package/blueprints/application-charts/contributions/requirements/application-charts-req-002.json +11 -4
  133. package/blueprints/application-charts/contributions/requirements/application-charts-req-003.json +10 -3
  134. package/blueprints/application-charts/contributions/requirements/application-charts-req-004.json +10 -3
  135. package/blueprints/application-charts/contributions/tacs/tac-1901-application-charts-render-shell.json +3 -2
  136. package/blueprints/application-charts/contributions/tacs/tac-1902-application-charts-keyboard-traversal.json +1 -1
  137. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18101.json +50 -6
  138. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18102.json +58 -6
  139. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18103.json +54 -6
  140. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18104.json +55 -6
  141. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18105.json +64 -8
  142. package/blueprints/application-charts/contributions/user-stories/application-charts-us-18106.json +45 -7
  143. package/blueprints/application-charts/docs/topics.md +3 -3
  144. package/blueprints/application-charts/guide/application-charts.md +3 -3
  145. package/blueprints/application-charts/probe-packs/application-charts.pack.mjs +2 -2
  146. package/blueprints/application-dashboard/CHANGELOG.md +24 -3
  147. package/blueprints/application-dashboard/README.md +8 -8
  148. package/blueprints/application-dashboard/blueprint.json +147 -21
  149. package/blueprints/application-dashboard/contributions/adrs/adr-2001-application-dashboard-primary-kpi-enum.json +4 -4
  150. package/blueprints/application-dashboard/contributions/adrs/adr-2002-application-dashboard-timeframe-presets.json +1 -1
  151. package/blueprints/application-dashboard/contributions/adrs/adr-2003-application-dashboard-export-formats.json +1 -1
  152. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-001.json +10 -3
  153. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-002.json +11 -4
  154. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-003.json +10 -3
  155. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-004.json +11 -4
  156. package/blueprints/application-dashboard/contributions/requirements/application-dashboard-req-005.json +11 -4
  157. package/blueprints/application-dashboard/contributions/tacs/tac-2001-application-dashboard-tile-grid.json +1 -1
  158. package/blueprints/application-dashboard/contributions/tacs/tac-2002-application-dashboard-filter-chrome.json +1 -1
  159. package/blueprints/application-dashboard/contributions/tacs/tac-2003-application-dashboard-export-handle.json +1 -1
  160. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19101.json +54 -6
  161. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19102.json +54 -6
  162. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19103.json +58 -6
  163. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19104.json +55 -7
  164. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19105.json +54 -6
  165. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19106.json +60 -8
  166. package/blueprints/application-dashboard/contributions/user-stories/application-dashboard-us-19107.json +57 -9
  167. package/blueprints/application-dashboard/docs/topics.md +4 -4
  168. package/blueprints/application-dashboard/guide/application-dashboard.md +3 -3
  169. package/blueprints/application-dashboard/probe-packs/application-dashboard.pack.mjs +4 -4
  170. package/blueprints/application-datatable/CHANGELOG.md +23 -2
  171. package/blueprints/application-datatable/README.md +3 -3
  172. package/blueprints/application-datatable/blueprint.json +167 -25
  173. package/blueprints/application-datatable/contributions/adrs/adr-1801-application-datatable-pattern-choice.json +1 -1
  174. package/blueprints/application-datatable/contributions/adrs/adr-1802-application-datatable-url-state.json +1 -1
  175. package/blueprints/application-datatable/contributions/adrs/adr-1803-application-datatable-page-size.json +1 -1
  176. package/blueprints/application-datatable/contributions/adrs/adr-1804-application-datatable-selection-persistence.json +1 -1
  177. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-001.json +11 -4
  178. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-002.json +11 -4
  179. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-003.json +10 -3
  180. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-004.json +11 -4
  181. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-005.json +10 -3
  182. package/blueprints/application-datatable/contributions/requirements/application-datatable-req-006.json +10 -3
  183. package/blueprints/application-datatable/contributions/tacs/tac-1801-application-datatable-shell.json +1 -1
  184. package/blueprints/application-datatable/contributions/tacs/tac-1802-application-datatable-query-adapter.json +1 -1
  185. package/blueprints/application-datatable/contributions/tacs/tac-1803-application-datatable-selection-model.json +2 -2
  186. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17101.json +29 -7
  187. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17102.json +29 -7
  188. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17103.json +28 -6
  189. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17104.json +65 -7
  190. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17105.json +32 -7
  191. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17106.json +60 -7
  192. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17107.json +72 -7
  193. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17108.json +59 -9
  194. package/blueprints/application-datatable/contributions/user-stories/application-datatable-us-17109.json +58 -9
  195. package/blueprints/application-datatable/docs/topics.md +2 -2
  196. package/blueprints/application-datatable/guide/application-datatable.md +1 -1
  197. package/blueprints/application-empty-error-states/CHANGELOG.md +33 -3
  198. package/blueprints/application-empty-error-states/README.md +3 -3
  199. package/blueprints/application-empty-error-states/blueprint.json +35 -1
  200. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-001.json +4 -0
  201. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-002.json +7 -3
  202. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-003.json +4 -0
  203. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-004.json +6 -2
  204. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-005.json +7 -3
  205. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-006.json +21 -0
  206. package/blueprints/application-empty-error-states/contributions/requirements/application-empty-error-states-req-007.json +21 -0
  207. package/blueprints/application-empty-error-states/contributions/tacs/tac-2301-application-empty-error-states-state-machine.json +7 -4
  208. package/blueprints/application-empty-error-states/contributions/tacs/tac-2303-application-empty-error-states-offline-buffer.json +3 -2
  209. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22101.json +17 -2
  210. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22102.json +31 -2
  211. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22103.json +27 -2
  212. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22104.json +13 -2
  213. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22105.json +33 -2
  214. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22106.json +13 -2
  215. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22107.json +23 -2
  216. package/blueprints/application-empty-error-states/contributions/user-stories/application-empty-error-states-us-22108.json +27 -2
  217. package/blueprints/application-empty-error-states/docs/topics.md +1 -1
  218. package/blueprints/application-empty-error-states/probe-packs/application-empty-error-states.pack.mjs +93 -9
  219. package/blueprints/application-error-handling/CHANGELOG.md +17 -0
  220. package/blueprints/application-error-handling/blueprint.json +104 -19
  221. package/blueprints/application-error-handling/contributions/adrs/adr-1701-application-error-handling-record-shape.json +1 -1
  222. package/blueprints/application-error-handling/contributions/adrs/adr-1702-application-error-handling-classification-vocabulary.json +1 -1
  223. package/blueprints/application-error-handling/contributions/adrs/adr-1703-application-error-handling-transport-mapping.json +1 -1
  224. package/blueprints/application-error-handling/contributions/requirements/application-error-handling-req-001.json +10 -3
  225. package/blueprints/application-error-handling/contributions/requirements/application-error-handling-req-002.json +10 -3
  226. package/blueprints/application-error-handling/contributions/requirements/application-error-handling-req-003.json +10 -3
  227. package/blueprints/application-error-handling/contributions/requirements/application-error-handling-req-004.json +10 -3
  228. package/blueprints/application-error-handling/contributions/tacs/tac-1701-application-error-handling-boundary.json +1 -1
  229. package/blueprints/application-error-handling/contributions/tacs/tac-1702-application-error-handling-record-factory.json +1 -1
  230. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16101.json +63 -4
  231. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16102.json +49 -4
  232. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16103.json +51 -5
  233. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16104.json +49 -4
  234. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16105.json +49 -4
  235. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16106.json +49 -4
  236. package/blueprints/application-error-handling/contributions/user-stories/application-error-handling-us-16107.json +53 -4
  237. package/blueprints/application-error-handling/docs/topics.md +1 -1
  238. package/blueprints/application-file-upload/CHANGELOG.md +36 -3
  239. package/blueprints/application-file-upload/README.md +1 -1
  240. package/blueprints/application-file-upload/blueprint.json +56 -1
  241. package/blueprints/application-file-upload/contributions/adrs/adr-2402-application-file-upload-accepted-set.json +3 -3
  242. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-001.json +4 -0
  243. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-002.json +7 -3
  244. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-003.json +6 -2
  245. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-004.json +6 -2
  246. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-005.json +4 -0
  247. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-006.json +21 -0
  248. package/blueprints/application-file-upload/contributions/requirements/application-file-upload-req-007.json +21 -0
  249. package/blueprints/application-file-upload/contributions/tacs/tac-2401-application-file-upload-input.json +4 -2
  250. package/blueprints/application-file-upload/contributions/tacs/tac-2402-application-file-upload-transport.json +7 -2
  251. package/blueprints/application-file-upload/contributions/tacs/tac-2403-application-file-upload-progress-announcer.json +16 -6
  252. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23101.json +23 -2
  253. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23102.json +29 -4
  254. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23103.json +13 -2
  255. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23104.json +45 -2
  256. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23105.json +37 -2
  257. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23106.json +13 -2
  258. package/blueprints/application-file-upload/contributions/user-stories/application-file-upload-us-23107.json +17 -2
  259. package/blueprints/application-file-upload/docs/topics.md +1 -1
  260. package/blueprints/application-file-upload/probe-packs/application-file-upload.pack.mjs +14 -5
  261. package/blueprints/application-forms-wizard/CHANGELOG.md +34 -3
  262. package/blueprints/application-forms-wizard/README.md +2 -2
  263. package/blueprints/application-forms-wizard/blueprint.json +57 -1
  264. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-001.json +4 -0
  265. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-002.json +6 -2
  266. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-003.json +6 -2
  267. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-004.json +6 -2
  268. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-005.json +4 -0
  269. package/blueprints/application-forms-wizard/contributions/requirements/application-forms-wizard-req-006.json +21 -0
  270. package/blueprints/application-forms-wizard/contributions/tacs/tac-2501-application-forms-wizard-task-list.json +6 -4
  271. package/blueprints/application-forms-wizard/contributions/tacs/tac-2502-application-forms-wizard-error-summary.json +4 -3
  272. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24101.json +35 -2
  273. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24102.json +27 -2
  274. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24103.json +21 -2
  275. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24104.json +13 -2
  276. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24105.json +33 -2
  277. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24106.json +18 -3
  278. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24107.json +23 -2
  279. package/blueprints/application-forms-wizard/contributions/user-stories/application-forms-wizard-us-24108.json +13 -2
  280. package/blueprints/application-forms-wizard/docs/topics.md +1 -1
  281. package/blueprints/application-forms-wizard/probe-packs/application-forms-wizard.pack.mjs +3 -3
  282. package/blueprints/application-notifications-in-app/CHANGELOG.md +35 -3
  283. package/blueprints/application-notifications-in-app/README.md +5 -5
  284. package/blueprints/application-notifications-in-app/blueprint.json +150 -22
  285. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-001.json +11 -4
  286. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-002.json +8 -1
  287. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-003.json +10 -3
  288. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-004.json +11 -4
  289. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-005.json +12 -5
  290. package/blueprints/application-notifications-in-app/contributions/requirements/application-notifications-in-app-req-006.json +21 -0
  291. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2102-application-notifications-in-app-centre.json +14 -8
  292. package/blueprints/application-notifications-in-app/contributions/tacs/tac-2103-application-notifications-in-app-preferences.json +2 -2
  293. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20101.json +29 -5
  294. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20102.json +43 -5
  295. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20103.json +39 -5
  296. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20104.json +31 -5
  297. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20105.json +50 -8
  298. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20106.json +19 -4
  299. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20107.json +19 -4
  300. package/blueprints/application-notifications-in-app/contributions/user-stories/application-notifications-in-app-us-20108.json +19 -4
  301. package/blueprints/application-notifications-in-app/docs/topics.md +1 -1
  302. package/blueprints/application-notifications-in-app/guide/application-notifications-in-app.md +1 -1
  303. package/blueprints/application-notifications-in-app/probe-packs/application-notifications-in-app.pack.mjs +4 -4
  304. package/blueprints/application-onboarding-tour/CHANGELOG.md +33 -2
  305. package/blueprints/application-onboarding-tour/README.md +2 -2
  306. package/blueprints/application-onboarding-tour/blueprint.json +22 -2
  307. package/blueprints/application-onboarding-tour/contributions/adrs/adr-2702-application-onboarding-tour-completion-store-shape.json +4 -4
  308. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-001.json +6 -2
  309. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-002.json +6 -2
  310. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-003.json +4 -0
  311. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-004.json +4 -0
  312. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-005.json +22 -0
  313. package/blueprints/application-onboarding-tour/contributions/requirements/application-onboarding-tour-req-006.json +22 -0
  314. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2702-application-onboarding-tour-checklist-slot.json +2 -1
  315. package/blueprints/application-onboarding-tour/contributions/tacs/tac-2703-application-onboarding-tour-completion-store.json +7 -7
  316. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26101.json +67 -2
  317. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26102.json +35 -2
  318. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26103.json +13 -2
  319. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26104.json +33 -2
  320. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26105.json +13 -2
  321. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26106.json +13 -2
  322. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26107.json +17 -2
  323. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26108.json +62 -0
  324. package/blueprints/application-onboarding-tour/contributions/user-stories/application-onboarding-tour-us-26109.json +72 -0
  325. package/blueprints/application-onboarding-tour/docs/topics.md +3 -3
  326. package/blueprints/application-onboarding-tour/guide/application-onboarding-tour.md +1 -1
  327. package/blueprints/application-onboarding-tour/probe-packs/application-onboarding-tour.pack.mjs +2 -2
  328. package/blueprints/application-spa/CHANGELOG.md +30 -0
  329. package/blueprints/application-spa/README.md +8 -8
  330. package/blueprints/application-spa/blueprint.json +1 -1
  331. package/blueprints/application-spa/contributions/adrs/adr-201-application-spa-routing.json +1 -1
  332. package/blueprints/application-spa/contributions/adrs/adr-202-application-spa-theming.json +1 -1
  333. package/blueprints/application-spa/contributions/adrs/adr-203-application-spa-client-state.json +1 -1
  334. package/blueprints/application-spa/contributions/adrs/adr-204-application-spa-error-envelope.json +1 -1
  335. package/blueprints/application-spa/contributions/adrs/adr-205-application-spa-auth-model.json +1 -1
  336. package/blueprints/application-spa/contributions/adrs/adr-206-application-spa-iconography.json +1 -1
  337. package/blueprints/application-spa/contributions/adrs/adr-207-application-spa-motion.json +1 -1
  338. package/blueprints/application-spa/contributions/adrs/adr-208-application-spa-i18n.json +1 -1
  339. package/blueprints/application-spa/contributions/adrs/adr-209-application-spa-telemetry-naming.json +1 -1
  340. package/blueprints/application-spa/contributions/requirements/application-spa-req-001.json +6 -2
  341. package/blueprints/application-spa/contributions/requirements/application-spa-req-002.json +6 -2
  342. package/blueprints/application-spa/contributions/requirements/application-spa-req-003.json +6 -2
  343. package/blueprints/application-spa/contributions/requirements/application-spa-req-004.json +6 -2
  344. package/blueprints/application-spa/contributions/requirements/application-spa-req-005.json +6 -2
  345. package/blueprints/application-spa/contributions/requirements/application-spa-req-006.json +6 -2
  346. package/blueprints/application-spa/contributions/requirements/application-spa-req-007.json +6 -2
  347. package/blueprints/application-spa/contributions/requirements/application-spa-req-008.json +6 -2
  348. package/blueprints/application-spa/contributions/requirements/application-spa-req-009.json +7 -3
  349. package/blueprints/application-spa/contributions/requirements/application-spa-req-010.json +6 -2
  350. package/blueprints/application-spa/contributions/requirements/application-spa-req-011.json +6 -2
  351. package/blueprints/application-spa/contributions/requirements/application-spa-req-012.json +6 -2
  352. package/blueprints/application-spa/contributions/requirements/application-spa-req-013.json +6 -2
  353. package/blueprints/application-spa/contributions/requirements/application-spa-req-014.json +6 -2
  354. package/blueprints/application-spa/contributions/requirements/application-spa-req-015.json +6 -2
  355. package/blueprints/application-spa/contributions/requirements/application-spa-req-016.json +6 -2
  356. package/blueprints/application-spa/contributions/requirements/application-spa-req-017.json +6 -2
  357. package/blueprints/application-spa/contributions/requirements/application-spa-req-018.json +7 -3
  358. package/blueprints/application-spa/contributions/requirements/application-spa-req-019.json +6 -2
  359. package/blueprints/application-spa/contributions/requirements/application-spa-req-020.json +6 -2
  360. package/blueprints/application-spa/contributions/requirements/application-spa-req-021.json +6 -2
  361. package/blueprints/application-spa/contributions/tacs/tac-201-application-spa-app-shell.json +4 -3
  362. package/blueprints/application-spa/contributions/tacs/tac-202-application-spa-theme-system.json +1 -1
  363. package/blueprints/application-spa/contributions/tacs/tac-203-application-spa-component-library.json +1 -1
  364. package/blueprints/application-spa/contributions/tacs/tac-204-application-spa-client-data-layer.json +1 -1
  365. package/blueprints/application-spa/contributions/tacs/tac-205-application-spa-forms-engine.json +1 -1
  366. package/blueprints/application-spa/contributions/tacs/tac-206-application-spa-telemetry.json +1 -1
  367. package/blueprints/application-spa/contributions/tacs/tac-207-application-spa-token-adherence-probe.json +1 -1
  368. package/blueprints/application-spa/contributions/tacs/tac-208-application-spa-icon-adherence-probe.json +1 -1
  369. package/blueprints/application-spa/contributions/tacs/tac-209-application-spa-csp-styled-adherence-probe.json +3 -3
  370. package/blueprints/application-spa/contributions/tacs/tac-210-application-spa-external-dependency-provisioning-probe.json +2 -2
  371. package/blueprints/application-spa/contributions/tacs/tac-211-application-spa-core-flow-e2e-probe.json +2 -2
  372. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1101.json +22 -8
  373. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1102.json +18 -9
  374. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1103.json +13 -7
  375. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1104.json +15 -10
  376. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1105.json +13 -7
  377. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1106.json +12 -7
  378. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1107.json +25 -6
  379. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1108.json +17 -9
  380. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1109.json +17 -9
  381. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1110.json +19 -10
  382. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1111.json +19 -11
  383. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1112.json +15 -8
  384. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1113.json +15 -8
  385. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1114.json +15 -10
  386. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1115.json +13 -7
  387. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1116.json +15 -9
  388. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1117.json +20 -10
  389. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1118.json +9 -5
  390. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1119.json +11 -6
  391. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1120.json +16 -10
  392. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1121.json +13 -7
  393. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1122.json +13 -7
  394. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1123.json +28 -9
  395. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1124.json +11 -6
  396. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1125.json +14 -8
  397. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1126.json +24 -9
  398. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1127.json +11 -6
  399. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1128.json +11 -7
  400. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1129.json +25 -5
  401. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1130.json +25 -5
  402. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1131.json +19 -9
  403. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1132.json +40 -10
  404. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1133.json +35 -9
  405. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1134.json +23 -3
  406. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1135.json +19 -3
  407. package/blueprints/application-spa/docs/topics.md +1 -1
  408. package/blueprints/application-spa/guide/application-spa.md +2 -2
  409. package/blueprints/delivery-ci-workflows/CHANGELOG.md +18 -0
  410. package/blueprints/delivery-ci-workflows/README.md +1 -1
  411. package/blueprints/delivery-ci-workflows/blueprint.json +62 -1
  412. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-001.json +4 -0
  413. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-002.json +4 -0
  414. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-003.json +4 -0
  415. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-004.json +4 -0
  416. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-005.json +4 -0
  417. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-006.json +4 -0
  418. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-007.json +4 -0
  419. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-008.json +4 -0
  420. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-009.json +4 -0
  421. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-010.json +4 -0
  422. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-011.json +6 -2
  423. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-012.json +4 -0
  424. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-013.json +4 -0
  425. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-014.json +4 -0
  426. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-015.json +4 -0
  427. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-016.json +4 -0
  428. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-017.json +4 -0
  429. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-018.json +4 -0
  430. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-019.json +4 -0
  431. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-020.json +4 -0
  432. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-021.json +4 -0
  433. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-022.json +4 -0
  434. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-023.json +4 -0
  435. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6101.json +20 -4
  436. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6102.json +19 -3
  437. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6103.json +20 -4
  438. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6104.json +20 -4
  439. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6105.json +20 -4
  440. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6106.json +20 -4
  441. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6107.json +20 -4
  442. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6108.json +20 -4
  443. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6109.json +12 -5
  444. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6110.json +21 -5
  445. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6111.json +21 -5
  446. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6112.json +35 -5
  447. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6113.json +21 -5
  448. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6114.json +8 -5
  449. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6115.json +21 -5
  450. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6116.json +19 -3
  451. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6117.json +19 -3
  452. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6118.json +21 -5
  453. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6119.json +19 -3
  454. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6120.json +19 -3
  455. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6121.json +23 -6
  456. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6122.json +24 -7
  457. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6123.json +21 -5
  458. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6124.json +19 -3
  459. package/blueprints/delivery-ci-workflows/docs/topics.md +1 -1
  460. package/blueprints/deploy-cloudflare-workers/CHANGELOG.md +17 -2
  461. package/blueprints/deploy-cloudflare-workers/README.md +2 -2
  462. package/blueprints/deploy-cloudflare-workers/blueprint.json +4 -4
  463. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1303-deploy-cloudflare-workers-preview-vs-production.json +1 -1
  464. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1306-deploy-cloudflare-workers-spa-shape.json +2 -2
  465. package/blueprints/deploy-cloudflare-workers/contributions/probes/assets-manifest-scan.mjs +25 -7
  466. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-001.json +5 -1
  467. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-002.json +6 -2
  468. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-003.json +5 -1
  469. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-004.json +5 -1
  470. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-005.json +5 -1
  471. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-006.json +5 -1
  472. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-007.json +5 -1
  473. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-008.json +5 -1
  474. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-009.json +5 -1
  475. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-010.json +5 -1
  476. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-011.json +5 -1
  477. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-012.json +5 -1
  478. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-013.json +5 -1
  479. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-014.json +7 -3
  480. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1301-deploy-cloudflare-workers-deploy-adapter.json +3 -2
  481. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1302-deploy-cloudflare-workers-wrangler-manifest.json +5 -2
  482. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12101.json +21 -9
  483. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12102.json +23 -4
  484. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12103.json +7 -4
  485. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12104.json +7 -4
  486. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12105.json +11 -4
  487. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12106.json +7 -4
  488. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12107.json +7 -4
  489. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12108.json +15 -4
  490. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12109.json +11 -4
  491. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12110.json +7 -4
  492. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12111.json +11 -4
  493. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12112.json +11 -4
  494. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12113.json +41 -3
  495. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12114.json +17 -2
  496. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12115.json +18 -3
  497. package/blueprints/deploy-cloudflare-workers/docs/topics.md +1 -1
  498. package/blueprints/deploy-cloudflare-workers/guide/deploy-cloudflare-workers.md +7 -2
  499. package/blueprints/deploy-hetzner-server/CHANGELOG.md +39 -2
  500. package/blueprints/deploy-hetzner-server/README.md +12 -12
  501. package/blueprints/deploy-hetzner-server/blueprint.json +2 -2
  502. package/blueprints/deploy-hetzner-server/contributions/adrs/adr-3801-deploy-hetzner-server-cloud-host-contract.json +2 -2
  503. package/blueprints/deploy-hetzner-server/contributions/adrs/adr-3803-deploy-hetzner-server-provisioning-tool.json +2 -2
  504. package/blueprints/deploy-hetzner-server/contributions/probes/cloud-init-render-lint.mjs +12 -5
  505. package/blueprints/deploy-hetzner-server/contributions/probes/hcloud-dry-run-mock.mjs +68 -20
  506. package/blueprints/deploy-hetzner-server/contributions/probes/manifest-schema-validate.mjs +8 -6
  507. package/blueprints/deploy-hetzner-server/contributions/probes/probe-utils.mjs +7 -1
  508. package/blueprints/deploy-hetzner-server/contributions/probes/real-account-cloud-init-hardened.mjs +2 -1
  509. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-001.json +6 -2
  510. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-002.json +6 -2
  511. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-003.json +5 -1
  512. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-004.json +5 -1
  513. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-005.json +6 -2
  514. package/blueprints/deploy-hetzner-server/contributions/requirements/deploy-hetzner-server-req-006.json +5 -1
  515. package/blueprints/deploy-hetzner-server/contributions/schemas/hetzner-server.schema.json +1 -1
  516. package/blueprints/deploy-hetzner-server/contributions/templates/cloud-init.yaml.tmpl +26 -6
  517. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37101.json +63 -2
  518. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37102.json +35 -2
  519. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37103.json +59 -2
  520. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37104.json +31 -2
  521. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37105.json +25 -2
  522. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37106.json +35 -2
  523. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37107.json +31 -2
  524. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37108.json +43 -2
  525. package/blueprints/deploy-hetzner-server/contributions/user-stories/deploy-hetzner-server-us-37109.json +31 -2
  526. package/blueprints/deploy-hetzner-server/docs/topics.md +3 -3
  527. package/blueprints/deploy-hetzner-server/guide/deploy-hetzner-server.md +12 -11
  528. package/blueprints/edge-cloudflare-access/CHANGELOG.md +35 -3
  529. package/blueprints/edge-cloudflare-access/README.md +2 -2
  530. package/blueprints/edge-cloudflare-access/blueprint.json +12 -2
  531. package/blueprints/edge-cloudflare-access/contributions/probes/real-account-gated-url.mjs +10 -2
  532. package/blueprints/edge-cloudflare-access/contributions/probes/wrangler-seam.mjs +1 -1
  533. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-001.json +5 -1
  534. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-002.json +5 -1
  535. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-003.json +5 -1
  536. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-004.json +6 -2
  537. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-005.json +5 -1
  538. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-006.json +7 -3
  539. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-007.json +22 -0
  540. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34101.json +13 -3
  541. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34102.json +63 -2
  542. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34103.json +18 -3
  543. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34104.json +36 -3
  544. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34105.json +13 -3
  545. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34106.json +9 -3
  546. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34107.json +68 -3
  547. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34108.json +5 -3
  548. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34109.json +10 -4
  549. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34110.json +33 -0
  550. package/blueprints/edge-cloudflare-access/docs/topics.md +2 -2
  551. package/blueprints/edge-cloudflare-rate-limiting/CHANGELOG.md +35 -1
  552. package/blueprints/edge-cloudflare-rate-limiting/README.md +3 -3
  553. package/blueprints/edge-cloudflare-rate-limiting/blueprint.json +1 -1
  554. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/real-account-burst-and-429.mjs +10 -2
  555. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-001.json +6 -2
  556. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-002.json +5 -1
  557. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-003.json +5 -1
  558. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-004.json +6 -2
  559. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-005.json +5 -1
  560. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3701-edge-cloudflare-rate-limiting-manifest-schema.json +2 -2
  561. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3703-edge-cloudflare-rate-limiting-drift-audit-runner.json +2 -2
  562. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36101.json +27 -3
  563. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36102.json +9 -3
  564. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36103.json +24 -5
  565. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36104.json +88 -3
  566. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36105.json +5 -3
  567. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36106.json +22 -3
  568. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36107.json +16 -5
  569. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36108.json +14 -3
  570. package/blueprints/edge-cloudflare-rate-limiting/docs/topics.md +1 -1
  571. package/blueprints/edge-cloudflare-rate-limiting/guide/edge-cloudflare-rate-limiting.md +2 -2
  572. package/blueprints/edge-cloudflare-tunnel/CHANGELOG.md +49 -4
  573. package/blueprints/edge-cloudflare-tunnel/README.md +20 -21
  574. package/blueprints/edge-cloudflare-tunnel/blueprint.json +29 -4
  575. package/blueprints/edge-cloudflare-tunnel/contributions/adrs/adr-4001-edge-cloudflare-tunnel-ingress-bridge-contract.json +4 -4
  576. package/blueprints/edge-cloudflare-tunnel/contributions/adrs/adr-4002-edge-cloudflare-tunnel-connector-runtime.json +1 -1
  577. package/blueprints/edge-cloudflare-tunnel/contributions/probes/manifest-schema-validate.mjs +7 -4
  578. package/blueprints/edge-cloudflare-tunnel/contributions/probes/probe-utils.mjs +13 -2
  579. package/blueprints/edge-cloudflare-tunnel/contributions/probes/real-account-connector-healthy.mjs +109 -21
  580. package/blueprints/edge-cloudflare-tunnel/contributions/probes/real-account-tunnel-hostname-routes.mjs +123 -30
  581. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-001.json +6 -2
  582. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-002.json +5 -1
  583. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-003.json +7 -3
  584. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-004.json +5 -1
  585. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-005.json +5 -1
  586. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-006.json +22 -0
  587. package/blueprints/edge-cloudflare-tunnel/contributions/requirements/edge-cloudflare-tunnel-req-007.json +22 -0
  588. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4001-edge-cloudflare-tunnel-connector-shape.json +1 -1
  589. package/blueprints/edge-cloudflare-tunnel/contributions/tacs/tac-4004-edge-cloudflare-tunnel-zone-and-hostname-apply.json +29 -0
  590. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39101.json +39 -3
  591. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39102.json +23 -4
  592. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39103.json +53 -3
  593. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39104.json +33 -3
  594. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39105.json +25 -3
  595. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39106.json +86 -2
  596. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39107.json +25 -3
  597. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39108.json +35 -2
  598. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39109.json +74 -0
  599. package/blueprints/edge-cloudflare-tunnel/contributions/user-stories/edge-cloudflare-tunnel-us-39110.json +60 -0
  600. package/blueprints/edge-cloudflare-tunnel/docs/topics.md +2 -2
  601. package/blueprints/edge-cloudflare-tunnel/guide/edge-cloudflare-tunnel.md +60 -13
  602. package/blueprints/edge-cloudflare-turnstile/CHANGELOG.md +33 -1
  603. package/blueprints/edge-cloudflare-turnstile/README.md +2 -2
  604. package/blueprints/edge-cloudflare-turnstile/blueprint.json +1 -1
  605. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-001.json +6 -2
  606. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-002.json +5 -1
  607. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-003.json +6 -2
  608. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-004.json +5 -1
  609. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-005.json +5 -1
  610. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3601-edge-cloudflare-turnstile-widget-mount.json +2 -2
  611. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3602-edge-cloudflare-turnstile-server-verifier.json +2 -2
  612. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35101.json +46 -5
  613. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35102.json +53 -2
  614. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35103.json +81 -2
  615. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35104.json +29 -6
  616. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35105.json +14 -4
  617. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35106.json +9 -3
  618. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35107.json +5 -3
  619. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35108.json +5 -3
  620. package/blueprints/edge-cloudflare-turnstile/docs/topics.md +1 -1
  621. package/blueprints/edge-cloudflare-turnstile/probe-packs/edge-cloudflare-turnstile.pack.mjs +27 -5
  622. package/blueprints/email-smtp-resend/CHANGELOG.md +24 -0
  623. package/blueprints/email-smtp-resend/README.md +2 -2
  624. package/blueprints/email-smtp-resend/assets/stub-adapter.md +2 -0
  625. package/blueprints/email-smtp-resend/blueprint.json +119 -17
  626. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-001.json +7 -3
  627. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-002.json +4 -0
  628. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-003.json +4 -0
  629. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-004.json +4 -0
  630. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-005.json +4 -0
  631. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-006.json +4 -0
  632. package/blueprints/email-smtp-resend/contributions/tacs/tac-401-email-smtp-resend-send-adapter.json +3 -3
  633. package/blueprints/email-smtp-resend/contributions/tacs/tac-402-email-smtp-resend-webhook-verifier.json +7 -2
  634. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4101.json +15 -8
  635. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4102.json +27 -7
  636. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4103.json +49 -4
  637. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4104.json +6 -3
  638. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4105.json +21 -5
  639. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4106.json +27 -7
  640. package/blueprints/email-smtp-resend/docs/topics.md +1 -1
  641. package/blueprints/email-smtp-resend/guide/email-smtp-resend.md +2 -2
  642. package/blueprints/jobs-background/CHANGELOG.md +30 -6
  643. package/blueprints/jobs-background/README.md +8 -8
  644. package/blueprints/jobs-background/blueprint.json +55 -2
  645. package/blueprints/jobs-background/contributions/adrs/adr-3102-jobs-background-scheduler-mode.json +1 -1
  646. package/blueprints/jobs-background/contributions/adrs/adr-3103-jobs-background-requires-applied-capabilities.json +6 -6
  647. package/blueprints/jobs-background/contributions/probes/fake-clock-cron.mjs +1 -1
  648. package/blueprints/jobs-background/contributions/probes/probe-utils.mjs +4 -4
  649. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-001.json +7 -3
  650. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-002.json +7 -3
  651. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-003.json +5 -1
  652. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-004.json +5 -1
  653. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-005.json +5 -1
  654. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-006.json +5 -1
  655. package/blueprints/jobs-background/contributions/tacs/tac-3101-jobs-background-job-definition.json +5 -5
  656. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30101.json +20 -3
  657. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30102.json +44 -9
  658. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30103.json +48 -3
  659. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30104.json +63 -3
  660. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30105.json +20 -3
  661. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30106.json +20 -3
  662. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30107.json +20 -3
  663. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30108.json +21 -3
  664. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30109.json +23 -6
  665. package/blueprints/jobs-background/docs/topics.md +3 -3
  666. package/blueprints/jobs-background/guide/jobs-background.md +6 -6
  667. package/blueprints/messaging-queue-cloudflare/CHANGELOG.md +41 -6
  668. package/blueprints/messaging-queue-cloudflare/README.md +6 -6
  669. package/blueprints/messaging-queue-cloudflare/blueprint.json +127 -19
  670. package/blueprints/messaging-queue-cloudflare/contributions/adrs/adr-3001-messaging-queue-cloudflare-adapter.json +3 -3
  671. package/blueprints/messaging-queue-cloudflare/contributions/adrs/adr-3002-messaging-queue-cloudflare-delivery-semantics.json +1 -1
  672. package/blueprints/messaging-queue-cloudflare/contributions/probes/real-account-concurrency-smoke.mjs +192 -37
  673. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-001.json +6 -2
  674. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-002.json +6 -2
  675. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-003.json +5 -1
  676. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-004.json +6 -2
  677. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-005.json +6 -2
  678. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-006.json +6 -2
  679. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29101.json +22 -4
  680. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29102.json +23 -4
  681. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29103.json +20 -3
  682. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29104.json +29 -7
  683. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29105.json +20 -3
  684. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29106.json +25 -4
  685. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29107.json +25 -3
  686. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29108.json +28 -6
  687. package/blueprints/messaging-queue-cloudflare/docs/topics.md +3 -3
  688. package/blueprints/messaging-queue-cloudflare/guide/messaging-queue-cloudflare.md +7 -5
  689. package/blueprints/object-storage-s3/CHANGELOG.md +32 -4
  690. package/blueprints/object-storage-s3/README.md +16 -3
  691. package/blueprints/object-storage-s3/blueprint.json +162 -20
  692. package/blueprints/object-storage-s3/contributions/adrs/adr-2905-object-storage-s3-hetzner-object-storage-provider.json +30 -0
  693. package/blueprints/object-storage-s3/contributions/probes/hetzner-object-storage-round-trip.mjs +136 -0
  694. package/blueprints/object-storage-s3/contributions/probes/run-hetzner-object-storage-round-trip.mjs +11 -0
  695. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-001.json +6 -2
  696. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-002.json +6 -2
  697. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-003.json +5 -1
  698. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-004.json +6 -2
  699. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-005.json +6 -2
  700. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-006.json +6 -2
  701. package/blueprints/object-storage-s3/contributions/requirements/object-storage-s3-req-101.json +22 -0
  702. package/blueprints/object-storage-s3/contributions/tacs/tac-2904-object-storage-s3-hetzner-endpoint-helper.json +34 -0
  703. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28101.json +36 -4
  704. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28102.json +32 -5
  705. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28103.json +42 -3
  706. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28104.json +22 -4
  707. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28105.json +25 -4
  708. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28106.json +13 -5
  709. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28107.json +10 -4
  710. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28108.json +12 -4
  711. package/blueprints/object-storage-s3/contributions/user-stories/object-storage-s3-us-28110.json +42 -0
  712. package/blueprints/object-storage-s3/docs/topics.md +1 -1
  713. package/blueprints/object-storage-s3/guide/object-storage-s3.md +37 -1
  714. package/blueprints/observability-essentials/CHANGELOG.md +21 -0
  715. package/blueprints/observability-essentials/README.md +1 -1
  716. package/blueprints/observability-essentials/assets/probe-samples/probe-response-baseline.v2.json +17 -0
  717. package/blueprints/observability-essentials/blueprint.json +32 -1
  718. package/blueprints/observability-essentials/contributions/adrs/adr-801-observability-essentials-health-probes.json +1 -1
  719. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +4 -0
  720. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +4 -0
  721. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-003.json +4 -0
  722. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-004.json +4 -0
  723. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-005.json +4 -0
  724. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-006.json +6 -2
  725. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-007.json +7 -3
  726. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-008.json +4 -0
  727. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-009.json +4 -0
  728. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-010.json +4 -0
  729. package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +6 -1
  730. package/blueprints/observability-essentials/contributions/tacs/tac-803-observability-essentials-status-page.json +1 -1
  731. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +25 -7
  732. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7102.json +9 -5
  733. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7103.json +51 -6
  734. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7104.json +7 -4
  735. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7105.json +6 -3
  736. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7106.json +37 -6
  737. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7107.json +18 -11
  738. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7108.json +6 -3
  739. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7109.json +7 -4
  740. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7110.json +8 -5
  741. package/blueprints/observability-essentials/docs/topics.md +2 -2
  742. package/blueprints/observability-essentials/guide/observability-essentials.md +1 -1
  743. package/blueprints/observability-logging/CHANGELOG.md +19 -4
  744. package/blueprints/observability-logging/README.md +1 -1
  745. package/blueprints/observability-logging/blueprint.json +76 -28
  746. package/blueprints/observability-logging/contributions/adrs/adr-1605-observability-logging-serialisation-refusal.json +25 -0
  747. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-001.json +10 -3
  748. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-002.json +8 -1
  749. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-003.json +8 -1
  750. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-004.json +8 -1
  751. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-005.json +8 -1
  752. package/blueprints/observability-logging/contributions/requirements/observability-logging-req-006.json +16 -0
  753. package/blueprints/observability-logging/contributions/tacs/tac-1601-observability-logging-logger-factory.json +4 -4
  754. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15101.json +62 -8
  755. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15102.json +11 -6
  756. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15103.json +37 -5
  757. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15104.json +35 -4
  758. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15105.json +24 -6
  759. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15106.json +22 -4
  760. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15107.json +34 -3
  761. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15108.json +21 -3
  762. package/blueprints/observability-logging/contributions/user-stories/observability-logging-us-15109.json +71 -0
  763. package/blueprints/observability-logging/docs/topics.md +1 -1
  764. package/blueprints/observability-probe-endpoints/CHANGELOG.md +17 -0
  765. package/blueprints/observability-probe-endpoints/README.md +1 -1
  766. package/blueprints/observability-probe-endpoints/blueprint.json +40 -1
  767. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-001.json +6 -2
  768. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-002.json +4 -0
  769. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-003.json +4 -0
  770. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-004.json +4 -0
  771. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-005.json +4 -0
  772. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-006.json +4 -0
  773. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-007.json +4 -0
  774. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-008.json +4 -0
  775. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14101.json +30 -9
  776. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +24 -6
  777. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14103.json +6 -3
  778. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14104.json +9 -6
  779. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14105.json +49 -4
  780. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14106.json +9 -6
  781. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14107.json +12 -8
  782. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14108.json +6 -3
  783. package/blueprints/observability-probe-endpoints/docs/topics.md +2 -2
  784. package/blueprints/observability-probe-endpoints/guide/observability-probe-endpoints.md +3 -6
  785. package/blueprints/persistence-data-d1/CHANGELOG.md +19 -0
  786. package/blueprints/persistence-data-d1/README.md +1 -1
  787. package/blueprints/persistence-data-d1/assets/batch-usage/batch-atomicity-example.md +2 -0
  788. package/blueprints/persistence-data-d1/assets/facade-shape/facade-module-shape.md +2 -0
  789. package/blueprints/persistence-data-d1/blueprint.json +106 -22
  790. package/blueprints/persistence-data-d1/contributions/adrs/adr-1404-persistence-data-d1-store-boundary.json +4 -4
  791. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-001.json +5 -1
  792. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-002.json +5 -1
  793. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-003.json +5 -1
  794. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-004.json +7 -3
  795. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-005.json +5 -1
  796. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-006.json +5 -1
  797. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-007.json +5 -1
  798. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13101.json +35 -4
  799. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13102.json +25 -4
  800. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13103.json +11 -4
  801. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13104.json +13 -6
  802. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13105.json +11 -4
  803. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13106.json +7 -4
  804. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13107.json +23 -3
  805. package/blueprints/persistence-data-d1/docs/topics.md +1 -1
  806. package/blueprints/persistence-data-postgres/CHANGELOG.md +18 -2
  807. package/blueprints/persistence-data-postgres/README.md +1 -1
  808. package/blueprints/persistence-data-postgres/blueprint.json +201 -23
  809. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2801-persistence-data-postgres-driver.json +1 -1
  810. package/blueprints/persistence-data-postgres/contributions/adrs/adr-2805-persistence-data-postgres-connection-pool-posture.json +1 -1
  811. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-001.json +6 -2
  812. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-002.json +6 -2
  813. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-003.json +5 -1
  814. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-004.json +7 -3
  815. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-005.json +6 -2
  816. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-006.json +6 -2
  817. package/blueprints/persistence-data-postgres/contributions/requirements/persistence-data-postgres-req-007.json +7 -3
  818. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2802-persistence-data-postgres-migration-runner.json +2 -2
  819. package/blueprints/persistence-data-postgres/contributions/tacs/tac-2803-persistence-data-postgres-transaction-helper.json +5 -5
  820. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27101.json +22 -4
  821. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27102.json +118 -3
  822. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27103.json +20 -3
  823. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27104.json +26 -5
  824. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27105.json +62 -3
  825. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27106.json +20 -3
  826. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27107.json +20 -3
  827. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27108.json +20 -3
  828. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27109.json +20 -3
  829. package/blueprints/persistence-data-postgres/contributions/user-stories/persistence-data-postgres-us-27110.json +48 -3
  830. package/blueprints/persistence-data-postgres/docs/topics.md +1 -1
  831. package/blueprints/persistence-data-sqlite/CHANGELOG.md +14 -0
  832. package/blueprints/persistence-data-sqlite/blueprint.json +146 -30
  833. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-001.json +5 -1
  834. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-002.json +5 -1
  835. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-003.json +5 -1
  836. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-004.json +5 -1
  837. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-005.json +5 -1
  838. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-006.json +5 -1
  839. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-007.json +5 -1
  840. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-008.json +5 -1
  841. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-009.json +5 -1
  842. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-010.json +5 -1
  843. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-011.json +5 -1
  844. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5101.json +35 -4
  845. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5102.json +7 -4
  846. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5103.json +19 -3
  847. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5104.json +21 -4
  848. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5105.json +7 -4
  849. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5106.json +11 -4
  850. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5107.json +7 -4
  851. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5108.json +7 -4
  852. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5109.json +11 -8
  853. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5110.json +23 -3
  854. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5111.json +19 -3
  855. package/blueprints/persistence-data-sqlite/docs/topics.md +1 -1
  856. package/blueprints/persistence-data-sqlite/guide/persistence-data-sqlite.md +1 -1
  857. package/blueprints/platform-cloudflare-cron-triggers/CHANGELOG.md +40 -2
  858. package/blueprints/platform-cloudflare-cron-triggers/blueprint.json +78 -17
  859. package/blueprints/platform-cloudflare-cron-triggers/contributions/adrs/adr-3301-platform-cloudflare-cron-triggers-scheduled-trigger-contract.json +2 -2
  860. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/real-account-scheduled-smoke.mjs +24 -3
  861. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/skew-tolerance.mjs +1 -1
  862. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-001.json +6 -2
  863. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-002.json +5 -1
  864. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-003.json +5 -1
  865. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-004.json +6 -2
  866. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3301-platform-cloudflare-cron-triggers-scheduled-handler.json +1 -1
  867. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32101.json +86 -5
  868. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32102.json +69 -5
  869. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32103.json +51 -4
  870. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32104.json +65 -4
  871. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32105.json +68 -5
  872. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32106.json +62 -3
  873. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32107.json +56 -3
  874. package/blueprints/platform-cloudflare-cron-triggers/docs/topics.md +4 -4
  875. package/blueprints/platform-cloudflare-durable-objects/CHANGELOG.md +57 -2
  876. package/blueprints/platform-cloudflare-durable-objects/README.md +6 -6
  877. package/blueprints/platform-cloudflare-durable-objects/blueprint.json +3 -2
  878. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3401-platform-cloudflare-durable-objects-single-cell-contract.json +1 -1
  879. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3402-platform-cloudflare-durable-objects-websocket-hub-contract.json +1 -1
  880. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/namespace-facade-ready.mjs +3 -3
  881. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/probe-utils.mjs +28 -14
  882. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/real-account-storage-smoke.mjs +139 -27
  883. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/sole-reader-scan.mjs +40 -39
  884. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/storage-round-trip.mjs +26 -16
  885. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/websocket-hub-broadcast.mjs +31 -34
  886. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/wrangler-seam.mjs +11 -5
  887. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-001.json +5 -1
  888. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-002.json +6 -2
  889. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-003.json +5 -1
  890. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-004.json +5 -1
  891. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-005.json +6 -2
  892. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-006.json +6 -2
  893. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-007.json +5 -1
  894. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-008.json +5 -1
  895. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33101.json +73 -2
  896. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33102.json +59 -2
  897. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33103.json +77 -2
  898. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33104.json +75 -6
  899. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33105.json +73 -2
  900. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33106.json +49 -2
  901. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33107.json +45 -2
  902. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33108.json +84 -3
  903. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33109.json +45 -2
  904. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33110.json +59 -2
  905. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33111.json +45 -2
  906. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33112.json +53 -2
  907. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33113.json +68 -5
  908. package/blueprints/platform-cloudflare-durable-objects/docs/topics.md +2 -2
  909. package/blueprints/platform-cloudflare-durable-objects/guide/platform-cloudflare-durable-objects.md +9 -9
  910. package/blueprints/platform-cloudflare-kv/CHANGELOG.md +83 -2
  911. package/blueprints/platform-cloudflare-kv/README.md +40 -14
  912. package/blueprints/platform-cloudflare-kv/blueprint.json +115 -20
  913. package/blueprints/platform-cloudflare-kv/contributions/adrs/adr-3201-platform-cloudflare-kv-key-value-store-contract.json +3 -3
  914. package/blueprints/platform-cloudflare-kv/contributions/probes/cache-aside-hit-then-miss.mjs +26 -26
  915. package/blueprints/platform-cloudflare-kv/contributions/probes/event-secrecy.mjs +49 -31
  916. package/blueprints/platform-cloudflare-kv/contributions/probes/facade-round-trip.mjs +58 -16
  917. package/blueprints/platform-cloudflare-kv/contributions/probes/list-with-prefix.mjs +6 -5
  918. package/blueprints/platform-cloudflare-kv/contributions/probes/real-account-eventual-consistency-smoke.mjs +165 -66
  919. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-001.json +6 -2
  920. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-002.json +5 -1
  921. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-003.json +5 -1
  922. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-004.json +6 -2
  923. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-005.json +7 -3
  924. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-006.json +22 -0
  925. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-007.json +22 -0
  926. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31101.json +59 -2
  927. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31102.json +45 -2
  928. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31103.json +73 -3
  929. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31104.json +67 -2
  930. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31105.json +59 -2
  931. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31106.json +45 -2
  932. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31107.json +45 -2
  933. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31108.json +45 -2
  934. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31109.json +92 -0
  935. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31110.json +88 -0
  936. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31111.json +89 -0
  937. package/blueprints/platform-cloudflare-kv/docs/topics.md +2 -2
  938. package/blueprints/platform-cloudflare-kv/guide/platform-cloudflare-kv.md +2 -2
  939. package/blueprints/platform-docker-compose-host/CHANGELOG.md +37 -3
  940. package/blueprints/platform-docker-compose-host/README.md +7 -7
  941. package/blueprints/platform-docker-compose-host/blueprint.json +23 -6
  942. package/blueprints/platform-docker-compose-host/contributions/adrs/adr-3901-platform-docker-compose-host-contract.json +3 -3
  943. package/blueprints/platform-docker-compose-host/contributions/adrs/adr-3902-platform-docker-compose-host-reverse-proxy.json +4 -4
  944. package/blueprints/platform-docker-compose-host/contributions/adrs/adr-3903-platform-docker-compose-host-reject-coolify.json +2 -2
  945. package/blueprints/platform-docker-compose-host/contributions/adrs/adr-3904-platform-docker-compose-host-log-driver.json +2 -2
  946. package/blueprints/platform-docker-compose-host/contributions/probes/probe-utils.mjs +1 -1
  947. package/blueprints/platform-docker-compose-host/contributions/probes/real-account-minimal-stack-up.mjs +2 -3
  948. package/blueprints/platform-docker-compose-host/contributions/probes/real-account-reload-burst.mjs +1 -1
  949. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-001.json +6 -2
  950. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-002.json +5 -1
  951. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-003.json +6 -2
  952. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-004.json +5 -1
  953. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-005.json +6 -2
  954. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-006.json +6 -2
  955. package/blueprints/platform-docker-compose-host/contributions/requirements/platform-docker-compose-host-req-007.json +22 -0
  956. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38101.json +73 -2
  957. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38102.json +67 -2
  958. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38103.json +59 -2
  959. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38104.json +75 -2
  960. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38105.json +49 -2
  961. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38106.json +45 -2
  962. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38107.json +49 -2
  963. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38108.json +49 -2
  964. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38109.json +57 -2
  965. package/blueprints/platform-docker-compose-host/contributions/user-stories/platform-docker-compose-host-us-38110.json +92 -0
  966. package/blueprints/platform-docker-compose-host/docs/topics.md +4 -4
  967. package/blueprints/platform-docker-compose-host/guide/platform-docker-compose-host.md +6 -6
  968. package/blueprints/security-auth-clerk/CHANGELOG.md +24 -4
  969. package/blueprints/security-auth-clerk/README.md +1 -1
  970. package/blueprints/security-auth-clerk/blueprint.json +21 -1
  971. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-001.json +6 -2
  972. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-002.json +5 -1
  973. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-003.json +6 -2
  974. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-004.json +6 -2
  975. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-005.json +5 -2
  976. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-006.json +5 -1
  977. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-007.json +4 -1
  978. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-008.json +4 -1
  979. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-009.json +4 -1
  980. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-010.json +22 -0
  981. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-011.json +22 -0
  982. package/blueprints/security-auth-clerk/contributions/tacs/tac-1001-security-auth-clerk-middleware.json +14 -4
  983. package/blueprints/security-auth-clerk/contributions/tacs/tac-1003-security-auth-clerk-session-verifier.json +7 -1
  984. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9101.json +6 -3
  985. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9102.json +19 -3
  986. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9103.json +6 -3
  987. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9104.json +6 -3
  988. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9105.json +4 -2
  989. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9106.json +4 -2
  990. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9107.json +4 -2
  991. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9108.json +13 -3
  992. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9109.json +8 -2
  993. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9110.json +4 -2
  994. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9111.json +4 -2
  995. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9112.json +102 -0
  996. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9113.json +103 -0
  997. package/blueprints/security-auth-clerk/docs/topics.md +1 -1
  998. package/blueprints/security-auth-keycloak/CHANGELOG.md +23 -4
  999. package/blueprints/security-auth-keycloak/README.md +1 -1
  1000. package/blueprints/security-auth-keycloak/blueprint.json +101 -1
  1001. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-001.json +5 -2
  1002. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-002.json +5 -1
  1003. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-003.json +5 -1
  1004. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-004.json +5 -1
  1005. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-005.json +6 -2
  1006. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-006.json +6 -2
  1007. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-007.json +4 -1
  1008. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-008.json +4 -1
  1009. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-009.json +4 -1
  1010. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-010.json +4 -1
  1011. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-011.json +5 -1
  1012. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-012.json +4 -1
  1013. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-013.json +22 -0
  1014. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-014.json +22 -0
  1015. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-015.json +22 -0
  1016. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-016.json +22 -0
  1017. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-017.json +22 -0
  1018. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-018.json +22 -0
  1019. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-019.json +22 -0
  1020. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1201-security-auth-keycloak-discovery-client.json +4 -2
  1021. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1202-security-auth-keycloak-jwt-verifier.json +8 -2
  1022. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1203-security-auth-keycloak-introspection-client.json +8 -2
  1023. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1204-security-auth-keycloak-provider-router.json +3 -1
  1024. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1205-security-auth-keycloak-role-adapter.json +2 -1
  1025. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11101.json +6 -3
  1026. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11102.json +10 -3
  1027. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11103.json +12 -2
  1028. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11104.json +8 -2
  1029. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11105.json +6 -3
  1030. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11106.json +18 -3
  1031. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11107.json +6 -3
  1032. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11108.json +6 -3
  1033. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11109.json +4 -2
  1034. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11110.json +6 -3
  1035. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11111.json +14 -3
  1036. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11112.json +4 -2
  1037. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11113.json +4 -2
  1038. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11114.json +72 -0
  1039. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11115.json +88 -0
  1040. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11116.json +117 -0
  1041. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11117.json +117 -0
  1042. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11118.json +117 -0
  1043. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11119.json +117 -0
  1044. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11120.json +103 -0
  1045. package/blueprints/security-auth-keycloak/docs/topics.md +1 -1
  1046. package/blueprints/security-auth-keycloak/guide/security-auth-keycloak.md +1 -1
  1047. package/blueprints/security-auth-magic-link/CHANGELOG.md +19 -3
  1048. package/blueprints/security-auth-magic-link/README.md +1 -1
  1049. package/blueprints/security-auth-magic-link/blueprint.json +1 -1
  1050. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-001.json +4 -1
  1051. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-002.json +5 -1
  1052. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-003.json +6 -2
  1053. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-004.json +5 -1
  1054. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-005.json +5 -1
  1055. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-006.json +4 -1
  1056. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-007.json +4 -1
  1057. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-008.json +5 -1
  1058. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-009.json +5 -1
  1059. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-010.json +6 -2
  1060. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-011.json +6 -2
  1061. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3101.json +10 -5
  1062. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3102.json +8 -4
  1063. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3103.json +6 -3
  1064. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3104.json +8 -4
  1065. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3105.json +6 -3
  1066. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3106.json +6 -3
  1067. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3107.json +8 -4
  1068. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3108.json +6 -3
  1069. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3109.json +6 -3
  1070. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3110.json +6 -3
  1071. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3111.json +14 -3
  1072. package/blueprints/security-auth-magic-link/docs/topics.md +1 -1
  1073. package/blueprints/security-auth-magic-link/guide/security-auth-magic-link.md +1 -1
  1074. package/blueprints/security-auth-oauth2/CHANGELOG.md +21 -4
  1075. package/blueprints/security-auth-oauth2/README.md +1 -1
  1076. package/blueprints/security-auth-oauth2/blueprint.json +33 -2
  1077. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-001.json +5 -2
  1078. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-002.json +5 -1
  1079. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-003.json +5 -1
  1080. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-004.json +4 -1
  1081. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-005.json +5 -1
  1082. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-006.json +6 -2
  1083. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-007.json +4 -1
  1084. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-008.json +6 -2
  1085. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-009.json +5 -1
  1086. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-010.json +4 -1
  1087. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-011.json +22 -0
  1088. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-012.json +22 -0
  1089. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-013.json +22 -0
  1090. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1102-security-auth-oauth2-provider-adapter.json +2 -1
  1091. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1103-security-auth-oauth2-session-bridge.json +9 -2
  1092. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10101.json +6 -3
  1093. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10102.json +6 -3
  1094. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10103.json +4 -2
  1095. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10104.json +4 -2
  1096. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10105.json +8 -4
  1097. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10106.json +6 -3
  1098. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10107.json +6 -3
  1099. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10108.json +6 -3
  1100. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10109.json +4 -2
  1101. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10110.json +4 -2
  1102. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10111.json +17 -2
  1103. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10112.json +82 -0
  1104. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10113.json +68 -0
  1105. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10114.json +88 -0
  1106. package/blueprints/security-auth-oauth2/docs/topics.md +1 -1
  1107. package/blueprints/security-secrets-management/CHANGELOG.md +14 -2
  1108. package/blueprints/security-secrets-management/blueprint.json +168 -31
  1109. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-001.json +5 -1
  1110. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-002.json +6 -2
  1111. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-003.json +6 -2
  1112. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-004.json +5 -1
  1113. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-005.json +6 -2
  1114. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-006.json +5 -1
  1115. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-007.json +5 -1
  1116. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-008.json +5 -1
  1117. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-009.json +5 -1
  1118. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-010.json +6 -3
  1119. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8101.json +6 -3
  1120. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8102.json +6 -3
  1121. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8103.json +4 -2
  1122. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8104.json +6 -3
  1123. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8105.json +8 -4
  1124. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8106.json +6 -3
  1125. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8107.json +6 -3
  1126. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8108.json +6 -3
  1127. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8109.json +6 -3
  1128. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8110.json +6 -3
  1129. package/blueprints/security-secrets-management/docs/topics.md +1 -1
  1130. package/fixtures/canary-manifest.json +9 -9
  1131. package/guidance/harness-template.md +67 -0
  1132. package/guidance/managed/agent-instructions-block.hash +1 -1
  1133. package/guidance/managed/agent-instructions-block.md +67 -0
  1134. package/package.json +2 -2
  1135. package/rcf/code-nodes/cn-500.json +12 -0
  1136. package/rcf/code-nodes/cn-510.json +12 -0
  1137. package/rcf/code-nodes/cn-520.json +14 -0
  1138. package/rcf/code-nodes/cn-521.json +12 -0
  1139. package/rcf/code-nodes/cn-522.json +13 -0
  1140. package/rcf/code-nodes/cn-523.json +12 -0
  1141. package/rcf/code-nodes/cn-524.json +14 -0
  1142. package/rcf/code-nodes/cn-525.json +12 -0
  1143. package/rcf/code-nodes/cn-526.json +14 -0
  1144. package/rcf/fbs/fbs-160.json +15 -0
  1145. package/rcf/fbs/fbs-165.json +15 -0
  1146. package/rcf/fbs/fbs-170.json +16 -0
  1147. package/rcf/fbs/fbs-171.json +16 -0
  1148. package/rcf/fbs/fbs-172.json +15 -0
  1149. package/rcf/fbs/fbs-173.json +17 -0
  1150. package/rcf/fbs/fbs-174.json +17 -0
  1151. package/rcf/requirements/req-140.json +149 -0
  1152. package/rcf/requirements/req-145.json +53 -0
  1153. package/rcf/requirements/req-150.json +20 -0
  1154. package/rcf/requirements/req-151.json +85 -0
  1155. package/rcf/requirements/req-152.json +20 -0
  1156. package/rcf/requirements/req-153.json +59 -0
  1157. package/rcf/requirements/req-154.json +44 -0
  1158. package/rcf/test-suites/ts-050.json +1 -1
  1159. package/rcf/test-suites/ts-052.json +1 -1
  1160. package/rcf/test-suites/ts-053.json +2 -2
  1161. package/rcf/test-suites/ts-054.json +2 -2
  1162. package/rcf/test-suites/ts-055.json +2 -2
  1163. package/rcf/test-suites/ts-056.json +4 -4
  1164. package/rcf/test-suites/ts-057.json +2 -2
  1165. package/rcf/test-suites/ts-071.json +2 -2
  1166. package/rcf/test-suites/ts-086.json +2 -2
  1167. package/rcf/test-suites/ts-170.json +22 -0
  1168. package/rcf/test-suites/ts-175.json +22 -0
  1169. package/rcf/test-suites/ts-180.json +30 -0
  1170. package/rcf/test-suites/ts-181.json +30 -0
  1171. package/rcf/test-suites/ts-182.json +22 -0
  1172. package/rcf/test-suites/ts-183.json +38 -0
  1173. package/rcf/test-suites/ts-184.json +38 -0
  1174. package/rcf/user-stories/us-14001.json +21 -0
  1175. package/rcf/user-stories/us-14501.json +24 -0
  1176. package/rcf/user-stories/us-15001.json +26 -0
  1177. package/rcf/user-stories/us-15101.json +26 -0
  1178. package/rcf/user-stories/us-15201.json +21 -0
  1179. package/rcf/user-stories/us-15301.json +31 -0
  1180. package/rcf/user-stories/us-15401.json +31 -0
  1181. package/rcf/user-stories/us-7701.json +3 -3
  1182. package/releases/releases.yaml +21 -1
  1183. package/src/blueprint/apply.js +64 -0
  1184. package/src/blueprint/consistency-lint.js +432 -0
  1185. package/src/blueprint/disposition-ledger.js +224 -0
  1186. package/src/blueprint/dispositions.js +44 -0
  1187. package/src/blueprint/index.js +19 -0
  1188. package/src/browser-verify/manifest-writer.js +53 -2
  1189. package/src/browser-verify/pack-runner.js +18 -0
  1190. package/src/cli/blueprint.js +103 -0
  1191. package/src/cli/view.js +22 -11
  1192. package/src/setup/identity-seed.js +18 -0
@@ -1,6 +1,6 @@
1
1
  # object-storage-s3
2
2
 
3
- Object storage on the S3 API, accessed through a store facade that is the sole reader of the S3 client. Cloudflare R2 is the first adapter, MinIO is the local dev target, any S3-compatible remote (AWS S3, Backblaze B2, Wasabi, self-hosted) composes cleanly. Ships put / get / delete / list, presigned GET URLs with a bounded TTL, and multipart-upload above an elicited threshold, plus a lifecycle-event sink with a metadata-only field discipline. Refuses composition without `security-secrets-management` applied (Baz decision 6): the credential pair is a `secretRef`, never a value.
3
+ Object storage on the S3 API, accessed through a store facade that is the sole reader of the S3 client. Cloudflare R2 is the first adapter, MinIO is the local dev target, any S3-compatible remote (AWS S3, Backblaze B2, Wasabi, self-hosted) composes cleanly. Ships put / get / delete / list, presigned GET URLs with a bounded TTL, and multipart-upload above an elicited threshold, plus a lifecycle-event sink with a metadata-only field discipline. Refuses composition without `security-secrets-management` applied: the credential pair is a `secretRef`, never a value.
4
4
 
5
5
  ## What this blueprint gives you
6
6
 
@@ -19,12 +19,14 @@ Object storage on the S3 API, accessed through a store facade that is the sole r
19
19
  | REQ-004 | Multipart-upload above the ADR-2903 threshold (default 8 MiB); abort-on-failure with no orphan in-flight uploads. |
20
20
  | REQ-005 | Four lifecycle events with metadata-only fields; event-secrecy probe asserts against a PII fixture. |
21
21
  | REQ-006 | Credential-pair discipline via `security-secrets-management`; refuses composition without with stable message id `object-storage-s3-no-secrets`. |
22
+ | REQ-101 (v1.1.0) | Hetzner Object Storage adapter: endpoint-shape helper composes `<bucket>.<location>.your-objectstorage.com` from an elicited bucket and location; MinIO and R2 paths unchanged. |
22
23
 
23
24
  ## The three TACs
24
25
 
25
26
  - **TAC-2901 facade**: the object-storage S3 facade module.
26
27
  - **TAC-2902 multipart uploader**: initiate/part-upload/complete with abort-on-failure.
27
28
  - **TAC-2903 event sink**: metadata-only lifecycle event contract.
29
+ - **TAC-2904 Hetzner endpoint helper (v1.1.0)**: sole composer of `<bucket>.<location>.your-objectstorage.com`; enum-refuses unknown location codes.
28
30
 
29
31
  ## The four ADRs
30
32
 
@@ -32,10 +34,19 @@ Object storage on the S3 API, accessed through a store facade that is the sole r
32
34
  - **ADR-2902 presigned URL TTL**: default 15 minutes, floor 1 minute; elicited ceiling. Standards trace clause: generic enterprise practice.
33
35
  - **ADR-2903 multipart threshold**: default 8 MiB, elicited. Standards trace clause: generic enterprise practice.
34
36
  - **ADR-2904 object storage contract** (scope: global, topic `objectStorageContract`): S3 API as the shipped shape; conflicts by design with future non-S3-shape siblings. Standards trace clause: AWS S3 API and R2 S3-compatibility notes.
37
+ - **ADR-2905 Hetzner Object Storage provider (v1.1.0)**: recognises `hetznerObjectStorage` as a shipped provider value under the shipped S3-API facade; endpoint pattern `<bucket>.<location>.your-objectstorage.com` composed via TAC-2904; MinIO and R2 paths unchanged. Standards trace clause: Hetzner Object Storage S3 compatibility documented endpoint shape.
35
38
 
36
39
  ## Elicited parameters
37
40
 
38
- Endpoint URL (R2 `https://<account-id>.r2.cloudflarestorage.com`, AWS S3 `https://s3.<region>.amazonaws.com`, MinIO `http://localhost:9000`, any S3-compatible remote); bucket name; credential-pair reference via `security-secrets-management` (never value); adapter (`awsSdk` or `aws4fetch`); presigned-URL default TTL (default 15 minutes); presigned-URL ceiling (elicited, no shipped default, S3 API 7-day outer bound); multipart-upload threshold (default 8 MiB); force path style (`true` for MinIO, `false` for AWS/R2 with virtual-hosted style); server-side encryption default (`sseNone` on R2 per the R2 compatibility notes; `sseS3` on AWS S3 when the operator elicits it).
41
+ Endpoint URL (R2 `https://<account-id>.r2.cloudflarestorage.com`, AWS S3 `https://s3.<region>.amazonaws.com`, MinIO `http://localhost:9000`, Hetzner Object Storage `https://<bucket>.<location>.your-objectstorage.com` composed from a bucket and location via the v1.1.0 helper, any S3-compatible remote); bucket name; credential-pair reference via `security-secrets-management` (never value); adapter (`awsSdk` or `aws4fetch`); presigned-URL default TTL (default 15 minutes); presigned-URL ceiling (elicited, no shipped default, S3 API 7-day outer bound); multipart-upload threshold (default 8 MiB); force path style (`true` for MinIO, `false` for AWS/R2 and Hetzner Object Storage with virtual-hosted style); server-side encryption default (`sseNone` on R2 per the R2 compatibility notes; `sseS3` on AWS S3 when the operator elicits it).
42
+
43
+ ## Hetzner Object Storage adapter (v1.1.0)
44
+
45
+ Since v1.1.0 the blueprint recognises `hetznerObjectStorage` as a shipped provider value under the existing S3-API facade contract. Hetzner Object Storage is S3-compatible per https://docs.hetzner.com/storage/object-storage/overview; the endpoint follows the vendor-documented pattern `<bucket>.<location>.your-objectstorage.com`. Three location codes are shipped: `fsn1` (Falkenstein), `hel1` (Helsinki), `nbg1` (Nuremberg), matching the same page. A project applying the blueprint with the Hetzner provider elicits the bucket and location; a small helper (`composeHetznerEndpoint`, TAC-2904) composes the https endpoint URL and hands it to the shipped facade unchanged. `region` defaults to `auto` (matching the R2 shape); `forcePathStyle` defaults to `false` (virtual-hosted-style, matching R2 and AWS S3). The Cloudflare R2 real-account smoke stays gated on `CI_HAS_CLOUDFLARE_ACCOUNT` and does not read the new env vars; the MinIO local emulator flow stays byte-identical. Reach for Hetzner over R2 for a European storage region with a different egress-pricing profile; reach for R2 for the zero-egress-fee posture; reach for MinIO for local dev without any account.
46
+
47
+ Runtime dependency: none added. The shipped `@aws-sdk/client-s3` client signs and speaks the S3 wire protocol against the composed Hetzner endpoint unchanged.
48
+
49
+ A new Node-only probe `hetzner-object-storage-round-trip.mjs` binds AC-28110-1: with `CI_HAS_HETZNER_OBJECT_STORAGE` set (plus `HETZNER_OBJECT_STORAGE_ACCESS_KEY_ID`, `HETZNER_OBJECT_STORAGE_SECRET_ACCESS_KEY`, `HETZNER_OBJECT_STORAGE_BUCKET`, `HETZNER_OBJECT_STORAGE_LOCATION`) it round-trips a byte-equal 1 KiB payload against a real Hetzner Object Storage bucket; without the env var it records `accountBoundSkipped: true` per spec section 3.5.
39
50
 
40
51
  ## Companions
41
52
 
@@ -44,7 +55,7 @@ Endpoint URL (R2 `https://<account-id>.r2.cloudflarestorage.com`, AWS S3 `https:
44
55
 
45
56
  ## Composition and conflicts
46
57
 
47
- Consumes `security-secrets-management` v1.0.1+ for the credential pair. Declares `requiresAppliedCapabilities: {capabilities: ["secretsProvider"], allowSkipFlag: "allow-no-secrets-yet", refusalMessageId: "object-storage-s3-no-secrets"}` per the T-5 capability mechanism (visual round spec 5.5.1). The apply verb refuses on a project without `secretsProvider` (exit 3, stderr carries `[object-storage-s3-no-secrets]` as the first-line tag and names the required capability, the shipped predecessor, and the override flag). `--allow-no-secrets-yet` overrides for a scaffolding pass and records a `notes` line on `rcf/blueprints/object-storage-s3.applied.json` for later reconciliation. Contributes ADR-2904 as `scope: global` on new topic `objectStorageContract`; future `object-storage-native-gcs` or `object-storage-native-azure` siblings would conflict here by design. `capabilities: ["objectStorage"]`; `providesRoles: []`.
58
+ Consumes `security-secrets-management` v1.0.1+ for the credential pair. Declares `requiresAppliedCapabilities: {capabilities: ["secretsProvider"], allowSkipFlag: "allow-no-secrets-yet", refusalMessageId: "object-storage-s3-no-secrets"}` per the capability mechanism. The apply verb refuses on a project without `secretsProvider` (exit 3, stderr carries `[object-storage-s3-no-secrets]` as the first-line tag and names the required capability, the shipped predecessor, and the override flag). `--allow-no-secrets-yet` overrides for a scaffolding pass and records a `notes` line on `rcf/blueprints/object-storage-s3.applied.json` for later reconciliation. Contributes ADR-2904 as `scope: global` on new topic `objectStorageContract`; future `object-storage-native-gcs` or `object-storage-native-azure` siblings would conflict here by design. `capabilities: ["objectStorage"]`; `providesRoles: []`.
48
59
 
49
60
  ## The six probes
50
61
 
@@ -58,6 +69,7 @@ Each probe is a Node module under `contributions/probes/` exporting the round-5
58
69
  | `multipart-upload` | AC-28104-1, AC-28104-2 | 10 MiB payload above the 8 MiB threshold round-trips byte-equal via multipart; no orphan in-flight uploads after complete; abort-on-failure with `SIMULATE_PART_UPLOAD_FAIL=true`. | false |
59
70
  | `event-secrecy` | AC-28105-1 | Every event record carries only whitelisted metadata fields; no PII fixture text; no forbidden field name. | false |
60
71
  | `r2-real-account-smoke` | AC-28108-1 | Real R2 round-trip when `CI_HAS_CLOUDFLARE_ACCOUNT` is set; records `accountBoundSkipped: true` when it is not. | true |
72
+ | `hetzner-object-storage-round-trip` (v1.1.0) | AC-28110-1 | Composes `<bucket>.<location>.your-objectstorage.com` via `composeHetznerEndpoint`; real Hetzner Object Storage round-trip when `CI_HAS_HETZNER_OBJECT_STORAGE` is set; records `accountBoundSkipped: true` when it is not. | true |
61
73
 
62
74
  ## How to run the probes locally
63
75
 
@@ -73,6 +85,7 @@ node ../../../../blueprints/object-storage-s3/contributions/probes/run-presigned
73
85
  node ../../../../blueprints/object-storage-s3/contributions/probes/run-multipart-upload.mjs
74
86
  node ../../../../blueprints/object-storage-s3/contributions/probes/run-event-secrecy.mjs
75
87
  node ../../../../blueprints/object-storage-s3/contributions/probes/run-r2-real-account-smoke.mjs
88
+ node ../../../../blueprints/object-storage-s3/contributions/probes/run-hetzner-object-storage-round-trip.mjs
76
89
  docker compose down -v
77
90
  ```
78
91
 
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "slug": "object-storage-s3",
3
- "version": "1.0.0",
3
+ "version": "1.2.2",
4
4
  "category": "object-storage",
5
- "capabilities": ["objectStorage"],
5
+ "capabilities": [
6
+ "objectStorage"
7
+ ],
6
8
  "requiresAppliedCapabilities": {
7
- "capabilities": ["secretsProvider"],
9
+ "capabilities": [
10
+ "secretsProvider"
11
+ ],
8
12
  "allowSkipFlag": "allow-no-secrets-yet",
9
13
  "refusalMessageId": "object-storage-s3-no-secrets"
10
14
  },
@@ -19,23 +23,91 @@
19
23
  }
20
24
  ],
21
25
  "contributions": [
22
- { "id": "object-storage-s3-REQ-001", "kind": "req", "path": "requirements/object-storage-s3-req-001.json" },
23
- { "id": "object-storage-s3-REQ-002", "kind": "req", "path": "requirements/object-storage-s3-req-002.json" },
24
- { "id": "object-storage-s3-REQ-003", "kind": "req", "path": "requirements/object-storage-s3-req-003.json" },
25
- { "id": "object-storage-s3-REQ-004", "kind": "req", "path": "requirements/object-storage-s3-req-004.json" },
26
- { "id": "object-storage-s3-REQ-005", "kind": "req", "path": "requirements/object-storage-s3-req-005.json" },
27
- { "id": "object-storage-s3-REQ-006", "kind": "req", "path": "requirements/object-storage-s3-req-006.json" },
28
- { "id": "object-storage-s3-US-28101", "kind": "us", "path": "user-stories/object-storage-s3-us-28101.json" },
29
- { "id": "object-storage-s3-US-28102", "kind": "us", "path": "user-stories/object-storage-s3-us-28102.json" },
30
- { "id": "object-storage-s3-US-28103", "kind": "us", "path": "user-stories/object-storage-s3-us-28103.json" },
31
- { "id": "object-storage-s3-US-28104", "kind": "us", "path": "user-stories/object-storage-s3-us-28104.json" },
32
- { "id": "object-storage-s3-US-28105", "kind": "us", "path": "user-stories/object-storage-s3-us-28105.json" },
33
- { "id": "object-storage-s3-US-28106", "kind": "us", "path": "user-stories/object-storage-s3-us-28106.json" },
34
- { "id": "object-storage-s3-US-28107", "kind": "us", "path": "user-stories/object-storage-s3-us-28107.json" },
35
- { "id": "object-storage-s3-US-28108", "kind": "us", "path": "user-stories/object-storage-s3-us-28108.json" },
36
- { "id": "TAC-2901-object-storage-s3-facade", "kind": "tac", "path": "tacs/tac-2901-object-storage-s3-facade.json" },
37
- { "id": "TAC-2902-object-storage-s3-multipart-uploader", "kind": "tac", "path": "tacs/tac-2902-object-storage-s3-multipart-uploader.json" },
38
- { "id": "TAC-2903-object-storage-s3-event-sink", "kind": "tac", "path": "tacs/tac-2903-object-storage-s3-event-sink.json" },
26
+ {
27
+ "id": "object-storage-s3-REQ-001",
28
+ "kind": "req",
29
+ "path": "requirements/object-storage-s3-req-001.json"
30
+ },
31
+ {
32
+ "id": "object-storage-s3-REQ-002",
33
+ "kind": "req",
34
+ "path": "requirements/object-storage-s3-req-002.json"
35
+ },
36
+ {
37
+ "id": "object-storage-s3-REQ-003",
38
+ "kind": "req",
39
+ "path": "requirements/object-storage-s3-req-003.json"
40
+ },
41
+ {
42
+ "id": "object-storage-s3-REQ-004",
43
+ "kind": "req",
44
+ "path": "requirements/object-storage-s3-req-004.json"
45
+ },
46
+ {
47
+ "id": "object-storage-s3-REQ-005",
48
+ "kind": "req",
49
+ "path": "requirements/object-storage-s3-req-005.json"
50
+ },
51
+ {
52
+ "id": "object-storage-s3-REQ-006",
53
+ "kind": "req",
54
+ "path": "requirements/object-storage-s3-req-006.json"
55
+ },
56
+ {
57
+ "id": "object-storage-s3-US-28101",
58
+ "kind": "us",
59
+ "path": "user-stories/object-storage-s3-us-28101.json"
60
+ },
61
+ {
62
+ "id": "object-storage-s3-US-28102",
63
+ "kind": "us",
64
+ "path": "user-stories/object-storage-s3-us-28102.json"
65
+ },
66
+ {
67
+ "id": "object-storage-s3-US-28103",
68
+ "kind": "us",
69
+ "path": "user-stories/object-storage-s3-us-28103.json"
70
+ },
71
+ {
72
+ "id": "object-storage-s3-US-28104",
73
+ "kind": "us",
74
+ "path": "user-stories/object-storage-s3-us-28104.json"
75
+ },
76
+ {
77
+ "id": "object-storage-s3-US-28105",
78
+ "kind": "us",
79
+ "path": "user-stories/object-storage-s3-us-28105.json"
80
+ },
81
+ {
82
+ "id": "object-storage-s3-US-28106",
83
+ "kind": "us",
84
+ "path": "user-stories/object-storage-s3-us-28106.json"
85
+ },
86
+ {
87
+ "id": "object-storage-s3-US-28107",
88
+ "kind": "us",
89
+ "path": "user-stories/object-storage-s3-us-28107.json"
90
+ },
91
+ {
92
+ "id": "object-storage-s3-US-28108",
93
+ "kind": "us",
94
+ "path": "user-stories/object-storage-s3-us-28108.json"
95
+ },
96
+ {
97
+ "id": "TAC-2901-object-storage-s3-facade",
98
+ "kind": "tac",
99
+ "path": "tacs/tac-2901-object-storage-s3-facade.json"
100
+ },
101
+ {
102
+ "id": "TAC-2902-object-storage-s3-multipart-uploader",
103
+ "kind": "tac",
104
+ "path": "tacs/tac-2902-object-storage-s3-multipart-uploader.json"
105
+ },
106
+ {
107
+ "id": "TAC-2903-object-storage-s3-event-sink",
108
+ "kind": "tac",
109
+ "path": "tacs/tac-2903-object-storage-s3-event-sink.json"
110
+ },
39
111
  {
40
112
  "id": "ADR-2901-object-storage-s3-adapter",
41
113
  "kind": "adr",
@@ -67,6 +139,76 @@
67
139
  "scope": "global",
68
140
  "topic": "objectStorageContract",
69
141
  "standardsTraceClause": "AWS S3 API and Cloudflare R2 S3-compatibility notes"
142
+ },
143
+ {
144
+ "id": "object-storage-s3-REQ-101",
145
+ "kind": "req",
146
+ "path": "requirements/object-storage-s3-req-101.json"
147
+ },
148
+ {
149
+ "id": "object-storage-s3-US-28110",
150
+ "kind": "us",
151
+ "path": "user-stories/object-storage-s3-us-28110.json"
152
+ },
153
+ {
154
+ "id": "TAC-2904-object-storage-s3-hetzner-endpoint-helper",
155
+ "kind": "tac",
156
+ "path": "tacs/tac-2904-object-storage-s3-hetzner-endpoint-helper.json"
157
+ },
158
+ {
159
+ "id": "ADR-2905-object-storage-s3-hetzner-object-storage-provider",
160
+ "kind": "adr",
161
+ "path": "adrs/adr-2905-object-storage-s3-hetzner-object-storage-provider.json",
162
+ "recommendedDefault": false,
163
+ "elicited": true,
164
+ "standardsTraceClause": "Hetzner Object Storage S3 compatibility documented endpoint shape"
165
+ }
166
+ ],
167
+ "elicits": [
168
+ {
169
+ "id": "s3-endpoint-url",
170
+ "prompt": "S3-compatible endpoint URL: an AWS S3 URL, a Cloudflare R2 URL, a MinIO URL, or any S3-compatible remote (including Hetzner Object Storage under the endpoint-shape helper). The facade opens the client against this at boot.",
171
+ "kind": "string",
172
+ "default": "https://s3.amazonaws.com"
173
+ },
174
+ {
175
+ "id": "s3-bucket-name",
176
+ "prompt": "Bucket name the facade opens against. The applied project asserts a real bucket at apply; the facade dereferences the elicited value once at boot.",
177
+ "kind": "string",
178
+ "default": "app-bucket"
179
+ },
180
+ {
181
+ "id": "s3-adapter",
182
+ "prompt": "S3 client adapter per ADR-2901. aws-sdk-client-s3 is the AWS SDK v3 client for Node targets; aws4fetch is the small SigV4 fetch adapter for Workers targets.",
183
+ "kind": "enum",
184
+ "options": [
185
+ "aws-sdk-client-s3",
186
+ "aws4fetch"
187
+ ],
188
+ "default": "aws-sdk-client-s3"
189
+ },
190
+ {
191
+ "id": "presigned-ttl-ceiling-seconds",
192
+ "prompt": "Ceiling on the TTL a presignGetUrl verb may accept, in seconds. Floor is 60 seconds; default cap is 3600 seconds; the shipped default TTL is 900 seconds per ADR-2902.",
193
+ "kind": "string",
194
+ "default": "3600"
195
+ },
196
+ {
197
+ "id": "multipart-threshold-bytes",
198
+ "prompt": "Payload size at or above which the put path switches to multipart-upload. Default 8388608 bytes (8 MiB) per ADR-2903.",
199
+ "kind": "string",
200
+ "default": "8388608"
201
+ },
202
+ {
203
+ "id": "hetzner-location-code",
204
+ "prompt": "Hetzner Object Storage location code per the Hetzner storage overview: fsn1 Falkenstein, hel1 Helsinki, nbg1 Nuremberg. Only meaningful when the endpoint composes through the Hetzner endpoint-shape helper (TAC-2904).",
205
+ "kind": "enum",
206
+ "options": [
207
+ "fsn1",
208
+ "hel1",
209
+ "nbg1"
210
+ ],
211
+ "default": "fsn1"
70
212
  }
71
213
  ]
72
214
  }
@@ -0,0 +1,30 @@
1
+ {
2
+ "adrId": "ADR-2905-object-storage-s3-hetzner-object-storage-provider",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.1.0",
6
+ "status": "accepted",
7
+ "title": "Hetzner Object Storage as a shipped provider value under the object-storage-s3 v1.0.0 facade; endpoint pattern <bucket>.<location>.your-objectstorage.com per the Hetzner storage overview; MinIO and R2 paths unchanged",
8
+ "context": "The object-storage-s3 v1.0.0 blueprint shipped Cloudflare R2 (production first-target on the shipped adapter shape), AWS S3 (interop first-class through the same wire protocol), MinIO (local emulator for dev), and any other S3-compatible endpoint (Backblaze B2 in S3-compat mode, Wasabi, self-hosted) as providers a project can point at by pasting an endpoint URL into the elicited endpointUrl parameter on the facade. Hetzner Object Storage is S3-compatible per https://docs.hetzner.com/storage/object-storage/overview (fetched 2026-09-08 200) and reads through the shipped facade without a client change, but its endpoint URL is derived from two elicited values (a bucket name and a location code in {fsn1, hel1, nbg1}) rather than pasted in whole; the vendor pattern is <bucket>.<location>.your-objectstorage.com per the same page. A follow-up minor bump adds the Hetzner Object Storage provider value by shipping an endpoint-shape helper (TAC-2904) that composes the vendor pattern from those two elicited values and hands the composed https URL to the facade unchanged. No topic conflict is raised because the objectStorageContract topic (ADR-2904, scope global) names the wire-shape contract as the S3 API, and Hetzner Object Storage speaks that contract per the overview.",
9
+ "decision": "The shipped v1.1.0 object-storage-s3 blueprint recognises hetznerObjectStorage as a shipped provider value alongside R2, AWS, MinIO. A project applying object-storage-s3 with the Hetzner provider elicits a bucket name and a location code in {fsn1, hel1, nbg1}, and the shipped endpoint-shape helper (TAC-2904, composeHetznerEndpoint) composes https://<bucket>.<location>.your-objectstorage.com verbatim per https://docs.hetzner.com/storage/object-storage/overview. The composed URL feeds the shipped facade (TAC-2901) through the existing endpointUrl parameter; no facade shape moves, no runtime dependency lands in the applying project, no re-signing surface is added (the S3 client's SigV4 signing works unchanged against the composed endpoint). Region defaults to auto (matching the R2 shape); forcePathStyle defaults to false (matching R2 and AWS S3 with virtual-hosted-style buckets). A new Node-only probe hetzner-object-storage-round-trip.mjs binds to AC-28110-1: with CI_HAS_HETZNER_OBJECT_STORAGE the probe round-trips a byte-equal 1 KiB payload against a real bucket, without it the probe records accountBoundSkipped true per spec section 3.5. The MinIO local emulator and R2 real-account smoke stay byte-identical and keep their v1.0.0 acceptance shape.",
10
+ "consequences": "A project that outgrows the MinIO local emulator or wants a European storage location with lower egress costs than R2 or AWS S3 picks hetznerObjectStorage at apply time and the shipped facade routes through the composed endpoint unchanged. Standards trace clause: Hetzner Object Storage S3 compatibility documented endpoint shape (https://docs.hetzner.com/storage/object-storage/overview) enumerates the endpoint pattern and the three location codes fsn1, hel1, nbg1. The provider list is not exhaustive; a future v1.2.0 minor could add another S3-compatible provider under the same shape by shipping another endpoint helper. The shipped R2 real-account smoke stays gated on CI_HAS_CLOUDFLARE_ACCOUNT and does not read CI_HAS_HETZNER_OBJECT_STORAGE; the two smokes skip independently. rcf-lite package version does NOT bump for this follow-up (spec section 8): the blueprint bumps 1.0.0 -> 1.1.0 and ships as its own sequential PR post-round-7.",
11
+ "alternativesConsidered": [
12
+ {
13
+ "name": "Extend ADR-2901 alternativesConsidered instead of shipping a sibling ADR",
14
+ "summary": "Mutate the shipped v1.0.0 ADR-2901 body to enumerate Hetzner Object Storage as a fourth alternative under the SDK-adapter axis.",
15
+ "reasonNotChosen": "ADR-2901's alternativesConsidered axis is client-choice (AWS SDK v3 vs aws4fetch vs hand-rolled SigV4), not provider-choice. Hetzner Object Storage is a provider under the shipped AWS SDK v3 adapter; mutating ADR-2901 would mis-scope the alternative. The additive-only discipline of a minor bump prefers a sibling ADR that references ADR-2901 by id over a mutation of the shipped body."
16
+ },
17
+ {
18
+ "name": "Ship the Hetzner Object Storage endpoint as a documented example on the freeform endpointUrl only, without a helper module",
19
+ "summary": "Document the endpoint pattern in the guide and let the applying project paste https://<bucket>.<location>.your-objectstorage.com into endpointUrl by hand.",
20
+ "reasonNotChosen": "A hand-composed endpoint is a shape a project can mis-key silently (a missing dot before your-objectstorage.com, a bucket-shaped hostname prefix that a linter cannot flag). The endpoint-shape helper turns the vendor convention into a mechanical composition with an enum-checked location code and a probe that asserts the composed value against the vendor pattern. The helper is 20 lines of code and lives inside the applying project; the trade-off is one small module for a mechanically-checked correctness gain."
21
+ },
22
+ {
23
+ "name": "Mint a separate object-storage-hetzner blueprint slug",
24
+ "summary": "Ship a fresh blueprint object-storage-hetzner v1.0.0 with the Hetzner-shaped facade instead of extending object-storage-s3.",
25
+ "reasonNotChosen": "Hetzner Object Storage speaks the S3 wire protocol per the vendor overview; a separate slug would duplicate the whole object-storage-s3 facade contract and split the shelf on a provider axis rather than a contract axis. The objectStorageContract global-ADR topic already names the wire-shape contract as the S3 API; adding a provider value under that contract stays additive."
26
+ }
27
+ ],
28
+ "createdAt": "2026-09-08T00:00:00.000Z",
29
+ "updatedAt": "2026-09-08T00:00:00.000Z"
30
+ }
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Hetzner Object Storage round-trip probe.
3
+ *
4
+ * Composes the vendor-documented endpoint pattern
5
+ * <bucket>.<location>.your-objectstorage.com through the fixture-side
6
+ * hetzner-endpoint helper (TAC-2904; sole composer of the pattern),
7
+ * opens the shipped v1.0.0 facade (TAC-2901 over @aws-sdk/client-s3
8
+ * per ADR-2901) against the composed endpoint, puts a 1 KiB payload,
9
+ * gets it back byte-equal, deletes the scratch object, and asserts
10
+ * every lifecycle event record carries only whitelisted metadata
11
+ * fields per the fixture-side whitelist.
12
+ *
13
+ * accountBound: true. Skipped in CI without CI_HAS_HETZNER_OBJECT_STORAGE
14
+ * per hetzner-round-7-spec-2026-09-07 section 3.5 and section 5.4.
15
+ *
16
+ * Dependency-load discipline: the fixture-side facade module
17
+ * `object-store.mjs` imports `@aws-sdk/client-s3`, which is a
18
+ * fixture-scoped dependency installed by `npm install` inside the
19
+ * fixture directory (documented in the fixture README). To keep the
20
+ * accountBoundSkipped path loadable without that fixture install
21
+ * (surface inspection under `node --test`, tools that walk the probe
22
+ * module for its `accountBound` flag), the SDK-touching imports are
23
+ * DYNAMIC and gated on the CI_HAS_HETZNER_OBJECT_STORAGE env var.
24
+ *
25
+ * Mutation-purity discipline (per the operator estate hard gate row 2026-09-08): this
26
+ * module reads NO SIMULATE_ variable. Every fixture-side mutation
27
+ * hook (SIMULATE_HETZNER_ENDPOINT_MISSHAPEN,
28
+ * SIMULATE_HETZNER_EVENT_LEAK) lives in
29
+ * packages/rcf-lite/test/fixtures/infra-s3-and-queue/src/hetzner-endpoint.mjs
30
+ * and alters the INPUT the probe assembles (the composed URL or the
31
+ * event-record payload).
32
+ *
33
+ * Anchors AC-28110-1 (label AC-hetznerObjectStorage-endpointRoundTrip).
34
+ */
35
+
36
+ import { probeKey } from './probe-utils.mjs';
37
+
38
+ export const accountBound = true;
39
+
40
+ const VENDOR_PATTERN = /^https:\/\/[^./]+\.(fsn1|hel1|nbg1)\.your-objectstorage\.com$/;
41
+
42
+ export default async function runProbe() {
43
+ if (!process.env.CI_HAS_HETZNER_OBJECT_STORAGE) {
44
+ return [{
45
+ anchorAcId: 'AC-28110-1',
46
+ verdict: 'pass',
47
+ detail: 'accountBound: skipped (no CI_HAS_HETZNER_OBJECT_STORAGE)',
48
+ accountBoundSkipped: true,
49
+ }];
50
+ }
51
+
52
+ // Dynamic imports so the accountBoundSkipped path above loads
53
+ // without the fixture-scoped @aws-sdk/client-s3 dependency.
54
+ const {
55
+ composeHetznerEndpoint,
56
+ hetznerCredentialsFromEnv,
57
+ makeHetznerEventDecorator,
58
+ assertMetadataOnlyEventRecords,
59
+ HETZNER_EVENT_WHITELIST,
60
+ } = await import('../../../../packages/rcf-lite/test/fixtures/infra-s3-and-queue/src/hetzner-endpoint.mjs');
61
+ const { createObjectStore } = await import('../../../../packages/rcf-lite/test/fixtures/infra-s3-and-queue/src/object-store.mjs');
62
+
63
+ const { accessKeyId, secretAccessKey, bucket, location } = hetznerCredentialsFromEnv();
64
+ if (!accessKeyId || !secretAccessKey || !bucket || !location) {
65
+ return [{
66
+ anchorAcId: 'AC-28110-1',
67
+ verdict: 'fail',
68
+ detail: 'CI_HAS_HETZNER_OBJECT_STORAGE set but one or more required env vars missing (HETZNER_OBJECT_STORAGE_ACCESS_KEY_ID, HETZNER_OBJECT_STORAGE_SECRET_ACCESS_KEY, HETZNER_OBJECT_STORAGE_BUCKET, HETZNER_OBJECT_STORAGE_LOCATION)',
69
+ }];
70
+ }
71
+
72
+ const results = [];
73
+ let endpoint;
74
+ try {
75
+ endpoint = composeHetznerEndpoint({ bucket, location });
76
+ } catch (err) {
77
+ return [{
78
+ anchorAcId: 'AC-28110-1',
79
+ verdict: 'fail',
80
+ detail: `endpoint composition threw on field ${err.field || 'unknown'}: ${err.message}`,
81
+ }];
82
+ }
83
+ if (!VENDOR_PATTERN.test(endpoint)) {
84
+ return [{
85
+ anchorAcId: 'AC-28110-1',
86
+ verdict: 'fail',
87
+ detail: `composed endpoint does not match vendor pattern <bucket>.<location>.your-objectstorage.com; got ${endpoint}; missing subdomain: your-objectstorage.com`,
88
+ }];
89
+ }
90
+
91
+ const events = [];
92
+ const store = createObjectStore({
93
+ endpointUrl: endpoint,
94
+ bucket,
95
+ credentialsRef: { accessKeyId, secretAccessKey },
96
+ region: 'auto',
97
+ forcePathStyle: false,
98
+ onEvent: (e) => events.push(makeHetznerEventDecorator({
99
+ event: e.event,
100
+ ts: e.ts,
101
+ endpointHost: e.endpointHost,
102
+ bucketName: e.bucketName,
103
+ location,
104
+ key: e.key,
105
+ size: e.size,
106
+ contentType: e.contentType,
107
+ })),
108
+ });
109
+ const key = probeKey('probe/hetzner-smoke');
110
+ const body = Buffer.alloc(1024, 0x48);
111
+ try {
112
+ await store.ready();
113
+ await store.putObject(key, 'application/octet-stream', body);
114
+ const got = await store.getObject(key);
115
+ const roundTripEqual = got.body.length === 1024 && got.body.equals(body);
116
+ results.push({
117
+ anchorAcId: 'AC-28110-1',
118
+ verdict: roundTripEqual ? 'pass' : 'fail',
119
+ detail: roundTripEqual
120
+ ? `Hetzner Object Storage round-trip byte-equal against ${endpoint} bucket=${bucket} location=${location}`
121
+ : `Hetzner Object Storage round-trip failed byte equality; expected 1024 bytes got ${got.body.length}`,
122
+ });
123
+ const evAssertion = assertMetadataOnlyEventRecords(events);
124
+ results.push({
125
+ anchorAcId: 'AC-28110-1',
126
+ verdict: evAssertion.pass ? 'pass' : 'fail',
127
+ detail: evAssertion.pass
128
+ ? `every lifecycle event carries only whitelisted fields (${[...HETZNER_EVENT_WHITELIST].join(',')})`
129
+ : `event-secrecy leak: forbidden fields present ${evAssertion.leaked.join(',')}`,
130
+ });
131
+ } finally {
132
+ try { await store.deleteObject(key); } catch { /* teardown best effort */ }
133
+ await store.close();
134
+ }
135
+ return results;
136
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shim: run hetzner-object-storage-round-trip against the extended
3
+ * infra-s3-and-queue fixture and write
4
+ * .rcf/reports/blueprints/object-storage-s3/hetzner-object-storage-round-trip.json.
5
+ */
6
+
7
+ import runProbe from './hetzner-object-storage-round-trip.mjs';
8
+ import { runShim } from './probe-utils.mjs';
9
+
10
+ const engine = { kind: 's3', image: 'hetzner-object-storage-cloud', healthy: true };
11
+ runShim('hetzner-object-storage-round-trip', engine, runProbe);
@@ -2,7 +2,7 @@
2
2
  "reqId": "object-storage-s3-REQ-001",
3
3
  "prdId": "PRD-001",
4
4
  "title": "One facade module is the sole reader of the S3 client and opens on boot",
5
- "description": "The application accesses object storage through a single facade module in the project's source tree that is the ONLY module in the tree that imports the S3 client (either @aws-sdk/client-s3 on Node targets or aws4fetch on Workers targets per ADR-2901). Every other module that touches object storage imports the facade and calls its named domain verbs; no other module holds the raw S3 client, an S3Client instance, or an aws4fetch AwsClient instance. On process boot, the facade opens the client against the elicited endpoint URL and bucket name, and once the first successful ready-check completes, emits a facadeReady lifecycle event carrying endpoint host and bucket name. The endpoint URL (a Cloudflare R2 URL, an AWS S3 URL, a MinIO URL, or any S3-compatible remote) and the bucket name are elicited at apply time.",
5
+ "description": "The application accesses object storage through a single facade module in the project's source tree that is the ONLY module in the tree that imports the S3 client (either @aws-sdk/client-s3 on Node targets or aws4fetch on Workers targets per ADR-2901). Every other module that touches object storage imports the facade and calls its named domain verbs; no other module holds the raw S3 client, an S3Client instance, or an aws4fetch AwsClient instance. On process boot, the facade opens the client against the elicited endpoint URL and bucket name, and once the first successful ready-check completes, emits a facadeReady lifecycle event carrying endpoint host and bucket name. The endpoint URL (a Cloudflare R2 URL, an AWS S3 URL, a MinIO URL, or any S3-compatible remote) and the bucket name are elicited at apply time. This blueprint declares the objectStorage applied capability at runtime: the facade module is the sole channel through which consumer code sees the S3-shaped store, and any downstream blueprint whose requiresAppliedCapabilities lists objectStorage is satisfied by an applied object-storage-s3 pinning the facade to its client and the elicited endpoint URL and bucket name. The s3-endpoint-url and s3-bucket-name are elicited at apply time and dereferenced once at boot. The s3-adapter is elicited between aws-sdk-client-s3 (AWS SDK v3 client for Node targets) and aws4fetch (small SigV4 fetch adapter for Workers targets). The presigned-ttl-ceiling-seconds is elicited within the ADR-2902 default cap.",
6
6
  "category": "functional",
7
7
  "domain": "object-storage",
8
8
  "priority": "must",
@@ -14,5 +14,9 @@
14
14
  "version": "1.0.0",
15
15
  "status": "approved",
16
16
  "createdAt": "2026-09-06T18:00:00.000Z",
17
- "updatedAt": "2026-09-06T18:00:00.000Z"
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2901-object-storage-s3-facade",
20
+ "field": "responsibilities.facade"
21
+ }
18
22
  }
@@ -2,7 +2,7 @@
2
2
  "reqId": "object-storage-s3-REQ-002",
3
3
  "prdId": "PRD-001",
4
4
  "title": "Put, get, delete, list contract on typed keys",
5
- "description": "The facade exposes named domain verbs (putObject, getObject, deleteObject, listObjects) that take a typed key (a project-defined key namespace, not a raw string on the public surface where a typed alternative fits), a content-type string on put, and return either the object body (get), a boolean success (put, delete), or a paginated key listing (list). Every read and write goes through the S3 client's public request surface; no facade verb accepts a raw request object or a general-purpose passthrough from consumer code. The put verb emits objectPut with key, size, contentType, timestamp; the delete verb emits objectDeleted with key, timestamp.",
5
+ "description": "The facade exposes named domain verbs (putObject, getObject, deleteObject, listObjects) that take a typed key (a project-defined key namespace, not a raw string on the public surface where a typed alternative fits), a content-type string on put, and return either the object body (get), a boolean success (put, delete), or a paginated key listing (list). Every read and write goes through the S3 client's public request surface; no facade verb accepts a raw request object or a general-purpose passthrough from consumer code. The put verb emits objectPut with key, size, contentType, timestamp; the delete verb emits objectDeleted with key, timestamp. Keys reach the facade as strings; the facade validates them at the boundary against a shipped key-shape check: reject empty keys, keys with a leading slash, keys that contain the literal traversal segments \"..\" or \"//\", and keys longer than 1024 bytes. The applying project may layer a stricter project-typed key on top of the string, but the facade's public verbs accept the shape-validated string as the primitive.",
6
6
  "category": "functional",
7
7
  "domain": "object-storage",
8
8
  "priority": "must",
@@ -14,5 +14,9 @@
14
14
  "version": "1.0.0",
15
15
  "status": "approved",
16
16
  "createdAt": "2026-09-06T18:00:00.000Z",
17
- "updatedAt": "2026-09-06T18:00:00.000Z"
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2901-object-storage-s3-facade",
20
+ "field": "responsibilities.crudVerbs"
21
+ }
18
22
  }
@@ -14,5 +14,9 @@
14
14
  "version": "1.0.0",
15
15
  "status": "approved",
16
16
  "createdAt": "2026-09-06T18:00:00.000Z",
17
- "updatedAt": "2026-09-06T18:00:00.000Z"
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2901-object-storage-s3-facade",
20
+ "field": "interfaces.store.verbs"
21
+ }
18
22
  }
@@ -2,7 +2,7 @@
2
2
  "reqId": "object-storage-s3-REQ-004",
3
3
  "prdId": "PRD-001",
4
4
  "title": "Multipart-upload contract above an elicited threshold",
5
- "description": "For payloads above the elicited threshold (default 8 MiB per ADR-2903), the facade's put path switches transparently to multipart-upload: initiate multipart upload, part-upload each chunk with a stable part number and returned ETag, complete-multipart-upload with the ordered part list. A part-upload failure aborts the in-flight upload (AbortMultipartUpload) before propagating the error; leaving an incomplete multipart upload behind is not the shipped path. On completion the objectPut lifecycle event fires with the final total size. Multipart re-upload semantics (per the R2 doc, a re-upload to the same part number replaces the previous with loss-on-fail) is a documented gotcha named in the README; the multipart-upload probe asserts an end-to-end round-trip of at least 10 MiB.",
5
+ "description": "For payloads above the elicited threshold (default 8 MiB per ADR-2903), the facade's put path switches transparently to multipart-upload: initiate multipart upload, part-upload each chunk with a stable part number and returned ETag, complete-multipart-upload with the ordered part list. A part-upload failure aborts the in-flight upload (AbortMultipartUpload) before propagating the error; leaving an incomplete multipart upload behind is not the shipped path. On completion the objectPut lifecycle event fires with the final total size. Multipart re-upload semantics (per the R2 doc, a re-upload to the same part number replaces the previous with loss-on-fail) is a documented gotcha named in the README; the multipart-upload probe asserts an end-to-end round-trip of at least 10 MiB. The multipart-threshold-bytes is elicited at apply time (default 8388608, 8 MiB, per ADR-2903); at or above the threshold the facade's put path switches to multipart-upload.",
6
6
  "category": "functional",
7
7
  "domain": "object-storage",
8
8
  "priority": "must",
@@ -14,5 +14,9 @@
14
14
  "version": "1.0.0",
15
15
  "status": "approved",
16
16
  "createdAt": "2026-09-06T18:00:00.000Z",
17
- "updatedAt": "2026-09-06T18:00:00.000Z"
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2902-object-storage-s3-multipart-uploader",
20
+ "field": "responsibilities.multipart"
21
+ }
18
22
  }
@@ -2,7 +2,7 @@
2
2
  "reqId": "object-storage-s3-REQ-005",
3
3
  "prdId": "PRD-001",
4
4
  "title": "Lifecycle events at four moments with metadata-only fields",
5
- "description": "The facade emits four lifecycle events on the injected event sink: facadeReady (endpoint host, bucket name, timestamp), objectPut (key, size, contentType, timestamp), objectDeleted (key, timestamp), presignedIssued (key, ttl, timestamp). No event record carries object body bytes, no body checksum, no user id fields beyond what appears in the key itself, no PII drawn from the object body, and no adapter internal state. The event sink is a synchronous callback the operator wires; the facade never invokes it with domain-row values or authentication tokens. TAC-2903 realises the event-sink contract; the event-secrecy probe asserts field-level whitelist compliance against a PII fixture.",
5
+ "description": "The facade emits four lifecycle events on the injected event sink: facadeReady (endpoint host, bucket name, ts), objectPut (key, size, contentType, ts), objectDeleted (key, ts), presignedIssued (key, ttl, ts). No event record carries object body bytes, no body checksum, no user id fields beyond what appears in the key itself, no PII drawn from the object body, and no adapter internal state. The event sink is a synchronous callback the operator wires; the facade never invokes it with domain-row values or authentication tokens. TAC-2903 realises the event-sink contract; the event-secrecy probe asserts field-level whitelist compliance against a PII fixture.",
6
6
  "category": "functional",
7
7
  "domain": "object-storage",
8
8
  "priority": "must",
@@ -14,5 +14,9 @@
14
14
  "version": "1.0.0",
15
15
  "status": "approved",
16
16
  "createdAt": "2026-09-06T18:00:00.000Z",
17
- "updatedAt": "2026-09-06T18:00:00.000Z"
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2903-object-storage-s3-event-sink",
20
+ "field": "responsibilities.lifecycle"
21
+ }
18
22
  }
@@ -2,7 +2,7 @@
2
2
  "reqId": "object-storage-s3-REQ-006",
3
3
  "prdId": "PRD-001",
4
4
  "title": "Credential-pair discipline via security-secrets-management; refuses composition without",
5
- "description": "The credential pair (accessKeyId, secretAccessKey) required to sign S3 requests is a secretRef value delegated to security-secrets-management: an opaque string agreed between object-storage-s3 and security-secrets-management naming the secret entry, never the credential value itself. The apply verb refuses composition on a project that has NOT applied security-secrets-management with exit code 3 and the stable message id object-storage-s3-no-secrets on stderr, per infra round 5 spec section 5.2 (Baz decision 6). The refusal names the required predecessor blueprint (security-secrets-management) and the override flag (--allow-no-secrets-yet). The override records a note on the applied blueprint's source.notes so rcf define validate can later flag the surface as not-yet-activated. The compose-test path checks the pair through the applied secrets facade before the object-store facade opens.",
5
+ "description": "The credential pair (accessKeyId, secretAccessKey) required to sign S3 requests is a secretRef value delegated to security-secrets-management: an opaque string agreed between object-storage-s3 and security-secrets-management naming the secret entry, never the credential value itself. The apply verb refuses composition on a project that has NOT applied security-secrets-management with exit code 3 and the stable message id object-storage-s3-no-secrets on stderr, per infra round 5 spec section 5.2 (maintainer decision). The refusal names the required predecessor blueprint (security-secrets-management) and the override flag (--allow-no-secrets-yet). The override records a note on the applied blueprint's source.notes so rcf define validate can later flag the surface as not-yet-activated. The compose-test path checks the pair through the applied secrets facade before the object-store facade opens. The facade factory accepts only the opaque secretRef and a resolver callback: the applying project passes an unresolved secretRef ({ id, provider }) plus a resolver that dereferences it inside the facade module. The factory refuses a plain { accessKeyId, secretAccessKey } object at the boundary; the resolver runs once per boot inside the module and never leaks the resolved pair beyond the S3 client construction call.",
6
6
  "category": "security",
7
7
  "domain": "object-storage",
8
8
  "priority": "must",
@@ -14,5 +14,9 @@
14
14
  "version": "1.0.0",
15
15
  "status": "approved",
16
16
  "createdAt": "2026-09-06T18:00:00.000Z",
17
- "updatedAt": "2026-09-06T18:00:00.000Z"
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2901-object-storage-s3-facade",
20
+ "field": "responsibilities.credential"
21
+ }
18
22
  }
@@ -0,0 +1,22 @@
1
+ {
2
+ "reqId": "object-storage-s3-REQ-101",
3
+ "prdId": "PRD-001",
4
+ "title": "Hetzner Object Storage adapter: endpoint-shape helper composes <bucket>.<location>.your-objectstorage.com from an elicited bucket and location code",
5
+ "description": "The object-storage-s3 v1.1.0 minor bump adds a Hetzner Object Storage provider value under the shipped S3-API facade contract without changing the outward facade shape. The Hetzner Object Storage endpoint follows the vendor-documented pattern <bucket>.<location>.your-objectstorage.com per https://docs.hetzner.com/storage/object-storage/overview; a project applying the blueprint elicits a bucket name and a location code (fsn1 for Falkenstein, hel1 for Helsinki, nbg1 for Nuremberg per the same overview page) and the adapter composes the https endpoint URL through a single helper module. The helper is the sole composer of the vendor pattern for this provider so a project cannot accidentally construct an invalid endpoint by hand-concatenating the parts; the composed endpoint feeds the shipped S3 client (@aws-sdk/client-s3 on Node targets per ADR-2901) unchanged. The v1.0.0 Cloudflare R2, AWS S3 and MinIO paths stay byte-identical: the endpoint URL parameter on the facade remains freeform, and only projects that elicit hetznerObjectStorage as the provider consume the helper.",
6
+ "category": "functional",
7
+ "domain": "object-storage",
8
+ "priority": "must",
9
+ "rationale": "A single helper module for the Hetzner Object Storage endpoint pattern turns a documented vendor convention into a mechanical composition that the applied project cannot mis-shape by editing a config file. Reading the endpoint pattern from bucket plus location, in code, makes the composition observable to the probe (which asserts the composed value against the vendor pattern) and gives the mutation-purity switch a fixture-side seam (SIMULATE_HETZNER_ENDPOINT_MISSHAPEN alters the composed bucket segment on the INPUT side; the probe module never reads a SIMULATE_ variable and the composition module always composes correctly). The Cloudflare R2, AWS S3 and MinIO providers keep their v1.0.0 shape because their endpoint URLs are already documented on their own pages and each project applying those providers pastes the endpoint URL through the elicited freeform parameter; Hetzner Object Storage differs only in that the endpoint is derived from two elicited values rather than one pasted URL.",
10
+ "tags": [
11
+ "blueprint:object-storage-s3",
12
+ "category:07-hetzner-object-storage-adapter"
13
+ ],
14
+ "version": "1.1.0",
15
+ "status": "approved",
16
+ "createdAt": "2026-09-08T00:00:00.000Z",
17
+ "updatedAt": "2026-09-09T00:00:00Z",
18
+ "deliveredBy": {
19
+ "tacId": "TAC-2904-object-storage-s3-hetzner-endpoint-helper",
20
+ "field": "responsibilities.composeEndpoint"
21
+ }
22
+ }