@ai-dossier/sched 0.55.1 → 0.57.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/README.md CHANGED
@@ -985,14 +985,15 @@ A batch member that leaves its batch before landing is **parked**, never auto-re
985
985
  batch failure: its `evictions[]` record carries `kind: 'handed-back'` and it **never
986
986
  counts toward the dissolve threshold**. Journals `member-handed-back`.
987
987
  - **`evicted`** — an engine-decided failure (unverified exit, incremental-gate
988
- `task-failed`, landing conflict, worktree prep). Counts toward the threshold. Journals
989
- `unit-failed`.
988
+ `task-failed`, landing conflict, worktree prep, and — since #840 — an aggregate-suite
989
+ eviction after landing). Counts toward the threshold. Journals `unit-failed` (or
990
+ `member-evicted ... — parked on <branch>` for the post-landing case).
990
991
 
991
992
  Both keep `mode: slot` + `batch`, record the member branch (`evictions[].branch`,
992
993
  `failure_evidence.branch` — the pushed remote copy survives the member teardown) and stamp
993
994
  the batch's `dispatch_profile` onto the entry. Neither is runnable until an operator runs
994
- `sched requeue --issue <n>` (full-cycle on that profile; the cycle prompt gains a
995
- `PRIOR WORK` instruction to continue from the member branch) or `sched abandon --issue <n>`.
995
+ `sched requeue --issue <n>` (full-cycle on that profile, based on the member branch — see
996
+ below) or `sched abandon --issue <n>`.
996
997
  `sched status` lists them under `== Parked members ==` with reason, branch, profile and
997
998
  those exact commands (`parked_members` in `--json`).
998
999
 
@@ -1019,10 +1020,46 @@ Dissolve never throws validated work away:
1019
1020
  as before, except that in-flight members with a member branch are parked `evicted` and
1020
1021
  every requeue carries the batch's dispatch profile (`carryDispatchProfile: false` only
1021
1022
  for `dispatch-profile-missing:*`, where the profile itself is what broke).
