rcf-lite 0.22.0 → 0.24.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 (591) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/bin/rcf.js +13 -2
  3. package/blueprints/application-account-settings/docs/topics.md +9 -1
  4. package/blueprints/application-admin-console/CHANGELOG.md +12 -0
  5. package/blueprints/application-admin-console/blueprint.json +34 -1
  6. package/blueprints/application-admin-console/contributions/adrs/adr-2214-application-admin-console-consume-zero-trust-gate.json +25 -0
  7. package/blueprints/application-admin-console/contributions/requirements/application-admin-console-req-014.json +17 -0
  8. package/blueprints/application-admin-console/contributions/tacs/tac-2214-application-admin-console-access-gated-signin-surface.json +32 -0
  9. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21815.json +27 -0
  10. package/blueprints/application-admin-console/contributions/user-stories/application-admin-console-us-21816.json +27 -0
  11. package/blueprints/application-admin-console/docs/topics.md +9 -1
  12. package/blueprints/application-admin-console/guide/application-admin-console.md +24 -0
  13. package/blueprints/application-admin-console/probe-packs/application-admin-console.pack.mjs +26 -1
  14. package/blueprints/application-api-rest/docs/topics.md +9 -1
  15. package/blueprints/application-charts/docs/topics.md +9 -1
  16. package/blueprints/application-dashboard/docs/topics.md +9 -1
  17. package/blueprints/application-datatable/docs/topics.md +9 -1
  18. package/blueprints/application-empty-error-states/docs/topics.md +9 -1
  19. package/blueprints/application-error-handling/docs/topics.md +9 -1
  20. package/blueprints/application-file-upload/docs/topics.md +9 -1
  21. package/blueprints/application-forms-wizard/docs/topics.md +9 -1
  22. package/blueprints/application-notifications-in-app/docs/topics.md +9 -1
  23. package/blueprints/application-onboarding-tour/docs/topics.md +9 -1
  24. package/blueprints/application-spa/docs/topics.md +10 -2
  25. package/blueprints/delivery-ci-workflows/docs/topics.md +9 -1
  26. package/blueprints/deploy-cloudflare-workers/CHANGELOG.md +69 -0
  27. package/blueprints/deploy-cloudflare-workers/README.md +12 -0
  28. package/blueprints/deploy-cloudflare-workers/blueprint.json +234 -36
  29. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1306-deploy-cloudflare-workers-spa-shape.json +30 -0
  30. package/blueprints/deploy-cloudflare-workers/contributions/probes/assets-manifest-scan.mjs +207 -0
  31. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-013.json +18 -0
  32. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-014.json +18 -0
  33. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12113.json +36 -0
  34. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12114.json +27 -0
  35. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12115.json +27 -0
  36. package/blueprints/deploy-cloudflare-workers/docs/topics.md +10 -2
  37. package/blueprints/deploy-cloudflare-workers/guide/deploy-cloudflare-workers.md +25 -0
  38. package/blueprints/edge-cloudflare-access/CHANGELOG.md +23 -0
  39. package/blueprints/edge-cloudflare-access/README.md +141 -0
  40. package/blueprints/edge-cloudflare-access/blueprint.json +197 -0
  41. package/blueprints/edge-cloudflare-access/contributions/adrs/adr-3501-edge-cloudflare-access-jwt-gate.json +14 -0
  42. package/blueprints/edge-cloudflare-access/contributions/adrs/adr-3502-edge-cloudflare-access-identity-provider.json +25 -0
  43. package/blueprints/edge-cloudflare-access/contributions/adrs/adr-3503-edge-cloudflare-access-policy-scope.json +12 -0
  44. package/blueprints/edge-cloudflare-access/contributions/adrs/adr-3504-edge-cloudflare-access-audit-retention.json +12 -0
  45. package/blueprints/edge-cloudflare-access/contributions/probes/admin-console-gate-surface.mjs +100 -0
  46. package/blueprints/edge-cloudflare-access/contributions/probes/audit-event-secrecy.mjs +70 -0
  47. package/blueprints/edge-cloudflare-access/contributions/probes/jwt-validator-fixture.mjs +63 -0
  48. package/blueprints/edge-cloudflare-access/contributions/probes/jwt-validator-reject.mjs +95 -0
  49. package/blueprints/edge-cloudflare-access/contributions/probes/probe-utils.mjs +90 -0
  50. package/blueprints/edge-cloudflare-access/contributions/probes/real-account-gated-url.mjs +65 -0
  51. package/blueprints/edge-cloudflare-access/contributions/probes/run-admin-console-gate-surface.mjs +5 -0
  52. package/blueprints/edge-cloudflare-access/contributions/probes/run-audit-event-secrecy.mjs +5 -0
  53. package/blueprints/edge-cloudflare-access/contributions/probes/run-jwt-validator-fixture.mjs +5 -0
  54. package/blueprints/edge-cloudflare-access/contributions/probes/run-jwt-validator-reject.mjs +5 -0
  55. package/blueprints/edge-cloudflare-access/contributions/probes/run-real-account-gated-url.mjs +5 -0
  56. package/blueprints/edge-cloudflare-access/contributions/probes/run-wrangler-seam.mjs +5 -0
  57. package/blueprints/edge-cloudflare-access/contributions/probes/wrangler-seam.mjs +203 -0
  58. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-001.json +17 -0
  59. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-002.json +17 -0
  60. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-003.json +17 -0
  61. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-004.json +17 -0
  62. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-005.json +17 -0
  63. package/blueprints/edge-cloudflare-access/contributions/requirements/edge-cloudflare-access-req-006.json +18 -0
  64. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3501-edge-cloudflare-access-jwt-validator.json +31 -0
  65. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3502-edge-cloudflare-access-application-declaration.json +33 -0
  66. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3503-edge-cloudflare-access-policy-shape.json +25 -0
  67. package/blueprints/edge-cloudflare-access/contributions/tacs/tac-3504-edge-cloudflare-access-audit-sink.json +25 -0
  68. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34101.json +27 -0
  69. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34102.json +28 -0
  70. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34103.json +27 -0
  71. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34104.json +27 -0
  72. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34105.json +27 -0
  73. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34106.json +27 -0
  74. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34107.json +27 -0
  75. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34108.json +27 -0
  76. package/blueprints/edge-cloudflare-access/contributions/user-stories/edge-cloudflare-access-us-34109.json +27 -0
  77. package/blueprints/edge-cloudflare-access/docs/topics.md +68 -0
  78. package/blueprints/edge-cloudflare-access/guide/edge-cloudflare-access.md +180 -0
  79. package/blueprints/edge-cloudflare-rate-limiting/CHANGELOG.md +10 -0
  80. package/blueprints/edge-cloudflare-rate-limiting/README.md +73 -0
  81. package/blueprints/edge-cloudflare-rate-limiting/blueprint.json +174 -0
  82. package/blueprints/edge-cloudflare-rate-limiting/contributions/adrs/adr-3701-edge-cloudflare-rate-limiting-throttle-contract.json +14 -0
  83. package/blueprints/edge-cloudflare-rate-limiting/contributions/adrs/adr-3702-edge-cloudflare-rate-limiting-layering.json +14 -0
  84. package/blueprints/edge-cloudflare-rate-limiting/contributions/adrs/adr-3703-edge-cloudflare-rate-limiting-manifest-shape.json +14 -0
  85. package/blueprints/edge-cloudflare-rate-limiting/contributions/adrs/adr-3704-edge-cloudflare-rate-limiting-drift-audit-cadence.json +14 -0
  86. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/event-secrecy.mjs +104 -0
  87. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/manifest-presence.mjs +95 -0
  88. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/manifest-schema-validate.mjs +130 -0
  89. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/probe-utils.mjs +111 -0
  90. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/real-account-burst-and-429.mjs +104 -0
  91. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/run-event-secrecy.mjs +5 -0
  92. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/run-manifest-presence.mjs +5 -0
  93. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/run-manifest-schema-validate.mjs +5 -0
  94. package/blueprints/edge-cloudflare-rate-limiting/contributions/probes/run-real-account-burst-and-429.mjs +5 -0
  95. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-001.json +17 -0
  96. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-002.json +17 -0
  97. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-003.json +17 -0
  98. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-004.json +17 -0
  99. package/blueprints/edge-cloudflare-rate-limiting/contributions/requirements/edge-cloudflare-rate-limiting-req-005.json +17 -0
  100. package/blueprints/edge-cloudflare-rate-limiting/contributions/schemas/rate-limit-rule.schema.json +67 -0
  101. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3701-edge-cloudflare-rate-limiting-manifest-schema.json +31 -0
  102. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3702-edge-cloudflare-rate-limiting-management-surface-doc.json +25 -0
  103. package/blueprints/edge-cloudflare-rate-limiting/contributions/tacs/tac-3703-edge-cloudflare-rate-limiting-drift-audit-runner.json +26 -0
  104. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36101.json +27 -0
  105. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36102.json +27 -0
  106. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36103.json +27 -0
  107. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36104.json +27 -0
  108. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36105.json +27 -0
  109. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36106.json +27 -0
  110. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36107.json +27 -0
  111. package/blueprints/edge-cloudflare-rate-limiting/contributions/user-stories/edge-cloudflare-rate-limiting-us-36108.json +27 -0
  112. package/blueprints/edge-cloudflare-rate-limiting/docs/topics.md +68 -0
  113. package/blueprints/edge-cloudflare-rate-limiting/guide/edge-cloudflare-rate-limiting.md +88 -0
  114. package/blueprints/edge-cloudflare-turnstile/CHANGELOG.md +20 -0
  115. package/blueprints/edge-cloudflare-turnstile/README.md +95 -0
  116. package/blueprints/edge-cloudflare-turnstile/blueprint.json +161 -0
  117. package/blueprints/edge-cloudflare-turnstile/contributions/adrs/adr-3601-edge-cloudflare-turnstile-verifier-contract.json +14 -0
  118. package/blueprints/edge-cloudflare-turnstile/contributions/adrs/adr-3602-edge-cloudflare-turnstile-widget-mode.json +14 -0
  119. package/blueprints/edge-cloudflare-turnstile/contributions/adrs/adr-3603-edge-cloudflare-turnstile-refuse-shape.json +14 -0
  120. package/blueprints/edge-cloudflare-turnstile/contributions/probes/event-secrecy.mjs +51 -0
  121. package/blueprints/edge-cloudflare-turnstile/contributions/probes/guard-shape-scan.mjs +48 -0
  122. package/blueprints/edge-cloudflare-turnstile/contributions/probes/probe-utils.mjs +139 -0
  123. package/blueprints/edge-cloudflare-turnstile/contributions/probes/run-event-secrecy.mjs +5 -0
  124. package/blueprints/edge-cloudflare-turnstile/contributions/probes/run-guard-shape-scan.mjs +5 -0
  125. package/blueprints/edge-cloudflare-turnstile/contributions/probes/run-secret-shape-scan.mjs +5 -0
  126. package/blueprints/edge-cloudflare-turnstile/contributions/probes/run-siteverify-fixture.mjs +5 -0
  127. package/blueprints/edge-cloudflare-turnstile/contributions/probes/secret-shape-scan.mjs +77 -0
  128. package/blueprints/edge-cloudflare-turnstile/contributions/probes/siteverify-fixture.mjs +53 -0
  129. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-001.json +17 -0
  130. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-002.json +17 -0
  131. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-003.json +17 -0
  132. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-004.json +17 -0
  133. package/blueprints/edge-cloudflare-turnstile/contributions/requirements/edge-cloudflare-turnstile-req-005.json +17 -0
  134. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3601-edge-cloudflare-turnstile-widget-mount.json +26 -0
  135. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3602-edge-cloudflare-turnstile-server-verifier.json +36 -0
  136. package/blueprints/edge-cloudflare-turnstile/contributions/tacs/tac-3603-edge-cloudflare-turnstile-magic-link-hook.json +25 -0
  137. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35101.json +27 -0
  138. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35102.json +27 -0
  139. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35103.json +27 -0
  140. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35104.json +27 -0
  141. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35105.json +36 -0
  142. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35106.json +27 -0
  143. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35107.json +27 -0
  144. package/blueprints/edge-cloudflare-turnstile/contributions/user-stories/edge-cloudflare-turnstile-us-35108.json +27 -0
  145. package/blueprints/edge-cloudflare-turnstile/docs/topics.md +68 -0
  146. package/blueprints/edge-cloudflare-turnstile/guide/edge-cloudflare-turnstile.md +104 -0
  147. package/blueprints/edge-cloudflare-turnstile/probe-packs/edge-cloudflare-turnstile.pack.mjs +146 -0
  148. package/blueprints/email-smtp-resend/docs/topics.md +9 -1
  149. package/blueprints/jobs-background/CHANGELOG.md +16 -0
  150. package/blueprints/jobs-background/README.md +105 -0
  151. package/blueprints/jobs-background/blueprint.json +149 -0
  152. package/blueprints/jobs-background/contributions/adrs/adr-3101-jobs-background-model.json +27 -0
  153. package/blueprints/jobs-background/contributions/adrs/adr-3102-jobs-background-scheduler-mode.json +25 -0
  154. package/blueprints/jobs-background/contributions/adrs/adr-3103-jobs-background-requires-applied-capabilities.json +25 -0
  155. package/blueprints/jobs-background/contributions/adrs/adr-3104-jobs-background-timeout-floor.json +25 -0
  156. package/blueprints/jobs-background/contributions/probes/apply-time-override.mjs +95 -0
  157. package/blueprints/jobs-background/contributions/probes/apply-time-refusal.mjs +82 -0
  158. package/blueprints/jobs-background/contributions/probes/event-secrecy.mjs +69 -0
  159. package/blueprints/jobs-background/contributions/probes/fake-clock-cron.mjs +65 -0
  160. package/blueprints/jobs-background/contributions/probes/probe-utils.mjs +91 -0
  161. package/blueprints/jobs-background/contributions/probes/retry-and-fail.mjs +65 -0
  162. package/blueprints/jobs-background/contributions/probes/run-apply-time-override.mjs +10 -0
  163. package/blueprints/jobs-background/contributions/probes/run-apply-time-refusal.mjs +11 -0
  164. package/blueprints/jobs-background/contributions/probes/run-event-secrecy.mjs +11 -0
  165. package/blueprints/jobs-background/contributions/probes/run-fake-clock-cron.mjs +11 -0
  166. package/blueprints/jobs-background/contributions/probes/run-retry-and-fail.mjs +11 -0
  167. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-001.json +18 -0
  168. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-002.json +18 -0
  169. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-003.json +18 -0
  170. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-004.json +18 -0
  171. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-005.json +18 -0
  172. package/blueprints/jobs-background/contributions/requirements/jobs-background-req-006.json +18 -0
  173. package/blueprints/jobs-background/contributions/tacs/tac-3101-jobs-background-job-definition.json +50 -0
  174. package/blueprints/jobs-background/contributions/tacs/tac-3102-jobs-background-scheduler.json +50 -0
  175. package/blueprints/jobs-background/contributions/tacs/tac-3103-jobs-background-run-log.json +49 -0
  176. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30101.json +25 -0
  177. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30102.json +25 -0
  178. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30103.json +25 -0
  179. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30104.json +25 -0
  180. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30105.json +25 -0
  181. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30106.json +25 -0
  182. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30107.json +25 -0
  183. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30108.json +25 -0
  184. package/blueprints/jobs-background/contributions/user-stories/jobs-background-us-30109.json +25 -0
  185. package/blueprints/jobs-background/docs/topics.md +68 -0
  186. package/blueprints/jobs-background/guide/jobs-background.md +147 -0
  187. package/blueprints/messaging-queue-cloudflare/CHANGELOG.md +15 -0
  188. package/blueprints/messaging-queue-cloudflare/README.md +125 -0
  189. package/blueprints/messaging-queue-cloudflare/blueprint.json +67 -0
  190. package/blueprints/messaging-queue-cloudflare/contributions/adrs/adr-3001-messaging-queue-cloudflare-adapter.json +30 -0
  191. package/blueprints/messaging-queue-cloudflare/contributions/adrs/adr-3002-messaging-queue-cloudflare-delivery-semantics.json +25 -0
  192. package/blueprints/messaging-queue-cloudflare/contributions/adrs/adr-3003-messaging-queue-cloudflare-max-attempts-floor.json +25 -0
  193. package/blueprints/messaging-queue-cloudflare/contributions/adrs/adr-3004-messaging-queue-cloudflare-batch-defaults.json +25 -0
  194. package/blueprints/messaging-queue-cloudflare/contributions/probes/event-secrecy.mjs +137 -0
  195. package/blueprints/messaging-queue-cloudflare/contributions/probes/probe-utils.mjs +82 -0
  196. package/blueprints/messaging-queue-cloudflare/contributions/probes/producer-facade-ready.mjs +35 -0
  197. package/blueprints/messaging-queue-cloudflare/contributions/probes/publish-to-delivery.mjs +94 -0
  198. package/blueprints/messaging-queue-cloudflare/contributions/probes/real-account-concurrency-smoke.mjs +54 -0
  199. package/blueprints/messaging-queue-cloudflare/contributions/probes/retry-and-dlq.mjs +87 -0
  200. package/blueprints/messaging-queue-cloudflare/contributions/probes/run-event-secrecy.mjs +5 -0
  201. package/blueprints/messaging-queue-cloudflare/contributions/probes/run-producer-facade-ready.mjs +11 -0
  202. package/blueprints/messaging-queue-cloudflare/contributions/probes/run-publish-to-delivery.mjs +5 -0
  203. package/blueprints/messaging-queue-cloudflare/contributions/probes/run-real-account-concurrency-smoke.mjs +5 -0
  204. package/blueprints/messaging-queue-cloudflare/contributions/probes/run-retry-and-dlq.mjs +5 -0
  205. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-001.json +18 -0
  206. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-002.json +18 -0
  207. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-003.json +18 -0
  208. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-004.json +18 -0
  209. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-005.json +18 -0
  210. package/blueprints/messaging-queue-cloudflare/contributions/requirements/messaging-queue-cloudflare-req-006.json +18 -0
  211. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3001-messaging-queue-cloudflare-producer-facade.json +56 -0
  212. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3002-messaging-queue-cloudflare-consumer-registration.json +40 -0
  213. package/blueprints/messaging-queue-cloudflare/contributions/tacs/tac-3003-messaging-queue-cloudflare-event-sink.json +39 -0
  214. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29101.json +34 -0
  215. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29102.json +34 -0
  216. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29103.json +25 -0
  217. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29104.json +25 -0
  218. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29105.json +25 -0
  219. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29106.json +25 -0
  220. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29107.json +25 -0
  221. package/blueprints/messaging-queue-cloudflare/contributions/user-stories/messaging-queue-cloudflare-us-29108.json +25 -0
  222. package/blueprints/messaging-queue-cloudflare/docs/topics.md +68 -0
  223. package/blueprints/messaging-queue-cloudflare/guide/messaging-queue-cloudflare.md +110 -0
  224. package/blueprints/object-storage-s3/docs/topics.md +9 -1
  225. package/blueprints/observability-essentials/docs/topics.md +9 -1
  226. package/blueprints/observability-logging/docs/topics.md +9 -1
  227. package/blueprints/observability-probe-endpoints/docs/topics.md +9 -1
  228. package/blueprints/persistence-data-d1/docs/topics.md +9 -1
  229. package/blueprints/persistence-data-postgres/docs/topics.md +9 -1
  230. package/blueprints/persistence-data-sqlite/docs/topics.md +9 -1
  231. package/blueprints/platform-cloudflare-cron-triggers/CHANGELOG.md +22 -0
  232. package/blueprints/platform-cloudflare-cron-triggers/README.md +117 -0
  233. package/blueprints/platform-cloudflare-cron-triggers/blueprint.json +85 -0
  234. package/blueprints/platform-cloudflare-cron-triggers/contributions/adrs/adr-3301-platform-cloudflare-cron-triggers-scheduled-trigger-contract.json +14 -0
  235. package/blueprints/platform-cloudflare-cron-triggers/contributions/adrs/adr-3302-platform-cloudflare-cron-triggers-dispatcher-mode.json +14 -0
  236. package/blueprints/platform-cloudflare-cron-triggers/contributions/adrs/adr-3303-platform-cloudflare-cron-triggers-skew-tolerance-default.json +14 -0
  237. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/dispatcher-routing.mjs +64 -0
  238. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/event-secrecy.mjs +100 -0
  239. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/probe-utils.mjs +70 -0
  240. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/real-account-scheduled-smoke.mjs +100 -0
  241. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/run-dispatcher-routing.mjs +5 -0
  242. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/run-event-secrecy.mjs +5 -0
  243. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/run-real-account-scheduled-smoke.mjs +5 -0
  244. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/run-skew-tolerance.mjs +5 -0
  245. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/run-wrangler-test-scheduled.mjs +5 -0
  246. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/skew-tolerance.mjs +130 -0
  247. package/blueprints/platform-cloudflare-cron-triggers/contributions/probes/wrangler-test-scheduled.mjs +129 -0
  248. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-001.json +17 -0
  249. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-002.json +17 -0
  250. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-003.json +17 -0
  251. package/blueprints/platform-cloudflare-cron-triggers/contributions/requirements/platform-cloudflare-cron-triggers-req-004.json +17 -0
  252. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3301-platform-cloudflare-cron-triggers-scheduled-handler.json +22 -0
  253. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3302-platform-cloudflare-cron-triggers-expression-router.json +22 -0
  254. package/blueprints/platform-cloudflare-cron-triggers/contributions/tacs/tac-3303-platform-cloudflare-cron-triggers-event-sink.json +21 -0
  255. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32101.json +25 -0
  256. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32102.json +34 -0
  257. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32103.json +34 -0
  258. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32104.json +34 -0
  259. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32105.json +25 -0
  260. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32106.json +25 -0
  261. package/blueprints/platform-cloudflare-cron-triggers/contributions/user-stories/platform-cloudflare-cron-triggers-us-32107.json +25 -0
  262. package/blueprints/platform-cloudflare-cron-triggers/docs/topics.md +71 -0
  263. package/blueprints/platform-cloudflare-cron-triggers/guide/platform-cloudflare-cron-triggers.md +119 -0
  264. package/blueprints/platform-cloudflare-durable-objects/CHANGELOG.md +23 -0
  265. package/blueprints/platform-cloudflare-durable-objects/README.md +200 -0
  266. package/blueprints/platform-cloudflare-durable-objects/blueprint.json +243 -0
  267. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3401-platform-cloudflare-durable-objects-single-cell-contract.json +14 -0
  268. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3402-platform-cloudflare-durable-objects-websocket-hub-contract.json +14 -0
  269. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3403-platform-cloudflare-durable-objects-storage-backend.json +14 -0
  270. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3404-platform-cloudflare-durable-objects-migrations-shape.json +14 -0
  271. package/blueprints/platform-cloudflare-durable-objects/contributions/adrs/adr-3405-platform-cloudflare-durable-objects-hibernation-posture.json +14 -0
  272. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/alarm-fires-once.mjs +63 -0
  273. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/namespace-facade-ready.mjs +60 -0
  274. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/probe-utils.mjs +105 -0
  275. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/real-account-storage-smoke.mjs +58 -0
  276. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-alarm-fires-once.mjs +5 -0
  277. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-namespace-facade-ready.mjs +5 -0
  278. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-real-account-storage-smoke.mjs +5 -0
  279. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-single-cell-concurrent-increment.mjs +5 -0
  280. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-sole-reader-scan.mjs +5 -0
  281. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-storage-round-trip.mjs +5 -0
  282. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-websocket-hub-broadcast.mjs +5 -0
  283. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/run-wrangler-seam.mjs +5 -0
  284. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/single-cell-concurrent-increment.mjs +56 -0
  285. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/sole-reader-scan.mjs +117 -0
  286. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/storage-round-trip.mjs +87 -0
  287. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/websocket-hub-broadcast.mjs +112 -0
  288. package/blueprints/platform-cloudflare-durable-objects/contributions/probes/wrangler-seam.mjs +257 -0
  289. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-001.json +17 -0
  290. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-002.json +17 -0
  291. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-003.json +17 -0
  292. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-004.json +17 -0
  293. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-005.json +17 -0
  294. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-006.json +17 -0
  295. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-007.json +17 -0
  296. package/blueprints/platform-cloudflare-durable-objects/contributions/requirements/platform-cloudflare-durable-objects-req-008.json +17 -0
  297. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3401-platform-cloudflare-durable-objects-namespace-facade.json +31 -0
  298. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3402-platform-cloudflare-durable-objects-single-cell-shape.json +30 -0
  299. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3403-platform-cloudflare-durable-objects-alarm-handler.json +29 -0
  300. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3404-platform-cloudflare-durable-objects-websocket-hub.json +31 -0
  301. package/blueprints/platform-cloudflare-durable-objects/contributions/tacs/tac-3405-platform-cloudflare-durable-objects-event-sink.json +24 -0
  302. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33101.json +27 -0
  303. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33102.json +27 -0
  304. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33103.json +27 -0
  305. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33104.json +27 -0
  306. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33105.json +27 -0
  307. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33106.json +27 -0
  308. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33107.json +27 -0
  309. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33108.json +27 -0
  310. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33109.json +27 -0
  311. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33110.json +27 -0
  312. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33111.json +27 -0
  313. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33112.json +27 -0
  314. package/blueprints/platform-cloudflare-durable-objects/contributions/user-stories/platform-cloudflare-durable-objects-us-33113.json +25 -0
  315. package/blueprints/platform-cloudflare-durable-objects/docs/topics.md +73 -0
  316. package/blueprints/platform-cloudflare-durable-objects/guide/platform-cloudflare-durable-objects.md +237 -0
  317. package/blueprints/platform-cloudflare-kv/CHANGELOG.md +21 -0
  318. package/blueprints/platform-cloudflare-kv/README.md +159 -0
  319. package/blueprints/platform-cloudflare-kv/blueprint.json +87 -0
  320. package/blueprints/platform-cloudflare-kv/contributions/adrs/adr-3201-platform-cloudflare-kv-key-value-store-contract.json +14 -0
  321. package/blueprints/platform-cloudflare-kv/contributions/adrs/adr-3202-platform-cloudflare-kv-default-cache-ttl.json +14 -0
  322. package/blueprints/platform-cloudflare-kv/contributions/adrs/adr-3203-platform-cloudflare-kv-key-naming-convention.json +14 -0
  323. package/blueprints/platform-cloudflare-kv/contributions/probes/cache-aside-hit-then-miss.mjs +82 -0
  324. package/blueprints/platform-cloudflare-kv/contributions/probes/event-secrecy.mjs +102 -0
  325. package/blueprints/platform-cloudflare-kv/contributions/probes/facade-round-trip.mjs +92 -0
  326. package/blueprints/platform-cloudflare-kv/contributions/probes/list-with-prefix.mjs +52 -0
  327. package/blueprints/platform-cloudflare-kv/contributions/probes/probe-utils.mjs +73 -0
  328. package/blueprints/platform-cloudflare-kv/contributions/probes/real-account-eventual-consistency-smoke.mjs +102 -0
  329. package/blueprints/platform-cloudflare-kv/contributions/probes/run-cache-aside-hit-then-miss.mjs +5 -0
  330. package/blueprints/platform-cloudflare-kv/contributions/probes/run-event-secrecy.mjs +5 -0
  331. package/blueprints/platform-cloudflare-kv/contributions/probes/run-facade-round-trip.mjs +5 -0
  332. package/blueprints/platform-cloudflare-kv/contributions/probes/run-list-with-prefix.mjs +5 -0
  333. package/blueprints/platform-cloudflare-kv/contributions/probes/run-real-account-eventual-consistency-smoke.mjs +5 -0
  334. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-001.json +18 -0
  335. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-002.json +18 -0
  336. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-003.json +18 -0
  337. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-004.json +18 -0
  338. package/blueprints/platform-cloudflare-kv/contributions/requirements/platform-cloudflare-kv-req-005.json +18 -0
  339. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3201-platform-cloudflare-kv-facade.json +27 -0
  340. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3202-platform-cloudflare-kv-cache-aside.json +26 -0
  341. package/blueprints/platform-cloudflare-kv/contributions/tacs/tac-3203-platform-cloudflare-kv-event-sink.json +25 -0
  342. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31101.json +27 -0
  343. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31102.json +27 -0
  344. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31103.json +36 -0
  345. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31104.json +27 -0
  346. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31105.json +27 -0
  347. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31106.json +27 -0
  348. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31107.json +27 -0
  349. package/blueprints/platform-cloudflare-kv/contributions/user-stories/platform-cloudflare-kv-us-31108.json +27 -0
  350. package/blueprints/platform-cloudflare-kv/docs/topics.md +71 -0
  351. package/blueprints/platform-cloudflare-kv/guide/platform-cloudflare-kv.md +138 -0
  352. package/blueprints/security-auth-clerk/docs/topics.md +9 -1
  353. package/blueprints/security-auth-keycloak/docs/topics.md +9 -1
  354. package/blueprints/security-auth-magic-link/docs/topics.md +9 -1
  355. package/blueprints/security-auth-oauth2/docs/topics.md +9 -1
  356. package/blueprints/security-secrets-management/docs/topics.md +9 -1
  357. package/fixtures/canary-manifest.json +6 -6
  358. package/package.json +1 -1
  359. package/rcf/adrs/adr-2214-application-admin-console-consume-zero-trust-gate.json +13 -0
  360. package/rcf/adrs/adr-3501-edge-cloudflare-access-jwt-gate.json +13 -0
  361. package/rcf/adrs/adr-3502-edge-cloudflare-access-identity-provider.json +13 -0
  362. package/rcf/adrs/adr-3503-edge-cloudflare-access-policy-scope.json +13 -0
  363. package/rcf/adrs/adr-3504-edge-cloudflare-access-audit-retention.json +13 -0
  364. package/rcf/adrs/adr-3601-edge-cloudflare-turnstile-verifier-contract.json +13 -0
  365. package/rcf/adrs/adr-3602-edge-cloudflare-turnstile-widget-mode.json +13 -0
  366. package/rcf/adrs/adr-3603-edge-cloudflare-turnstile-refuse-shape.json +13 -0
  367. package/rcf/adrs/adr-3701-edge-cloudflare-rate-limiting-throttle-contract.json +13 -0
  368. package/rcf/adrs/adr-3702-edge-cloudflare-rate-limiting-layering.json +13 -0
  369. package/rcf/adrs/adr-3703-edge-cloudflare-rate-limiting-manifest-shape.json +13 -0
  370. package/rcf/adrs/adr-3704-edge-cloudflare-rate-limiting-drift-audit-cadence.json +13 -0
  371. package/rcf/code-nodes/cn-206.json +14 -0
  372. package/rcf/code-nodes/cn-207.json +13 -0
  373. package/rcf/code-nodes/cn-208.json +14 -0
  374. package/rcf/code-nodes/cn-209.json +14 -0
  375. package/rcf/code-nodes/cn-210.json +13 -0
  376. package/rcf/code-nodes/cn-211.json +12 -0
  377. package/rcf/code-nodes/cn-212.json +12 -0
  378. package/rcf/code-nodes/cn-213.json +12 -0
  379. package/rcf/code-nodes/cn-214.json +15 -0
  380. package/rcf/code-nodes/cn-215.json +13 -0
  381. package/rcf/code-nodes/cn-216.json +14 -0
  382. package/rcf/code-nodes/cn-217.json +13 -0
  383. package/rcf/code-nodes/cn-230.json +13 -0
  384. package/rcf/code-nodes/cn-231.json +14 -0
  385. package/rcf/code-nodes/cn-232.json +13 -0
  386. package/rcf/code-nodes/cn-233.json +14 -0
  387. package/rcf/code-nodes/cn-234.json +13 -0
  388. package/rcf/code-nodes/cn-260.json +21 -0
  389. package/rcf/code-nodes/cn-261.json +14 -0
  390. package/rcf/code-nodes/cn-262.json +18 -0
  391. package/rcf/code-nodes/cn-263.json +12 -0
  392. package/rcf/code-nodes/cn-264.json +13 -0
  393. package/rcf/code-nodes/cn-265.json +15 -0
  394. package/rcf/code-nodes/cn-266.json +12 -0
  395. package/rcf/code-nodes/cn-267.json +12 -0
  396. package/rcf/code-nodes/cn-290.json +21 -0
  397. package/rcf/code-nodes/cn-291.json +12 -0
  398. package/rcf/code-nodes/cn-292.json +13 -0
  399. package/rcf/code-nodes/cn-293.json +13 -0
  400. package/rcf/code-nodes/cn-294.json +13 -0
  401. package/rcf/code-nodes/cn-295.json +12 -0
  402. package/rcf/code-nodes/cn-296.json +12 -0
  403. package/rcf/code-nodes/cn-297.json +12 -0
  404. package/rcf/code-nodes/cn-298.json +12 -0
  405. package/rcf/code-nodes/cn-299.json +12 -0
  406. package/rcf/code-nodes/cn-300.json +12 -0
  407. package/rcf/code-nodes/cn-301.json +14 -0
  408. package/rcf/code-nodes/cn-302.json +12 -0
  409. package/rcf/code-nodes/cn-303.json +12 -0
  410. package/rcf/code-nodes/cn-304.json +21 -0
  411. package/rcf/code-nodes/cn-320.json +20 -0
  412. package/rcf/code-nodes/cn-321.json +14 -0
  413. package/rcf/code-nodes/cn-350.json +19 -0
  414. package/rcf/code-nodes/cn-380.json +19 -0
  415. package/rcf/fbs/fbs-062.json +20 -0
  416. package/rcf/fbs/fbs-063.json +22 -0
  417. package/rcf/fbs/fbs-064.json +23 -0
  418. package/rcf/fbs/fbs-070.json +24 -0
  419. package/rcf/fbs/fbs-080.json +24 -0
  420. package/rcf/fbs/fbs-090.json +24 -0
  421. package/rcf/fbs/fbs-100.json +23 -0
  422. package/rcf/fbs/fbs-101.json +16 -0
  423. package/rcf/fbs/fbs-110.json +23 -0
  424. package/rcf/fbs/fbs-120.json +22 -0
  425. package/rcf/requirements/req-029.json +57 -0
  426. package/rcf/requirements/req-030.json +67 -0
  427. package/rcf/requirements/req-042.json +59 -0
  428. package/rcf/requirements/req-043.json +39 -0
  429. package/rcf/requirements/req-050.json +18 -0
  430. package/rcf/requirements/req-051.json +18 -0
  431. package/rcf/requirements/req-052.json +18 -0
  432. package/rcf/requirements/req-053.json +18 -0
  433. package/rcf/requirements/req-054.json +18 -0
  434. package/rcf/requirements/req-060.json +20 -0
  435. package/rcf/requirements/req-061.json +18 -0
  436. package/rcf/requirements/req-062.json +20 -0
  437. package/rcf/requirements/req-063.json +20 -0
  438. package/rcf/requirements/req-070.json +18 -0
  439. package/rcf/requirements/req-071.json +18 -0
  440. package/rcf/requirements/req-072.json +18 -0
  441. package/rcf/requirements/req-073.json +18 -0
  442. package/rcf/requirements/req-074.json +18 -0
  443. package/rcf/requirements/req-075.json +18 -0
  444. package/rcf/requirements/req-076.json +18 -0
  445. package/rcf/requirements/req-077.json +18 -0
  446. package/rcf/requirements/req-080.json +18 -0
  447. package/rcf/requirements/req-081.json +18 -0
  448. package/rcf/requirements/req-082.json +18 -0
  449. package/rcf/requirements/req-083.json +18 -0
  450. package/rcf/requirements/req-084.json +18 -0
  451. package/rcf/requirements/req-085.json +18 -0
  452. package/rcf/requirements/req-086.json +18 -0
  453. package/rcf/requirements/req-090.json +44 -0
  454. package/rcf/requirements/req-091.json +53 -0
  455. package/rcf/requirements/req-092.json +32 -0
  456. package/rcf/requirements/req-093.json +52 -0
  457. package/rcf/requirements/req-094.json +32 -0
  458. package/rcf/requirements/req-100.json +13 -0
  459. package/rcf/requirements/req-101.json +13 -0
  460. package/rcf/requirements/req-102.json +13 -0
  461. package/rcf/requirements/req-103.json +13 -0
  462. package/rcf/requirements/req-104.json +13 -0
  463. package/rcf/tacs/tac-2214-application-admin-console-access-gated-signin-surface.json +15 -0
  464. package/rcf/tacs/tac-3501-edge-cloudflare-access-jwt-validator.json +15 -0
  465. package/rcf/tacs/tac-3502-edge-cloudflare-access-application-declaration.json +15 -0
  466. package/rcf/tacs/tac-3503-edge-cloudflare-access-policy-shape.json +15 -0
  467. package/rcf/tacs/tac-3504-edge-cloudflare-access-audit-sink.json +15 -0
  468. package/rcf/tacs/tac-3601-edge-cloudflare-turnstile-widget-mount.json +15 -0
  469. package/rcf/tacs/tac-3602-edge-cloudflare-turnstile-server-verifier.json +15 -0
  470. package/rcf/tacs/tac-3603-edge-cloudflare-turnstile-magic-link-hook.json +15 -0
  471. package/rcf/tacs/tac-3701-edge-cloudflare-rate-limiting-manifest-schema.json +16 -0
  472. package/rcf/tacs/tac-3702-edge-cloudflare-rate-limiting-management-surface-doc.json +15 -0
  473. package/rcf/tacs/tac-3703-edge-cloudflare-rate-limiting-drift-audit-runner.json +16 -0
  474. package/rcf/test-suites/ts-052.json +58 -8
  475. package/rcf/test-suites/ts-072.json +62 -0
  476. package/rcf/test-suites/ts-073.json +38 -0
  477. package/rcf/test-suites/ts-074.json +30 -0
  478. package/rcf/test-suites/ts-075.json +38 -0
  479. package/rcf/test-suites/ts-076.json +70 -0
  480. package/rcf/test-suites/ts-080.json +22 -0
  481. package/rcf/test-suites/ts-081.json +22 -0
  482. package/rcf/test-suites/ts-082.json +30 -0
  483. package/rcf/test-suites/ts-083.json +22 -0
  484. package/rcf/test-suites/ts-084.json +30 -0
  485. package/rcf/test-suites/ts-085.json +22 -0
  486. package/rcf/test-suites/ts-086.json +22 -0
  487. package/rcf/test-suites/ts-087.json +22 -0
  488. package/rcf/test-suites/ts-090.json +22 -0
  489. package/rcf/test-suites/ts-091.json +22 -0
  490. package/rcf/test-suites/ts-092.json +22 -0
  491. package/rcf/test-suites/ts-093.json +30 -0
  492. package/rcf/test-suites/ts-094.json +30 -0
  493. package/rcf/test-suites/ts-095.json +30 -0
  494. package/rcf/test-suites/ts-096.json +22 -0
  495. package/rcf/test-suites/ts-100.json +22 -0
  496. package/rcf/test-suites/ts-101.json +22 -0
  497. package/rcf/test-suites/ts-102.json +22 -0
  498. package/rcf/test-suites/ts-103.json +22 -0
  499. package/rcf/test-suites/ts-104.json +22 -0
  500. package/rcf/test-suites/ts-105.json +22 -0
  501. package/rcf/test-suites/ts-106.json +22 -0
  502. package/rcf/test-suites/ts-107.json +22 -0
  503. package/rcf/test-suites/ts-108.json +22 -0
  504. package/rcf/test-suites/ts-109.json +22 -0
  505. package/rcf/test-suites/ts-110.json +22 -0
  506. package/rcf/test-suites/ts-111.json +22 -0
  507. package/rcf/test-suites/ts-112.json +22 -0
  508. package/rcf/test-suites/ts-113.json +22 -0
  509. package/rcf/test-suites/ts-114.json +22 -0
  510. package/rcf/test-suites/ts-115.json +22 -0
  511. package/rcf/test-suites/ts-116.json +22 -0
  512. package/rcf/test-suites/ts-117.json +22 -0
  513. package/rcf/test-suites/ts-118.json +22 -0
  514. package/rcf/test-suites/ts-119.json +30 -0
  515. package/rcf/test-suites/ts-120.json +22 -0
  516. package/rcf/test-suites/ts-121.json +22 -0
  517. package/rcf/test-suites/ts-122.json +22 -0
  518. package/rcf/test-suites/ts-123.json +22 -0
  519. package/rcf/test-suites/ts-124.json +22 -0
  520. package/rcf/test-suites/ts-125.json +22 -0
  521. package/rcf/test-suites/ts-126.json +22 -0
  522. package/rcf/test-suites/ts-127.json +22 -0
  523. package/rcf/test-suites/ts-130.json +22 -0
  524. package/rcf/test-suites/ts-131.json +22 -0
  525. package/rcf/test-suites/ts-132.json +22 -0
  526. package/rcf/test-suites/ts-133.json +22 -0
  527. package/rcf/test-suites/ts-134.json +22 -0
  528. package/rcf/test-suites/ts-135.json +22 -0
  529. package/rcf/test-suites/ts-136.json +22 -0
  530. package/rcf/test-suites/ts-137.json +22 -0
  531. package/rcf/user-stories/us-10001.json +23 -0
  532. package/rcf/user-stories/us-10101.json +23 -0
  533. package/rcf/user-stories/us-10201.json +23 -0
  534. package/rcf/user-stories/us-10301.json +23 -0
  535. package/rcf/user-stories/us-10401.json +23 -0
  536. package/rcf/user-stories/us-10601.json +23 -0
  537. package/rcf/user-stories/us-10701.json +23 -0
  538. package/rcf/user-stories/us-10801.json +23 -0
  539. package/rcf/user-stories/us-2901.json +45 -0
  540. package/rcf/user-stories/us-2902.json +36 -0
  541. package/rcf/user-stories/us-3001.json +45 -0
  542. package/rcf/user-stories/us-4201.json +69 -0
  543. package/rcf/user-stories/us-4301.json +78 -0
  544. package/rcf/user-stories/us-5001.json +27 -0
  545. package/rcf/user-stories/us-5002.json +27 -0
  546. package/rcf/user-stories/us-5101.json +36 -0
  547. package/rcf/user-stories/us-5102.json +27 -0
  548. package/rcf/user-stories/us-5201.json +36 -0
  549. package/rcf/user-stories/us-5301.json +27 -0
  550. package/rcf/user-stories/us-5302.json +27 -0
  551. package/rcf/user-stories/us-5401.json +27 -0
  552. package/rcf/user-stories/us-6001.json +27 -0
  553. package/rcf/user-stories/us-6002.json +27 -0
  554. package/rcf/user-stories/us-6003.json +27 -0
  555. package/rcf/user-stories/us-6101.json +36 -0
  556. package/rcf/user-stories/us-6201.json +36 -0
  557. package/rcf/user-stories/us-6301.json +36 -0
  558. package/rcf/user-stories/us-6302.json +27 -0
  559. package/rcf/user-stories/us-7001.json +27 -0
  560. package/rcf/user-stories/us-7002.json +27 -0
  561. package/rcf/user-stories/us-7101.json +27 -0
  562. package/rcf/user-stories/us-7201.json +27 -0
  563. package/rcf/user-stories/us-7301.json +27 -0
  564. package/rcf/user-stories/us-7401.json +27 -0
  565. package/rcf/user-stories/us-7402.json +27 -0
  566. package/rcf/user-stories/us-7501.json +27 -0
  567. package/rcf/user-stories/us-7601.json +27 -0
  568. package/rcf/user-stories/us-7701.json +27 -0
  569. package/rcf/user-stories/us-8001.json +24 -0
  570. package/rcf/user-stories/us-8002.json +24 -0
  571. package/rcf/user-stories/us-8003.json +24 -0
  572. package/rcf/user-stories/us-8101.json +24 -0
  573. package/rcf/user-stories/us-8201.json +24 -0
  574. package/rcf/user-stories/us-8301.json +24 -0
  575. package/rcf/user-stories/us-8401.json +24 -0
  576. package/rcf/user-stories/us-8501.json +24 -0
  577. package/rcf/user-stories/us-8502.json +24 -0
  578. package/rcf/user-stories/us-8601.json +24 -0
  579. package/rcf/user-stories/us-8602.json +24 -0
  580. package/rcf/user-stories/us-9001.json +27 -0
  581. package/rcf/user-stories/us-9002.json +27 -0
  582. package/rcf/user-stories/us-9101.json +27 -0
  583. package/rcf/user-stories/us-9102.json +27 -0
  584. package/rcf/user-stories/us-9201.json +27 -0
  585. package/rcf/user-stories/us-9301.json +27 -0
  586. package/rcf/user-stories/us-9302.json +27 -0
  587. package/rcf/user-stories/us-9401.json +27 -0
  588. package/releases/releases.yaml +21 -1
  589. package/src/blueprint/apply.js +7 -4
  590. package/src/blueprint/capabilities.js +25 -0
  591. package/src/cli/blueprint.js +8 -1
