@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,16 @@
1
+ {
2
+ "version": 1,
3
+ "discoveredConditions": ["pre-enqueue-alive-needs-future-queue-evidence"],
4
+ "conditions": [
5
+ {
6
+ "id": "pre-enqueue-alive-needs-future-queue-evidence",
7
+ "phase": "synthetic-queue-head-execution",
8
+ "subjectKind": "synthetic-queue-head-sha",
9
+ "producer": "mergify-queue",
10
+ "provider": "mergify",
11
+ "acquisitionOperation": "read-synthetic-queue-checks",
12
+ "consumingTransition": "authorize-enqueue",
13
+ "failureBehavior": "block-transition"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "version": 1,
3
+ "discoveredConditions": [
4
+ "pr-head-checks",
5
+ "queue-admission",
6
+ "synthetic-queue-execution",
7
+ "target-branch-delivery"
8
+ ],
9
+ "conditions": [
10
+ {
11
+ "id": "pr-head-checks",
12
+ "phase": "pr-head-authorization",
13
+ "subjectKind": "pr-head-sha",
14
+ "producer": "github-actions",
15
+ "provider": "github",
16
+ "acquisitionOperation": "read-exact-pr-head-checks",
17
+ "consumingTransition": "authorize-enqueue",
18
+ "failureBehavior": "block-transition"
19
+ },
20
+ {
21
+ "id": "queue-admission",
22
+ "phase": "queue-admission",
23
+ "subjectKind": "pr-head-sha",
24
+ "producer": "resolve-issues-orchestrator",
25
+ "provider": "resolve-issues",
26
+ "acquisitionOperation": "evaluate-enqueue-eligibility",
27
+ "consumingTransition": "enqueue",
28
+ "failureBehavior": "block-transition"
29
+ },
30
+ {
31
+ "id": "synthetic-queue-execution",
32
+ "phase": "synthetic-queue-head-execution",
33
+ "subjectKind": "synthetic-queue-head-sha",
34
+ "producer": "mergify-queue",
35
+ "provider": "mergify",
36
+ "acquisitionOperation": "read-synthetic-queue-checks",
37
+ "consumingTransition": "record-queue-execution",
38
+ "failureBehavior": "mark-delivery-unproven"
39
+ },
40
+ {
41
+ "id": "target-branch-delivery",
42
+ "phase": "target-branch-ancestry",
43
+ "subjectKind": "merge-commit-sha",
44
+ "producer": "target-branch",
45
+ "provider": "git",
46
+ "acquisitionOperation": "fetch-target-and-check-ancestry",
47
+ "consumingTransition": "finalize-delivery",
48
+ "failureBehavior": "mark-delivery-unproven"
49
+ }
50
+ ]
51
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "incident": "consumer-product-repo#830",
3
+ "componentId": "tax-production",
4
+ "highRisk": true,
5
+ "units": [
6
+ { "id": "#831", "headSha": "8318318318318318318318318318318318318318", "preliminaryRounds": 2 },
7
+ { "id": "#832", "headSha": "8328328328328328328328328328328328328328", "preliminaryRounds": 3 },
8
+ { "id": "#833", "headSha": "8338338338338338338338338338338338338338", "preliminaryRounds": 4 },
9
+ { "id": "#834", "headSha": "8348348348348348348348348348348348348348", "preliminaryRounds": 3 },
10
+ { "id": "#835", "headSha": "8358358358358358358358358358358358358358", "preliminaryRounds": 2 },
11
+ { "id": "#836", "headSha": "8368368368368368368368368368368368368368", "preliminaryRounds": 3 },
12
+ { "id": "#837", "headSha": "8378378378378378378378378378378378378378", "preliminaryRounds": 3 },
13
+ { "id": "#838", "headSha": "8388388388388388388388388388388388388388", "preliminaryRounds": 6 }
14
+ ],
15
+ "historicalFullReviews": 8,
16
+ "expectedTerminalFullReviews": 1
17
+ }
@@ -0,0 +1,166 @@
1
+ {
2
+ "_source": "Captured verbatim from the GitHub REST API on 2026-08-16 against this repository. `incident` is the #1081 head ee5dd91a211d85f3158cbc4da8537b0cb1aee2d8; `postFix` is 284d6ca6c97d13479abe9011a4c2288f6e318852, the merge that fixed it. Trimmed to the fields head-check-set.mjs reads, and no value is invented. The one field dropped rather than trimmed is `html_url`: it names the private repository in every entry, which this package must not publish (package-audit disclosure:private-repository), and nothing classifies on it.",
3
+ "incident": {
4
+ "headSha": "ee5dd91a211d85f3158cbc4da8537b0cb1aee2d8",
5
+ "checkRuns": [
6
+ {
7
+ "name": "Mergify Merge Protections",
8
+ "status": "completed",
9
+ "conclusion": "neutral",
10
+ "app": {
11
+ "slug": "mergify"
12
+ },
13
+ "check_suite": {
14
+ "id": 86459201578
15
+ }
16
+ },
17
+ {
18
+ "name": "skill-script-tests-queue",
19
+ "status": "completed",
20
+ "conclusion": "skipped",
21
+ "app": {
22
+ "slug": "github-actions"
23
+ },
24
+ "check_suite": {
25
+ "id": 86459211379
26
+ }
27
+ },
28
+ {
29
+ "name": "skill-script-tests",
30
+ "status": "completed",
31
+ "conclusion": "success",
32
+ "app": {
33
+ "slug": "github-actions"
34
+ },
35
+ "check_suite": {
36
+ "id": 86459211379
37
+ }
38
+ },
39
+ {
40
+ "name": "Mergify Merge Queue",
41
+ "status": "completed",
42
+ "conclusion": "neutral",
43
+ "app": {
44
+ "slug": "mergify"
45
+ },
46
+ "check_suite": {
47
+ "id": 86459201578
48
+ }
49
+ }
50
+ ],
51
+ "statuses": [],
52
+ "actionsRuns": [
53
+ {
54
+ "id": 31871939947,
55
+ "name": "Skill gates",
56
+ "path": ".github/workflows/skill-gates.yml",
57
+ "event": "pull_request",
58
+ "status": "completed",
59
+ "conclusion": "success",
60
+ "head_sha": "ee5dd91a211d85f3158cbc4da8537b0cb1aee2d8",
61
+ "check_suite_id": 86459211379,
62
+ "run_started_at": "2026-08-15T07:26:09Z",
63
+ "updated_at": "2026-08-15T07:32:49Z",
64
+ "pull_requests": [],
65
+ "jobCount": 2
66
+ },
67
+ {
68
+ "id": 31871936796,
69
+ "name": ".github/workflows/release-package.yml",
70
+ "path": ".github/workflows/release-package.yml",
71
+ "event": "push",
72
+ "status": "completed",
73
+ "conclusion": "failure",
74
+ "head_sha": "ee5dd91a211d85f3158cbc4da8537b0cb1aee2d8",
75
+ "check_suite_id": 86459203727,
76
+ "run_started_at": "2026-08-15T07:26:05Z",
77
+ "updated_at": "2026-08-15T07:26:05Z",
78
+ "pull_requests": [],
79
+ "jobCount": 0
80
+ },
81
+ {
82
+ "id": 31871936392,
83
+ "name": ".github/workflows/bootstrap-package.yml",
84
+ "path": ".github/workflows/bootstrap-package.yml",
85
+ "event": "push",
86
+ "status": "completed",
87
+ "conclusion": "failure",
88
+ "head_sha": "ee5dd91a211d85f3158cbc4da8537b0cb1aee2d8",
89
+ "check_suite_id": 86459202731,
90
+ "run_started_at": "2026-08-15T07:26:04Z",
91
+ "updated_at": "2026-08-15T07:26:04Z",
92
+ "pull_requests": [],
93
+ "jobCount": 0
94
+ }
95
+ ]
96
+ },
97
+ "postFix": {
98
+ "headSha": "284d6ca6c97d13479abe9011a4c2288f6e318852",
99
+ "checkRuns": [
100
+ {
101
+ "name": "skill-script-tests-queue",
102
+ "status": "completed",
103
+ "conclusion": "skipped",
104
+ "app": {
105
+ "slug": "github-actions"
106
+ },
107
+ "check_suite": {
108
+ "id": 86509201805
109
+ }
110
+ },
111
+ {
112
+ "name": "test-runner",
113
+ "status": "completed",
114
+ "conclusion": "success",
115
+ "app": {
116
+ "slug": "github-actions"
117
+ },
118
+ "check_suite": {
119
+ "id": 86509201866
120
+ }
121
+ },
122
+ {
123
+ "name": "skill-script-tests",
124
+ "status": "completed",
125
+ "conclusion": "success",
126
+ "app": {
127
+ "slug": "github-actions"
128
+ },
129
+ "check_suite": {
130
+ "id": 86509201805
131
+ }
132
+ }
133
+ ],
134
+ "statuses": [],
135
+ "actionsRuns": [
136
+ {
137
+ "id": 31893819954,
138
+ "name": "Test Self-Hosted Runner",
139
+ "path": ".github/workflows/test-self-hosted.yml",
140
+ "event": "push",
141
+ "status": "completed",
142
+ "conclusion": "success",
143
+ "head_sha": "284d6ca6c97d13479abe9011a4c2288f6e318852",
144
+ "check_suite_id": 86509201866,
145
+ "run_started_at": "2026-08-15T15:49:50Z",
146
+ "updated_at": "2026-08-15T15:50:21Z",
147
+ "pull_requests": [],
148
+ "jobCount": 1
149
+ },
150
+ {
151
+ "id": 31893819933,
152
+ "name": "Skill gates",
153
+ "path": ".github/workflows/skill-gates.yml",
154
+ "event": "push",
155
+ "status": "completed",
156
+ "conclusion": "success",
157
+ "head_sha": "284d6ca6c97d13479abe9011a4c2288f6e318852",
158
+ "check_suite_id": 86509201805,
159
+ "run_started_at": "2026-08-15T15:49:50Z",
160
+ "updated_at": "2026-08-15T15:56:45Z",
161
+ "pull_requests": [],
162
+ "jobCount": 2
163
+ }
164
+ ]
165
+ }
166
+ }
@@ -0,0 +1,92 @@
1
+ // Durable cross-run gate-value observations. The manifest remains run-local resume state;
2
+ // this append-only series survives it and is the only evidence retirement may use.
3
+ import fs from 'node:fs'
4
+ import os from 'node:os'
5
+ import path from 'node:path'
6
+
7
+ import { gateAudit, GATE_RETIREMENT_MINIMUM_RUNS } from './fix-rounds.mjs'
8
+
9
+ const nonEmpty = (value) => typeof value === 'string' && value.trim().length > 0
10
+
11
+ export function gateValueDir(env = process.env) {
12
+ if (nonEmpty(env?.RESOLVER_GATE_VALUE_DIR)) return env.RESOLVER_GATE_VALUE_DIR.replace(/\/+$/, '')
13
+ if (nonEmpty(env?.RESOLVER_RUN_DIR)) return path.join(env.RESOLVER_RUN_DIR.replace(/\/+$/, ''), 'gate-value')
14
+ const state = nonEmpty(env?.XDG_STATE_HOME)
15
+ ? env.XDG_STATE_HOME.replace(/\/+$/, '')
16
+ : path.join(os.homedir(), '.local', 'state')
17
+ return path.join(state, 'resolver-gate-value')
18
+ }
19
+
20
+ export function gateValuePaths(env = process.env) {
21
+ const dir = gateValueDir(env)
22
+ return { dir, index: path.join(dir, 'index.jsonl') }
23
+ }
24
+
25
+ export function gateRetirementMinimumRuns(env = process.env) {
26
+ const configured = Number(env?.RESOLVER_GATE_RETIREMENT_MIN_RUNS)
27
+ return Number.isSafeInteger(configured) && configured > 0 ? configured : GATE_RETIREMENT_MINIMUM_RUNS
28
+ }
29
+
30
+ export function gateValueObservation(manifest, now = new Date()) {
31
+ return {
32
+ observedAt: now.toISOString(),
33
+ runSlug: nonEmpty(manifest?.runSlug) ? manifest.runSlug : null,
34
+ gateValue: gateAudit(manifest),
35
+ }
36
+ }
37
+
38
+ // A diagnostic save never fails the run. The returned error keeps an unwritten series
39
+ // distinguishable from a successful zero-value observation.
40
+ export function saveGateValueObservation(manifest, env = process.env, now = new Date()) {
41
+ const paths = gateValuePaths(env)
42
+ try {
43
+ fs.mkdirSync(paths.dir, { recursive: true })
44
+ fs.appendFileSync(paths.index, `${JSON.stringify(gateValueObservation(manifest, now))}\n`)
45
+ return { saved: true, paths, error: null }
46
+ } catch (error) {
47
+ return { saved: false, paths, error: error?.message ?? String(error) }
48
+ }
49
+ }
50
+
51
+ export function readGateValueSeries(env = process.env) {
52
+ const { index } = gateValuePaths(env)
53
+ if (!fs.existsSync(index)) return []
54
+ let text
55
+ try {
56
+ text = fs.readFileSync(index, 'utf8')
57
+ } catch (error) {
58
+ return [{ unreadable: true, reason: `series read failed: ${error?.message ?? String(error)}` }]
59
+ }
60
+
61
+ const latest = new Map()
62
+ const unreadable = []
63
+ for (const [lineIndex, line] of text.split('\n').entries()) {
64
+ if (!line.trim()) continue
65
+ try {
66
+ const observation = JSON.parse(line)
67
+ if (!observation || typeof observation !== 'object' || !nonEmpty(observation.runSlug) || !Array.isArray(observation.gateValue)) {
68
+ unreadable.push({ lineIndex, unreadable: true, reason: `malformed series row ${lineIndex + 1}` })
69
+ continue
70
+ }
71
+ latest.set(observation.runSlug, { lineIndex, ...observation })
72
+ } catch (error) {
73
+ unreadable.push({ lineIndex, unreadable: true, reason: `unreadable series row ${lineIndex + 1}: ${error?.message ?? String(error)}` })
74
+ }
75
+ }
76
+ return [...latest.values(), ...unreadable]
77
+ .sort((a, b) => a.lineIndex - b.lineIndex)
78
+ .map(({ lineIndex, ...observation }) => observation)
79
+ }
80
+
81
+ export function auditGateValue(manifest, options = {}) {
82
+ const env = options.env ?? process.env
83
+ const persisted = options.persist === false
84
+ ? null
85
+ : saveGateValueObservation(manifest, env, options.now ?? new Date())
86
+ const series = readGateValueSeries(env)
87
+ if (persisted && !persisted.saved) series.push({ unreadable: true, reason: `current gate-value observation was not saved: ${persisted.error}` })
88
+ return gateAudit(manifest, {
89
+ series,
90
+ minimumObservationRuns: gateRetirementMinimumRuns(env),
91
+ })
92
+ }
@@ -0,0 +1,73 @@
1
+ // The routing table that used to be `SKILL.md`'s Reference Map — 24 rows and 3.6KB of the
2
+ // always-loaded file, spent on a lookup nobody reads start to finish.
3
+ //
4
+ // WHY IT MOVED. SKILL.md is the one file loaded into every run's context, so every byte in it is
5
+ // paid on every run whether or not it is used. A 24-row "when you need X, read Y" table is
6
+ // consulted *situationally* — you want one row, when you already know what you are doing next.
7
+ // That is the shape of a query, not of doctrine, and it is the only section of SKILL.md that was
8
+ // pure lookup data. The phase-routing table stayed behind: it is read once at the start and is
9
+ // what makes a truncated read survivable.
10
+ //
11
+ // WHAT DID NOT MOVE, AND WHY THAT MATTERS. A table in context is *passively* available; a command
12
+ // must be *actively* invoked. So this trade is only safe because `run-state.mjs guide` is named in
13
+ // SKILL.md itself, near the top of what survives a partial read. If that pointer is ever dropped,
14
+ // this file becomes unreachable and the routing silently stops existing — which is why
15
+ // `guide-index.test.mjs` pins both the pointer and the reachability of every destination.
16
+
17
+ export const GUIDE = [
18
+ { need: 'run the pre-flight gate — its seven steps, and which chapter owns each', targets: [{ label: 'references/pre-flight.md', path: 'references/pre-flight.md' }] },
19
+ { need: 'settle both model slots (discovery, tiering, the reviewer default)', targets: [{ label: 'references/pre-flight-model-slots.md', path: 'references/pre-flight-model-slots.md' }] },
20
+ { need: 'settle the merge path (`deliveryMode` + `queueProvider`) at pre-flight', targets: [{ label: '`scripts/detect-delivery-mode.mjs`', path: 'scripts/detect-delivery-mode.mjs' }] },
21
+ { need: 'settle where the run writes code (`shared` vs its own worktree)', targets: [{ label: '`scripts/detect-workspace-mode.mjs`', path: 'scripts/detect-workspace-mode.mjs' }] },
22
+ { need: 'record interference, schedule concurrent units, or reap their workspaces', targets: [{ label: 'references/interference.md', path: 'references/interference.md' }, { label: '`run-state.mjs runnable`', path: 'scripts/run-state.mjs' }, { label: '`scripts/workspaces.mjs`', path: 'scripts/workspaces.mjs' }] },
23
+ { need: 'get this run\'s delivery flow and its exact enqueue/read/nudge/dequeue commands', targets: [{ label: '`run-state.mjs delivery-flow`', path: 'scripts/run-state.mjs' }] },
24
+ { need: 'report the plan before building, or progress **every time a unit leaves the loop** (the trigger: [loop.md](references/loop.md#3--fix-then-loop))', targets: [{ label: '`run-state.mjs plan`/`progress`', path: 'scripts/run-state.mjs' }, { label: 'renderers', path: 'scripts/report.mjs' }] },
25
+ { need: 'route a round that corrects a claim, not the code', targets: [{ label: 'references/evidence-lane.md', path: 'references/evidence-lane.md' }] },
26
+ { need: 'find out **why** this run kept buying evidence rounds — and whether to run a screen or build one', targets: [{ label: '`run-state.mjs evidence-audit`', path: 'scripts/run-state.mjs' }] },
27
+ { need: 'honour the leaf-spawn contract on a spawn — **render it** rather than compose it', targets: [{ label: '`run-state.mjs spawn-contract`', path: 'scripts/run-state.mjs' }, { label: 'references/spawn-contract.md', path: 'references/spawn-contract.md' }] },
28
+ { need: 'deliver a merge-ready component (enqueue, watch, dequeue routing)', targets: [{ label: 'references/delivery.md', path: 'references/delivery.md' }] },
29
+ { need: 'wait out an enqueued PR without spending foreground turns', targets: [{ label: '`scripts/watch-delivery.mjs`', path: 'scripts/watch-delivery.mjs' }] },
30
+ { need: 'preserve terminal provider facts while coherence blocks delivery, then reconcile them', targets: [{ label: 'references/terminal-evidence-journal.md', path: 'references/terminal-evidence-journal.md' }, { label: '`scripts/terminal-evidence-journal.mjs`', path: 'scripts/terminal-evidence-journal.mjs' }, { label: '`run-state.mjs reconcile-terminal-evidence`', path: 'scripts/run-state.mjs' }] },
31
+ { need: 'diagnose a stuck unit / answer a fired circuit-breaker', targets: [{ label: 'references/breaker.md', path: 'references/breaker.md' }, { label: '`run-state.mjs diagnose-breaker`', path: 'scripts/run-state.mjs' }] },
32
+ { need: 'run a high-risk unit\'s deep protocol (hazard hunt, round-1 depth, theme-complete fixes)', targets: [{ label: 'references/high-risk.md', path: 'references/high-risk.md' }] },
33
+ { need: 'fan a stage out via the Workflow harness', targets: [{ label: 'references/fan-out.md', path: 'references/fan-out.md' }] },
34
+ { need: 'run the epic integration gate', targets: [{ label: 'references/integration-gate.md', path: 'references/integration-gate.md' }, { label: '`scripts/combine-and-verify.mjs`', path: 'scripts/combine-and-verify.mjs' }] },
35
+ { need: '**pick up a dead session\'s run** — find it, then see what it was waiting on', targets: [{ label: '`run-state.mjs list`', path: 'scripts/run-state.mjs' }, { label: '`run-state.mjs resume <slug>`', path: 'scripts/run-state.mjs' }] },
36
+ { need: 'finalize and render the correctness handoff', targets: [{ label: '`run-state.mjs finalize`', path: 'scripts/run-state.mjs' }, { label: 'references/finalization.md', path: 'references/finalization.md' }] },
37
+ { need: 'run an optional, non-blocking profile diagnostic', targets: [{ label: '`run-state.mjs postmortem`', path: 'scripts/run-state.mjs' }, { label: 'references/postmortem.md', path: 'references/postmortem.md' }] },
38
+ { need: 'persist/resume run state', targets: [{ label: 'references/run-state.md', path: 'references/run-state.md' }] },
39
+ { need: 'classify a model at pre-flight', targets: [{ label: 'references/model-catalog.md', path: 'references/model-catalog.md' }] },
40
+ { need: 'know the bar any step must serve — the four guarantees in full', targets: [{ label: 'references/guarantees.md', path: 'references/guarantees.md' }] },
41
+ { need: 'know **why** a rule exists — its incident, measurement, or audit', targets: [{ label: 'references/why.md', path: 'references/why.md' }] },
42
+ { need: 'edit this skill, or grade a transcript', targets: [{ label: 'references/regression-checklist.md', path: 'references/regression-checklist.md' }] },
43
+ { need: 'test this skill from a scratch copy (mutation testing, sandboxing)', targets: [{ label: 'references/sandboxed-testing.md', path: 'references/sandboxed-testing.md' }] },
44
+ { need: 'turn issues into scheduled units — the decomposition, design and scope gates', targets: [{ label: 'references/intake.md', path: 'references/intake.md' }] },
45
+ { need: 'run a unit through produce -> review ∥ CI -> fix, and record each round', targets: [{ label: 'references/loop.md', path: 'references/loop.md' }] },
46
+ { need: 'scope a component and decide what ships together', targets: [{ label: 'references/deliverables.md', path: 'references/deliverables.md' }] },
47
+ { need: 'gate CI on the exact reviewed head', targets: [{ label: 'references/exact-head-ci.md', path: 'references/exact-head-ci.md' }] },
48
+ { need: 'record the pre-flight answers, settle autonomy, prepare the checkout', targets: [{ label: 'references/pre-flight-recording-and-checkout.md', path: 'references/pre-flight-recording-and-checkout.md' }] },
49
+ ]
50
+ // Match on the need text and on the destination paths, because a caller knows either "what I am
51
+ // trying to do" or "the file I half-remember". Ranked, not filtered: an empty result is a worse
52
+ // answer than a weak one, so a query that matches nothing falls back to the full list.
53
+ export function guideLookup(query) {
54
+ const q = String(query ?? '').toLowerCase().trim()
55
+ if (!q) return { query: '', matches: GUIDE }
56
+ const terms = q.split(/\s+/).filter(Boolean)
57
+ const scored = GUIDE.map((row) => {
58
+ const hay = (row.need + ' ' + row.targets.map((t) => `${t.label} ${t.path}`).join(' ')).toLowerCase()
59
+ return { row, score: terms.reduce((n, t) => n + (hay.includes(t) ? 1 : 0), 0) }
60
+ }).filter((s) => s.score > 0).sort((a, b) => b.score - a.score)
61
+ return { query: q, matches: scored.map((s) => s.row), fellBack: scored.length === 0 }
62
+ }
63
+
64
+ export function renderGuide(result) {
65
+ const out = []
66
+ if (result.fellBack) out.push(`no row matches ${JSON.stringify(result.query)} — showing all ${GUIDE.length}:`, '')
67
+ const rows = result.fellBack ? GUIDE : result.matches
68
+ for (const row of rows) {
69
+ out.push(` ${row.need}`)
70
+ for (const t of row.targets) out.push(` ${t.path}`)
71
+ }
72
+ return out.join('\n')
73
+ }
@@ -0,0 +1,159 @@
1
+ // head-check-set — ask the SET question about a head SHA, not the NAME question.
2
+ //
3
+ // node head-check-set.mjs collect --repository owner/name --head <40-sha>
4
+ // [--plan required-check-plan.json]
5
+ // [--out head-check-set.json] [--markdown] [--strict]
6
+ // node head-check-set.mjs report <head-check-set.json>
7
+ // node head-check-set.mjs validate <head-check-set.json> --head <40-sha>
8
+ //
9
+ // The classification is pure and lives in engineering-runtime/head-check-set.mjs, which
10
+ // carries the incident (#1081) and the reason all three channels are read. This file is
11
+ // only the `gh` boundary and the CLI around it.
12
+ //
13
+ // EXIT CODES, and the line this tool does not cross. `collect` exits 1 when a REQUIRED
14
+ // check is red or never ran — the state the existing merge-admission contract already
15
+ // blocks on — and 0 otherwise, INCLUDING when an undeclared check is red. That is
16
+ // deliberate and is acceptance criterion 4 of #1082: whether a non-required red check
17
+ // should stop a merge is a policy decision belonging to the human and to `.mergify.yml`,
18
+ // and a reporting script that silently changed what merges would be a worse defect than
19
+ // the one it fixes. `--strict` opts in to exiting 1 on undeclared red; it is off by
20
+ // default and nothing in the loop passes it.
21
+ //
22
+ // The plan is OPTIONAL. Without one, nothing is required: the report degrades to a pure
23
+ // observation of the SHA rather than pretending every red is undeclared, and `collect`
24
+ // can then only exit 0 or 2.
25
+
26
+ import fs from 'node:fs'
27
+ import { execFileSync } from 'node:child_process'
28
+ import { isMainModule } from '../../engineering-runtime/scripts/main-module.mjs'
29
+ import {
30
+ blocksOnRequiredSet,
31
+ classifyHeadCheckSet,
32
+ renderHeadCheckSet,
33
+ validateHeadCheckSetArtifact,
34
+ } from '../../engineering-runtime/scripts/head-check-set.mjs'
35
+
36
+ export { blocksOnRequiredSet, classifyHeadCheckSet, renderHeadCheckSet, validateHeadCheckSetArtifact }
37
+
38
+ const nonEmpty = (value) => typeof value === 'string' && value.trim().length > 0
39
+ const SHA = /^[0-9a-f]{40}$/i
40
+
41
+ const DEFAULT_BOUNDARY = Object.freeze({
42
+ ghJson(args) {
43
+ const text = execFileSync('gh', args, { encoding: 'utf8', maxBuffer: 32 * 1024 * 1024 }).trim()
44
+ return text ? JSON.parse(text) : null
45
+ },
46
+ })
47
+
48
+ /**
49
+ * The three channels, read at one SHA.
50
+ *
51
+ * Each is a separate call because each is a separate GitHub concept, and the third is
52
+ * the only one where a workflow GitHub refused to parse leaves a trace — it produces no
53
+ * check-run to be red. Job counts cost one call per run and are what make that trace
54
+ * nameable rather than merely red.
55
+ */
56
+ export function collectHeadCheckSet({ repository, headSha, plan = null, now }, boundary = DEFAULT_BOUNDARY) {
57
+ const api = (path) => boundary.ghJson(['api', `repos/${repository}/${path}`])
58
+ const slurped = (path, key) => {
59
+ const pages = boundary.ghJson(['api', '--paginate', '--slurp', `repos/${repository}/${path}`]) || []
60
+ return pages.flatMap((page) => page?.[key] || [])
61
+ }
62
+ const checkRuns = slurped(`commits/${headSha}/check-runs?per_page=100`, 'check_runs')
63
+ const statuses = api(`commits/${headSha}/status?per_page=100`)?.statuses || []
64
+ const actionsRuns = slurped(`actions/runs?head_sha=${headSha}&per_page=100`, 'workflow_runs').map((run) => {
65
+ // `total_count` on the jobs endpoint, not the length of a page: a run with zero jobs
66
+ // and a run whose first page we failed to read must not both read as zero.
67
+ let jobCount = null
68
+ try {
69
+ const jobs = api(`actions/runs/${run.id}/jobs?per_page=1`)
70
+ if (Number.isInteger(jobs?.total_count)) jobCount = jobs.total_count
71
+ } catch {
72
+ jobCount = null
73
+ }
74
+ return { ...run, jobCount }
75
+ })
76
+ return classifyHeadCheckSet({
77
+ repository,
78
+ headSha,
79
+ checkRuns,
80
+ statuses,
81
+ actionsRuns,
82
+ plan,
83
+ ...(now ? { collectedAt: now } : {}),
84
+ })
85
+ }
86
+
87
+ function parseArgs(argv) {
88
+ const options = {}
89
+ const positional = []
90
+ for (let index = 0; index < argv.length; index += 1) {
91
+ const arg = argv[index]
92
+ if (arg === '--repository') options.repository = argv[++index]
93
+ else if (arg === '--head') options.headSha = argv[++index]
94
+ else if (arg === '--plan') options.plan = argv[++index]
95
+ else if (arg === '--out' || arg === '-o') options.out = argv[++index]
96
+ else if (arg === '--markdown') options.markdown = true
97
+ else if (arg === '--strict') options.strict = true
98
+ else if (arg === '--help' || arg === '-h') options.help = true
99
+ else if (arg.startsWith('--')) throw new Error(`unknown argument ${arg}`)
100
+ else positional.push(arg)
101
+ }
102
+ return { command: positional[0], file: positional[1], options }
103
+ }
104
+
105
+ const USAGE = 'usage: head-check-set collect --repository owner/name --head <40-sha> [--plan plan.json] [--out out.json] [--markdown] [--strict]'
106
+ + ' | report <artifact.json> | validate <artifact.json> --head <40-sha>'
107
+
108
+ export function runCli(argv, boundary = DEFAULT_BOUNDARY) {
109
+ let parsed
110
+ try { parsed = parseArgs(argv) } catch (error) { console.error(`head-check-set: ${error.message}`); return 2 }
111
+ const { command, file, options } = parsed
112
+ if (options.help || command === 'help' || command === undefined) { console.log(USAGE); return options.help || command === 'help' ? 0 : 2 }
113
+
114
+ if (command === 'collect') {
115
+ if (!nonEmpty(options.repository) || !/^[^/\s]+\/[^/\s]+$/.test(options.repository)) { console.error('head-check-set collect requires --repository owner/name'); return 2 }
116
+ if (!nonEmpty(options.headSha) || !SHA.test(options.headSha)) { console.error('head-check-set collect requires --head <full 40-character commit SHA>'); return 2 }
117
+ let plan = null
118
+ try {
119
+ if (options.plan) plan = JSON.parse(fs.readFileSync(options.plan, 'utf8'))
120
+ } catch (error) { console.error(`head-check-set: ${String(error.message || error)}`); return 2 }
121
+ let artifact
122
+ try {
123
+ artifact = collectHeadCheckSet({ repository: options.repository, headSha: options.headSha, plan }, boundary)
124
+ } catch (error) { console.error(`head-check-set: ${String(error.message || error)}`); return 2 }
125
+ const rendered = options.markdown ? renderHeadCheckSet(artifact) : `${JSON.stringify(artifact, null, 2)}\n`
126
+ if (options.out) fs.writeFileSync(options.out, rendered.endsWith('\n') ? rendered : `${rendered}\n`)
127
+ else console.log(rendered.replace(/\n$/, ''))
128
+ // Reported on stderr so that stdout stays exactly the artifact a pipe consumes.
129
+ console.error(`head-check-set: ${artifact.summary.outcome} at ${artifact.headSha} — ${artifact.summary.counts.requiredRed} required red, ${artifact.summary.counts.undeclaredRed} undeclared red, ${artifact.summary.counts.neverRan} never ran, ${artifact.summary.counts.startupFailures} zero-job workflow run(s)`)
130
+ for (const failure of artifact.signatures.startupFailures) {
131
+ console.error(`head-check-set: run ${failure.runId} "${failure.name}" completed ${failure.conclusion} having executed ZERO jobs${failure.nameEqualsPath ? ' — its name equals its file path, corroborating a workflow GitHub refused to parse' : ''}`)
132
+ }
133
+ for (const entry of artifact.partition.undeclaredRed) {
134
+ console.error(`head-check-set: UNDECLARED RED (not required, not gated here): ${entry.name} [${entry.source}] ${entry.conclusion ?? entry.status}`)
135
+ }
136
+ if (blocksOnRequiredSet(artifact)) return 1
137
+ return options.strict && artifact.partition.undeclaredRed.length ? 1 : 0
138
+ }
139
+
140
+ if (command === 'report') {
141
+ if (!file) { console.error('head-check-set report <artifact.json>'); return 2 }
142
+ console.log(renderHeadCheckSet(JSON.parse(fs.readFileSync(file, 'utf8'))))
143
+ return 0
144
+ }
145
+
146
+ if (command === 'validate') {
147
+ if (!file || !nonEmpty(options.headSha)) { console.error('head-check-set validate <artifact.json> --head <40-sha>'); return 2 }
148
+ const artifact = JSON.parse(fs.readFileSync(file, 'utf8'))
149
+ const verdict = validateHeadCheckSetArtifact(artifact, { expectedHeadSha: options.headSha })
150
+ if (verdict.ok) console.log(`head-check-set: valid ${artifact.summary.outcome} artifact at ${options.headSha}`)
151
+ else verdict.errors.forEach((error) => console.error(`error: ${error}`))
152
+ return verdict.ok ? 0 : 1
153
+ }
154
+
155
+ console.error(USAGE)
156
+ return 2
157
+ }
158
+
159
+ if (isMainModule(import.meta.url)) process.exit(runCli(process.argv.slice(2)))