dorfl 0.1.2 → 0.2.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.
- package/dist/advance-drivers.d.ts +1 -1
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +15 -3
- package/dist/advance-drivers.js.map +1 -1
- package/dist/advance-lifecycle-template.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +76 -4
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/advance-treeless-publish.d.ts +23 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -1
- package/dist/advance-treeless-publish.js +41 -0
- package/dist/advance-treeless-publish.js.map +1 -1
- package/dist/advance.d.ts +59 -7
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +389 -82
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +30 -2
- package/dist/advancing-lock.d.ts.map +1 -1
- package/dist/advancing-lock.js +50 -0
- package/dist/advancing-lock.js.map +1 -1
- package/dist/agent-launch.d.ts +12 -0
- package/dist/agent-launch.d.ts.map +1 -1
- package/dist/agent-launch.js +22 -12
- package/dist/agent-launch.js.map +1 -1
- package/dist/agent-stop.d.ts +40 -2
- package/dist/agent-stop.d.ts.map +1 -1
- package/dist/agent-stop.js +30 -2
- package/dist/agent-stop.js.map +1 -1
- package/dist/apply-decide.d.ts +17 -3
- package/dist/apply-decide.d.ts.map +1 -1
- package/dist/apply-decide.js +36 -7
- package/dist/apply-decide.js.map +1 -1
- package/dist/apply-merge-action.d.ts +17 -5
- package/dist/apply-merge-action.d.ts.map +1 -1
- package/dist/apply-merge-action.js +43 -8
- package/dist/apply-merge-action.js.map +1 -1
- package/dist/apply-persist.d.ts +57 -26
- package/dist/apply-persist.d.ts.map +1 -1
- package/dist/apply-persist.js +166 -37
- package/dist/apply-persist.js.map +1 -1
- package/dist/apply-stuck-action.d.ts +151 -0
- package/dist/apply-stuck-action.d.ts.map +1 -0
- package/dist/apply-stuck-action.js +125 -0
- package/dist/apply-stuck-action.js.map +1 -0
- package/dist/brand.d.ts +12 -1
- package/dist/brand.d.ts.map +1 -1
- package/dist/brand.js +2 -1
- package/dist/brand.js.map +1 -1
- package/dist/cli-spinner.d.ts +1 -1
- package/dist/cli-spinner.js +1 -1
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +320 -63
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.js +1 -1
- package/dist/complete.d.ts +6 -3
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +91 -37
- package/dist/complete.js.map +1 -1
- package/dist/config.d.ts +55 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -4
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts.map +1 -1
- package/dist/continue-branch.js +22 -0
- package/dist/continue-branch.js.map +1 -1
- package/dist/decision-engine.d.ts +38 -10
- package/dist/decision-engine.d.ts.map +1 -1
- package/dist/decision-engine.js +10 -6
- package/dist/decision-engine.js.map +1 -1
- package/dist/do-autopick.d.ts.map +1 -1
- package/dist/do-autopick.js +11 -1
- package/dist/do-autopick.js.map +1 -1
- package/dist/do-config.d.ts +1 -1
- package/dist/do.d.ts +49 -56
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +419 -30
- package/dist/do.js.map +1 -1
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +12 -4
- package/dist/env-config.js.map +1 -1
- package/dist/failure-cause.d.ts +3 -2
- package/dist/failure-cause.d.ts.map +1 -1
- package/dist/failure-cause.js +28 -1
- package/dist/failure-cause.js.map +1 -1
- package/dist/format.d.ts +6 -6
- package/dist/format.d.ts.map +1 -1
- package/dist/format.js +10 -27
- package/dist/format.js.map +1 -1
- package/dist/frontmatter.d.ts +16 -4
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +27 -1
- package/dist/frontmatter.js.map +1 -1
- package/dist/gc.d.ts +65 -6
- package/dist/gc.d.ts.map +1 -1
- package/dist/gc.js +126 -9
- package/dist/gc.js.map +1 -1
- package/dist/github.d.ts +14 -0
- package/dist/github.d.ts.map +1 -1
- package/dist/github.js +73 -0
- package/dist/github.js.map +1 -1
- package/dist/harness.d.ts +25 -0
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/install-ci-branch-protection.d.ts +132 -38
- package/dist/install-ci-branch-protection.d.ts.map +1 -1
- package/dist/install-ci-branch-protection.js +190 -48
- package/dist/install-ci-branch-protection.js.map +1 -1
- package/dist/install-ci-core.d.ts +21 -1
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +10 -3
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +32 -0
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +73 -0
- package/dist/install-ci-github.js.map +1 -1
- package/dist/install-skills.d.ts +123 -0
- package/dist/install-skills.d.ts.map +1 -0
- package/dist/install-skills.js +100 -0
- package/dist/install-skills.js.map +1 -0
- package/dist/intake-trigger-template.js +1 -1
- package/dist/intake.d.ts +17 -4
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +23 -7
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +10 -7
- package/dist/integration-core.d.ts.map +1 -1
- package/dist/integration-core.js +174 -60
- package/dist/integration-core.js.map +1 -1
- package/dist/integrator.d.ts +1 -1
- package/dist/integrator.d.ts.map +1 -1
- package/dist/integrator.js +19 -3
- package/dist/integrator.js.map +1 -1
- package/dist/isolation.d.ts +2 -2
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +9 -0
- package/dist/isolation.js.map +1 -1
- package/dist/item-lock.d.ts +196 -129
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +329 -254
- package/dist/item-lock.js.map +1 -1
- package/dist/ledger-write.d.ts +31 -26
- package/dist/ledger-write.d.ts.map +1 -1
- package/dist/ledger-write.js +100 -122
- package/dist/ledger-write.js.map +1 -1
- package/dist/lifecycle-gather.d.ts +17 -0
- package/dist/lifecycle-gather.d.ts.map +1 -1
- package/dist/lifecycle-gather.js +7 -1
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/lifecycle-pools.d.ts +40 -3
- package/dist/lifecycle-pools.d.ts.map +1 -1
- package/dist/lifecycle-pools.js +26 -6
- package/dist/lifecycle-pools.js.map +1 -1
- package/dist/merge-question-surfacer.d.ts +15 -1
- package/dist/merge-question-surfacer.d.ts.map +1 -1
- package/dist/merge-question-surfacer.js +18 -3
- package/dist/merge-question-surfacer.js.map +1 -1
- package/dist/migrate-stuck-locks.d.ts +129 -0
- package/dist/migrate-stuck-locks.d.ts.map +1 -0
- package/dist/migrate-stuck-locks.js +355 -0
- package/dist/migrate-stuck-locks.js.map +1 -0
- package/dist/needs-attention.d.ts +293 -16
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +532 -57
- package/dist/needs-attention.js.map +1 -1
- package/dist/orphan-sidecar.d.ts +8 -4
- package/dist/orphan-sidecar.d.ts.map +1 -1
- package/dist/orphan-sidecar.js +35 -2
- package/dist/orphan-sidecar.js.map +1 -1
- package/dist/pi-harness.d.ts +16 -0
- package/dist/pi-harness.d.ts.map +1 -1
- package/dist/pi-harness.js +82 -2
- package/dist/pi-harness.js.map +1 -1
- package/dist/placement.d.ts +3 -3
- package/dist/placement.js +1 -1
- package/dist/prd-to-spec.d.ts.map +1 -1
- package/dist/prd-to-spec.js +9 -5
- package/dist/prd-to-spec.js.map +1 -1
- package/dist/protocol/CLAIM-PROTOCOL.md +17 -10
- package/dist/protocol/REVIEW-PROTOCOL.md +4 -1
- package/dist/protocol/SURFACE-PROTOCOL.md +16 -2
- package/dist/protocol/TASKING-PROTOCOL.md +3 -1
- package/dist/protocol/WORK-CONTRACT.md +22 -18
- package/dist/protocol/task-template.md +1 -1
- package/dist/reap-branches.d.ts +12 -9
- package/dist/reap-branches.d.ts.map +1 -1
- package/dist/reap-branches.js +25 -7
- package/dist/reap-branches.js.map +1 -1
- package/dist/recover-isolated.d.ts +12 -0
- package/dist/recover-isolated.d.ts.map +1 -1
- package/dist/recover-isolated.js +5 -0
- package/dist/recover-isolated.js.map +1 -1
- package/dist/repo-config.d.ts +23 -2
- package/dist/repo-config.d.ts.map +1 -1
- package/dist/repo-config.js +53 -7
- package/dist/repo-config.js.map +1 -1
- package/dist/repo-mirror.d.ts.map +1 -1
- package/dist/repo-mirror.js +18 -2
- package/dist/repo-mirror.js.map +1 -1
- package/dist/review-verdict.js +1 -1
- package/dist/review-verdict.js.map +1 -1
- package/dist/run.d.ts +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +54 -19
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +17 -8
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +22 -8
- package/dist/scan.js.map +1 -1
- package/dist/select-priority.d.ts +2 -2
- package/dist/select-priority.js +1 -1
- package/dist/select-priority.js.map +1 -1
- package/dist/sidecar-apply.js +1 -1
- package/dist/sidecar-apply.js.map +1 -1
- package/dist/sidecar.d.ts +45 -10
- package/dist/sidecar.d.ts.map +1 -1
- package/dist/sidecar.js +82 -2
- package/dist/sidecar.js.map +1 -1
- package/dist/skills/answer-questions/SKILL.md +89 -0
- package/dist/skills/capture-signal/SKILL.md +52 -0
- package/dist/skills/convert-from-prd-to-spec/SKILL.md +90 -0
- package/dist/skills/drive-tasks/SKILL.md +218 -0
- package/dist/skills/from-idea/SKILL.md +83 -0
- package/dist/skills/merge-prs/SKILL.md +70 -0
- package/dist/skills/orchestrate/SKILL.md +101 -0
- package/dist/skills/promote/SKILL.md +35 -0
- package/dist/skills/review/SKILL.md +16 -0
- package/dist/skills/setup/SKILL.md +258 -0
- package/dist/skills/setup/protocol/ADR-FORMAT.md +47 -0
- package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +224 -0
- package/dist/skills/setup/protocol/REVIEW-PROTOCOL.md +122 -0
- package/dist/skills/setup/protocol/SURFACE-PROTOCOL.md +135 -0
- package/dist/skills/setup/protocol/TASKING-PROTOCOL.md +124 -0
- package/dist/skills/setup/protocol/WORK-CONTRACT.md +280 -0
- package/dist/skills/setup/protocol/spec-template.md +71 -0
- package/dist/skills/setup/protocol/task-template.md +65 -0
- package/dist/skills/surface-questions/SKILL.md +16 -0
- package/dist/skills/to-spec/SKILL.md +34 -0
- package/dist/skills/to-task/SKILL.md +19 -0
- package/dist/skills/triage-observations/SKILL.md +78 -0
- package/dist/skills/work/SKILL.md +51 -0
- package/dist/slug-namespace.d.ts +5 -5
- package/dist/slug-namespace.js +5 -5
- package/dist/slug-namespace.js.map +1 -1
- package/dist/spec-complete.d.ts.map +1 -1
- package/dist/spec-complete.js +2 -3
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +51 -57
- package/dist/start.js.map +1 -1
- package/dist/surface-gate.d.ts.map +1 -1
- package/dist/surface-gate.js +10 -3
- package/dist/surface-gate.js.map +1 -1
- package/dist/surface-persist.js +1 -1
- package/dist/surface-persist.js.map +1 -1
- package/dist/tasker-review-loop.d.ts +4 -3
- package/dist/tasker-review-loop.d.ts.map +1 -1
- package/dist/tasker-review-loop.js.map +1 -1
- package/dist/tasking-lock.d.ts +2 -2
- package/dist/tasking-lock.d.ts.map +1 -1
- package/dist/tasking-lock.js +53 -32
- package/dist/tasking-lock.js.map +1 -1
- package/dist/tasking.d.ts +40 -6
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +224 -12
- package/dist/tasking.js.map +1 -1
- package/dist/triage-persist.d.ts +10 -6
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +34 -4
- package/dist/triage-persist.js.map +1 -1
- package/dist/vendor/incur/agents.d.ts +58 -0
- package/dist/vendor/incur/agents.d.ts.map +1 -0
- package/dist/vendor/incur/agents.js +343 -0
- package/dist/vendor/incur/agents.js.map +1 -0
- package/dist/verify-workflow-template.js +1 -1
- package/dist/watch-session.d.ts +11 -3
- package/dist/watch-session.d.ts.map +1 -1
- package/dist/watch-session.js +94 -7
- package/dist/watch-session.js.map +1 -1
- package/dist/work-layout.d.ts +7 -3
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +6 -3
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +1 -1
- package/package.json +2 -2
- package/src/advance-drivers.ts +16 -3
- package/src/advance-lifecycle-template.ts +89 -4
- package/src/advance-treeless-publish.ts +45 -0
- package/src/advance.ts +467 -87
- package/src/advancing-lock.ts +96 -1
- package/src/agent-launch.ts +37 -12
- package/src/agent-stop.ts +60 -2
- package/src/apply-decide.ts +36 -7
- package/src/apply-merge-action.ts +45 -7
- package/src/apply-persist.ts +228 -54
- package/src/apply-stuck-action.ts +260 -0
- package/src/brand.ts +14 -2
- package/src/cli-spinner.ts +1 -1
- package/src/cli.ts +401 -70
- package/src/close-job-template.ts +1 -1
- package/src/complete.ts +110 -52
- package/src/config.ts +107 -13
- package/src/continue-branch.ts +22 -0
- package/src/decision-engine.ts +55 -17
- package/src/do-autopick.ts +12 -1
- package/src/do-config.ts +1 -1
- package/src/do.ts +511 -38
- package/src/env-config.ts +12 -4
- package/src/failure-cause.ts +30 -1
- package/src/format.ts +10 -30
- package/src/frontmatter.ts +35 -5
- package/src/gc.ts +172 -9
- package/src/github.ts +78 -0
- package/src/harness.ts +25 -0
- package/src/index.ts +10 -0
- package/src/install-ci-branch-protection.ts +282 -57
- package/src/install-ci-core.ts +30 -3
- package/src/install-ci-github.ts +86 -0
- package/src/install-skills.ts +166 -0
- package/src/intake-trigger-template.ts +1 -1
- package/src/intake.ts +46 -11
- package/src/integration-core.ts +199 -65
- package/src/integrator.ts +22 -9
- package/src/isolation.ts +11 -2
- package/src/item-lock.ts +485 -341
- package/src/ledger-write.ts +135 -150
- package/src/lifecycle-gather.ts +29 -6
- package/src/lifecycle-pools.ts +67 -9
- package/src/merge-question-surfacer.ts +28 -4
- package/src/migrate-stuck-locks.ts +451 -0
- package/src/needs-attention.ts +857 -84
- package/src/orphan-sidecar.ts +47 -6
- package/src/pi-harness.ts +82 -2
- package/src/placement.ts +3 -3
- package/src/prd-to-spec.ts +13 -5
- package/src/reap-branches.ts +38 -14
- package/src/recover-isolated.ts +17 -0
- package/src/repo-config.ts +55 -6
- package/src/repo-mirror.ts +23 -1
- package/src/review-verdict.ts +1 -1
- package/src/run.ts +64 -18
- package/src/scan.ts +22 -8
- package/src/select-priority.ts +3 -3
- package/src/sidecar-apply.ts +1 -1
- package/src/sidecar.ts +138 -11
- package/src/slug-namespace.ts +7 -7
- package/src/spec-complete.ts +2 -3
- package/src/start.ts +53 -59
- package/src/surface-gate.ts +10 -3
- package/src/surface-persist.ts +1 -1
- package/src/tasker-review-loop.ts +4 -3
- package/src/tasking-lock.ts +52 -36
- package/src/tasking.ts +261 -17
- package/src/triage-persist.ts +56 -12
- package/src/vendor/incur/LICENSE +21 -0
- package/src/vendor/incur/README.md +19 -0
- package/src/vendor/incur/agents.ts +392 -0
- package/src/verify-workflow-template.ts +1 -1
- package/src/watch-session.ts +102 -7
- package/src/work-layout.ts +6 -3
- package/src/workspace.ts +1 -1
|
@@ -163,7 +163,7 @@ export declare function performAdvanceArgs(args: string[], options: PerformAdvan
|
|
|
163
163
|
* runner — the easy-to-miss site).
|
|
164
164
|
*
|
|
165
165
|
* The promote-apply edge mirrors the existing drivers without a special case: an
|
|
166
|
-
* `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-
|
|
166
|
+
* `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-spec`)
|
|
167
167
|
* runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
|
|
168
168
|
* ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
|
|
169
169
|
* double-publish nor clobber the promote CAS.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-drivers.d.ts","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"advance-drivers.d.ts","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAQrE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,sBAAsB,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,CAC/B,OAAO,EAAE,kBAAkB,KACvB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,yEAAyE;AACzE,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC1B;AAED,sEAAsE;AACtE,KAAK,oBAAoB,GAAG,cAAc,CAAC;AAE3C,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,qFAAqF;IACrF,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IAClC,kEAAkE;IAClE,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,EAAE,eAAe,CAAC;IAC1B,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAmF7B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,0BAA0B,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAqCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,iCAAiC,CACtD,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,iBAAiB,GACpB,OAAO,CAAC,aAAa,CAAC,CAqBxB;AA+CD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAIhE;AAED,YAAY,EAAC,cAAc,EAAC,CAAC"}
|
package/dist/advance-drivers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { performAdvance, } from './advance.js';
|
|
2
2
|
import { pushTreelessResult, TREELESS_RUNGS, } from './advance-treeless-publish.js';
|
|
3
3
|
import { scanRepoPaths } from './scan.js';
|
|
4
|
+
import { heldTaskSlugs } from './item-lock.js';
|
|
4
5
|
import { ledgerRead } from './ledger-read.js';
|
|
5
6
|
import { selectPrioritised, taskableSpecs, } from './select-priority.js';
|
|
6
7
|
import { gatherLifecycleInPlace } from './lifecycle-gather.js';
|
|
@@ -32,11 +33,19 @@ export async function performAdvanceAuto(options) {
|
|
|
32
33
|
const note = options.note ?? (() => { });
|
|
33
34
|
const cwd = options.cwd;
|
|
34
35
|
const count = options.count ?? 1;
|
|
36
|
+
// Held-slug subtraction (task
|
|
37
|
+
// `in-place-scan-subtracts-held-locked-slugs-from-propose-matrix`): read the
|
|
38
|
+
// coordination arbiter's held task-lock refs and pass them into `scanRepoPaths`
|
|
39
|
+
// so a held item (`active`/`stuck`) is not selected into the build pool NOR the
|
|
40
|
+
// lifecycle surface/apply pools — the same subtraction the CI enumerate path
|
|
41
|
+
// runs. `heldTaskSlugs` is the GRACEFUL variant (empty set on any read fault):
|
|
42
|
+
// the follow-on claim CAS is still the load-bearing safety net locally.
|
|
43
|
+
const heldSlugs = await heldTaskSlugs(cwd, options.arbiter);
|
|
35
44
|
// Pool 1 — eligible TASKS via the EXISTING scan/select path. `scoreItems`
|
|
36
45
|
// inside `scanRepoPaths` gates eligibility on `autoBuild` (the build gate), so
|
|
37
46
|
// with `autoBuild` off NO task is selected — the build rung is never reached
|
|
38
47
|
// by the bare/`-n` selection.
|
|
39
|
-
const report = scanRepoPaths([cwd], options.config,
|
|
48
|
+
const report = scanRepoPaths([cwd], options.config, heldSlugs, options.override);
|
|
40
49
|
// Pool 2 — TASKABLE prds filtered by `autoslice-gate`'s predicate (gated on
|
|
41
50
|
// `autoTask`). With `autoTask` off NO spec is selected — the task rung is
|
|
42
51
|
// never reached by the bare/`-n` selection.
|
|
@@ -63,6 +72,9 @@ export async function performAdvanceAuto(options) {
|
|
|
63
72
|
repoPath: cwd,
|
|
64
73
|
read,
|
|
65
74
|
gates: options.lifecycleGates,
|
|
75
|
+
// Subtract held task slugs from the triage/surface/apply candidate inputs,
|
|
76
|
+
// symmetric to Pool 1's `scoreItems` subtraction above.
|
|
77
|
+
heldSlugs,
|
|
66
78
|
});
|
|
67
79
|
// Order across the (up to) FIVE pools per the resolved `selectionOrder` (apply
|
|
68
80
|
// pinned first) + bound by count — the SAME shared, pure `selectPrioritised` the
|
|
@@ -100,7 +112,7 @@ export async function performAdvanceArgs(args, options) {
|
|
|
100
112
|
repoPath: options.cwd,
|
|
101
113
|
slug: arg,
|
|
102
114
|
// The arg is passed VERBATIM to the tick (it does its own slug resolution
|
|
103
|
-
// across task/
|
|
115
|
+
// across task/spec/observation); the namespace is irrelevant for explicit args.
|
|
104
116
|
namespace: 'task',
|
|
105
117
|
}));
|
|
106
118
|
return runSelectedInSequence(selected, options, run, { verbatimArg: true });
|
|
@@ -158,7 +170,7 @@ async function runSelectedInSequence(selected, options, run, mode = {}) {
|
|
|
158
170
|
* runner — the easy-to-miss site).
|
|
159
171
|
*
|
|
160
172
|
* The promote-apply edge mirrors the existing drivers without a special case: an
|
|
161
|
-
* `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-
|
|
173
|
+
* `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-spec`)
|
|
162
174
|
* runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
|
|
163
175
|
* ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
|
|
164
176
|
* double-publish nor clobber the promote CAS.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-drivers.js","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,cAAc,GAKd,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,kBAAkB,EAClB,cAAc,GACd,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,aAAa,EAAC,MAAM,WAAW,CAAC;AACxC,OAAO,EAAC,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACN,iBAAiB,EACjB,aAAa,GAGb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,sBAAsB,EAAC,MAAM,uBAAuB,CAAC;AAuH7D;;;;;GAKG;AACH,MAAM,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,OAAmC;IAEnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,cAAc,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IAEjC,0EAA0E;IAC1E,+EAA+E;IAC/E,6EAA6E;IAC7E,8BAA8B;IAC9B,MAAM,MAAM,GAAG,aAAa,CAC3B,CAAC,GAAG,CAAC,EACL,OAAO,CAAC,MAAM,EACd,
|
|
1
|
+
{"version":3,"file":"advance-drivers.js","sourceRoot":"","sources":["../src/advance-drivers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-lifecycle-template.d.ts","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,uJACsG,CAAC;AAEtJ,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,oCACV,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,gBAAgB,GACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"advance-lifecycle-template.d.ts","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAG3D,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oEAAoE;AACpE,eAAO,MAAM,kCAAkC,uJACsG,CAAC;AAEtJ,8EAA8E;AAC9E,eAAO,MAAM,+BAA+B,oCACV,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,gBAAgB,GACtB,MAAM,CA6aR;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACvC,4EAA4E;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IAC1C,kEAAkE;IAClE,EAAE,EAAE,OAAO,CAAC;IACZ,iDAAiD;IACjD,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAC/C,IAAI,EAAE,MAAM,GACV,0BAA0B,CAsU5B"}
|
|
@@ -274,8 +274,19 @@ jobs:
|
|
|
274
274
|
outputs:
|
|
275
275
|
items: \${{ steps.scan.outputs.items }}
|
|
276
276
|
any: \${{ steps.scan.outputs.any }}
|
|
277
|
+
# Dynamic GitHub-backstop cap (spec
|
|
278
|
+
# \`graceful-pre-timeout-wip-checkpoint\`): the agent-leg jobs
|
|
279
|
+
# (advance-propose / advance-merge) read this as their
|
|
280
|
+
# \`timeout-minutes\` — replacing the retired static
|
|
281
|
+
# \`legTimeoutMinutes\`. Computed at run time from the committed
|
|
282
|
+
# \`dorfl.json\` (via \`dorfl config --json\`) as
|
|
283
|
+
# \`agentDeadlineMinutes + checkpointHeadroomMinutes\`, so an edit to
|
|
284
|
+
# \`dorfl.json\` reflects EVERYWHERE (the internal deadline the legs
|
|
285
|
+
# honour AND this GitHub cap) on the NEXT tick — no \`install-ci\`
|
|
286
|
+
# re-run, no baked-in YAML number.
|
|
287
|
+
githubTimeout: \${{ steps.timeout.outputs.githubTimeout }}
|
|
277
288
|
steps:
|
|
278
|
-
- uses: actions/checkout@
|
|
289
|
+
- uses: actions/checkout@v5
|
|
279
290
|
with:
|
|
280
291
|
fetch-depth: 0
|
|
281
292
|
- uses: ./.github/actions/dorfl-setup
|
|
@@ -319,6 +330,22 @@ jobs:
|
|
|
319
330
|
else
|
|
320
331
|
echo "any=false" >> "$GITHUB_OUTPUT"
|
|
321
332
|
fi
|
|
333
|
+
- id: timeout
|
|
334
|
+
# Dynamic GitHub-backstop cap (spec
|
|
335
|
+
# \`graceful-pre-timeout-wip-checkpoint\` — step 5): read the committed
|
|
336
|
+
# \`dorfl.json\` via \`dorfl config --json\` (in-place, so the resolution
|
|
337
|
+
# chain reads THIS repo's file exactly like \`scan --here\`), and emit
|
|
338
|
+
# \`githubTimeout = agentDeadlineMinutes + checkpointHeadroomMinutes\` as
|
|
339
|
+
# a job OUTPUT the agent-leg jobs consume via
|
|
340
|
+
# \`timeout-minutes: \${{ needs.enumerate.outputs.githubTimeout }}\`. So
|
|
341
|
+
# the SAME committed config drives BOTH the legs' internal deadline AND
|
|
342
|
+
# this GitHub cap — edit + commit, next tick uses it for both, no
|
|
343
|
+
# \`install-ci\` re-run, no baked YAML number. \`dorfl.json\` is the
|
|
344
|
+
# single source read at run time by BOTH consumers.
|
|
345
|
+
run: |
|
|
346
|
+
cap="$(dorfl config --json \\
|
|
347
|
+
| jq '.agentDeadlineMinutes + .checkpointHeadroomMinutes')"
|
|
348
|
+
echo "githubTimeout=\${cap}" >> "$GITHUB_OUTPUT"
|
|
322
349
|
|
|
323
350
|
# ── PROPOSE: a MATRIX of independent jobs (one PR per item) ──────────────────
|
|
324
351
|
# True parallelism — each item is an independent PR, so a matrix is the right
|
|
@@ -330,6 +357,20 @@ jobs:
|
|
|
330
357
|
needs: enumerate
|
|
331
358
|
if: \${{ (github.event.inputs.integrationMode || 'propose') == 'propose' && needs.enumerate.outputs.any == 'true' }}
|
|
332
359
|
runs-on: ubuntu-latest
|
|
360
|
+
# Per-leg wall-clock cap: the DYNAMIC GitHub backstop the enumerate job
|
|
361
|
+
# emits (spec \`graceful-pre-timeout-wip-checkpoint\`), computed at run
|
|
362
|
+
# time from the committed \`dorfl.json\` as
|
|
363
|
+
# \`agentDeadlineMinutes + checkpointHeadroomMinutes\`. It is a STRICTLY
|
|
364
|
+
# LARGER backstop than the dorfl-internal deadline the leg self-stops at
|
|
365
|
+
# (which SAVES its WIP + auto-continues on the next tick), so the GitHub
|
|
366
|
+
# SIGKILL only fires if the graceful save itself wedges. Editing
|
|
367
|
+
# \`dorfl.json\` flips BOTH the internal deadline AND this cap on the
|
|
368
|
+
# next tick — no \`install-ci\` re-run, no baked-in YAML number.
|
|
369
|
+
# A job output is always a STRING; \`timeout-minutes\` needs an INTEGER, so
|
|
370
|
+
# coerce it with \`fromJson(...)\` (the same pattern the \`item\` matrix uses).
|
|
371
|
+
# A raw \`\${{ ... }}\` substitution makes GitHub reject it ("Unexpected
|
|
372
|
+
# value '45'").
|
|
373
|
+
timeout-minutes: \${{ fromJson(needs.enumerate.outputs.githubTimeout) }}
|
|
333
374
|
strategy:
|
|
334
375
|
# Independent PRs: one failing item must NOT cancel the others.
|
|
335
376
|
fail-fast: false
|
|
@@ -342,7 +383,7 @@ jobs:
|
|
|
342
383
|
matrix:
|
|
343
384
|
item: \${{ fromJson(needs.enumerate.outputs.items) }}
|
|
344
385
|
steps:
|
|
345
|
-
- uses: actions/checkout@
|
|
386
|
+
- uses: actions/checkout@v5
|
|
346
387
|
with:
|
|
347
388
|
fetch-depth: 0
|
|
348
389
|
- uses: ./.github/actions/dorfl-setup${setupWith}
|
|
@@ -393,6 +434,10 @@ jobs:
|
|
|
393
434
|
needs: enumerate
|
|
394
435
|
if: \${{ (github.event.inputs.integrationMode || 'propose') == 'merge' && needs.enumerate.outputs.any == 'true' }}
|
|
395
436
|
runs-on: ubuntu-latest
|
|
437
|
+
# Per-leg wall-clock cap: the DYNAMIC GitHub backstop the enumerate job
|
|
438
|
+
# emits (see advance-propose for the rationale). \`fromJson(...)\` coerces the
|
|
439
|
+
# string job output to the INTEGER \`timeout-minutes\` requires.
|
|
440
|
+
timeout-minutes: \${{ fromJson(needs.enumerate.outputs.githubTimeout) }}
|
|
396
441
|
strategy:
|
|
397
442
|
# Independent landings: one failing item must NOT cancel the others; a
|
|
398
443
|
# loser of the CAS race re-rebases + re-gates + retries.
|
|
@@ -403,7 +448,7 @@ jobs:
|
|
|
403
448
|
matrix:
|
|
404
449
|
item: \${{ fromJson(needs.enumerate.outputs.items) }}
|
|
405
450
|
steps:
|
|
406
|
-
- uses: actions/checkout@
|
|
451
|
+
- uses: actions/checkout@v5
|
|
407
452
|
with:
|
|
408
453
|
fetch-depth: 0
|
|
409
454
|
- uses: ./.github/actions/dorfl-setup${setupWith}
|
|
@@ -453,7 +498,7 @@ jobs:
|
|
|
453
498
|
if: \${{ (github.event.inputs.sweepMergedBranches || 'true') == 'true' }}
|
|
454
499
|
runs-on: ubuntu-latest
|
|
455
500
|
steps:
|
|
456
|
-
- uses: actions/checkout@
|
|
501
|
+
- uses: actions/checkout@v5
|
|
457
502
|
with:
|
|
458
503
|
fetch-depth: 0
|
|
459
504
|
- uses: ./.github/actions/dorfl-setup
|
|
@@ -660,6 +705,33 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
660
705
|
'so the WHOLE answer-loop (triage + surface + apply) runs in propose mode, ' +
|
|
661
706
|
'not only in merge mode ' +
|
|
662
707
|
'(`ci-propose-matrix-enumerates-lifecycle-items`).');
|
|
708
|
+
// --- DYNAMIC GitHub backstop (spec `graceful-pre-timeout-wip-checkpoint`) ---
|
|
709
|
+
// The agent-leg jobs (advance-propose / advance-merge) must consume the
|
|
710
|
+
// enumerate job's dynamic `githubTimeout` output, NOT a baked-in number. This
|
|
711
|
+
// closes the drift where the static `legTimeoutMinutes` render only refreshed
|
|
712
|
+
// on `install-ci` re-run; now the same committed `dorfl.json` drives BOTH the
|
|
713
|
+
// internal deadline AND the GitHub cap on every tick.
|
|
714
|
+
require('enumerate-emits-github-timeout-output', /enumerate:[\s\S]*?outputs:[\s\S]*?githubTimeout:/.test(text), 'the `enumerate` job must declare a `githubTimeout` job OUTPUT (computed ' +
|
|
715
|
+
'from the committed `dorfl.json` as ' +
|
|
716
|
+
'`agentDeadlineMinutes + checkpointHeadroomMinutes`).');
|
|
717
|
+
require('enumerate-reads-dorfl-config-json', /dorfl config --json/.test(text), 'the `enumerate` job must read the committed config via ' +
|
|
718
|
+
'`dorfl config --json` at run time (so an edit to `dorfl.json` ' +
|
|
719
|
+
'reflects on the next tick without an `install-ci` re-run).');
|
|
720
|
+
require('enumerate-computes-deadline-plus-headroom', /agentDeadlineMinutes \+ checkpointHeadroomMinutes/.test(text), 'the `enumerate` job must compute `githubTimeout` as ' +
|
|
721
|
+
'`agentDeadlineMinutes + checkpointHeadroomMinutes` (the backstop is ' +
|
|
722
|
+
'DELIBERATELY head-room above the internal deadline).');
|
|
723
|
+
require('propose-uses-dynamic-github-timeout', /advance-propose:[\s\S]*?timeout-minutes:\s*\$\{\{\s*fromJson\(needs\.enumerate\.outputs\.githubTimeout\)\s*\}\}/.test(text), 'the `advance-propose` job must set `timeout-minutes: ${{ ' +
|
|
724
|
+
'fromJson(needs.enumerate.outputs.githubTimeout) }}` (the DYNAMIC GitHub ' +
|
|
725
|
+
'backstop, fromJson-coerced to an integer, not a baked-in number).');
|
|
726
|
+
require('merge-uses-dynamic-github-timeout', /advance-merge:[\s\S]*?timeout-minutes:\s*\$\{\{\s*fromJson\(needs\.enumerate\.outputs\.githubTimeout\)\s*\}\}/.test(text), 'the `advance-merge` job must set `timeout-minutes: ${{ ' +
|
|
727
|
+
'fromJson(needs.enumerate.outputs.githubTimeout) }}` (the DYNAMIC GitHub ' +
|
|
728
|
+
'backstop, fromJson-coerced to an integer).');
|
|
729
|
+
// A baked static `timeout-minutes: <number>` on an agent-leg job is the
|
|
730
|
+
// retired `legTimeoutMinutes` render — forbid it so a future edit cannot
|
|
731
|
+
// silently re-introduce the drift the dynamic backstop is fixing.
|
|
732
|
+
require('no-static-agent-leg-timeout', !/(?:advance-propose|advance-merge):[\s\S]*?timeout-minutes:\s*\d/.test(text), 'no agent-leg job may set a baked-in numeric `timeout-minutes` ' +
|
|
733
|
+
'(the retired `legTimeoutMinutes` render); the GitHub backstop is ' +
|
|
734
|
+
'DYNAMIC (read from `dorfl.json` at run time).');
|
|
663
735
|
// --- Wires the SHARED composite setup action -------------------------------
|
|
664
736
|
require('uses-shared-setup-action', /uses:\s*\.\/\.github\/actions\/dorfl-setup\b/.test(text), 'every job must wire the shared composite setup action ' +
|
|
665
737
|
'(`./.github/actions/dorfl-setup`, emitted by the core task).');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-lifecycle-template.js","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAGH,OAAO,EAAC,wBAAwB,EAAC,MAAM,sBAAsB,CAAC;AAE9D,6EAA6E;AAC7E,MAAM,CAAC,MAAM,+BAA+B,GAAG,mBAAmB,CAAC;AAEnE,oEAAoE;AACpE,MAAM,CAAC,MAAM,kCAAkC,GAC9C,oJAAoJ,CAAC;AAEtJ,8EAA8E;AAC9E,MAAM,CAAC,MAAM,+BAA+B,GAC3C,iCAAiC,CAAC;AAEnC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gCAAgC,CAC/C,MAAwB;IAExB,wEAAwE;IACxE,8EAA8E;IAC9E,gFAAgF;IAChF,oEAAoE;IACpE,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO
|
|
1
|
+
{"version":3,"file":"advance-lifecycle-template.js","sourceRoot":"","sources":["../src/advance-lifecycle-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,6 +88,29 @@ export interface PushTreelessResultParams {
|
|
|
88
88
|
* top of this file. Mirrors `integration-core.ts`'s `DEFAULT_MERGE_JITTER_MS`.
|
|
89
89
|
*/
|
|
90
90
|
export declare const DEFAULT_TREELESS_JITTER_MS = 25;
|
|
91
|
+
/**
|
|
92
|
+
* Stderr signatures of a PERMANENT push rejection that NO re-fetch+rebase can
|
|
93
|
+
* ever cure, so the retry loop MUST stop at once instead of burning the whole
|
|
94
|
+
* liveness ceiling ({@link PushTreelessResultParams.retries}, `1000` in prod) on
|
|
95
|
+
* identical round-trips.
|
|
96
|
+
*
|
|
97
|
+
* The tree-less rungs publish by a DIRECT `git push HEAD:main` of a freshly-made
|
|
98
|
+
* commit (see the module header). If the arbiter's `main` hard-requires a status
|
|
99
|
+
* check on EVERY push (GitHub classic branch protection with a non-empty
|
|
100
|
+
* `required_status_checks.contexts`, or a `pre-receive`/ruleset hook), that fresh
|
|
101
|
+
* commit is rejected with `GH006 ... Required status check "..." is expected` /
|
|
102
|
+
* `protected branch hook declined` / `pre-receive hook declined`. A rebase onto
|
|
103
|
+
* the newest `main` does NOT change the fact that the pushed commit has no green
|
|
104
|
+
* check, so retrying is pointless: the push is rejected identically every time.
|
|
105
|
+
*
|
|
106
|
+
* This is DISTINCT from a fast-forward RACE (`non-fast-forward` / `fetch first` /
|
|
107
|
+
* `stale info`), which a rebase DOES cure — and it must win OVER the broad
|
|
108
|
+
* `rejected` contention alternation, because a protected-branch rejection
|
|
109
|
+
* literally contains the word `rejected` (`! [remote rejected] HEAD -> main
|
|
110
|
+
* (protected branch hook declined)`) and would otherwise be mis-read as a race
|
|
111
|
+
* and retried uselessly. See the observation trail for the live incident.
|
|
112
|
+
*/
|
|
113
|
+
export declare const PERMANENT_PUSH_REJECTION: RegExp;
|
|
91
114
|
/**
|
|
92
115
|
* Fast-forward-push the working clone's `main` to the arbiter after a tree-less
|
|
93
116
|
* rung committed locally, so the sidecar / marker LANDS on the arbiter. Re-fetches
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-treeless-publish.d.ts","sourceRoot":"","sources":["../src/advance-treeless-publish.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,WAAW,wBAAwB;IACxC,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;;OASG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,uDAAuD;IACvD,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"advance-treeless-publish.d.ts","sourceRoot":"","sources":["../src/advance-treeless-publish.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,MAAM,WAAW,wBAAwB;IACxC,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;;;OASG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;IACnC,uDAAuD;IACvD,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1B;AAED;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,wBAAwB,QACwD,CAAC;AAM9F;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,MAAM,EAAE,wBAAwB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAI7C,CAAC"}
|
|
@@ -5,6 +5,29 @@ import { runAsync } from './git.js';
|
|
|
5
5
|
* top of this file. Mirrors `integration-core.ts`'s `DEFAULT_MERGE_JITTER_MS`.
|
|
6
6
|
*/
|
|
7
7
|
export const DEFAULT_TREELESS_JITTER_MS = 25;
|
|
8
|
+
/**
|
|
9
|
+
* Stderr signatures of a PERMANENT push rejection that NO re-fetch+rebase can
|
|
10
|
+
* ever cure, so the retry loop MUST stop at once instead of burning the whole
|
|
11
|
+
* liveness ceiling ({@link PushTreelessResultParams.retries}, `1000` in prod) on
|
|
12
|
+
* identical round-trips.
|
|
13
|
+
*
|
|
14
|
+
* The tree-less rungs publish by a DIRECT `git push HEAD:main` of a freshly-made
|
|
15
|
+
* commit (see the module header). If the arbiter's `main` hard-requires a status
|
|
16
|
+
* check on EVERY push (GitHub classic branch protection with a non-empty
|
|
17
|
+
* `required_status_checks.contexts`, or a `pre-receive`/ruleset hook), that fresh
|
|
18
|
+
* commit is rejected with `GH006 ... Required status check "..." is expected` /
|
|
19
|
+
* `protected branch hook declined` / `pre-receive hook declined`. A rebase onto
|
|
20
|
+
* the newest `main` does NOT change the fact that the pushed commit has no green
|
|
21
|
+
* check, so retrying is pointless: the push is rejected identically every time.
|
|
22
|
+
*
|
|
23
|
+
* This is DISTINCT from a fast-forward RACE (`non-fast-forward` / `fetch first` /
|
|
24
|
+
* `stale info`), which a rebase DOES cure — and it must win OVER the broad
|
|
25
|
+
* `rejected` contention alternation, because a protected-branch rejection
|
|
26
|
+
* literally contains the word `rejected` (`! [remote rejected] HEAD -> main
|
|
27
|
+
* (protected branch hook declined)`) and would otherwise be mis-read as a race
|
|
28
|
+
* and retried uselessly. See the observation trail for the live incident.
|
|
29
|
+
*/
|
|
30
|
+
export const PERMANENT_PUSH_REJECTION = /GH006|protected branch|hook declined|required status check|cannot force-update the branch/i;
|
|
8
31
|
function sleepMs(ms) {
|
|
9
32
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
10
33
|
}
|
|
@@ -23,6 +46,24 @@ export async function pushTreelessResult(params) {
|
|
|
23
46
|
if (push.status === 0) {
|
|
24
47
|
return;
|
|
25
48
|
}
|
|
49
|
+
// A PERMANENT rejection (branch protection / required status check / a
|
|
50
|
+
// pre-receive or ruleset hook) can NEVER be cured by a rebase+re-push — the
|
|
51
|
+
// fresh commit still carries no green check — so stop AT ONCE with an honest,
|
|
52
|
+
// distinct note instead of exhausting the liveness ceiling on identical
|
|
53
|
+
// round-trips. This MUST be checked before `contended`, because a protected-
|
|
54
|
+
// branch rejection contains the word `rejected` and would otherwise be
|
|
55
|
+
// mistaken for a fast-forward race and retried uselessly (see the incident
|
|
56
|
+
// observation).
|
|
57
|
+
if (PERMANENT_PUSH_REJECTION.test(push.stderr)) {
|
|
58
|
+
note(`advance: the arbiter's \`main\` rejected the direct tree-less push ` +
|
|
59
|
+
`(${push.stderr.trim() || 'protected branch'}); a re-fetch+rebase cannot ` +
|
|
60
|
+
`cure a required-status-check / protected-branch rule on a direct push, so ` +
|
|
61
|
+
`the work is saved in the working clone for the next pass / a human. ` +
|
|
62
|
+
`Reconcile \`main\`'s protection so direct tree-less ledger writes are ` +
|
|
63
|
+
`allowed (the required check belongs in a ruleset with ` +
|
|
64
|
+
`\`do_not_enforce_on_create\`, not the classic on-every-push gate).`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
26
67
|
const contended = /non-fast-forward|rejected|fetch first|stale info/i.test(push.stderr);
|
|
27
68
|
if (!contended || i === retries) {
|
|
28
69
|
note(`advance: could not publish the tree-less result to ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-treeless-publish.js","sourceRoot":"","sources":["../src/advance-treeless-publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,UAAU,CAAC;AAuFlC;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C,SAAS,OAAO,CAAC,EAAU;IAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,MAAgC;IAEhC,MAAM,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAC,GAAG,MAAM,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,0BAA0B,CAAC;IAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAC1B,KAAK,EACL,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,EACzC,GAAG,EACH,EAAC,GAAG,EAAC,CACL,CAAC;QACF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QACD,MAAM,SAAS,GAAG,mDAAmD,CAAC,IAAI,CACzE,IAAI,CAAC,MAAM,CACX,CAAC;QACF,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CACH,qDAAqD;gBACpD,GAAG,OAAO,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,aAAa,iBAAiB;gBACxE,gEAAgE,CACjE,CAAC;YACF,OAAO;QACR,CAAC;QACD,gFAAgF;QAChF,0EAA0E;QAC1E,0EAA0E;QAC1E,8EAA8E;QAC9E,uBAAuB;QACvB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,gFAAgF;QAChF,8EAA8E;QAC9E,8EAA8E;QAC9E,2EAA2E;QAC3E,+EAA+E;QAC/E,8EAA8E;QAC9E,YAAY;QACZ,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC5B,KAAK,EACL,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,OAAO,CAAC,EACxC,GAAG,EACH,EAAC,GAAG,EAAC,CACL,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,EAAC,GAAG,EAAC,CAAC,CAAC;YACzD,IAAI,CACH,iDAAiD,OAAO,SAAS;gBAChE,qEAAqE,CACtE,CAAC;YACF,OAAO;QACR,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IAC1D,SAAS;IACT,OAAO;IACP,oBAAoB;CACpB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"advance-treeless-publish.js","sourceRoot":"","sources":["../src/advance-treeless-publish.ts"],"names":[],"mappings":"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"}
|
package/dist/advance.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ import { type ApplyDecider } from './apply-decide.js';
|
|
|
13
13
|
import { type SurfacePersistOptions, type SurfacePersistResult } from './surface-persist.js';
|
|
14
14
|
import { type ApplyAnsweredQuestionsOptions, type ApplyAnsweredQuestionsResult } from './apply-persist.js';
|
|
15
15
|
import { type MergeActionHandler } from './apply-merge-action.js';
|
|
16
|
+
import { type StuckActionHandler } from './apply-stuck-action.js';
|
|
16
17
|
import type { VerifyConfig } from './verify.js';
|
|
17
18
|
import type { NewQuestion } from './sidecar.js';
|
|
18
19
|
/**
|
|
@@ -28,7 +29,30 @@ import type { NewQuestion } from './sidecar.js';
|
|
|
28
29
|
* distinguished at this seam (a human typo also skips benignly) and the matrix
|
|
29
30
|
* scale of the calm condition justifies the trade.
|
|
30
31
|
*/
|
|
31
|
-
export type AdvanceOutcome = 'advanced' | 'no-op' | 'vanished'
|
|
32
|
+
export type AdvanceOutcome = 'advanced' | 'no-op' | 'vanished'
|
|
33
|
+
/**
|
|
34
|
+
* The triage/apply promote leg found the task it would mint ALREADY EXISTS on
|
|
35
|
+
* the arbiter AND was PROVABLY minted from THIS observation in a prior run (its
|
|
36
|
+
* `promotedFrom:` back-reference matches) — an idempotency fact, so the source was
|
|
37
|
+
* already triaged. `exitCode: 0` (the matrix tolerates it, so it does NOT red CI),
|
|
38
|
+
* DISTINGUISHABLE from `vanished` (item file gone) and `no-op` (calm classify) so
|
|
39
|
+
* reviewers can grep it. The LOUD `lost` (exit 2) is reserved for a genuine
|
|
40
|
+
* concurrent-create race with an UNRELATED same-path item, where a retry helps.
|
|
41
|
+
* (task `observation-triage-already-triaged-benign-skip`; sibling of the
|
|
42
|
+
* stale-snapshot / held-lock CI-noise fixes.)
|
|
43
|
+
*/
|
|
44
|
+
| 'already-triaged' | 'usage-error' | 'lost' | 'contended' | 'not-implemented' | 'invariant-violation'
|
|
45
|
+
/**
|
|
46
|
+
* The answered-merge dispatcher REFUSED the land on the rebased tip (RED
|
|
47
|
+
* re-verify, rebase conflict, or a pre-checkout failure). Distinct from
|
|
48
|
+
* `usage-error` (which is reserved for genuine caller-usage errors — e.g.
|
|
49
|
+
* the workspacesDir-unset guard below). `performIntegration` has already
|
|
50
|
+
* routed the item to needs-attention via its shared seam, so `main` never
|
|
51
|
+
* received a failing tree; the sidecar is LEFT IN PLACE so the open answer
|
|
52
|
+
* stays surfaced for a human follow-up. `exitCode: 1`.
|
|
53
|
+
* (task `merge-action-nits-followup` nit 2.)
|
|
54
|
+
*/
|
|
55
|
+
| 'merge-refused';
|
|
32
56
|
/** Maps onto the claim-CAS exit codes (identical semantics). */
|
|
33
57
|
export type AdvanceExitCode = 0 | 1 | 2 | 3;
|
|
34
58
|
/**
|
|
@@ -56,7 +80,7 @@ export interface RungExecutor {
|
|
|
56
80
|
export interface RungExecInput {
|
|
57
81
|
/** The canonical namespaced identity (`task:<slug>` / `spec:<slug>` / `observation:<slug>`). */
|
|
58
82
|
item: string;
|
|
59
|
-
/** The resolved namespace (`task` / `
|
|
83
|
+
/** The resolved namespace (`task` / `spec` / `observation`). */
|
|
60
84
|
namespace: SlugNamespace;
|
|
61
85
|
/** The bare slug. */
|
|
62
86
|
slug: string;
|
|
@@ -136,8 +160,8 @@ export interface AdvanceContext {
|
|
|
136
160
|
* The AGENTIC apply DECISION seam (task
|
|
137
161
|
* `agentic-apply-retire-disposition-vocabulary`): the fresh-context decision
|
|
138
162
|
* agent the apply rung runs on a fully-answered OBSERVATION to choose what to DO
|
|
139
|
-
* with the signal (`mint-task | mint-spec | mint-adr |
|
|
140
|
-
* ask-follow-up`),
|
|
163
|
+
* with the signal (`mint-task | mint-spec | mint-adr | dispose-source |
|
|
164
|
+
* resolve-no-mint | ask-follow-up`),
|
|
141
165
|
* grounded in the source's full context. It is the injected
|
|
142
166
|
* {@link ApplyDecider} the shared `decide(input, allowedOutcomes)` engine runs;
|
|
143
167
|
* tests inject a CANNED verdict (no model). `undefined` ⇒ the apply rung defaults
|
|
@@ -206,9 +230,13 @@ export interface AdvanceContext {
|
|
|
206
230
|
* The execution working area (`workspacesDir`, default `~/.dorfl`) the
|
|
207
231
|
* answered-merge LAND uses to cut a per-job worktree from the hub mirror
|
|
208
232
|
* (via `workspace.ts` `createJob`). Unset ⇒ no `workspacesDir` is available
|
|
209
|
-
* to the dispatcher, so an answered `kind: merge` entry is REFUSED
|
|
210
|
-
*
|
|
211
|
-
*
|
|
233
|
+
* to the dispatcher, so an answered `kind: merge` entry is REFUSED as a
|
|
234
|
+
* genuine caller-usage error (outcome `usage-error`, `exitCode: 1`) and the
|
|
235
|
+
* answer stays surfaced for a follow-up — threading `workspacesDir` is the
|
|
236
|
+
* caller's contract, and forgetting it gets this documented clean refusal
|
|
237
|
+
* rather than a mysterious downstream failure (task
|
|
238
|
+
* `merge-action-nits-followup` nit 3). The registry-set advance driver
|
|
239
|
+
* threads the resolved `workspacesDir` here.
|
|
212
240
|
* (spec `land-time-reverify-and-parallel-merge-ceiling`, task
|
|
213
241
|
* `apply-rung-merge-disposition`)
|
|
214
242
|
*/
|
|
@@ -254,6 +282,20 @@ export interface AdvanceContext {
|
|
|
254
282
|
* WITHOUT spinning up a hub mirror or running real verify.
|
|
255
283
|
*/
|
|
256
284
|
mergeAction?: MergeActionHandler;
|
|
285
|
+
/**
|
|
286
|
+
* The stuck-action dispatch SEAM (task
|
|
287
|
+
* `apply-resolve-reset-flag-discards-work-branch`, spec
|
|
288
|
+
* `surface-stuck-as-questions-and-retire-stuck-lock-state`): the
|
|
289
|
+
* deterministic answer-driven runner-action handler the apply rung invokes
|
|
290
|
+
* BEFORE the fall-through persist when an answered `kind: 'stuck'` entry
|
|
291
|
+
* (the shape the bounce-surface path stamps) is detected. Production wires
|
|
292
|
+
* {@link performStuckAction} (drives the shared
|
|
293
|
+
* `deleteRemoteWorkBranchIfPresent` primitive on `reset`); tests inject a
|
|
294
|
+
* stub so they assert on the apply-rung's `keep | reset | refused | cancel`
|
|
295
|
+
* routing WITHOUT touching a real arbiter. The deterministic sibling of
|
|
296
|
+
* {@link mergeAction} for the `kind: 'stuck'` axis.
|
|
297
|
+
*/
|
|
298
|
+
stuckAction?: StuckActionHandler;
|
|
257
299
|
/** Sink for human-readable progress notes. */
|
|
258
300
|
note?: (message: string) => void;
|
|
259
301
|
}
|
|
@@ -330,6 +372,16 @@ export declare function readItemSignals(input: ReadSignalsInput): ItemSignals;
|
|
|
330
372
|
* 2026-06-09 UPDATE confirms routes through `performIntegration`).
|
|
331
373
|
*/
|
|
332
374
|
export declare const defaultRungExecutor: RungExecutor;
|
|
375
|
+
/**
|
|
376
|
+
* The DETERMINISTIC triage question the triage rung ALWAYS surfaces for an
|
|
377
|
+
* untriaged observation (the "no limbo, ever" contract). It is engine-built (NOT
|
|
378
|
+
* LLM output), so it can never be zeroed out or flake: every untriaged observation
|
|
379
|
+
* gets exactly this question, and the human answers it via the sidecar — a record,
|
|
380
|
+
* a rationale note, and a fresh-bug signal are all treated identically (the human
|
|
381
|
+
* decides the disposition). The `surface-questions` agent runs ADDITIVELY on top,
|
|
382
|
+
* adding any extra pointed questions it extracts from the body.
|
|
383
|
+
*/
|
|
384
|
+
export declare function buildTriageBaseQuestion(): NewQuestion;
|
|
333
385
|
/**
|
|
334
386
|
* Run ONE `advance` tick over a SINGLE named item: classify → lock → dispatch →
|
|
335
387
|
* release. The pure tick the drivers (later tasks) wrap. The expensive phase is
|
package/dist/advance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../src/advance.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,aAAa,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAe,KAAK,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAGN,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAY,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AACjE,OAAO,EAGN,KAAK,WAAW,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAoB,KAAK,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AACnD,OAAO,EAGN,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAU,KAAK,cAAc,EAAE,KAAK,aAAa,EAAC,MAAM,eAAe,CAAC;AAO/E,OAAO,EAIN,KAAK,YAAY,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEN,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEN,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGN,KAAK,kBAAkB,EAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AA+C9C;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GACvB,UAAU,GACV,OAAO,GACP,UAAU,
|
|
1
|
+
{"version":3,"file":"advance.d.ts","sourceRoot":"","sources":["../src/advance.ts"],"names":[],"mappings":"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"}
|