@1aboveio/skills 0.10.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 (397) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +90 -0
  3. package/bin/1aboveio-skills.mjs +18 -0
  4. package/package.json +28 -0
  5. package/runtime/skills/distribution/generated/recipes.json +1189 -0
  6. package/runtime/skills/distribution/scripts/bundles.mjs +280 -0
  7. package/runtime/skills/engineering/engineering-runtime/scripts/main-module.mjs +80 -0
  8. package/skills/backend/airflow-dag-develop/LICENSE +3 -0
  9. package/skills/backend/airflow-dag-develop/SKILL.md +111 -0
  10. package/skills/backend/app-debug/LICENSE +3 -0
  11. package/skills/backend/app-debug/SKILL.md +109 -0
  12. package/skills/backend/app-debug/references/common-errors.md +128 -0
  13. package/skills/backend/python-backend/LICENSE +3 -0
  14. package/skills/backend/python-backend/SKILL.md +326 -0
  15. package/skills/cicd-pipeline/cloud-build/LICENSE +3 -0
  16. package/skills/cicd-pipeline/cloud-build/SKILL.md +707 -0
  17. package/skills/cicd-pipeline/cloud-debug/LICENSE +3 -0
  18. package/skills/cicd-pipeline/cloud-debug/SKILL.md +316 -0
  19. package/skills/cicd-pipeline/cloud-debug/references/build-failures.md +238 -0
  20. package/skills/cicd-pipeline/cloud-debug/references/deploy-failures.md +376 -0
  21. package/skills/cicd-pipeline/cloud-debug/references/pipeline-failures.md +378 -0
  22. package/skills/cicd-pipeline/cloud-deploy/LICENSE +3 -0
  23. package/skills/cicd-pipeline/cloud-deploy/SKILL.md +229 -0
  24. package/skills/cicd-pipeline/cloud-deploy/references/config-templates.md +257 -0
  25. package/skills/cicd-pipeline/docker/LICENSE +3 -0
  26. package/skills/cicd-pipeline/docker/SKILL.md +126 -0
  27. package/skills/cicd-pipeline/google-cloud/LICENSE +3 -0
  28. package/skills/cicd-pipeline/google-cloud/SKILL.md +118 -0
  29. package/skills/cicd-pipeline/google-cloud/references/gcs.md +469 -0
  30. package/skills/cicd-pipeline/google-cloud/references/iam.md +451 -0
  31. package/skills/cicd-pipeline/google-cloud/references/project.md +349 -0
  32. package/skills/cicd-pipeline/google-cloud/references/secrets.md +336 -0
  33. package/skills/cicd-pipeline/google-cloud/references/vpc.md +312 -0
  34. package/skills/cicd-pipeline/google-cloud/scripts/create-sa.sh +36 -0
  35. package/skills/cicd-pipeline/google-cloud/scripts/gcp-config.sh +31 -0
  36. package/skills/cicd-pipeline/google-cloud/scripts/grant-iap.sh +41 -0
  37. package/skills/cicd-pipeline/google-cloud/scripts/setup-secrets.sh +48 -0
  38. package/skills/cicd-pipeline/mergify/LICENSE +3 -0
  39. package/skills/cicd-pipeline/mergify/SKILL.md +138 -0
  40. package/skills/cicd-pipeline/mergify/assets/templates/mergify.yml +237 -0
  41. package/skills/cicd-pipeline/mergify/assets/templates/ruleset.json +46 -0
  42. package/skills/cicd-pipeline/mergify/references/branch-protection.md +277 -0
  43. package/skills/cicd-pipeline/mergify/references/configuration.md +183 -0
  44. package/skills/cicd-pipeline/mergify/references/diagnosis.md +73 -0
  45. package/skills/cicd-pipeline/mergify/references/traps.md +78 -0
  46. package/skills/cicd-pipeline/mergify/references/watch-contract.md +218 -0
  47. package/skills/cicd-pipeline/mergify/scripts/audit-core.mjs +131 -0
  48. package/skills/cicd-pipeline/mergify/scripts/audit.mjs +4 -0
  49. package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery-core.mjs +663 -0
  50. package/skills/cicd-pipeline/mergify/scripts/watch-pr-delivery.mjs +4 -0
  51. package/skills/cicd-pipeline/podman/LICENSE +3 -0
  52. package/skills/cicd-pipeline/podman/SKILL.md +70 -0
  53. package/skills/cicd-pipeline/podman/agents/openai.yaml +4 -0
  54. package/skills/cicd-pipeline/podman/assets/templates/podman-compose-socket-directory.yml +6 -0
  55. package/skills/cicd-pipeline/podman/assets/templates/podman-service-override.conf +3 -0
  56. package/skills/cicd-pipeline/podman/references/compose-compatibility.md +70 -0
  57. package/skills/cicd-pipeline/podman/references/networking-and-ports.md +74 -0
  58. package/skills/cicd-pipeline/podman/references/rootless-services-and-sockets.md +156 -0
  59. package/skills/cicd-pipeline/podman/references/troubleshooting.md +98 -0
  60. package/skills/engineering/e2e-test/LICENSE +3 -0
  61. package/skills/engineering/e2e-test/SKILL.md +156 -0
  62. package/skills/engineering/e2e-test/assets/ci-gates.cloudbuild.yaml +272 -0
  63. package/skills/engineering/e2e-test/assets/ci-gates.github.yml +451 -0
  64. package/skills/engineering/e2e-test/assets/e2e-workflow.yml +282 -0
  65. package/skills/engineering/e2e-test/references/authoring/auth-flows.md +159 -0
  66. package/skills/engineering/e2e-test/references/authoring/playwright-config.md +71 -0
  67. package/skills/engineering/e2e-test/references/authoring/playwright-patterns.md +219 -0
  68. package/skills/engineering/e2e-test/references/authoring/test-skipping.md +44 -0
  69. package/skills/engineering/e2e-test/references/ci-integration.md +121 -0
  70. package/skills/engineering/e2e-test/references/ci-playwright-container.md +280 -0
  71. package/skills/engineering/e2e-test/references/debugging.md +36 -0
  72. package/skills/engineering/e2e-test/references/presentation-sweep.md +131 -0
  73. package/skills/engineering/e2e-test/references/reviewing.md +39 -0
  74. package/skills/engineering/e2e-test/references/route-discovery.md +50 -0
  75. package/skills/engineering/e2e-test/references/route-manifest.md +44 -0
  76. package/skills/engineering/e2e-test/scripts/detect-routes-fastapi.py +290 -0
  77. package/skills/engineering/e2e-test/scripts/detect-routes-nextjs.mjs +200 -0
  78. package/skills/engineering/e2e-test/scripts/post-visual-evidence.mjs +158 -0
  79. package/skills/engineering/e2e-test/scripts/presentation-checks.mjs +171 -0
  80. package/skills/engineering/e2e-test/scripts/presentation-perceivability.mjs +179 -0
  81. package/skills/engineering/e2e-test/scripts/presentation-reachability.mjs +154 -0
  82. package/skills/engineering/e2e-test/scripts/presentation-render-health.mjs +141 -0
  83. package/skills/engineering/e2e-test/scripts/presentation-sweep.mjs +148 -0
  84. package/skills/engineering/e2e-test/scripts/presentation-temporal.mjs +127 -0
  85. package/skills/engineering/e2e-test/scripts/presentation-visual.mjs +84 -0
  86. package/skills/engineering/e2e-test/scripts/project-route-manifest.mjs +75 -0
  87. package/skills/engineering/e2e-test/scripts/validate-manifest.mjs +106 -0
  88. package/skills/engineering/engineering-runtime/LICENSE +3 -0
  89. package/skills/engineering/engineering-runtime/SKILL.md +10 -0
  90. package/skills/engineering/engineering-runtime/agents/openai.yaml +6 -0
  91. package/skills/engineering/engineering-runtime/coherence/workflow.json +553 -0
  92. package/skills/engineering/engineering-runtime/scripts/exact-head-artifact.mjs +131 -0
  93. package/skills/engineering/engineering-runtime/scripts/head-check-set.mjs +398 -0
  94. package/skills/engineering/engineering-runtime/scripts/main-module.mjs +80 -0
  95. package/skills/engineering/engineering-runtime/scripts/mergify-yaml.mjs +11 -0
  96. package/skills/engineering/engineering-runtime/scripts/package-lock.json +43 -0
  97. package/skills/engineering/engineering-runtime/scripts/package.json +10 -0
  98. package/skills/engineering/engineering-runtime/scripts/required-check-plan.mjs +223 -0
  99. package/skills/engineering/engineering-runtime/scripts/workflow-coherence.mjs +576 -0
  100. package/skills/engineering/engineering-runtime/scripts/workflow-policy.mjs +166 -0
  101. package/skills/engineering/ensure-coverage/LICENSE +3 -0
  102. package/skills/engineering/ensure-coverage/SKILL.md +136 -0
  103. package/skills/engineering/ensure-coverage/evals/evals.json +125 -0
  104. package/skills/engineering/ensure-coverage/references/breadth/coverage-ledger.md +91 -0
  105. package/skills/engineering/ensure-coverage/references/breadth/inventory-contract.md +83 -0
  106. package/skills/engineering/ensure-coverage/references/breadth/surface-baseline.md +44 -0
  107. package/skills/engineering/ensure-coverage/references/breadth/surface-discovery.md +16 -0
  108. package/skills/engineering/ensure-coverage/references/depth/characterization.md +68 -0
  109. package/skills/engineering/ensure-coverage/references/depth/coverage.config.example.json +25 -0
  110. package/skills/engineering/ensure-coverage/references/depth/grading.md +35 -0
  111. package/skills/engineering/ensure-coverage/references/depth/mock-policy.md +87 -0
  112. package/skills/engineering/ensure-coverage/references/depth/test-smells.md +23 -0
  113. package/skills/engineering/ensure-coverage/references/enforcement/ci-contract.md +164 -0
  114. package/skills/engineering/ensure-coverage/references/enforcement/hooks.md +85 -0
  115. package/skills/engineering/ensure-coverage/references/examples/coverage-ledger.md +109 -0
  116. package/skills/engineering/ensure-coverage/references/examples/refund-flow.md +33 -0
  117. package/skills/engineering/ensure-coverage/references/presentation/axis.md +78 -0
  118. package/skills/engineering/ensure-coverage/references/presentation/runner-contract.md +74 -0
  119. package/skills/engineering/ensure-coverage/references/process/audit-mode.md +33 -0
  120. package/skills/engineering/ensure-coverage/references/process/output-template.md +139 -0
  121. package/skills/engineering/ensure-coverage/references/process/review-contract-template.md +119 -0
  122. package/skills/engineering/ensure-coverage/references/process/scope-class.md +178 -0
  123. package/skills/engineering/ensure-coverage/references/process/test-strategy.md +55 -0
  124. package/skills/engineering/ensure-coverage/schemas/coverage-config.schema.json +45 -0
  125. package/skills/engineering/ensure-coverage/schemas/coverage-file.schema.json +93 -0
  126. package/skills/engineering/ensure-coverage/scripts/adapters/nextjs-inventory.mjs +178 -0
  127. package/skills/engineering/ensure-coverage/scripts/check-quarantine-expiry.mjs +101 -0
  128. package/skills/engineering/ensure-coverage/scripts/ci-audit.mjs +358 -0
  129. package/skills/engineering/ensure-coverage/scripts/coverage-checklist.mjs +494 -0
  130. package/skills/engineering/ensure-coverage/scripts/coverage-ledger.mjs +663 -0
  131. package/skills/engineering/ensure-coverage/scripts/design-parity.mjs +591 -0
  132. package/skills/engineering/ensure-coverage/scripts/evidence-block.mjs +367 -0
  133. package/skills/engineering/ensure-coverage/scripts/lint-tests.mjs +269 -0
  134. package/skills/engineering/ensure-coverage/scripts/mock-policy-config.mjs +176 -0
  135. package/skills/engineering/ensure-coverage/scripts/package-lock.json +76 -0
  136. package/skills/engineering/ensure-coverage/scripts/package.json +19 -0
  137. package/skills/engineering/ensure-coverage/scripts/scope-class.mjs +554 -0
  138. package/skills/engineering/harness-runtime/LICENSE +3 -0
  139. package/skills/engineering/harness-runtime/SKILL.md +18 -0
  140. package/skills/engineering/harness-runtime/agents/openai.yaml +6 -0
  141. package/skills/engineering/harness-runtime/bin/discover-models.mjs +4 -0
  142. package/skills/engineering/harness-runtime/bin/model-catalog.mjs +4 -0
  143. package/skills/engineering/harness-runtime/contracts.md +15 -0
  144. package/skills/engineering/harness-runtime/discover-models.mjs +392 -0
  145. package/skills/engineering/harness-runtime/fixtures/native-question-schemas.json +33 -0
  146. package/skills/engineering/harness-runtime/fixtures/question-responses.json +54 -0
  147. package/skills/engineering/harness-runtime/index.mjs +767 -0
  148. package/skills/engineering/harness-runtime/model-catalog.mjs +787 -0
  149. package/skills/engineering/harness-runtime/native-question-contracts.md +37 -0
  150. package/skills/engineering/harness-runtime/references/model-catalog-seed.json +159 -0
  151. package/skills/engineering/harness-runtime/references/model-catalog.md +57 -0
  152. package/skills/engineering/implement-and-pr/LICENSE +3 -0
  153. package/skills/engineering/implement-and-pr/SKILL.md +176 -0
  154. package/skills/engineering/implement-and-pr/references/ci-iteration.md +10 -0
  155. package/skills/engineering/implement-and-pr/references/closeout.md +27 -0
  156. package/skills/engineering/implement-and-pr/references/contract-complete-fix-rounds.md +34 -0
  157. package/skills/engineering/implement-and-pr/references/evidence-rules.md +39 -0
  158. package/skills/engineering/implement-and-pr/references/incremental-plan.md +16 -0
  159. package/skills/engineering/implement-and-pr/references/self-review.md +23 -0
  160. package/skills/engineering/implement-and-pr/references/tdd-mode.md +18 -0
  161. package/skills/engineering/resolve-issues/LICENSE +3 -0
  162. package/skills/engineering/resolve-issues/SKILL.md +167 -0
  163. package/skills/engineering/resolve-issues/generated/workflow-repair-policy.json +448 -0
  164. package/skills/engineering/resolve-issues/references/breaker.md +82 -0
  165. package/skills/engineering/resolve-issues/references/deliverables.md +27 -0
  166. package/skills/engineering/resolve-issues/references/delivery.md +108 -0
  167. package/skills/engineering/resolve-issues/references/evidence-lane.md +21 -0
  168. package/skills/engineering/resolve-issues/references/exact-head-ci.md +287 -0
  169. package/skills/engineering/resolve-issues/references/fan-out.md +33 -0
  170. package/skills/engineering/resolve-issues/references/finalization.md +68 -0
  171. package/skills/engineering/resolve-issues/references/guarantees.md +10 -0
  172. package/skills/engineering/resolve-issues/references/high-risk.md +29 -0
  173. package/skills/engineering/resolve-issues/references/incidents/848/README.md +156 -0
  174. package/skills/engineering/resolve-issues/references/intake.md +86 -0
  175. package/skills/engineering/resolve-issues/references/integration-gate.md +53 -0
  176. package/skills/engineering/resolve-issues/references/interference.md +87 -0
  177. package/skills/engineering/resolve-issues/references/loop.md +134 -0
  178. package/skills/engineering/resolve-issues/references/model-catalog.md +9 -0
  179. package/skills/engineering/resolve-issues/references/postmortem.md +27 -0
  180. package/skills/engineering/resolve-issues/references/pre-flight-model-slots.md +41 -0
  181. package/skills/engineering/resolve-issues/references/pre-flight-recording-and-checkout.md +48 -0
  182. package/skills/engineering/resolve-issues/references/pre-flight.md +41 -0
  183. package/skills/engineering/resolve-issues/references/regression-checklist.md +26 -0
  184. package/skills/engineering/resolve-issues/references/run-state.md +288 -0
  185. package/skills/engineering/resolve-issues/references/sandboxed-testing.md +48 -0
  186. package/skills/engineering/resolve-issues/references/spawn-contract.md +96 -0
  187. package/skills/engineering/resolve-issues/references/terminal-evidence-journal.md +40 -0
  188. package/skills/engineering/resolve-issues/references/why.md +653 -0
  189. package/skills/engineering/resolve-issues/schemas/fix-round.schema.json +49 -0
  190. package/skills/engineering/resolve-issues/scripts/combine-and-verify.mjs +721 -0
  191. package/skills/engineering/resolve-issues/scripts/component-candidate.mjs +962 -0
  192. package/skills/engineering/resolve-issues/scripts/contract-revision.mjs +220 -0
  193. package/skills/engineering/resolve-issues/scripts/detect-delivery-mode.mjs +420 -0
  194. package/skills/engineering/resolve-issues/scripts/detect-target-branch.mjs +256 -0
  195. package/skills/engineering/resolve-issues/scripts/detect-workspace-mode.mjs +168 -0
  196. package/skills/engineering/resolve-issues/scripts/discover-models.mjs +9 -0
  197. package/skills/engineering/resolve-issues/scripts/doctrine.mjs +62 -0
  198. package/skills/engineering/resolve-issues/scripts/evidence-lifecycle-contract.mjs +191 -0
  199. package/skills/engineering/resolve-issues/scripts/exact-head-ci.mjs +413 -0
  200. package/skills/engineering/resolve-issues/scripts/exact-head-github-provider.mjs +332 -0
  201. package/skills/engineering/resolve-issues/scripts/finalize.mjs +488 -0
  202. package/skills/engineering/resolve-issues/scripts/fix-rounds.mjs +3307 -0
  203. package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-circular-1001.json +16 -0
  204. package/skills/engineering/resolve-issues/scripts/fixtures/evidence-lifecycle-valid-sequencing.json +51 -0
  205. package/skills/engineering/resolve-issues/scripts/fixtures/fmm-express-830-component-candidate.json +17 -0
  206. package/skills/engineering/resolve-issues/scripts/fixtures/head-check-set-1081.json +166 -0
  207. package/skills/engineering/resolve-issues/scripts/gate-value-series.mjs +92 -0
  208. package/skills/engineering/resolve-issues/scripts/guide-index.mjs +73 -0
  209. package/skills/engineering/resolve-issues/scripts/head-check-set.mjs +159 -0
  210. package/skills/engineering/resolve-issues/scripts/interference.mjs +427 -0
  211. package/skills/engineering/resolve-issues/scripts/model-catalog.mjs +9 -0
  212. package/skills/engineering/resolve-issues/scripts/next-operations.mjs +419 -0
  213. package/skills/engineering/resolve-issues/scripts/postmortem.mjs +909 -0
  214. package/skills/engineering/resolve-issues/scripts/preflight-questions.mjs +322 -0
  215. package/skills/engineering/resolve-issues/scripts/reconcile-contained-unit-prs.mjs +415 -0
  216. package/skills/engineering/resolve-issues/scripts/release-state-contract.mjs +697 -0
  217. package/skills/engineering/resolve-issues/scripts/report.mjs +494 -0
  218. package/skills/engineering/resolve-issues/scripts/required-check-plan.mjs +172 -0
  219. package/skills/engineering/resolve-issues/scripts/round-metadata.mjs +79 -0
  220. package/skills/engineering/resolve-issues/scripts/run-state-review6-cases.mjs +334 -0
  221. package/skills/engineering/resolve-issues/scripts/run-state.mjs +4784 -0
  222. package/skills/engineering/resolve-issues/scripts/sandbox-selftest.mjs +395 -0
  223. package/skills/engineering/resolve-issues/scripts/spawn-contract.mjs +290 -0
  224. package/skills/engineering/resolve-issues/scripts/terminal-dispositions.mjs +170 -0
  225. package/skills/engineering/resolve-issues/scripts/terminal-evidence-journal.mjs +293 -0
  226. package/skills/engineering/resolve-issues/scripts/unit-kind.mjs +197 -0
  227. package/skills/engineering/resolve-issues/scripts/unit-lifecycle.mjs +127 -0
  228. package/skills/engineering/resolve-issues/scripts/watch-delivery.mjs +893 -0
  229. package/skills/engineering/resolve-issues/scripts/workspaces.mjs +829 -0
  230. package/skills/engineering/resolve-issues/workflows/independent-review.workflow.js +290 -0
  231. package/skills/engineering/resolve-issues/workflows/prior-art-scan.workflow.js +80 -0
  232. package/skills/engineering/resolve-issues/workflows/workflow-smoke.mjs +102 -0
  233. package/skills/engineering/resolve-release/LICENSE +3 -0
  234. package/skills/engineering/resolve-release/SKILL.md +112 -0
  235. package/skills/engineering/resolve-release/references/assembly.md +137 -0
  236. package/skills/engineering/resolve-release/references/auto-when-green.md +56 -0
  237. package/skills/engineering/resolve-release/references/candidate.md +167 -0
  238. package/skills/engineering/resolve-release/references/exposure.md +178 -0
  239. package/skills/engineering/resolve-release/references/handoff.md +24 -0
  240. package/skills/engineering/resolve-release/references/postmortem.md +230 -0
  241. package/skills/engineering/resolve-release/references/preflight.md +207 -0
  242. package/skills/engineering/resolve-release/references/principles.md +94 -0
  243. package/skills/engineering/resolve-release/references/regression-checklist.md +36 -0
  244. package/skills/engineering/resolve-release/references/related-skills.md +12 -0
  245. package/skills/engineering/resolve-release/references/routing.md +149 -0
  246. package/skills/engineering/resolve-release/references/verified-sha-github-flow.md +285 -0
  247. package/skills/engineering/resolve-release/references/versioning.md +202 -0
  248. package/skills/engineering/resolve-release/references/why.md +53 -0
  249. package/skills/engineering/resolve-release/scripts/adapter-completion-artifact.mjs +389 -0
  250. package/skills/engineering/resolve-release/scripts/build-changes.mjs +209 -0
  251. package/skills/engineering/resolve-release/scripts/candidate-hygiene.mjs +407 -0
  252. package/skills/engineering/resolve-release/scripts/candidate-identity.mjs +904 -0
  253. package/skills/engineering/resolve-release/scripts/candidate-traffic.mjs +81 -0
  254. package/skills/engineering/resolve-release/scripts/checked-adapter-loader.mjs +612 -0
  255. package/skills/engineering/resolve-release/scripts/close-attempt.mjs +135 -0
  256. package/skills/engineering/resolve-release/scripts/closeout-release.mjs +161 -0
  257. package/skills/engineering/resolve-release/scripts/doctrine.mjs +106 -0
  258. package/skills/engineering/resolve-release/scripts/durable-processing.mjs +522 -0
  259. package/skills/engineering/resolve-release/scripts/ensure-target-green.mjs +659 -0
  260. package/skills/engineering/resolve-release/scripts/evidence-bundle.mjs +1014 -0
  261. package/skills/engineering/resolve-release/scripts/finalize-release.mjs +526 -0
  262. package/skills/engineering/resolve-release/scripts/fixtures/durable-processing-adapter.mjs +169 -0
  263. package/skills/engineering/resolve-release/scripts/green-gate.mjs +599 -0
  264. package/skills/engineering/resolve-release/scripts/isolated-adapter-evaluator.mjs +752 -0
  265. package/skills/engineering/resolve-release/scripts/metadata-pr-status.mjs +56 -0
  266. package/skills/engineering/resolve-release/scripts/metadata-sync.mjs +1538 -0
  267. package/skills/engineering/resolve-release/scripts/postmortem.mjs +381 -0
  268. package/skills/engineering/resolve-release/scripts/preflight-probes.mjs +498 -0
  269. package/skills/engineering/resolve-release/scripts/production-endpoints.mjs +326 -0
  270. package/skills/engineering/resolve-release/scripts/rc-circuit-breaker.mjs +272 -0
  271. package/skills/engineering/resolve-release/scripts/report.mjs +417 -0
  272. package/skills/engineering/resolve-release/scripts/reprobe-credentials.mjs +114 -0
  273. package/skills/engineering/resolve-release/scripts/revalidate-candidate.mjs +238 -0
  274. package/skills/engineering/resolve-release/scripts/review-packet.mjs +503 -0
  275. package/skills/engineering/resolve-release/scripts/rollback-floor.mjs +263 -0
  276. package/skills/engineering/resolve-release/scripts/version-assert.mjs +339 -0
  277. package/skills/engineering/resolve-release/scripts/version-postmortem.mjs +485 -0
  278. package/skills/engineering/resolve-release/scripts/version.mjs +1199 -0
  279. package/skills/engineering/resolve-release/scripts/watch-candidate-delivery.mjs +449 -0
  280. package/skills/engineering/resolve-release/vendor/ACORN-LICENSE +21 -0
  281. package/skills/engineering/resolve-release/vendor/README.md +60 -0
  282. package/skills/engineering/resolve-release/vendor/acorn.mjs +6233 -0
  283. package/skills/engineering/resolve-release/vendor/quickjs/core/LICENSE +21 -0
  284. package/skills/engineering/resolve-release/vendor/quickjs/core/README.md +341 -0
  285. package/skills/engineering/resolve-release/vendor/quickjs/core/README.template.md +70 -0
  286. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs +2 -0
  287. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-TAV5CUKK.mjs.map +1 -0
  288. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs +7 -0
  289. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/chunk-V2S4ZYJR.mjs.map +1 -0
  290. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.mts +2033 -0
  291. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.d.ts +2033 -0
  292. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js +7 -0
  293. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.js.map +1 -0
  294. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs +2 -0
  295. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/index.mjs.map +1 -0
  296. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs +2 -0
  297. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-ES6BEMUI.mjs.map +1 -0
  298. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs +2 -0
  299. package/skills/engineering/resolve-release/vendor/quickjs/core/dist/module-asyncify-2EFITU5U.mjs.map +1 -0
  300. package/skills/engineering/resolve-release/vendor/quickjs/core/package.json +49 -0
  301. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/LICENSE +21 -0
  302. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/README.md +5 -0
  303. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.mts +549 -0
  304. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.d.ts +549 -0
  305. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js +2 -0
  306. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.js.map +1 -0
  307. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs +2 -0
  308. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/dist/index.mjs.map +1 -0
  309. package/skills/engineering/resolve-release/vendor/quickjs/ffi-types/package.json +36 -0
  310. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/LICENSE +47 -0
  311. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/README.md +82 -0
  312. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.d.ts +11 -0
  313. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.browser.mjs +22 -0
  314. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cjs +21 -0
  315. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.cjs +21 -0
  316. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.cloudflare.d.ts +11 -0
  317. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.d.ts +11 -0
  318. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.mjs +25 -0
  319. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/emscripten-module.wasm +0 -0
  320. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.mts +85 -0
  321. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.d.ts +85 -0
  322. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js +2 -0
  323. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.js.map +1 -0
  324. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs +2 -0
  325. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/ffi.mjs.map +1 -0
  326. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.mts +20 -0
  327. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.d.ts +20 -0
  328. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js +2 -0
  329. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.js.map +1 -0
  330. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs +2 -0
  331. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/dist/index.mjs.map +1 -0
  332. package/skills/engineering/resolve-release/vendor/quickjs/release-sync/package.json +61 -0
  333. package/skills/engineering/review-pr/LICENSE +3 -0
  334. package/skills/engineering/review-pr/SKILL.md +123 -0
  335. package/skills/engineering/review-pr/references/adversarial-reviewer-prompt.md +42 -0
  336. package/skills/engineering/review-pr/references/code-correctness.md +5 -0
  337. package/skills/engineering/review-pr/references/contract-freshness.md +9 -0
  338. package/skills/engineering/review-pr/references/coordination.md +18 -0
  339. package/skills/engineering/review-pr/references/domain-hazards.md +123 -0
  340. package/skills/engineering/review-pr/references/finding-themes.md +7 -0
  341. package/skills/engineering/review-pr/references/github-posting.md +98 -0
  342. package/skills/engineering/review-pr/references/golden-path-smoke.md +5 -0
  343. package/skills/engineering/review-pr/references/incremental-output.md +16 -0
  344. package/skills/engineering/review-pr/references/inputs-and-discovery.md +31 -0
  345. package/skills/engineering/review-pr/references/output-format.md +99 -0
  346. package/skills/engineering/review-pr/references/over-mock-screen.md +7 -0
  347. package/skills/engineering/review-pr/references/promotion-prs.md +16 -0
  348. package/skills/engineering/review-pr/references/re-review.md +18 -0
  349. package/skills/engineering/review-pr/references/review-method.md +199 -0
  350. package/skills/engineering/review-pr/references/review-mode.md +30 -0
  351. package/skills/engineering/review-pr/references/review-posture.md +53 -0
  352. package/skills/engineering/review-pr/references/round1-depth.md +62 -0
  353. package/skills/engineering/review-pr/references/scripts.md +17 -0
  354. package/skills/engineering/review-pr/references/workflow.md +16 -0
  355. package/skills/engineering/review-pr/schemas/findings.schema.json +282 -0
  356. package/skills/engineering/review-pr/scripts/finding-contract.mjs +285 -0
  357. package/skills/engineering/review-pr/scripts/post-review.mjs +405 -0
  358. package/skills/engineering/review-pr/scripts/pr-context.mjs +207 -0
  359. package/skills/engineering/review-pr/scripts/scan-diff.mjs +365 -0
  360. package/skills/engineering/review-pr/scripts/theme-contract.mjs +57 -0
  361. package/skills/engineering/smoke/LICENSE +3 -0
  362. package/skills/engineering/smoke/SKILL.md +131 -0
  363. package/skills/engineering/smoke/assets/smoke.manifest.example.json +53 -0
  364. package/skills/engineering/smoke/references/manifest.md +192 -0
  365. package/skills/engineering/smoke/scripts/smoke.mjs +713 -0
  366. package/skills/fullstack/better-auth/LICENSE +3 -0
  367. package/skills/fullstack/better-auth/SKILL.md +601 -0
  368. package/skills/fullstack/better-auth/references/feishu-api.md +270 -0
  369. package/skills/fullstack/monorepo/LICENSE +3 -0
  370. package/skills/fullstack/monorepo/SKILL.md +465 -0
  371. package/skills/fullstack/nextjs-fullstack/LICENSE +3 -0
  372. package/skills/fullstack/nextjs-fullstack/SKILL.md +210 -0
  373. package/skills/fullstack/nextjs-fullstack/conventions.md +318 -0
  374. package/skills/fullstack/nextjs-fullstack/frontend-conventions.md +61 -0
  375. package/skills/fullstack/nextjs-fullstack/nextjs16.md +287 -0
  376. package/skills/fullstack/nextjs-fullstack/server-actions.md +409 -0
  377. package/skills/fullstack/prisma-setup/LICENSE +3 -0
  378. package/skills/fullstack/prisma-setup/SKILL.md +180 -0
  379. package/skills/fullstack/prisma-setup/nextjs.md +258 -0
  380. package/skills/fullstack/prisma-setup/turborepo.md +301 -0
  381. package/skills/fullstack/shadcn/LICENSE +3 -0
  382. package/skills/fullstack/shadcn/SKILL.md +119 -0
  383. package/skills/fullstack/shadcn/assets/shadcn-small.png +0 -0
  384. package/skills/fullstack/shadcn/assets/shadcn.png +0 -0
  385. package/skills/fullstack/shadcn/cli.md +411 -0
  386. package/skills/fullstack/shadcn/customization.md +224 -0
  387. package/skills/fullstack/shadcn/evals/evals.json +90 -0
  388. package/skills/fullstack/shadcn/mcp.md +101 -0
  389. package/skills/fullstack/shadcn/rules/base-vs-radix.md +323 -0
  390. package/skills/fullstack/shadcn/rules/component-selection.md +67 -0
  391. package/skills/fullstack/shadcn/rules/composition.md +195 -0
  392. package/skills/fullstack/shadcn/rules/data-table.md +201 -0
  393. package/skills/fullstack/shadcn/rules/forms.md +255 -0
  394. package/skills/fullstack/shadcn/rules/icons.md +103 -0
  395. package/skills/fullstack/shadcn/rules/styling.md +167 -0
  396. package/skills/fullstack/zod-v4/LICENSE +3 -0
  397. package/skills/fullstack/zod-v4/SKILL.md +287 -0
