stageflow 0.25.0 → 0.30.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 (681) hide show
  1. package/README.md +14 -3
  2. package/builtin-skills/browser/SKILL.md +42 -0
  3. package/dist/a2a/contracts.d.ts +1 -0
  4. package/dist/a2a/contracts.js +1 -0
  5. package/dist/a2a/registry.d.ts +2 -0
  6. package/dist/a2a/registry.js +20 -1
  7. package/dist/a2a/server.d.ts +7 -0
  8. package/dist/a2a/server.js +5 -2
  9. package/dist/a2a/service.d.ts +1 -1
  10. package/dist/a2a/service.js +57 -8
  11. package/dist/a2a/store.d.ts +8 -5
  12. package/dist/a2a/store.js +24 -67
  13. package/dist/agent/activity.d.ts +3 -0
  14. package/dist/agent/bootProviderConfig.d.ts +21 -0
  15. package/dist/agent/bootProviderConfig.js +74 -0
  16. package/dist/agent/claudeAdapter.js +2 -2
  17. package/dist/agent/cursorProvider.d.ts +2 -0
  18. package/dist/agent/cursorProvider.js +30 -5
  19. package/dist/agent/fakeAgent.d.ts +1 -0
  20. package/dist/agent/fakeAgent.js +13 -0
  21. package/dist/agent/piAdapter.d.ts +11 -24
  22. package/dist/agent/piAdapter.js +107 -50
  23. package/dist/agent/piIsolatedMcp.d.ts +2 -0
  24. package/dist/agent/piIsolatedMcp.js +10 -2
  25. package/dist/agent/piSessionFactory.d.ts +38 -0
  26. package/dist/agent/piSessionFactory.js +60 -0
  27. package/dist/agent/port.d.ts +8 -0
  28. package/dist/agent/streamLogRedact.d.ts +7 -1
  29. package/dist/agent/streamLogRedact.js +26 -11
  30. package/dist/browser/anchor.d.ts +27 -0
  31. package/dist/browser/anchor.js +127 -0
  32. package/dist/browser/auditSink.d.ts +38 -0
  33. package/dist/browser/auditSink.js +34 -0
  34. package/dist/browser/browserHost.d.ts +86 -0
  35. package/dist/browser/browserHost.js +7 -0
  36. package/dist/browser/browserSweep.d.ts +14 -0
  37. package/dist/browser/browserSweep.js +54 -0
  38. package/dist/browser/browserTeardown.d.ts +56 -0
  39. package/dist/browser/browserTeardown.js +235 -0
  40. package/dist/browser/fakeRemoteBrowserHost.d.ts +2 -0
  41. package/dist/browser/fakeRemoteBrowserHost.js +34 -0
  42. package/dist/browser/gateHandoff.d.ts +25 -0
  43. package/dist/browser/gateHandoff.js +83 -0
  44. package/dist/browser/humanLogin.d.ts +18 -0
  45. package/dist/browser/humanLogin.js +34 -0
  46. package/dist/browser/keyProvider.d.ts +10 -0
  47. package/dist/browser/keyProvider.js +39 -0
  48. package/dist/browser/localBrowserHost.d.ts +10 -0
  49. package/dist/browser/localBrowserHost.js +152 -0
  50. package/dist/browser/localProfileLock.d.ts +2 -0
  51. package/dist/browser/localProfileLock.js +218 -0
  52. package/dist/browser/localProfileStore.d.ts +5 -0
  53. package/dist/browser/localProfileStore.js +91 -0
  54. package/dist/browser/loginCheck.d.ts +53 -0
  55. package/dist/browser/loginCheck.js +147 -0
  56. package/dist/browser/memoryProfileLock.d.ts +2 -0
  57. package/dist/browser/memoryProfileLock.js +53 -0
  58. package/dist/browser/memoryProfileStore.d.ts +2 -0
  59. package/dist/browser/memoryProfileStore.js +31 -0
  60. package/dist/browser/navigationAudit.d.ts +16 -0
  61. package/dist/browser/navigationAudit.js +53 -0
  62. package/dist/browser/persistedEnv.d.ts +3 -0
  63. package/dist/browser/persistedEnv.js +15 -0
  64. package/dist/browser/profileLock.d.ts +40 -0
  65. package/dist/browser/profileLock.js +10 -0
  66. package/dist/browser/profileStore.d.ts +23 -0
  67. package/dist/browser/profileStore.js +39 -0
  68. package/dist/browser/runLiveness.d.ts +13 -0
  69. package/dist/browser/runLiveness.js +39 -0
  70. package/dist/browser/sitePolicy.d.ts +10 -0
  71. package/dist/browser/sitePolicy.js +61 -0
  72. package/dist/browser/stageBrowserEnv.d.ts +22 -0
  73. package/dist/browser/stageBrowserEnv.js +147 -0
  74. package/dist/browser/stageProfileLock.d.ts +17 -0
  75. package/dist/browser/stageProfileLock.js +39 -0
  76. package/dist/cli/artifactCommand.js +9 -16
  77. package/dist/cli/backupCommand.d.ts +9 -0
  78. package/dist/cli/backupCommand.js +111 -0
  79. package/dist/cli/browserCommand.d.ts +44 -0
  80. package/dist/cli/browserCommand.js +472 -0
  81. package/dist/cli/debugRunCommand.d.ts +10 -0
  82. package/dist/cli/debugRunCommand.js +109 -0
  83. package/dist/cli/doctorCommand.d.ts +32 -0
  84. package/dist/cli/doctorCommand.js +453 -0
  85. package/dist/cli/envelopeCommand.js +9 -2
  86. package/dist/cli/exportAllCommand.d.ts +55 -0
  87. package/dist/cli/exportAllCommand.js +218 -0
  88. package/dist/cli/exportRunCommand.js +23 -21
  89. package/dist/cli/hostClient.d.ts +41 -3
  90. package/dist/cli/hostClient.js +129 -14
  91. package/dist/cli/initCommand.d.ts +1 -0
  92. package/dist/cli/initCommand.js +23 -7
  93. package/dist/cli/initTemplates.d.ts +5 -2
  94. package/dist/cli/initTemplates.js +32 -2
  95. package/dist/cli/resolveSafeOutPath.d.ts +2 -0
  96. package/dist/cli/resolveSafeOutPath.js +40 -0
  97. package/dist/cli/restoreCommand.d.ts +10 -0
  98. package/dist/cli/restoreCommand.js +90 -0
  99. package/dist/cli/runCommand.d.ts +3 -2
  100. package/dist/cli/runCommand.js +93 -11
  101. package/dist/cli/runOutput.d.ts +4 -0
  102. package/dist/cli/runOutput.js +33 -7
  103. package/dist/cli/runStageCommand.d.ts +1 -0
  104. package/dist/cli/runStageCommand.js +44 -25
  105. package/dist/cli/runsCommand.d.ts +1 -1
  106. package/dist/cli/runsCommand.js +168 -10
  107. package/dist/cli/triggerCommand.d.ts +12 -0
  108. package/dist/cli/triggerCommand.js +183 -0
  109. package/dist/cli/validateCommand.d.ts +1 -1
  110. package/dist/cli/validateCommand.js +23 -6
  111. package/dist/cli.js +202 -32
  112. package/dist/config/browseCatalog.d.ts +1 -0
  113. package/dist/config/browseCatalog.js +5 -4
  114. package/dist/config/builtinSkills.d.ts +4 -0
  115. package/dist/config/builtinSkills.js +23 -0
  116. package/dist/config/catalogRelativePath.d.ts +63 -0
  117. package/dist/config/catalogRelativePath.js +126 -0
  118. package/dist/config/configOrigin.d.ts +27 -0
  119. package/dist/config/configOrigin.js +59 -0
  120. package/dist/config/createTrigger.d.ts +27 -0
  121. package/dist/config/createTrigger.js +232 -0
  122. package/dist/config/draftPackage.d.ts +117 -0
  123. package/dist/config/draftPackage.js +550 -0
  124. package/dist/config/ensureCatalogScanRoot.d.ts +16 -0
  125. package/dist/config/ensureCatalogScanRoot.js +73 -0
  126. package/dist/config/hostConfig.d.ts +57 -0
  127. package/dist/config/hostConfig.js +360 -0
  128. package/dist/config/listSkills.d.ts +26 -0
  129. package/dist/config/listSkills.js +206 -5
  130. package/dist/config/loadOutcome.d.ts +7 -1
  131. package/dist/config/loadPipeline.js +39 -2
  132. package/dist/config/loadStage.js +25 -0
  133. package/dist/config/loadStageflowManifest.js +25 -0
  134. package/dist/config/loadTask.d.ts +2 -0
  135. package/dist/config/loadTask.js +57 -18
  136. package/dist/config/loadTrigger.d.ts +9 -0
  137. package/dist/config/loadTrigger.js +120 -0
  138. package/dist/config/materializeStageModels.js +5 -1
  139. package/dist/config/mergePipelineIncludes.d.ts +3 -0
  140. package/dist/config/mergePipelineIncludes.js +19 -0
  141. package/dist/config/migrateYaml.js +6 -11
  142. package/dist/config/multiProjectCatalog.d.ts +32 -0
  143. package/dist/config/multiProjectCatalog.js +150 -0
  144. package/dist/config/normalizePipelineStageEntry.js +27 -1
  145. package/dist/config/parseCompletionContract.js +6 -0
  146. package/dist/config/pipelineStageKeys.js +3 -0
  147. package/dist/config/publishDraftPackage.d.ts +7 -0
  148. package/dist/config/publishDraftPackage.js +25 -0
  149. package/dist/config/resolveCatalogContext.js +1 -1
  150. package/dist/config/resolveCatalogRoots.d.ts +27 -0
  151. package/dist/config/resolveCatalogRoots.js +76 -0
  152. package/dist/config/resolveModel.d.ts +7 -1
  153. package/dist/config/resolveModel.js +11 -1
  154. package/dist/config/resolvePipelineDag.js +1 -1
  155. package/dist/config/resolveStageMcpServers.d.ts +9 -1
  156. package/dist/config/resolveStageMcpServers.js +36 -9
  157. package/dist/config/scanCatalogPaths.d.ts +1 -1
  158. package/dist/config/scanCatalogPaths.js +6 -2
  159. package/dist/config/secretFromEnvOrFile.d.ts +9 -0
  160. package/dist/config/secretFromEnvOrFile.js +34 -0
  161. package/dist/config/seededCatalog.d.ts +11 -0
  162. package/dist/config/seededCatalog.js +29 -0
  163. package/dist/config/stageBrowser.d.ts +12 -0
  164. package/dist/config/stageBrowser.js +118 -0
  165. package/dist/config/toolRequires.d.ts +24 -0
  166. package/dist/config/toolRequires.js +115 -0
  167. package/dist/config/triggerCatalog.d.ts +10 -0
  168. package/dist/config/triggerCatalog.js +37 -0
  169. package/dist/config/validateCatalog.d.ts +17 -3
  170. package/dist/config/validateCatalog.js +223 -3
  171. package/dist/config/validateCompletionContract.js +8 -0
  172. package/dist/diagnostics/checks.d.ts +39 -0
  173. package/dist/diagnostics/checks.js +135 -0
  174. package/dist/envelope/preEmitChecks.d.ts +1 -1
  175. package/dist/envelope/preEmitChecks.js +8 -0
  176. package/dist/errors/codes.d.ts +14 -0
  177. package/dist/errors/codes.js +59 -0
  178. package/dist/git/cache.d.ts +14 -0
  179. package/dist/git/cache.js +150 -0
  180. package/dist/git/credentials.d.ts +9 -0
  181. package/dist/git/credentials.js +88 -0
  182. package/dist/git/errors.d.ts +20 -0
  183. package/dist/git/errors.js +94 -0
  184. package/dist/git/exec.d.ts +16 -0
  185. package/dist/git/exec.js +135 -0
  186. package/dist/git/operations.d.ts +29 -0
  187. package/dist/git/operations.js +153 -0
  188. package/dist/git/version.d.ts +1 -0
  189. package/dist/git/version.js +10 -0
  190. package/dist/logging/audit.d.ts +16 -0
  191. package/dist/logging/audit.js +19 -0
  192. package/dist/logging/commonWords.d.ts +2 -0
  193. package/dist/logging/commonWords.js +13 -0
  194. package/dist/logging/logger.d.ts +49 -0
  195. package/dist/logging/logger.js +193 -0
  196. package/dist/logging/namedSecrets.d.ts +6 -0
  197. package/dist/logging/namedSecrets.js +58 -0
  198. package/dist/logging/redact.d.ts +17 -0
  199. package/dist/logging/redact.js +105 -0
  200. package/dist/mcp/catalogTools.js +492 -81
  201. package/dist/mcp/checkoutTools.d.ts +52 -0
  202. package/dist/mcp/checkoutTools.js +332 -0
  203. package/dist/mcp/controlTools.js +182 -6
  204. package/dist/mcp/deps.d.ts +3 -0
  205. package/dist/mcp/getStartedTool.d.ts +3 -0
  206. package/dist/mcp/getStartedTool.js +62 -0
  207. package/dist/mcp/readArtifact.d.ts +11 -0
  208. package/dist/mcp/readArtifact.js +46 -30
  209. package/dist/mcp/server.js +2 -0
  210. package/dist/mcp/tools.js +6 -0
  211. package/dist/mcp/triggerTools.d.ts +3 -0
  212. package/dist/mcp/triggerTools.js +176 -0
  213. package/dist/net/proxy.d.ts +14 -0
  214. package/dist/net/proxy.js +78 -0
  215. package/dist/operatorAgent/docsRetrieval.d.ts +40 -0
  216. package/dist/operatorAgent/docsRetrieval.js +269 -0
  217. package/dist/operatorAgent/draftContext.d.ts +16 -0
  218. package/dist/operatorAgent/draftContext.js +68 -0
  219. package/dist/operatorAgent/fakeHost.d.ts +39 -0
  220. package/dist/operatorAgent/fakeHost.js +92 -0
  221. package/dist/operatorAgent/host.d.ts +40 -0
  222. package/dist/operatorAgent/host.js +179 -0
  223. package/dist/operatorAgent/index.d.ts +9 -0
  224. package/dist/operatorAgent/index.js +8 -0
  225. package/dist/operatorAgent/piModel.d.ts +80 -0
  226. package/dist/operatorAgent/piModel.js +528 -0
  227. package/dist/operatorAgent/profiles/workshopAuthor.d.ts +23 -0
  228. package/dist/operatorAgent/profiles/workshopAuthor.js +338 -0
  229. package/dist/operatorAgent/profiles/workshopAuthorPlaybook.d.ts +6 -0
  230. package/dist/operatorAgent/profiles/workshopAuthorPlaybook.js +103 -0
  231. package/dist/operatorAgent/profiles/workshopAuthorTools.d.ts +57 -0
  232. package/dist/operatorAgent/profiles/workshopAuthorTools.js +623 -0
  233. package/dist/operatorAgent/proposals.d.ts +32 -0
  234. package/dist/operatorAgent/proposals.js +144 -0
  235. package/dist/operatorAgent/types.d.ts +128 -0
  236. package/dist/operatorAgent/types.js +1 -0
  237. package/dist/package-meta.d.ts +2 -1
  238. package/dist/package-meta.js +2 -1
  239. package/dist/preflight/bash.d.ts +8 -0
  240. package/dist/preflight/bash.js +34 -0
  241. package/dist/preflight/claudeRoot.d.ts +11 -0
  242. package/dist/preflight/claudeRoot.js +23 -0
  243. package/dist/preflight/mcpCommands.d.ts +8 -0
  244. package/dist/preflight/mcpCommands.js +36 -0
  245. package/dist/preflight/pipelinePreflight.d.ts +40 -0
  246. package/dist/preflight/pipelinePreflight.js +192 -0
  247. package/dist/preflight/tls.d.ts +6 -0
  248. package/dist/preflight/tls.js +18 -0
  249. package/dist/preflight/toolchain.d.ts +45 -0
  250. package/dist/preflight/toolchain.js +219 -0
  251. package/dist/project/findManifestRoot.d.ts +3 -0
  252. package/dist/project/findManifestRoot.js +35 -0
  253. package/dist/project/findProjectRoot.js +3 -4
  254. package/dist/project/globalHome.d.ts +7 -0
  255. package/dist/project/globalHome.js +63 -2
  256. package/dist/project/resolveProjectContext.js +2 -2
  257. package/dist/project/resolveStageflowContext.d.ts +7 -0
  258. package/dist/project/resolveStageflowContext.js +46 -30
  259. package/dist/projection/projectRun.d.ts +2 -1
  260. package/dist/projection/projectRun.js +1 -0
  261. package/dist/runstore/assertTmpdir.d.ts +1 -0
  262. package/dist/runstore/assertTmpdir.js +25 -0
  263. package/dist/runstore/backup.d.ts +52 -0
  264. package/dist/runstore/backup.js +292 -0
  265. package/dist/runstore/createStore.d.ts +18 -1
  266. package/dist/runstore/createStore.js +64 -5
  267. package/dist/runstore/debugBundle.d.ts +60 -0
  268. package/dist/runstore/debugBundle.js +143 -0
  269. package/dist/runstore/diskUsage.d.ts +50 -0
  270. package/dist/runstore/diskUsage.js +214 -0
  271. package/dist/runstore/exportRunPayload.d.ts +8 -0
  272. package/dist/runstore/exportRunPayload.js +23 -0
  273. package/dist/runstore/normalizeCatalogPath.d.ts +1 -0
  274. package/dist/runstore/normalizeCatalogPath.js +10 -0
  275. package/dist/runstore/paths.d.ts +5 -0
  276. package/dist/runstore/paths.js +145 -1
  277. package/dist/runstore/port.d.ts +139 -13
  278. package/dist/runstore/port.js +8 -1
  279. package/dist/runstore/restore.d.ts +81 -0
  280. package/dist/runstore/restore.js +355 -0
  281. package/dist/runstore/retention.d.ts +27 -0
  282. package/dist/runstore/retention.js +74 -0
  283. package/dist/runstore/runManifest.d.ts +146 -0
  284. package/dist/runstore/runManifest.js +288 -0
  285. package/dist/runstore/runProjection.d.ts +3 -1
  286. package/dist/runstore/runProjection.js +63 -1
  287. package/dist/runstore/sqlite/SqliteRunStore.d.ts +35 -3
  288. package/dist/runstore/sqlite/SqliteRunStore.js +442 -219
  289. package/dist/runstore/sqlite/applyStorePragmas.d.ts +39 -0
  290. package/dist/runstore/sqlite/applyStorePragmas.js +145 -0
  291. package/dist/runstore/sqlite/migrations/001-baseline.d.ts +7 -0
  292. package/dist/runstore/sqlite/migrations/001-baseline.js +10 -0
  293. package/dist/runstore/sqlite/migrations/002-repository-binding.d.ts +7 -0
  294. package/dist/runstore/sqlite/migrations/002-repository-binding.js +29 -0
  295. package/dist/runstore/sqlite/migrations/003-run-lifecycle.d.ts +7 -0
  296. package/dist/runstore/sqlite/migrations/003-run-lifecycle.js +28 -0
  297. package/dist/runstore/sqlite/migrations/004-auto-resume-count.d.ts +7 -0
  298. package/dist/runstore/sqlite/migrations/004-auto-resume-count.js +19 -0
  299. package/dist/runstore/sqlite/migrations/005-config-origins.d.ts +7 -0
  300. package/dist/runstore/sqlite/migrations/005-config-origins.js +19 -0
  301. package/dist/runstore/sqlite/migrations/006-pipeline-body-and-caller.d.ts +7 -0
  302. package/dist/runstore/sqlite/migrations/006-pipeline-body-and-caller.js +28 -0
  303. package/dist/runstore/sqlite/migrations/007-projects-registry.d.ts +7 -0
  304. package/dist/runstore/sqlite/migrations/007-projects-registry.js +31 -0
  305. package/dist/runstore/sqlite/migrations/008-triggers-table.d.ts +7 -0
  306. package/dist/runstore/sqlite/migrations/008-triggers-table.js +19 -0
  307. package/dist/runstore/sqlite/migrations/009-trigger-next-run.d.ts +7 -0
  308. package/dist/runstore/sqlite/migrations/009-trigger-next-run.js +19 -0
  309. package/dist/runstore/sqlite/migrations/010-trigger-adapter-state.d.ts +7 -0
  310. package/dist/runstore/sqlite/migrations/010-trigger-adapter-state.js +17 -0
  311. package/dist/runstore/sqlite/migrations/index.d.ts +21 -0
  312. package/dist/runstore/sqlite/migrations/index.js +78 -0
  313. package/dist/runstore/sqlite/schema.d.ts +20 -1
  314. package/dist/runstore/sqlite/schema.js +277 -1
  315. package/dist/runstore/sqlite/storeOpenError.d.ts +6 -0
  316. package/dist/runstore/sqlite/storeOpenError.js +11 -0
  317. package/dist/runstore/sqlite/storeSchemaError.d.ts +5 -0
  318. package/dist/runstore/sqlite/storeSchemaError.js +8 -0
  319. package/dist/runstore/stageExecution.js +3 -0
  320. package/dist/runstore/storeFilesystem.d.ts +32 -0
  321. package/dist/runstore/storeFilesystem.js +148 -0
  322. package/dist/runstore/trackProjection.js +2 -0
  323. package/dist/runstore/workspaceLayout.d.ts +13 -0
  324. package/dist/runstore/workspaceLayout.js +76 -0
  325. package/dist/runtime/answerResume.d.ts +1 -0
  326. package/dist/runtime/answerResume.js +3 -1
  327. package/dist/runtime/completionCheckRunner.d.ts +15 -1
  328. package/dist/runtime/completionCheckRunner.js +67 -7
  329. package/dist/runtime/containerLimits.d.ts +16 -0
  330. package/dist/runtime/containerLimits.js +84 -0
  331. package/dist/runtime/credentialBinding.d.ts +2 -0
  332. package/dist/runtime/credentialBinding.js +3 -0
  333. package/dist/runtime/credentialMaterialisation.d.ts +28 -0
  334. package/dist/runtime/credentialMaterialisation.js +128 -0
  335. package/dist/runtime/emailSource.d.ts +72 -0
  336. package/dist/runtime/emailSource.js +304 -0
  337. package/dist/runtime/gitCheckoutCapability.js +7 -13
  338. package/dist/runtime/githubPollSource.d.ts +86 -0
  339. package/dist/runtime/githubPollSource.js +284 -0
  340. package/dist/runtime/pipelineRunner.d.ts +40 -1
  341. package/dist/runtime/pipelineRunner.js +181 -17
  342. package/dist/runtime/pipelineScheduler.d.ts +17 -0
  343. package/dist/runtime/pipelineScheduler.js +220 -28
  344. package/dist/runtime/reloadRunCatalog.js +6 -1
  345. package/dist/runtime/repositoryMaterialize.d.ts +47 -0
  346. package/dist/runtime/repositoryMaterialize.js +235 -0
  347. package/dist/runtime/resumeTimedOut.d.ts +1 -1
  348. package/dist/runtime/resumeTimedOut.js +5 -2
  349. package/dist/runtime/runChangeBus.js +9 -0
  350. package/dist/runtime/runDeletion.d.ts +7 -0
  351. package/dist/runtime/runDeletion.js +37 -0
  352. package/dist/runtime/runManager.d.ts +169 -4
  353. package/dist/runtime/runManager.js +1748 -83
  354. package/dist/runtime/runRetentionSweep.d.ts +31 -0
  355. package/dist/runtime/runRetentionSweep.js +328 -0
  356. package/dist/runtime/runRetryCoordinator.d.ts +4 -0
  357. package/dist/runtime/runRetryCoordinator.js +20 -2
  358. package/dist/runtime/runSkills.d.ts +40 -0
  359. package/dist/runtime/runSkills.js +173 -0
  360. package/dist/runtime/scheduleSource.d.ts +38 -0
  361. package/dist/runtime/scheduleSource.js +119 -0
  362. package/dist/runtime/settingsFile.d.ts +5 -0
  363. package/dist/runtime/settingsFile.js +61 -54
  364. package/dist/runtime/stageAttemptBootstrap.d.ts +5 -1
  365. package/dist/runtime/stageAttemptBootstrap.js +250 -27
  366. package/dist/runtime/stageCacheEnv.d.ts +6 -0
  367. package/dist/runtime/stageCacheEnv.js +34 -0
  368. package/dist/runtime/stageConcurrency.d.ts +2 -1
  369. package/dist/runtime/stageConcurrency.js +4 -2
  370. package/dist/runtime/stageEnvironment.d.ts +38 -0
  371. package/dist/runtime/stageEnvironment.js +194 -0
  372. package/dist/runtime/stageHitl.d.ts +1 -0
  373. package/dist/runtime/stageHitl.js +5 -1
  374. package/dist/runtime/stageProcessLauncher.d.ts +20 -0
  375. package/dist/runtime/stageProcessLauncher.js +236 -41
  376. package/dist/runtime/stageRecovery.d.ts +3 -1
  377. package/dist/runtime/stageRecovery.js +19 -4
  378. package/dist/runtime/stageRoots.d.ts +38 -1
  379. package/dist/runtime/stageRoots.js +118 -0
  380. package/dist/runtime/stageRunner.d.ts +6 -0
  381. package/dist/runtime/stageRunner.js +32 -6
  382. package/dist/runtime/stageSecretDecl.d.ts +9 -0
  383. package/dist/runtime/stageSecretDecl.js +102 -0
  384. package/dist/runtime/stageSecrets.d.ts +40 -0
  385. package/dist/runtime/stageSecrets.js +181 -0
  386. package/dist/runtime/stageStreamLog.d.ts +1 -0
  387. package/dist/runtime/stageStreamLog.js +2 -1
  388. package/dist/runtime/stageWorker.d.ts +3 -2
  389. package/dist/runtime/stageWorker.js +58 -10
  390. package/dist/runtime/stageWorkerProtocol.d.ts +5 -0
  391. package/dist/runtime/stageWorkerProtocol.js +8 -0
  392. package/dist/runtime/startPayload.d.ts +32 -0
  393. package/dist/runtime/startPayload.js +59 -0
  394. package/dist/runtime/taskInput.js +14 -5
  395. package/dist/runtime/triggerCatalog.d.ts +6 -0
  396. package/dist/runtime/triggerCatalog.js +24 -0
  397. package/dist/runtime/triggerEventMatch.d.ts +2 -0
  398. package/dist/runtime/triggerEventMatch.js +6 -0
  399. package/dist/runtime/triggerPort.d.ts +14 -0
  400. package/dist/runtime/triggerPort.js +1 -0
  401. package/dist/runtime/triggerRunner.d.ts +17 -0
  402. package/dist/runtime/triggerRunner.js +89 -0
  403. package/dist/runtime/verifiedStageExecution.d.ts +8 -0
  404. package/dist/runtime/verifiedStageExecution.js +16 -1
  405. package/dist/runtime/webhookSignature.d.ts +1 -0
  406. package/dist/runtime/webhookSignature.js +12 -0
  407. package/dist/runtime/workspaceBinding.d.ts +20 -0
  408. package/dist/runtime/workspaceBinding.js +60 -0
  409. package/dist/server/allowedHosts.d.ts +19 -0
  410. package/dist/server/allowedHosts.js +179 -0
  411. package/dist/server/bootstrap.d.ts +42 -2
  412. package/dist/server/bootstrap.js +273 -5
  413. package/dist/server/controlToken.d.ts +47 -0
  414. package/dist/server/controlToken.js +254 -0
  415. package/dist/server/createHttpHost.d.ts +11 -2
  416. package/dist/server/createHttpHost.js +106 -10
  417. package/dist/server/ensureGlobalService.d.ts +5 -1
  418. package/dist/server/ensureGlobalService.js +35 -1
  419. package/dist/server/healthSurfaces.d.ts +6 -0
  420. package/dist/server/healthSurfaces.js +123 -0
  421. package/dist/server/http.d.ts +27 -1
  422. package/dist/server/http.js +2254 -477
  423. package/dist/server/listenHost.d.ts +5 -0
  424. package/dist/server/listenHost.js +56 -0
  425. package/dist/server/mcpHost.d.ts +10 -1
  426. package/dist/server/mcpHost.js +36 -6
  427. package/dist/server/operatorResults.d.ts +2 -2
  428. package/dist/server/operatorResults.js +40 -29
  429. package/dist/server/requestAuthContext.d.ts +12 -0
  430. package/dist/server/requestAuthContext.js +21 -0
  431. package/dist/server/shutdown.d.ts +69 -0
  432. package/dist/server/shutdown.js +219 -0
  433. package/dist/server/triggerRoutes.d.ts +15 -0
  434. package/dist/server/triggerRoutes.js +268 -0
  435. package/dist/tools/askOperator.d.ts +3 -2
  436. package/dist/types/completion.d.ts +3 -0
  437. package/dist/types/pipeline.d.ts +10 -1
  438. package/dist/types/preEmitCheck.d.ts +7 -0
  439. package/dist/types/stage.d.ts +22 -0
  440. package/dist/types/stageflowManifest.d.ts +3 -0
  441. package/dist/types/task.d.ts +8 -0
  442. package/dist/types/trigger.d.ts +18 -0
  443. package/dist/types/trigger.js +1 -0
  444. package/dist/ui/assets/{index-CSsDued1.css → index-Bv4p1aPK.css} +1 -1
  445. package/dist/ui/assets/index-CntB4bZR.js +133 -0
  446. package/dist/ui/index.html +2 -2
  447. package/dist/workshop/autosave.d.ts +58 -0
  448. package/dist/workshop/autosave.js +222 -0
  449. package/dist/workshop/buildStore.d.ts +79 -0
  450. package/dist/workshop/buildStore.js +326 -0
  451. package/dist/workshop/chatTurn.d.ts +232 -0
  452. package/dist/workshop/chatTurn.js +475 -0
  453. package/dist/workshop/modelSettings.d.ts +18 -0
  454. package/dist/workshop/modelSettings.js +44 -0
  455. package/dist/workshop/sessionStore.d.ts +61 -0
  456. package/dist/workshop/sessionStore.js +254 -0
  457. package/dist/workshop/workshopPin.d.ts +72 -0
  458. package/dist/workshop/workshopPin.js +193 -0
  459. package/examples/README.md +99 -0
  460. package/examples/archify-on-pr/README.md +213 -0
  461. package/examples/archify-on-pr/archify-on-pr.pipeline.yaml +19 -0
  462. package/examples/archify-on-pr/archify-on-pr.task.yaml +19 -0
  463. package/examples/archify-on-pr/author-diagrams.yaml +106 -0
  464. package/examples/archify-on-pr/detect-changes.yaml +89 -0
  465. package/examples/browser-session/README.md +77 -0
  466. package/examples/browser-session/browser-session.pipeline.yaml +50 -0
  467. package/examples/browser-session/browser-session.task.yaml +6 -0
  468. package/examples/browser-session/check-login.yaml +22 -0
  469. package/examples/browser-session/fixture-server.mjs +64 -0
  470. package/examples/browser-session/human-login.yaml +31 -0
  471. package/examples/browser-session/merge.yaml +36 -0
  472. package/examples/browser-session/work-a.yaml +41 -0
  473. package/examples/browser-session/work-b.yaml +41 -0
  474. package/examples/ci-validate/README.md +35 -0
  475. package/examples/ci-validate/check.yaml +13 -0
  476. package/examples/ci-validate/ci-demo.pipeline.yaml +4 -0
  477. package/examples/ci-validate/validate.sh +5 -0
  478. package/examples/compliance-review-demo/README.md +125 -0
  479. package/examples/compliance-review-demo/compliance-review-demo.pipeline.yaml +29 -0
  480. package/examples/compliance-review-demo/connect-account.yaml +47 -0
  481. package/examples/compliance-review-demo/map-to-control.yaml +123 -0
  482. package/examples/compliance-review-demo/poll-bucket-config.yaml +103 -0
  483. package/examples/compliance-review-demo/publish-report.yaml +79 -0
  484. package/examples/compliance-review-demo/review-verdict.yaml +122 -0
  485. package/examples/compliance-review-demo/run-compliance-check.yaml +96 -0
  486. package/examples/compliance-review-demo/store-evidence.yaml +143 -0
  487. package/examples/conditional-fork/README.md +89 -0
  488. package/examples/conditional-fork/branch-a.yaml +13 -0
  489. package/examples/conditional-fork/branch-b.yaml +13 -0
  490. package/examples/conditional-fork/decide.yaml +35 -0
  491. package/examples/conditional-fork/fork-demo.pipeline.yaml +20 -0
  492. package/examples/conditional-fork/fork-demo.task.yaml +8 -0
  493. package/examples/context7-mcp/README.md +42 -0
  494. package/examples/context7-mcp/context7-mcp.pipeline.yaml +15 -0
  495. package/examples/context7-mcp/context7-mcp.task.yaml +4 -0
  496. package/examples/context7-mcp/fetch-docs.yaml +52 -0
  497. package/examples/context7-mcp/resolve-library.yaml +31 -0
  498. package/examples/context7-mcp/write-brief.yaml +52 -0
  499. package/examples/feature-loop/README.md +104 -0
  500. package/examples/feature-loop/address-feedback.yaml +148 -0
  501. package/examples/feature-loop/align.yaml +116 -0
  502. package/examples/feature-loop/decompose.yaml +86 -0
  503. package/examples/feature-loop/default-model-hierarchy.task.yaml +58 -0
  504. package/examples/feature-loop/feature-loop.pipeline.yaml +140 -0
  505. package/examples/feature-loop/feature-loop.task.yaml +25 -0
  506. package/examples/feature-loop/implement.yaml +128 -0
  507. package/examples/feature-loop/plan.yaml +111 -0
  508. package/examples/feature-loop/publish.yaml +167 -0
  509. package/examples/feature-loop/review.yaml +146 -0
  510. package/examples/feature-loop/verify.yaml +106 -0
  511. package/examples/feedback-loop/README.md +72 -0
  512. package/examples/feedback-loop/VERIFY.md +208 -0
  513. package/examples/feedback-loop/continue-only.task.yaml +4 -0
  514. package/examples/feedback-loop/exhaust-require-continue.task.yaml +6 -0
  515. package/examples/feedback-loop/exhaust-wait-human.task.yaml +11 -0
  516. package/examples/feedback-loop/feedback-loop-wait-human.pipeline.yaml +23 -0
  517. package/examples/feedback-loop/feedback-loop.pipeline.yaml +23 -0
  518. package/examples/feedback-loop/feedback-loop.task.yaml +4 -0
  519. package/examples/feedback-loop/implement.yaml +14 -0
  520. package/examples/feedback-loop/plan.yaml +14 -0
  521. package/examples/feedback-loop/review.yaml +15 -0
  522. package/examples/feedback-loop/send-back-once.task.yaml +6 -0
  523. package/examples/feedback-loop/submit.yaml +12 -0
  524. package/examples/generic-fan-in/README.md +151 -0
  525. package/examples/generic-fan-in/clarify.yaml +18 -0
  526. package/examples/generic-fan-in/generic-fan-in-accepted.pipeline.yaml +19 -0
  527. package/examples/generic-fan-in/generic-fan-in-accepted.task.yaml +8 -0
  528. package/examples/generic-fan-in/generic-fan-in.pipeline.yaml +18 -0
  529. package/examples/generic-fan-in/generic-fan-in.task.yaml +9 -0
  530. package/examples/generic-fan-in/research.yaml +45 -0
  531. package/examples/generic-fan-in/synthesize.yaml +66 -0
  532. package/examples/generic-fan-in/validation.yaml +45 -0
  533. package/examples/github-release/README.md +78 -0
  534. package/examples/github-release/draft-release-notes.yaml +64 -0
  535. package/examples/github-release/github-release.pipeline.yaml +11 -0
  536. package/examples/github-release/github-release.task.yaml +13 -0
  537. package/examples/github-release/publish-github-release.yaml +64 -0
  538. package/examples/hello-world/README.md +28 -0
  539. package/examples/hello-world/hello.pipeline.yaml +4 -0
  540. package/examples/hello-world/my-task.task.yaml +6 -0
  541. package/examples/hello-world/research.yaml +18 -0
  542. package/examples/mcp-hitl-tour/README.md +113 -0
  543. package/examples/mcp-hitl-tour/draft-angle.yaml +33 -0
  544. package/examples/mcp-hitl-tour/draft-short.yaml +32 -0
  545. package/examples/mcp-hitl-tour/emit-angles.yaml +45 -0
  546. package/examples/mcp-hitl-tour/gather.yaml +31 -0
  547. package/examples/mcp-hitl-tour/intake.yaml +62 -0
  548. package/examples/mcp-hitl-tour/mcp-hitl-tour-exhaust.task.yaml +13 -0
  549. package/examples/mcp-hitl-tour/mcp-hitl-tour.pipeline.yaml +54 -0
  550. package/examples/mcp-hitl-tour/mcp-hitl-tour.task.yaml +16 -0
  551. package/examples/mcp-hitl-tour/polish.yaml +33 -0
  552. package/examples/mcp-hitl-tour/review.yaml +17 -0
  553. package/examples/mcp-hitl-tour/ship.yaml +25 -0
  554. package/examples/oss-issue-contribution/README.md +218 -0
  555. package/examples/oss-issue-contribution/oss-address-review-feedback.yaml +117 -0
  556. package/examples/oss-issue-contribution/oss-approve-contribution.yaml +181 -0
  557. package/examples/oss-issue-contribution/oss-approve-plan.yaml +111 -0
  558. package/examples/oss-issue-contribution/oss-explain-fix.yaml +108 -0
  559. package/examples/oss-issue-contribution/oss-explain-issue.yaml +114 -0
  560. package/examples/oss-issue-contribution/oss-implement-source-fix.yaml +171 -0
  561. package/examples/oss-issue-contribution/oss-investigate-area.yaml +116 -0
  562. package/examples/oss-issue-contribution/oss-issue-contribution.pipeline.yaml +125 -0
  563. package/examples/oss-issue-contribution/oss-issue-intake.yaml +106 -0
  564. package/examples/oss-issue-contribution/oss-plan-investigation.yaml +112 -0
  565. package/examples/oss-issue-contribution/oss-plan-review.yaml +109 -0
  566. package/examples/oss-issue-contribution/oss-reproduce-issue.yaml +140 -0
  567. package/examples/oss-issue-contribution/oss-review-change.yaml +107 -0
  568. package/examples/oss-issue-contribution/oss-verify-fix.yaml +130 -0
  569. package/examples/oss-issue-contribution/oss-write-regression-test.yaml +135 -0
  570. package/examples/oss-issue-contribution/pi-7629.task.yaml +79 -0
  571. package/examples/oss-issue-contribution/pi-8919.task.yaml +75 -0
  572. package/examples/oss-issue-contribution/pydantic-ai-7971.task.yaml +53 -0
  573. package/examples/oss-quick-fix/README.md +65 -0
  574. package/examples/oss-quick-fix/implement-fix.yaml +84 -0
  575. package/examples/oss-quick-fix/oss-quick-fix.pipeline.yaml +35 -0
  576. package/examples/oss-quick-fix/oss-quick-fix.task.yaml +19 -0
  577. package/examples/oss-quick-fix/ship-fix.yaml +81 -0
  578. package/examples/oss-quick-fix/understand-issue.yaml +67 -0
  579. package/examples/oss-quick-fix/verify-fix.yaml +73 -0
  580. package/examples/plan-review/README.md +37 -0
  581. package/examples/plan-review/plan-review-followup.yaml +13 -0
  582. package/examples/plan-review/plan-review.pipeline.yaml +9 -0
  583. package/examples/plan-review/plan-review.task.yaml +9 -0
  584. package/examples/plan-review/plan-review.yaml +25 -0
  585. package/examples/playwright-mcp/README.md +39 -0
  586. package/examples/playwright-mcp/playwright-mcp.pipeline.yaml +5 -0
  587. package/examples/playwright-mcp/playwright-mcp.task.yaml +4 -0
  588. package/examples/playwright-mcp/screenshot.yaml +40 -0
  589. package/examples/retry-tour/README.md +75 -0
  590. package/examples/retry-tour/retry-tour.pipeline.yaml +122 -0
  591. package/examples/retry-tour/retry-tour.task.yaml +9 -0
  592. package/examples/route-if-tour/README.md +202 -0
  593. package/examples/route-if-tour/route-if-tour.pipeline.yaml +950 -0
  594. package/examples/route-if-tour/route-if-tour.task.yaml +4 -0
  595. package/examples/route-wiring-smoke-test/01-core-routing.pipeline.yaml +168 -0
  596. package/examples/route-wiring-smoke-test/02-on-gating.pipeline.yaml +44 -0
  597. package/examples/route-wiring-smoke-test/03-two-entry-points.pipeline.yaml +28 -0
  598. package/examples/route-wiring-smoke-test/04-entry-false-equivalent-to-omitted.pipeline.yaml +27 -0
  599. package/examples/route-wiring-smoke-test/05-fork-choice.pipeline.yaml +110 -0
  600. package/examples/route-wiring-smoke-test/06-fan-out-fan-in.pipeline.yaml +82 -0
  601. package/examples/route-wiring-smoke-test/07-loop-human-decision.pipeline.yaml +82 -0
  602. package/examples/route-wiring-smoke-test/08-skip-fallback-and-multi-on-gate.pipeline.yaml +77 -0
  603. package/examples/route-wiring-smoke-test/09-multi-loop-targets.pipeline.yaml +102 -0
  604. package/examples/route-wiring-smoke-test/10-uses-dialect-fork.pipeline.yaml +23 -0
  605. package/examples/route-wiring-smoke-test/11-sequential-io-handoff.pipeline.yaml +37 -0
  606. package/examples/route-wiring-smoke-test/12-complex-io-schemas.pipeline.yaml +138 -0
  607. package/examples/route-wiring-smoke-test/13-ref-io-handoff.pipeline.yaml +84 -0
  608. package/examples/route-wiring-smoke-test/14-if-eq-gating.pipeline.yaml +50 -0
  609. package/examples/route-wiring-smoke-test/15-if-all-gated.pipeline.yaml +37 -0
  610. package/examples/route-wiring-smoke-test/16-if-composition.pipeline.yaml +65 -0
  611. package/examples/route-wiring-smoke-test/17-if-join.pipeline.yaml +80 -0
  612. package/examples/route-wiring-smoke-test/README.md +377 -0
  613. package/examples/route-wiring-smoke-test/rejected/01-reject-legacy-needs.pipeline.yaml +26 -0
  614. package/examples/route-wiring-smoke-test/rejected/02-reject-legacy-fork.pipeline.yaml +25 -0
  615. package/examples/route-wiring-smoke-test/rejected/03-reject-legacy-feedback-loop.pipeline.yaml +30 -0
  616. package/examples/route-wiring-smoke-test/rejected/04-reject-missing-entry.pipeline.yaml +24 -0
  617. package/examples/route-wiring-smoke-test/rejected/05-reject-unreachable.pipeline.yaml +35 -0
  618. package/examples/route-wiring-smoke-test/rejected/06-reject-allow-none-without-route-select.pipeline.yaml +37 -0
  619. package/examples/route-wiring-smoke-test/rejected/07-reject-cycle.pipeline.yaml +27 -0
  620. package/examples/route-wiring-smoke-test/rejected/08-reject-loop-non-ancestor.pipeline.yaml +42 -0
  621. package/examples/route-wiring-smoke-test/rejected/09-reject-route-select-leaf.pipeline.yaml +26 -0
  622. package/examples/route-wiring-smoke-test/rejected/12-reject-loop-replay-unsafe.pipeline.yaml +55 -0
  623. package/examples/route-wiring-smoke-test/rejected/13-reject-multiple-loop-entries.pipeline.yaml +51 -0
  624. package/examples/route-wiring-smoke-test/rejected/14-reject-duplicate-stage-id.pipeline.yaml +35 -0
  625. package/examples/route-wiring-smoke-test/rejected/15-reject-unknown-route-target.pipeline.yaml +15 -0
  626. package/examples/route-wiring-smoke-test/rejected/16-reject-malformed-route-item.pipeline.yaml +15 -0
  627. package/examples/route-wiring-smoke-test/rejected/17-reject-io-incompatible.pipeline.yaml +33 -0
  628. package/examples/route-wiring-smoke-test/rejected/18-reject-nested-io.pipeline.yaml +51 -0
  629. package/examples/route-wiring-smoke-test/rejected/19-reject-array-item-io.pipeline.yaml +55 -0
  630. package/examples/route-wiring-smoke-test/rejected/20-reject-closed-io.pipeline.yaml +36 -0
  631. package/examples/route-wiring-smoke-test/rejected/21-reject-ref-io.pipeline.yaml +42 -0
  632. package/examples/route-wiring-smoke-test/rejected/22-reject-if-unknown-field.pipeline.yaml +33 -0
  633. package/examples/route-wiring-smoke-test/rejected/23-reject-if-optional-field.pipeline.yaml +32 -0
  634. package/examples/route-wiring-smoke-test/rejected/24-reject-if-empty-all.pipeline.yaml +31 -0
  635. package/examples/route-wiring-smoke-test/rejected/25-reject-if-gt-on-string.pipeline.yaml +33 -0
  636. package/examples/route-wiring-smoke-test/rejected/26-reject-if-optional-nested.pipeline.yaml +36 -0
  637. package/examples/route-wiring-smoke-test/rejected/27-reject-if-on-loop.pipeline.yaml +63 -0
  638. package/examples/route-wiring-smoke-test/rejected/29-reject-if-on-failed.pipeline.yaml +46 -0
  639. package/examples/route-wiring-smoke-test/smoke-test.task.yaml +4 -0
  640. package/examples/route-wiring-smoke-test/stages/branch-a.yaml +12 -0
  641. package/examples/route-wiring-smoke-test/stages/branch-b.yaml +12 -0
  642. package/examples/route-wiring-smoke-test/stages/decide.yaml +12 -0
  643. package/examples/route-wiring-smoke-test/stages/finish.yaml +12 -0
  644. package/examples/ship-feature/README.md +190 -0
  645. package/examples/ship-feature/feat-address-feedback.yaml +119 -0
  646. package/examples/ship-feature/feat-implement.yaml +180 -0
  647. package/examples/ship-feature/feat-plan.yaml +120 -0
  648. package/examples/ship-feature/feat-review.yaml +109 -0
  649. package/examples/ship-feature/feat-ship.yaml +203 -0
  650. package/examples/ship-feature/ship-feature.pipeline.yaml +44 -0
  651. package/examples/ship-feature/ship-feature.task.yaml +78 -0
  652. package/examples/stage-mcp/README.md +145 -0
  653. package/examples/stage-mcp/echo-mcp.mjs +20 -0
  654. package/examples/stage-mcp/stage-mcp-dead.pipeline.yaml +5 -0
  655. package/examples/stage-mcp/stage-mcp-dead.task.yaml +3 -0
  656. package/examples/stage-mcp/stage-mcp-missing-var.pipeline.yaml +5 -0
  657. package/examples/stage-mcp/stage-mcp-missing-var.task.yaml +3 -0
  658. package/examples/stage-mcp/stage-mcp.pipeline.yaml +5 -0
  659. package/examples/stage-mcp/stage-mcp.task.yaml +4 -0
  660. package/examples/stage-mcp/use-echo.yaml +20 -0
  661. package/examples/stageflow.yaml +51 -0
  662. package/examples/verify-tour/README.md +80 -0
  663. package/examples/verify-tour/verify-tour.pipeline.yaml +162 -0
  664. package/examples/verify-tour/verify-tour.task.yaml +11 -0
  665. package/package.json +9 -1
  666. package/skills/stageflow/SKILL.md +6 -6
  667. package/skills/stageflow/references/control-surface.md +13 -5
  668. package/skills/stageflow/scripts/detect-host.mjs +14 -1
  669. package/skills/stageflow/scripts/detect-host.test.mjs +29 -1
  670. package/skills/stageflow-author/SKILL.md +4 -3
  671. package/skills/stageflow-author/references/catalog-mapping.md +16 -0
  672. package/skills/stageflow-author/references/catalog-write-conventions.md +1 -1
  673. package/skills/stageflow-author/references/stage-prompt-template.md +4 -4
  674. package/skills/stageflow-run/SKILL.md +22 -12
  675. package/skills/stageflow-run/references/mcp-call.md +9 -1
  676. package/skills/stageflow-run/references/task-and-pipeline-selection.md +19 -6
  677. package/skills/stageflow-run/scripts/mcp-call.mjs +46 -6
  678. package/skills/stageflow-run/scripts/mcp-call.test.mjs +64 -0
  679. package/skills/stageflow-session-capture/references/catalog-authoring.md +2 -0
  680. package/skills/stageflow-setup/SKILL.md +51 -8
  681. package/dist/ui/assets/index-Da5EHU6M.js +0 -119
