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/ledger-write.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { runAsync } from './git.js';
|
|
3
3
|
import { Integrator, } from './integrator.js';
|
|
4
|
-
import { routeToNeedsAttention, returnToBacklog, } from './needs-attention.js';
|
|
5
|
-
import { markStuckItemLock, resumeItemLock, } from './item-lock.js';
|
|
4
|
+
import { routeToNeedsAttention, returnToBacklog, surfaceStuckToNeedsAttention, } from './needs-attention.js';
|
|
6
5
|
// --- The sole strategy: exactly today's behaviour -------------------------
|
|
7
6
|
/** Run git, returning the raw result (no throw) — for soft checks. */
|
|
8
7
|
function gitSoft(args, cwd, env) {
|
|
@@ -198,12 +197,12 @@ export const currentLedgerWrite = {
|
|
|
198
197
|
* bounce its `work/prd-<slug>`, a temp-branch caller pushes NOTHING.)
|
|
199
198
|
*
|
|
200
199
|
* Both halves are ONE operation done in ONE place: it delegates to {@link
|
|
201
|
-
* routeToNeedsAttention}, which
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
*
|
|
200
|
+
* routeToNeedsAttention}, which saves the aborted work as a **wip** commit
|
|
201
|
+
* on the work branch (post lock-cutover no `work/needs-attention/` folder
|
|
202
|
+
* write ever fires here) and — when an `arbiter` is given — pushes the work
|
|
203
|
+
* branch (best-effort, branch-parameterised, emptiness-guarded; SURFACE-
|
|
204
|
+
* ONLY when `pushBranch: false`). The OBSERVABLE lock amend rides on
|
|
205
|
+
* {@link bounceToStuckLock} directly below. The seam does NOT strip the arbiter: the same
|
|
207
206
|
* arbiter both publishes the surface (here) AND drives the helper's branch push,
|
|
208
207
|
* so "record stuck" and "save the work" can never drift apart. The human-vs-
|
|
209
208
|
* autonomous gate rides on whether an `arbiter` is given at all (human
|
|
@@ -223,9 +222,10 @@ export const currentLedgerWrite = {
|
|
|
223
222
|
// outage-retried), so the partial work travels cross-machine and a `requeue`
|
|
224
223
|
// continues from the tip. The work-branch push is NOT a `main` write.
|
|
225
224
|
const saved = await routeToNeedsAttention(input);
|
|
226
|
-
const
|
|
225
|
+
const surfaced = await bounceThroughSurface({
|
|
227
226
|
cwd: input.cwd,
|
|
228
227
|
slug: input.slug,
|
|
228
|
+
item: `task:${input.slug}`,
|
|
229
229
|
reason: input.reason,
|
|
230
230
|
questions: input.questions,
|
|
231
231
|
arbiter: input.arbiter,
|
|
@@ -233,11 +233,12 @@ export const currentLedgerWrite = {
|
|
|
233
233
|
note: input.note,
|
|
234
234
|
});
|
|
235
235
|
return {
|
|
236
|
-
// `moved` reflects the OBSERVABLE half (the
|
|
237
|
-
|
|
238
|
-
|
|
236
|
+
// `moved` reflects the OBSERVABLE half (the surface record): the sidecar +
|
|
237
|
+
// `needsAnswers:true` on `<arbiter>/main` (or the human-local no-op).
|
|
238
|
+
moved: surfaced.moved,
|
|
239
|
+
reasonNotMoved: surfaced.reasonNotMoved,
|
|
239
240
|
// The branch push outcome is the honest RECOVERABLE report (`do`/`run` read
|
|
240
|
-
// it).
|
|
241
|
+
// it).
|
|
241
242
|
branchPush: saved.branchPush,
|
|
242
243
|
pushError: saved.pushError,
|
|
243
244
|
};
|
|
@@ -245,7 +246,7 @@ export const currentLedgerWrite = {
|
|
|
245
246
|
/**
|
|
246
247
|
* The return-to-backlog transition under the SAME strategy: re-queue the
|
|
247
248
|
* stuck item by delegating to {@link returnToBacklog}, which moves the slug's
|
|
248
|
-
* current `work/<needs-attention|in-progress>/<slug>.md → work/
|
|
249
|
+
* current `work/<needs-attention|in-progress>/<slug>.md → work/tasks/ready/<slug>.md`
|
|
249
250
|
* TREE-LESSLY — it
|
|
250
251
|
* builds the move off `<arbiter>/main` with plumbing and CAS-publishes it back
|
|
251
252
|
* THROUGH this same write seam (`applyTransition`, the very push+lease+verify
|
|
@@ -255,149 +256,126 @@ export const currentLedgerWrite = {
|
|
|
255
256
|
return returnToBacklog(input);
|
|
256
257
|
},
|
|
257
258
|
/**
|
|
258
|
-
* The tree-less surface transition under the SAME strategy: surface the
|
|
259
|
-
* AFTER-COMMIT, LEDGER-ONLY item by delegating to the tree-less
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
* staging/committing in the cwd working tree. The reverse of
|
|
259
|
+
* The tree-less surface transition under the SAME strategy: surface the
|
|
260
|
+
* stuck AFTER-COMMIT, LEDGER-ONLY item by delegating to the tree-less
|
|
261
|
+
* surface — post lock-cutover a pure LOCK AMEND (`state: stuck` with the
|
|
262
|
+
* reason on the lock entry), CAS-published to the arbiter's lock ref via
|
|
263
|
+
* the same push+lease+verify seam `claim`/`requeue` use, never staging or
|
|
264
|
+
* committing in the cwd working tree. The reverse of
|
|
265
265
|
* {@link applyReturnToBacklogTransition}, the same one mechanism.
|
|
266
266
|
*/
|
|
267
267
|
async applyTreelessNeedsAttentionTransition(input) {
|
|
268
|
-
//
|
|
269
|
-
// `
|
|
270
|
-
//
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
//
|
|
275
|
-
// already
|
|
276
|
-
const
|
|
268
|
+
// PR-2b surface cutover (spec
|
|
269
|
+
// `surface-stuck-as-questions-and-retire-stuck-lock-state`, decision #1): the
|
|
270
|
+
// after-commit / ledger-only surface (continue-push-failure / continue-rebase-
|
|
271
|
+
// conflict) surfaces the item on `<arbiter>/main` (a `stuck`-kind sidecar +
|
|
272
|
+
// `needsAnswers:true` on the item body in ONE commit) THEN releases the per-
|
|
273
|
+
// item lock. Surface-FIRST, release-SECOND, with `main`-authoritative crash
|
|
274
|
+
// recovery inherited from {@link runTreelessLedgerMove}. The recoverable work
|
|
275
|
+
// is already committed on the kept `work/<slug>` branch (intact on the arbiter).
|
|
276
|
+
const surfaced = await bounceThroughSurface({
|
|
277
277
|
cwd: input.cwd,
|
|
278
278
|
slug: input.slug,
|
|
279
|
+
item: `task:${input.slug}`,
|
|
279
280
|
reason: input.reason,
|
|
280
281
|
questions: input.questions,
|
|
281
282
|
arbiter: input.arbiter,
|
|
282
283
|
env: input.env,
|
|
283
284
|
note: input.note,
|
|
284
285
|
});
|
|
285
|
-
return { moved:
|
|
286
|
+
return { moved: surfaced.moved, reasonNotMoved: surfaced.reasonNotMoved };
|
|
286
287
|
},
|
|
287
288
|
/**
|
|
288
289
|
* The resolve-needs-attention transition under the SAME strategy — satisfying
|
|
289
|
-
* the INTENT "clear the stuck surface + restore
|
|
290
|
-
* the resume lock amend (
|
|
291
|
-
* in-progress
|
|
292
|
-
*
|
|
293
|
-
* there (the item is
|
|
294
|
-
* never-`--force` publish.
|
|
295
|
-
* strategy; the seam's contract is only the intent "clear the surface."
|
|
290
|
+
* the INTENT "clear the stuck surface + restore active." It delegates to
|
|
291
|
+
* the resume lock amend (post lock-cutover — `stuck → active` on the per-item
|
|
292
|
+
* lock, no reverse `needs-attention/ → in-progress/` folder move) and, when an
|
|
293
|
+
* `arbiter` is given, CAS-publishes that lock amend to the arbiter's lock ref —
|
|
294
|
+
* CLEARING the stuck surface there (the item is active again). Same
|
|
295
|
+
* all-or-nothing, never-`--force` publish. The lock-ref amend is a detail of
|
|
296
|
+
* THIS strategy; the seam's contract is only the intent "clear the surface."
|
|
296
297
|
*/
|
|
297
|
-
async applyResolveNeedsAttentionTransition(
|
|
298
|
-
//
|
|
299
|
-
// `
|
|
300
|
-
//
|
|
301
|
-
//
|
|
302
|
-
//
|
|
303
|
-
//
|
|
304
|
-
//
|
|
305
|
-
|
|
306
|
-
return { moved: true };
|
|
307
|
-
}
|
|
308
|
-
const r = await resumeItemLock({
|
|
309
|
-
item: `task:${input.slug}`,
|
|
310
|
-
cwd: input.cwd,
|
|
311
|
-
arbiter: input.arbiter,
|
|
312
|
-
env: input.env,
|
|
313
|
-
});
|
|
314
|
-
if (r.outcome === 'transitioned') {
|
|
315
|
-
return { moved: true };
|
|
316
|
-
}
|
|
317
|
-
// `wrong-state` (already active — not actually stuck) is tolerated as a no-op
|
|
318
|
-
// success: the item is already in-flight, the caller onboards onto it anyway.
|
|
319
|
-
if (r.outcome === 'wrong-state') {
|
|
320
|
-
return { moved: true };
|
|
321
|
-
}
|
|
322
|
-
return {
|
|
323
|
-
moved: false,
|
|
324
|
-
reasonNotMoved: `could not resume '${input.slug}' (${r.outcome}: ${r.message}).`,
|
|
325
|
-
};
|
|
298
|
+
async applyResolveNeedsAttentionTransition(_input) {
|
|
299
|
+
// Post-`retire-stuck-lock-state`: the `stuck` lock state is retired, so
|
|
300
|
+
// there is no `stuck → active` lock amend to perform. A parked item is
|
|
301
|
+
// now a `needsAnswers:true` pool item on `main` with a sidecar, drained
|
|
302
|
+
// by the apply rung (answer the sidecar), not by a resolve verb. The seam
|
|
303
|
+
// is kept for source compatibility of its remaining legacy callers
|
|
304
|
+
// (start.ts's legacy `needs-attention/` folder branch), where it is a
|
|
305
|
+
// recorded no-op success.
|
|
306
|
+
return { moved: true };
|
|
326
307
|
},
|
|
327
308
|
};
|
|
328
309
|
/**
|
|
329
|
-
* The SOLE stuck-state RECORD
|
|
330
|
-
* `
|
|
331
|
-
*
|
|
332
|
-
* `
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
*
|
|
337
|
-
* bounce
|
|
338
|
-
*
|
|
339
|
-
* The bounce holds the TASK's `implement` lock that `claim` acquired (task
|
|
340
|
-
* `claim-acquires-unified-lock-no-body-move`), so the normal stuck path is a plain
|
|
341
|
-
* `active → stuck` amend (`transitioned`). The OUTCOME MAPPING onto `{moved}`:
|
|
342
|
-
* - `transitioned` — the lock is now stuck (the stuck state is recorded) ⇒
|
|
343
|
-
* `moved: true`.
|
|
344
|
-
* - `wrong-state` — the lock is ALREADY `stuck` (an idempotent re-surface of a
|
|
345
|
-
* still-stuck item) ⇒ `moved: true` (the stuck record stands).
|
|
346
|
-
* - `not-held` — there is NO held lock to amend (an item that predates the
|
|
347
|
-
* lock, or a flow where claim did not acquire) ⇒ `moved: false` honestly: with
|
|
348
|
-
* the folder retired there is no other substrate to record the stuck state on,
|
|
349
|
-
* so the caller reports the bounce did NOT land (retry/resolve) rather than
|
|
350
|
-
* fake a success.
|
|
351
|
-
* - `lost`/`error` — a concurrent CAS race / environment fault ⇒ `moved: false`.
|
|
352
|
-
* - no arbiter — a human local-only `complete` (no arbiter handle): the lock
|
|
353
|
-
* ref lives on the arbiter, so there is no lock to amend; treat as a recorded
|
|
354
|
-
* no-op (`moved: true`) — a human is right there (the same human-vs-autonomous
|
|
355
|
-
* posture the old local-only folder move took). NOTE this records nothing
|
|
356
|
-
* durable, by design: the human is in the loop.
|
|
310
|
+
* The SOLE stuck-state RECORD (PR-2b, spec
|
|
311
|
+
* `surface-stuck-as-questions-and-retire-stuck-lock-state`, user stories 1/3/8,
|
|
312
|
+
* decisions #1/#4): surface the bounced item as a `stuck`-kind sidecar +
|
|
313
|
+
* `needsAnswers:true` on the item body in ONE commit on `<arbiter>/main`, THEN
|
|
314
|
+
* release the per-item lock. Surface-FIRST, release-SECOND — the ordering is
|
|
315
|
+
* load-bearing so a crash between them is recoverable from `main` (the classifier
|
|
316
|
+
* fold in `item-lock.ts` re-derives `cleared-stale` from the main-side truth
|
|
317
|
+
* PR-2a landed). This REPLACES the retired `active → stuck` lock amend: no
|
|
318
|
+
* bounce leaves a `stuck` lock; a bounced item rests as a plain `needsAnswers:true`
|
|
319
|
+
* pool item (`eligible:false` by construction).
|
|
357
320
|
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
321
|
+
* The OUTCOME MAPPING onto `{moved}`:
|
|
322
|
+
* - `surfaced` — the sidecar + `needsAnswers:true` commit landed on
|
|
323
|
+
* `<arbiter>/main` and the lock was released ⇒ `moved: true`.
|
|
324
|
+
* - `bodyAbsent` — the D1 probe found no body for the item on `main` (a
|
|
325
|
+
* bounce for an item whose body never landed — e.g. a claim that lost/raced).
|
|
326
|
+
* The surface is a CLEAN NO-OP; the lock is STILL released so the bounce is
|
|
327
|
+
* never a dead-end held lock ⇒ `moved: true` (nothing to record, nothing left
|
|
328
|
+
* stuck).
|
|
329
|
+
* - `!surfaced` — the surface commit did NOT land (contention exhausted,
|
|
330
|
+
* item missing on main by explicit path, environment fault) ⇒ `moved: false`
|
|
331
|
+
* with `reasonNotMoved` so the caller reports the honest not-landed state.
|
|
332
|
+
* - no arbiter — a human local-only `complete` (no arbiter handle): the
|
|
333
|
+
* surface primitive requires an arbiter, so this is a recorded no-op (`moved:
|
|
334
|
+
* true`) — a human is right there (the same human-vs-autonomous posture the
|
|
335
|
+
* retired lock amend took). NOTE this records nothing durable, by design.
|
|
360
336
|
*/
|
|
361
|
-
async function
|
|
362
|
-
const { cwd, slug, reason, questions, arbiter, env } = params;
|
|
337
|
+
async function bounceThroughSurface(params) {
|
|
338
|
+
const { cwd, slug, item, reason, questions, arbiter, env } = params;
|
|
363
339
|
const note = params.note ?? (() => { });
|
|
364
340
|
if (!arbiter) {
|
|
365
|
-
// No arbiter handle ⇒ no
|
|
366
|
-
// the human is right there, so this is a recorded no-op (parity
|
|
367
|
-
// local-only
|
|
368
|
-
note(`'${slug}' bounced locally (no arbiter) — the stuck reason is not
|
|
369
|
-
'on
|
|
341
|
+
// No arbiter handle ⇒ no `<arbiter>/main` to surface on. A human local-only
|
|
342
|
+
// `complete`: the human is right there, so this is a recorded no-op (parity
|
|
343
|
+
// with the retired local-only lock amend that wrote nothing cross-machine).
|
|
344
|
+
note(`'${slug}' bounced locally (no arbiter) — the stuck reason is not surfaced ` +
|
|
345
|
+
'on <arbiter>/main (a human is right here).');
|
|
370
346
|
return { moved: true };
|
|
371
347
|
}
|
|
348
|
+
const asNewQuestions = questions?.map((q) => ({
|
|
349
|
+
question: q,
|
|
350
|
+
kind: 'stuck',
|
|
351
|
+
}));
|
|
372
352
|
try {
|
|
373
|
-
const r = await
|
|
374
|
-
item: `task:${slug}`,
|
|
375
|
-
reason,
|
|
376
|
-
questions,
|
|
353
|
+
const r = await surfaceStuckToNeedsAttention({
|
|
377
354
|
cwd,
|
|
355
|
+
slug,
|
|
356
|
+
item,
|
|
357
|
+
reason,
|
|
358
|
+
questions: asNewQuestions,
|
|
378
359
|
arbiter,
|
|
379
360
|
env,
|
|
361
|
+
note,
|
|
380
362
|
});
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
}
|
|
363
|
+
if (r.surfaced) {
|
|
364
|
+
note(`Surfaced '${item}' on ${arbiter}/main (stuck): ${reason}`);
|
|
365
|
+
return { moved: true };
|
|
366
|
+
}
|
|
367
|
+
if (r.bodyAbsent) {
|
|
368
|
+
note(`'${item}' has no body on ${arbiter}/main — surface skipped as a clean ` +
|
|
369
|
+
'no-op; the lock was still released to avoid a dead-end held lock.');
|
|
389
370
|
return { moved: true };
|
|
390
371
|
}
|
|
391
|
-
const reasonNotMoved = r.
|
|
392
|
-
|
|
393
|
-
'the stuck state — the item is not lock-held).'
|
|
394
|
-
: `could not mark the per-item lock for '${slug}' stuck (${r.outcome}: ` +
|
|
395
|
-
`${r.message}).`;
|
|
372
|
+
const reasonNotMoved = r.reasonNotSurfaced ??
|
|
373
|
+
`could not surface '${item}' on ${arbiter}/main (unknown reason).`;
|
|
396
374
|
note(reasonNotMoved);
|
|
397
375
|
return { moved: false, reasonNotMoved };
|
|
398
376
|
}
|
|
399
377
|
catch (err) {
|
|
400
|
-
const reasonNotMoved = `could not
|
|
378
|
+
const reasonNotMoved = `could not surface '${item}' on ${arbiter}/main ` +
|
|
401
379
|
`(${err instanceof Error ? err.message : String(err)}).`;
|
|
402
380
|
note(reasonNotMoved);
|
|
403
381
|
return { moved: false, reasonNotMoved };
|
package/dist/ledger-write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-write.js","sourceRoot":"","sources":["../src/ledger-write.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AACvC,OAAO,EAAC,QAAQ,EAAiB,MAAM,UAAU,CAAC;AAClD,OAAO,EACN,UAAU,GAGV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,qBAAqB,EACrB,eAAe,
|
|
1
|
+
{"version":3,"file":"ledger-write.js","sourceRoot":"","sources":["../src/ledger-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,12 +11,29 @@ export declare function gatherLifecycleInPlace(input: {
|
|
|
11
11
|
repoPath: string;
|
|
12
12
|
read?: LedgerReadStrategy;
|
|
13
13
|
gates?: LifecyclePoolGates;
|
|
14
|
+
/**
|
|
15
|
+
* The HELD TASK slugs to SUBTRACT from the triage/surface/apply candidate
|
|
16
|
+
* inputs before {@link buildLifecyclePools} routes them (task
|
|
17
|
+
* `in-place-scan-subtracts-held-locked-slugs-from-propose-matrix`).
|
|
18
|
+
*
|
|
19
|
+
* Symmetric to the pool-side subtraction `scoreItems` already runs on
|
|
20
|
+
* `state.ready`: without it, a `needsAnswers` TASK whose per-item lock is
|
|
21
|
+
* currently held (state `active`/`stuck`) still slips into the surface / apply
|
|
22
|
+
* pool, so `scan --json` enumerates a matrix leg for it that then always loses
|
|
23
|
+
* the claim CAS (`claim-cas.ts:127-132`) — reddening the propose tick every
|
|
24
|
+
* cadence for as long as the item is held. Narrowly TASK-scoped (this is what
|
|
25
|
+
* {@link heldTaskSlugs} returns): an observation triage entry / a spec surface
|
|
26
|
+
* entry is NOT filtered here, because the lock ref prefix `task-<slug>` only
|
|
27
|
+
* gates the task namespace. Defaults empty (byte-identical to pre-fix
|
|
28
|
+
* behaviour) so callers who cannot resolve a lock read still work.
|
|
29
|
+
*/
|
|
30
|
+
heldSlugs?: Set<string>;
|
|
14
31
|
}): SelectedLifecyclePools;
|
|
15
32
|
/**
|
|
16
33
|
* Gather + build the lifecycle pools for a MIRROR-SIDE bare hub mirror (async).
|
|
17
34
|
* Reads the SAME logical inputs as {@link gatherLifecycleInPlace} \u2014 observations +
|
|
18
35
|
* the `needsAnswers` pool from the mirror's committed `main` (via
|
|
19
|
-
* `resolveMirrorState`), the
|
|
36
|
+
* `resolveMirrorState`), the spec pool via `resolveMirrorSpecPool`, and each item's
|
|
20
37
|
* sidecar via `git show` \u2014 then hands them to the SAME shared
|
|
21
38
|
* {@link buildLifecyclePools}, so the in-place + mirror enumerations AGREE.
|
|
22
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-gather.d.ts","sourceRoot":"","sources":["../src/lifecycle-gather.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAOrE,OAAO,EAEN,KAAK,kBAAkB,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAiHjE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle-gather.d.ts","sourceRoot":"","sources":["../src/lifecycle-gather.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAOrE,OAAO,EAEN,KAAK,kBAAkB,EAGvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,sBAAsB,CAAC;AAiHjE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB,GAAG,sBAAsB,CAkCzB;AA2BD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA0FlC"}
|
package/dist/lifecycle-gather.js
CHANGED
|
@@ -21,8 +21,8 @@ function readSidecarInPlace(repoPath, namespace, slug) {
|
|
|
21
21
|
return undefined;
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
|
-
* Collect every `needsAnswers:true` task (from `work/backlog`) +
|
|
25
|
-
* `work/
|
|
24
|
+
* Collect every `needsAnswers:true` task (from `work/backlog`) + spec (from
|
|
25
|
+
* `work/specs`) for the in-place repo, through the read seam (the SAME readers the
|
|
26
26
|
* build-pool scan uses). These are the SURFACE/APPLY candidates this task draws
|
|
27
27
|
* into the selection (today they are build/task-INELIGIBLE, so nothing else
|
|
28
28
|
* surfaces them).
|
|
@@ -41,25 +41,25 @@ function blockedItemsInPlace(read, repoPath, surfaceStaging) {
|
|
|
41
41
|
out.push({ namespace: 'spec', slug: spec.slug });
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
// TASKED resting prds (`
|
|
45
|
-
// `surfaceStaging`), because a
|
|
46
|
-
// while resting in `
|
|
47
|
-
// it was TASKED"). This is NOT a staging widening: a tasked
|
|
44
|
+
// TASKED resting prds (`specs/tasked/`) — enumerated UNCONDITIONALLY (NOT behind
|
|
45
|
+
// `surfaceStaging`), because a spec may legitimately carry `needsAnswers:true`
|
|
46
|
+
// while resting in `specs/tasked/` (WORK-CONTRACT "A SPEC that has drifted AFTER
|
|
47
|
+
// it was TASKED"). This is NOT a staging widening: a tasked spec is a durable
|
|
48
48
|
// resting state, like the pool, so it is enumerated like the pool. Routing
|
|
49
49
|
// still respects the gates in `buildLifecyclePools` (an ANSWERED sidecar -> the
|
|
50
50
|
// always-on APPLY pool so the human's answer is never STRANDED; a NO-sidecar
|
|
51
|
-
// tasked
|
|
52
|
-
// tasked
|
|
51
|
+
// tasked spec -> SURFACE, still gated by `surfaceBlockers`). Without this, a
|
|
52
|
+
// tasked spec's answered sidecar is enumerated by no pool and apply never runs
|
|
53
53
|
// on it (observation `tasked-prd-needsanswers-sidecar-stranded-no-apply-pool`).
|
|
54
54
|
for (const spec of read.resolveLocalSpecTasked({ repoPath })) {
|
|
55
55
|
if (spec.needsAnswers === true) {
|
|
56
56
|
out.push({ namespace: 'spec', slug: spec.slug });
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
// SURFACE-on-STAGING widening (
|
|
59
|
+
// SURFACE-on-STAGING widening (spec
|
|
60
60
|
// `staging-surface-and-apply-promote-safety` F2): when `surfaceStaging` is
|
|
61
61
|
// ON, the candidate set ADDITIONALLY enumerates `needsAnswers` items resting
|
|
62
|
-
// in STAGING (`tasks/backlog/` + `
|
|
62
|
+
// in STAGING (`tasks/backlog/` + `specs/proposed/`), so a tasked item
|
|
63
63
|
// surfaces its questions BEFORE the human promotes it. BUILD/claim still
|
|
64
64
|
// reads POOL-only (`scoreItems` over `state.ready`); only the surface polarity
|
|
65
65
|
// widens here.
|
|
@@ -86,6 +86,7 @@ function blockedItemsInPlace(read, repoPath, surfaceStaging) {
|
|
|
86
86
|
export function gatherLifecycleInPlace(input) {
|
|
87
87
|
const read = input.read ?? ledgerRead;
|
|
88
88
|
const repoPath = input.repoPath;
|
|
89
|
+
const heldSlugs = input.heldSlugs ?? new Set();
|
|
89
90
|
const rawObservations = read.resolveLocalState({ repoPath }).observations;
|
|
90
91
|
const observations = rawObservations.map((obs) => ({
|
|
91
92
|
slug: obs.slug,
|
|
@@ -93,7 +94,12 @@ export function gatherLifecycleInPlace(input) {
|
|
|
93
94
|
sidecar: readSidecarInPlace(repoPath, 'observation', obs.slug),
|
|
94
95
|
}));
|
|
95
96
|
const surfaceStaging = input.gates?.surfaceStaging === true;
|
|
96
|
-
const needsAnswers = blockedItemsInPlace(read, repoPath, surfaceStaging)
|
|
97
|
+
const needsAnswers = blockedItemsInPlace(read, repoPath, surfaceStaging)
|
|
98
|
+
// Held-slug subtraction (task-scoped): a `needsAnswers` TASK whose per-item
|
|
99
|
+
// lock is currently held is EXCLUDED from surface/apply enumeration. Spec /
|
|
100
|
+
// observation entries are untouched — the lock ref set here is task-only.
|
|
101
|
+
.filter((item) => !(item.namespace === 'task' && heldSlugs.has(item.slug)))
|
|
102
|
+
.map((item) => ({
|
|
97
103
|
repoPath,
|
|
98
104
|
namespace: item.namespace,
|
|
99
105
|
slug: item.slug,
|
|
@@ -128,7 +134,7 @@ async function readSidecarMirror(mirrorPath, ref, namespace, slug, env) {
|
|
|
128
134
|
* Gather + build the lifecycle pools for a MIRROR-SIDE bare hub mirror (async).
|
|
129
135
|
* Reads the SAME logical inputs as {@link gatherLifecycleInPlace} \u2014 observations +
|
|
130
136
|
* the `needsAnswers` pool from the mirror's committed `main` (via
|
|
131
|
-
* `resolveMirrorState`), the
|
|
137
|
+
* `resolveMirrorState`), the spec pool via `resolveMirrorSpecPool`, and each item's
|
|
132
138
|
* sidecar via `git show` \u2014 then hands them to the SAME shared
|
|
133
139
|
* {@link buildLifecyclePools}, so the in-place + mirror enumerations AGREE.
|
|
134
140
|
*/
|
|
@@ -157,9 +163,9 @@ export async function gatherLifecycleMirror(input) {
|
|
|
157
163
|
blocked.push({ namespace: 'spec', slug: spec.slug });
|
|
158
164
|
}
|
|
159
165
|
}
|
|
160
|
-
// TASKED resting prds (`<ref>:work/
|
|
161
|
-
// the mirror-side counterpart of the in-place tasked-
|
|
162
|
-
// (so a `needsAnswers` tasked
|
|
166
|
+
// TASKED resting prds (`<ref>:work/specs/tasked/`) — enumerated UNCONDITIONALLY,
|
|
167
|
+
// the mirror-side counterpart of the in-place tasked-spec enumeration above
|
|
168
|
+
// (so a `needsAnswers` tasked spec's answered sidecar is never stranded on the
|
|
163
169
|
// mirror/CI advance path either). Routing still respects the gates.
|
|
164
170
|
const specTasked = await read.resolveMirrorSpecTasked({ mirrorPath, ref, env });
|
|
165
171
|
for (const spec of specTasked) {
|
|
@@ -167,10 +173,10 @@ export async function gatherLifecycleMirror(input) {
|
|
|
167
173
|
blocked.push({ namespace: 'spec', slug: spec.slug });
|
|
168
174
|
}
|
|
169
175
|
}
|
|
170
|
-
// SURFACE-on-STAGING widening (
|
|
176
|
+
// SURFACE-on-STAGING widening (spec
|
|
171
177
|
// `staging-surface-and-apply-promote-safety` F2): mirror-side counterpart of
|
|
172
178
|
// the in-place widening above — enumerate `needsAnswers` items in
|
|
173
|
-
// STAGING (`tasks/backlog/` + `
|
|
179
|
+
// STAGING (`tasks/backlog/` + `specs/proposed/`) from the bare mirror's
|
|
174
180
|
// committed `<ref>` tree, so the in-place + mirror surfaces AGREE. The
|
|
175
181
|
// staging reads are skipped entirely when the gate is OFF (no extra git
|
|
176
182
|
// ls-tree work in the legacy mode).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-gather.js","sourceRoot":"","sources":["../src/lifecycle-gather.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,UAAU,EAA0B,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACN,YAAY,EACZ,qBAAqB,GAErB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,QAAQ,EAAC,MAAM,UAAU,CAAC;AAClC,OAAO,EACN,mBAAmB,GAInB,MAAM,sBAAsB,CAAC;AA+B9B;;;;GAIG;AACH,SAAS,kBAAkB,CAC1B,QAAgB,EAChB,SAA0C,EAC1C,IAAY;IAEZ,gFAAgF;IAChF,2EAA2E;IAC3E,KAAK,MAAM,GAAG,IAAI,qBAAqB,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,YAAY,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAC3B,IAAwB,EACxB,QAAgB,EAChB,cAAuB;IAEvB,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"lifecycle-gather.js","sourceRoot":"","sources":["../src/lifecycle-gather.ts"],"names":[],"mappings":"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"}
|