@@ -0,0 +1,272 @@
1
+ # Coverage gates — Cloud Build template (satisfies ensure-coverage references/enforcement/ci-contract.md).
2
+ #
3
+ # Each gate is BLOCKING (a failing Cloud Build step fails the build), none standing in
4
+ # for another. Two of the three lanes are in this file (release lives in resolve-release):
5
+ # the PR-lane floor (inventory, accounting, render sweep,
6
+ # no-over-mock, Review-Contract checklist validate, quarantine auto-resurface, and the
7
+ # curated E2E SMOKE golden-path liveness gate #8) runs every PR; the broad functional +
8
+ # journey E2E suite (gate 4) is DEMOTED to the integration/nightly lane (branch-guarded
9
+ # below) — verified before release, not on the per-PR critical path. Plus the meta-gate
10
+ # that runs ci-audit against this file so the gates can't be silently dropped. Copy into
11
+ # your cloudbuild.*.yaml or wire as a dedicated PR trigger. Replace <…> placeholders.
12
+ # Verify it stays wired: `node <ensure-coverage>/scripts/ci-audit.mjs --files cloudbuild.gates.yaml`.
13
+ #
14
+ # Conventions this template encodes:
15
+ # 1. DOCKER-PREFERRED: every browser step already runs in the official pinned
16
+ # Playwright image (`name:` below) — Cloud Build steps are containers by
17
+ # construction. Keep every pin IDENTICAL and matching the repo's
18
+ # @playwright/test version (mismatch → a network `playwright install` per run,
19
+ # or protocol failures). Canonical pin: mcr.microsoft.com/playwright:v1.61.0-noble.
20
+ # 2. TIME BUDGET: the PR lane targets ≤5 min wall clock — browser steps carry
21
+ # `timeout: 300s`, the build carries an overall `timeout`, and golden paths run
22
+ # in parallel inside the smoke step (E2E_WORKERS). Steps run serially by default;
23
+ # use `waitFor: ['-']` on independent static gates to overlap them if the total
24
+ # creeps past budget.
25
+ # 3. UMBRELLA: Cloud Build needs no umbrella job — the build's single pass/fail
26
+ # status IS the one check. Point GitHub branch protection (or your merge gate)
27
+ # at this trigger's status check and nothing else.
28
+
29
+ steps:
30
+ # Static test-lint gates — fails if this push ADDS a banned pattern to a test
31
+ # file: a skip/focus/xfail (no-skip), a fixed sleep (no-fixed-timeout), an empty
32
+ # test (no-empty-test), or a mock of a first-party internal seam (mock-internal-seam,
33
+ # default-on). Diff mode leaves inherited violations alone; a change may not add a new one.
34
+ - id: lint-tests
35
+ name: node:20
36
+ entrypoint: bash
37
+ args: ['-c', 'node <ensure-coverage>/scripts/lint-tests.mjs --diff "$_BASE_REF"']
38
+
39
+ # Gate 5 — no over-mock (depth axis), WHOLE-TREE lane: inherited first-party-seam
40
+ # mocks block until removed (the --diff run above already covers newly-added ones).
41
+ # Zero-tolerance, no waiver; ci-audit looks for `mock-internal-seam` by name.
42
+ - id: over-mock-whole-tree
43
+ name: node:20
44
+ entrypoint: bash
45
+ args: ['-c', 'node <ensure-coverage>/scripts/lint-tests.mjs --rules mock-internal-seam']
46
+
47
+ # Gate 1 — inventory freshness: regenerate the surface inventory + route manifest,
48
+ # fail on drift so a new route can't be silently uncovered in either manifest.
49
+ - id: inventory-freshness
50
+ name: node:20
51
+ entrypoint: bash
52
+ args:
53
+ - -c
54
+ - |
55
+ node scripts/gen-inventory.mjs # your INVENTORY-CONTRACT adapter → surface-inventory.json
56
+ node <e2e-test>/scripts/project-route-manifest.mjs \
57
+ --inventory docs/tests/_generated/surface-inventory.json \
58
+ --overlay e2e/route-manifest.overlay.json --out e2e/route-manifest.json
59
+ git diff --exit-code docs/tests/_generated/surface-inventory.json e2e/route-manifest.json
60
+
61
+ # Gate 2 — accounting: the ledger. Fails on Missing / Over-mocked / blocking
62
+ # Unverified. Static + fast; no browser. Proves a qualifying test was AUTHORED.
63
+ - id: coverage-accounting
64
+ name: node:20
65
+ entrypoint: bash
66
+ args: ['-c', 'node <ensure-coverage>/scripts/coverage-ledger.mjs validate']
67
+
68
+ # Gate 6 — Review-Contract checklist validate. Static anti-ritual guard: every
69
+ # PASS/FAIL checklist row carries an evidence locator (file:line / `command` / #issue)
70
+ # and no gate row is TODO. Doctrine: ensure-coverage hooks.md (CI tier). Point at the
71
+ # committed Review-Contract checklist doc (or the file the PR body's checklist extracts to).
72
+ - id: coverage-checklist
73
+ name: node:20
74
+ entrypoint: bash
75
+ args: ['-c', 'node <ensure-coverage>/scripts/coverage-checklist.mjs validate <docs/tests/CONTRACT-CHECKLIST.md>']
76
+
77
+ # Gate 6b — Review-Contract evidence-block freshness. The block is stamped with the
78
+ # HEAD it describes; validate fails when the stamp isn't that HEAD, so a fix-round
79
+ # commit landing after collection can't ship stale. Cloud Build checks out the
80
+ # triggering commit directly, so HEAD is already the right SHA — no ref override.
81
+ # Needs FULL history: triggers clone shallow by default, and the block's base..head
82
+ # derivations (including the production-diff claim) can't resolve in a shallow clone.
83
+ # Set the trigger's fetch depth to 0, or unshallow before this step.
84
+ - id: evidence-block
85
+ name: node:20
86
+ entrypoint: bash
87
+ args: ['-c', 'node <ensure-coverage>/scripts/evidence-block.mjs validate <docs/tests/evidence.json> --source <src,app,packages>']
88
+
89
+ # Gate 7 — quarantine auto-resurface. BLOCKING (distinct from the non-blocking
90
+ # quarantine *lane* below): fails once any `@quarantine(until=…)` / `until=` exit date
91
+ # is in the past, so a deferred suppression can't rot green into a permanent skip.
92
+ # ci-audit looks for `check-quarantine-expiry` by name.
93
+ - id: quarantine-expiry
94
+ name: node:20
95
+ entrypoint: bash
96
+ args: ['-c', 'node <ensure-coverage>/scripts/check-quarantine-expiry.mjs'] # exit 1 on any expired dated exit
97
+
98
+ # Gate 3 — render sweep: opens EVERY manifest route in a real browser and asserts
99
+ # the presentation floor (render-health spine first). SEPARATE job — needs a
100
+ # browser + seeded DB + auth bypass. This is the gate that catches a crashing
101
+ # route a green functional suite sails past. NOT the functional suite.
102
+ - id: presentation-sweep
103
+ name: mcr.microsoft.com/playwright:v1.61.0-noble
104
+ timeout: 300s # PR-lane budget: the sweep must stay inside 5 min
105
+ entrypoint: bash
106
+ env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
107
+ args:
108
+ - -c
109
+ - |
110
+ <seed + migrate the test DB>
111
+ <boot the app on $BASE_URL> # or point --base-url at a preview deploy
112
+ node <e2e-test>/scripts/presentation-sweep.mjs \
113
+ --manifest e2e/route-manifest.json --base-url "$$BASE_URL" \
114
+ --fixtures e2e/sweep-fixtures.mjs \
115
+ --out docs/tests/_generated/presentation-results.json
116
+
117
+ # Gate 8 — curated E2E smoke (golden-path liveness). PR-LANE FLOOR, blocking.
118
+ # Boots the REAL app and drives only the do-not-ship journeys (sign in → core
119
+ # action → pay), writes smoke-results.json, then reduces those observations through
120
+ # smoke.mjs verdict. Any fail/blocked/missing reds the build. This — NOT the broad
121
+ # functional suite below — is the per-PR liveness gate; it catches the integrated
122
+ # render-time bug a green unit/functional suite sails past (#237). ci-audit looks
123
+ # for `smoke … verdict` by name.
124
+ - id: smoke
125
+ name: mcr.microsoft.com/playwright:v1.61.0-noble
126
+ timeout: 300s # PR-lane budget: golden paths run in parallel (E2E_WORKERS), wall clock ≈ slowest path
127
+ entrypoint: bash
128
+ env: ['E2E_AUTH_BYPASS=1', 'E2E_WORKERS=4', 'DATABASE_URL=${_DATABASE_URL}']
129
+ args:
130
+ - -c
131
+ - |
132
+ <seed + migrate the test DB>
133
+ <boot the app on $BASE_URL>
134
+ # Validate + reconcile before gating: --journeys verifies every browser path
135
+ # references a real @smoke-tagged journey AND every @smoke journey is in the
136
+ # manifest — a drift either way (esp. an @smoke journey missing from the
137
+ # manifest, a silent false-ALIVE) reds the build instead of passing vacuously.
138
+ node <smoke>/scripts/smoke.mjs validate --manifest smoke.manifest.json --journeys <e2e-journeys-dir>
139
+ node <smoke>/scripts/smoke.mjs plan --manifest smoke.manifest.json --target local --json > smoke-plan.json
140
+ <drive smoke-plan.json through Playwright/API/CLI and write smoke-results.json>
141
+ node <smoke>/scripts/smoke.mjs verdict --manifest smoke.manifest.json --target local --results smoke-results.json --out smoke-verdict.json
142
+
143
+ # Gate 4 — broad functional + journey E2E (distinct from gate 3 and gate 8).
144
+ # HEAVY/INTEGRATION LANE, blocking — but DEMOTED off the per-PR critical path: it runs
145
+ # only on the integration branch (REQUIRED before release), never on a PR. An OPTIONAL
146
+ # nightly cadence is opt-in via `_LANE=nightly` — not required; the integration-branch
147
+ # run is the release gate. The per-PR floor is the smoke gate above; the full
148
+ # behavioral suite is verified before release. Excludes @quarantine-tagged tests.
149
+ - id: e2e
150
+ name: mcr.microsoft.com/playwright:v1.61.0-noble
151
+ timeout: 1800s # integration lane — the one lane allowed past the 5-min PR budget (no-op on PRs)
152
+ entrypoint: bash
153
+ env: ['E2E_AUTH_BYPASS=1', 'E2E_WORKERS=4', 'DATABASE_URL=${_DATABASE_URL}']
154
+ args:
155
+ - -c
156
+ - |
157
+ if [ "$BRANCH_NAME" = "integration" ] || [ "${_LANE}" = "nightly" ]; then
158
+ <seed + migrate the test DB>
159
+ pnpm playwright test --grep-invert "@quarantine"
160
+ else
161
+ echo "skip: broad functional+journey E2E runs on the integration/nightly lane, not per-PR (gate 8 smoke is the per-PR floor)"
162
+ fi
163
+
164
+ # Quarantine lane — the ONLY sanctioned non-blocking path (tests are never skipped).
165
+ # Un-sandboxable externals or a genuine flake under active fix go HERE: the test
166
+ # still RUNS and REPORTS, it just doesn't block (allowFailure). Keep the surface
167
+ # graded `Unverified` in the ledger (never `verified: true`), with a dated exit.
168
+ - id: quarantine
169
+ name: mcr.microsoft.com/playwright:v1.61.0-noble
170
+ entrypoint: bash
171
+ allowFailure: true # the whole point — must never hard-block the build
172
+ env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
173
+ args:
174
+ - -c
175
+ - |
176
+ <seed + migrate the test DB>
177
+ pnpm playwright test --grep "@quarantine" --pass-with-no-tests # provider test keys via secrets, never live keys; green when nothing is quarantined
178
+
179
+ # Visual regression GATE (presentation:visual) — OPT-IN, BLOCKING when present.
180
+ # Same PINNED Playwright image as the regen step so baselines and this comparison
181
+ # share one rendering environment (a baseline minted on another OS reds on every
182
+ # glyph's anti-aliasing). Compares against the COMMITTED baselines; never writes
183
+ # them. Only needed when a surface declares `requiredLevels: [presentation:visual]`.
184
+ - id: visual-gate
185
+ name: mcr.microsoft.com/playwright:v1.61.0-noble # PIN — must match visual-baseline-regen
186
+ entrypoint: bash
187
+ env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
188
+ args:
189
+ - -c
190
+ - |
191
+ <seed + migrate the test DB>
192
+ <boot the app on $BASE_URL>
193
+ # --pass-with-no-tests: a repo with no @visual specs must not red the whole build.
194
+ pnpm playwright test --grep "@visual" --pass-with-no-tests # toHaveScreenshot specs; fails on drift from committed baselines
195
+
196
+ # Visual BASELINE-REGEN — ON-DEMAND (gated on the _UPDATE_VISUAL_BASELINES
197
+ # substitution; wire it to a manual/labelled trigger), the ONLY sanctioned writer
198
+ # of baselines. Same pinned image. Regenerates the PNGs, commits them back, then
199
+ # posts the durable baseline link + ephemeral diff URL to the issue AND PR and
200
+ # RETURNS both as a value (`--evidence-out`, plus stdout) for the resolve-issues
201
+ # orchestrator to record on the unit. This lane never writes the run manifest itself —
202
+ # the orchestrator is its only writer (ADR 0001 decision 5). Never blocks; an explicit
203
+ # human/agent action.
204
+ #
205
+ # `--evidence-out` is not optional here: it is what gives this lane returned-value
206
+ # parity with `ci-gates.github.yml`. A lane that only comments on the issue leaves the
207
+ # orchestrator nothing to record, and the unit's visual proof-of-execution is silently
208
+ # absent — the gate looks green because the evidence was never asked for.
209
+ - id: visual-baseline-regen
210
+ name: mcr.microsoft.com/playwright:v1.61.0-noble # MUST match visual-gate
211
+ entrypoint: bash
212
+ env: ['E2E_AUTH_BYPASS=1', 'DATABASE_URL=${_DATABASE_URL}']
213
+ args:
214
+ - -c
215
+ - |
216
+ [ "$_UPDATE_VISUAL_BASELINES" = "true" ] || { echo "skip: regen not requested"; exit 0; }
217
+ <seed + migrate the test DB>
218
+ <boot the app on $BASE_URL>
219
+ pnpm playwright test --grep "@visual" --update-snapshots
220
+ git add '**/*-snapshots/**' && (git diff --staged --quiet || git commit -m "chore(visual): regenerate baselines") && git push
221
+ node <e2e-test>/scripts/post-visual-evidence.mjs \
222
+ --unit "$_PR_NUMBER" --repo "$_REPO" --sha "$(git rev-parse HEAD)" \
223
+ --issue "$_LINKED_ISSUE" --pr "$_PR_NUMBER" \
224
+ --diff-artifact "$_DIFF_ARTIFACT_URL" \
225
+ --results docs/tests/_generated/presentation-results.json \
226
+ --evidence-out /workspace/visual-evidence.json
227
+
228
+ # Publish the RETURNED evidence so the run can read it. `/workspace` persists across
229
+ # steps but not past the build, which is the Cloud Build counterpart of GitHub's
230
+ # `upload-artifact`. Guarded twice — on the regen substitution and on the file
231
+ # existing — because a top-level `artifacts:` block uploads unconditionally and reds
232
+ # every ordinary build, where this lane did not run and the file is absent.
233
+ - id: visual-evidence-publish
234
+ name: gcr.io/cloud-builders/gsutil
235
+ entrypoint: bash
236
+ args:
237
+ - -c
238
+ - |
239
+ [ "$_UPDATE_VISUAL_BASELINES" = "true" ] || { echo "skip: regen not requested"; exit 0; }
240
+ [ -n "$_EVIDENCE_BUCKET" ] || { echo "skip: _EVIDENCE_BUCKET unset — evidence stays on the regen step's stdout"; exit 0; }
241
+ [ -f /workspace/visual-evidence.json ] || { echo "skip: no evidence file"; exit 0; }
242
+ gsutil cp /workspace/visual-evidence.json "gs://$_EVIDENCE_BUCKET/$BUILD_ID/visual-evidence.json"
243
+
244
+ # Meta-gate (bootstrap) — run ci-audit against THIS gate file so the gates above
245
+ # can't be silently deleted or weakened later. ci-audit's own META_GATE is exactly
246
+ # "is ci-audit run by CI?". Keep --files in sync with the gate file(s) you ship.
247
+ - id: gate-audit
248
+ name: node:20
249
+ entrypoint: bash
250
+ args: ['-c', 'node <ensure-coverage>/scripts/ci-audit.mjs --files cloudbuild.gates.yaml']
251
+
252
+ # DO NOT add `allowFailure: true` to gates 2/3/4 — that turns a gate into theatre.
253
+ # (The quarantine lane above is the one sanctioned exception: it RUNS + REPORTS the
254
+ # test non-blocking, with the surface graded `Unverified`; it is not a skip.)
255
+ # Phase-in (warn-only) is acceptable only temporarily and must be reported by the
256
+ # CI audit as `warn-only` with a dated exit plan, never treated as `present`.
257
+ # Overall ceiling. Steps run serially, so this must exceed the sum of the step
258
+ # timeouts that can actually run together — the e2e step alone may use its full
259
+ # 1800s on the integration lane. The PR lane (where e2e no-ops) finishes well
260
+ # inside 5 min; this ceiling is for the integration lane.
261
+ timeout: 3600s
262
+ options:
263
+ env: ['BASE_URL=http://127.0.0.1:3000']
264
+ substitutions:
265
+ _DATABASE_URL: '' # injected from Secret Manager in your trigger
266
+ _BASE_REF: 'origin/main' # the promotion/PR base the no-skip diff lints against
267
+ _UPDATE_VISUAL_BASELINES: 'false' # set true on a manual/labelled trigger to regenerate visual baselines
268
+ _PR_NUMBER: '' # PR number for the visual evidence comment
269
+ _LINKED_ISSUE: '' # the source issue # the evidence comment is also posted to
270
+ _REPO: '' # owner/repo for the durable baseline link
271
+ _DIFF_ARTIFACT_URL: '' # ephemeral diff/preview artifact URL (with expiry), if uploaded
272
+ _EVIDENCE_BUCKET: '' # GCS bucket for the RETURNED visual-evidence value; empty = stdout only