@@ -0,0 +1,108 @@
1
+ id: oss-explain-fix
2
+ system_prompt: |
3
+ Compose fix-explainer.html teaching the operator how the verified working-tree
4
+ change fixes the issue, grounded in real quoted diff lines. This stage is a
5
+ non-blocking side teaching artifact, not a gate and not part of the
6
+ contribution path. Do not edit the task checkout, install dependencies,
7
+ commit, push, or open a pull request. Do not call ask_operator.
8
+
9
+ This is a non-interactive factory teach request. Compose the HTML explainer
10
+ and emit. The bound skill's check-in, quiz, destination ask, publishing, and
11
+ /tmp scratch do not run. The operator-facing output is the HTML artifact,
12
+ not chat.
13
+
14
+ Reading upstream work: the prior envelope's artifacts[] holds run-relative
15
+ paths. Read each one at <Factory run workspace>/<artifact path>, using the
16
+ absolute "Factory run workspace" value given in this stage's user prompt.
17
+ verification.md is the authoritative record of what was verified and
18
+ implementation-report.md of what changed; both outrank any prose in the prior
19
+ envelope's summary, which describes the previous stage only.
20
+
21
+ Definition of done — every line must hold before you emit success:
22
+ - The checkout diff was actually read, and the HTML quotes at least one real
23
+ changed line verbatim.
24
+ - Every load-bearing hunk is presented as before/after content tied to a named
25
+ file:line site.
26
+ - fix-explainer.html is written and listed in the emitted artifacts; the emit
27
+ is rejected without it.
28
+
29
+ Follow the bound ce-explain skill HTML contract:
30
+ - Input shape is diff. Subject is the verified working-tree change, not the
31
+ task goal string. If the work is still uncommitted, explain that working
32
+ tree and name the substitution in the Subject row.
33
+ - Single self-contained HTML5 file: CSS in <style>, SVG inline, system fonts,
34
+ no external URLs or scripts.
35
+ - Visible metadata as a <dl> with labels Date, Input shape, Subject.
36
+ - Show-then-tell: one inline SVG of before vs after, plus annotated real
37
+ changed lines for each load-bearing hunk.
38
+ - ~70ch measure. Second person. Footer line: Composed YYYY-MM-DD by ce-explain.
39
+ - Call write_stage_artifact with path fix-explainer.html. List the returned
40
+ run-relative path in emit_stage_envelope artifacts.
41
+
42
+ 1. Read the inherited evidence, then run git diff and git diff --stat in the
43
+ checkout to inspect the actual change. If the diff cannot be read or is
44
+ empty, emit failure — do not compose a hollow or placeholder explainer.
45
+ 2. For each load-bearing hunk, note the file and line range and the exact
46
+ before and after content you will quote.
47
+ 3. Call write_stage_artifact with path fix-explainer.html. That file is the
48
+ deliverable: what changed, why that is the fix, and what still remains
49
+ risky, in one sitting, with the SVG and the quoted code from steps 1 and 2.
50
+ 4. Call emit_stage_envelope exactly once after that write returns. On success:
51
+ artifacts must contain that HTML path; payload.topic is a short subject
52
+ label.
53
+
54
+ Contract violations — emit failure rather than presenting these as success:
55
+ - Paraphrasing the change without quoting any real changed line.
56
+ - Placeholder, TODO, or invented before/after content, or hunks without a
57
+ file:line site.
58
+ - Explaining the task goal or the issue text instead of the diff.
59
+
60
+ Write summary as outcomes and resulting state for downstream stages: what the
61
+ explainer covers and where it lives. Downstream stages receive this summary
62
+ verbatim and can mistake it for their own instructions, so never restate this
63
+ stage's prohibitions or scope limits in it.
64
+ model: omniroute/auto
65
+ io:
66
+ input:
67
+ schema:
68
+ type: object
69
+ required:
70
+ - result
71
+ - commands
72
+ - changed_files
73
+ - remaining_risks
74
+ properties:
75
+ result:
76
+ type: string
77
+ enum:
78
+ - pass
79
+ commands:
80
+ type: array
81
+ items:
82
+ type: string
83
+ changed_files:
84
+ type: array
85
+ minItems: 1
86
+ items:
87
+ type: string
88
+ remaining_risks:
89
+ type: array
90
+ items:
91
+ type: string
92
+ output:
93
+ schema:
94
+ type: object
95
+ required:
96
+ - topic
97
+ additionalProperties: false
98
+ properties:
99
+ topic:
100
+ type: string
101
+ verify:
102
+ - id: fix-explainer
103
+ type: artifact
104
+ path: fix-explainer.html
105
+ nonempty: true
106
+ when:
107
+ - after
108
+ gate_kinds: []
@@ -0,0 +1,114 @@
1
+ id: oss-explain-issue
2
+ system_prompt: |
3
+ Produce one self-contained teaching artifact, issue-explainer.html, that
4
+ explains this issue from the real checkout. This stage is a side teaching
5
+ artifact, not a gate and not part of the contribution path. Do not edit the
6
+ task checkout, install dependencies, commit, push, or open a pull request.
7
+ Do not call ask_operator.
8
+
9
+ This is a non-interactive factory teach request. Compose the HTML explainer
10
+ and emit. The bound skill's check-in, quiz, destination ask, publishing, and
11
+ /tmp scratch do not run. The operator-facing output is the HTML artifact,
12
+ not chat.
13
+
14
+ Reading upstream artifacts: the prior intake envelope's artifacts[] entries
15
+ are run-relative paths. The user prompt gives the absolute "Factory run
16
+ workspace" path; read each one at <Factory run workspace>/<artifact path>
17
+ with the builtin read tool. issue-intake.md holds the full issue write-up and
18
+ is authoritative over any prose summary.
19
+
20
+ Follow the bound ce-explain skill HTML contract:
21
+ - Input shape is concept. Subject is the issue in the task context, not the
22
+ task goal string.
23
+ - Single self-contained HTML5 file: CSS in <style>, SVG inline, system fonts,
24
+ no external URLs or scripts.
25
+ - Visible metadata as a <dl> with labels Date, Input shape, Subject.
26
+ - Show-then-tell: one inline SVG of the failure architecture, plus annotated
27
+ real checkout snippets for each load-bearing mechanism.
28
+ - ~70ch measure. Second person. Footer line: Composed YYYY-MM-DD by ce-explain.
29
+ - Call write_stage_artifact with path issue-explainer.html. List the returned
30
+ run-relative path in emit_stage_envelope artifacts.
31
+
32
+ 1. Read the task, the intake envelope and issue-intake.md, and the checkout
33
+ files the issue names (and their call sites). Quote the live side-effect
34
+ paths and the recorded-result path. If a named symbol or test is absent
35
+ from this checkout, include the verbatim search command you ran and its
36
+ empty result in the HTML instead of inventing behavior for it. Do not
37
+ implement a fix.
38
+ 2. Call write_stage_artifact with path issue-explainer.html. That file is
39
+ the deliverable: failure, why it happens, why it matters, in one sitting,
40
+ with the SVG and quoted code from step 1. Give it named sections that a
41
+ reader can navigate — at minimum what breaks, why it breaks, where in the
42
+ code it breaks, and why it matters.
43
+ 3. Call emit_stage_envelope exactly once after that write returns. On success:
44
+ artifacts must contain that HTML path; payload.topic is a short subject
45
+ label.
46
+
47
+ Definition of done — every item must be true before emitting success:
48
+ - The subject was actually read from this checkout or from issue-intake.md.
49
+ If neither yields the subject, emit failure. A hollow explainer built from
50
+ the goal string alone is a contract violation, not a partial success.
51
+ - issue-explainer.html has named sections and at least one code snippet
52
+ quoted from this checkout with a file:line citation.
53
+ - Every symbol, path, and test name in the HTML either exists in this
54
+ checkout or is explicitly marked absent with the search command and its
55
+ empty output shown.
56
+ - payload.topic names the issue's subject, not the stage or the pipeline.
57
+
58
+ Anti-loophole rules:
59
+ - No payload string may be n/a, none, tbd, pending, or equivalent filler. If
60
+ the real value does not exist, emit failure instead.
61
+ - No payload array may hold placeholders such as ["see diff"] or ["src"].
62
+ - Writing issue-explainer.html is not a substitute for reading the checkout.
63
+ An explainer whose snippets were not copied from real files fails this
64
+ stage even though the artifact exists.
65
+
66
+ Summary authoring: the emitted summary states what the explainer covers and
67
+ what it established about the issue for downstream stages. Do not restate
68
+ this stage's prohibitions or scope limits there — downstream stages receive
69
+ the summary verbatim and will misread "do not edit the checkout" as an
70
+ instruction to themselves.
71
+ model: omniroute/auto
72
+ io:
73
+ input:
74
+ schema:
75
+ type: object
76
+ required:
77
+ - repository
78
+ - commit
79
+ - issue_url
80
+ - issue_title
81
+ - contribution_status
82
+ - constraints
83
+ properties:
84
+ repository:
85
+ type: string
86
+ commit:
87
+ type: string
88
+ issue_url:
89
+ type: string
90
+ issue_title:
91
+ type: string
92
+ contribution_status:
93
+ type: string
94
+ constraints:
95
+ type: array
96
+ items:
97
+ type: string
98
+ output:
99
+ schema:
100
+ type: object
101
+ required:
102
+ - topic
103
+ additionalProperties: false
104
+ properties:
105
+ topic:
106
+ type: string
107
+ verify:
108
+ - id: issue-explainer
109
+ type: artifact
110
+ path: issue-explainer.html
111
+ nonempty: true
112
+ when:
113
+ - after
114
+ gate_kinds: []
@@ -0,0 +1,171 @@
1
+ id: oss-implement-source-fix
2
+ system_prompt: |
3
+ Edit source files in the task checkout so the accepted plan is fully
4
+ implemented and every one of its validation_commands passes — not just the
5
+ single named regression test. Modified files under "Project checkout (agent
6
+ cwd)" are the only acceptable output of this stage; no map, excerpt,
7
+ document, or report can substitute for them.
8
+
9
+ You own the whole loop: implement, run the plan's full validation_commands,
10
+ and if anything fails, diagnose and fix it and run them again. Repeat until
11
+ every command passes or you have a concrete, evidence-backed reason further
12
+ iteration in this attempt will not help (for example an environment
13
+ limitation unrelated to the fix). This stage is the only one with edit
14
+ access to the checkout in the writer path — nothing downstream can fix what
15
+ you leave broken, so do not hand off a partially-green result as success.
16
+
17
+ Reading upstream work: the prior envelope's artifacts[] holds run-relative
18
+ paths. Read each one at <Factory run workspace>/<artifact path>, using the
19
+ absolute "Factory run workspace" value given in this stage's user prompt.
20
+ implementation-plan.md is the authoritative approved scope — its
21
+ validation_commands list is the actual definition of done, not a suggestion
22
+ — and regression-test-report.md names the exact test_node_id already added
23
+ and its current red-run output; both outrank any prose in the prior
24
+ envelope's summary. That summary describes the PREVIOUS stage: any
25
+ prohibition it carries, for example "no source edits", applied to that
26
+ stage and does not apply here.
27
+
28
+ Definition of done — every line must hold before you emit success:
29
+ - git diff in the checkout is non-empty and contains your edits; the emit
30
+ is rejected while the working tree is clean.
31
+ - Every changed_files entry is a repo-relative path inside the checkout
32
+ that also appears in git diff --name-only; the emit is rejected for any
33
+ entry pointing into the factory run workspace.
34
+ - regression_test equals the exact test_node_id from
35
+ regression-test-report.md, and it now passes in this checkout.
36
+ - Every command in implementation-plan.md's validation_commands has been
37
+ run here, in order, with its exit code recorded, and every one exited
38
+ zero. all_passed is true only when that is actually the case.
39
+ - implementation-report.md is written and listed in the emitted artifacts;
40
+ the emit is rejected without it.
41
+ - commands_run lists only commands you actually executed, each with its
42
+ outcome — the full validation_commands list plus anything else you ran
43
+ while diagnosing failures.
44
+
45
+ 1. Resolve implementation-plan.md and regression-test-report.md from the
46
+ prior envelope's artifacts[] against the Factory run workspace absolute
47
+ path and read both. If either cannot be read, emit failure — do not
48
+ substitute a plan or test you re-derived yourself.
49
+ 2. Confirm the checkout still has the regression test from the prior stage
50
+ and no other unexpected tracked changes. If it diverged, emit failure
51
+ without overwriting work.
52
+ 3. Edit the source files — and add any additional test files
53
+ implementation-plan.md's validation_commands require that do not exist
54
+ yet — to satisfy the accepted plan. Do not rewrite or loosen the
55
+ regression test written by the prior stage; if it needs to change, emit
56
+ failure and say why. Do not perform unrelated formatting, refactors,
57
+ dependency upgrades, generated-file changes, or scope expansion beyond
58
+ what the plan describes.
59
+ 4. Run every command in implementation-plan.md's validation_commands, in
60
+ order, recording exit code and a stdout tail for each.
61
+ 5. If any command fails or a named test does not exist yet, treat that as
62
+ unfinished work, not a report footnote: diagnose the specific cause,
63
+ make the corresponding source or test edit, and return to step 4. Do not
64
+ move on while a validation_commands entry is red.
65
+ 6. Once every command passes, run git status --porcelain and git diff
66
+ --stat in the checkout and inspect the complete diff. If either output
67
+ is empty, this stage has not done its job: return to step 3 or emit
68
+ failure.
69
+ 7. Write implementation-report.md containing the verbatim non-empty
70
+ git diff --stat and git status --porcelain output, the files changed,
71
+ before/after behavior, every validation command with its result, how
72
+ many iterations it took, assumptions, and any deviation from the plan.
73
+ 8. Emit exactly once, including implementation-report.md and all inherited
74
+ evidence artifacts, with a payload matching the schema. Emit success
75
+ only if every definition-of-done line holds; otherwise emit failure
76
+ while preserving the working-tree evidence for the operator, and record
77
+ in the summary exactly which validation_commands entries remain red and
78
+ why.
79
+
80
+ Contract violations — emit failure rather than presenting these as success:
81
+ - Emitting success while git diff in the checkout is empty.
82
+ - Emitting success while any validation_commands entry has not been run,
83
+ was skipped, or exited non-zero. all_passed: true when that is not the
84
+ case is a contract violation, not a reporting choice.
85
+ - A changed_files entry under stages/.../artifacts/ or anywhere else in the
86
+ factory run workspace. Such a path is never a valid entry.
87
+ - regression_test set to n/a, none, pending, or any prose disclaimer
88
+ instead of the prior stage's exact test node id.
89
+ - commands_run listing commands you did not execute.
90
+ - Treating a markdown map, excerpt file, or report as the deliverable.
91
+ Exploration-only completion is a failure of this stage.
92
+
93
+ Never commit, push, or open a pull request. Never alter contribution
94
+ metadata to imply maintainer approval.
95
+
96
+ Write summary as outcomes and resulting state for downstream stages: what
97
+ now differs in the checkout, which tests cover it, and confirmation that
98
+ every validation command passed (or, on failure, which ones did not and
99
+ why). Downstream stages receive this summary verbatim and can mistake it
100
+ for their own instructions, so never restate this stage's prohibitions or
101
+ scope limits in it.
102
+ model: omniroute/auto
103
+ timeout_ms: 3600000
104
+ io:
105
+ input:
106
+ schema:
107
+ type: object
108
+ required:
109
+ - test_files
110
+ - test_node_id
111
+ - red_evidence
112
+ - commands_run
113
+ properties:
114
+ test_files:
115
+ type: array
116
+ minItems: 1
117
+ items:
118
+ type: string
119
+ test_node_id:
120
+ type: string
121
+ red_evidence:
122
+ type: string
123
+ commands_run:
124
+ type: array
125
+ items:
126
+ type: string
127
+ output:
128
+ schema:
129
+ type: object
130
+ required:
131
+ - changed_files
132
+ - regression_test
133
+ - implementation_summary
134
+ - assumptions
135
+ - commands_run
136
+ - all_passed
137
+ properties:
138
+ changed_files:
139
+ type: array
140
+ minItems: 1
141
+ items:
142
+ type: string
143
+ regression_test:
144
+ type: string
145
+ implementation_summary:
146
+ type: string
147
+ assumptions:
148
+ type: array
149
+ items:
150
+ type: string
151
+ commands_run:
152
+ type: array
153
+ minItems: 1
154
+ items:
155
+ type: string
156
+ all_passed:
157
+ type: boolean
158
+ verify:
159
+ - id: implementation-report
160
+ type: artifact
161
+ path: implementation-report.md
162
+ nonempty: true
163
+ when:
164
+ - after
165
+ - id: checkout-changed
166
+ type: checkout_changes
167
+ path_fields:
168
+ - changed_files
169
+ when:
170
+ - after
171
+ gate_kinds: []
@@ -0,0 +1,116 @@
1
+ id: oss-investigate-area
2
+ system_prompt: |
3
+ Answer the assigned area's questions with cited evidence from this checkout,
4
+ recorded in investigation.md. This stage is strictly read-only: do not edit
5
+ files, install dependencies, commit, push, or open a pull request.
6
+
7
+ Reading upstream artifacts: the assigned prior envelope's artifacts[] entries
8
+ are run-relative paths. The user prompt gives the absolute "Factory run
9
+ workspace" path; read each one at <Factory run workspace>/<artifact path>
10
+ with the builtin read tool. investigation-map.md, reproduction.md, and
11
+ issue-intake.md are authoritative over any prose summary.
12
+
13
+ 1. Read the task and the assigned prior envelope. Treat its payload as the
14
+ exact investigation assignment: area_id, objective, paths, questions, and
15
+ constraints.
16
+ 2. Trace the relevant implementation, tests, public contracts, history
17
+ available locally, and call paths. Cite file paths with line references for
18
+ every material conclusion. Separate facts from hypotheses.
19
+ 3. Identify the smallest credible change, regression tests, compatibility or
20
+ concurrency risks, and alternatives rejected for this area.
21
+ 4. Call write_stage_artifact with path investigation.md holding the evidence,
22
+ the answer to each assigned question, and the recommendations.
23
+ 5. Emit exactly once. Use status success when the assigned area was examined,
24
+ even if the verdict is that no change belongs there. Use failure only when
25
+ the assignment cannot be investigated. On success, list investigation.md
26
+ plus all inherited evidence artifacts and provide a payload matching the
27
+ schema.
28
+
29
+ payload.verdict must be exactly one of these four values:
30
+ - root_cause — the issue originates in this area.
31
+ - contributing — this area participates in the failure but is not its origin.
32
+ - no_change_needed — this area was examined and is not implicated.
33
+ - inconclusive — the assigned questions could not be answered from this
34
+ checkout; investigation.md must say what is missing.
35
+ The schema cannot enforce this list, so any other value is a contract
36
+ violation even though emit will accept it.
37
+
38
+ Definition of done — every item must be true before emitting success:
39
+ - investigation.md was written through write_stage_artifact and appears in the
40
+ emitted artifacts with all inherited evidence artifacts.
41
+ - Every assigned question has an answer in investigation.md, or is explicitly
42
+ recorded as unanswerable with the search or read that came up empty.
43
+ - payload.findings holds at least one entry citing a repo-relative path with
44
+ line references, for example src/pkg/module.py:120-138. Findings without a
45
+ cited location do not count toward that requirement.
46
+ - payload.area_id equals the assigned area_id verbatim.
47
+ - payload.verdict is one of the four values above.
48
+ - affected_paths entries are repo-relative paths in this checkout;
49
+ recommended_changes name concrete edit sites; tests name real test node ids
50
+ or the file that would hold a new test.
51
+
52
+ Anti-loophole rules:
53
+ - No payload string may be n/a, none, tbd, pending, or equivalent filler. If
54
+ the real value does not exist, emit failure instead.
55
+ - No payload array may hold placeholders such as ["see diff"] or ["src"]. An
56
+ empty array is acceptable where genuinely empty; a placeholder entry is not.
57
+ - Writing investigation.md is not a substitute for reading the assigned
58
+ paths. The artifact records the trace; it does not perform it.
59
+
60
+ Summary authoring: the emitted summary states the verdict, the mechanism you
61
+ established, and the recommended change for the join stage. Do not restate
62
+ this stage's prohibitions or scope limits there. The join and implement stages
63
+ receive this summary verbatim and will misread "strictly read-only" as an
64
+ instruction to themselves.
65
+
66
+ Do not attempt to coordinate edits with other clones; the later join stage
67
+ will synthesize all investigations.
68
+ model: omniroute/auto
69
+ io:
70
+ input:
71
+ schema:
72
+ type: object
73
+ output:
74
+ schema:
75
+ type: object
76
+ required:
77
+ - area_id
78
+ - verdict
79
+ - findings
80
+ - affected_paths
81
+ - recommended_changes
82
+ - risks
83
+ - tests
84
+ properties:
85
+ area_id:
86
+ type: string
87
+ verdict:
88
+ type: string
89
+ findings:
90
+ type: array
91
+ items:
92
+ type: string
93
+ affected_paths:
94
+ type: array
95
+ items:
96
+ type: string
97
+ recommended_changes:
98
+ type: array
99
+ items:
100
+ type: string
101
+ risks:
102
+ type: array
103
+ items:
104
+ type: string
105
+ tests:
106
+ type: array
107
+ items:
108
+ type: string
109
+ verify:
110
+ - id: investigation
111
+ type: artifact
112
+ path: investigation.md
113
+ nonempty: true
114
+ when:
115
+ - after
116
+ gate_kinds: []
@@ -0,0 +1,125 @@
1
+ id: oss-issue-contribution
2
+ stages:
3
+ - id: oss-issue-intake
4
+ entry: true
5
+ route:
6
+ - to: oss-explain-issue
7
+ - to: oss-reproduce-issue
8
+ uses: ./oss-issue-intake.yaml
9
+ on_verify_fail:
10
+ mode: repair
11
+ max_attempts: 3
12
+ retry_safety: idempotent
13
+ include_failed_checks: true
14
+ - id: oss-explain-issue
15
+ uses: ./oss-explain-issue.yaml
16
+ skill: ce-explain
17
+ on_verify_fail:
18
+ mode: repair
19
+ max_attempts: 3
20
+ retry_safety: idempotent
21
+ include_failed_checks: true
22
+ - id: oss-reproduce-issue
23
+ route:
24
+ - to: oss-plan-investigation
25
+ uses: ./oss-reproduce-issue.yaml
26
+ on_verify_fail:
27
+ mode: repair
28
+ max_attempts: 3
29
+ retry_safety: idempotent
30
+ include_failed_checks: true
31
+ - id: oss-plan-investigation
32
+ route:
33
+ - to: oss-investigate-area
34
+ uses: ./oss-plan-investigation.yaml
35
+ on_verify_fail:
36
+ mode: repair
37
+ max_attempts: 3
38
+ retry_safety: idempotent
39
+ include_failed_checks: true
40
+ - id: oss-investigate-area
41
+ route:
42
+ - to: oss-approve-plan
43
+ uses: ./oss-investigate-area.yaml
44
+ on_verify_fail:
45
+ mode: repair
46
+ max_attempts: 3
47
+ retry_safety: idempotent
48
+ include_failed_checks: true
49
+ - id: oss-approve-plan
50
+ route:
51
+ - to: oss-write-regression-test
52
+ uses: ./oss-approve-plan.yaml
53
+ on_verify_fail:
54
+ mode: repair
55
+ max_attempts: 3
56
+ retry_safety: idempotent
57
+ include_failed_checks: true
58
+ - id: oss-write-regression-test
59
+ route:
60
+ - to: oss-implement-source-fix
61
+ uses: ./oss-write-regression-test.yaml
62
+ on_verify_fail:
63
+ mode: repair
64
+ max_attempts: 3
65
+ retry_safety: idempotent
66
+ include_failed_checks: true
67
+ - id: oss-implement-source-fix
68
+ route:
69
+ - to: oss-verify-fix
70
+ uses: ./oss-implement-source-fix.yaml
71
+ on_verify_fail:
72
+ mode: repair
73
+ max_attempts: 3
74
+ retry_safety: idempotent
75
+ include_failed_checks: true
76
+ - id: oss-verify-fix
77
+ route:
78
+ - to: oss-explain-fix
79
+ - to: oss-plan-review
80
+ uses: ./oss-verify-fix.yaml
81
+ on_verify_fail:
82
+ mode: repair
83
+ max_attempts: 3
84
+ retry_safety: idempotent
85
+ include_failed_checks: true
86
+ - id: oss-explain-fix
87
+ uses: ./oss-explain-fix.yaml
88
+ skill: ce-explain
89
+ on_verify_fail:
90
+ mode: repair
91
+ max_attempts: 3
92
+ retry_safety: idempotent
93
+ include_failed_checks: true
94
+ - id: oss-plan-review
95
+ route:
96
+ - to: oss-review-change
97
+ uses: ./oss-plan-review.yaml
98
+ on_verify_fail:
99
+ mode: repair
100
+ max_attempts: 3
101
+ retry_safety: idempotent
102
+ include_failed_checks: true
103
+ - id: oss-review-change
104
+ route:
105
+ - to: oss-address-review-feedback
106
+ uses: ./oss-review-change.yaml
107
+ on_verify_fail:
108
+ mode: repair
109
+ max_attempts: 3
110
+ retry_safety: idempotent
111
+ include_failed_checks: true
112
+ - id: oss-address-review-feedback
113
+ route:
114
+ - to: oss-approve-contribution
115
+ uses: ./oss-address-review-feedback.yaml
116
+ on_verify_fail:
117
+ mode: repair
118
+ max_attempts: 3
119
+ retry_safety: idempotent
120
+ include_failed_checks: true
121
+ - id: oss-approve-contribution
122
+ uses: ./oss-approve-contribution.yaml
123
+ on_verify_fail:
124
+ mode: manual
125
+ retry_safety: side_effecting