1022
- - Not changed: the `halved` PR-conflict split still re-batches its members, and
1023
- aggregate-suite evictions (`evictMembers`, post-landing, member branch already deleted)
1024
- still requeue full-cycle — now on the batch profile. Both, plus an engine-set requeue base,
1025
- are tracked in #840.
1023
+ - #840: a PR-conflict give-up (`handlePrConflict`: a recurred conflict, a conflicting or
1024
+ failed rebase, a red suite after a clean rebase) never re-batches a validated member.
1025
+ Validated members stay landed in the batch; only the unshipped, UNVALIDATED members with
1026
+ no commits on the integration branch are split into half-batches (`batch-split`) and
1027
+ trimmed out of it. A clean rebase with a red
1028
+ suite re-runs the gate over the landed members (`re-validating → validating`,
1029
+ `batch-regate`, `executing_member` pinned to the end — the shape of `sched resume
1030
+ --batch`); anything else blocks `dissolve-refused:<reason>` (milestone `batch-ship`,
1031
+ `validated=`; the recorded PR can be resolved by hand, or closed before `sched resume
1032
+ --batch`). With no validated member it still dissolves into halves. **Library behaviour
1033
+ only:** the engine does not yet route a CONFLICTING batch PR into `handlePrConflict`
1034
+ (#867).
1035
+
1036
+ #### Member branches live until the batch ends; a requeue resumes on them (#840)
1037
+
1038
+ - A member's remote branch (`batch/<id>-m<n>-<issue>`) is **kept after it lands** — only
1039
+ its tree and local branch go. `teardownBatch` (batch `done`, or dissolved) deletes the
1040
+ batch's member branches from origin (`pruneMemberBranches`, one delete per ref,
1041
+ `member-branches-deleted`), except any a NON-terminal queue entry's
1042
+ `failure_evidence.branch` still names (a parked or branch-requeued member's work);
1043
+ `sched abandon --batch` prunes the same way (verified project repo only). A kept batch
1044
+ (`worktree_kept`) keeps them.
1045
+ - An aggregate-suite eviction (`evictMembers`, after `beginAttribution`) therefore PARKS the
1046
+ reverted member `evicted` with `branch=` recorded (`EvictionOutcome.parked`, milestone
1047
+ `parked=`), like a pre-landing eviction, instead of requeueing it from the base. A member
1048
+ whose branch is no longer on origin (a pre-#840 landing) still requeues full-cycle; when
1049
+ origin cannot be listed only a recorded branch is parked on (journaled `git-failed`).
1050
+ - `sched requeue` of a parked member is based on its branch **by the engine**: at the
1051
+ entry's first dispatch, `EngineDeps.resumeSeeder` (`createExecResumeSeeder`: `runstate
1052
+ mint` + `runstate post`) seeds the issue's trail with a `setup done` milestone
1053
+ (`branch=<member branch> base_branch=<batch base> pool_claimed=false remote=pushed
1054
+ seeded_by=sched from_batch=<id>`). The agent's gate (`runstate verify`) then resumes at
1055
+ `plan` on that branch, and full-cycle's Resuming path builds the worktree from it — the
1056
+ documented resume contract, no dossier change. The run id is stamped on
1057
+ `failure_evidence.resume_run` so a respawn never re-seeds; `resume-seeded` /
1058
+ `resume-seed-failed` journal it (a failure falls back to the `PRIOR WORK` prompt
1059
+ instruction, which now names the seeded run when there is one, and — for a post-landing
1060
+ eviction — the commits reverted on the integration branch, which a rebase onto a base
1061
+ carrying those reverts would silently drop; engine-side re-application is #866). A branch
1062
+ gone from origin makes `verify` answer `resume_from=setup` — a fresh run off the base.
1026
1063
 
1027
1064
  State schema 1.24.0: `IssueStatus` gains `handed-back`; `EvictionRecord` gains optional
1028
1065
  `kind`/`branch`, `FailureEvidence` optional `branch`.
@@ -1097,7 +1134,13 @@ hand-back shape (`blocked`, `review partial`) never counts: it keeps its own pat
1097
1134
  member rails then:
1098
1135
 
1099
1136
  - stop a live agent and wait for it to be gone before anything else (a dying full-cycle run
1100
- could still push, post or open a PR in that worktree);
1137
+ could still push, post or open a PR in that worktree). The first sight sends SIGTERM
1138
+ (re-sent each tick), stamps `SlotEntry.kill_sent_at` and journals `member-stop-requested`
1139
+ once; an agent still alive `KILL_ESCALATION_MS` (120 s) later
1140
+ is sent SIGKILL — to its process group when its recorded start time confirms its identity
1141
+ (every agent is spawned detached, so it leads one), else to the pid alone — and
1142
+ `kill-escalated` is journaled once (#844). Pre-#844 an agent ignoring SIGTERM held its
1143
+ member here indefinitely;
1101
1144
  - if the milestone shows the run already SHIPPED (a `ship`/`report` phase or a `pr=` key —
1102
1145
  `wrongProcedureShippedPr`), evict it at once `wrong-procedure-shipped`, naming the stray PR
1103
1146
  (`stray_pr`) for the operator to close or reconcile — a re-prompt cannot undo a PR;
@@ -1109,6 +1152,21 @@ member rails then:
1109
1152
  the killed first dispatch's milestones would otherwise still count inside the 60s fence)
1110
1153
  evicts it `wrong-procedure` (parked `evicted`, branch kept, #810).
1111
1154
 
1155
+ ### A member's slot release and its eviction are one write (#844)
1156
+
1157
+ Every member-failure rail — serial dead/blocked, the incremental gate's `task-failed`, both
1158
+ wrong-procedure evictions, and their parallel twins — hands the slot release to
1159
+ `evictMemberDirectly`, which applies it inside the same lock that parks the member and
1160
+ appends its `evictions[]` record. Pre-#844 the release was its own earlier write, and an
1161
+ engine exit between the two left the member in-work with no slot: the serial wedge arm or
1162
+ `spawnParallelMembers` then dispatched it once more, with no eviction in the journal. An exit
1163
+ AFTER the combined write but before the serial advance is recovered too: the wedge arm finds
1164
+ the current member already in `evictions[]`, journals `member-advance-recovered` (carrying the
1165
+ record's `reason`/`kind`, since the exit may have beaten the `unit-failed` line), and finishes
1166
+ what the eviction would have done — the dissolve its threshold tripped, or the advance —
1167
+ instead of respawning it. The same one-write rule covers the parallel run's `evicted` status
1168
+ and `sched resume --batch`'s `blocked → executing` transition before a recheck eviction.
1169
+
1112
1170
  ## API surface
1113
1171
 
1114
1172
  ```ts
@@ -1137,6 +1195,10 @@ import {
1137
1195
  // truth/clock/repoDir/teardownExec/fencer/batchExec/runBatchSuite/
1138
1196
  // runBatchCapability — #523)
1139
1197
  createSpawnDeps, // real detached-spawn process I/O
1198
+ KILL_ESCALATION_MS, // #844: SIGTERM → SIGKILL bound (120 s) for an agent the batch
1199
+ // wrong-procedure wait is stopping
1200
+ type KillSignal, // #844: 'SIGTERM' | 'SIGKILL' — SpawnDeps.kill's optional 3rd arg
1201
+ // (SIGKILL targets the agent's process group on confirmed identity)
1140
1202
  createExecGroundTruth, // runstate/gh/git ground truth via subprocesses (injectable exec);
1141
1203
  // since #468 also gh pr view PR state + setup info from comments;
1142
1204
  // since #789 also mergedPrForBranch, and since #824
@@ -1431,7 +1493,7 @@ after-the-fact recovery, not a missing-data bug.
1431
1493
  queue data.
1432
1494
  - **Schema**: state/config files from #460 (schema 1.0.0), #464 (1.1.0), #468 (1.2.0),
1433
1495
  #472 (1.3.0), #500 (1.4.0), #505 (1.5.0), #504 (1.6.0), #523 (1.7.0) and #524 (1.8.0)
1434
- load and migrate to the current schema (1.28.0 — 1.24.0 was #810: no backfill,
1496
+ load and migrate to the current schema (1.29.0 — 1.24.0 was #810: no backfill,
1435
1497
  `kind`/`branch` optional, absent = an `evicted` record with no branch) automatically
1436
1498
  (slot `branch`/`last_head`/`pid_start`, slot `role` (inferred from the
1437
1499
  unit's queue entry, with the persisted `phase` as a fallback — #500), entry
@@ -1458,6 +1520,9 @@ after-the-fact recovery, not a missing-data bug.
1458
1520
  decision, persisted; `false` backfilled) and `MemberRun` gains `teardown_failed_at`
1459
1521
  (`null` backfilled). A 1.27.0 `done` batch still carrying a live member run loads as
1460
1522
  kept — the old engine never recorded the decision, so the default is to keep.
1523
+ Schema 1.29.0 (#844): `SlotEntry` gains `kill_sent_at`/`kill_escalated_at` (the
1524
+ SIGTERM → SIGKILL escalation anchor and its journal dedup marker; `null`/`null`
1525
+ backfilled, cleared when the slot goes idle).
1461
1526
  - **`max_slots`** bounds live units (`assigned | running | recovering`); dependency
1462
1527
  edges gate readiness — an issue with an unmerged dependency, and a batch behind an
1463
1528
  unmerged batch, are never runnable.
@@ -176,8 +176,14 @@ export interface MemberFailure {
176
176
  export declare function memberBranchFor(batchId: string, memberIndex: number, issue: number): string;
177
177
  /**
178
178
  * Evict the current member and either dissolve, or continue the batch via
179
- * `advanceMemberOrValidate` — the shared tail of both member-failure rails
180
- * (self-reported blocked, and the incremental gate below).
179
+ * `advanceMemberOrValidate` — the shared tail of the serial member-failure
180
+ * rails (dead/blocked, the incremental gate below, the wrong-procedure
181
+ * evictions, and `sched resume --batch`'s recheck).
182
+ *
183
+ * #844: a caller whose member still holds its slot MUST pass its release as
184
+ * `preWrite` — never release under a separate lock first. `evictMemberDirectly` commits
185
+ * the release with the park/eviction record in one write, so an engine exit
186
+ * cannot leave the member slotless and un-evicted (and so respawned).
181
187
  *
182
188
  * #613: `evictMemberDirectly`'s duplicate check (#595) is the one atomic,
183
189
  * lock-protected claim on "did THIS member's eviction already happen" — so
@@ -199,7 +205,9 @@ export declare function memberBranchFor(batchId: string, memberIndex: number, is
199
205
  * `runBatchTick`/`resumeBlockedGate` entry points cannot reproduce since
200
206
  * both always read state fresh.
201
207
  */
202
- export declare function evictMemberAndContinue(deps: BatchDispatchDeps, config: SchedConfig, dispatch: ResolvedDispatch, batchId: string, batch: BatchEntry, memberIssue: number, failure: MemberFailure, now: Date, result: BatchTickResult): void;
208
+ export declare function evictMemberAndContinue(deps: BatchDispatchDeps, config: SchedConfig, dispatch: ResolvedDispatch, batchId: string, batch: BatchEntry, memberIssue: number, failure: MemberFailure, now: Date, result: BatchTickResult,
209
+ /** #844: the member's slot release (or any pre-write) — committed in the eviction's own write. */
210
+ preWrite?: (s: SchedState) => SchedState): void;
203
211
  /**
204
212
  * `sched resume --batch <id>` (#583 AC4): an operator-triggered, synchronous
205
213
  * one-shot recheck of a batch blocked on `gate-inconclusive:<capabilityId>`
@@ -1 +1 @@
1
- {"version":3,"file":"batch-dispatch.d.ts","sourceRoot":"","sources":["../src/batch-dispatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-dispatch.d.ts","sourceRoot":"","sources":["../src/batch-dispatch.ts"],"names":[],"mappings":"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"}