dorfl 0.1.1 → 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-ci-template.d.ts +3 -3
- package/dist/advance-ci-template.js +1 -1
- package/dist/advance-ci-template.js.map +1 -1
- package/dist/advance-classify.d.ts +5 -5
- package/dist/advance-classify.d.ts.map +1 -1
- package/dist/advance-classify.js +4 -4
- package/dist/advance-drivers.d.ts +8 -8
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +20 -8
- package/dist/advance-drivers.js.map +1 -1
- package/dist/advance-isolated.d.ts +3 -3
- package/dist/advance-isolated.d.ts.map +1 -1
- package/dist/advance-isolated.js +1 -1
- package/dist/advance-lifecycle-template.d.ts +2 -2
- package/dist/advance-lifecycle-template.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +85 -13
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/advance-loop-driver.d.ts +3 -3
- package/dist/advance-loop-driver.d.ts.map +1 -1
- package/dist/advance-loop-driver.js +1 -1
- package/dist/advance-treeless-publish.d.ts +24 -1
- 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 +69 -17
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +409 -102
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +31 -3
- package/dist/advancing-lock.d.ts.map +1 -1
- package/dist/advancing-lock.js +55 -5
- 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 +19 -5
- package/dist/apply-decide.d.ts.map +1 -1
- package/dist/apply-decide.js +38 -9
- package/dist/apply-decide.js.map +1 -1
- package/dist/apply-merge-action.d.ts +20 -8
- package/dist/apply-merge-action.d.ts.map +1 -1
- package/dist/apply-merge-action.js +44 -9
- package/dist/apply-merge-action.js.map +1 -1
- package/dist/apply-persist.d.ts +62 -31
- package/dist/apply-persist.d.ts.map +1 -1
- package/dist/apply-persist.js +173 -44
- 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/buildable-body.d.ts +14 -14
- package/dist/buildable-body.js +9 -9
- package/dist/claim-cas.d.ts +3 -3
- package/dist/claim-cas.js +1 -1
- package/dist/claim-cas.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 +385 -128
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.d.ts +3 -3
- package/dist/close-job-template.js +9 -9
- package/dist/close-job.d.ts +8 -8
- package/dist/close-job.js +25 -25
- package/dist/close-job.js.map +1 -1
- package/dist/complete.d.ts +9 -6
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +99 -45
- package/dist/complete.js.map +1 -1
- package/dist/concurrency.d.ts +1 -1
- package/dist/concurrency.js +1 -1
- package/dist/config.d.ts +86 -40
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +61 -9
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts +1 -1
- package/dist/continue-branch.d.ts.map +1 -1
- package/dist/continue-branch.js +23 -1
- package/dist/continue-branch.js.map +1 -1
- package/dist/cwd-section.js +1 -1
- package/dist/cwd-section.js.map +1 -1
- package/dist/decision-engine.d.ts +39 -11
- 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 +6 -6
- package/dist/do-autopick.d.ts.map +1 -1
- package/dist/do-autopick.js +16 -6
- package/dist/do-autopick.js.map +1 -1
- package/dist/do-config.d.ts +4 -4
- package/dist/do-config.js +3 -3
- package/dist/do-config.js.map +1 -1
- package/dist/do-remote-auto.d.ts +2 -2
- package/dist/do-remote-auto.js +1 -1
- package/dist/do.d.ts +74 -81
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +439 -50
- package/dist/do.js.map +1 -1
- package/dist/drop-source.d.ts +2 -2
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +19 -11
- 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 +13 -30
- package/dist/format.js.map +1 -1
- package/dist/frontmatter.d.ts +28 -15
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +38 -24
- 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 +133 -39
- package/dist/install-ci-branch-protection.d.ts.map +1 -1
- package/dist/install-ci-branch-protection.js +191 -49
- package/dist/install-ci-branch-protection.js.map +1 -1
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +1 -1
- package/dist/install-ci-capabilities/advance-lifecycle.js +1 -1
- package/dist/install-ci-capabilities/close-job.d.ts +1 -1
- package/dist/install-ci-capabilities/close-job.js +1 -1
- package/dist/install-ci-capabilities/example-noop.d.ts +1 -1
- package/dist/install-ci-capabilities/example-noop.js +1 -1
- package/dist/install-ci-capabilities/intake.d.ts +2 -2
- package/dist/install-ci-capabilities/intake.js +2 -2
- package/dist/install-ci-capabilities/verify.d.ts +1 -1
- package/dist/install-ci-capabilities/verify.js +1 -1
- package/dist/install-ci-core.d.ts +24 -4
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +12 -5
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +33 -1
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +74 -1
- package/dist/install-ci-github.js.map +1 -1
- package/dist/install-ci.d.ts +1 -1
- package/dist/install-ci.js +4 -4
- package/dist/install-ci.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-event.d.ts +6 -6
- package/dist/intake-event.js +6 -6
- package/dist/intake-marker.d.ts +3 -3
- package/dist/intake-marker.d.ts.map +1 -1
- package/dist/intake-triage.d.ts +1 -1
- package/dist/intake-triage.js +2 -2
- package/dist/intake-trigger-template.d.ts +8 -8
- package/dist/intake-trigger-template.d.ts.map +1 -1
- package/dist/intake-trigger-template.js +17 -17
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts +65 -52
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +92 -76
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +27 -24
- package/dist/integration-core.d.ts.map +1 -1
- package/dist/integration-core.js +191 -77
- 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 +4 -4
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +9 -0
- package/dist/isolation.js.map +1 -1
- package/dist/issue-provider.d.ts +4 -4
- package/dist/issue-provider.js +1 -1
- package/dist/item-lock.d.ts +216 -149
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +345 -270
- package/dist/item-lock.js.map +1 -1
- package/dist/item-path.d.ts +2 -2
- package/dist/item-path.js +2 -2
- package/dist/ledger-lint.d.ts +9 -9
- package/dist/ledger-lint.js +9 -9
- package/dist/ledger-read.d.ts +57 -57
- package/dist/ledger-read.d.ts.map +1 -1
- package/dist/ledger-read.js +24 -24
- package/dist/ledger-read.js.map +1 -1
- package/dist/ledger-write.d.ts +33 -28
- 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 +18 -1
- package/dist/lifecycle-gather.d.ts.map +1 -1
- package/dist/lifecycle-gather.js +23 -17
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/lifecycle-pools.d.ts +44 -7
- package/dist/lifecycle-pools.d.ts.map +1 -1
- package/dist/lifecycle-pools.js +27 -7
- package/dist/lifecycle-pools.js.map +1 -1
- package/dist/merge-question-surfacer.d.ts +18 -4
- package/dist/merge-question-surfacer.d.ts.map +1 -1
- package/dist/merge-question-surfacer.js +20 -5
- 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/mint-adr.js +4 -4
- package/dist/mirror-pool-scan.d.ts +2 -2
- package/dist/mirror-pool-scan.js +3 -3
- package/dist/mirror-pool-scan.js.map +1 -1
- package/dist/needs-attention.d.ts +304 -27
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +542 -67
- package/dist/needs-attention.js.map +1 -1
- package/dist/orphan-sidecar.d.ts +10 -6
- 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 +8 -8
- package/dist/placement.js +3 -3
- 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/prompt.d.ts +16 -19
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +17 -19
- package/dist/prompt.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/readiness.d.ts +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 +6 -1
- 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 +64 -18
- 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-gate.d.ts +3 -3
- package/dist/review-gate.d.ts.map +1 -1
- package/dist/review-gate.js +11 -10
- package/dist/review-gate.js.map +1 -1
- package/dist/review-verdict.d.ts +2 -2
- package/dist/review-verdict.d.ts.map +1 -1
- package/dist/review-verdict.js +2 -2
- package/dist/review-verdict.js.map +1 -1
- package/dist/run.d.ts +2 -2
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +58 -23
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +26 -17
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +29 -15
- package/dist/scan.js.map +1 -1
- package/dist/select-order.d.ts +1 -1
- package/dist/select-priority.d.ts +14 -14
- package/dist/select-priority.d.ts.map +1 -1
- package/dist/select-priority.js +5 -5
- 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 +47 -12
- package/dist/sidecar.d.ts.map +1 -1
- package/dist/sidecar.js +84 -4
- 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 +6 -6
- package/dist/slug-namespace.js +8 -8
- package/dist/slug-namespace.js.map +1 -1
- package/dist/spec-complete.d.ts.map +1 -1
- package/dist/spec-complete.js +4 -5
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +54 -60
- package/dist/start.js.map +1 -1
- package/dist/status.d.ts +3 -3
- package/dist/status.js +4 -4
- package/dist/status.js.map +1 -1
- package/dist/surface-gate.d.ts +2 -2
- 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.d.ts +2 -2
- package/dist/surface-persist.d.ts.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 +11 -10
- package/dist/tasker-review-loop.d.ts.map +1 -1
- package/dist/tasker-review-loop.js +8 -8
- package/dist/tasker-review-loop.js.map +1 -1
- package/dist/tasking-eligibility.d.ts +21 -21
- package/dist/tasking-eligibility.d.ts.map +1 -1
- package/dist/tasking-eligibility.js +10 -10
- package/dist/tasking-lock.d.ts +10 -10
- package/dist/tasking-lock.d.ts.map +1 -1
- package/dist/tasking-lock.js +69 -49
- package/dist/tasking-lock.js.map +1 -1
- package/dist/tasking.d.ts +73 -39
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +309 -95
- package/dist/tasking.js.map +1 -1
- package/dist/triage-gate.d.ts +1 -1
- package/dist/triage-persist.d.ts +15 -11
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +48 -18
- 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.d.ts +1 -1
- package/dist/verify-workflow-template.js +3 -3
- 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 +15 -9
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +14 -9
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +2 -2
- package/package.json +2 -2
- package/src/advance-ci-template.ts +4 -4
- package/src/advance-classify.ts +5 -5
- package/src/advance-drivers.ts +26 -13
- package/src/advance-isolated.ts +3 -3
- package/src/advance-lifecycle-template.ts +98 -13
- package/src/advance-loop-driver.ts +3 -3
- package/src/advance-treeless-publish.ts +46 -1
- package/src/advance.ts +495 -115
- package/src/advancing-lock.ts +102 -7
- package/src/agent-launch.ts +37 -12
- package/src/agent-stop.ts +60 -2
- package/src/apply-decide.ts +38 -9
- package/src/apply-merge-action.ts +49 -11
- package/src/apply-persist.ts +236 -62
- package/src/apply-stuck-action.ts +260 -0
- package/src/brand.ts +14 -2
- package/src/buildable-body.ts +14 -14
- package/src/claim-cas.ts +4 -4
- package/src/cli-spinner.ts +1 -1
- package/src/cli.ts +472 -141
- package/src/close-job-template.ts +9 -9
- package/src/close-job.ts +26 -26
- package/src/complete.ts +121 -63
- package/src/concurrency.ts +1 -1
- package/src/config.ts +143 -49
- package/src/continue-branch.ts +23 -1
- package/src/cwd-section.ts +1 -1
- package/src/decision-engine.ts +57 -19
- package/src/do-autopick.ts +21 -10
- package/src/do-config.ts +7 -7
- package/src/do-remote-auto.ts +2 -2
- package/src/do.ts +558 -85
- package/src/drop-source.ts +2 -2
- package/src/env-config.ts +19 -11
- package/src/failure-cause.ts +30 -1
- package/src/format.ts +13 -33
- package/src/frontmatter.ts +55 -35
- 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 +283 -58
- package/src/install-ci-capabilities/advance-lifecycle.ts +1 -1
- package/src/install-ci-capabilities/close-job.ts +1 -1
- package/src/install-ci-capabilities/example-noop.ts +1 -1
- package/src/install-ci-capabilities/intake.ts +2 -2
- package/src/install-ci-capabilities/verify.ts +1 -1
- package/src/install-ci-core.ts +34 -7
- package/src/install-ci-github.ts +87 -1
- package/src/install-ci.ts +4 -4
- package/src/install-skills.ts +166 -0
- package/src/intake-event.ts +6 -6
- package/src/intake-marker.ts +3 -3
- package/src/intake-triage.ts +2 -2
- package/src/intake-trigger-template.ts +18 -18
- package/src/intake.ts +138 -103
- package/src/integration-core.ts +234 -100
- package/src/integrator.ts +22 -9
- package/src/isolation.ts +13 -4
- package/src/issue-provider.ts +4 -4
- package/src/item-lock.ts +505 -361
- package/src/item-path.ts +2 -2
- package/src/ledger-lint.ts +9 -9
- package/src/ledger-read.ts +81 -81
- package/src/ledger-write.ts +137 -152
- package/src/lifecycle-gather.ts +45 -22
- package/src/lifecycle-pools.ts +71 -13
- package/src/merge-question-surfacer.ts +32 -8
- package/src/migrate-stuck-locks.ts +451 -0
- package/src/mint-adr.ts +4 -4
- package/src/mirror-pool-scan.ts +5 -5
- package/src/needs-attention.ts +877 -104
- package/src/orphan-sidecar.ts +49 -8
- package/src/pi-harness.ts +82 -2
- package/src/placement.ts +8 -8
- package/src/prd-to-spec.ts +13 -5
- package/src/prompt.ts +20 -25
- package/src/readiness.ts +1 -1
- package/src/reap-branches.ts +38 -14
- package/src/recover-isolated.ts +18 -1
- package/src/repo-config.ts +66 -17
- package/src/repo-mirror.ts +23 -1
- package/src/review-gate.ts +12 -11
- package/src/review-verdict.ts +3 -3
- package/src/run.ts +69 -23
- package/src/scan.ts +36 -22
- package/src/select-order.ts +1 -1
- package/src/select-priority.ts +15 -15
- package/src/sidecar-apply.ts +1 -1
- package/src/sidecar.ts +141 -14
- package/src/slug-namespace.ts +10 -10
- package/src/spec-complete.ts +4 -5
- package/src/start.ts +57 -63
- package/src/status.ts +7 -7
- package/src/surface-gate.ts +12 -5
- package/src/surface-persist.ts +3 -3
- package/src/tasker-review-loop.ts +18 -17
- package/src/tasking-eligibility.ts +21 -21
- package/src/tasking-lock.ts +75 -60
- package/src/tasking.ts +381 -135
- package/src/triage-gate.ts +1 -1
- package/src/triage-persist.ts +71 -27
- 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 +3 -3
- package/src/watch-session.ts +102 -7
- package/src/work-layout.ts +14 -9
- package/src/workspace.ts +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The CI-integration deliverable for the `advance` loop (
|
|
2
|
+
* The CI-integration deliverable for the `advance` loop (spec `advance-loop`,
|
|
3
3
|
* task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
|
|
4
4
|
* DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
|
|
5
5
|
* Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* `advance` driver; it is NOT entangled with the tick.
|
|
8
8
|
*
|
|
9
9
|
* The unified, per-capability `install-ci` CLI (auth/secrets wizard + GitHub
|
|
10
|
-
* adapter) is owned by the separate `runner-in-ci`
|
|
11
|
-
* (`work/
|
|
10
|
+
* adapter) is owned by the separate `runner-in-ci` spec
|
|
11
|
+
* (`work/specs/tasked/runner-in-ci.md`); when built it EMITS this template as its
|
|
12
12
|
* advance-loop capability. This module's job is unchanged either way: locate +
|
|
13
13
|
* STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
|
|
14
14
|
* safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
|
|
@@ -53,7 +53,7 @@ export function validateAdvanceCiTemplate(text) {
|
|
|
53
53
|
// The `enumerate` `jq` must UNION taskable prds into the matrix
|
|
54
54
|
// (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
|
|
55
55
|
// task-only `jq` would render `DORFL_AUTO_TASK` dead on the hourly
|
|
56
|
-
// cron — a ready ungated
|
|
56
|
+
// cron — a ready ungated SPEC would never become a matrix leg. The `jq` must
|
|
57
57
|
// read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
|
|
58
58
|
// and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
|
|
59
59
|
require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,OAAO,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AA6DvC;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,sEAAsE;IACtE,sEAAsE;IACtE,MAAM,UAAU,GAAG;QAClB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,CAAC;QAC1E,OAAO,CACN,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,2BAA2B,CAC3B;KACD,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IACD,yEAAyE;IACzE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,qBAAqB,CAAC,QAAiB;IACtD,OAAO,YAAY,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACxC,IAAY;IAEZ,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,OAAgB,EAAE,OAAe,EAAQ,EAAE;QACvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAC,CAAC,CAAC;QAC9B,CAAC;IACF,CAAC,CAAC;IAEF,+EAA+E;IAC/E,OAAO,CAAC,cAAc,EAAE,iCAAiC,CAAC,IAAI,CAC7D,IAAI,CACJ,EAAE,yDAAyD,CAAC,CAAC;IAC9D,OAAO,CAAC,6BAA6B,EAAE,mDAAmD,CAAC,IAAI,CAC9F,IAAI,CACJ,EAAE,yEAAyE,CAAC,CAAC;IAE9E,gFAAgF;IAChF,OAAO,CAAC,gBAAgB,EAAE,6BAA6B,CAAC,IAAI,CAC3D,IAAI,CACJ,EAAE,gEAAgE,CAAC,CAAC;IACrE,OAAO,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,IAAI,CAC9D,IAAI,CACJ,EAAE,oEAAoE;QACtE,wBAAwB,CAAC,CAAC;IAC3B,gEAAgE;IAChE,yEAAyE;IACzE,mEAAmE;IACnE,
|
|
1
|
+
{"version":3,"file":"advance-ci-template.js","sourceRoot":"","sources":["../src/advance-ci-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The pure `advance` TICK classifier (
|
|
2
|
+
* The pure `advance` TICK classifier (spec `advance-loop`, task
|
|
3
3
|
* `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
|
|
4
4
|
* one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
|
|
5
5
|
* `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* needsAnswers: true?
|
|
17
17
|
* ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
|
|
18
|
-
* │
|
|
18
|
+
* │ spec / triage an untriaged observation). Analysis MAY advance, OR
|
|
19
19
|
* │ SURFACE questions.
|
|
20
20
|
* └─ YES → sidecar exists?
|
|
21
21
|
* ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
*
|
|
40
40
|
* "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
|
|
41
41
|
* ANALYSE branch resolves to the per-TYPE rung the executor will run (the cells
|
|
42
|
-
* of the
|
|
42
|
+
* of the spec's "Per-item-type transitions" table): `build-task` (task),
|
|
43
43
|
* `task-spec` (spec), `triage-observation` (observation) when there are no open
|
|
44
44
|
* questions; `surface` (first-pass question generation) when `needsAnswers` but
|
|
45
45
|
* no sidecar yet; `apply` when all entries are answered.
|
|
@@ -53,7 +53,7 @@ import type { SidecarModel, SidecarType } from './sidecar.js';
|
|
|
53
53
|
* never a third state store.
|
|
54
54
|
*/
|
|
55
55
|
export interface TickItem {
|
|
56
|
-
/** The item type — the state machine is per-TYPE (task /
|
|
56
|
+
/** The item type — the state machine is per-TYPE (task / spec / observation). */
|
|
57
57
|
type: SidecarType;
|
|
58
58
|
/** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
|
|
59
59
|
needsAnswers: boolean | undefined;
|
|
@@ -106,7 +106,7 @@ export interface TickClassification {
|
|
|
106
106
|
* Classify ONE tick PURELY from the item's two signals + its type — read-only,
|
|
107
107
|
* no model, no lock, no file mutation. Returns the classified rung the executor
|
|
108
108
|
* will later run (or `no-op` / `invariant-violation`). The decision tree is the
|
|
109
|
-
*
|
|
109
|
+
* spec's per-item state machine, with invariant 1 asserted at the boundary:
|
|
110
110
|
*
|
|
111
111
|
* - `needsAnswers` NOT true:
|
|
112
112
|
* - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-classify.d.ts","sourceRoot":"","sources":["../src/advance-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACxB,
|
|
1
|
+
{"version":3,"file":"advance-classify.d.ts","sourceRoot":"","sources":["../src/advance-classify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AAG5D;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACxB,iFAAiF;IACjF,IAAI,EAAE,WAAW,CAAC;IAClB,mFAAmF;IACnF,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,kEAAkE;IAClE,OAAO,EAAE,YAAY,GAAG,SAAS,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY;AAEvB,yEAAyE;AACvE,YAAY;AACd,6EAA6E;GAC3E,WAAW;AACb,qFAAqF;GACnF,oBAAoB;AAEtB,0EAA0E;GACxE,SAAS;AACX,yEAAyE;GACvE,OAAO;AAET,6EAA6E;GAC3E,OAAO;AAET,wEAAwE;GACtE,qBAAqB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB;;;;;;;;;OASG;IACH,MAAM,CAAC,EACJ,iBAAiB,GACjB,8BAA8B,GAC9B,8BAA8B,CAAC;CAClC;AAWD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,kBAAkB,CAsC/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,kBAAkB,GAAG,OAAO,CAKzE"}
|
package/dist/advance-classify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The pure `advance` TICK classifier (
|
|
2
|
+
* The pure `advance` TICK classifier (spec `advance-loop`, task
|
|
3
3
|
* `advance-tick-classifier`) — the substrate-agnostic, read-only seam BOTH the
|
|
4
4
|
* one-shot driver and the loop (`run`) driver wrap. Mirrors the existing pure
|
|
5
5
|
* `categorise.ts` / `eligibility.ts` seams: NO model, NO lock, NO file mutation
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* needsAnswers: true?
|
|
17
17
|
* ├─ NO → ANALYSE (state-appropriate rung: build a ready task / task a ready
|
|
18
|
-
* │
|
|
18
|
+
* │ spec / triage an untriaged observation). Analysis MAY advance, OR
|
|
19
19
|
* │ SURFACE questions.
|
|
20
20
|
* └─ YES → sidecar exists?
|
|
21
21
|
* ├─ NO → ANALYSE (first pass: generate questions → write the sidecar)
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
*
|
|
40
40
|
* "ANALYSE" is NOT "always advance" — surface-and-pause is itself a rung, so the
|
|
41
41
|
* ANALYSE branch resolves to the per-TYPE rung the executor will run (the cells
|
|
42
|
-
* of the
|
|
42
|
+
* of the spec's "Per-item-type transitions" table): `build-task` (task),
|
|
43
43
|
* `task-spec` (spec), `triage-observation` (observation) when there are no open
|
|
44
44
|
* questions; `surface` (first-pass question generation) when `needsAnswers` but
|
|
45
45
|
* no sidecar yet; `apply` when all entries are answered.
|
|
@@ -57,7 +57,7 @@ const ANALYSE_RUNG_FOR_TYPE = {
|
|
|
57
57
|
* Classify ONE tick PURELY from the item's two signals + its type — read-only,
|
|
58
58
|
* no model, no lock, no file mutation. Returns the classified rung the executor
|
|
59
59
|
* will later run (or `no-op` / `invariant-violation`). The decision tree is the
|
|
60
|
-
*
|
|
60
|
+
* spec's per-item state machine, with invariant 1 asserted at the boundary:
|
|
61
61
|
*
|
|
62
62
|
* - `needsAnswers` NOT true:
|
|
63
63
|
* - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
|
|
@@ -4,7 +4,7 @@ import type { LifecyclePoolGates } from './lifecycle-pools.js';
|
|
|
4
4
|
import type { Config } from './config.js';
|
|
5
5
|
import type { ConfigOverrideMap } from './config-override.js';
|
|
6
6
|
/**
|
|
7
|
-
* The **`advance` one-shot DRIVER** (
|
|
7
|
+
* The **`advance` one-shot DRIVER** (spec `advance-loop`, task
|
|
8
8
|
* `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
|
|
9
9
|
* WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
|
|
10
10
|
* item(s) or the bare eligible-SET form. It is the in-place counterpart of
|
|
@@ -30,7 +30,7 @@ import type { ConfigOverrideMap } from './config-override.js';
|
|
|
30
30
|
*
|
|
31
31
|
* **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
|
|
32
32
|
* exactly as it does for `do`: the eligible-pool scan only SURFACES a build item
|
|
33
|
-
* when `autoBuild` is on and a task-a-
|
|
33
|
+
* when `autoBuild` is on and a task-a-spec item when `autoTask` is on (the gate
|
|
34
34
|
* is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
|
|
35
35
|
* typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
|
|
36
36
|
* `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
|
|
@@ -42,7 +42,7 @@ import type { ConfigOverrideMap } from './config-override.js';
|
|
|
42
42
|
*
|
|
43
43
|
* **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
|
|
44
44
|
* or chaining machinery — it threads the SAME `AdvanceContext` the tick already
|
|
45
|
-
* consumes (which orchestrates `do`/`do
|
|
45
|
+
* consumes (which orchestrates `do`/`do spec:` through the isolation-strategy seam
|
|
46
46
|
* and rebase-before-integrate); a chain conflict routes to needs-attention as
|
|
47
47
|
* today, inside the orchestrated `do`.
|
|
48
48
|
*/
|
|
@@ -58,7 +58,7 @@ type SharedAdvanceContext = AdvanceContext;
|
|
|
58
58
|
export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
|
|
59
59
|
/**
|
|
60
60
|
* The resolved repo config — provides `autoBuild` (the build gate for the
|
|
61
|
-
* task pool), `autoTask` (the task-a-
|
|
61
|
+
* task pool), `autoTask` (the task-a-spec gate for the spec pool), and
|
|
62
62
|
* `selectionOrder` (the configurable cross-pool order). The per-action gate
|
|
63
63
|
* family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
|
|
64
64
|
* selection point).
|
|
@@ -80,7 +80,7 @@ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
|
|
|
80
80
|
count?: number;
|
|
81
81
|
/** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
|
|
82
82
|
run?: AdvanceTickRunner;
|
|
83
|
-
/** Override the read seam (
|
|
83
|
+
/** Override the read seam (spec pool); defaults to the active {@link ledgerRead}. */
|
|
84
84
|
read?: LedgerReadStrategy;
|
|
85
85
|
/**
|
|
86
86
|
* The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
|
|
@@ -128,8 +128,8 @@ export declare function performAdvanceAuto(options: PerformAdvanceMultiOptions):
|
|
|
128
128
|
/**
|
|
129
129
|
* Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
|
|
130
130
|
* GIVEN order (no pool/priority — the operator chose them). Each arg is run
|
|
131
|
-
* through the existing advance tick, which itself resolves bare/`task:`/`
|
|
132
|
-
* `obs:` (so a named
|
|
131
|
+
* through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
|
|
132
|
+
* `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
|
|
133
133
|
* collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
|
|
134
134
|
* surface/apply rung runs regardless of the per-action gates.
|
|
135
135
|
*/
|
|
@@ -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,13 +33,21 @@ 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
|
-
// `autoTask`). With `autoTask` off NO
|
|
50
|
+
// `autoTask`). With `autoTask` off NO spec is selected — the task rung is
|
|
42
51
|
// never reached by the bare/`-n` selection.
|
|
43
52
|
const pool = read.resolveSpecPool({ repoPath: cwd });
|
|
44
53
|
const specCandidates = pool.specs.map((spec) => ({
|
|
@@ -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
|
|
@@ -89,8 +101,8 @@ export async function performAdvanceAuto(options) {
|
|
|
89
101
|
/**
|
|
90
102
|
* Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
|
|
91
103
|
* GIVEN order (no pool/priority — the operator chose them). Each arg is run
|
|
92
|
-
* through the existing advance tick, which itself resolves bare/`task:`/`
|
|
93
|
-
* `obs:` (so a named
|
|
104
|
+
* through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
|
|
105
|
+
* `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
|
|
94
106
|
* collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
|
|
95
107
|
* surface/apply rung runs regardless of the per-action gates.
|
|
96
108
|
*/
|
|
@@ -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 });
|
|
@@ -108,7 +120,7 @@ export async function performAdvanceArgs(args, options) {
|
|
|
108
120
|
/**
|
|
109
121
|
* Run a list of selected items through the existing advance tick, SEQUENTIALLY
|
|
110
122
|
* (US #25 — `-n` is always sequential), threading the shared context to each. For
|
|
111
|
-
* the pool path the arg encodes the namespace (`
|
|
123
|
+
* the pool path the arg encodes the namespace (`spec:<slug>` for a selected spec,
|
|
112
124
|
* bare slug for a task); for the explicit-arg path the caller's raw arg is passed
|
|
113
125
|
* verbatim. Each tick is INDEPENDENTLY `advancing`-lock-guarded inside
|
|
114
126
|
* {@link performAdvance} — sequential here means one item at a time, never a
|
|
@@ -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.
|
|
@@ -194,7 +206,7 @@ export async function runAdvanceTickWithTreelessPublish(options, run) {
|
|
|
194
206
|
* the tick surfaces/applies);
|
|
195
207
|
* - `task` → bare `<slug>` (an eligible task's build rung, OR a `needsAnswers`
|
|
196
208
|
* task the tick surfaces/applies).
|
|
197
|
-
* The tick re-classifies each arg, so a `needsAnswers`-blocked task/
|
|
209
|
+
* The tick re-classifies each arg, so a `needsAnswers`-blocked task/spec reaches
|
|
198
210
|
* surface/apply and an untriaged observation reaches triage — the classifier +
|
|
199
211
|
* rung bodies are unchanged; only this selection->arg mapping is new.
|
|
200
212
|
*/
|
|
@@ -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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"}
|
|
@@ -4,7 +4,7 @@ import type { LifecyclePoolGates } from './lifecycle-pools.js';
|
|
|
4
4
|
import type { Config } from './config.js';
|
|
5
5
|
import type { AdvanceTickRunner, AdvanceMultiResult } from './advance-drivers.js';
|
|
6
6
|
/**
|
|
7
|
-
* The **ISOLATED advance-tick RUNNER** + its sequential drivers (
|
|
7
|
+
* The **ISOLATED advance-tick RUNNER** + its sequential drivers (spec
|
|
8
8
|
* `advance-loop`, task `advance-isolated-one-shot`, US #25/26) — the "isolated
|
|
9
9
|
* one-shot" cell `advance` was missing. It gives `advance` the SAME isolation
|
|
10
10
|
* ergonomic `do --isolated` has: run the advance TICK ({@link performAdvance}) in
|
|
@@ -64,7 +64,7 @@ export interface IsolatedAdvanceContext extends Omit<AdvanceContext, 'cwd'> {
|
|
|
64
64
|
}
|
|
65
65
|
/** Options for {@link performAdvanceIsolated} — the per-item isolated tick. */
|
|
66
66
|
export interface PerformAdvanceIsolatedOptions extends IsolatedAdvanceContext {
|
|
67
|
-
/** The raw advance arg: bare (= task), `
|
|
67
|
+
/** The raw advance arg: bare (= task), `spec:<slug>`, or `obs:<slug>`. */
|
|
68
68
|
arg: string;
|
|
69
69
|
/** The read seam (slug resolution / pool); defaults to {@link ledgerRead}. */
|
|
70
70
|
read?: LedgerReadStrategy;
|
|
@@ -149,7 +149,7 @@ export declare function performAdvanceIsolatedAuto(options: PerformAdvanceIsolat
|
|
|
149
149
|
* Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
|
|
150
150
|
* in the GIVEN order (no pool/priority — the operator chose them), each through the
|
|
151
151
|
* ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
|
|
152
|
-
* are explicit); the per-item tick resolves each bare/`
|
|
152
|
+
* are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
|
|
153
153
|
*/
|
|
154
154
|
export declare function performAdvanceIsolatedArgs(args: string[], options: PerformAdvanceIsolatedMultiOptions): Promise<AdvanceMultiResult>;
|
|
155
155
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"advance-isolated.d.ts","sourceRoot":"","sources":["../src/advance-isolated.ts"],"names":[],"mappings":"AASA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IAC1E;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC5E,
|
|
1
|
+
{"version":3,"file":"advance-isolated.d.ts","sourceRoot":"","sources":["../src/advance-isolated.ts"],"names":[],"mappings":"AASA,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAErE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,qFAAqF;AACrF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC;IAC1E;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,6BAA8B,SAAQ,sBAAsB;IAC5E,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;CACxB;AAID;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,6BAA6B,GACpC,OAAO,CAAC,aAAa,CAAC,CAuGxB;AA0BD,+EAA+E;AAC/E,KAAK,qBAAqB,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,kCAAmC,SAAQ,qBAAqB;IAChF;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,sGAAsG;IACtG,WAAW,CAAC,EAAE,CACb,OAAO,EAAE,6BAA6B,KAClC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,wFAAwF;IACxF,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC/C,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,kCAAkC,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAQ7B"}
|
package/dist/advance-isolated.js
CHANGED
|
@@ -216,7 +216,7 @@ export async function performAdvanceIsolatedAuto(options) {
|
|
|
216
216
|
* Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
|
|
217
217
|
* in the GIVEN order (no pool/priority — the operator chose them), each through the
|
|
218
218
|
* ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
|
|
219
|
-
* are explicit); the per-item tick resolves each bare/`
|
|
219
|
+
* are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
|
|
220
220
|
*/
|
|
221
221
|
export async function performAdvanceIsolatedArgs(args, options) {
|
|
222
222
|
const runIsolated = options.runIsolated ?? performAdvanceIsolated;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `install-ci` ADVANCE-LIFECYCLE capability (
|
|
2
|
+
* The `install-ci` ADVANCE-LIFECYCLE capability (spec `runner-in-ci`, task
|
|
3
3
|
* `install-ci-advance-lifecycle-workflow`; capability C: auto-triage observations
|
|
4
4
|
* + surface declared blockers + apply committed answers). This module GENERATES
|
|
5
5
|
* the advance-lifecycle workflow by ABSORBING and PARAMETERISING the existing seed
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
* each leg carries `--propose` so it can NEVER merge to `main`); `merge` ⇒ ALSO
|
|
44
44
|
* a MATRIX (one leg per item; build/gate/review fan out, the LAND tail is
|
|
45
45
|
* serialised by the engine's `mergeRetries` CAS-retry loop — the git-alone
|
|
46
|
-
* floor — NOT by the workflow shape;
|
|
46
|
+
* floor — NOT by the workflow shape; SPEC
|
|
47
47
|
* `land-time-reverify-and-parallel-merge-ceiling`). This is integration-mode
|
|
48
48
|
* behaviour, IDENTICAL to the build tick (integration mode is
|
|
49
49
|
* verb-independent).
|
|
@@ -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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The `install-ci` ADVANCE-LIFECYCLE capability (
|
|
2
|
+
* The `install-ci` ADVANCE-LIFECYCLE capability (spec `runner-in-ci`, task
|
|
3
3
|
* `install-ci-advance-lifecycle-workflow`; capability C: auto-triage observations
|
|
4
4
|
* + surface declared blockers + apply committed answers). This module GENERATES
|
|
5
5
|
* the advance-lifecycle workflow by ABSORBING and PARAMETERISING the existing seed
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
* each leg carries `--propose` so it can NEVER merge to `main`); `merge` ⇒ ALSO
|
|
44
44
|
* a MATRIX (one leg per item; build/gate/review fan out, the LAND tail is
|
|
45
45
|
* serialised by the engine's `mergeRetries` CAS-retry loop — the git-alone
|
|
46
|
-
* floor — NOT by the workflow shape;
|
|
46
|
+
* floor — NOT by the workflow shape; SPEC
|
|
47
47
|
* `land-time-reverify-and-parallel-merge-ceiling`). This is integration-mode
|
|
48
48
|
* behaviour, IDENTICAL to the build tick (integration mode is
|
|
49
49
|
* verb-independent).
|
|
@@ -91,7 +91,7 @@ export function generateAdvanceLifecycleWorkflow(config) {
|
|
|
91
91
|
const setupWith = providerSecretsWithBlock(config);
|
|
92
92
|
return `\
|
|
93
93
|
# dorfl — the ADVANCE LIFECYCLE loop in CI (capability C: auto-triage
|
|
94
|
-
# observations + surface declared blockers + apply committed answers,
|
|
94
|
+
# observations + surface declared blockers + apply committed answers, spec
|
|
95
95
|
# runner-in-ci). EMITTED by \`dorfl install-ci\` by PARAMETERISING the seed
|
|
96
96
|
# \`docs/ci/advance-loop.yml.template\` (the advance-loop capability's output) — the
|
|
97
97
|
# human commits it. DO NOT hand-edit a copy — re-run install-ci to upgrade the
|
|
@@ -117,7 +117,7 @@ export function generateAdvanceLifecycleWorkflow(config) {
|
|
|
117
117
|
# * merge ⇒ ALSO a MATRIX (one leg per item; build/gate/review fan out, the
|
|
118
118
|
# LAND tail — rebase + CAS push to \`main\` — is serialised by the
|
|
119
119
|
# engine's \`mergeRetries\` CAS-retry loop, NOT by the workflow shape.
|
|
120
|
-
#
|
|
120
|
+
# SPEC \`land-time-reverify-and-parallel-merge-ceiling\`: a
|
|
121
121
|
# non-fast-forward push triggers re-rebase + re-gate + retry, never
|
|
122
122
|
# a \`--force\`. The cross-job serialiser is the CAS-retry FLOOR;
|
|
123
123
|
# there is NO host-specific \`concurrency:\` group on the merge job).
|
|
@@ -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}
|
|
@@ -379,7 +420,7 @@ jobs:
|
|
|
379
420
|
run: dorfl advance "\${{ matrix.item }}" --propose --watch --arbiter origin
|
|
380
421
|
|
|
381
422
|
# ── MERGE: a MATRIX of independent jobs (parallel build/gate/review, serialised land) ──
|
|
382
|
-
#
|
|
423
|
+
# SPEC \`land-time-reverify-and-parallel-merge-ceiling\` (stories 4 + 6): each item
|
|
383
424
|
# gets its own leg; build/gate/review run concurrently across siblings; the LAND
|
|
384
425
|
# TAIL is serialised by the engine's \`mergeRetries\` CAS-retry loop — the
|
|
385
426
|
# git-alone floor — NOT by the workflow shape. A non-fast-forward push triggers
|
|
@@ -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
|
|
@@ -516,7 +561,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
516
561
|
'TIED to the matrix shape (a leg can never merge to main / desync from the ' +
|
|
517
562
|
'dispatch mode).');
|
|
518
563
|
// --- merge ⇒ a MATRIX per item (parallel build/gate/review, serialised land) -
|
|
519
|
-
//
|
|
564
|
+
// SPEC `land-time-reverify-and-parallel-merge-ceiling` stories 4 + 6: build/
|
|
520
565
|
// gate/review fan out; the LAND tail is serialised by the engine's
|
|
521
566
|
// `mergeRetries` CAS-retry loop (the git-alone floor), NOT the workflow.
|
|
522
567
|
require('merge-matrix', /advance-merge:[\s\S]*?strategy:\s*[\s\S]*?matrix:/.test(text), 'the `merge` job must use a MATRIX (parallel build/gate/review per item; ' +
|
|
@@ -596,7 +641,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
596
641
|
'agnostic merged-branch sweep).');
|
|
597
642
|
require('reap-sweep-dispatch-input', /sweepMergedBranches:/.test(text), 'the `sweepMergedBranches` dispatch input (capability F, opt-out) must be ' +
|
|
598
643
|
'preserved.');
|
|
599
|
-
// The ORPHAN-SIDECAR reap (
|
|
644
|
+
// The ORPHAN-SIDECAR reap (spec
|
|
600
645
|
// `agentic-question-resolution-retire-disposition-vocabulary`, US #10) rides
|
|
601
646
|
// the SAME scheduled `dorfl gc --remote-branches` invocation, so it provably
|
|
602
647
|
// FIRES on the cron tick (not behind an un-passed flag). The reap step that
|
|
@@ -630,7 +675,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
630
675
|
// --- The propose `enumerate` matrix must UNION taskable prds --------------
|
|
631
676
|
// (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
|
|
632
677
|
// task-only `jq` would render `DORFL_AUTO_TASK: 'true'` dead on the
|
|
633
|
-
// hourly cron — a ready ungated
|
|
678
|
+
// hourly cron — a ready ungated SPEC would never become a matrix leg. The `jq`
|
|
634
679
|
// must enumerate `spec:<slug>` ids from `scan --json`'s taskable-SPEC pool
|
|
635
680
|
// (`repos[].specs[]` + `cwd.repo.specs[]`) alongside the eligible-task legs.
|
|
636
681
|
require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
|
|
@@ -642,7 +687,7 @@ export function validateAdvanceLifecycleWorkflow(text) {
|
|
|
642
687
|
// --- The propose `enumerate` matrix must UNION the LIFECYCLE pools ----------
|
|
643
688
|
// (`ci-propose-matrix-enumerates-lifecycle-items`): a build/task-only `jq`
|
|
644
689
|
// runs the answer-loop ONLY in merge mode — a `needsAnswers` item is
|
|
645
|
-
// `eligible:false` and untriaged observations are not in the task/
|
|
690
|
+
// `eligible:false` and untriaged observations are not in the task/spec pools at
|
|
646
691
|
// all, so NO lifecycle rung (triage/surface/apply) ever gets a propose leg. The
|
|
647
692
|
// `jq` must enumerate the three lifecycle sub-pools from `scan --json`
|
|
648
693
|
// (`repos[].lifecycle.*` + `cwd.repo.lifecycle.*`): `triage[]` → `obs:<slug>`,
|
|
@@ -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).');
|