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
package/dist/work-layout.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* folder-name union/array, the item-scan predicate, and the prefix-task helpers
|
|
4
4
|
* used across `src/`.
|
|
5
5
|
*
|
|
6
|
-
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename`
|
|
6
|
+
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
|
|
7
7
|
* checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
|
|
8
8
|
* `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
|
|
9
9
|
* used to be scattered across ~70 files now routes through here. The NAMES are
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
|
|
15
15
|
* Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
|
|
16
16
|
* `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
|
|
17
|
-
* re-touches a single call site (a KEY rename, e.g. the
|
|
17
|
+
* re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
|
|
18
18
|
* is a mechanical relabel of the key literal at each site — behaviour-preserving).
|
|
19
19
|
*
|
|
20
20
|
* Domain note (crown-jewel invariant): a `work/` tree is a set of governance
|
|
@@ -61,17 +61,19 @@ export declare const WORK_ROOT: "work";
|
|
|
61
61
|
* and `needs-attention` (both are really lock-ref state, NOT durable folders;
|
|
62
62
|
* routed here only so no reader hand-writes the literal).
|
|
63
63
|
*
|
|
64
|
-
* NOTE on the
|
|
64
|
+
* NOTE on the spec→spec vocabulary cutover
|
|
65
65
|
* (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
|
|
66
66
|
* `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
|
|
67
67
|
* below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
|
|
68
68
|
* `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
|
|
69
|
-
* lockstep with the on-disk `git mv work/
|
|
69
|
+
* lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
|
|
70
70
|
* key-only relabel, this batch moves the folders too, so the KEY and VALUE change
|
|
71
71
|
* together and the self-renaming-folder guard stays green. The KEY rename is a
|
|
72
72
|
* mechanical relabel of the key literal at each call site (behaviour-preserving);
|
|
73
|
-
* the frontmatter
|
|
74
|
-
*
|
|
73
|
+
* the legacy frontmatter ''prd:'' field survives ONLY as un-migrated on-disk DATA the
|
|
74
|
+
* `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
|
|
75
|
+
* longer READ by `parseFrontmatter` — `spec:` is the only read key); the
|
|
76
|
+
* `--specs-land-in` flag/`specsLandIn` config + the
|
|
75
77
|
* `Spec*` symbols were completed by the later batches + the contract task. The
|
|
76
78
|
* folder-as-status invariant is unchanged.
|
|
77
79
|
*/
|
|
@@ -153,7 +155,7 @@ export declare function isWorkItemFile(name: string): boolean;
|
|
|
153
155
|
* order: `in-progress` over `tasks-ready`, with `done` appended only behind the
|
|
154
156
|
* stranded-continue gate. Order is load-bearing — kept exactly as the original
|
|
155
157
|
* union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
|
|
156
|
-
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag,
|
|
158
|
+
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
|
|
157
159
|
* `do-allow-backlog-drive-staged-tasks-without-promotion` — see
|
|
158
160
|
* {@link TaskResolutionFolder}.)
|
|
159
161
|
*/
|
|
@@ -169,9 +171,13 @@ export type TaskResolutionFolder = (typeof TASK_RESOLUTION_FOLDERS)[number] | 't
|
|
|
169
171
|
/**
|
|
170
172
|
* The task LIFECYCLE folders a `task:<slug>` / lone-task `issue:` can reside
|
|
171
173
|
* in (spec-complete.ts + close-job.ts `TASK_FOLDERS`): `tasks-ready`, `in-progress`,
|
|
172
|
-
* `needs-attention
|
|
174
|
+
* `done`. `needs-attention` was dropped post-cutover
|
|
175
|
+
* (`finish-needs-attention-folder-cutover-remove-legacy-recovery-readers`, ratified
|
|
176
|
+
* in `docs/adr/needs-attention-folder-cutover-followup-nits.md`): the folder is
|
|
177
|
+
* retired — a stuck item is the per-item lock `state: stuck` with the body resting
|
|
178
|
+
* in `tasks/ready/`, so no task ever resides in `work/needs-attention/`.
|
|
173
179
|
*/
|
|
174
|
-
export declare const TASK_LIFECYCLE_FOLDERS: readonly ["tasks-ready", "in-progress", "
|
|
180
|
+
export declare const TASK_LIFECYCLE_FOLDERS: readonly ["tasks-ready", "in-progress", "done"];
|
|
175
181
|
/** One of the task lifecycle folders (spec-complete.ts / close-job.ts). */
|
|
176
182
|
export type TaskLifecycleFolder = (typeof TASK_LIFECYCLE_FOLDERS)[number];
|
|
177
183
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"work-layout.d.ts","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAgBnB,CAAC;AAEX,0EAA0E;AAC1E,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,MAAM,GACV,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,GACnB,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEpD;AAID;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,iDAIS,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAC7B,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,GACxC,eAAe,CAAC;AAEnB;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,iDAIU,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,+CAIW,CAAC;AAE9C,uFAAuF;AACvF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;;;;GAIG;AACH,eAAO,MAAM,YAAY,0CAGoB,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/work-layout.js
CHANGED
|
@@ -4,7 +4,7 @@ import { join } from 'node:path';
|
|
|
4
4
|
* folder-name union/array, the item-scan predicate, and the prefix-task helpers
|
|
5
5
|
* used across `src/`.
|
|
6
6
|
*
|
|
7
|
-
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename`
|
|
7
|
+
* This is Phase 0 of the `folder-taxonomy-reorg-and-rename` spec — the de-risking
|
|
8
8
|
* checkpoint. EVERY raw work-path literal (`join(cwd, 'work', ...)`, `'work/<folder>'`,
|
|
9
9
|
* `'work/<folder>/'.length` prefix-tasks) and EVERY folder-name union/array that
|
|
10
10
|
* used to be scattered across ~70 files now routes through here. The NAMES are
|
|
@@ -15,7 +15,7 @@ import { join } from 'node:path';
|
|
|
15
15
|
* {@link WORK_FOLDER_NAME} (and `git mv` the on-disk folders) and NOTHING ELSE.
|
|
16
16
|
* Call sites reference folders by their SYMBOLIC key (`'tasks-ready'`,
|
|
17
17
|
* `'specs-ready'`, …), never by a raw string, so a folder-VALUE flip never
|
|
18
|
-
* re-touches a single call site (a KEY rename, e.g. the
|
|
18
|
+
* re-touches a single call site (a KEY rename, e.g. the spec→spec cutover below,
|
|
19
19
|
* is a mechanical relabel of the key literal at each site — behaviour-preserving).
|
|
20
20
|
*
|
|
21
21
|
* Domain note (crown-jewel invariant): a `work/` tree is a set of governance
|
|
@@ -62,17 +62,19 @@ export const WORK_ROOT = 'work';
|
|
|
62
62
|
* and `needs-attention` (both are really lock-ref state, NOT durable folders;
|
|
63
63
|
* routed here only so no reader hand-writes the literal).
|
|
64
64
|
*
|
|
65
|
-
* NOTE on the
|
|
65
|
+
* NOTE on the spec→spec vocabulary cutover
|
|
66
66
|
* (`rename-spec-work-layout-and-folders`, migrate-batch 1 of
|
|
67
67
|
* `prd-to-spec-vocabulary-cutover-and-migration-command`): the spec-regime KEYS
|
|
68
68
|
* below now read in the `spec` vocabulary (`specs-proposed`/`specs-ready`/
|
|
69
69
|
* `specs-tasked`/`specs-dropped`) AND their VALUES flip to `work/specs/*` in
|
|
70
|
-
* lockstep with the on-disk `git mv work/
|
|
70
|
+
* lockstep with the on-disk `git mv work/specs/* → work/specs/*`. Unlike the earlier
|
|
71
71
|
* key-only relabel, this batch moves the folders too, so the KEY and VALUE change
|
|
72
72
|
* together and the self-renaming-folder guard stays green. The KEY rename is a
|
|
73
73
|
* mechanical relabel of the key literal at each call site (behaviour-preserving);
|
|
74
|
-
* the frontmatter
|
|
75
|
-
*
|
|
74
|
+
* the legacy frontmatter ''prd:'' field survives ONLY as un-migrated on-disk DATA the
|
|
75
|
+
* `dorfl prd-to-spec` command textually converts to `spec:` (HARD CUTOVER: it is no
|
|
76
|
+
* longer READ by `parseFrontmatter` — `spec:` is the only read key); the
|
|
77
|
+
* `--specs-land-in` flag/`specsLandIn` config + the
|
|
76
78
|
* `Spec*` symbols were completed by the later batches + the contract task. The
|
|
77
79
|
* folder-as-status invariant is unchanged.
|
|
78
80
|
*/
|
|
@@ -170,7 +172,7 @@ export function isWorkItemFile(name) {
|
|
|
170
172
|
* order: `in-progress` over `tasks-ready`, with `done` appended only behind the
|
|
171
173
|
* stranded-continue gate. Order is load-bearing — kept exactly as the original
|
|
172
174
|
* union/array. (`tasks-backlog` is NOT in this DEFAULT order: it is appended at
|
|
173
|
-
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag,
|
|
175
|
+
* the LOWEST priority ONLY behind the explicit `--allow-backlog` flag, spec
|
|
174
176
|
* `do-allow-backlog-drive-staged-tasks-without-promotion` — see
|
|
175
177
|
* {@link TaskResolutionFolder}.)
|
|
176
178
|
*/
|
|
@@ -182,12 +184,15 @@ export const TASK_RESOLUTION_FOLDERS = [
|
|
|
182
184
|
/**
|
|
183
185
|
* The task LIFECYCLE folders a `task:<slug>` / lone-task `issue:` can reside
|
|
184
186
|
* in (spec-complete.ts + close-job.ts `TASK_FOLDERS`): `tasks-ready`, `in-progress`,
|
|
185
|
-
* `needs-attention
|
|
187
|
+
* `done`. `needs-attention` was dropped post-cutover
|
|
188
|
+
* (`finish-needs-attention-folder-cutover-remove-legacy-recovery-readers`, ratified
|
|
189
|
+
* in `docs/adr/needs-attention-folder-cutover-followup-nits.md`): the folder is
|
|
190
|
+
* retired — a stuck item is the per-item lock `state: stuck` with the body resting
|
|
191
|
+
* in `tasks/ready/`, so no task ever resides in `work/needs-attention/`.
|
|
186
192
|
*/
|
|
187
193
|
export const TASK_LIFECYCLE_FOLDERS = [
|
|
188
194
|
'tasks-ready',
|
|
189
195
|
'in-progress',
|
|
190
|
-
'needs-attention',
|
|
191
196
|
'done',
|
|
192
197
|
];
|
|
193
198
|
/**
|
package/dist/work-layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAe,CAAC;AAEzC
|
|
1
|
+
{"version":3,"file":"work-layout.js","sourceRoot":"","sources":["../src/work-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAe,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC/B,eAAe,EAAE,eAAe;IAChC,aAAa,EAAE,aAAa;IAC5B,aAAa,EAAE,aAAa;IAC5B,iBAAiB,EAAE,iBAAiB;IACpC,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,iBAAiB;IAC5B,gBAAgB,EAAE,gBAAgB;IAClC,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,eAAe,EAAE,eAAe;IAChC,YAAY,EAAE,oBAAoB;IAClC,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACX,CAAC;AAKX;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IACnD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAqB;IACjE,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC3B,IAAY,EACZ,MAAqB,EACrB,IAAY;IAEZ,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAqB;IAClD,OAAO,GAAG,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,MAAqB,EAAE,QAAgB;IAClE,OAAO,GAAG,SAAS,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACrD,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACpC,IAAY,EACZ,MAAqB;IAErB,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACtC,aAAa;IACb,aAAa;IACb,MAAM;CACsC,CAAC;AAa9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACrC,aAAa;IACb,aAAa;IACb,MAAM;CACsC,CAAC;AAK9C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACpC,aAAa;IACb,MAAM;IACN,WAAW;CACiC,CAAC;AAK9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,aAAa;IACb,cAAc;CAC8B,CAAC"}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -113,8 +113,8 @@ export interface CreateJobOptions {
|
|
|
113
113
|
/** The work slug being processed (→ branch `work/<type>-<slug>` + work-id). */
|
|
114
114
|
slug: string;
|
|
115
115
|
/**
|
|
116
|
-
* The item TYPE — `'task'` (build) or `'
|
|
117
|
-
* work branch via {@link workBranchRef} so a same-slug task and
|
|
116
|
+
* The item TYPE — `'task'` (build) or `'spec'` (tasking) — namespacing the
|
|
117
|
+
* work branch via {@link workBranchRef} so a same-slug task and spec never
|
|
118
118
|
* collide. Defaults to `'task'`.
|
|
119
119
|
*/
|
|
120
120
|
type?: SlugNamespace;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dorfl",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/wighawag/dorfl.git",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"vitest": "^4.0.18"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
-
"build": "tsc && node scripts/vendor-protocol.mjs",
|
|
42
|
+
"build": "tsc && node scripts/vendor-protocol.mjs && node scripts/vendor-skills.mjs",
|
|
43
43
|
"dev": "as-soon -w src pnpm build",
|
|
44
44
|
"cli": "tsx src/cli.ts",
|
|
45
45
|
"test": "vitest run",
|
|
@@ -3,7 +3,7 @@ import {dirname, resolve} from 'node:path';
|
|
|
3
3
|
import {fileURLToPath} from 'node:url';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* The CI-integration deliverable for the `advance` loop (
|
|
6
|
+
* The CI-integration deliverable for the `advance` loop (spec `advance-loop`,
|
|
7
7
|
* task `advance-install-ci`, US #27/28): the advance-loop CAPABILITY as a
|
|
8
8
|
* DOCUMENTED workflow TEMPLATE (not a CLI subcommand; see the task's `##
|
|
9
9
|
* Decisions`). The template at `docs/ci/advance-loop.yml.template` wires "on cron
|
|
@@ -11,8 +11,8 @@ import {fileURLToPath} from 'node:url';
|
|
|
11
11
|
* `advance` driver; it is NOT entangled with the tick.
|
|
12
12
|
*
|
|
13
13
|
* The unified, per-capability `install-ci` CLI (auth/secrets wizard + GitHub
|
|
14
|
-
* adapter) is owned by the separate `runner-in-ci`
|
|
15
|
-
* (`work/
|
|
14
|
+
* adapter) is owned by the separate `runner-in-ci` spec
|
|
15
|
+
* (`work/specs/tasked/runner-in-ci.md`); when built it EMITS this template as its
|
|
16
16
|
* advance-loop capability. This module's job is unchanged either way: locate +
|
|
17
17
|
* STRUCTURALLY VALIDATE the template, so its shape is a contract the CLI can
|
|
18
18
|
* safely emit (see `docs/ci/README.md` "Relationship to the `install-ci` CLI").
|
|
@@ -136,7 +136,7 @@ export function validateAdvanceCiTemplate(
|
|
|
136
136
|
// The `enumerate` `jq` must UNION taskable prds into the matrix
|
|
137
137
|
// (`ci-propose-matrix-must-enumerate-sliceable-prds-not-only-slices`): a
|
|
138
138
|
// task-only `jq` would render `DORFL_AUTO_TASK` dead on the hourly
|
|
139
|
-
// cron — a ready ungated
|
|
139
|
+
// cron — a ready ungated SPEC would never become a matrix leg. The `jq` must
|
|
140
140
|
// read `scan --json`'s taskable-SPEC pool (`repos[].specs[]` + `cwd.repo.specs[]`)
|
|
141
141
|
// and emit `spec:<slug>` legs alongside the `task:<slug>` legs.
|
|
142
142
|
require('propose-enumerates-taskable-specs', /"spec:" \+ \.slug/.test(text) &&
|
package/src/advance-classify.ts
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.
|
|
@@ -56,7 +56,7 @@ import {allAnswered} from './sidecar.js';
|
|
|
56
56
|
* never a third state store.
|
|
57
57
|
*/
|
|
58
58
|
export interface TickItem {
|
|
59
|
-
/** The item type — the state machine is per-TYPE (task /
|
|
59
|
+
/** The item type — the state machine is per-TYPE (task / spec / observation). */
|
|
60
60
|
type: SidecarType;
|
|
61
61
|
/** Autonomy axis 2 (DISCOVERED): `true` ⇒ open questions block autonomous work. */
|
|
62
62
|
needsAnswers: boolean | undefined;
|
|
@@ -128,7 +128,7 @@ const ANALYSE_RUNG_FOR_TYPE: Record<SidecarType, TickRungKind> = {
|
|
|
128
128
|
* Classify ONE tick PURELY from the item's two signals + its type — read-only,
|
|
129
129
|
* no model, no lock, no file mutation. Returns the classified rung the executor
|
|
130
130
|
* will later run (or `no-op` / `invariant-violation`). The decision tree is the
|
|
131
|
-
*
|
|
131
|
+
* spec's per-item state machine, with invariant 1 asserted at the boundary:
|
|
132
132
|
*
|
|
133
133
|
* - `needsAnswers` NOT true:
|
|
134
134
|
* - a sidecar present ⇒ INVARIANT 1 BROKEN (`sidecar-without-needsAnswers`)
|
package/src/advance-drivers.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
TREELESS_RUNGS,
|
|
11
11
|
} from './advance-treeless-publish.js';
|
|
12
12
|
import {scanRepoPaths} from './scan.js';
|
|
13
|
+
import {heldTaskSlugs} from './item-lock.js';
|
|
13
14
|
import {ledgerRead, type LedgerReadStrategy} from './ledger-read.js';
|
|
14
15
|
import {
|
|
15
16
|
selectPrioritised,
|
|
@@ -23,7 +24,7 @@ import type {Config} from './config.js';
|
|
|
23
24
|
import type {ConfigOverrideMap} from './config-override.js';
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
|
-
* The **`advance` one-shot DRIVER** (
|
|
27
|
+
* The **`advance` one-shot DRIVER** (spec `advance-loop`, task
|
|
27
28
|
* `advance-drivers-and-gates`, US #2/7/23/25/26) — the SEQUENTIAL driver that
|
|
28
29
|
* WRAPS the substrate-agnostic advance TICK ({@link performAdvance}) over named
|
|
29
30
|
* item(s) or the bare eligible-SET form. It is the in-place counterpart of
|
|
@@ -49,7 +50,7 @@ import type {ConfigOverrideMap} from './config-override.js';
|
|
|
49
50
|
*
|
|
50
51
|
* **The FLAT per-action gate family (US #23)** falls out of the SELECTION layer,
|
|
51
52
|
* exactly as it does for `do`: the eligible-pool scan only SURFACES a build item
|
|
52
|
-
* when `autoBuild` is on and a task-a-
|
|
53
|
+
* when `autoBuild` is on and a task-a-spec item when `autoTask` is on (the gate
|
|
53
54
|
* is a policy on the autonomous-SELECTION step, NOT on the explicit verb a human
|
|
54
55
|
* typed — an explicitly-NAMED `advance <slug>` builds regardless, mirroring
|
|
55
56
|
* `do <task>` vs `autoBuild`). SURFACE + APPLY are ALWAYS allowed — they run
|
|
@@ -61,7 +62,7 @@ import type {ConfigOverrideMap} from './config-override.js';
|
|
|
61
62
|
*
|
|
62
63
|
* **Isolation + chaining FALL OUT (US #26):** this driver builds NO new isolation
|
|
63
64
|
* or chaining machinery — it threads the SAME `AdvanceContext` the tick already
|
|
64
|
-
* consumes (which orchestrates `do`/`do
|
|
65
|
+
* consumes (which orchestrates `do`/`do spec:` through the isolation-strategy seam
|
|
65
66
|
* and rebase-before-integrate); a chain conflict routes to needs-attention as
|
|
66
67
|
* today, inside the orchestrated `do`.
|
|
67
68
|
*/
|
|
@@ -83,7 +84,7 @@ type SharedAdvanceContext = AdvanceContext;
|
|
|
83
84
|
export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
|
|
84
85
|
/**
|
|
85
86
|
* The resolved repo config — provides `autoBuild` (the build gate for the
|
|
86
|
-
* task pool), `autoTask` (the task-a-
|
|
87
|
+
* task pool), `autoTask` (the task-a-spec gate for the spec pool), and
|
|
87
88
|
* `selectionOrder` (the configurable cross-pool order). The per-action gate
|
|
88
89
|
* family is APPLIED HERE, at the selection layer (the policy-on-autonomous-
|
|
89
90
|
* selection point).
|
|
@@ -105,7 +106,7 @@ export interface PerformAdvanceMultiOptions extends SharedAdvanceContext {
|
|
|
105
106
|
count?: number;
|
|
106
107
|
/** Override the single-tick runner (tests inject a stub). Defaults to {@link performAdvance}. */
|
|
107
108
|
run?: AdvanceTickRunner;
|
|
108
|
-
/** Override the read seam (
|
|
109
|
+
/** Override the read seam (spec pool); defaults to the active {@link ledgerRead}. */
|
|
109
110
|
read?: LedgerReadStrategy;
|
|
110
111
|
/**
|
|
111
112
|
* The LIFECYCLE-POOL create-gates (task `advance-autopick-lifecycle-pools`),
|
|
@@ -168,6 +169,15 @@ export async function performAdvanceAuto(
|
|
|
168
169
|
const cwd = options.cwd;
|
|
169
170
|
const count = options.count ?? 1;
|
|
170
171
|
|
|
172
|
+
// Held-slug subtraction (task
|
|
173
|
+
// `in-place-scan-subtracts-held-locked-slugs-from-propose-matrix`): read the
|
|
174
|
+
// coordination arbiter's held task-lock refs and pass them into `scanRepoPaths`
|
|
175
|
+
// so a held item (`active`/`stuck`) is not selected into the build pool NOR the
|
|
176
|
+
// lifecycle surface/apply pools — the same subtraction the CI enumerate path
|
|
177
|
+
// runs. `heldTaskSlugs` is the GRACEFUL variant (empty set on any read fault):
|
|
178
|
+
// the follow-on claim CAS is still the load-bearing safety net locally.
|
|
179
|
+
const heldSlugs = await heldTaskSlugs(cwd, options.arbiter);
|
|
180
|
+
|
|
171
181
|
// Pool 1 — eligible TASKS via the EXISTING scan/select path. `scoreItems`
|
|
172
182
|
// inside `scanRepoPaths` gates eligibility on `autoBuild` (the build gate), so
|
|
173
183
|
// with `autoBuild` off NO task is selected — the build rung is never reached
|
|
@@ -175,12 +185,12 @@ export async function performAdvanceAuto(
|
|
|
175
185
|
const report = scanRepoPaths(
|
|
176
186
|
[cwd],
|
|
177
187
|
options.config,
|
|
178
|
-
|
|
188
|
+
heldSlugs,
|
|
179
189
|
options.override,
|
|
180
190
|
);
|
|
181
191
|
|
|
182
192
|
// Pool 2 — TASKABLE prds filtered by `autoslice-gate`'s predicate (gated on
|
|
183
|
-
// `autoTask`). With `autoTask` off NO
|
|
193
|
+
// `autoTask`). With `autoTask` off NO spec is selected — the task rung is
|
|
184
194
|
// never reached by the bare/`-n` selection.
|
|
185
195
|
const pool = read.resolveSpecPool({repoPath: cwd});
|
|
186
196
|
const specCandidates: SpecCandidate[] = pool.specs.map((spec) => ({
|
|
@@ -206,6 +216,9 @@ export async function performAdvanceAuto(
|
|
|
206
216
|
repoPath: cwd,
|
|
207
217
|
read,
|
|
208
218
|
gates: options.lifecycleGates,
|
|
219
|
+
// Subtract held task slugs from the triage/surface/apply candidate inputs,
|
|
220
|
+
// symmetric to Pool 1's `scoreItems` subtraction above.
|
|
221
|
+
heldSlugs,
|
|
209
222
|
});
|
|
210
223
|
|
|
211
224
|
// Order across the (up to) FIVE pools per the resolved `selectionOrder` (apply
|
|
@@ -237,8 +250,8 @@ export async function performAdvanceAuto(
|
|
|
237
250
|
/**
|
|
238
251
|
* Run the EXPLICIT multi-arg form (`advance <a> <b> …`): the named items in the
|
|
239
252
|
* GIVEN order (no pool/priority — the operator chose them). Each arg is run
|
|
240
|
-
* through the existing advance tick, which itself resolves bare/`task:`/`
|
|
241
|
-
* `obs:` (so a named
|
|
253
|
+
* through the existing advance tick, which itself resolves bare/`task:`/`spec:`/
|
|
254
|
+
* `obs:` (so a named spec drives the task rung, an `obs:` the triage rung, a
|
|
242
255
|
* collision errors), SEQUENTIALLY. A NAMED item is the always-allowed path — its
|
|
243
256
|
* surface/apply rung runs regardless of the per-action gates.
|
|
244
257
|
*/
|
|
@@ -251,7 +264,7 @@ export async function performAdvanceArgs(
|
|
|
251
264
|
repoPath: options.cwd,
|
|
252
265
|
slug: arg,
|
|
253
266
|
// The arg is passed VERBATIM to the tick (it does its own slug resolution
|
|
254
|
-
// across task/
|
|
267
|
+
// across task/spec/observation); the namespace is irrelevant for explicit args.
|
|
255
268
|
namespace: 'task' as const,
|
|
256
269
|
}));
|
|
257
270
|
return runSelectedInSequence(selected, options, run, {verbatimArg: true});
|
|
@@ -260,7 +273,7 @@ export async function performAdvanceArgs(
|
|
|
260
273
|
/**
|
|
261
274
|
* Run a list of selected items through the existing advance tick, SEQUENTIALLY
|
|
262
275
|
* (US #25 — `-n` is always sequential), threading the shared context to each. For
|
|
263
|
-
* the pool path the arg encodes the namespace (`
|
|
276
|
+
* the pool path the arg encodes the namespace (`spec:<slug>` for a selected spec,
|
|
264
277
|
* bare slug for a task); for the explicit-arg path the caller's raw arg is passed
|
|
265
278
|
* verbatim. Each tick is INDEPENDENTLY `advancing`-lock-guarded inside
|
|
266
279
|
* {@link performAdvance} — sequential here means one item at a time, never a
|
|
@@ -321,7 +334,7 @@ async function runSelectedInSequence(
|
|
|
321
334
|
* runner — the easy-to-miss site).
|
|
322
335
|
*
|
|
323
336
|
* The promote-apply edge mirrors the existing drivers without a special case: an
|
|
324
|
-
* `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-
|
|
337
|
+
* `apply` rung whose agentic verdict mints an artifact (`mint-task`/`mint-spec`)
|
|
325
338
|
* runs `promoteObservation`'s OWN arbiter CAS and commits NOTHING tree-less, so the
|
|
326
339
|
* ff-push here is a harmless no-op (a `HEAD` with nothing new) — it does NOT
|
|
327
340
|
* double-publish nor clobber the promote CAS.
|
|
@@ -363,7 +376,7 @@ export async function runAdvanceTickWithTreelessPublish(
|
|
|
363
376
|
* the tick surfaces/applies);
|
|
364
377
|
* - `task` → bare `<slug>` (an eligible task's build rung, OR a `needsAnswers`
|
|
365
378
|
* task the tick surfaces/applies).
|
|
366
|
-
* The tick re-classifies each arg, so a `needsAnswers`-blocked task/
|
|
379
|
+
* The tick re-classifies each arg, so a `needsAnswers`-blocked task/spec reaches
|
|
367
380
|
* surface/apply and an untriaged observation reaches triage — the classifier +
|
|
368
381
|
* rung bodies are unchanged; only this selection->arg mapping is new.
|
|
369
382
|
*/
|
package/src/advance-isolated.ts
CHANGED
|
@@ -21,7 +21,7 @@ import type {Config} from './config.js';
|
|
|
21
21
|
import type {AdvanceTickRunner, AdvanceMultiResult} from './advance-drivers.js';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
|
-
* The **ISOLATED advance-tick RUNNER** + its sequential drivers (
|
|
24
|
+
* The **ISOLATED advance-tick RUNNER** + its sequential drivers (spec
|
|
25
25
|
* `advance-loop`, task `advance-isolated-one-shot`, US #25/26) — the "isolated
|
|
26
26
|
* one-shot" cell `advance` was missing. It gives `advance` the SAME isolation
|
|
27
27
|
* ergonomic `do --isolated` has: run the advance TICK ({@link performAdvance}) in
|
|
@@ -83,7 +83,7 @@ export interface IsolatedAdvanceContext extends Omit<AdvanceContext, 'cwd'> {
|
|
|
83
83
|
|
|
84
84
|
/** Options for {@link performAdvanceIsolated} — the per-item isolated tick. */
|
|
85
85
|
export interface PerformAdvanceIsolatedOptions extends IsolatedAdvanceContext {
|
|
86
|
-
/** The raw advance arg: bare (= task), `
|
|
86
|
+
/** The raw advance arg: bare (= task), `spec:<slug>`, or `obs:<slug>`. */
|
|
87
87
|
arg: string;
|
|
88
88
|
/** The read seam (slug resolution / pool); defaults to {@link ledgerRead}. */
|
|
89
89
|
read?: LedgerReadStrategy;
|
|
@@ -373,7 +373,7 @@ export async function performAdvanceIsolatedAuto(
|
|
|
373
373
|
* Run the EXPLICIT multi-arg form (`advance --isolated <a> <b> …`): the NAMED items
|
|
374
374
|
* in the GIVEN order (no pool/priority — the operator chose them), each through the
|
|
375
375
|
* ISOLATED advance-tick runner, SEQUENTIALLY. No mirror scan is needed (the args
|
|
376
|
-
* are explicit); the per-item tick resolves each bare/`
|
|
376
|
+
* are explicit); the per-item tick resolves each bare/`spec:`/`obs:` arg itself.
|
|
377
377
|
*/
|
|
378
378
|
export async function performAdvanceIsolatedArgs(
|
|
379
379
|
args: string[],
|