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/frontmatter.d.ts
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
8
|
* **Origin-trust PROVENANCE** (task `untrusted-origin-forces-build-propose`).
|
|
9
|
-
* How a
|
|
10
|
-
* signal SURVIVES the
|
|
9
|
+
* How a spec/task was BORN and the AUTHOR-TRUST verdict at birth, stamped so the
|
|
10
|
+
* signal SURVIVES the spec/task merge boundary (a landed-on-`main` artifact would
|
|
11
11
|
* otherwise erase how it was created — the laundering gap).
|
|
12
12
|
*
|
|
13
13
|
* - `origin` — `human` (the default / unset: a human authored it locally; a local
|
|
@@ -45,11 +45,12 @@ export interface Frontmatter {
|
|
|
45
45
|
* Source SPEC slug: the parent-spec pointer this artifact derives from; the
|
|
46
46
|
* spec lives at `work/specs/ready/<spec>.md`. The `spec` vocabulary name (spec
|
|
47
47
|
* `prd-to-spec-vocabulary-cutover-and-migration-command`). `parseFrontmatter`
|
|
48
|
-
* populates it from
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
48
|
+
* populates it from the canonical `spec:` key ONLY — the HARD CUTOVER (the last
|
|
49
|
+
* ''prd'' back-compat surface removed): the legacy ''prd:'' KEY read is GONE, so
|
|
50
|
+
* an un-migrated ''prd:'' field no longer silently resolves. A downstream repo
|
|
51
|
+
* migrates its data with `dorfl prd-to-spec` (a purely TEXTUAL `prd: → spec:`
|
|
52
|
+
* rewrite that does NOT go through this parser), after which the field reads
|
|
53
|
+
* canonically. There is no `fm.prd` FIELD.
|
|
53
54
|
*/
|
|
54
55
|
spec: string | undefined;
|
|
55
56
|
/**
|
|
@@ -103,19 +104,19 @@ export interface Frontmatter {
|
|
|
103
104
|
/** Slugs this item is blocked by; `[]` when omitted or empty. */
|
|
104
105
|
blockedBy: string[];
|
|
105
106
|
/**
|
|
106
|
-
*
|
|
107
|
-
* tasked (resolved against `work/
|
|
107
|
+
* Spec-only: slugs of prds that must already be TASKED before this spec may be
|
|
108
|
+
* tasked (resolved against `work/specs/tasked/` residence, NOT `done/`). `[]` when
|
|
108
109
|
* omitted or empty. Parsed here so the auto-tasker can read it; enforcement
|
|
109
110
|
* lives in the `auto-slice` capability, not in eligibility.
|
|
110
111
|
*/
|
|
111
112
|
taskedAfter: string[];
|
|
112
113
|
/**
|
|
113
114
|
* The per-item override layer for the `promptGuidance` NUDGE namespace
|
|
114
|
-
* (task `prompt-guidance-testfirst-item-override`,
|
|
115
|
-
*
|
|
115
|
+
* (task `prompt-guidance-testfirst-item-override`, spec US #5). A task or
|
|
116
|
+
* spec may carry one or more `promptGuidance.<member>: true | false`
|
|
116
117
|
* frontmatter lines to OVERRIDE the resolved repo policy for THAT ITEM only.
|
|
117
118
|
* Each member is `undefined` when omitted (⇒ inherit the next layer down in
|
|
118
|
-
* the precedence chain: per-task > per-
|
|
119
|
+
* the precedence chain: per-task > per-spec > repo-resolved). The override
|
|
119
120
|
* is honoured at the prompt-assembly seam (`prompt.ts`); it never affects
|
|
120
121
|
* the `verify` gate.
|
|
121
122
|
*
|
|
@@ -166,14 +167,26 @@ export declare function setNeedsAnswersMarker(content: string, value: boolean):
|
|
|
166
167
|
* content, so it is left untouched (a degenerate input no writer produces).
|
|
167
168
|
*/
|
|
168
169
|
export declare function setFrontmatterMarker(content: string, key: string, value: string): string;
|
|
170
|
+
/**
|
|
171
|
+
* Read ONE arbitrary top-level scalar frontmatter key by name, returning its
|
|
172
|
+
* unquoted value (or `undefined` when the doc has no fence, or the key is absent).
|
|
173
|
+
*
|
|
174
|
+
* A general-purpose companion to {@link parseFrontmatter} for keys that are NOT in
|
|
175
|
+
* the modelled {@link Frontmatter} shape — e.g. the observation→task provenance
|
|
176
|
+
* back-reference `promotedFrom:` the triage-promote path stamps and the create-CAS
|
|
177
|
+
* lost-race disambiguation reads (task
|
|
178
|
+
* `observation-triage-already-triaged-benign-skip`). Only top-level `key: value`
|
|
179
|
+
* lines are matched (block-list / nested values are out of scope for a scalar read).
|
|
180
|
+
*/
|
|
181
|
+
export declare function readFrontmatterField(content: string, key: string): string | undefined;
|
|
169
182
|
/**
|
|
170
183
|
* PROPAGATE the origin-trust PROVENANCE (`origin` + `originTrust`) from a SOURCE
|
|
171
|
-
* artifact (a
|
|
184
|
+
* artifact (a spec) onto a TARGET artifact's content (an emitted task), returning
|
|
172
185
|
* the new content (task `untrusted-origin-forces-build-propose`). The tasker
|
|
173
|
-
* calls this so a task born from an untrusted-origin
|
|
186
|
+
* calls this so a task born from an untrusted-origin spec carries the stamp the
|
|
174
187
|
* BUILD transition reads. IDEMPOTENT: each present source field is written via
|
|
175
188
|
* {@link setFrontmatterMarker} (replace-or-append). When the source has NO `origin`
|
|
176
|
-
* (a human/local-authored
|
|
189
|
+
* (a human/local-authored spec ⇒ trusted), the target is returned UNCHANGED — the
|
|
177
190
|
* normal path is never stamped (zero behaviour change). When a stamp IS applied to
|
|
178
191
|
* a fence-less target, {@link setFrontmatterMarker} now prepends a fence to carry
|
|
179
192
|
* it (tasks the tasker emits always have a fence, so this is the defensive path).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AACvC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AACvC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,qDAAqD;IACrD,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;;;;;OAUG;IACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB;;;;;;;;;;;;;;;OAeG;IACH,cAAc,EAAE;QAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;KAAC,CAAC;CACjD;AA6FD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACX,MAAM,CAyBR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CAcpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,aAAa,CAAC,EACnD,aAAa,EAAE,MAAM,GACnB,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAiH7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAC9C;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,GAAG;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAC,GAAG,SAAS,CAQzE"}
|
package/dist/frontmatter.js
CHANGED
|
@@ -154,14 +154,40 @@ export function setFrontmatterMarker(content, key, value) {
|
|
|
154
154
|
lines.splice(closing, 0, `${key}: ${value}`);
|
|
155
155
|
return lines.join('\n');
|
|
156
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Read ONE arbitrary top-level scalar frontmatter key by name, returning its
|
|
159
|
+
* unquoted value (or `undefined` when the doc has no fence, or the key is absent).
|
|
160
|
+
*
|
|
161
|
+
* A general-purpose companion to {@link parseFrontmatter} for keys that are NOT in
|
|
162
|
+
* the modelled {@link Frontmatter} shape — e.g. the observation→task provenance
|
|
163
|
+
* back-reference `promotedFrom:` the triage-promote path stamps and the create-CAS
|
|
164
|
+
* lost-race disambiguation reads (task
|
|
165
|
+
* `observation-triage-already-triaged-benign-skip`). Only top-level `key: value`
|
|
166
|
+
* lines are matched (block-list / nested values are out of scope for a scalar read).
|
|
167
|
+
*/
|
|
168
|
+
export function readFrontmatterField(content, key) {
|
|
169
|
+
const block = extractBlock(content);
|
|
170
|
+
if (block === undefined) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
const pattern = new RegExp(`^${key}\\s*:\\s*(.*)$`);
|
|
174
|
+
for (const line of block.split('\n')) {
|
|
175
|
+
const match = pattern.exec(line);
|
|
176
|
+
if (match) {
|
|
177
|
+
const value = unquote(match[1]);
|
|
178
|
+
return value === '' ? undefined : value;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
return undefined;
|
|
182
|
+
}
|
|
157
183
|
/**
|
|
158
184
|
* PROPAGATE the origin-trust PROVENANCE (`origin` + `originTrust`) from a SOURCE
|
|
159
|
-
* artifact (a
|
|
185
|
+
* artifact (a spec) onto a TARGET artifact's content (an emitted task), returning
|
|
160
186
|
* the new content (task `untrusted-origin-forces-build-propose`). The tasker
|
|
161
|
-
* calls this so a task born from an untrusted-origin
|
|
187
|
+
* calls this so a task born from an untrusted-origin spec carries the stamp the
|
|
162
188
|
* BUILD transition reads. IDEMPOTENT: each present source field is written via
|
|
163
189
|
* {@link setFrontmatterMarker} (replace-or-append). When the source has NO `origin`
|
|
164
|
-
* (a human/local-authored
|
|
190
|
+
* (a human/local-authored spec ⇒ trusted), the target is returned UNCHANGED — the
|
|
165
191
|
* normal path is never stamped (zero behaviour change). When a stamp IS applied to
|
|
166
192
|
* a fence-less target, {@link setFrontmatterMarker} now prepends a fence to carry
|
|
167
193
|
* it (tasks the tasker emits always have a fence, so this is the defensive path).
|
|
@@ -230,29 +256,17 @@ export function parseFrontmatter(content) {
|
|
|
230
256
|
else if (key === 'slug') {
|
|
231
257
|
result.slug = rawValue === '' ? undefined : unquote(rawValue);
|
|
232
258
|
}
|
|
233
|
-
else if (key === 'spec'
|
|
234
|
-
// The parent-spec pointer, read from
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
// NOT clobber a non-empty value already read from the other.
|
|
242
|
-
const value = rawValue === '' ? undefined : unquote(rawValue);
|
|
243
|
-
if (key === 'spec') {
|
|
244
|
-
// The canonical key wins: overwrite whatever `prd:` may have set.
|
|
245
|
-
if (value !== undefined) {
|
|
246
|
-
result.spec = value;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
else if (result.spec === undefined) {
|
|
250
|
-
// Legacy `prd:` only fills in when `spec:` has not already set it.
|
|
251
|
-
result.spec = value;
|
|
252
|
-
}
|
|
259
|
+
else if (key === 'spec') {
|
|
260
|
+
// The parent-spec pointer, read from the canonical `spec:` key ONLY into the
|
|
261
|
+
// `fm.spec` field (spec `prd-to-spec-vocabulary-cutover-and-migration-command`,
|
|
262
|
+
// HARD CUTOVER). The legacy ''prd:'' KEY read is GONE — an un-migrated ''prd:''
|
|
263
|
+
// field no longer resolves here; a repo converts its data via the TEXTUAL
|
|
264
|
+
// `dorfl prd-to-spec` rewrite (which does not use this parser). An empty value
|
|
265
|
+
// leaves the field undefined.
|
|
266
|
+
result.spec = rawValue === '' ? undefined : unquote(rawValue);
|
|
253
267
|
}
|
|
254
268
|
else if (key === 'issue') {
|
|
255
|
-
// Integer issue link (`intake`'s
|
|
269
|
+
// Integer issue link (`intake`'s spec-emit OR a lone-task emit). A
|
|
256
270
|
// non-integer / empty value reads as undefined (the field is absent rather
|
|
257
271
|
// than malformed).
|
|
258
272
|
const n = Number(unquote(rawValue));
|
package/dist/frontmatter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"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"}
|
package/dist/gc.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type JobRecord } from './workspace.js';
|
|
2
|
+
import type { SidecarType } from './sidecar.js';
|
|
2
3
|
/**
|
|
3
4
|
* Why a job's worktree was retained (not provably safe to remove). The reaper
|
|
4
5
|
* surfaces exactly one of these per retained job (the FIRST failing clause, in
|
|
@@ -152,14 +153,72 @@ export declare function gc(options: GcOptions): GcResult;
|
|
|
152
153
|
* from the record (falling back to `work/<derived-slug>`).
|
|
153
154
|
*/
|
|
154
155
|
export declare function discoverJobs(workspacesDir: string): GcJob[];
|
|
156
|
+
/** Input for {@link isProvablyMergedForReap}. */
|
|
157
|
+
export interface ProvablyMergedForReapInput {
|
|
158
|
+
/** The local repo the git predicates run in. */
|
|
159
|
+
cwd: string;
|
|
160
|
+
/** The candidate branch tip (a 40-hex sha or a resolvable ref). */
|
|
161
|
+
tip: string;
|
|
162
|
+
/**
|
|
163
|
+
* The arbiter's main as a ref RESOLVABLE INSIDE `cwd` — a fetched
|
|
164
|
+
* remote-tracking ref (`refs/remotes/<arbiter>/main`) or short-form
|
|
165
|
+
* (`<arbiter>/main`). Callers are responsible for the fetch (best-effort;
|
|
166
|
+
* an unresolvable ref reads as not-provable ⇒ false).
|
|
167
|
+
*/
|
|
168
|
+
arbiterMain: string;
|
|
169
|
+
/**
|
|
170
|
+
* The item's type (task/spec/observation) — used to look up the durable
|
|
171
|
+
* terminal records on `<arbiter>/main`. Reap decisions on a
|
|
172
|
+
* `work/<type>-<slug>` branch pass the parsed type from
|
|
173
|
+
* {@link parseWorkBranchRef}.
|
|
174
|
+
*/
|
|
175
|
+
namespace: SidecarType;
|
|
176
|
+
/** The item's bare slug — the anchor for the squash-aware fallback. */
|
|
177
|
+
slug: string;
|
|
178
|
+
env?: NodeJS.ProcessEnv;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* The **squash-aware, provably-merged predicate** used to decide reap-safety
|
|
182
|
+
* across the workspace: `gc.ts`'s worktree reaper, `reap-branches.ts`'s remote
|
|
183
|
+
* `work/*` sweep, `integrator.ts`'s post-merge remote-head reap, and
|
|
184
|
+
* `complete.ts`'s local-branch reap. ONE decision point so the two rules can
|
|
185
|
+
* never drift apart, and NEVER `--force` — a merged-for-reap ref needs none.
|
|
186
|
+
*
|
|
187
|
+
* A remote/local `work/<slug>` branch is reapable iff EITHER:
|
|
188
|
+
*
|
|
189
|
+
* 1. **Fast path (unchanged).** `git merge-base --is-ancestor <tip>
|
|
190
|
+
* <arbiter>/main` succeeds — the fast-forward / true-merge land case.
|
|
191
|
+
* 2. **Squash-aware fallback (new).** BOTH of the following hold:
|
|
192
|
+
* - the item is TERMINAL on `<arbiter>/main` — i.e. the matching
|
|
193
|
+
* {@link terminalMainPaths} (`work/tasks/done/<slug>.md` or
|
|
194
|
+
* `work/tasks/cancelled/<slug>.md` for a task; `work/specs/tasked/…`
|
|
195
|
+
* or `work/specs/dropped/…` for a spec) exists in the fetched main
|
|
196
|
+
* tree; AND
|
|
197
|
+
* - the branch carries NOTHING main lacks — either `git diff --quiet
|
|
198
|
+
* <arbiter>/main <tip>` reads clean (content-equal / content-subset)
|
|
199
|
+
* OR `git cherry <arbiter>/main <tip>` reports every commit as
|
|
200
|
+
* already applied by patch-id (`-` on every line, catching
|
|
201
|
+
* rebase-lands the tree check misses).
|
|
202
|
+
*
|
|
203
|
+
* Grounding: the durable `<arbiter>/main` record is authoritative. It is what
|
|
204
|
+
* `complete` writes FIRST, so if the terminal record is there the item's work
|
|
205
|
+
* is at rest, and a branch that carries nothing main lacks has no in-flight
|
|
206
|
+
* work to protect. The safety floor is unchanged: NEVER reap an in-flight /
|
|
207
|
+
* unmerged branch (no terminal record ⇒ retain), NEVER reap a branch carrying
|
|
208
|
+
* commits main lacks (content check fails ⇒ retain), NEVER `--force`.
|
|
209
|
+
*
|
|
210
|
+
* This is the branch-side twin of the lock-side terminal-on-main recovery
|
|
211
|
+
* (`isTerminalOnMain` in `item-lock.ts`): same anchor, different subject.
|
|
212
|
+
*/
|
|
213
|
+
export declare function isProvablyMergedForReap(input: ProvablyMergedForReapInput): boolean;
|
|
155
214
|
/**
|
|
156
215
|
* True iff `ancestor` is an ancestor of (or equal to) `descendant`, both
|
|
157
|
-
* resolved IN the local repo `dir` (`git merge-base --is-ancestor`).
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
216
|
+
* resolved IN the local repo `dir` (`git merge-base --is-ancestor`). The
|
|
217
|
+
* low-level fast-path building block for {@link isProvablyMergedForReap} —
|
|
218
|
+
* reap-safety decisions across the workspace go through the squash-aware
|
|
219
|
+
* wrapper, never this raw predicate. EXPORTED so callers that legitimately
|
|
220
|
+
* need pure ancestry (non-reap idempotency checks, claim-reachability guards)
|
|
221
|
+
* keep the one shared implementation.
|
|
163
222
|
*/
|
|
164
223
|
export declare function isAncestor(dir: string, ancestor: string, descendant: string, env: NodeJS.ProcessEnv | undefined): boolean;
|
|
165
224
|
//# sourceMappingURL=gc.d.ts.map
|
package/dist/gc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../src/gc.ts"],"names":[],"mappings":"AAGA,OAAO,EAKN,KAAK,SAAS,EACd,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"gc.d.ts","sourceRoot":"","sources":["../src/gc.ts"],"names":[],"mappings":"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"}
|
package/dist/gc.js
CHANGED
|
@@ -2,7 +2,8 @@ import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { git, run } from './git.js';
|
|
4
4
|
import { JOB_RECORD_FILENAME, jobRecordPath, readJobRecord, removeJobRecord, } from './workspace.js';
|
|
5
|
-
import { workBranchRef } from './slug-namespace.js';
|
|
5
|
+
import { parseWorkBranchRef, workBranchRef } from './slug-namespace.js';
|
|
6
|
+
import { terminalMainPaths } from './item-lock.js';
|
|
6
7
|
/**
|
|
7
8
|
* The **reaper** for job worktrees, governed by the **provably-safe deletion
|
|
8
9
|
* predicate** (ADR §4 in `docs/adr/execution-substrate-decisions.md`, the
|
|
@@ -72,8 +73,21 @@ export function evaluateDeletionSafety(input) {
|
|
|
72
73
|
fetchTracking(input.dir, arbiter, 'main', env);
|
|
73
74
|
fetchTracking(input.dir, arbiter, input.branch, env);
|
|
74
75
|
const localTip = revParse(input.dir, 'HEAD', env);
|
|
75
|
-
// 2a. Merged: the tip is
|
|
76
|
-
|
|
76
|
+
// 2a. Merged: the tip is provably on <arbiter>/main — either a plain
|
|
77
|
+
// ancestor (fast path) OR squash-aware-equivalent (the durable done/
|
|
78
|
+
// dropped record is on main AND the branch carries nothing main lacks).
|
|
79
|
+
const arbiterMainRef = `refs/remotes/${arbiter}/main`;
|
|
80
|
+
const reapIdentity = reapIdentityFromBranch(input.branch);
|
|
81
|
+
if (reapIdentity !== undefined
|
|
82
|
+
? isProvablyMergedForReap({
|
|
83
|
+
cwd: input.dir,
|
|
84
|
+
tip: localTip,
|
|
85
|
+
arbiterMain: arbiterMainRef,
|
|
86
|
+
namespace: reapIdentity.namespace,
|
|
87
|
+
slug: reapIdentity.slug,
|
|
88
|
+
env,
|
|
89
|
+
})
|
|
90
|
+
: isAncestor(input.dir, localTip, arbiterMainRef, env)) {
|
|
77
91
|
return { safe: true, reachableVia: 'merged' };
|
|
78
92
|
}
|
|
79
93
|
// 2b. Pushed: <arbiter>/<branch> exists AND its tip == the local tip.
|
|
@@ -258,14 +272,117 @@ function fetchTracking(dir, arbiter, head, env) {
|
|
|
258
272
|
`+refs/heads/${head}:refs/remotes/${arbiter}/${head}`,
|
|
259
273
|
], dir, { env });
|
|
260
274
|
}
|
|
275
|
+
/**
|
|
276
|
+
* Extract the `{namespace, slug}` identity a reap decision needs from a work
|
|
277
|
+
* branch ref (`work/[<producer>-]<type>-<slug>`). Returns `undefined` for a
|
|
278
|
+
* non-namespaced branch — the caller then falls back to the ancestry-only
|
|
279
|
+
* fast-path (the squash-aware fallback has no anchor without an identity to
|
|
280
|
+
* look up on `<arbiter>/main`, so the safe direction is the strict old rule).
|
|
281
|
+
*/
|
|
282
|
+
function reapIdentityFromBranch(branch) {
|
|
283
|
+
const parsed = parseWorkBranchRef(branch);
|
|
284
|
+
if (parsed === undefined) {
|
|
285
|
+
return undefined;
|
|
286
|
+
}
|
|
287
|
+
// `SlugNamespace` and `SidecarType` share the same three members
|
|
288
|
+
// (`'task' | 'spec' | 'observation'`); the cast is structural.
|
|
289
|
+
return { namespace: parsed.namespace, slug: parsed.slug };
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* The **squash-aware, provably-merged predicate** used to decide reap-safety
|
|
293
|
+
* across the workspace: `gc.ts`'s worktree reaper, `reap-branches.ts`'s remote
|
|
294
|
+
* `work/*` sweep, `integrator.ts`'s post-merge remote-head reap, and
|
|
295
|
+
* `complete.ts`'s local-branch reap. ONE decision point so the two rules can
|
|
296
|
+
* never drift apart, and NEVER `--force` — a merged-for-reap ref needs none.
|
|
297
|
+
*
|
|
298
|
+
* A remote/local `work/<slug>` branch is reapable iff EITHER:
|
|
299
|
+
*
|
|
300
|
+
* 1. **Fast path (unchanged).** `git merge-base --is-ancestor <tip>
|
|
301
|
+
* <arbiter>/main` succeeds — the fast-forward / true-merge land case.
|
|
302
|
+
* 2. **Squash-aware fallback (new).** BOTH of the following hold:
|
|
303
|
+
* - the item is TERMINAL on `<arbiter>/main` — i.e. the matching
|
|
304
|
+
* {@link terminalMainPaths} (`work/tasks/done/<slug>.md` or
|
|
305
|
+
* `work/tasks/cancelled/<slug>.md` for a task; `work/specs/tasked/…`
|
|
306
|
+
* or `work/specs/dropped/…` for a spec) exists in the fetched main
|
|
307
|
+
* tree; AND
|
|
308
|
+
* - the branch carries NOTHING main lacks — either `git diff --quiet
|
|
309
|
+
* <arbiter>/main <tip>` reads clean (content-equal / content-subset)
|
|
310
|
+
* OR `git cherry <arbiter>/main <tip>` reports every commit as
|
|
311
|
+
* already applied by patch-id (`-` on every line, catching
|
|
312
|
+
* rebase-lands the tree check misses).
|
|
313
|
+
*
|
|
314
|
+
* Grounding: the durable `<arbiter>/main` record is authoritative. It is what
|
|
315
|
+
* `complete` writes FIRST, so if the terminal record is there the item's work
|
|
316
|
+
* is at rest, and a branch that carries nothing main lacks has no in-flight
|
|
317
|
+
* work to protect. The safety floor is unchanged: NEVER reap an in-flight /
|
|
318
|
+
* unmerged branch (no terminal record ⇒ retain), NEVER reap a branch carrying
|
|
319
|
+
* commits main lacks (content check fails ⇒ retain), NEVER `--force`.
|
|
320
|
+
*
|
|
321
|
+
* This is the branch-side twin of the lock-side terminal-on-main recovery
|
|
322
|
+
* (`isTerminalOnMain` in `item-lock.ts`): same anchor, different subject.
|
|
323
|
+
*/
|
|
324
|
+
export function isProvablyMergedForReap(input) {
|
|
325
|
+
const { cwd, tip, arbiterMain, namespace, slug, env } = input;
|
|
326
|
+
// 1. Fast path — the fast-forward / true-merge land case. Cheap: one
|
|
327
|
+
// `git merge-base --is-ancestor`.
|
|
328
|
+
if (isAncestor(cwd, tip, arbiterMain, env)) {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
// 2. Squash-aware fallback. Anchor: the durable terminal record on
|
|
332
|
+
// `<arbiter>/main`. No terminal record ⇒ the item is still in-flight (or
|
|
333
|
+
// an observation, which has no terminal folder) ⇒ retain (never reap
|
|
334
|
+
// in-flight work).
|
|
335
|
+
if (!terminalRecordOnMain(cwd, arbiterMain, namespace, slug, env)) {
|
|
336
|
+
return false;
|
|
337
|
+
}
|
|
338
|
+
// 2a. Content-subset: `git diff --quiet <arbiterMain> <tip>` clean ⇒ the
|
|
339
|
+
// two trees are identical, so the branch carries nothing main lacks
|
|
340
|
+
// (the incident shape: the branch is a since-lagged snapshot of a
|
|
341
|
+
// squash-landed item, no new content on it).
|
|
342
|
+
const diff = run('git', ['diff', '--quiet', arbiterMain, tip], cwd, { env });
|
|
343
|
+
if (diff.status === 0) {
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
// 2b. Patch-id equivalence via `git cherry <upstream> <head>`: every commit
|
|
347
|
+
// reachable from `<tip>` but not `<arbiterMain>` is reported as `-`
|
|
348
|
+
// (already applied upstream by patch-id). This catches rebase-lands
|
|
349
|
+
// where the tree diff is non-empty but every commit is already on main
|
|
350
|
+
// under a different sha.
|
|
351
|
+
const cherry = run('git', ['cherry', arbiterMain, tip], cwd, { env });
|
|
352
|
+
if (cherry.status === 0) {
|
|
353
|
+
const lines = cherry.stdout
|
|
354
|
+
.split('\n')
|
|
355
|
+
.map((l) => l.trim())
|
|
356
|
+
.filter((l) => l !== '');
|
|
357
|
+
if (lines.length > 0 && lines.every((l) => l.startsWith('- '))) {
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
return false;
|
|
362
|
+
}
|
|
363
|
+
/** True iff `<arbiterMain>` carries ANY of the item's durable terminal records
|
|
364
|
+
* ({@link terminalMainPaths}). Best-effort: `cat-file -e` is a cheap tree
|
|
365
|
+
* probe; an unresolvable `<arbiterMain>` reads as no-record ⇒ retain (the safe
|
|
366
|
+
* direction). Observations have no terminal folder ⇒ always false. */
|
|
367
|
+
function terminalRecordOnMain(cwd, arbiterMain, namespace, slug, env) {
|
|
368
|
+
for (const path of terminalMainPaths(namespace, slug)) {
|
|
369
|
+
const res = run('git', ['cat-file', '-e', `${arbiterMain}:${path}`], cwd, {
|
|
370
|
+
env,
|
|
371
|
+
});
|
|
372
|
+
if (res.status === 0) {
|
|
373
|
+
return true;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
return false;
|
|
377
|
+
}
|
|
261
378
|
/**
|
|
262
379
|
* True iff `ancestor` is an ancestor of (or equal to) `descendant`, both
|
|
263
|
-
* resolved IN the local repo `dir` (`git merge-base --is-ancestor`).
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
*
|
|
267
|
-
*
|
|
268
|
-
*
|
|
380
|
+
* resolved IN the local repo `dir` (`git merge-base --is-ancestor`). The
|
|
381
|
+
* low-level fast-path building block for {@link isProvablyMergedForReap} —
|
|
382
|
+
* reap-safety decisions across the workspace go through the squash-aware
|
|
383
|
+
* wrapper, never this raw predicate. EXPORTED so callers that legitimately
|
|
384
|
+
* need pure ancestry (non-reap idempotency checks, claim-reachability guards)
|
|
385
|
+
* keep the one shared implementation.
|
|
269
386
|
*/
|
|
270
387
|
export function isAncestor(dir, ancestor, descendant, env) {
|
|
271
388
|
const res = run('git', ['merge-base', '--is-ancestor', ancestor, descendant], dir, { env });
|
package/dist/gc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../src/gc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,GAAG,EAAE,GAAG,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,EACN,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,GAEf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"gc.js","sourceRoot":"","sources":["../src/gc.ts"],"names":[],"mappings":"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"}
|
package/dist/github.d.ts
CHANGED
|
@@ -112,6 +112,20 @@ export declare class GitHubProvider implements ReviewProvider {
|
|
|
112
112
|
* record / `status`).
|
|
113
113
|
*/
|
|
114
114
|
openRequest(input: OpenRequestInput): Promise<OpenRequestResult>;
|
|
115
|
+
/**
|
|
116
|
+
* The PR for this branch ALREADY EXISTS (task
|
|
117
|
+
* `committed-recovery-completes-existing-pr`): resolve its url, REFRESH its
|
|
118
|
+
* title/body via `gh pr edit` (so a committed-recovery re-run's synthesised
|
|
119
|
+
* title + task-pointer body replace the earlier run's blank `--fill` ones),
|
|
120
|
+
* and return it as `{opened: true, url}` so the caller's review-comment path
|
|
121
|
+
* fires on the existing PR. Returns `undefined` when the url cannot be
|
|
122
|
+
* resolved (the caller then falls through to the degrade path). The `gh pr
|
|
123
|
+
* edit` is best-effort: a failed edit still returns the resolved PR (posting
|
|
124
|
+
* the review comment matters more than refreshing the body), and it is only
|
|
125
|
+
* attempted when this run actually has explicit title/body to set (else the
|
|
126
|
+
* existing PR's content is left untouched).
|
|
127
|
+
*/
|
|
128
|
+
private updateExistingRequest;
|
|
115
129
|
/** Map a successful `gh pr create` RunResult to an OpenRequestResult. */
|
|
116
130
|
private parseOpened;
|
|
117
131
|
/**
|
package/dist/github.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE7C,6DAA6D;AAC7D,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMvD;AAuCD,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAK7E;AAED,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,OAAO,GAAE,qBAA0B;IAK/C;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAGA,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE7C,6DAA6D;AAC7D,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMvD;AAuCD,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAK7E;AAED,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,YAAW,cAAc;IACpD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,OAAO,GAAE,qBAA0B;IAK/C;;;;;;;;;;;;;;OAcG;IACG,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkFtE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,qBAAqB;IA4B7B,yEAAyE;IACzE,OAAO,CAAC,WAAW;IAoBnB;;;;;;;;OAQG;IACH,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB;IA2B7D;;;;;;;;;;;;;;;;;OAiBG;IACH,qBAAqB,CACpB,KAAK,EAAE,0BAA0B,GAC/B,mBAAmB;IAsBtB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO;IAKxD;;;;OAIG;IACH,OAAO,CAAC,KAAK;IAYb;;;;;;;OAOG;IACH,OAAO,CAAC,OAAO;CAmCf;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,EAAE,CAKX"}
|