@@ -0,0 +1,59 @@
1
+ {
2
+ "createdAt": "2026-09-06T19:16:55.365Z",
3
+ "updatedAt": "2026-09-06T19:16:55.402Z",
4
+ "category": "functional",
5
+ "domain": "application",
6
+ "priority": "must",
7
+ "description": "The rcf-lite shelf ships the messaging-queue-cloudflare v1.0.0 blueprint (blueprints/messaging-queue-cloudflare/) with 20 to 24 contributions per the ratified infra round 5 spec section 5.3: 6 REQs (producer facade sole-reader of the Queues binding with producerReady on boot; publish/consume/ack with stable message-id and producer-supplied trace-id; retry contract; DLQ contract with default max-attempts 3 and 4-day retention per Cloudflare Queues dead-letter documentation; batch consume bounded by Cloudflare max 100 messages and max 60 seconds per Cloudflare Queues platform limits; four lifecycle events with metadata-only fields), 8 USs 29101-29108 binding runtime-observable ACs, 3 TACs (3001 producer facade, 3002 consumer registration on the Worker queue handler, 3003 event sink), 4 ADRs (3001 adapter Cloudflare Queues shipped first adapter, 3002 deliverySemantics scope global at-least-once, 3003 max-attempts default 3 floor 1 ceiling 100, 3004 batch size default 10 batch timeout default 5 seconds). The blueprint declares suggestedCompanions logging and errorHandling with spec section 5.3 reasons, providesRoles absent, capabilities [queue], requiresAppliedCapabilities absent (composes on deploy-cloudflare-workers transitively via the wrangler binding, not through the capability mechanism). Contributes ADR-3002 as scope:global on new topic deliverySemantics with at-least-once as the shipped shape so future exactly-once or at-most-once siblings conflict here by design. Ships six probe modules under blueprints/messaging-queue-cloudflare/contributions/probes/ each exporting the spec section 3.2 verdict envelope with an anchorAcId matching a contributed AC id, and matching run-shims writing per-blueprint reports at .rcf/reports/blueprints/messaging-queue-cloudflare/. Four probes local-first (accountBound false); real-account-concurrency-smoke carries accountBound true and records the accountBoundSkipped shape per spec section 3.5 without CI_HAS_CLOUDFLARE_ACCOUNT. Ships the T-3 side of the shared sample-app fixture at packages/rcf-lite/test/fixtures/infra-s3-and-queue/ with a wrangler.toml declaring a Cloudflare Worker with queue binding RCF_TEST_QUEUE and DLQ binding RCF_TEST_DLQ, an in-memory queue driver enabling Node-only probes without live Cloudflare Queues, producer and consumer modules realising the facade contract, three wired induced-failure switches (SIMULATE_CONSUMER_RETRY, SIMULATE_DLQ_OVERFLOW, SIMULATE_PII_IN_BODY), and a README extension naming the wrangler dev boot line and the elicited parameters. Extends packages/rcf-lite/docs/blueprint-authoring.md section 6a capability-declaration table with one row for queue naming the reserved messaging-queue-postgres sibling per Baz decision 7 and spec section 5.6. Appends one row for messaging-queue-cloudflare at US band 29101-29899 / ADR-TAC suffix block 30xx to the shelf-wide id-band registry table under docs/topics.md on every shipped blueprint. Minted with dex reserved-block chain ids via --id per HQ mid-flight ruling on repo-chain id blocks per train. Miniflare Queues sub-page is NOT cited (spec confirmed 404); the Cloudflare Queues local-development page is the citation for the wrangler dev seam.",
8
+ "reqId": "REQ-042",
9
+ "prdId": "PRD-001",
10
+ "title": "Messaging-queue-cloudflare v1.0.0 blueprint on the shelf",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [
15
+ "webUi",
16
+ "httpApi",
17
+ "persistence"
18
+ ],
19
+ "reason": "keyword-scan",
20
+ "classifiedAt": "2026-09-06T19:16:55.400Z",
21
+ "signals": [
22
+ {
23
+ "source": "description",
24
+ "shape": "webUi",
25
+ "match": "table"
26
+ },
27
+ {
28
+ "source": "description",
29
+ "shape": "persistence",
30
+ "match": "table"
31
+ },
32
+ {
33
+ "source": "description",
34
+ "shape": "httpApi",
35
+ "match": "post"
36
+ },
37
+ {
38
+ "source": "description",
39
+ "shape": "webUi",
40
+ "match": "table"
41
+ },
42
+ {
43
+ "source": "description",
44
+ "shape": "persistence",
45
+ "match": "table"
46
+ },
47
+ {
48
+ "source": "description",
49
+ "shape": "webUi",
50
+ "match": "page"
51
+ },
52
+ {
53
+ "source": "description",
54
+ "shape": "webUi",
55
+ "match": "page"
56
+ }
57
+ ]
58
+ }
59
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "createdAt": "2026-09-06T20:28:34.000Z",
3
+ "updatedAt": "2026-09-07T10:18:08.299Z",
4
+ "category": "functional",
5
+ "domain": "application",
6
+ "priority": "must",
7
+ "description": "The rcf-lite shelf ships the jobs-background v1.0.0 blueprint (blueprints/jobs-background/) with 22 contributions per the ratified infra round 5 spec section 5.4: 6 REQs (requires an applied queue capability via the T-5 mechanism and refuses apply on a bare project with exit 3 plus stable message id jobs-background-no-queue; job-definition contract carrying name, handler, input schema opaque per project, retry policy, timeout; scheduler contract carrying POSIX cron string and one-shot delayed; retry contract inheriting the applied queue's max-attempts ceiling; job-run event log at four moments jobScheduled jobStarted jobCompleted jobFailed with metadata-only fields; operator-facing surface elicited between cli httpEndpoint none), 9 USs 30101-30109 binding runtime-observable ACs (one US per REQ plus three cross-cutting cases apply-time refusal on bare scheduled fire on cron and retry-then-DLQ), 3 TACs (3101 job-definition module 3102 scheduler 3103 run log), 4 ADRs (3101 scope:global on new topic backgroundJobModel retry-and-schedule as the shipped shape; 3102 scheduler mode elicited between inProcess workerCron and external with a reserved v1.1.0 workflows slot per spec section 5.7 and round-6 proposal decision b; 3103 requires capabilities:[queue] with allowSkipFlag allow-no-queue-yet and refusalMessageId jobs-background-no-queue; 3104 default handler timeout 60 seconds floor 1 second ceiling bounded by the applied queue's consumer wall-clock which for Cloudflare Queues is 15 minutes per limits doc). The blueprint declares suggestedCompanions logging and errorHandling with spec section 5.4 reasons, providesRoles absent, capabilities [backgroundJobs], requiresAppliedCapabilities {capabilities:[queue],allowSkipFlag:allow-no-queue-yet,refusalMessageId:jobs-background-no-queue} per Baz decision 5 verbatim. Contributes ADR-3101 as scope:global on new topic backgroundJobModel with retry-and-schedule as the shipped shape so future stateful-workflow siblings (Temporal-shape Airflow-shape) conflict here by design; the round-6 Workflows minor bump inside jobs-background itself does NOT mint a sibling per spec section 5.6 (it lives inside the same blueprint as an elicited scheduler mode value at ADR-3102). Ships five probe modules under blueprints/jobs-background/contributions/probes/ each exporting the spec section 3.2 verdict envelope with an anchorAcId matching a contributed AC id and matching run-shims writing per-blueprint reports at .rcf/reports/blueprints/jobs-background/: apply-time-refusal.mjs (bare project rcf define blueprint add refuses exit 3 with tag jobs-background-no-queue on stderr and names messaging-queue-cloudflare explicitly per Q3 default asserting both exit code and message id), apply-time-override.mjs (same bare project with --allow-no-queue-yet exits 0 and sidecar rcf/blueprints/jobs-background.applied.json records a note naming the missing capability and the override flag; the spec section 5.4 prose reference to manifest.blueprints[jobs-background].source.notes is superseded by the shipped T-5 mechanism which writes the note on the sidecar because the applied-blueprint-record schema is closed), fake-clock-cron.mjs (with messaging-queue-cloudflare and jobs-background both applied on the shared sample-app fixture drives the in-memory queue seam from T-3 through one fake-clock cron minute and asserts jobStarted fires within the elicited fire-tolerance window plus jobCompleted within the elicited timeout), retry-and-fail.mjs (schedules a job with a handler throwing under SIMULATE_HANDLER_THROW drives through maxAttempts re-deliveries and asserts jobStarted fires 3 times with matching job-id and incrementing attempt counter plus jobFailed fires with terminal code), event-secrecy.mjs (schedules a job with PII fixture input drives to completion and asserts every event record carries only {jobId,jobName,attempts,duration,timestamp} whitelist and NO input fields NO output fields NO user id NO SSN NO email). All five probes accountBound false. Extends the shared sample-app fixture at packages/rcf-lite/test/fixtures/infra-s3-and-queue/ (T-2/T-3 have already landed the fixture directory) with a jobs/ directory carrying two toy job-definition modules (send-welcome-email.mjs with retry policy {maxAttempts:3,backoff:exponential} timeout 60 seconds and refresh-cache.mjs with retry policy {maxAttempts:5,backoff:constant} timeout 10 seconds cron every-minute), src/jobs-runtime.mjs realising the runtime that reads applied queue capability from the sidecar registers job handlers with the queue consumer dispatches per message fires the four lifecycle events per REQ-005 and respects the elicited timeout and retry policy per job definition, src/scheduler.mjs realising the inProcess scheduler with a fake-clock seam the fake-clock-cron probe drives, package.json start:jobs script, and README extension naming the two toy jobs the jobs/ directory convention the fake-clock switch the elicited parameters the induced-failure switches SIMULATE_HANDLER_THROW and SIMULATE_PII_IN_JOB_INPUT and the gate-reviewer two-line boot. Extends packages/rcf-lite/src/cli/blueprint.js OPTION_SPEC with allow-no-queue-yet boolean flag piped into allowNoAuthYet, and packages/rcf-lite/src/blueprint/apply.js buildOverrideNote family derivation to detect queue from the flag name (so sidecar notes read no queue yet: applied under --allow-no-queue-yet). Extends packages/rcf-lite/test/blueprint/capabilities-apply.test.js with four cases covering jobs-background bare refusal (tag and messaging-queue-cloudflare name assertions), --allow-no-queue-yet override (sidecar notes queue-family assertion), happy path with messaging-queue-cloudflare applied (appliedCapabilities includes queue), and legacy allow-no-auth-yet also unblocks the override (backward-compatible OR piping). Extends packages/rcf-lite/docs/blueprint-authoring.md section 6a capability-declaration table with one row for backgroundJobs naming the reserved sibling posture per spec section 5.6. Appends one row for jobs-background at US band 30101-30899 / ADR-TAC suffix block 31xx to the shelf-wide id-band registry table under docs/topics.md on every shipped blueprint. Minted with dex reserved-block chain ids via --id per HQ mid-flight ruling on repo-chain id blocks per train (REQ-043 / US-4301 / TS-076 / FBS-064 / CN-214..217 (originally TS-073 / FBS-063 / CN-209..212, re-minted at next-free after HQ round-6 T-0 PR #164 landed on origin/main 321371e and consumed the original block; REQ-043 and US-4301 did not collide and are unchanged) continuing the block after T-3 landed at 042/4201/072/062/206..208). Wrangler is not on this build host so probes run against the in-memory queue-driver seam T-3 landed on the fixture (SDR-3-a coordinator ruling accepted the in-memory realisation of the Cloudflare Queues binding shape); the live wrangler-dev cron-trigger path is enumerated as a per-AC mechanism-reach gap in the README per round-3 checklist 6.g form.",
8
+ "reqId": "REQ-043",
9
+ "prdId": "PRD-001",
10
+ "title": "Jobs-background v1.0.0 blueprint on the shelf",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [
15
+ "webUi",
16
+ "httpApi",
17
+ "persistence"
18
+ ],
19
+ "reason": "keyword-scan",
20
+ "classifiedAt": "2026-09-06T20:28:34.000Z",
21
+ "signals": [
22
+ {
23
+ "source": "description",
24
+ "shape": "webUi",
25
+ "match": "table"
26
+ },
27
+ {
28
+ "source": "description",
29
+ "shape": "persistence",
30
+ "match": "table"
31
+ },
32
+ {
33
+ "source": "description",
34
+ "shape": "httpApi",
35
+ "match": "endpoint"
36
+ }
37
+ ]
38
+ }
39
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T10:18:25.168Z",
3
+ "updatedAt": "2026-09-07T10:20:10.276Z",
4
+ "reqId": "REQ-050",
5
+ "prdId": "PRD-001",
6
+ "title": "T-1 platform-cloudflare-kv v1.0.0 blueprint: the KV facade module is the sole reader of the KV binding and opens on boot with facadeReady",
7
+ "description": "T-1 platform-cloudflare-kv v1.0.0: one KV facade module in the applied project source tree is the SOLE reader of the Cloudflare Workers KV binding (env.CACHE in the fixture; the elicited binding name in a real project). Every other module that touches KV imports the facade and calls its typed domain verbs (get, getWithMetadata, put, delete, list); no other module dereferences the raw KV binding. On process boot, the facade opens against the bound namespace with a bounded list(limit:1) ready-check and emits a facadeReady lifecycle event on the injected event sink. Chain: HQ round-6 T-1 reserved-block, id block REQ-050..054 / US-5001..5401 / TS-080..087 / FBS-070 / CN-230..234 per HQ chain-block ruling 2026-09-07T10:12Z.",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T10:18:25.198Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T10:18:25.373Z",
3
+ "updatedAt": "2026-09-07T10:20:10.276Z",
4
+ "reqId": "REQ-051",
5
+ "prdId": "PRD-001",
6
+ "title": "T-1 typed put get delete list verbs with metadata field pattern realise the Workers KV binding shape behind the facade",
7
+ "description": "T-1 typed put get delete list realise the Workers KV binding shape behind the facade. put(key, value, {ttl, metadata}) writes with expirationTtl and metadata to the binding; get(key) returns null on miss; getWithMetadata(key) returns {value, metadata}; delete(key) is idempotent; list({prefix, limit, cursor}) paginates keys with metadata shape intact per the Cloudflare KV binding contract at https://developers.cloudflare.com/kv/api/. Metadata is a JSON-serialisable object; the shipped default metadata field pattern is {v: number} (elicited).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T10:18:25.402Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T10:18:25.579Z",
3
+ "updatedAt": "2026-09-07T10:20:10.276Z",
4
+ "reqId": "REQ-052",
5
+ "prdId": "PRD-001",
6
+ "title": "T-1 cache-aside helper reads local first falls back to origin and writes back with elicited TTL floor 1 second",
7
+ "description": "T-1 cache-aside helper wraps a domain-origin call with the facade. getOr(key, originFn, {ttl}) reads local first via facade.get; on hit returns the cached value with source cache; on miss invokes originFn, writes back through facade.put with the effective TTL (elicited default 60 seconds per ADR-3202; floor 1 second enforced at this seam; no upper ceiling per Cloudflare KV documented per-namespace limits at https://developers.cloudflare.com/kv/platform/limits/), and returns the fresh value with source origin.",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T10:18:25.608Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T10:18:25.784Z",
3
+ "updatedAt": "2026-09-07T10:20:10.276Z",
4
+ "reqId": "REQ-053",
5
+ "prdId": "PRD-001",
6
+ "title": "T-1 lifecycle events facadeReady kvHit kvMiss kvWrite carry metadata-only fields key size ttl timestamp",
7
+ "description": "T-1 lifecycle events. The facade emits facadeReady on the injected sink once the ready-check returns; kvHit on a get that resolves to a non-null value; kvMiss on a get that resolves to null; kvWrite on put and delete. Every event record carries EXACTLY the fields {event, key, size, ttl, timestamp}: no body bytes, no metadata bag pass-through, no user id beyond the key itself. The event-secrecy probe drives this at REQ-053 mechanism reach.",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T10:18:25.813Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T10:18:25.999Z",
3
+ "updatedAt": "2026-09-07T10:20:10.276Z",
4
+ "reqId": "REQ-054",
5
+ "prdId": "PRD-001",
6
+ "title": "T-1 eventual-consistency note in the guide: a write may not appear on a global read within the same request and the elicited TTL sets the staleness ceiling",
7
+ "description": "T-1 eventual-consistency note: Workers KV is eventually consistent per the Cloudflare KV consistency documentation at https://developers.cloudflare.com/kv/concepts/how-kv-works/. A write may not appear on a global read within the same request; the elicited cache-aside TTL (default 60 seconds per Cloudflare-documented cache TTL default) sets the staleness ceiling readers observe. The guide surfaces the note and the decision-tree cross-reference to platform-cloudflare-durable-objects for strong-consistency needs (round-6 T-3 owns the DO adapter).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T10:18:26.039Z"
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "createdAt": "2026-09-07T12:26:47.779Z",
3
+ "updatedAt": "2026-09-07T12:26:47.813Z",
4
+ "description": "T-2 platform-cloudflare-cron-triggers v1.0.0: one scheduled() handler in the applied project source tree is the SOLE reader of the Cloudflare Workers Cron Trigger event (the event handler shape documented at https://developers.cloudflare.com/workers/configuration/cron-triggers/). The handler binds on boot, wires the dispatcher (REQ-061) and the event sink (per TAC-3303), and emits a cronReady lifecycle event on the injected sink with a metadata-only payload. Chain: HQ round-6 T-2 reserved-block per HQ chain-block ruling 2026-09-07T12:25Z.",
5
+ "category": "functional",
6
+ "domain": "platform",
7
+ "priority": "must",
8
+ "reqId": "REQ-060",
9
+ "prdId": "PRD-001",
10
+ "title": "T-2 platform-cloudflare-cron-triggers v1.0.0 blueprint: the scheduled() handler is the sole reader of the Cron Trigger event and opens on boot with cronReady",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [
15
+ "none"
16
+ ],
17
+ "reason": "keyword-scan",
18
+ "classifiedAt": "2026-09-07T12:26:47.812Z"
19
+ }
20
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T12:26:47.991Z",
3
+ "updatedAt": "2026-09-07T12:28:41.280Z",
4
+ "description": "T-2 platform-cloudflare-cron-triggers v1.0.0: the dispatcher module accepts an ordered map of cron-expression to handler pairs and, on every scheduled() invocation, matches the incoming Cron Trigger event's cron expression against the map and routes exactly to the matched handler. An unmatched expression records an unmatchedExpression event on the sink and the scheduled invocation returns without side effect. The routed handler receives a bounded context {expression, scheduledTime, sink} so its own emissions can be attributed. Chain: HQ round-6 T-2 reserved-block per HQ chain-block ruling 2026-09-07T12:25Z.",
5
+ "category": "functional",
6
+ "domain": "platform",
7
+ "priority": "must",
8
+ "reqId": "REQ-061",
9
+ "prdId": "PRD-001",
10
+ "title": "T-2 expression-router: multiple cron expressions route to distinct handlers by expression match",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T12:29:00.000Z"
17
+ }
18
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "createdAt": "2026-09-07T12:26:48.199Z",
3
+ "updatedAt": "2026-09-07T12:26:48.232Z",
4
+ "description": "T-2 platform-cloudflare-cron-triggers v1.0.0: an elicited skew-tolerance window (default 30 seconds per ADR-3303; floor 5s, ceiling 5 minutes) governs how the dispatcher classifies a fire. If the observed handler start time is within the window of the event's scheduledTime, the fire's outcome is onTime and a cronFired event carries {expression, scheduledTime, outcome: onTime, duration}. If the observed start is outside the window, a cronSkewed event fires with the delta (observed minus scheduled, in milliseconds) and the outcome is skewed; the handler still runs. Chain: HQ round-6 T-2 reserved-block per HQ chain-block ruling 2026-09-07T12:25Z.",
5
+ "category": "functional",
6
+ "domain": "platform",
7
+ "priority": "must",
8
+ "reqId": "REQ-062",
9
+ "prdId": "PRD-001",
10
+ "title": "T-2 skew tolerance: a fire inside the elicited window is onTime; outside it records cronSkewed with the delta",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [
15
+ "none"
16
+ ],
17
+ "reason": "keyword-scan",
18
+ "classifiedAt": "2026-09-07T12:26:48.230Z"
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "createdAt": "2026-09-07T12:26:48.409Z",
3
+ "updatedAt": "2026-09-07T12:26:48.442Z",
4
+ "description": "T-2 platform-cloudflare-cron-triggers v1.0.0: an elicited soft-budget duration (default 30 seconds per elicited answer, no floor) governs when a running handler is flagged as stalled. The dispatcher never terminates a handler on soft-budget breach (Cloudflare's platform concern is the sole terminator); it fires a cronStalled event with metadata-only payload {expression, scheduledTime, outcome: stalled, duration, softBudgetMs} at the moment the observed duration crosses the budget and lets the handler continue. Every scheduled-side event record on the sink carries only {expression, scheduledTime, outcome, duration} plus the event tag; handler input closures, PII fields and body bytes never cross the sink boundary. Chain: HQ round-6 T-2 reserved-block per HQ chain-block ruling 2026-09-07T12:25Z.",
5
+ "category": "functional",
6
+ "domain": "platform",
7
+ "priority": "must",
8
+ "reqId": "REQ-063",
9
+ "prdId": "PRD-001",
10
+ "title": "T-2 soft budget and event secrecy: a handler running past the elicited budget logs cronStalled but does not terminate; every event record is metadata-only",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [
15
+ "none"
16
+ ],
17
+ "reason": "keyword-scan",
18
+ "classifiedAt": "2026-09-07T12:26:48.441Z"
19
+ }
20
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:36.742Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-070",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 platform-cloudflare-durable-objects v1.0.0 blueprint: the DO facade is the sole reader of env.CELL and env.HUB and opens on boot with namespaceReady",
7
+ "description": "T-3 platform-cloudflare-durable-objects v1.0.0: one DO facade module in the applied project source tree is the SOLE reader of env.CELL and env.HUB (per https://developers.cloudflare.com/durable-objects/). On process boot, the facade wires the injected event sink and emits a namespaceReady lifecycle event with a metadata-only payload; the facade exposes typed handles per named object (cellHandle(name), hubHandle(name)) and never exposes the raw binding to consumers. Chain: HQ round-6 T-3 reserved-block per HQ chain-block ruling 2026-09-07 (REQ-070..079 / US-70xx..79xx / TS-100..109 / FBS-090..099 / CN-290..319).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:36.775Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:36.953Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-071",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 single-cell shape exposes typed domain verbs and serialises concurrent invocations per instance",
7
+ "description": "T-3 single-cell shape: a named SingleCellObject exposes typed domain verbs (increment, read, reset) that wrap the injected storage driver. Cloudflare's documented DO consistency model serialises invocations against the same instance; the shipped class realises that contract via a per-instance FIFO promise queue so a concurrent-increment probe observes the counter sum and one increment observed the other via a written witness (per REQ-071 and AC-33102-1, AC-33109-1).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:36.986Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:37.164Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-072",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 storage API provides typed put/get/delete on the object with an elicited backend (SQL or KV)",
7
+ "description": "T-3 storage API: the object's state.storage surface exposes typed put(key,value), get(key), delete(key) and list({prefix}) verbs. Storage backend is elicited (sql or kv per ADR-3403); the shipped storage driver factory is backend-agnostic and threads through the elicited answer as driver.backend. A storage-round-trip probe drives both backends via a fixture switch (AC-33103-1, AC-33111-1).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:37.197Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:37.377Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-073",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 alarm surface fires alarm() exactly once per scheduled time and doAlarmFired carries objectName and scheduledTime",
7
+ "description": "T-3 alarm surface: a named object supports storage.setAlarm(scheduledTime) and an alarm() handler. The shipped alarm handler drains the persisted alarm from storage on each fire so a second alarm() call on the drained storage does not re-fire for the same schedule; the injected event sink records a doAlarmFired event with {objectName, scheduledTime} metadata fields on each fire (AC-33104-1, AC-33106-1).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:37.412Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:37.592Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-074",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 hibernatable WebSocket hub accepts clients via state.acceptWebSocket and the wake handler runs from cold reading the same storage",
7
+ "description": "T-3 hibernatable WebSocket hub: a named HubObject accepts websocket clients via state.acceptWebSocket, routes each webSocketMessage by JSON type field, and broadcasts to all connected sockets. Storage persists the last broadcast so a re-emerging client can catch up; on hibernate-and-wake the wake handler runs from a cold start, reads the same storage, and emits doWakeUp exactly once (idempotent-by-contract per ADR-3405) (AC-33105-1, AC-33110-1).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:37.625Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:37.805Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-075",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 lifecycle events fire at namespace and object level with metadata-only payloads",
7
+ "description": "T-3 lifecycle events: the facade and both DO classes emit metadata-only records on the injected event sink: namespaceReady (facade), doAccept, doAlarmFired, doWakeUp, doHibernate (object). Every record carries only allowed keys drawn from {event, key, size, ttl, timestamp, objectName, scheduledTime}; no message payloads, request bodies or PII cross the sink. The event-secrecy result on the websocket-hub-broadcast probe (AC-33106-1) covers the metadata-only contract on the shipped path.",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:37.838Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:38.018Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-076",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 sole-reader guarantee enforced by AST scan: no non-facade module imports env.CELL or env.HUB",
7
+ "description": "T-3 sole-reader guarantee: the shipped sole-reader-scan probe reads every .mjs/.js/.ts file under the fixture's applied source root, strips block and line comments, and matches literal occurrences of env.CELL and env.HUB against the file path. The clean-fixture pass asserts src/do-facade.mjs is the ONLY file whose live source matches; any other file with a live match is a leak returned as fail (AC-33107-1).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:38.051Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T14:11:38.243Z",
3
+ "updatedAt": "2026-09-07T14:13:26.508Z",
4
+ "reqId": "REQ-077",
5
+ "prdId": "PRD-001",
6
+ "title": "T-3 migration-safe class exports: stable class names committed to wrangler with a paired [[migrations]] block",
7
+ "description": "T-3 migration-safe class exports: the DO class names are stable strings committed under [[durable_objects.bindings]] blocks in wrangler.toml, and a paired [[migrations]] block records the mint classes under tag \"v1\" per Cloudflare's migration documentation. A rename ships as a subsequent migrations tag; a rename without one is a runtime error the anatomy assertion catches at self-review (AC-33108-1).",
8
+ "category": "functional",
9
+ "domain": "platform",
10
+ "priority": "must",
11
+ "version": "0.1.0",
12
+ "status": "draft",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T14:11:38.275Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:01.509Z",
3
+ "updatedAt": "2026-09-07T17:14:19.059Z",
4
+ "reqId": "REQ-080",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 edge-cloudflare-access v1.0.0 blueprint: the Access JWT validator is the sole reader of the Cf-Access-Jwt-Assertion header and reduces principal onto request.auth",
7
+ "description": "The applying Workers project reaches Cloudflare Access through a single JWT validator module (src/jwt-validator.mjs) that is the ONLY module dereferencing the Cf-Access-Jwt-Assertion header. The validator fetches the JWKS from the elicited endpoint, caches keys per-kid, verifies the JWT and reduces the principal into request.auth as {email, sub, groups}. Chain: HQ round-6 T-4 reserved-block per HQ chain-block ruling 2026-09-07 (REQ-080..089 / US-80xx..89xx / TS-110..119 / FBS-100..109 / CN-320..349).",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:01.543Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:11.871Z",
3
+ "updatedAt": "2026-09-07T17:14:19.252Z",
4
+ "reqId": "REQ-081",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 edge-cloudflare-access v1.0.0: an Access application is declared with an elicited hostname or self-hosted-app id and an elicited policy shape from the enum",
7
+ "description": "The blueprint elicits either an Access application hostname or a self-hosted-app id, plus the JWT audience, JWKS URL and a policy shape from the enum. Applying the blueprint records the values on rcf/blueprints/edge-cloudflare-access.applied.json.",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:11.906Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:12.089Z",
3
+ "updatedAt": "2026-09-07T17:14:19.438Z",
4
+ "reqId": "REQ-082",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 edge-cloudflare-access v1.0.0: the operator issues a Zero Trust policy via the dashboard or the API path documented in the guide",
7
+ "description": "The shipped guide documents two paths for issuing the Zero Trust policy: a dashboard walk-through screen-by-screen and a curl example against api.cloudflare.com/client/v4/accounts/{account_id}/access/apps/{app_id}/policies per https://developers.cloudflare.com/cloudflare-one/policies/access/.",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:12.123Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:12.304Z",
3
+ "updatedAt": "2026-09-07T17:14:19.647Z",
4
+ "reqId": "REQ-083",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 edge-cloudflare-access v1.0.0: the audit event carries metadata-only fields email, outcome, timestamp and path with no token value or headers",
7
+ "description": "Every validate outcome emits one audit event on the injected sink with the metadata-only shape {email, outcome, timestamp, path}. The record is Object.frozen at the boundary; no downstream module can enrich it with a stray token slice.",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:12.339Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:12.520Z",
3
+ "updatedAt": "2026-09-07T17:14:19.838Z",
4
+ "reqId": "REQ-084",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 edge-cloudflare-access v1.0.0: break-glass posture with an elicited bypass-service-auth token pair for CI-signed automation",
7
+ "description": "The operator elicits a break-glass service-auth id; the paired secret is delegated to the applied secretsManagement companion. Requests presenting the paired CF-Access-Client-Id and CF-Access-Client-Secret headers authenticate with outcome=bypass.",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:12.555Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:12.737Z",
3
+ "updatedAt": "2026-09-07T17:14:20.026Z",
4
+ "reqId": "REQ-085",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 edge-cloudflare-access v1.0.0: the composition with application-admin-console flips the sign-in surface when the applied capability set contains zeroTrustGate",
7
+ "description": "When application-admin-console v1.1.0 is applied alongside edge-cloudflare-access, the admin-console reads appliedCapabilities via readAppliedCapabilities() at apply-time and flips its sign-in surface between Access-gated and local-login.",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:12.772Z"
17
+ }
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "createdAt": "2026-09-07T16:49:12.954Z",
3
+ "updatedAt": "2026-09-07T17:14:20.211Z",
4
+ "reqId": "REQ-086",
5
+ "prdId": "PRD-001",
6
+ "title": "T-4 application-admin-console v1.1.0 minor: consume zeroTrustGate optionally, replacing the local sign-in form with an Access-gated surface when the capability is applied",
7
+ "description": "application-admin-console v1.1.0 additive minor: consumes zeroTrustGate optionally, replacing the local sign-in form with an Access-gated surface when the capability is applied. Q4 default: consumption is OPTIONAL; principalDirectory remains the sole hard requirement (making Access-gate hard is a v2.0 change).",
8
+ "category": "functional",
9
+ "domain": "functional",
10
+ "priority": "must",
11
+ "version": "1.0.0",
12
+ "status": "approved",
13
+ "shapeClassification": {
14
+ "shapes": [],
15
+ "reason": "content-pending",
16
+ "classifiedAt": "2026-09-07T16:49:12.990Z"
17
+ }
18
+ }