rcf-lite 0.12.0 → 0.14.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 (686) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +2 -0
  3. package/bin/rcf.js +3 -1
  4. package/bin/view-supervisor-child.mjs +0 -0
  5. package/blueprints/application-api-rest/README.md +40 -0
  6. package/blueprints/application-api-rest/assets/middleware/auth-classes.md +45 -0
  7. package/blueprints/application-api-rest/assets/openapi/openapi-skeleton.yaml +322 -0
  8. package/blueprints/application-api-rest/assets/sample-data/sample-resources.json +53 -0
  9. package/blueprints/application-api-rest/assets/samples/request-response-pairs.md +204 -0
  10. package/blueprints/application-api-rest/blueprint.json +265 -0
  11. package/blueprints/application-api-rest/contributions/adrs/adr-301-application-api-rest-error-envelope.json +25 -0
  12. package/blueprints/application-api-rest/contributions/adrs/adr-302-application-api-rest-auth-model.json +25 -0
  13. package/blueprints/application-api-rest/contributions/adrs/adr-303-application-api-rest-api-versioning.json +25 -0
  14. package/blueprints/application-api-rest/contributions/adrs/adr-304-application-api-rest-logging.json +25 -0
  15. package/blueprints/application-api-rest/contributions/adrs/adr-305-application-api-rest-pagination.json +25 -0
  16. package/blueprints/application-api-rest/contributions/adrs/adr-306-application-api-rest-idempotency.json +25 -0
  17. package/blueprints/application-api-rest/contributions/adrs/adr-307-application-api-rest-openapi-generation.json +25 -0
  18. package/blueprints/application-api-rest/contributions/adrs/adr-308-application-api-rest-rate-limiting.json +25 -0
  19. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-001.json +18 -0
  20. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-002.json +18 -0
  21. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-003.json +18 -0
  22. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-004.json +18 -0
  23. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-005.json +18 -0
  24. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-006.json +18 -0
  25. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-007.json +18 -0
  26. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-008.json +18 -0
  27. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-009.json +18 -0
  28. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-010.json +18 -0
  29. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-011.json +18 -0
  30. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-012.json +18 -0
  31. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-013.json +18 -0
  32. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-014.json +18 -0
  33. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-015.json +18 -0
  34. package/blueprints/application-api-rest/contributions/requirements/application-api-rest-req-016.json +18 -0
  35. package/blueprints/application-api-rest/contributions/tacs/tac-301-application-api-rest-request-pipeline.json +48 -0
  36. package/blueprints/application-api-rest/contributions/tacs/tac-302-application-api-rest-auth-middleware.json +41 -0
  37. package/blueprints/application-api-rest/contributions/tacs/tac-303-application-api-rest-contract-surface.json +46 -0
  38. package/blueprints/application-api-rest/contributions/tacs/tac-304-application-api-rest-resource-layer.json +46 -0
  39. package/blueprints/application-api-rest/contributions/tacs/tac-305-application-api-rest-observability.json +40 -0
  40. package/blueprints/application-api-rest/contributions/tacs/tac-306-application-api-rest-operability.json +46 -0
  41. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2101.json +72 -0
  42. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2102.json +73 -0
  43. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2103.json +63 -0
  44. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2104.json +72 -0
  45. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2105.json +63 -0
  46. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2106.json +73 -0
  47. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2107.json +90 -0
  48. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2108.json +90 -0
  49. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2109.json +72 -0
  50. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2110.json +72 -0
  51. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2111.json +72 -0
  52. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2112.json +72 -0
  53. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2113.json +73 -0
  54. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2114.json +63 -0
  55. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2115.json +63 -0
  56. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2116.json +63 -0
  57. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2117.json +64 -0
  58. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2118.json +72 -0
  59. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2119.json +63 -0
  60. package/blueprints/application-api-rest/contributions/user-stories/application-api-rest-us-2120.json +73 -0
  61. package/blueprints/application-api-rest/docs/topics.md +46 -0
  62. package/blueprints/application-api-rest/guide/application-api-rest.md +41 -0
  63. package/blueprints/application-spa/README.md +90 -0
  64. package/blueprints/application-spa/assets/component-specs/actions-and-text-inputs.md +36 -0
  65. package/blueprints/application-spa/assets/component-specs/data-display.md +19 -0
  66. package/blueprints/application-spa/assets/component-specs/feedback-and-status.md +27 -0
  67. package/blueprints/application-spa/assets/component-specs/overlays.md +23 -0
  68. package/blueprints/application-spa/assets/component-specs/selection-controls.md +23 -0
  69. package/blueprints/application-spa/assets/sample-data/sample-entities.json +41 -0
  70. package/blueprints/application-spa/assets/tokens/design-tokens.json +140 -0
  71. package/blueprints/application-spa/assets/tokens/theme.css +169 -0
  72. package/blueprints/application-spa/assets/viewports.md +18 -0
  73. package/blueprints/application-spa/assets/wireframes/dashboard.md +48 -0
  74. package/blueprints/application-spa/assets/wireframes/detail.md +40 -0
  75. package/blueprints/application-spa/assets/wireframes/empty.md +31 -0
  76. package/blueprints/application-spa/assets/wireframes/error.md +46 -0
  77. package/blueprints/application-spa/assets/wireframes/form.md +50 -0
  78. package/blueprints/application-spa/assets/wireframes/list.md +45 -0
  79. package/blueprints/application-spa/assets/wireframes/session-expired.md +35 -0
  80. package/blueprints/application-spa/assets/wireframes/sign-in.md +41 -0
  81. package/blueprints/application-spa/assets/wireframes/sign-out.md +32 -0
  82. package/blueprints/application-spa/blueprint.json +387 -0
  83. package/blueprints/application-spa/contributions/adrs/adr-201-application-spa-routing.json +25 -0
  84. package/blueprints/application-spa/contributions/adrs/adr-202-application-spa-theming.json +25 -0
  85. package/blueprints/application-spa/contributions/adrs/adr-203-application-spa-client-state.json +25 -0
  86. package/blueprints/application-spa/contributions/adrs/adr-204-application-spa-error-envelope.json +25 -0
  87. package/blueprints/application-spa/contributions/adrs/adr-205-application-spa-auth-model.json +25 -0
  88. package/blueprints/application-spa/contributions/adrs/adr-206-application-spa-iconography.json +13 -0
  89. package/blueprints/application-spa/contributions/adrs/adr-207-application-spa-motion.json +13 -0
  90. package/blueprints/application-spa/contributions/adrs/adr-208-application-spa-i18n.json +13 -0
  91. package/blueprints/application-spa/contributions/adrs/adr-209-application-spa-telemetry-naming.json +13 -0
  92. package/blueprints/application-spa/contributions/requirements/application-spa-req-001.json +18 -0
  93. package/blueprints/application-spa/contributions/requirements/application-spa-req-002.json +18 -0
  94. package/blueprints/application-spa/contributions/requirements/application-spa-req-003.json +18 -0
  95. package/blueprints/application-spa/contributions/requirements/application-spa-req-004.json +18 -0
  96. package/blueprints/application-spa/contributions/requirements/application-spa-req-005.json +18 -0
  97. package/blueprints/application-spa/contributions/requirements/application-spa-req-006.json +18 -0
  98. package/blueprints/application-spa/contributions/requirements/application-spa-req-007.json +18 -0
  99. package/blueprints/application-spa/contributions/requirements/application-spa-req-008.json +18 -0
  100. package/blueprints/application-spa/contributions/requirements/application-spa-req-009.json +18 -0
  101. package/blueprints/application-spa/contributions/requirements/application-spa-req-010.json +18 -0
  102. package/blueprints/application-spa/contributions/requirements/application-spa-req-011.json +18 -0
  103. package/blueprints/application-spa/contributions/requirements/application-spa-req-012.json +18 -0
  104. package/blueprints/application-spa/contributions/requirements/application-spa-req-013.json +18 -0
  105. package/blueprints/application-spa/contributions/requirements/application-spa-req-014.json +18 -0
  106. package/blueprints/application-spa/contributions/requirements/application-spa-req-015.json +18 -0
  107. package/blueprints/application-spa/contributions/requirements/application-spa-req-016.json +18 -0
  108. package/blueprints/application-spa/contributions/requirements/application-spa-req-017.json +18 -0
  109. package/blueprints/application-spa/contributions/requirements/application-spa-req-018.json +18 -0
  110. package/blueprints/application-spa/contributions/requirements/application-spa-req-019.json +18 -0
  111. package/blueprints/application-spa/contributions/requirements/application-spa-req-020.json +18 -0
  112. package/blueprints/application-spa/contributions/requirements/application-spa-req-021.json +18 -0
  113. package/blueprints/application-spa/contributions/tacs/tac-201-application-spa-app-shell.json +45 -0
  114. package/blueprints/application-spa/contributions/tacs/tac-202-application-spa-theme-system.json +32 -0
  115. package/blueprints/application-spa/contributions/tacs/tac-203-application-spa-component-library.json +32 -0
  116. package/blueprints/application-spa/contributions/tacs/tac-204-application-spa-client-data-layer.json +27 -0
  117. package/blueprints/application-spa/contributions/tacs/tac-205-application-spa-forms-engine.json +27 -0
  118. package/blueprints/application-spa/contributions/tacs/tac-206-application-spa-telemetry.json +19 -0
  119. package/blueprints/application-spa/contributions/tacs/tac-207-application-spa-token-adherence-probe.json +57 -0
  120. package/blueprints/application-spa/contributions/tacs/tac-208-application-spa-icon-adherence-probe.json +56 -0
  121. package/blueprints/application-spa/contributions/tacs/tac-209-application-spa-csp-styled-adherence-probe.json +61 -0
  122. package/blueprints/application-spa/contributions/tacs/tac-210-application-spa-external-dependency-provisioning-probe.json +70 -0
  123. package/blueprints/application-spa/contributions/tacs/tac-211-application-spa-core-flow-e2e-probe.json +70 -0
  124. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1101.json +72 -0
  125. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1102.json +63 -0
  126. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1103.json +72 -0
  127. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1104.json +63 -0
  128. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1105.json +69 -0
  129. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1106.json +63 -0
  130. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1107.json +63 -0
  131. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1108.json +90 -0
  132. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1109.json +90 -0
  133. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1110.json +100 -0
  134. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1111.json +90 -0
  135. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1112.json +81 -0
  136. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1113.json +82 -0
  137. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1114.json +60 -0
  138. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1115.json +73 -0
  139. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1116.json +72 -0
  140. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1117.json +73 -0
  141. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1118.json +54 -0
  142. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1119.json +63 -0
  143. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1120.json +72 -0
  144. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1121.json +73 -0
  145. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1122.json +69 -0
  146. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1123.json +63 -0
  147. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1124.json +60 -0
  148. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1125.json +69 -0
  149. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1126.json +78 -0
  150. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1127.json +63 -0
  151. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1128.json +51 -0
  152. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1129.json +54 -0
  153. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1130.json +54 -0
  154. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1131.json +72 -0
  155. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1132.json +72 -0
  156. package/blueprints/application-spa/contributions/user-stories/application-spa-us-1133.json +72 -0
  157. package/blueprints/application-spa/docs/topics.md +57 -0
  158. package/blueprints/application-spa/guide/application-spa.md +40 -0
  159. package/blueprints/delivery-ci-workflows/CHANGELOG.md +39 -0
  160. package/blueprints/delivery-ci-workflows/README.md +57 -0
  161. package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/default-branch-checks.yml +55 -0
  162. package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/pull-request-checks.yml +65 -0
  163. package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/release.yml +71 -0
  164. package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/github-actions/scheduled-audit.yml +61 -0
  165. package/blueprints/delivery-ci-workflows/assets/ci-provider-examples/notes.md +61 -0
  166. package/blueprints/delivery-ci-workflows/assets/report-samples/per-gate.json +13 -0
  167. package/blueprints/delivery-ci-workflows/assets/report-samples/pipeline.json +28 -0
  168. package/blueprints/delivery-ci-workflows/blueprint.json +87 -0
  169. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-701-delivery-ci-workflows-ci-gates.json +30 -0
  170. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-702-delivery-ci-workflows-strict-coverage-gate.json +25 -0
  171. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-703-delivery-ci-workflows-node-only-runner.json +25 -0
  172. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-704-delivery-ci-workflows-report-shape.json +25 -0
  173. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-705-delivery-ci-workflows-elicitation-surface.json +25 -0
  174. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-706-delivery-ci-workflows-branch-model-defaults.json +25 -0
  175. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-707-delivery-ci-workflows-release-workflow-shape.json +25 -0
  176. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-708-delivery-ci-workflows-provider-hint-shape.json +25 -0
  177. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-709-delivery-ci-workflows-release-artefacts.json +25 -0
  178. package/blueprints/delivery-ci-workflows/contributions/adrs/adr-710-delivery-ci-workflows-scheduled-audit.json +25 -0
  179. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-001.json +18 -0
  180. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-002.json +18 -0
  181. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-003.json +18 -0
  182. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-004.json +18 -0
  183. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-005.json +18 -0
  184. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-006.json +18 -0
  185. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-007.json +18 -0
  186. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-008.json +18 -0
  187. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-009.json +18 -0
  188. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-010.json +18 -0
  189. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-011.json +18 -0
  190. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-012.json +18 -0
  191. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-013.json +18 -0
  192. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-014.json +18 -0
  193. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-015.json +18 -0
  194. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-016.json +18 -0
  195. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-017.json +18 -0
  196. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-018.json +18 -0
  197. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-019.json +18 -0
  198. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-020.json +18 -0
  199. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-021.json +18 -0
  200. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-022.json +18 -0
  201. package/blueprints/delivery-ci-workflows/contributions/requirements/delivery-ci-workflows-req-023.json +18 -0
  202. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-701-delivery-ci-workflows-gate-runner.json +59 -0
  203. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-702-delivery-ci-workflows-gate-report.json +32 -0
  204. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-703-delivery-ci-workflows-aggregate-report.json +41 -0
  205. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-704-delivery-ci-workflows-workflow-materialiser.json +64 -0
  206. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-705-delivery-ci-workflows-release-workflow.json +51 -0
  207. package/blueprints/delivery-ci-workflows/contributions/tacs/tac-706-delivery-ci-workflows-scheduled-audit.json +38 -0
  208. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6101.json +37 -0
  209. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6102.json +36 -0
  210. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6103.json +37 -0
  211. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6104.json +37 -0
  212. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6105.json +36 -0
  213. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6106.json +36 -0
  214. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6107.json +37 -0
  215. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6108.json +37 -0
  216. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6109.json +36 -0
  217. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6110.json +36 -0
  218. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6111.json +36 -0
  219. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6112.json +36 -0
  220. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6113.json +36 -0
  221. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6114.json +46 -0
  222. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6115.json +37 -0
  223. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6116.json +28 -0
  224. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6117.json +28 -0
  225. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6118.json +37 -0
  226. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6119.json +28 -0
  227. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6120.json +28 -0
  228. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6121.json +46 -0
  229. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6122.json +46 -0
  230. package/blueprints/delivery-ci-workflows/contributions/user-stories/delivery-ci-workflows-us-6123.json +37 -0
  231. package/blueprints/delivery-ci-workflows/docs/topics.md +61 -0
  232. package/blueprints/delivery-ci-workflows/guide/delivery-ci-workflows.md +136 -0
  233. package/blueprints/deploy-cloudflare-workers/README.md +63 -0
  234. package/blueprints/deploy-cloudflare-workers/assets/ci-workflows/build-and-upload.yml.md +109 -0
  235. package/blueprints/deploy-cloudflare-workers/assets/ci-workflows/promote.yml.md +120 -0
  236. package/blueprints/deploy-cloudflare-workers/assets/verification/served-surface-probes.md +90 -0
  237. package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/bootstrap-vs-steady-state.md +87 -0
  238. package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/preview-alias-shape.md +86 -0
  239. package/blueprints/deploy-cloudflare-workers/assets/wrangler-samples/wrangler-toml-shape.md +85 -0
  240. package/blueprints/deploy-cloudflare-workers/blueprint.json +48 -0
  241. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1301-deploy-cloudflare-workers-deployment-target.json +30 -0
  242. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1302-deploy-cloudflare-workers-default-vendor.json +35 -0
  243. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1303-deploy-cloudflare-workers-preview-vs-production.json +30 -0
  244. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1304-deploy-cloudflare-workers-rollback-is-promote.json +25 -0
  245. package/blueprints/deploy-cloudflare-workers/contributions/adrs/adr-1305-deploy-cloudflare-workers-dev-mode-drift.json +25 -0
  246. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-001.json +18 -0
  247. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-002.json +18 -0
  248. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-003.json +18 -0
  249. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-004.json +18 -0
  250. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-005.json +18 -0
  251. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-006.json +18 -0
  252. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-007.json +18 -0
  253. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-008.json +18 -0
  254. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-009.json +18 -0
  255. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-010.json +18 -0
  256. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-011.json +18 -0
  257. package/blueprints/deploy-cloudflare-workers/contributions/requirements/deploy-cloudflare-workers-req-012.json +18 -0
  258. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1301-deploy-cloudflare-workers-deploy-adapter.json +54 -0
  259. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1302-deploy-cloudflare-workers-wrangler-manifest.json +45 -0
  260. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1303-deploy-cloudflare-workers-preview-url-resolver.json +46 -0
  261. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1304-deploy-cloudflare-workers-promote-gate.json +57 -0
  262. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1305-deploy-cloudflare-workers-served-surface-verifier.json +51 -0
  263. package/blueprints/deploy-cloudflare-workers/contributions/tacs/tac-1306-deploy-cloudflare-workers-deploy-ci-workflows.json +64 -0
  264. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12101.json +54 -0
  265. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12102.json +45 -0
  266. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12103.json +46 -0
  267. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12104.json +46 -0
  268. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12105.json +46 -0
  269. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12106.json +46 -0
  270. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12107.json +46 -0
  271. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12108.json +46 -0
  272. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12109.json +47 -0
  273. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12110.json +46 -0
  274. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12111.json +45 -0
  275. package/blueprints/deploy-cloudflare-workers/contributions/user-stories/deploy-cloudflare-workers-us-12112.json +46 -0
  276. package/blueprints/deploy-cloudflare-workers/docs/topics.md +46 -0
  277. package/blueprints/deploy-cloudflare-workers/guide/deploy-cloudflare-workers.md +74 -0
  278. package/blueprints/email-smtp-resend/README.md +45 -0
  279. package/blueprints/email-smtp-resend/assets/from-address-rotation-pattern.md +44 -0
  280. package/blueprints/email-smtp-resend/assets/resend-verification-pointer.md +25 -0
  281. package/blueprints/email-smtp-resend/assets/stub-adapter.md +65 -0
  282. package/blueprints/email-smtp-resend/blueprint.json +23 -0
  283. package/blueprints/email-smtp-resend/contributions/adrs/adr-401-email-smtp-resend-transport-choice.json +30 -0
  284. package/blueprints/email-smtp-resend/contributions/adrs/adr-402-email-smtp-resend-retry-and-backoff-posture.json +30 -0
  285. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-001.json +18 -0
  286. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-002.json +18 -0
  287. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-003.json +18 -0
  288. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-004.json +18 -0
  289. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-005.json +18 -0
  290. package/blueprints/email-smtp-resend/contributions/requirements/email-smtp-resend-req-006.json +18 -0
  291. package/blueprints/email-smtp-resend/contributions/tacs/tac-401-email-smtp-resend-send-adapter.json +53 -0
  292. package/blueprints/email-smtp-resend/contributions/tacs/tac-402-email-smtp-resend-webhook-verifier.json +56 -0
  293. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4101.json +45 -0
  294. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4102.json +36 -0
  295. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4103.json +45 -0
  296. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4104.json +45 -0
  297. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4105.json +36 -0
  298. package/blueprints/email-smtp-resend/contributions/user-stories/email-smtp-resend-us-4106.json +37 -0
  299. package/blueprints/email-smtp-resend/docs/topics.md +44 -0
  300. package/blueprints/email-smtp-resend/guide/email-smtp-resend.md +71 -0
  301. package/blueprints/observability-essentials/README.md +53 -0
  302. package/blueprints/observability-essentials/assets/probe-samples/liveness-body.json +4 -0
  303. package/blueprints/observability-essentials/assets/probe-samples/readiness-body.json +18 -0
  304. package/blueprints/observability-essentials/assets/status-page-samples/status-page-clean.html +22 -0
  305. package/blueprints/observability-essentials/assets/status-page-samples/status-page-with-notice.html +25 -0
  306. package/blueprints/observability-essentials/blueprint.json +54 -0
  307. package/blueprints/observability-essentials/contributions/adrs/adr-801-observability-essentials-health-probes.json +30 -0
  308. package/blueprints/observability-essentials/contributions/adrs/adr-802-observability-essentials-readiness-semantics.json +30 -0
  309. package/blueprints/observability-essentials/contributions/adrs/adr-803-observability-essentials-status-page-contract.json +30 -0
  310. package/blueprints/observability-essentials/contributions/adrs/adr-804-observability-essentials-probe-secrecy.json +25 -0
  311. package/blueprints/observability-essentials/contributions/adrs/adr-805-observability-essentials-notification-outcome-model.json +25 -0
  312. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-001.json +18 -0
  313. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-002.json +18 -0
  314. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-003.json +18 -0
  315. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-004.json +18 -0
  316. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-005.json +18 -0
  317. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-006.json +18 -0
  318. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-007.json +18 -0
  319. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-008.json +18 -0
  320. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-009.json +18 -0
  321. package/blueprints/observability-essentials/contributions/requirements/observability-essentials-req-010.json +18 -0
  322. package/blueprints/observability-essentials/contributions/tacs/tac-801-observability-essentials-liveness-probe.json +32 -0
  323. package/blueprints/observability-essentials/contributions/tacs/tac-802-observability-essentials-readiness-probe.json +43 -0
  324. package/blueprints/observability-essentials/contributions/tacs/tac-803-observability-essentials-status-page.json +37 -0
  325. package/blueprints/observability-essentials/contributions/tacs/tac-804-observability-essentials-notification-outcome.json +42 -0
  326. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7101.json +45 -0
  327. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7102.json +45 -0
  328. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7103.json +45 -0
  329. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7104.json +45 -0
  330. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7105.json +45 -0
  331. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7106.json +45 -0
  332. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7107.json +46 -0
  333. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7108.json +47 -0
  334. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7109.json +45 -0
  335. package/blueprints/observability-essentials/contributions/user-stories/observability-essentials-us-7110.json +46 -0
  336. package/blueprints/observability-essentials/docs/topics.md +57 -0
  337. package/blueprints/observability-essentials/guide/observability-essentials.md +68 -0
  338. package/blueprints/observability-probe-endpoints/README.md +53 -0
  339. package/blueprints/observability-probe-endpoints/assets/docker/dockerfile-healthcheck.md +19 -0
  340. package/blueprints/observability-probe-endpoints/assets/kubernetes/podspec-probes-separate-port.md +54 -0
  341. package/blueprints/observability-probe-endpoints/assets/kubernetes/podspec-probes.md +36 -0
  342. package/blueprints/observability-probe-endpoints/assets/load-balancer/health-check-config.md +23 -0
  343. package/blueprints/observability-probe-endpoints/assets/systemd/notify-service.md +30 -0
  344. package/blueprints/observability-probe-endpoints/assets/uptime-monitor/monitor-config.md +22 -0
  345. package/blueprints/observability-probe-endpoints/blueprint.json +44 -0
  346. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1501-observability-probe-endpoints-health-probes.json +30 -0
  347. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1502-observability-probe-endpoints-readiness-semantics.json +30 -0
  348. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1503-observability-probe-endpoints-kubernetes-default.json +30 -0
  349. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1504-observability-probe-endpoints-separate-port-option.json +30 -0
  350. package/blueprints/observability-probe-endpoints/contributions/adrs/adr-1505-observability-probe-endpoints-external-response-secrecy.json +30 -0
  351. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-001.json +18 -0
  352. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-002.json +18 -0
  353. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-003.json +18 -0
  354. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-004.json +18 -0
  355. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-005.json +18 -0
  356. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-006.json +18 -0
  357. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-007.json +18 -0
  358. package/blueprints/observability-probe-endpoints/contributions/requirements/observability-probe-endpoints-req-008.json +18 -0
  359. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1501-observability-probe-endpoints-profile-resolver.json +39 -0
  360. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1502-observability-probe-endpoints-handler-set.json +40 -0
  361. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1503-observability-probe-endpoints-listener-topology.json +51 -0
  362. package/blueprints/observability-probe-endpoints/contributions/tacs/tac-1504-observability-probe-endpoints-non-http-adapters.json +39 -0
  363. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14101.json +46 -0
  364. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14102.json +46 -0
  365. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14103.json +46 -0
  366. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14104.json +45 -0
  367. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14105.json +46 -0
  368. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14106.json +45 -0
  369. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14107.json +45 -0
  370. package/blueprints/observability-probe-endpoints/contributions/user-stories/observability-probe-endpoints-us-14108.json +46 -0
  371. package/blueprints/observability-probe-endpoints/docs/topics.md +51 -0
  372. package/blueprints/observability-probe-endpoints/guide/observability-probe-endpoints.md +83 -0
  373. package/blueprints/persistence-data-d1/README.md +50 -0
  374. package/blueprints/persistence-data-d1/assets/batch-usage/batch-atomicity-example.md +72 -0
  375. package/blueprints/persistence-data-d1/assets/facade-shape/facade-module-shape.md +115 -0
  376. package/blueprints/persistence-data-d1/assets/migration-shape/migration-file-shape.md +119 -0
  377. package/blueprints/persistence-data-d1/assets/wrangler-config/d1-binding-shape.md +93 -0
  378. package/blueprints/persistence-data-d1/blueprint.json +42 -0
  379. package/blueprints/persistence-data-d1/contributions/adrs/adr-1401-persistence-data-d1-store-model.json +30 -0
  380. package/blueprints/persistence-data-d1/contributions/adrs/adr-1402-persistence-data-d1-migration-discipline.json +30 -0
  381. package/blueprints/persistence-data-d1/contributions/adrs/adr-1403-persistence-data-d1-event-secrecy.json +25 -0
  382. package/blueprints/persistence-data-d1/contributions/adrs/adr-1404-persistence-data-d1-store-boundary.json +25 -0
  383. package/blueprints/persistence-data-d1/contributions/adrs/adr-1405-persistence-data-d1-recovery-model.json +30 -0
  384. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-001.json +18 -0
  385. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-002.json +18 -0
  386. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-003.json +18 -0
  387. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-004.json +18 -0
  388. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-005.json +18 -0
  389. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-006.json +18 -0
  390. package/blueprints/persistence-data-d1/contributions/requirements/persistence-data-d1-req-007.json +18 -0
  391. package/blueprints/persistence-data-d1/contributions/tacs/tac-1401-persistence-data-d1-facade.json +51 -0
  392. package/blueprints/persistence-data-d1/contributions/tacs/tac-1402-persistence-data-d1-migration-catalog.json +31 -0
  393. package/blueprints/persistence-data-d1/contributions/tacs/tac-1403-persistence-data-d1-deploy-gate.json +38 -0
  394. package/blueprints/persistence-data-d1/contributions/tacs/tac-1404-persistence-data-d1-recovery-runner.json +39 -0
  395. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13101.json +45 -0
  396. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13102.json +45 -0
  397. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13103.json +46 -0
  398. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13104.json +45 -0
  399. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13105.json +45 -0
  400. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13106.json +46 -0
  401. package/blueprints/persistence-data-d1/contributions/user-stories/persistence-data-d1-us-13107.json +38 -0
  402. package/blueprints/persistence-data-d1/docs/topics.md +59 -0
  403. package/blueprints/persistence-data-d1/guide/persistence-data-d1.md +77 -0
  404. package/blueprints/persistence-data-sqlite/README.md +50 -0
  405. package/blueprints/persistence-data-sqlite/assets/backup-procedures/hot-checkpoint-note.md +22 -0
  406. package/blueprints/persistence-data-sqlite/assets/backup-procedures/sqlite-file-copy.md +70 -0
  407. package/blueprints/persistence-data-sqlite/assets/schema-samples/catalog-file-layout.md +73 -0
  408. package/blueprints/persistence-data-sqlite/assets/schema-samples/migration-shape.md +76 -0
  409. package/blueprints/persistence-data-sqlite/blueprint.json +50 -0
  410. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-601-persistence-data-sqlite-store-model.json +30 -0
  411. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-602-persistence-data-sqlite-migration-discipline.json +30 -0
  412. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-603-persistence-data-sqlite-event-secrecy.json +25 -0
  413. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-604-persistence-data-sqlite-store-boundary.json +25 -0
  414. package/blueprints/persistence-data-sqlite/contributions/adrs/adr-605-persistence-data-sqlite-backup-model.json +25 -0
  415. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-001.json +18 -0
  416. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-002.json +18 -0
  417. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-003.json +18 -0
  418. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-004.json +18 -0
  419. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-005.json +18 -0
  420. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-006.json +18 -0
  421. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-007.json +18 -0
  422. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-008.json +18 -0
  423. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-009.json +18 -0
  424. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-010.json +18 -0
  425. package/blueprints/persistence-data-sqlite/contributions/requirements/persistence-data-sqlite-req-011.json +18 -0
  426. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-601-persistence-data-sqlite-store.json +57 -0
  427. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-602-persistence-data-sqlite-migration-runner.json +34 -0
  428. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-603-persistence-data-sqlite-migration-catalog.json +31 -0
  429. package/blueprints/persistence-data-sqlite/contributions/tacs/tac-604-persistence-data-sqlite-backup-runner.json +33 -0
  430. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5101.json +46 -0
  431. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5102.json +46 -0
  432. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5103.json +37 -0
  433. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5104.json +45 -0
  434. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5105.json +45 -0
  435. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5106.json +46 -0
  436. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5107.json +45 -0
  437. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5108.json +46 -0
  438. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5109.json +46 -0
  439. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5110.json +37 -0
  440. package/blueprints/persistence-data-sqlite/contributions/user-stories/persistence-data-sqlite-us-5111.json +37 -0
  441. package/blueprints/persistence-data-sqlite/docs/topics.md +49 -0
  442. package/blueprints/persistence-data-sqlite/guide/persistence-data-sqlite.md +69 -0
  443. package/blueprints/security-auth-clerk/README.md +52 -0
  444. package/blueprints/security-auth-clerk/assets/authorisation/role-claim-mapping-sample.md +99 -0
  445. package/blueprints/security-auth-clerk/assets/middleware/node-middleware-shape.md +86 -0
  446. package/blueprints/security-auth-clerk/assets/middleware/workers-fetch-shape.md +123 -0
  447. package/blueprints/security-auth-clerk/assets/wiring/clerk-provider-react.md +48 -0
  448. package/blueprints/security-auth-clerk/assets/wiring/clerk-provider-vue.md +41 -0
  449. package/blueprints/security-auth-clerk/assets/wiring/workers-wrangler-toml-shape.md +51 -0
  450. package/blueprints/security-auth-clerk/blueprint.json +42 -0
  451. package/blueprints/security-auth-clerk/contributions/adrs/adr-1001-security-auth-clerk-auth-model.json +30 -0
  452. package/blueprints/security-auth-clerk/contributions/adrs/adr-1002-security-auth-clerk-middleware-boundary.json +25 -0
  453. package/blueprints/security-auth-clerk/contributions/adrs/adr-1003-security-auth-clerk-authorisation-adapter-contract.json +25 -0
  454. package/blueprints/security-auth-clerk/contributions/adrs/adr-1004-security-auth-clerk-claims-mapping-discipline.json +25 -0
  455. package/blueprints/security-auth-clerk/contributions/adrs/adr-1005-security-auth-clerk-session-lifecycle.json +25 -0
  456. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-001.json +18 -0
  457. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-002.json +18 -0
  458. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-003.json +18 -0
  459. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-004.json +18 -0
  460. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-005.json +18 -0
  461. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-006.json +18 -0
  462. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-007.json +18 -0
  463. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-008.json +18 -0
  464. package/blueprints/security-auth-clerk/contributions/requirements/security-auth-clerk-req-009.json +18 -0
  465. package/blueprints/security-auth-clerk/contributions/tacs/tac-1001-security-auth-clerk-middleware.json +42 -0
  466. package/blueprints/security-auth-clerk/contributions/tacs/tac-1002-security-auth-clerk-authorisation-adapter.json +30 -0
  467. package/blueprints/security-auth-clerk/contributions/tacs/tac-1003-security-auth-clerk-session-verifier.json +38 -0
  468. package/blueprints/security-auth-clerk/contributions/tacs/tac-1004-security-auth-clerk-claims-mapper.json +22 -0
  469. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9101.json +46 -0
  470. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9102.json +38 -0
  471. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9103.json +46 -0
  472. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9104.json +46 -0
  473. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9105.json +36 -0
  474. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9106.json +36 -0
  475. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9107.json +37 -0
  476. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9108.json +36 -0
  477. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9109.json +36 -0
  478. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9110.json +37 -0
  479. package/blueprints/security-auth-clerk/contributions/user-stories/security-auth-clerk-us-9111.json +36 -0
  480. package/blueprints/security-auth-clerk/docs/topics.md +56 -0
  481. package/blueprints/security-auth-clerk/guide/security-auth-clerk.md +80 -0
  482. package/blueprints/security-auth-keycloak/README.md +56 -0
  483. package/blueprints/security-auth-keycloak/assets/local-container/keycloak-bootstrap.md +54 -0
  484. package/blueprints/security-auth-keycloak/assets/middleware/verifier-wiring.md +93 -0
  485. package/blueprints/security-auth-keycloak/assets/mock-introspection/mock-introspection-shape.md +62 -0
  486. package/blueprints/security-auth-keycloak/assets/provider-router/router-shape.md +71 -0
  487. package/blueprints/security-auth-keycloak/assets/realm-skeleton/realm-config-shape.md +55 -0
  488. package/blueprints/security-auth-keycloak/blueprint.json +49 -0
  489. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1201-security-auth-keycloak-auth-model.json +35 -0
  490. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1202-security-auth-keycloak-verification-mode-choice.json +30 -0
  491. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1203-security-auth-keycloak-provider-routing-seam.json +30 -0
  492. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1204-security-auth-keycloak-session-vs-token-contract.json +25 -0
  493. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1205-security-auth-keycloak-jwks-rotation-cache-lifetime.json +30 -0
  494. package/blueprints/security-auth-keycloak/contributions/adrs/adr-1206-security-auth-keycloak-refresh-and-sign-out-posture.json +25 -0
  495. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-001.json +18 -0
  496. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-002.json +18 -0
  497. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-003.json +18 -0
  498. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-004.json +18 -0
  499. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-005.json +18 -0
  500. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-006.json +18 -0
  501. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-007.json +18 -0
  502. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-008.json +18 -0
  503. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-009.json +18 -0
  504. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-010.json +18 -0
  505. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-011.json +18 -0
  506. package/blueprints/security-auth-keycloak/contributions/requirements/security-auth-keycloak-req-012.json +18 -0
  507. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1201-security-auth-keycloak-discovery-client.json +51 -0
  508. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1202-security-auth-keycloak-jwt-verifier.json +46 -0
  509. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1203-security-auth-keycloak-introspection-client.json +45 -0
  510. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1204-security-auth-keycloak-provider-router.json +37 -0
  511. package/blueprints/security-auth-keycloak/contributions/tacs/tac-1205-security-auth-keycloak-role-adapter.json +32 -0
  512. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11101.json +47 -0
  513. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11102.json +45 -0
  514. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11103.json +36 -0
  515. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11104.json +36 -0
  516. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11105.json +45 -0
  517. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11106.json +46 -0
  518. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11107.json +45 -0
  519. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11108.json +45 -0
  520. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11109.json +37 -0
  521. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11110.json +45 -0
  522. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11111.json +45 -0
  523. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11112.json +37 -0
  524. package/blueprints/security-auth-keycloak/contributions/user-stories/security-auth-keycloak-us-11113.json +36 -0
  525. package/blueprints/security-auth-keycloak/docs/topics.md +74 -0
  526. package/blueprints/security-auth-keycloak/guide/security-auth-keycloak.md +81 -0
  527. package/blueprints/security-auth-magic-link/README.md +46 -0
  528. package/blueprints/security-auth-magic-link/assets/email-templates/magic-link-email.md +44 -0
  529. package/blueprints/security-auth-magic-link/assets/email-templates/stub-adapter.md +55 -0
  530. package/blueprints/security-auth-magic-link/assets/principal-registry-samples/allow-list-file.md +46 -0
  531. package/blueprints/security-auth-magic-link/assets/principal-registry-samples/single-address.md +35 -0
  532. package/blueprints/security-auth-magic-link/blueprint.json +45 -0
  533. package/blueprints/security-auth-magic-link/contributions/adrs/adr-501-security-auth-magic-link-model.json +30 -0
  534. package/blueprints/security-auth-magic-link/contributions/adrs/adr-502-security-auth-magic-link-token-secrecy.json +25 -0
  535. package/blueprints/security-auth-magic-link/contributions/adrs/adr-503-security-auth-magic-link-anti-enumeration-budget.json +25 -0
  536. package/blueprints/security-auth-magic-link/contributions/adrs/adr-504-security-auth-magic-link-session-lifecycle.json +30 -0
  537. package/blueprints/security-auth-magic-link/contributions/adrs/adr-505-security-auth-magic-link-rate-limiting.json +25 -0
  538. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-001.json +18 -0
  539. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-002.json +18 -0
  540. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-003.json +18 -0
  541. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-004.json +18 -0
  542. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-005.json +18 -0
  543. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-006.json +18 -0
  544. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-007.json +18 -0
  545. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-008.json +18 -0
  546. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-009.json +18 -0
  547. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-010.json +18 -0
  548. package/blueprints/security-auth-magic-link/contributions/requirements/security-auth-magic-link-req-011.json +18 -0
  549. package/blueprints/security-auth-magic-link/contributions/tacs/tac-501-security-auth-magic-link-manager.json +45 -0
  550. package/blueprints/security-auth-magic-link/contributions/tacs/tac-502-security-auth-magic-link-session-manager.json +46 -0
  551. package/blueprints/security-auth-magic-link/contributions/tacs/tac-503-security-auth-magic-link-login-routes.json +76 -0
  552. package/blueprints/security-auth-magic-link/contributions/tacs/tac-504-security-auth-magic-link-email-delivery-adapter.json +26 -0
  553. package/blueprints/security-auth-magic-link/contributions/tacs/tac-505-security-auth-magic-link-principal-registry.json +26 -0
  554. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3101.json +64 -0
  555. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3102.json +54 -0
  556. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3103.json +45 -0
  557. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3104.json +55 -0
  558. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3105.json +46 -0
  559. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3106.json +46 -0
  560. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3107.json +54 -0
  561. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3108.json +46 -0
  562. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3109.json +48 -0
  563. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3110.json +45 -0
  564. package/blueprints/security-auth-magic-link/contributions/user-stories/security-auth-magic-link-us-3111.json +45 -0
  565. package/blueprints/security-auth-magic-link/docs/topics.md +45 -0
  566. package/blueprints/security-auth-magic-link/guide/security-auth-magic-link.md +65 -0
  567. package/blueprints/security-auth-oauth2/README.md +50 -0
  568. package/blueprints/security-auth-oauth2/assets/mock-provider/mock-oidc-shape.md +55 -0
  569. package/blueprints/security-auth-oauth2/assets/provider-selector/list-shape.md +27 -0
  570. package/blueprints/security-auth-oauth2/assets/providers/generic-oidc-discovery.md +31 -0
  571. package/blueprints/security-auth-oauth2/assets/providers/github-oauth2-only.md +31 -0
  572. package/blueprints/security-auth-oauth2/assets/providers/google-oidc.md +31 -0
  573. package/blueprints/security-auth-oauth2/assets/session-bridge/opaque-handle-shape.md +59 -0
  574. package/blueprints/security-auth-oauth2/blueprint.json +44 -0
  575. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1101-security-auth-oauth2-auth-model.json +35 -0
  576. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1102-security-auth-oauth2-provider-abstraction-contract.json +25 -0
  577. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1103-security-auth-oauth2-pkce-discipline.json +25 -0
  578. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1104-security-auth-oauth2-session-bridge-shape.json +25 -0
  579. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1105-security-auth-oauth2-refresh-token-posture.json +25 -0
  580. package/blueprints/security-auth-oauth2/contributions/adrs/adr-1106-security-auth-oauth2-multi-provider-routing.json +25 -0
  581. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-001.json +18 -0
  582. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-002.json +18 -0
  583. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-003.json +18 -0
  584. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-004.json +18 -0
  585. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-005.json +18 -0
  586. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-006.json +18 -0
  587. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-007.json +18 -0
  588. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-008.json +18 -0
  589. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-009.json +18 -0
  590. package/blueprints/security-auth-oauth2/contributions/requirements/security-auth-oauth2-req-010.json +18 -0
  591. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1101-security-auth-oauth2-flow-controller.json +61 -0
  592. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1102-security-auth-oauth2-provider-adapter.json +33 -0
  593. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1103-security-auth-oauth2-session-bridge.json +51 -0
  594. package/blueprints/security-auth-oauth2/contributions/tacs/tac-1104-security-auth-oauth2-provider-selector.json +29 -0
  595. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10101.json +47 -0
  596. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10102.json +45 -0
  597. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10103.json +36 -0
  598. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10104.json +36 -0
  599. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10105.json +55 -0
  600. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10106.json +45 -0
  601. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10107.json +46 -0
  602. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10108.json +46 -0
  603. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10109.json +37 -0
  604. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10110.json +37 -0
  605. package/blueprints/security-auth-oauth2/contributions/user-stories/security-auth-oauth2-us-10111.json +28 -0
  606. package/blueprints/security-auth-oauth2/docs/topics.md +58 -0
  607. package/blueprints/security-auth-oauth2/guide/security-auth-oauth2.md +65 -0
  608. package/blueprints/security-secrets-management/README.md +48 -0
  609. package/blueprints/security-secrets-management/assets/cli-usage/agent-access-pattern.md +69 -0
  610. package/blueprints/security-secrets-management/assets/manifest-samples/environment-aware-example.md +33 -0
  611. package/blueprints/security-secrets-management/assets/manifest-samples/secrets-yaml-shape.md +74 -0
  612. package/blueprints/security-secrets-management/assets/ui-integration/three-way-choice.md +44 -0
  613. package/blueprints/security-secrets-management/blueprint.json +43 -0
  614. package/blueprints/security-secrets-management/contributions/adrs/adr-901-security-secrets-management-secrets-source.json +30 -0
  615. package/blueprints/security-secrets-management/contributions/adrs/adr-902-security-secrets-management-default-vendor.json +35 -0
  616. package/blueprints/security-secrets-management/contributions/adrs/adr-903-security-secrets-management-agent-access-discipline.json +25 -0
  617. package/blueprints/security-secrets-management/contributions/adrs/adr-904-security-secrets-management-dotenv-reflection.json +25 -0
  618. package/blueprints/security-secrets-management/contributions/adrs/adr-905-security-secrets-management-rotation-and-audit.json +30 -0
  619. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-001.json +18 -0
  620. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-002.json +18 -0
  621. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-003.json +18 -0
  622. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-004.json +18 -0
  623. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-005.json +18 -0
  624. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-006.json +18 -0
  625. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-007.json +18 -0
  626. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-008.json +18 -0
  627. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-009.json +18 -0
  628. package/blueprints/security-secrets-management/contributions/requirements/security-secrets-management-req-010.json +18 -0
  629. package/blueprints/security-secrets-management/contributions/tacs/tac-901-security-secrets-management-manager-client.json +52 -0
  630. package/blueprints/security-secrets-management/contributions/tacs/tac-902-security-secrets-management-manifest.json +34 -0
  631. package/blueprints/security-secrets-management/contributions/tacs/tac-903-security-secrets-management-env-reflector.json +46 -0
  632. package/blueprints/security-secrets-management/contributions/tacs/tac-904-security-secrets-management-rotation-gate.json +57 -0
  633. package/blueprints/security-secrets-management/contributions/tacs/tac-905-security-secrets-management-agent-cli.json +59 -0
  634. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8101.json +46 -0
  635. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8102.json +45 -0
  636. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8103.json +37 -0
  637. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8104.json +45 -0
  638. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8105.json +55 -0
  639. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8106.json +46 -0
  640. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8107.json +46 -0
  641. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8108.json +45 -0
  642. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8109.json +46 -0
  643. package/blueprints/security-secrets-management/contributions/user-stories/security-secrets-management-us-8110.json +45 -0
  644. package/blueprints/security-secrets-management/docs/topics.md +46 -0
  645. package/blueprints/security-secrets-management/guide/security-secrets-management.md +68 -0
  646. package/fixtures/canary-manifest.json +1 -101
  647. package/guidance/build-cycle-playbook.md +2 -2
  648. package/guidance/document-model.md +1 -1
  649. package/guidance/harness-template.md +13 -0
  650. package/guidance/managed/agent-instructions-block.hash +1 -1
  651. package/guidance/managed/agent-instructions-block.md +13 -0
  652. package/package.json +18 -9
  653. package/rcf/adrs/adr-001.json +1 -1
  654. package/rcf/adrs/adr-009.json +1 -1
  655. package/rcf/build-sequence.json +1 -1
  656. package/rcf/manifest.json +2 -2
  657. package/rcf/prd.json +2 -2
  658. package/releases/releases.yaml +116 -0
  659. package/scripts/preinstall-node-check.mjs +61 -0
  660. package/src/blueprint/apply.js +62 -18
  661. package/src/blueprint/conflicts.js +8 -8
  662. package/src/blueprint/index.js +14 -1
  663. package/src/blueprint/library-loader.js +271 -0
  664. package/src/blueprint/library-registry.js +341 -0
  665. package/src/blueprint/list.js +94 -0
  666. package/src/blueprint/loader.js +26 -1
  667. package/src/blueprint/namespace.js +20 -16
  668. package/src/blueprint/shelf-resolver.js +286 -0
  669. package/src/blueprint/supersede.js +3 -2
  670. package/src/browser-verify/invariants.js +40 -0
  671. package/src/browser-verify/runner.js +2 -0
  672. package/src/cli/blueprint-library.js +419 -0
  673. package/src/cli/blueprint.js +91 -10
  674. package/src/cli/guidance.js +1 -1
  675. package/src/cli/help.js +27 -1
  676. package/src/cli/init.js +2 -0
  677. package/src/cli/version.js +673 -0
  678. package/src/cli/view.js +282 -1
  679. package/src/core/store/writer.js +64 -2
  680. package/src/server/index.js +3 -0
  681. package/src/server/routes.js +15 -1
  682. package/src/server/scope-endpoint.js +105 -0
  683. package/src/setup/agent-setup.js +28 -10
  684. package/src/view/live-client.js +253 -6
  685. package/src/view/scope.js +231 -0
  686. package/src/view/style.css +42 -0
