@ai-dossier/sched 0.15.0 → 0.17.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 +64 -27
- package/dist/batch-dispatch.d.ts +33 -14
- package/dist/batch-dispatch.d.ts.map +1 -1
- package/dist/batch-dispatch.js +179 -26
- package/dist/batch-dispatch.js.map +1 -1
- package/dist/engine.d.ts +6 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/persist.d.ts.map +1 -1
- package/dist/persist.js +25 -5
- package/dist/persist.js.map +1 -1
- package/dist/recovery.d.ts +39 -10
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +162 -17
- package/dist/recovery.js.map +1 -1
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +4 -0
- package/dist/state.js.map +1 -1
- package/dist/teardown.d.ts +12 -0
- package/dist/teardown.d.ts.map +1 -1
- package/dist/teardown.js +8 -5
- package/dist/teardown.js.map +1 -1
- package/dist/types.d.ts +53 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +16 -3
- package/dist/types.js.map +1 -1
- package/package.json +4 -1
package/dist/persist.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../src/persist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../src/persist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,EAYL,KAAK,WAAW,EAEhB,KAAK,UAAU,EAEhB,MAAM,SAAS,CAAC;AASjB,qEAAqE;AACrE,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;CASvD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAS7C;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAwBpE;AA8DD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAET,GAAG,EAAE,MAAM;IAIvB,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,oEAAoE;IACpE,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,IAAI,UAAU;IA6BlB,IAAI,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI7B;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK;QAAE,KAAK,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,CAAC,CAAA;KAAE,GAAG,CAAC;IAY3E,UAAU,IAAI,WAAW;IAwEzB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;CAsBtC"}
|
package/dist/persist.js
CHANGED
|
@@ -276,6 +276,9 @@ class SchedStore {
|
|
|
276
276
|
}
|
|
277
277
|
config.auto_upgrade = parsed.auto_upgrade;
|
|
278
278
|
}
|
|
279
|
+
if (parsed.dissolve_policy !== undefined) {
|
|
280
|
+
config.dissolve_policy = validateDissolvePolicy(parsed.dissolve_policy);
|
|
281
|
+
}
|
|
279
282
|
return config;
|
|
280
283
|
}
|
|
281
284
|
catch (err) {
|
|
@@ -288,8 +291,8 @@ class SchedStore {
|
|
|
288
291
|
console.error(`⚠ Scheduler config ${this.configPath} is unreadable (${err.message}) — ` +
|
|
289
292
|
`ALL config (max_slots, stall_timeout_ms, reconcile_interval_ms, pr_poll_interval_ms, ` +
|
|
290
293
|
`label_poll_interval_ms, ` +
|
|
291
|
-
`dispatch command/prompt/models/tiers/phase-timeouts/fence-takeover-timeout, auto_upgrade
|
|
292
|
-
`reverted to built-in defaults (max_slots=${types_1.DEFAULT_MAX_SLOTS}); fix the file and re-run`);
|
|
294
|
+
`dispatch command/prompt/models/tiers/phase-timeouts/fence-takeover-timeout, auto_upgrade, ` +
|
|
295
|
+
`dissolve_policy) reverted to built-in defaults (max_slots=${types_1.DEFAULT_MAX_SLOTS}); fix the file and re-run`);
|
|
293
296
|
return { max_slots: types_1.DEFAULT_MAX_SLOTS };
|
|
294
297
|
}
|
|
295
298
|
}
|
|
@@ -311,21 +314,38 @@ class SchedStore {
|
|
|
311
314
|
: {}),
|
|
312
315
|
...(config.dispatch !== undefined ? { dispatch: config.dispatch } : {}),
|
|
313
316
|
...(config.auto_upgrade !== undefined ? { auto_upgrade: config.auto_upgrade } : {}),
|
|
317
|
+
...(config.dissolve_policy !== undefined ? { dissolve_policy: config.dissolve_policy } : {}),
|
|
314
318
|
};
|
|
315
319
|
writeAtomic(this.configPath, `${JSON.stringify(file, null, 2)}\n`);
|
|
316
320
|
}
|
|
317
321
|
}
|
|
318
322
|
exports.SchedStore = SchedStore;
|
|
323
|
+
/** Validates `dissolve_policy` (#563): a fraction in (0, 1], and a positive-integer floor. */
|
|
324
|
+
function validateDissolvePolicy(raw) {
|
|
325
|
+
const policy = requirePlainObject('dissolve_policy', raw);
|
|
326
|
+
if (typeof policy.fraction !== 'number' ||
|
|
327
|
+
!Number.isFinite(policy.fraction) ||
|
|
328
|
+
policy.fraction <= 0 ||
|
|
329
|
+
policy.fraction > 1) {
|
|
330
|
+
throw new Error(`dissolve_policy.fraction must be a number in (0, 1]; got ${JSON.stringify(policy.fraction)}`);
|
|
331
|
+
}
|
|
332
|
+
const minEvictions = requirePositiveInt('dissolve_policy.min_evictions_before_dissolve', policy.min_evictions_before_dissolve);
|
|
333
|
+
return { fraction: policy.fraction, min_evictions_before_dissolve: minEvictions };
|
|
334
|
+
}
|
|
319
335
|
const MODEL_TIERS = ['mechanical', 'mid', 'strong'];
|
|
320
336
|
/** Every phase name a `dispatch.phase_stall_timeout_ms` key may legally name (#495). */
|
|
321
337
|
const STALL_PHASES = [...types_1.PHASES, ...types_1.BATCH_PHASES];
|
|
322
|
-
/** A positive-integer
|
|
323
|
-
function
|
|
338
|
+
/** A positive-integer field, validated once and reused by every integer-floor config key. */
|
|
339
|
+
function requirePositiveInt(label, value, unitSuffix = '') {
|
|
324
340
|
if (typeof value !== 'number' || !Number.isInteger(value) || value <= 0) {
|
|
325
|
-
throw new Error(`${label} must be a positive integer
|
|
341
|
+
throw new Error(`${label} must be a positive integer${unitSuffix}; got ${JSON.stringify(value)}`);
|
|
326
342
|
}
|
|
327
343
|
return value;
|
|
328
344
|
}
|
|
345
|
+
/** A positive-integer-milliseconds field, validated once and reused by every `*_ms` config key. */
|
|
346
|
+
function requirePositiveIntMs(label, value) {
|
|
347
|
+
return requirePositiveInt(label, value, ' (milliseconds)');
|
|
348
|
+
}
|
|
329
349
|
/** A plain (non-array, non-null) object field, validated once and reused by every map-shaped config key. */
|
|
330
350
|
function requirePlainObject(label, value) {
|
|
331
351
|
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
package/dist/persist.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../src/persist.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persist.js","sourceRoot":"","sources":["../src/persist.ts"],"names":[],"mappings":"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"}
|
package/dist/recovery.d.ts
CHANGED
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
import { type AmbiguousTest, type BoundaryCommit, type FailingTest, type MemberFootprint, type MemberRange } from './attribution';
|
|
32
32
|
import { type BisectOutcome } from './bisect';
|
|
33
33
|
import type { ExecFn } from './project';
|
|
34
|
-
import { type AttributionMethod, type BatchEntry, type BatchPhase, type JournalEvent, type ModelTier, type SchedConfig, type SchedState } from './types';
|
|
34
|
+
import { type AttributionMethod, type BatchEntry, type BatchPhase, type DissolvePolicy, type JournalEvent, type ModelTier, type SchedConfig, type SchedState } from './types';
|
|
35
35
|
/** The result of one aggregate-suite run. */
|
|
36
36
|
export interface SuiteResult {
|
|
37
37
|
ok: boolean;
|
|
@@ -101,6 +101,8 @@ export interface RecoveryDeps {
|
|
|
101
101
|
postMilestone?: BatchMilestonePoster;
|
|
102
102
|
/** Re-runs the aggregate suite after a revert or a rebase. */
|
|
103
103
|
runSuite?: SuiteRunner;
|
|
104
|
+
/** Per-project dissolve threshold policy (#563); defaults to `DEFAULT_DISSOLVE_POLICY`. */
|
|
105
|
+
dissolvePolicy?: DissolvePolicy;
|
|
104
106
|
now?: () => Date;
|
|
105
107
|
}
|
|
106
108
|
/** What one attribution pass concluded. */
|
|
@@ -194,7 +196,15 @@ export interface EvictionOutcome {
|
|
|
194
196
|
reverted: string[];
|
|
195
197
|
/** True when a revert conflicted — the batch dissolves instead. */
|
|
196
198
|
conflict: boolean;
|
|
199
|
+
/**
|
|
200
|
+
* True only when the batch actually reached `dissolved`. `false` covers
|
|
201
|
+
* two different cases: the dissolve threshold was never crossed (`dissolve`
|
|
202
|
+
* below is `undefined`), OR it was crossed but `strategy: 'partial'`
|
|
203
|
+
* (#563) preserved the survivors instead — the batch is then already in
|
|
204
|
+
* `reviewing`, not untouched. Check `dissolve` for which case applies.
|
|
205
|
+
*/
|
|
197
206
|
dissolved: boolean;
|
|
207
|
+
/** Set whenever `dissolveBatch` was invoked at all, regardless of whether it dissolved or preserved. */
|
|
198
208
|
dissolve?: DissolveOutcome;
|
|
199
209
|
/** The post-eviction suite re-run, when a runner was supplied. */
|
|
200
210
|
suite: SuiteResult | null;
|
|
@@ -207,26 +217,37 @@ export interface EvictionOutcome {
|
|
|
207
217
|
export declare function expandEvictionGroups(batch: BatchEntry, issues: readonly number[]): number[];
|
|
208
218
|
/**
|
|
209
219
|
* `attributing → evicting`: revert the offending members' commits, requeue them
|
|
210
|
-
* as full-cycle with their failure evidence, re-run the suite, and
|
|
211
|
-
*
|
|
220
|
+
* as full-cycle with their failure evidence, re-run the suite, and check the
|
|
221
|
+
* batch's configurable dissolve threshold (`DissolvePolicy`, AC2/AC3/AC5).
|
|
222
|
+
* Crossing it has two outcomes (#563): if the re-run suite came back green
|
|
223
|
+
* for the survivors, the batch is PRESERVED — trimmed to its survivors and
|
|
224
|
+
* carried straight to `reviewing`, only the evicted members requeue; a red
|
|
225
|
+
* or unreadable re-run dissolves the batch in full, as before.
|
|
212
226
|
*
|
|
213
227
|
* A conflicting revert aborts and dissolves immediately — a half-reverted
|
|
214
228
|
* worktree is not a state any later step can reason about.
|
|
215
229
|
*/
|
|
216
230
|
export declare function evictMembers(state: SchedState, batchId: string, input: EvictionInput, deps: RecoveryDeps): EvictionOutcome;
|
|
217
231
|
/**
|
|
218
|
-
* Whether the batch has lost
|
|
219
|
-
* (RFC-0001 §F.8). Counted over distinct
|
|
220
|
-
* once and recorded twice never
|
|
232
|
+
* Whether the batch has lost more evictions than its dissolve threshold
|
|
233
|
+
* tolerates (RFC-0001 §F.8, floor raised by #563). Counted over distinct
|
|
234
|
+
* evicted members, so a member evicted once and recorded twice never
|
|
235
|
+
* inflates the trigger. The threshold is `max(ceil(N × fraction),
|
|
236
|
+
* min_evictions_before_dissolve)` — see `DissolvePolicy` for why `ceil`
|
|
237
|
+
* matters at small N.
|
|
221
238
|
*/
|
|
222
|
-
export declare function checkDissolveTrigger(batch: BatchEntry): boolean;
|
|
239
|
+
export declare function checkDissolveTrigger(batch: BatchEntry, policy?: DissolvePolicy): boolean;
|
|
223
240
|
export interface DissolveOptions {
|
|
224
241
|
/**
|
|
225
242
|
* `full` requeues every unshipped member as its own full-cycle run;
|
|
226
243
|
* `halved` splits them into two fresh `forming` batches (§F.9's answer to a
|
|
227
|
-
* batch that keeps conflicting: smaller batches, not abandoned work)
|
|
244
|
+
* batch that keeps conflicting: smaller batches, not abandoned work);
|
|
245
|
+
* `partial` (#563) keeps the batch alive and ships only the survivors,
|
|
246
|
+
* requeuing just the evicted members — used when a fresh suite re-run
|
|
247
|
+
* already confirmed the survivors are green, so nothing green is
|
|
248
|
+
* discarded even though the batch crossed the dissolve threshold.
|
|
228
249
|
*/
|
|
229
|
-
strategy: 'full' | 'halved';
|
|
250
|
+
strategy: 'full' | 'halved' | 'partial';
|
|
230
251
|
reason: string;
|
|
231
252
|
/** Milestone phase to report under (default `batch-validate`; ship uses `batch-ship`). */
|
|
232
253
|
milestonePhase?: BatchPhase;
|
|
@@ -235,7 +256,11 @@ export interface DissolveOutcome {
|
|
|
235
256
|
state: SchedState;
|
|
236
257
|
/** Members put back on the queue. */
|
|
237
258
|
requeued: number[];
|
|
238
|
-
/**
|
|
259
|
+
/**
|
|
260
|
+
* Members whose work was kept as-is: shipped/merged/terminal on `full` and
|
|
261
|
+
* `halved`, OR — for `partial` — the survivors kept in the batch to ship
|
|
262
|
+
* together (not yet shipped themselves, but not discarded either).
|
|
263
|
+
*/
|
|
239
264
|
preserved: number[];
|
|
240
265
|
/** Ids of the half-batches created by the `halved` strategy. */
|
|
241
266
|
newBatches: string[];
|
|
@@ -246,6 +271,10 @@ export interface DissolveOutcome {
|
|
|
246
271
|
* "nothing green is discarded" is the whole point of dissolving rather than
|
|
247
272
|
* failing the batch.
|
|
248
273
|
*
|
|
274
|
+
* `strategy: 'partial'` (#563) is a different shape entirely — the batch
|
|
275
|
+
* never becomes `dissolved`, so it is handled by `preserveSurvivors` before
|
|
276
|
+
* any of the `dissolving`/`dissolved` transitions below run.
|
|
277
|
+
*
|
|
249
278
|
* No git runs here: the batch branch is simply left behind unmerged. Sched
|
|
250
279
|
* deletes nothing, so an operator can still inspect what the batch built.
|
|
251
280
|
*/
|
package/dist/recovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAIjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,UAAU,CAAC;AAQpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AASxC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../src/recovery.ts"],"names":[],"mappings":"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"}
|
package/dist/recovery.js
CHANGED
|
@@ -336,8 +336,12 @@ function orderRevertCommits(ranges, targets) {
|
|
|
336
336
|
}
|
|
337
337
|
/**
|
|
338
338
|
* `attributing → evicting`: revert the offending members' commits, requeue them
|
|
339
|
-
* as full-cycle with their failure evidence, re-run the suite, and
|
|
340
|
-
*
|
|
339
|
+
* as full-cycle with their failure evidence, re-run the suite, and check the
|
|
340
|
+
* batch's configurable dissolve threshold (`DissolvePolicy`, AC2/AC3/AC5).
|
|
341
|
+
* Crossing it has two outcomes (#563): if the re-run suite came back green
|
|
342
|
+
* for the survivors, the batch is PRESERVED — trimmed to its survivors and
|
|
343
|
+
* carried straight to `reviewing`, only the evicted members requeue; a red
|
|
344
|
+
* or unreadable re-run dissolves the batch in full, as before.
|
|
341
345
|
*
|
|
342
346
|
* A conflicting revert aborts and dissolves immediately — a half-reverted
|
|
343
347
|
* worktree is not a state any later step can reason about.
|
|
@@ -473,8 +477,33 @@ function evictMembers(state, batchId, input, deps) {
|
|
|
473
477
|
// Back to validation with the suite re-run (AC2: "re-run the suite").
|
|
474
478
|
const suite = runSuite(deps, batchId, now);
|
|
475
479
|
next = (0, state_1.transitionBatch)(next, batchId, 'validating', {}, now);
|
|
476
|
-
|
|
477
|
-
|
|
480
|
+
const dissolvePolicy = (0, types_1.resolveDissolvePolicy)(deps.dissolvePolicy);
|
|
481
|
+
if (checkDissolveTrigger(batchOrThrow(next, batchId), dissolvePolicy)) {
|
|
482
|
+
// A fresh green suite for the survivors (#563) means their work is still
|
|
483
|
+
// safe to ship as-is — dissolve only the evicted members, not the whole
|
|
484
|
+
// batch. A red or unreadable suite means the survivors themselves cannot
|
|
485
|
+
// be trusted, so the batch dissolves in full, as before. A member with
|
|
486
|
+
// NO commits found on the branch (`withoutCommits`, computed above) was
|
|
487
|
+
// never actually removed from the branch despite being marked evicted —
|
|
488
|
+
// shipping the "survivors" would ship its un-reverted work too, so that
|
|
489
|
+
// also forces `full`.
|
|
490
|
+
const survivorsGreen = suite !== null && suite.ok === true && withoutCommits.length === 0;
|
|
491
|
+
// Why `full` was chosen over `partial` (or why `partial` was still safe) —
|
|
492
|
+
// distinct from a green suite, since "no suite runner configured" and "a
|
|
493
|
+
// genuinely red suite" both fall to `full` but mean very different things
|
|
494
|
+
// to an operator reading the journal.
|
|
495
|
+
const reason = survivorsGreen
|
|
496
|
+
? 'eviction-threshold'
|
|
497
|
+
: withoutCommits.length > 0
|
|
498
|
+
? 'eviction-threshold-unreverted-member'
|
|
499
|
+
: suite === null
|
|
500
|
+
? 'eviction-threshold-suite-unavailable'
|
|
501
|
+
: 'eviction-threshold-suite-red';
|
|
502
|
+
const dissolve = dissolveBatch(next, batchId, { strategy: survivorsGreen ? 'partial' : 'full', reason }, deps);
|
|
503
|
+
// Not simply `!survivorsGreen`: `dissolveBatch` itself falls through to a
|
|
504
|
+
// full dissolve when `partial` finds zero survivors (every member
|
|
505
|
+
// evicted), so the actual batch status is the only reliable signal.
|
|
506
|
+
const dissolved = (0, state_1.findBatch)(dissolve.state, batchId)?.status === 'dissolved';
|
|
478
507
|
return {
|
|
479
508
|
state: dissolve.state,
|
|
480
509
|
evicted: targets,
|
|
@@ -483,7 +512,7 @@ function evictMembers(state, batchId, input, deps) {
|
|
|
483
512
|
requeued: [...new Set([...requeued, ...dissolve.requeued])].sort((a, b) => a - b),
|
|
484
513
|
reverted,
|
|
485
514
|
conflict: false,
|
|
486
|
-
dissolved
|
|
515
|
+
dissolved,
|
|
487
516
|
dissolve,
|
|
488
517
|
suite,
|
|
489
518
|
};
|
|
@@ -523,15 +552,41 @@ function revertConflict(state, batchId, targets, deps, now, reverted, detail) {
|
|
|
523
552
|
};
|
|
524
553
|
}
|
|
525
554
|
/**
|
|
526
|
-
* Whether the batch has lost
|
|
527
|
-
* (RFC-0001 §F.8). Counted over distinct
|
|
528
|
-
* once and recorded twice never
|
|
555
|
+
* Whether the batch has lost more evictions than its dissolve threshold
|
|
556
|
+
* tolerates (RFC-0001 §F.8, floor raised by #563). Counted over distinct
|
|
557
|
+
* evicted members, so a member evicted once and recorded twice never
|
|
558
|
+
* inflates the trigger. The threshold is `max(ceil(N × fraction),
|
|
559
|
+
* min_evictions_before_dissolve)` — see `DissolvePolicy` for why `ceil`
|
|
560
|
+
* matters at small N.
|
|
529
561
|
*/
|
|
530
|
-
function checkDissolveTrigger(batch) {
|
|
562
|
+
function checkDissolveTrigger(batch, policy = types_1.DEFAULT_DISSOLVE_POLICY) {
|
|
531
563
|
if (batch.members.length === 0)
|
|
532
564
|
return false;
|
|
533
|
-
const
|
|
534
|
-
return
|
|
565
|
+
const threshold = dissolveThreshold(batch.members.length, policy);
|
|
566
|
+
return evictedMemberIds(batch).size > threshold;
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* `max(ceil(N × fraction), min_evictions_before_dissolve)` — the shared
|
|
570
|
+
* threshold math, clamped below `N` so a batch that loses every member is
|
|
571
|
+
* always reachable-dissolvable regardless of the configured floor. Without
|
|
572
|
+
* the clamp, N=1 is a degenerate case: `ceil(1 × ⅓) = 1` already equals `N`,
|
|
573
|
+
* so `evicted > threshold` can never be true — a 1-member batch's only
|
|
574
|
+
* member could be evicted and the batch would never dissolve. The clamp
|
|
575
|
+
* also caps a `min_evictions_before_dissolve` a project configured too high
|
|
576
|
+
* for a given batch size, rather than letting it disable dissolution outright.
|
|
577
|
+
*/
|
|
578
|
+
function dissolveThreshold(memberCount, policy) {
|
|
579
|
+
const threshold = Math.max(Math.ceil(memberCount * policy.fraction), policy.min_evictions_before_dissolve);
|
|
580
|
+
return Math.min(threshold, memberCount - 1);
|
|
581
|
+
}
|
|
582
|
+
/**
|
|
583
|
+
* Distinct evicted member ids, however many times each was recorded — the
|
|
584
|
+
* one definition of "which members are out" that `checkDissolveTrigger`,
|
|
585
|
+
* `dissolveBatch`'s policy-input count, and `preserveSurvivors`'s survivor
|
|
586
|
+
* computation all share.
|
|
587
|
+
*/
|
|
588
|
+
function evictedMemberIds(batch) {
|
|
589
|
+
return new Set(batch.evictions.map((e) => e.issue));
|
|
535
590
|
}
|
|
536
591
|
/**
|
|
537
592
|
* Dissolve a batch (AC3): mark it `dissolved`, requeue every unshipped member,
|
|
@@ -539,17 +594,47 @@ function checkDissolveTrigger(batch) {
|
|
|
539
594
|
* "nothing green is discarded" is the whole point of dissolving rather than
|
|
540
595
|
* failing the batch.
|
|
541
596
|
*
|
|
597
|
+
* `strategy: 'partial'` (#563) is a different shape entirely — the batch
|
|
598
|
+
* never becomes `dissolved`, so it is handled by `preserveSurvivors` before
|
|
599
|
+
* any of the `dissolving`/`dissolved` transitions below run.
|
|
600
|
+
*
|
|
542
601
|
* No git runs here: the batch branch is simply left behind unmerged. Sched
|
|
543
602
|
* deletes nothing, so an operator can still inspect what the batch built.
|
|
544
603
|
*/
|
|
545
604
|
function dissolveBatch(state, batchId, opts, deps) {
|
|
546
605
|
const now = clock(deps);
|
|
547
606
|
const batch = batchOrThrow(state, batchId);
|
|
607
|
+
// `partial`'s target is `reviewing` (only legal from `validating`), never
|
|
608
|
+
// `dissolving` — naming the wrong target here would blame a transition
|
|
609
|
+
// `partial` never attempts. Checked before the generic terminal guard so a
|
|
610
|
+
// terminal batch gets this message too when the caller asked for `partial`.
|
|
611
|
+
if (opts.strategy === 'partial' && batch.status !== 'validating') {
|
|
612
|
+
throw new types_1.IllegalTransitionError('batch', batch.status, 'reviewing');
|
|
613
|
+
}
|
|
548
614
|
if (types_1.TERMINAL_BATCH_STATUSES.has(batch.status)) {
|
|
549
615
|
// The batch WAS found — this is an illegal edge, not a missing id, and a
|
|
550
616
|
// caller catching SchedNotFoundError to mean "unknown batch" would misroute it.
|
|
551
617
|
throw new types_1.IllegalTransitionError('batch', batch.status, 'dissolving');
|
|
552
618
|
}
|
|
619
|
+
// Policy inputs recorded on every dissolve decision (AC3), regardless of
|
|
620
|
+
// which strategy or reason drove it — "what did the batch look like when
|
|
621
|
+
// this was decided?" is always answerable from the journal/milestone.
|
|
622
|
+
const dissolvePolicy = (0, types_1.resolveDissolvePolicy)(deps.dissolvePolicy);
|
|
623
|
+
const policyInputs = {
|
|
624
|
+
memberCount: batch.members.length,
|
|
625
|
+
evictedCount: evictedMemberIds(batch).size,
|
|
626
|
+
threshold: dissolveThreshold(batch.members.length, dissolvePolicy),
|
|
627
|
+
};
|
|
628
|
+
if (opts.strategy === 'partial') {
|
|
629
|
+
const outcome = preserveSurvivors(state, batch, opts, deps, now, policyInputs);
|
|
630
|
+
// `null` means every member was evicted — there is nothing "partial"
|
|
631
|
+
// about that, so fall through to an ordinary full dissolve below
|
|
632
|
+
// (`strategy` is downgraded to `full` for the rest of this call; `opts`
|
|
633
|
+
// itself is left untouched since it may be shared with the caller).
|
|
634
|
+
if (outcome)
|
|
635
|
+
return outcome;
|
|
636
|
+
}
|
|
637
|
+
const strategy = opts.strategy === 'halved' ? 'halved' : 'full';
|
|
553
638
|
const unshipped = [];
|
|
554
639
|
const preserved = [];
|
|
555
640
|
for (const issue of batch.members) {
|
|
@@ -576,7 +661,7 @@ function dissolveBatch(state, batchId, opts, deps) {
|
|
|
576
661
|
let next = (0, state_1.transitionBatch)(state, batchId, 'dissolving', {}, now);
|
|
577
662
|
const newBatches = [];
|
|
578
663
|
const requeued = [];
|
|
579
|
-
if (
|
|
664
|
+
if (strategy === 'halved' && unshipped.length > 0) {
|
|
580
665
|
// Split by POSITION, not by coupling: the halves are the first and second
|
|
581
666
|
// half of `unshipped` in member order. A coupled eviction group straddling
|
|
582
667
|
// the pivot is therefore broken up — accepted, because both halves re-run
|
|
@@ -638,10 +723,12 @@ function dissolveBatch(state, batchId, opts, deps) {
|
|
|
638
723
|
}
|
|
639
724
|
next = (0, state_1.transitionBatch)(next, batchId, 'dissolved', {}, now);
|
|
640
725
|
journal(deps, (0, journal_1.unitEvent)('batch-dissolved', `batch:${batchId}`, {
|
|
641
|
-
// Ids, not counts
|
|
642
|
-
//
|
|
643
|
-
|
|
644
|
-
|
|
726
|
+
// Ids, not counts, for what went back on the queue vs. what kept its
|
|
727
|
+
// result; N/evictions/threshold (AC3) are the policy inputs behind the
|
|
728
|
+
// decision itself, so a dissolve is explainable without re-deriving it.
|
|
729
|
+
detail: `${opts.reason} strategy=${strategy} N=${policyInputs.memberCount} ` +
|
|
730
|
+
`evictions=${policyInputs.evictedCount} threshold=${policyInputs.threshold} ` +
|
|
731
|
+
`requeued=${requeued.join(',') || 'none'} preserved=${preserved.join(',') || 'none'}` +
|
|
645
732
|
(newBatches.length > 0 ? ` split_into=${newBatches.join(',')}` : ''),
|
|
646
733
|
}), now);
|
|
647
734
|
post(deps, batchOrThrow(next, batchId), {
|
|
@@ -650,7 +737,7 @@ function dissolveBatch(state, batchId, opts, deps) {
|
|
|
650
737
|
kv: {
|
|
651
738
|
reason: opts.reason,
|
|
652
739
|
dissolved: 'true',
|
|
653
|
-
strategy
|
|
740
|
+
strategy,
|
|
654
741
|
requeued: requeued.join(',') || 'none',
|
|
655
742
|
preserved: preserved.join(',') || 'none',
|
|
656
743
|
...(newBatches.length > 0 ? { split_into: newBatches.join(',') } : {}),
|
|
@@ -658,6 +745,64 @@ function dissolveBatch(state, batchId, opts, deps) {
|
|
|
658
745
|
}, now);
|
|
659
746
|
return { state: next, requeued, preserved, newBatches };
|
|
660
747
|
}
|
|
748
|
+
/**
|
|
749
|
+
* `strategy: 'partial'` (#563): the caller has already confirmed the
|
|
750
|
+
* survivors are green — a fresh suite re-run came back `ok` right before this
|
|
751
|
+
* was called. Requeue nothing here: the members THIS round evicted were
|
|
752
|
+
* already requeued by the caller's own eviction loop before `dissolveBatch`
|
|
753
|
+
* was invoked, so re-requeuing them would double the bookkeeping — this
|
|
754
|
+
* function's own `requeued` is therefore always `[]`; the evicted ids are
|
|
755
|
+
* reported separately (`evicted_total=`) so the milestone/journal can still
|
|
756
|
+
* show them without claiming this call put them on the queue. The remaining
|
|
757
|
+
* work is to trim them out of `batch.members` (and the `eviction_groups` /
|
|
758
|
+
* `ranges` that name them — `enqueue.ts` throws on a group or range naming a
|
|
759
|
+
* non-member) so the batch that ships reports only the survivors it actually
|
|
760
|
+
* contains, and carry the batch forward exactly like the ordinary all-green
|
|
761
|
+
* path does: straight to `reviewing`, never through `dissolving`/`dissolved`
|
|
762
|
+
* at all.
|
|
763
|
+
*
|
|
764
|
+
* Returns `null` when every member has been evicted across the batch's
|
|
765
|
+
* history — there are no survivors to preserve, so the caller falls through
|
|
766
|
+
* to an ordinary full dissolve instead of shipping an empty batch.
|
|
767
|
+
*/
|
|
768
|
+
function preserveSurvivors(state, batch, opts, deps, now, policyInputs) {
|
|
769
|
+
// Cumulative across every eviction round this batch has had, not just this
|
|
770
|
+
// one — a member evicted two rounds ago is still not a survivor.
|
|
771
|
+
const evictedIds = evictedMemberIds(batch);
|
|
772
|
+
const survivors = batch.members.filter((issue) => !evictedIds.has(issue));
|
|
773
|
+
if (survivors.length === 0)
|
|
774
|
+
return null;
|
|
775
|
+
const evictedTotal = [...evictedIds].sort((a, b) => a - b);
|
|
776
|
+
let next = (0, state_1.patchBatch)(state, batch.id, {
|
|
777
|
+
members: survivors,
|
|
778
|
+
eviction_groups: batch.eviction_groups
|
|
779
|
+
.map((group) => group.filter((m) => survivors.includes(m)))
|
|
780
|
+
.filter((group) => group.length > 1),
|
|
781
|
+
ranges: batch.ranges.filter((r) => survivors.includes(r.issue)),
|
|
782
|
+
}, now);
|
|
783
|
+
next = (0, state_1.transitionBatch)(next, batch.id, 'reviewing', {}, now);
|
|
784
|
+
journal(deps, (0, journal_1.unitEvent)('batch-preserved', `batch:${batch.id}`, {
|
|
785
|
+
detail: `${opts.reason} strategy=partial N=${policyInputs.memberCount} ` +
|
|
786
|
+
`evictions=${policyInputs.evictedCount} threshold=${policyInputs.threshold} ` +
|
|
787
|
+
`requeued=none evicted_total=${evictedTotal.join(',') || 'none'} ` +
|
|
788
|
+
`preserved=${survivors.join(',') || 'none'}`,
|
|
789
|
+
}), now);
|
|
790
|
+
post(deps, batchOrThrow(next, batch.id), {
|
|
791
|
+
phase: opts.milestonePhase ?? 'batch-validate',
|
|
792
|
+
status: 'done',
|
|
793
|
+
kv: {
|
|
794
|
+
reason: opts.reason,
|
|
795
|
+
dissolved: 'false',
|
|
796
|
+
strategy: 'partial',
|
|
797
|
+
requeued: 'none',
|
|
798
|
+
evicted_total: evictedTotal.join(',') || 'none',
|
|
799
|
+
preserved: survivors.join(',') || 'none',
|
|
800
|
+
},
|
|
801
|
+
}, now);
|
|
802
|
+
// This call requeued nothing — the caller's own eviction loop already
|
|
803
|
+
// requeued this round's evicted members before invoking dissolveBatch.
|
|
804
|
+
return { state: next, requeued: [], preserved: survivors, newBatches: [] };
|
|
805
|
+
}
|
|
661
806
|
/**
|
|
662
807
|
* Block a batch on an unreadable suite report (#562) — unlike `dissolveBatch`,
|
|
663
808
|
* nothing is requeued and nothing is reverted. The failure here is in the
|