dorfl 0.14.2 → 0.15.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 +17 -16
- package/dist/advance-ci-template.d.ts.map +1 -1
- package/dist/advance-ci-template.js +42 -53
- package/dist/advance-ci-template.js.map +1 -1
- package/dist/advance-drivers.d.ts +8 -0
- package/dist/advance-drivers.d.ts.map +1 -1
- package/dist/advance-drivers.js +28 -4
- package/dist/advance-drivers.js.map +1 -1
- package/dist/advance-isolated.d.ts.map +1 -1
- package/dist/advance-isolated.js +3 -2
- package/dist/advance-isolated.js.map +1 -1
- package/dist/advance-lifecycle-template.d.ts +41 -40
- package/dist/advance-lifecycle-template.d.ts.map +1 -1
- package/dist/advance-lifecycle-template.js +309 -489
- package/dist/advance-lifecycle-template.js.map +1 -1
- package/dist/advance-loop-driver.d.ts.map +1 -1
- package/dist/advance-loop-driver.js +3 -2
- package/dist/advance-loop-driver.js.map +1 -1
- package/dist/advance-treeless-publish.d.ts +31 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -1
- package/dist/advance-treeless-publish.js +40 -0
- package/dist/advance-treeless-publish.js.map +1 -1
- package/dist/advance.d.ts +63 -3
- package/dist/advance.d.ts.map +1 -1
- package/dist/advance.js +80 -12
- package/dist/advance.js.map +1 -1
- package/dist/advancing-lock.d.ts +9 -0
- package/dist/advancing-lock.d.ts.map +1 -1
- package/dist/advancing-lock.js +21 -1
- package/dist/advancing-lock.js.map +1 -1
- package/dist/agent-env.d.ts +61 -0
- package/dist/agent-env.d.ts.map +1 -0
- package/dist/agent-env.js +144 -0
- package/dist/agent-env.js.map +1 -0
- package/dist/agent-stop.d.ts +35 -0
- package/dist/agent-stop.d.ts.map +1 -1
- package/dist/agent-stop.js +62 -0
- package/dist/agent-stop.js.map +1 -1
- package/dist/apply-merge-action.d.ts +76 -34
- package/dist/apply-merge-action.d.ts.map +1 -1
- package/dist/apply-merge-action.js +339 -129
- package/dist/apply-merge-action.js.map +1 -1
- package/dist/apply-stuck-action.js +2 -2
- package/dist/apply-stuck-action.js.map +1 -1
- package/dist/ci-agent-result.d.ts +151 -0
- package/dist/ci-agent-result.d.ts.map +1 -0
- package/dist/ci-agent-result.js +314 -0
- package/dist/ci-agent-result.js.map +1 -0
- package/dist/ci-handoff-apply.d.ts +162 -0
- package/dist/ci-handoff-apply.d.ts.map +1 -0
- package/dist/ci-handoff-apply.js +497 -0
- package/dist/ci-handoff-apply.js.map +1 -0
- package/dist/ci-handoff-format.d.ts +369 -0
- package/dist/ci-handoff-format.d.ts.map +1 -0
- package/dist/ci-handoff-format.js +646 -0
- package/dist/ci-handoff-format.js.map +1 -0
- package/dist/ci-handoff-lfs.d.ts +146 -0
- package/dist/ci-handoff-lfs.d.ts.map +1 -0
- package/dist/ci-handoff-lfs.js +397 -0
- package/dist/ci-handoff-lfs.js.map +1 -0
- package/dist/ci-handoff.d.ts +99 -0
- package/dist/ci-handoff.d.ts.map +1 -0
- package/dist/ci-handoff.js +277 -0
- package/dist/ci-handoff.js.map +1 -0
- package/dist/ci-lock-outputs.d.ts +93 -0
- package/dist/ci-lock-outputs.d.ts.map +1 -0
- package/dist/ci-lock-outputs.js +223 -0
- package/dist/ci-lock-outputs.js.map +1 -0
- package/dist/ci-phase-build.d.ts +178 -0
- package/dist/ci-phase-build.d.ts.map +1 -0
- package/dist/ci-phase-build.js +989 -0
- package/dist/ci-phase-build.js.map +1 -0
- package/dist/ci-phase-driver.d.ts +247 -0
- package/dist/ci-phase-driver.d.ts.map +1 -0
- package/dist/ci-phase-driver.js +370 -0
- package/dist/ci-phase-driver.js.map +1 -0
- package/dist/ci-phase-intake.d.ts +172 -0
- package/dist/ci-phase-intake.d.ts.map +1 -0
- package/dist/ci-phase-intake.js +555 -0
- package/dist/ci-phase-intake.js.map +1 -0
- package/dist/ci-phase-tasking.d.ts +205 -0
- package/dist/ci-phase-tasking.d.ts.map +1 -0
- package/dist/ci-phase-tasking.js +906 -0
- package/dist/ci-phase-tasking.js.map +1 -0
- package/dist/ci-phase-treeless.d.ts +224 -0
- package/dist/ci-phase-treeless.d.ts.map +1 -0
- package/dist/ci-phase-treeless.js +1482 -0
- package/dist/ci-phase-treeless.js.map +1 -0
- package/dist/ci-read-token.d.ts +47 -0
- package/dist/ci-read-token.d.ts.map +1 -0
- package/dist/ci-read-token.js +80 -0
- package/dist/ci-read-token.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +447 -22
- package/dist/cli.js.map +1 -1
- package/dist/close-job-template.d.ts +10 -1
- package/dist/close-job-template.d.ts.map +1 -1
- package/dist/close-job-template.js +46 -14
- package/dist/close-job-template.js.map +1 -1
- package/dist/close-job.d.ts +20 -5
- package/dist/close-job.d.ts.map +1 -1
- package/dist/close-job.js +65 -12
- package/dist/close-job.js.map +1 -1
- package/dist/complete.d.ts.map +1 -1
- package/dist/complete.js +20 -1
- package/dist/complete.js.map +1 -1
- package/dist/config.d.ts +41 -44
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -4
- package/dist/config.js.map +1 -1
- package/dist/continue-branch.d.ts +63 -15
- package/dist/continue-branch.d.ts.map +1 -1
- package/dist/continue-branch.js +75 -8
- package/dist/continue-branch.js.map +1 -1
- package/dist/crashed-run-save.d.ts +73 -0
- package/dist/crashed-run-save.d.ts.map +1 -0
- package/dist/crashed-run-save.js +86 -0
- package/dist/crashed-run-save.js.map +1 -0
- package/dist/cwd-section.d.ts.map +1 -1
- package/dist/cwd-section.js +10 -2
- package/dist/cwd-section.js.map +1 -1
- package/dist/decision-engine.d.ts +10 -0
- package/dist/decision-engine.d.ts.map +1 -1
- package/dist/decision-engine.js.map +1 -1
- package/dist/do-config.d.ts +2 -24
- package/dist/do-config.d.ts.map +1 -1
- package/dist/do-config.js +1 -33
- package/dist/do-config.js.map +1 -1
- package/dist/do.d.ts +149 -1
- package/dist/do.d.ts.map +1 -1
- package/dist/do.js +115 -25
- package/dist/do.js.map +1 -1
- package/dist/dorfl-item-template.d.ts +98 -0
- package/dist/dorfl-item-template.d.ts.map +1 -0
- package/dist/dorfl-item-template.js +504 -0
- package/dist/dorfl-item-template.js.map +1 -0
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +7 -5
- package/dist/env-config.js.map +1 -1
- package/dist/frontmatter.d.ts +52 -0
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +136 -2
- package/dist/frontmatter.js.map +1 -1
- package/dist/gc.d.ts +13 -0
- package/dist/gc.d.ts.map +1 -1
- package/dist/gc.js +16 -2
- package/dist/gc.js.map +1 -1
- package/dist/git.d.ts +18 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +70 -5
- package/dist/git.js.map +1 -1
- package/dist/harness.d.ts +44 -5
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +24 -1
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/install-ci-action-pins.d.ts +123 -0
- package/dist/install-ci-action-pins.d.ts.map +1 -0
- package/dist/install-ci-action-pins.js +190 -0
- package/dist/install-ci-action-pins.js.map +1 -0
- package/dist/install-ci-actions-pr-creation.d.ts +70 -0
- package/dist/install-ci-actions-pr-creation.d.ts.map +1 -0
- package/dist/install-ci-actions-pr-creation.js +106 -0
- package/dist/install-ci-actions-pr-creation.js.map +1 -0
- package/dist/install-ci-capabilities/dorfl-item.d.ts +12 -0
- package/dist/install-ci-capabilities/dorfl-item.d.ts.map +1 -0
- package/dist/install-ci-capabilities/dorfl-item.js +26 -0
- package/dist/install-ci-capabilities/dorfl-item.js.map +1 -0
- package/dist/install-ci-core.d.ts +155 -37
- package/dist/install-ci-core.d.ts.map +1 -1
- package/dist/install-ci-core.js +304 -200
- package/dist/install-ci-core.js.map +1 -1
- package/dist/install-ci-github.d.ts +47 -2
- package/dist/install-ci-github.d.ts.map +1 -1
- package/dist/install-ci-github.js +113 -1
- package/dist/install-ci-github.js.map +1 -1
- package/dist/install-ci.d.ts +25 -6
- package/dist/install-ci.d.ts.map +1 -1
- package/dist/install-ci.js +72 -36
- package/dist/install-ci.js.map +1 -1
- package/dist/intake-marker.d.ts +6 -1
- package/dist/intake-marker.d.ts.map +1 -1
- package/dist/intake-marker.js.map +1 -1
- package/dist/intake-triage.d.ts.map +1 -1
- package/dist/intake-triage.js +6 -2
- package/dist/intake-triage.js.map +1 -1
- package/dist/intake-trigger-template.d.ts +31 -25
- package/dist/intake-trigger-template.d.ts.map +1 -1
- package/dist/intake-trigger-template.js +107 -292
- package/dist/intake-trigger-template.js.map +1 -1
- package/dist/intake.d.ts +186 -4
- package/dist/intake.d.ts.map +1 -1
- package/dist/intake.js +533 -416
- package/dist/intake.js.map +1 -1
- package/dist/integration-core.d.ts +154 -1
- package/dist/integration-core.d.ts.map +1 -1
- package/dist/integration-core.js +759 -486
- package/dist/integration-core.js.map +1 -1
- package/dist/integrator.d.ts +12 -0
- package/dist/integrator.d.ts.map +1 -1
- package/dist/integrator.js +21 -0
- package/dist/integrator.js.map +1 -1
- package/dist/isolation.d.ts +12 -2
- package/dist/isolation.d.ts.map +1 -1
- package/dist/isolation.js +19 -8
- package/dist/isolation.js.map +1 -1
- package/dist/item-lock.d.ts +93 -11
- package/dist/item-lock.d.ts.map +1 -1
- package/dist/item-lock.js +233 -65
- package/dist/item-lock.js.map +1 -1
- package/dist/land-question-residue.d.ts +58 -0
- package/dist/land-question-residue.d.ts.map +1 -0
- package/dist/land-question-residue.js +95 -0
- package/dist/land-question-residue.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +16 -0
- package/dist/lifecycle-gather.d.ts.map +1 -1
- package/dist/lifecycle-gather.js +54 -6
- package/dist/lifecycle-gather.js.map +1 -1
- package/dist/merge-answer.d.ts +41 -0
- package/dist/merge-answer.d.ts.map +1 -0
- package/dist/merge-answer.js +60 -0
- package/dist/merge-answer.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +105 -30
- package/dist/merge-question-surfacer.d.ts.map +1 -1
- package/dist/merge-question-surfacer.js +202 -91
- package/dist/merge-question-surfacer.js.map +1 -1
- package/dist/merge-question-tick.d.ts +64 -0
- package/dist/merge-question-tick.d.ts.map +1 -0
- package/dist/merge-question-tick.js +96 -0
- package/dist/merge-question-tick.js.map +1 -0
- package/dist/mint-adr.d.ts.map +1 -1
- package/dist/mint-adr.js +20 -2
- package/dist/mint-adr.js.map +1 -1
- package/dist/needs-attention.d.ts +72 -2
- package/dist/needs-attention.d.ts.map +1 -1
- package/dist/needs-attention.js +275 -38
- package/dist/needs-attention.js.map +1 -1
- package/dist/phase-recorder.d.ts +168 -0
- package/dist/phase-recorder.d.ts.map +1 -0
- package/dist/phase-recorder.js +218 -0
- package/dist/phase-recorder.js.map +1 -0
- package/dist/phase.d.ts +94 -0
- package/dist/phase.d.ts.map +1 -0
- package/dist/phase.js +148 -0
- package/dist/phase.js.map +1 -0
- package/dist/pi-harness.d.ts.map +1 -1
- package/dist/pi-harness.js +19 -6
- package/dist/pi-harness.js.map +1 -1
- package/dist/prepare.d.ts.map +1 -1
- package/dist/prepare.js +4 -0
- package/dist/prepare.js.map +1 -1
- package/dist/prompt.d.ts +4 -0
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +48 -1
- package/dist/prompt.js.map +1 -1
- package/dist/protocol/CLAIM-PROTOCOL.md +3 -1
- package/dist/protocol/WORK-CONTRACT.md +1 -1
- package/dist/reap-branches.d.ts +48 -0
- package/dist/reap-branches.d.ts.map +1 -1
- package/dist/reap-branches.js +64 -0
- package/dist/reap-branches.js.map +1 -1
- package/dist/ref-write.d.ts +198 -0
- package/dist/ref-write.d.ts.map +1 -0
- package/dist/ref-write.js +79 -0
- package/dist/ref-write.js.map +1 -0
- package/dist/repo-config.js +8 -8
- package/dist/repo-config.js.map +1 -1
- package/dist/repo-mirror.d.ts +36 -0
- package/dist/repo-mirror.d.ts.map +1 -1
- package/dist/repo-mirror.js +91 -1
- package/dist/repo-mirror.js.map +1 -1
- package/dist/review-verdict.d.ts +1 -1
- package/dist/review-verdict.js +1 -1
- package/dist/run.d.ts +7 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +28 -4
- package/dist/run.js.map +1 -1
- package/dist/scan.d.ts +19 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +21 -8
- package/dist/scan.js.map +1 -1
- package/dist/sidecar.d.ts +14 -0
- package/dist/sidecar.d.ts.map +1 -1
- package/dist/sidecar.js +21 -0
- package/dist/sidecar.js.map +1 -1
- package/dist/single-job-warning.d.ts +63 -0
- package/dist/single-job-warning.d.ts.map +1 -0
- package/dist/single-job-warning.js +110 -0
- package/dist/single-job-warning.js.map +1 -0
- package/dist/skills/setup/protocol/CLAIM-PROTOCOL.md +3 -1
- package/dist/skills/setup/protocol/WORK-CONTRACT.md +1 -1
- package/dist/spec-complete.d.ts +13 -6
- package/dist/spec-complete.d.ts.map +1 -1
- package/dist/spec-complete.js +23 -11
- package/dist/spec-complete.js.map +1 -1
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +47 -14
- package/dist/start.js.map +1 -1
- package/dist/status.d.ts +12 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +11 -3
- package/dist/status.js.map +1 -1
- package/dist/tasking.d.ts +246 -1
- package/dist/tasking.d.ts.map +1 -1
- package/dist/tasking.js +452 -358
- package/dist/tasking.js.map +1 -1
- package/dist/triage-persist.d.ts.map +1 -1
- package/dist/triage-persist.js +21 -2
- package/dist/triage-persist.js.map +1 -1
- package/dist/verify-workflow-template.d.ts.map +1 -1
- package/dist/verify-workflow-template.js +8 -4
- package/dist/verify-workflow-template.js.map +1 -1
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +4 -0
- package/dist/verify.js.map +1 -1
- package/dist/watch-session.d.ts +42 -13
- package/dist/watch-session.d.ts.map +1 -1
- package/dist/watch-session.js +52 -23
- package/dist/watch-session.js.map +1 -1
- package/dist/work-layout.d.ts +10 -4
- package/dist/work-layout.d.ts.map +1 -1
- package/dist/work-layout.js +11 -3
- package/dist/work-layout.js.map +1 -1
- package/dist/workspace.d.ts +65 -4
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +159 -11
- package/dist/workspace.js.map +1 -1
- package/package.json +1 -1
- package/src/advance-ci-template.ts +80 -81
- package/src/advance-drivers.ts +45 -6
- package/src/advance-isolated.ts +3 -5
- package/src/advance-lifecycle-template.ts +375 -538
- package/src/advance-loop-driver.ts +3 -5
- package/src/advance-treeless-publish.ts +61 -0
- package/src/advance.ts +145 -15
- package/src/advancing-lock.ts +36 -1
- package/src/agent-env.ts +174 -0
- package/src/agent-stop.ts +81 -0
- package/src/apply-merge-action.ts +401 -154
- package/src/apply-stuck-action.ts +2 -2
- package/src/ci-agent-result.ts +421 -0
- package/src/ci-handoff-apply.ts +737 -0
- package/src/ci-handoff-format.ts +926 -0
- package/src/ci-handoff-lfs.ts +519 -0
- package/src/ci-handoff.ts +392 -0
- package/src/ci-lock-outputs.ts +273 -0
- package/src/ci-phase-build.ts +1328 -0
- package/src/ci-phase-driver.ts +548 -0
- package/src/ci-phase-intake.ts +861 -0
- package/src/ci-phase-tasking.ts +1255 -0
- package/src/ci-phase-treeless.ts +2028 -0
- package/src/ci-read-token.ts +90 -0
- package/src/cli.ts +591 -29
- package/src/close-job-template.ts +52 -15
- package/src/close-job.ts +77 -12
- package/src/complete.ts +19 -1
- package/src/config.ts +43 -48
- package/src/continue-branch.ts +121 -16
- package/src/crashed-run-save.ts +162 -0
- package/src/cwd-section.ts +10 -0
- package/src/decision-engine.ts +10 -0
- package/src/do-config.ts +2 -57
- package/src/do.ts +170 -28
- package/src/dorfl-item-template.ts +556 -0
- package/src/env-config.ts +7 -5
- package/src/frontmatter.ts +155 -2
- package/src/gc.ts +27 -2
- package/src/git.ts +83 -5
- package/src/harness.ts +58 -6
- package/src/index.ts +50 -1
- package/src/install-ci-action-pins.ts +209 -0
- package/src/install-ci-actions-pr-creation.ts +186 -0
- package/src/install-ci-capabilities/dorfl-item.ts +33 -0
- package/src/install-ci-core.ts +388 -233
- package/src/install-ci-github.ts +149 -1
- package/src/install-ci.ts +83 -37
- package/src/intake-marker.ts +6 -1
- package/src/intake-triage.ts +7 -3
- package/src/intake-trigger-template.ts +126 -327
- package/src/intake.ts +725 -544
- package/src/integration-core.ts +975 -523
- package/src/integrator.ts +28 -0
- package/src/isolation.ts +29 -10
- package/src/item-lock.ts +308 -92
- package/src/land-question-residue.ts +122 -0
- package/src/lifecycle-gather.ts +82 -10
- package/src/merge-answer.ts +82 -0
- package/src/merge-question-surfacer.ts +320 -112
- package/src/merge-question-tick.ts +182 -0
- package/src/mint-adr.ts +28 -2
- package/src/needs-attention.ts +350 -42
- package/src/phase-recorder.ts +350 -0
- package/src/phase.ts +177 -0
- package/src/pi-harness.ts +25 -5
- package/src/prepare.ts +4 -0
- package/src/prompt.ts +68 -1
- package/src/reap-branches.ts +107 -0
- package/src/ref-write.ts +324 -0
- package/src/repo-config.ts +8 -8
- package/src/repo-mirror.ts +107 -1
- package/src/review-verdict.ts +1 -1
- package/src/run.ts +47 -6
- package/src/scan.ts +37 -7
- package/src/sidecar.ts +36 -0
- package/src/single-job-warning.ts +135 -0
- package/src/spec-complete.ts +36 -14
- package/src/start.ts +55 -16
- package/src/status.ts +29 -3
- package/src/tasking.ts +593 -378
- package/src/triage-persist.ts +24 -2
- package/src/verify-workflow-template.ts +8 -4
- package/src/verify.ts +4 -0
- package/src/watch-session.ts +86 -28
- package/src/work-layout.ts +11 -3
- package/src/workspace.ts +210 -14
package/src/start.ts
CHANGED
|
@@ -5,8 +5,10 @@ import type {SurfaceToNeedsAttentionResult} from './needs-attention.js';
|
|
|
5
5
|
import {
|
|
6
6
|
branchAheadOfArbiter,
|
|
7
7
|
rebaseContinuedBranchOntoMain,
|
|
8
|
-
|
|
8
|
+
continueRebaseSentence,
|
|
9
|
+
type ContinueRebaseFailure,
|
|
9
10
|
} from './continue-branch.js';
|
|
11
|
+
import {refWrite} from './ref-write.js';
|
|
10
12
|
import {runAsync, type RunResult} from './git.js';
|
|
11
13
|
import {workFolderRel} from './work-layout.js';
|
|
12
14
|
import {workBranchRef, parseWorkBranchRef} from './slug-namespace.js';
|
|
@@ -368,7 +370,14 @@ async function startFromBacklog(params: {
|
|
|
368
370
|
// includes the claim).
|
|
369
371
|
const switched = await switchToWorkBranch({slug, arbiter, cwd, env, note});
|
|
370
372
|
if (switched.rebaseConflict) {
|
|
371
|
-
return continueConflictResult({
|
|
373
|
+
return continueConflictResult({
|
|
374
|
+
slug,
|
|
375
|
+
arbiter,
|
|
376
|
+
cwd,
|
|
377
|
+
failure: switched.rebaseFailure,
|
|
378
|
+
env,
|
|
379
|
+
note,
|
|
380
|
+
});
|
|
372
381
|
}
|
|
373
382
|
if (switched.pushFailure !== undefined) {
|
|
374
383
|
return continuePushFailureResult({
|
|
@@ -396,6 +405,7 @@ async function continueConflictResult(params: {
|
|
|
396
405
|
slug: string;
|
|
397
406
|
arbiter: string;
|
|
398
407
|
cwd: string;
|
|
408
|
+
failure: ContinueRebaseFailure | undefined;
|
|
399
409
|
env: NodeJS.ProcessEnv | undefined;
|
|
400
410
|
note: (m: string) => void;
|
|
401
411
|
}): Promise<StartResult> {
|
|
@@ -405,7 +415,8 @@ async function continueConflictResult(params: {
|
|
|
405
415
|
}
|
|
406
416
|
const message =
|
|
407
417
|
`Could not continue '${params.slug}': the kept work branch did not rebase ` +
|
|
408
|
-
`cleanly onto ${params.arbiter}/main
|
|
418
|
+
`cleanly onto ${params.arbiter}/main ` +
|
|
419
|
+
`(${continueRebaseSentence(workBranchRef('task', params.slug), params.failure)}); marked stuck on its per-item lock ` +
|
|
409
420
|
'(surfaced by status). Resolve against the latest main, or `requeue --reset` ' +
|
|
410
421
|
'to discard and start fresh.';
|
|
411
422
|
return {
|
|
@@ -479,7 +490,14 @@ async function startFromNeedsAttention(params: {
|
|
|
479
490
|
|
|
480
491
|
const switched = await switchToWorkBranch({slug, arbiter, cwd, env, note});
|
|
481
492
|
if (switched.rebaseConflict) {
|
|
482
|
-
return continueConflictResult({
|
|
493
|
+
return continueConflictResult({
|
|
494
|
+
slug,
|
|
495
|
+
arbiter,
|
|
496
|
+
cwd,
|
|
497
|
+
failure: switched.rebaseFailure,
|
|
498
|
+
env,
|
|
499
|
+
note,
|
|
500
|
+
});
|
|
483
501
|
}
|
|
484
502
|
if (switched.pushFailure !== undefined) {
|
|
485
503
|
return continuePushFailureResult({
|
|
@@ -531,7 +549,14 @@ async function startFromInProgress(params: {
|
|
|
531
549
|
|
|
532
550
|
const switched = await switchToWorkBranch({slug, arbiter, cwd, env, note});
|
|
533
551
|
if (switched.rebaseConflict) {
|
|
534
|
-
return continueConflictResult({
|
|
552
|
+
return continueConflictResult({
|
|
553
|
+
slug,
|
|
554
|
+
arbiter,
|
|
555
|
+
cwd,
|
|
556
|
+
failure: switched.rebaseFailure,
|
|
557
|
+
env,
|
|
558
|
+
note,
|
|
559
|
+
});
|
|
535
560
|
}
|
|
536
561
|
if (switched.pushFailure !== undefined) {
|
|
537
562
|
return continuePushFailureResult({
|
|
@@ -557,10 +582,13 @@ interface SwitchResult {
|
|
|
557
582
|
/** True iff we CONTINUED from a kept arbiter `work/<slug>` (not a fresh cut). */
|
|
558
583
|
continued: boolean;
|
|
559
584
|
/**
|
|
560
|
-
* True iff a CONTINUE rebase onto fresh main
|
|
561
|
-
* never auto-resolved). The caller routes the
|
|
585
|
+
* True iff a CONTINUE rebase onto fresh main did not apply (a conflict or any
|
|
586
|
+
* other rebase failure; aborted, never auto-resolved). The caller routes the
|
|
587
|
+
* item to needs-attention (§10), naming {@link rebaseFailure}.
|
|
562
588
|
*/
|
|
563
589
|
rebaseConflict: boolean;
|
|
590
|
+
/** Why the continue rebase did not apply (set exactly when {@link rebaseConflict} is). */
|
|
591
|
+
rebaseFailure?: ContinueRebaseFailure;
|
|
564
592
|
/**
|
|
565
593
|
* Set iff the CONTINUE reconcile push to the arbiter FAILED TERMINALLY (the
|
|
566
594
|
* stale-lease retry cap was exhausted, or a non-connectivity rejection such as
|
|
@@ -673,8 +701,13 @@ async function continueFromKeptBranch(params: {
|
|
|
673
701
|
// REBASE onto the freshly-fetched main at onboard-time (§10: rebase, not
|
|
674
702
|
// merge) so the agent builds on a CURRENT base. Conflict → aborted + reported.
|
|
675
703
|
const rebase = rebaseContinuedBranchOntoMain(cwd, `${arbiter}/main`, env);
|
|
676
|
-
if (rebase.kind
|
|
677
|
-
return {
|
|
704
|
+
if (rebase.kind !== 'clean') {
|
|
705
|
+
return {
|
|
706
|
+
branch,
|
|
707
|
+
continued: true,
|
|
708
|
+
rebaseConflict: true,
|
|
709
|
+
rebaseFailure: rebase,
|
|
710
|
+
};
|
|
678
711
|
}
|
|
679
712
|
|
|
680
713
|
// The arbiter `work/<slug>` tip the fetch above brought down, READ AFTER the
|
|
@@ -702,7 +735,7 @@ async function continueFromKeptBranch(params: {
|
|
|
702
735
|
// needs-attention rather than leaving the committed kept work silently
|
|
703
736
|
// in-progress.
|
|
704
737
|
try {
|
|
705
|
-
const pushed =
|
|
738
|
+
const pushed = refWrite.pushContinuedBranch({
|
|
706
739
|
cwd,
|
|
707
740
|
branch,
|
|
708
741
|
arbiter,
|
|
@@ -711,8 +744,13 @@ async function continueFromKeptBranch(params: {
|
|
|
711
744
|
env,
|
|
712
745
|
note,
|
|
713
746
|
});
|
|
714
|
-
if (pushed.kind
|
|
715
|
-
return {
|
|
747
|
+
if (pushed.kind !== 'pushed') {
|
|
748
|
+
return {
|
|
749
|
+
branch,
|
|
750
|
+
continued: true,
|
|
751
|
+
rebaseConflict: true,
|
|
752
|
+
rebaseFailure: pushed,
|
|
753
|
+
};
|
|
716
754
|
}
|
|
717
755
|
} catch (err) {
|
|
718
756
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -737,7 +775,7 @@ async function continueFromKeptBranch(params: {
|
|
|
737
775
|
}
|
|
738
776
|
|
|
739
777
|
/**
|
|
740
|
-
* Discriminate the THROW from
|
|
778
|
+
* Discriminate the THROW from `pushContinuedBranchWithStaleLeaseRetry` (via `refWrite.pushContinuedBranch`) at
|
|
741
779
|
* the `start` continue-push site: is it a TOLERATED offline/unreachable-arbiter
|
|
742
780
|
* outage (the existing best-effort case — `complete` pushes later), or a REAL
|
|
743
781
|
* terminal failure that must SURFACE (the stale-lease retry cap exhausted, or a
|
|
@@ -807,13 +845,14 @@ async function routeContinueConflict(params: {
|
|
|
807
845
|
slug: string;
|
|
808
846
|
arbiter: string;
|
|
809
847
|
cwd: string;
|
|
848
|
+
failure: ContinueRebaseFailure | undefined;
|
|
810
849
|
env: NodeJS.ProcessEnv | undefined;
|
|
811
850
|
note: (m: string) => void;
|
|
812
851
|
}): Promise<SurfaceToNeedsAttentionResult> {
|
|
813
|
-
const {slug, arbiter, cwd, env, note} = params;
|
|
852
|
+
const {slug, arbiter, cwd, failure, env, note} = params;
|
|
814
853
|
const reason =
|
|
815
|
-
`continuing the kept ${arbiter}/${workBranchRef('task', slug)}:
|
|
816
|
-
`${
|
|
854
|
+
`continuing the kept ${arbiter}/${workBranchRef('task', slug)}: ` +
|
|
855
|
+
`${continueRebaseSentence(workBranchRef('task', slug), failure)} — run ` +
|
|
817
856
|
'`requeue --reconcile` to non-destructively re-sync the mirror and retry ' +
|
|
818
857
|
'the rebase (keeps the work). Last resort: `requeue --reset` ' +
|
|
819
858
|
'DESTRUCTIVELY discards the branch and starts fresh.';
|
package/src/status.ts
CHANGED
|
@@ -4,7 +4,7 @@ import {resolveHarness, type Harness} from './harness.js';
|
|
|
4
4
|
// harness registry so `resolveHarness` dispatches pi jobs' liveness to it.
|
|
5
5
|
import './pi-harness.js';
|
|
6
6
|
import {type JobState} from './workspace.js';
|
|
7
|
-
import {
|
|
7
|
+
import {createMirrorRefresher, mirrorInReconcileScope} from './repo-mirror.js';
|
|
8
8
|
import {formatArbiterStatus, type ArbiterStatusReport} from './arbiter.js';
|
|
9
9
|
import {
|
|
10
10
|
listItemLockEntries,
|
|
@@ -204,6 +204,18 @@ export interface StatusOptions {
|
|
|
204
204
|
* "drain them now" lever.
|
|
205
205
|
*/
|
|
206
206
|
reconcileLocks?: boolean;
|
|
207
|
+
/**
|
|
208
|
+
* ARBITER SCOPE of the {@link StatusOptions.reconcileLocks} write (task
|
|
209
|
+
* `reconcile-locks-stays-within-the-current-arbiter`, mirroring `gc`'s
|
|
210
|
+
* arbiter-scoped default). When set, ONLY the registered mirror whose arbiter
|
|
211
|
+
* hub key ({@link encodeRepoKey} of its `origin` URL) equals this key has its
|
|
212
|
+
* stale locks RELEASED; every other mirror is merely classified and REPORTED,
|
|
213
|
+
* exactly as without `reconcileLocks`, so a drain run from repo A never reaches
|
|
214
|
+
* repo B's arbiter. `undefined` reconciles EVERY mirror: the CLI passes it
|
|
215
|
+
* undefined only behind the explicit `--all-arbiters`, never by default.
|
|
216
|
+
* Ignored when `reconcileLocks` is not `true`.
|
|
217
|
+
*/
|
|
218
|
+
reconcileArbiterKey?: string;
|
|
207
219
|
/**
|
|
208
220
|
* Sink for the fetch-first fall-back warning (ADR §5/§6): when a mirror's `main`
|
|
209
221
|
* cannot be fetched, `status` warns through this and reads that mirror's
|
|
@@ -265,11 +277,17 @@ export async function status(options: StatusOptions): Promise<StatusReport> {
|
|
|
265
277
|
const lockHeld: RepoLockEntries[] = [];
|
|
266
278
|
const staleLocks: RepoStaleLocks[] = [];
|
|
267
279
|
const ledgerDuplicates: RepoLedgerDuplicates[] = [];
|
|
280
|
+
// Dead LOCAL arbiters are summarised on one line after the loop (see
|
|
281
|
+
// `createMirrorRefresher`), not warned once per mirror.
|
|
282
|
+
const refresher = createMirrorRefresher({
|
|
283
|
+
warn: options.warn,
|
|
284
|
+
env: options.env,
|
|
285
|
+
});
|
|
268
286
|
for (const mirrorPath of options.mirrorPaths ?? []) {
|
|
269
287
|
// Fetch-first (ADR §5/§6): refresh this mirror's `main` so the duplicate lint
|
|
270
288
|
// reflects the remote truth. Never fatal — a failed fetch WARNS and falls back
|
|
271
289
|
// to the mirror's last-known `main`.
|
|
272
|
-
|
|
290
|
+
refresher.refresh(mirrorPath);
|
|
273
291
|
// CLASSIFY the mirror's held locks against its `main` (fix for the propose-path
|
|
274
292
|
// lock leak; observation
|
|
275
293
|
// `every-completed-task-leaves-its-lock-ref-reporting-in-progress`). A
|
|
@@ -294,7 +312,14 @@ export async function status(options: StatusOptions): Promise<StatusReport> {
|
|
|
294
312
|
const MIRROR_MAIN = {mainRef: 'main'};
|
|
295
313
|
let staleEntries: string[] = [];
|
|
296
314
|
let entries: LockEntry[];
|
|
297
|
-
if (
|
|
315
|
+
if (
|
|
316
|
+
options.reconcileLocks === true &&
|
|
317
|
+
mirrorInReconcileScope(
|
|
318
|
+
mirrorPath,
|
|
319
|
+
options.reconcileArbiterKey,
|
|
320
|
+
options.env,
|
|
321
|
+
)
|
|
322
|
+
) {
|
|
298
323
|
const reconciled = await reconcileTerminalItemLocks(
|
|
299
324
|
mirrorPath,
|
|
300
325
|
'origin',
|
|
@@ -350,6 +375,7 @@ export async function status(options: StatusOptions): Promise<StatusReport> {
|
|
|
350
375
|
ledgerDuplicates.push({repoPath: mirrorPath, duplicates: dups});
|
|
351
376
|
}
|
|
352
377
|
}
|
|
378
|
+
refresher.flush();
|
|
353
379
|
lockHeld.sort((a, b) => a.repoPath.localeCompare(b.repoPath));
|
|
354
380
|
staleLocks.sort((a, b) => a.repoPath.localeCompare(b.repoPath));
|
|
355
381
|
ledgerDuplicates.sort((a, b) => a.repoPath.localeCompare(b.repoPath));
|