@@ -0,0 +1,31 @@
1
+ {
2
+ "tacId": "TAC-603-persistence-data-sqlite-migration-catalog",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "name": "Migration catalog",
8
+ "purpose": "The in-tree source of schema truth. An ordered list of migration entries, each carrying a monotonic version integer, a human description string, and one or more DDL/data statements. The catalog lives next to the store facade and is imported by the migration runner at open. Its max version is the build's max known migration version, which the refuse-newer comparison and the schemaVersion read both anchor against.",
9
+ "responsibilities": [
10
+ "Expose an ordered sequence of migration entries starting at version 1 with no gaps; each entry has fields { version, description, statements } where statements is a non-empty list of engine-native DDL/data statements (AC-5102-1).",
11
+ "Expose the max version integer as a named export the store facade reads for schemaVersion contract validation and refuse-newer comparison (AC-5102-2).",
12
+ "Hold every schema change ever shipped in this project's history; a schema change that is not a new numbered entry in this catalog is not a shipped schema change (AC-5102-1)."
13
+ ],
14
+ "internalStructure": "One source-tree module exporting MIGRATIONS (the ordered array) and CURRENT_VERSION (the max version integer). Entries are appended, never edited: a shipped migration is a fact of production and any correction is a new migration that supersedes it. The statements field's dialect matches the engine ADR-601 selected; SQLite dialect at v1.0.0 unless a project supersedes ADR-601.",
15
+ "interfaces": [
16
+ {
17
+ "name": "MIGRATIONS",
18
+ "kind": "constant",
19
+ "description": "The ordered array of { version, description, statements } entries, exported as a named module-level constant."
20
+ },
21
+ {
22
+ "name": "CURRENT_VERSION",
23
+ "kind": "constant",
24
+ "description": "The max version integer across MIGRATIONS. Equals MIGRATIONS[MIGRATIONS.length - 1].version by construction."
25
+ }
26
+ ],
27
+ "dependencies": [],
28
+ "tradeoffs": "One central catalog file is trivial to reason about at small history (up to a few dozen entries) and starts to strain review at large history. Projects that outgrow one file split into one-file-per-migration under a directory the module aggregates, preserving the exported MIGRATIONS shape. Statements-as-strings keeps the catalog readable but couples it to one engine dialect; supporting two engines from one catalog requires a per-entry dialect indirection the v1.0.0 shape does not carry and the blueprint does not recommend before a project needs it.",
29
+ "createdAt": "2026-08-21T00:00:00Z",
30
+ "updatedAt": "2026-08-21T00:00:00Z"
31
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "tacId": "TAC-604-persistence-data-sqlite-backup-runner",
3
+ "prdId": "PRD-001",
4
+ "tadId": "TAD-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "name": "Backup runner",
8
+ "purpose": "Produces a self-contained snapshot of the store artifact without downtime: the application keeps serving reads and writes while the runner copies the file (SQLite: online-backup API or checkpoint-then-file-copy) or requests an engine-native snapshot (Postgres: pg_basebackup or file-system snapshot). Emits a backupCheckpoint event on completion carrying the artifact path and the ISO-8601 completion timestamp.",
9
+ "responsibilities": [
10
+ "Snapshot the store to the requested output path while consumer requests continue to serve. No request may be marked failed on account of the backup operation (AC-5108-1).",
11
+ "Produce an artifact a fresh process can open through the same store facade at the same schema version and read the rows committed at or before the snapshot completion timestamp (AC-5108-2).",
12
+ "Emit exactly one backupCheckpoint event on the store's event log at snapshot completion, carrying the artifact path and the completion timestamp (AC-5108-3, AC-5106-1)."
13
+ ],
14
+ "internalStructure": "One backup(outputPath) method exposed on the store facade. Under the SQLite engine (ADR-601 default), the implementation opens a second connection in backup mode and uses the online-backup API to stream pages to the output path, or issues a WAL checkpoint and then copies the main file; either way the writer's connection stays available. Under an alternate engine the implementation uses the engine-native equivalent behind the same facade method.",
15
+ "interfaces": [
16
+ {
17
+ "name": "backup",
18
+ "kind": "async-method",
19
+ "description": "store.backup(outputPath) -> Promise<{ artifactPath, completedAt }>; the sole backup entry point on the facade. Emits backupCheckpoint on completion via the store's event sink."
20
+ }
21
+ ],
22
+ "dependencies": [
23
+ {
24
+ "name": "Store facade",
25
+ "kind": "tac",
26
+ "tacId": "TAC-601-persistence-data-sqlite-store",
27
+ "description": "The backup runner is exposed as a method on the store facade and reuses the facade's event sink for backupCheckpoint emission."
28
+ }
29
+ ],
30
+ "tradeoffs": "File-level backup is fast, portable, and cheap to restore (point a compatible build at the file), and it does not require a logical schema-aware dump. The cost is that the artifact is engine-native: a SQLite file is not restorable into a Postgres cluster. Cross-engine migration is out of scope for this blueprint. Projects that need a logical dump alongside the file-level backup add a project-authored dump runner beside this one; the file-level runner remains the primary recovery path.",
31
+ "createdAt": "2026-08-21T00:00:00Z",
32
+ "updatedAt": "2026-08-21T00:00:00Z"
33
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5101",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-001",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "The store opens once at boot and is ready when the entry point returns",
8
+ "asA": "operator whose deploy needs a persistence surface ready before the first request is served",
9
+ "iWant": "the store to be opened exactly once at boot through a single entry point that runs migrations before returning",
10
+ "soThat": "the application starts in a known persistence state and no request runs against a half-initialised store",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5101-1",
14
+ "description": "The application exposes a single named function or module export that opens the store, and the process invokes it exactly once during boot before any request handler binds.",
15
+ "given": "the application is starting cold",
16
+ "when": "the boot sequence runs",
17
+ "then": "the store event log contains exactly one opened event whose timestamp precedes the timestamp of the first served request",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5101-2",
23
+ "description": "The store opens with a path or connection string sourced from application configuration; no consumer code hard-codes the store location.",
24
+ "given": "the application is configured with a store path or connection string",
25
+ "when": "the boot sequence runs the open entry point",
26
+ "then": "the store event log's opened event carries the same store identifier the configuration supplied, and a grep of the source tree finds the identifier resolved from configuration rather than hard-coded",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5101-3",
32
+ "description": "The open entry point returns only after migrations have run to the build's max known schema version; consumer code that runs after the entry point returns sees a schema at that version.",
33
+ "given": "the boot sequence has invoked the open entry point and control has returned",
34
+ "when": "consumer code queries the schema version via the store facade",
35
+ "then": "the reported version equals the build's max known migration version",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-601-persistence-data-sqlite-store",
42
+ "TAC-602-persistence-data-sqlite-migration-runner"
43
+ ],
44
+ "createdAt": "2026-08-21T00:00:00Z",
45
+ "updatedAt": "2026-08-21T00:00:00Z"
46
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5102",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-002",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Schema evolution is expressed as a numbered forward-only migration catalog committed in-tree",
8
+ "asA": "operator who needs deploys to be reproducible from a git ref",
9
+ "iWant": "every schema change to live in an ordered numbered migration catalog next to the store code",
10
+ "soThat": "the schema shape at any deployed version can be read directly from the committed catalog and no schema state exists outside version control",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5102-1",
14
+ "description": "The migration catalog exists as a source-tree artifact whose entries carry a monotonic version integer, a description string, and one or more statements. Loading the catalog yields entries in ascending version order with no gaps.",
15
+ "given": "the source tree at any commit that produces a running application",
16
+ "when": "the store facade imports the catalog at boot",
17
+ "then": "the loaded catalog is an ordered sequence whose version integers start at 1 and increase by exactly 1 per entry, and every entry carries a non-empty description and a non-empty statements list",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5102-2",
23
+ "description": "The store facade exposes a schemaVersion read operation whose return value equals the highest version present in the bookkeeping table after the last successful migration run.",
24
+ "given": "the store has been opened and any pending migrations have applied",
25
+ "when": "consumer code calls the schemaVersion read operation",
26
+ "then": "the returned integer equals the max value of the bookkeeping table's version column, and matches the max version integer in the loaded catalog",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5102-3",
32
+ "description": "The migration runner writes exactly one bookkeeping row per successfully applied migration, carrying the migration's version integer and an ISO-8601 appliedAt timestamp.",
33
+ "given": "the store opens against a file older than the build's max known version",
34
+ "when": "the migration runner completes",
35
+ "then": "the bookkeeping table holds one row per applied migration with the appliedAt timestamp set to a value not in the future and not preceding the store-opened event",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-602-persistence-data-sqlite-migration-runner",
42
+ "TAC-603-persistence-data-sqlite-migration-catalog"
43
+ ],
44
+ "createdAt": "2026-08-21T00:00:00Z",
45
+ "updatedAt": "2026-08-21T00:00:00Z"
46
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5103",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-003",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "The store refuses to boot when it is newer than the build",
8
+ "asA": "operator whose deploy rollback must never corrupt production data",
9
+ "iWant": "the store to refuse to open when its on-disk schema version is newer than this build knows about",
10
+ "soThat": "an accidental rollback to an older build fails loudly at boot instead of silently reading and writing against unknown schema shapes",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5103-1",
14
+ "description": "Opening a store whose bookkeeping table records a schema version strictly greater than the build's max known migration version throws an error with a stable code and a message naming both versions; the process does not enter its request-serving state.",
15
+ "given": "a store artifact whose highest bookkeeping row records version N and a build whose max known migration version is M with M < N",
16
+ "when": "the boot sequence invokes the open entry point",
17
+ "then": "the entry point throws an error whose code is a stable identifier for the refuse-newer condition, whose message contains both the integer N and the integer M, and the process fails to reach its request-serving state",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5103-2",
23
+ "description": "The refuse-newer path performs no writes against the store; the bookkeeping table and every domain table are byte-identical before and after the failed open.",
24
+ "given": "a store artifact snapshot taken before the failed open attempt in AC-5103-1",
25
+ "when": "the failed open attempt returns control",
26
+ "then": "a fresh snapshot of the same store artifact is byte-identical to the pre-attempt snapshot, and no new bookkeeping row has been written",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ }
30
+ ],
31
+ "tacIds": [
32
+ "TAC-601-persistence-data-sqlite-store",
33
+ "TAC-602-persistence-data-sqlite-migration-runner"
34
+ ],
35
+ "createdAt": "2026-08-21T00:00:00Z",
36
+ "updatedAt": "2026-08-21T00:00:00Z"
37
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5104",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-004",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Migrations apply atomically; a crash mid-migration leaves the previous version intact",
8
+ "asA": "operator whose deploy must never leave the store in a half-migrated state",
9
+ "iWant": "each migration to run inside a single transaction with the version bookkeeping row committed alongside its statements",
10
+ "soThat": "an abrupt failure during migration N leaves the store on version N-1, not on some undefined mixture",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5104-1",
14
+ "description": "The migration runner applies pending migrations in ascending version order; for each migration, the version bookkeeping row and the migration's statements are committed in one transaction.",
15
+ "given": "a store opened against a file older than the build's max known version with pending migrations v_k+1 through v_n",
16
+ "when": "the migration runner completes successfully",
17
+ "then": "the bookkeeping table holds one row for each of v_k+1 through v_n in ascending order, and every domain table shape reflects the union of statements from those migrations",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5104-2",
23
+ "description": "A migration whose statements or version bookkeeping row fails is rolled back; the on-disk highest bookkeeping row after the failed run is the last successfully committed version.",
24
+ "given": "a store at version v_k and a pending migration v_k+1 whose statements will throw at execution time",
25
+ "when": "the migration runner attempts v_k+1 and its transaction fails",
26
+ "then": "the bookkeeping table's highest row remains v_k, no partial DDL from v_k+1 is present, and the migration runner throws an error naming version v_k+1 and the failing description",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5104-3",
32
+ "description": "The migration runner does not attempt migrations later than the first failing one; a failure at v_k+1 leaves v_k+2 and beyond unattempted.",
33
+ "given": "a store at version v_k and pending migrations v_k+1 (failing) and v_k+2 (would succeed)",
34
+ "when": "the migration runner runs and fails on v_k+1",
35
+ "then": "no domain-table statements from v_k+2 have been executed and the bookkeeping table holds no row for v_k+2",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-602-persistence-data-sqlite-migration-runner"
42
+ ],
43
+ "createdAt": "2026-08-21T00:00:00Z",
44
+ "updatedAt": "2026-08-21T00:00:00Z"
45
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5105",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-005",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "The store survives an ungraceful process kill without corruption",
8
+ "asA": "operator whose hosts die and whose containers get OOM-killed at unhelpful moments",
9
+ "iWant": "the store to open cleanly on the next boot after an ungraceful termination, with every committed write intact and every in-flight transaction rolled back",
10
+ "soThat": "a SIGKILL, a power loss, or an OOM event does not turn into a data-recovery incident",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5105-1",
14
+ "description": "A write committed before the process is SIGKILL'd is present when a fresh process opens the same store artifact afterward.",
15
+ "given": "a running process that commits a distinguishable write W through a facade verb and then receives SIGKILL",
16
+ "when": "a fresh process opens the same store artifact and reads through the facade",
17
+ "then": "the read returns W with the same values that were committed, and the store event log's opened event for the fresh process is present with no accompanying corruption error",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5105-2",
23
+ "description": "An in-flight transaction that had not committed at the moment of SIGKILL is not visible after the fresh open.",
24
+ "given": "a running process that opens a transaction, executes writes W_a, and receives SIGKILL before commit",
25
+ "when": "a fresh process opens the same store artifact and reads through the facade",
26
+ "then": "the reads for W_a's affected rows return the pre-transaction state and no post-transaction state, and no partial subset of W_a is visible",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5105-3",
32
+ "description": "The store's durability posture (write-ahead log and synchronous commit floor, or engine-native equivalent) is set at open time by the facade; no consumer configures it.",
33
+ "given": "the store has been opened by the facade",
34
+ "when": "the durability posture is inspected via an engine-native introspection query executed through the facade",
35
+ "then": "the returned posture matches the facade's declared crash-safety configuration, and a grep of consumer code finds no direct configuration of these pragmas or engine-native equivalents",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-601-persistence-data-sqlite-store"
42
+ ],
43
+ "createdAt": "2026-08-21T00:00:00Z",
44
+ "updatedAt": "2026-08-21T00:00:00Z"
45
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5106",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-006",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Store lifecycle emits structured events on a single sink",
8
+ "asA": "operator who needs to answer 'when did the store come up, what version did it migrate through, when did the last snapshot land' from the log stream",
9
+ "iWant": "the store to emit structured events at open, at every migration run that applied work, at every backup checkpoint, and at close",
10
+ "soThat": "the store's lifecycle is a first-class observable and my dashboards do not have to shell into the database to answer basic questions",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5106-1",
14
+ "description": "The store facade accepts an onEvent sink function at open time and invokes it with a structured record on every lifecycle moment: opened at successful open, migrated when the runner applied at least one migration, backupCheckpoint when a snapshot completes, closed on graceful shutdown.",
15
+ "given": "the store is opened with an injected onEvent sink and taken through open, migrate, backup, and close",
16
+ "when": "the sink is inspected after each lifecycle moment",
17
+ "then": "the sink has received one record for each moment with the event name field set to opened, migrated, backupCheckpoint, and closed respectively, each carrying a valid ISO-8601 timestamp",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5106-2",
23
+ "description": "The migrated event carries the schema version transition and the list of migration versions applied during that run.",
24
+ "given": "the store opens against a file at version v_k with the build at max known version v_n where v_n > v_k",
25
+ "when": "the migrated event fires",
26
+ "then": "the event record contains a from field equal to v_k, a to field equal to v_n, and an applied field whose value is the array of integers v_k+1 through v_n in ascending order",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5106-3",
32
+ "description": "The opened event carries the store identifier the facade was opened against; the backupCheckpoint event carries the artifact path the backup runner wrote to.",
33
+ "given": "the store is opened against identifier I and a subsequent backup writes to artifact path B",
34
+ "when": "the opened and backupCheckpoint events fire",
35
+ "then": "the opened event's store identifier field equals I and the backupCheckpoint event's artifact path field equals B, both as strings the operator can pass back into their tooling verbatim",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-601-persistence-data-sqlite-store",
42
+ "TAC-604-persistence-data-sqlite-backup-runner"
43
+ ],
44
+ "createdAt": "2026-08-21T00:00:00Z",
45
+ "updatedAt": "2026-08-21T00:00:00Z"
46
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5107",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-007",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "The store facade is the only module that talks to the underlying engine",
8
+ "asA": "developer who needs the engine to be swappable and the domain to be testable against a double",
9
+ "iWant": "one module to hold the engine binding and expose named verbs, with no consumer importing the engine directly",
10
+ "soThat": "the boundary between the domain and the engine is the only place that has to move when the engine changes and the only place tests have to mock",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5107-1",
14
+ "description": "Exactly one source-tree module imports the engine binding. Every other module that touches persistence imports the store facade.",
15
+ "given": "the running source tree after boot",
16
+ "when": "the import graph is inspected for uses of the engine binding module",
17
+ "then": "the engine binding is imported by exactly one file (the store facade) and no other file in the source tree imports it, verified by an import-graph query or a targeted grep",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5107-2",
23
+ "description": "The facade exposes named verbs for every persistence operation the domain requires; it does not expose a general-purpose query method that accepts raw engine-native queries from consumers.",
24
+ "given": "the store facade's public surface",
25
+ "when": "the surface is inspected",
26
+ "then": "every exported function has a domain-shaped name and typed parameters (not a raw query string parameter), and no exported function accepts an engine-native query object or raw SQL string as a call argument from consumer code",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5107-3",
32
+ "description": "Replacing the facade with an in-memory double that implements the same verb surface allows the domain code to run against it without importing the engine binding.",
33
+ "given": "a test double implementing the same named verbs as the facade with an in-memory backing store",
34
+ "when": "the domain code runs against the double in place of the facade",
35
+ "then": "the domain code executes to completion without importing the engine binding at any point in its call path and its behaviour is unchanged from a facade-backed run for the operations under test",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-601-persistence-data-sqlite-store"
42
+ ],
43
+ "createdAt": "2026-08-21T00:00:00Z",
44
+ "updatedAt": "2026-08-21T00:00:00Z"
45
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5108",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-008",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Backup produces a self-contained artifact without downtime",
8
+ "asA": "operator who cannot take the application offline to take a backup",
9
+ "iWant": "a backup runner that snapshots the store to a portable artifact while the application keeps serving requests",
10
+ "soThat": "recovery is a matter of pointing a compatible build at the artifact, and the backup schedule is not blocked on planning a maintenance window",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5108-1",
14
+ "description": "The backup runner produces an artifact file at the requested output path while the application continues to serve reads and writes; requests served during the snapshot do not fail because of the snapshot.",
15
+ "given": "the store is open under normal load and the backup runner is invoked with an output path P",
16
+ "when": "the backup runner completes and the served-request log for the snapshot window is inspected",
17
+ "then": "an artifact file exists at P and every request served during the snapshot window reports its normal outcome, with no request marked failed on account of the backup operation",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5108-2",
23
+ "description": "A fresh process opening the snapshot artifact through the same facade boots to the same schema version as the source store held at snapshot completion, and reads the rows that were committed at or before the snapshot completion timestamp.",
24
+ "given": "a snapshot artifact at path P produced by AC-5108-1 and a fresh process invoking the open entry point against P",
25
+ "when": "the fresh process's boot sequence completes and consumer code reads through the facade",
26
+ "then": "the fresh process's opened event names P as its store identifier, the reported schema version equals the source store's schema version at snapshot completion, and reads of rows committed at or before the snapshot completion timestamp return the committed values",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5108-3",
32
+ "description": "The backup runner emits a backupCheckpoint event on the store's event log at snapshot completion, carrying the artifact path and the ISO-8601 completion timestamp.",
33
+ "given": "the backup runner completes an artifact at path P at time T",
34
+ "when": "the event log is inspected",
35
+ "then": "the log contains exactly one backupCheckpoint event whose artifact path field equals P and whose completion timestamp field equals T",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-604-persistence-data-sqlite-backup-runner",
42
+ "TAC-601-persistence-data-sqlite-store"
43
+ ],
44
+ "createdAt": "2026-08-21T00:00:00Z",
45
+ "updatedAt": "2026-08-21T00:00:00Z"
46
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5109",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-009",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Migration failure names the failing version and leaves the store unchanged past it",
8
+ "asA": "operator diagnosing a deploy that failed at boot on a migration",
9
+ "iWant": "the failure to name the failing version and its description in a stable-coded error, and to leave the store on the previous version so recovery is a code fix and a redeploy",
10
+ "soThat": "the diagnostic loop is one step (open the failing migration, fix, redeploy) instead of a data-recovery incident",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5109-1",
14
+ "description": "When a migration's statements or its bookkeeping row fails, the migration runner throws an error whose code is a stable identifier for the migration-failed condition, whose message contains the failing version integer and the migration's description string.",
15
+ "given": "a store at version v_k and a pending migration v_k+1 whose statements throw",
16
+ "when": "the migration runner attempts v_k+1",
17
+ "then": "the thrown error's code is a stable string identifier documented in the store facade, and its message contains the integer v_k+1 and the description string configured on that migration",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5109-2",
23
+ "description": "The store facade's open entry point propagates the migration failure to its caller without swallowing it or converting it to a different error class.",
24
+ "given": "a boot sequence whose migration run fails on v_k+1",
25
+ "when": "the caller catches the error thrown by the open entry point",
26
+ "then": "the caught error is the same error the migration runner threw, with the same code and message, unwrapped or wrapped in a chain that preserves the original code and message",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ },
30
+ {
31
+ "id": "AC-5109-3",
32
+ "description": "A store whose migration failed at v_k+1 opens cleanly on a subsequent boot after v_k+1 is fixed and the build is redeployed; no manual recovery step is required against the on-disk artifact.",
33
+ "given": "the failing v_k+1 statement is corrected in the migration catalog and the same store artifact is opened by the corrected build",
34
+ "when": "the boot sequence invokes the open entry point",
35
+ "then": "the migration runner applies v_k+1 and any later pending migrations, the migrated event fires, and consumer code sees the store at the build's max known version",
36
+ "testable": true,
37
+ "scope": "runtime"
38
+ }
39
+ ],
40
+ "tacIds": [
41
+ "TAC-602-persistence-data-sqlite-migration-runner",
42
+ "TAC-601-persistence-data-sqlite-store"
43
+ ],
44
+ "createdAt": "2026-08-21T00:00:00Z",
45
+ "updatedAt": "2026-08-21T00:00:00Z"
46
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5110",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-010",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Store events carry no secret material",
8
+ "asA": "operator who ships store event logs to a third-party observability provider",
9
+ "iWant": "every field on every store event to be limited to store metadata; no domain data, no credential material, no secret values",
10
+ "soThat": "a log-store breach is not a domain-data breach and the ops team does not have to negotiate a redaction rule with the provider",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5110-1",
14
+ "description": "The fields on the opened, migrated, backupCheckpoint, and closed events are restricted to store metadata: event name, ISO-8601 timestamp, store identifier, schema version integers, migration version integers, migration description strings, and backup artifact paths. No event field carries a value read from a domain row.",
15
+ "given": "the store is taken through open, migrate, backup, and close",
16
+ "when": "every event record captured on the sink is inspected",
17
+ "then": "every field on every record matches one of the metadata field types listed above, and no field's value equals a value read from any domain table",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5110-2",
23
+ "description": "A grep of the store facade source for domain-table column names, secret-flagged column names, and the values of well-known secret columns (session handles, token secrets, private keys) finds them referenced only inside the narrow CRUD verbs that read or write those columns, never inside the event-emission call sites.",
24
+ "given": "the store facade source and the domain schema definition",
25
+ "when": "the grep is executed",
26
+ "then": "matches appear only inside CRUD verb bodies and never inside onEvent call arguments or event-record construction sites",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ }
30
+ ],
31
+ "tacIds": [
32
+ "TAC-601-persistence-data-sqlite-store",
33
+ "TAC-604-persistence-data-sqlite-backup-runner"
34
+ ],
35
+ "createdAt": "2026-08-21T00:00:00Z",
36
+ "updatedAt": "2026-08-21T00:00:00Z"
37
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "usId": "persistence-data-sqlite-US-5111",
3
+ "prdId": "PRD-001",
4
+ "reqId": "persistence-data-sqlite-REQ-011",
5
+ "version": "1.0.0",
6
+ "status": "approved",
7
+ "title": "Opening a store already at target version is a silent no-op",
8
+ "asA": "operator whose routine boots must not emit spurious migrated events",
9
+ "iWant": "the migration runner to apply no work and emit no migrated event when the on-disk version already equals the build's max",
10
+ "soThat": "a migrated event in the log means real schema evolution and my post-migration bookkeeping does not fire on every boot",
11
+ "acceptanceCriteria": [
12
+ {
13
+ "id": "AC-5111-1",
14
+ "description": "Opening a store whose bookkeeping table records the same schema version the build's max known migration version equals results in a migration run whose applied-versions array is empty and no changes to the store artifact.",
15
+ "given": "a store artifact whose highest bookkeeping row records version N and a build whose max known migration version is N",
16
+ "when": "the boot sequence invokes the open entry point",
17
+ "then": "the migration run's applied-versions array is empty, no new bookkeeping row has been written, and a byte-for-byte comparison of the store artifact before and after the open shows no schema-affecting change",
18
+ "testable": true,
19
+ "scope": "runtime"
20
+ },
21
+ {
22
+ "id": "AC-5111-2",
23
+ "description": "On the no-op open path, the opened event fires but the migrated event does NOT fire; the sink receives one opened record and zero migrated records.",
24
+ "given": "the no-op open in AC-5111-1 with an event sink attached",
25
+ "when": "the sink is inspected after the open entry point returns",
26
+ "then": "the sink has received exactly one opened record and zero migrated records for this open",
27
+ "testable": true,
28
+ "scope": "runtime"
29
+ }
30
+ ],
31
+ "tacIds": [
32
+ "TAC-601-persistence-data-sqlite-store",
33
+ "TAC-602-persistence-data-sqlite-migration-runner"
34
+ ],
35
+ "createdAt": "2026-08-21T00:00:00Z",
36
+ "updatedAt": "2026-08-21T00:00:00Z"
37
+ }
@@ -0,0 +1,49 @@
1
+ # persistence-data-sqlite blueprint coordination vocabulary
2
+
3
+ This file is the persistence-data-sqlite half of the cross-blueprint contract. The Phase 1 conflict detector matches scope:global ADR topics by EXACT string equality, and AC ids are unnamespaced by the 0.4.4 grammar. Any blueprint intended to compose with this one must reuse these exact strings and respect these bands.
4
+
5
+ ## Global ADR topics this blueprint contributes (exact strings)
6
+
7
+ | Topic string | persistence-data-sqlite contribution | Origin | Composition note |
8
+ |---|---|---|---|
9
+ | `persistenceStore` | ADR-601-persistence-data-sqlite-store-model | Minted here; pre-cleared as unclaimed against application-spa (`clientRouting`, `theming`, `clientState`, `errorEnvelope`, `authModel`), application-api-rest (`errorEnvelope`, `authModel`, `apiVersioning`, `logging`), security-auth-magic-link (`authModel`), and the hello-panel walkthrough exemplar (`operatorPanel`) | The one primary durable store engine for the project. Any composing blueprint that holds an opinion on the store engine (a Postgres-first blueprint, a KV-store blueprint, an event-sourced blueprint) contributes its own scope:global ADR on this exact string and lets composition surface the pairing. Expected resolution: one project-level ADR that fixes the engine and states the tier reasoning |
10
+ | `migrationDiscipline` | ADR-602-persistence-data-sqlite-migration-discipline | Minted here; pre-cleared as unclaimed against application-spa, application-api-rest, security-auth-magic-link, and hello-panel | The one schema-evolution discipline for the project. A composing blueprint that holds an opinion on migration discipline (event-sourced projections, dual-write patterns, tenant-per-schema, bidirectional up/down migrations) conflicts here by design. Expected resolution: one project-level ADR fixing the discipline |
11
+
12
+ The persistence-data-sqlite blueprint claims two global topics. Every other contribution is scope-local (the three operational ADRs, ADR-603 through ADR-605, do not contribute global topics; a composing blueprint that holds an opinion on event-secrecy, the module-boundary posture, or the backup model authors its own project-level ADR if it wants to override).
13
+
14
+ Note on the delineation from the application-api-rest blueprint's `logging` topic: `logging` (owned by application-api-rest ADR-304) governs the wire-log shape of the HTTP tier. This blueprint's ADR-603 governs the STORE-EVENT log shape (opened, migrated, backupCheckpoint, closed). The two log surfaces may share a shipper but do not share a topic. A blueprint that contributes a unified log discipline across all tiers would author its own scope:global ADR on `logging` and expect to conflict with REST there, not here.
15
+
16
+ Rules for new topics (inherited from the application-spa and REST vocabularies, restated as law): lower camel case, one concept per topic, no version suffixes. A topic names the decision area, not the chosen answer. Do not mint variants of existing strings (`store`, `dataStore`, `db`, `dbEngine` are all wrong when `persistenceStore` already exists; `schemaMigrations`, `dbMigrations`, `migrations` are all wrong when `migrationDiscipline` already exists).
17
+
18
+ ## Id number bands (registry bootstrap)
19
+
20
+ AC ids (and therefore US numeric ids, which anchor them) are NOT namespaced by the 0.4.4 schema grammar; the band allocation IS the AC-collision enforcement mechanism. Composing blueprints take a fresh band rather than proposing namespaced AC ids. Band allocation is ratified policy (2026-08-19); this table is the shared registry-bootstrap replicated across every shipped and forthcoming blueprint's `docs/topics.md` until a mechanism-side central registry lands (v1.1 candidate).
21
+
22
+ This table is maintained shelf-wide across every blueprint's `docs/topics.md`. Rows are recorded at ship, never predicted.
23
+
24
+ | Blueprint | US band | ADR/TAC suffix block | Status | Global topics |
25
+ |---|---|---|---|---|
26
+ | application-spa | 1101-1899 | 2xx | shipped v1.3.0 | `clientRouting`, `theming`, `clientState`, `errorEnvelope`, `authModel` |
27
+ | application-api-rest | 2101-2899 | 3xx | shipped v1.0.0 | `errorEnvelope`, `authModel`, `apiVersioning`, `logging` |
28
+ | security-auth-magic-link | 3101-3899 | 5xx | shipped v1.0.0 | `authModel` |
29
+ | email-smtp-resend | 4101-4899 | 4xx | shipped v1.0.0 | none |
30
+ | hello-panel (walkthrough exemplar) | 4101-4899 | 4xx | doc-reserved; teaching exemplar in `packages/rcf-lite/docs/blueprint-authoring-walkthrough.md`, not shipped as a blueprint directory | `operatorPanel` |
31
+ | persistence-data-sqlite | 5101-5899 | 6xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
32
+ | delivery-ci-workflows | 6101-6899 | 7xx | shipped v2.0.0 (renamed from ci-pipeline) | `ciGates`, `strictCoverageGate`, `releaseArtefacts` |
33
+ | observability-essentials | 7101-7899 | 8xx | shipped v1.0.0 | `healthProbes`, `readinessSemantics`, `statusPageContract` |
34
+ | security-secrets-management | 8101-8899 | 9xx | shipped v1.0.0 | `secretsSource` |
35
+ | security-auth-clerk | 9101-9899 | 10xx | shipped v1.0.0 | `authModel` |
36
+ | security-auth-oauth2 | 10101-10899 | 11xx | shipped v1.0.0 | `authModel` |
37
+ | security-auth-keycloak | 11101-11899 | 12xx | shipped v1.0.0 | `authModel` |
38
+ | deploy-cloudflare-workers | 12101-12899 | 13xx | shipped v1.0.0 | `deploymentTarget` |
39
+ | persistence-data-d1 | 13101-13899 | 14xx | shipped v1.0.0 | `persistenceStore`, `migrationDiscipline` |
40
+ | observability-probe-endpoints | 14101-14899 | 15xx | shipped v1.0.0 | `healthProbes`, `readinessSemantics` |
41
+
42
+ US 5101-5111 sit at the LOW end of the 5101-5899 band on purpose. A project-side story that mechanically derives from `persistence-data-sqlite-REQ-011` into the number `5111` would collide against persistence-data-sqlite-US-5111 in this package; the band leaves headroom at the HIGH end (US 5181-5899) so a project's own stories anchored to persistence-data-sqlite REQs can allocate without conflict. The watchpost run4 lesson applies here too.
43
+
44
+ ## Shared expectations for future composing blueprints
45
+
46
+ - Reuse `persistenceStore` exactly as spelled here when your blueprint holds an opinion on the project's primary durable store engine; contribute your own scope:global ADR on that string and let composition surface the pairing. A Postgres-first blueprint (see the persistence guide 'when it does not fit') will conflict here by design.
47
+ - Reuse `migrationDiscipline` exactly as spelled here when your blueprint holds an opinion on schema evolution; a blueprint that contributes an event-sourced projection story or a dual-write pattern conflicts here by design.
48
+ - This blueprint's decision states the SQLite single-file engine plus the forward-only numbered-catalog discipline. Compose compatible caching, outbox, or projection blueprints, or expect the operator to supersede with one project-level ADR per topic.
49
+ - Global topics that plausibly belong to a future blueprint and are NOT claimed by any shipped blueprint: `messageSerialisation` and `deliverySemantics` (a message-consumer blueprint's natural globals), `caching` (unclaimed by application-spa, application-api-rest, security-auth-magic-link, and this blueprint). Define any of these in your own package's topics doc, in this file's format, and consider whether the band-registry table above needs your slug added.