@ai-dossier/sched 0.48.1 → 0.50.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 +94 -7
- package/dist/anchor-close.d.ts +160 -0
- package/dist/anchor-close.d.ts.map +1 -1
- package/dist/anchor-close.js +319 -36
- package/dist/anchor-close.js.map +1 -1
- package/dist/batch-dispatch.d.ts +58 -0
- package/dist/batch-dispatch.d.ts.map +1 -1
- package/dist/batch-dispatch.js +174 -41
- package/dist/batch-dispatch.js.map +1 -1
- package/dist/groundtruth.d.ts +63 -3
- package/dist/groundtruth.d.ts.map +1 -1
- package/dist/groundtruth.js +115 -14
- package/dist/groundtruth.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -5
- package/dist/index.js.map +1 -1
- package/dist/labels.d.ts +9 -0
- package/dist/labels.d.ts.map +1 -1
- package/dist/labels.js +10 -1
- package/dist/labels.js.map +1 -1
- package/dist/state.d.ts +12 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +47 -21
- package/dist/state.js.map +1 -1
- package/dist/status.d.ts +33 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +20 -1
- package/dist/status.js.map +1 -1
- package/dist/types.d.ts +20 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/anchor-close.js
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* talks to GitHub or git is injected, so tests never shell out.
|
|
24
24
|
*/
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.ANCHOR_CLOSE_BATCH_STATUSES = void 0;
|
|
26
|
+
exports.ORPHAN_SWEEP_MAX_ANCHORS = exports.ORPHAN_SWEEP_MAX_MEMBERS = exports.DEFAULT_ORPHAN_BASE_BRANCH = exports.ANCHOR_CLOSE_BATCH_STATUSES = void 0;
|
|
27
27
|
exports.openAnchorBatches = openAnchorBatches;
|
|
28
28
|
exports.formatBatchStatus = formatBatchStatus;
|
|
29
29
|
exports.anchorLedgerBlockers = anchorLedgerBlockers;
|
|
@@ -34,6 +34,12 @@ exports.anchorCloseMarker = anchorCloseMarker;
|
|
|
34
34
|
exports.renderAnchorCloseComment = renderAnchorCloseComment;
|
|
35
35
|
exports.closeAnchor = closeAnchor;
|
|
36
36
|
exports.sweepAnchors = sweepAnchors;
|
|
37
|
+
exports.parseOrphanAnchorBody = parseOrphanAnchorBody;
|
|
38
|
+
exports.classifyOrphanAnchor = classifyOrphanAnchor;
|
|
39
|
+
exports.orphanAnchorListArgs = orphanAnchorListArgs;
|
|
40
|
+
exports.sweepOrphanAnchors = sweepOrphanAnchors;
|
|
41
|
+
exports.batchAnchorStillOpen = batchAnchorStillOpen;
|
|
42
|
+
const attribution_1 = require("./attribution");
|
|
37
43
|
const labels_1 = require("./labels");
|
|
38
44
|
const state_1 = require("./state");
|
|
39
45
|
/**
|
|
@@ -155,33 +161,31 @@ function shippingEvidence(truth, baseBranch, repo, commitInBase) {
|
|
|
155
161
|
return { shipped: `commit ${closer.oid.slice(0, 12)}` };
|
|
156
162
|
}
|
|
157
163
|
/**
|
|
158
|
-
* The
|
|
159
|
-
* shipped code ({@link shippingEvidence}), none handed back
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
164
|
+
* The GitHub-only half of the member predicate: every member CLOSED as
|
|
165
|
+
* `COMPLETED` by shipped code ({@link shippingEvidence}), none handed back.
|
|
166
|
+
* No ledger involvement — `ledgerStatus` supplies each report's
|
|
167
|
+
* `ledger_status` display field only, never a disqualifier; callers that
|
|
168
|
+
* have a ledger entry to consult layer their own blockers on top (see
|
|
169
|
+
* {@link membersShippedVerdict}). Extracted so {@link classifyOrphanAnchor}
|
|
170
|
+
* can reuse the identical shipping-evidence logic for a batch that, by
|
|
171
|
+
* definition, has no ledger entry to consult.
|
|
163
172
|
*
|
|
164
|
-
* `exhaustive: false`
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
*
|
|
168
|
-
* so the operator sees each one's state. Either way a failed read stops the
|
|
169
|
-
* reads: GitHub being unreachable is not worth N more timeouts.
|
|
173
|
+
* `exhaustive: false` stops at the first disqualifying fact; `exhaustive:
|
|
174
|
+
* true` reads every member so the operator sees each one's state. Either way
|
|
175
|
+
* a failed read stops the reads: GitHub being unreachable is not worth N
|
|
176
|
+
* more timeouts.
|
|
170
177
|
*/
|
|
171
|
-
function
|
|
172
|
-
const
|
|
173
|
-
const reasons = [...(opts.extraReasons ?? []), ...anchorLedgerBlockers(state, batch)];
|
|
174
|
-
const members = batch.members.map((issue) => ({
|
|
178
|
+
function readMembersShipping(members, read, baseBranch, opts, ledgerStatus) {
|
|
179
|
+
const reports = members.map((issue) => ({
|
|
175
180
|
issue,
|
|
176
|
-
ledger_status: (
|
|
181
|
+
ledger_status: ledgerStatus(issue),
|
|
177
182
|
github: 'unknown',
|
|
178
183
|
state_reason: null,
|
|
179
184
|
shipped_by: null,
|
|
180
185
|
}));
|
|
181
|
-
|
|
182
|
-
return { kind: 'needs-operator', reasons, members };
|
|
186
|
+
const reasons = [];
|
|
183
187
|
let unreachable = null;
|
|
184
|
-
for (const member of
|
|
188
|
+
for (const member of reports) {
|
|
185
189
|
const truth = read(member.issue);
|
|
186
190
|
if (truth === undefined) {
|
|
187
191
|
unreachable = member.issue;
|
|
@@ -190,7 +194,7 @@ function membersShippedVerdict(state, batch, read, opts = {}) {
|
|
|
190
194
|
if (truth.state === 'MISSING') {
|
|
191
195
|
member.github = 'MISSING';
|
|
192
196
|
reasons.push(`member-missing:#${member.issue}`);
|
|
193
|
-
if (!exhaustive)
|
|
197
|
+
if (!opts.exhaustive)
|
|
194
198
|
break;
|
|
195
199
|
continue;
|
|
196
200
|
}
|
|
@@ -203,7 +207,7 @@ function membersShippedVerdict(state, batch, read, opts = {}) {
|
|
|
203
207
|
reasons.push(`member-closed-${(truth.stateReason ?? 'unknown').toLowerCase()}:#${member.issue}`);
|
|
204
208
|
}
|
|
205
209
|
else {
|
|
206
|
-
const evidence = shippingEvidence(truth,
|
|
210
|
+
const evidence = shippingEvidence(truth, baseBranch, opts.repo, opts.commitInBase);
|
|
207
211
|
if ('shipped' in evidence)
|
|
208
212
|
member.shipped_by = evidence.shipped;
|
|
209
213
|
else
|
|
@@ -212,17 +216,63 @@ function membersShippedVerdict(state, batch, read, opts = {}) {
|
|
|
212
216
|
if ((0, labels_1.hasLabel)(truth.labels, labels_1.DECISION_PENDING_LABEL)) {
|
|
213
217
|
reasons.push(`member-handed-back:#${member.issue}`);
|
|
214
218
|
}
|
|
215
|
-
if (reasons.length > 0 && !exhaustive)
|
|
219
|
+
if (reasons.length > 0 && !opts.exhaustive)
|
|
216
220
|
break;
|
|
217
221
|
}
|
|
222
|
+
return { reasons, members: reports, unreachable };
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* The member half of the predicate: every member CLOSED as `COMPLETED` by
|
|
226
|
+
* shipped code ({@link shippingEvidence}), none handed back, and the ledger
|
|
227
|
+
* clean. Shared by the anchor close and by `reconcileStaleBlockedBatches`'
|
|
228
|
+
* members-closed evidence, so the two can never disagree about what
|
|
229
|
+
* "shipped" means.
|
|
230
|
+
*
|
|
231
|
+
* `exhaustive: false` (the engine) stops at the first disqualifying fact and
|
|
232
|
+
* skips GitHub entirely when the ledger already disqualifies — a batch that
|
|
233
|
+
* stays blocked is re-checked every tick, so the cheap answer matters there.
|
|
234
|
+
* `exhaustive: true` (the `sched status --anchors` sweep) reads every member
|
|
235
|
+
* so the operator sees each one's state. Either way a failed read stops the
|
|
236
|
+
* reads: GitHub being unreachable is not worth N more timeouts.
|
|
237
|
+
*/
|
|
238
|
+
function membersShippedVerdict(state, batch, read, opts = {}) {
|
|
239
|
+
const exhaustive = opts.exhaustive === true;
|
|
240
|
+
const ledgerReasons = [...(opts.extraReasons ?? []), ...anchorLedgerBlockers(state, batch)];
|
|
241
|
+
if (ledgerReasons.length > 0 && !exhaustive) {
|
|
242
|
+
const members = batch.members.map((issue) => ({
|
|
243
|
+
issue,
|
|
244
|
+
ledger_status: (0, state_1.findEntry)(state, issue)?.status ?? null,
|
|
245
|
+
github: 'unknown',
|
|
246
|
+
state_reason: null,
|
|
247
|
+
shipped_by: null,
|
|
248
|
+
}));
|
|
249
|
+
return { kind: 'needs-operator', reasons: ledgerReasons, members };
|
|
250
|
+
}
|
|
251
|
+
const gh = readMembersShipping(batch.members, read, batch.base_branch, { exhaustive, repo: opts.repo, commitInBase: opts.commitInBase }, (issue) => (0, state_1.findEntry)(state, issue)?.status ?? null);
|
|
252
|
+
const reasons = [...ledgerReasons, ...gh.reasons];
|
|
218
253
|
// A known disqualifier outranks an unreachable read: whatever the missing
|
|
219
254
|
// poll would have said, the batch is not closable on this pass.
|
|
220
255
|
if (reasons.length > 0)
|
|
221
|
-
return { kind: 'needs-operator', reasons, members };
|
|
222
|
-
if (unreachable !== null) {
|
|
223
|
-
return {
|
|
256
|
+
return { kind: 'needs-operator', reasons, members: gh.members };
|
|
257
|
+
if (gh.unreachable !== null) {
|
|
258
|
+
return {
|
|
259
|
+
kind: 'unknown',
|
|
260
|
+
reasons: [`issue #${gh.unreachable} unreachable`],
|
|
261
|
+
members: gh.members,
|
|
262
|
+
};
|
|
224
263
|
}
|
|
225
|
-
return { kind: 'closable', reasons: [], members };
|
|
264
|
+
return { kind: 'closable', reasons: [], members: gh.members };
|
|
265
|
+
}
|
|
266
|
+
function anchorGroundVerdict(read, anchorIssue) {
|
|
267
|
+
const anchor = read(anchorIssue);
|
|
268
|
+
if (anchor === undefined) {
|
|
269
|
+
return { kind: 'unknown', reasons: [`anchor #${anchorIssue} unreachable`] };
|
|
270
|
+
}
|
|
271
|
+
if (anchor.state === 'CLOSED')
|
|
272
|
+
return { kind: 'anchor-closed' };
|
|
273
|
+
if (anchor.state === 'MISSING')
|
|
274
|
+
return { kind: 'anchor-missing' };
|
|
275
|
+
return { kind: 'open', handedBack: (0, labels_1.hasLabel)(anchor.labels, labels_1.DECISION_PENDING_LABEL) };
|
|
226
276
|
}
|
|
227
277
|
/**
|
|
228
278
|
* The full anchor verdict: the anchor itself first (an already-closed anchor
|
|
@@ -233,18 +283,15 @@ function classifyAnchor(state, batch, read, opts = {}) {
|
|
|
233
283
|
if (batch.anchor === null) {
|
|
234
284
|
return { kind: 'needs-operator', reasons: ['no-anchor'], members: [] };
|
|
235
285
|
}
|
|
236
|
-
const
|
|
237
|
-
if (
|
|
238
|
-
return { kind: 'unknown', reasons: [`anchor #${batch.anchor} unreachable`], members: [] };
|
|
239
|
-
}
|
|
240
|
-
if (anchor.state === 'CLOSED')
|
|
286
|
+
const ground = anchorGroundVerdict(read, batch.anchor);
|
|
287
|
+
if (ground.kind === 'anchor-closed')
|
|
241
288
|
return { kind: 'anchor-closed' };
|
|
242
|
-
if (
|
|
289
|
+
if (ground.kind === 'anchor-missing') {
|
|
243
290
|
return { kind: 'needs-operator', reasons: ['anchor-missing'], members: [] };
|
|
244
291
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
292
|
+
if (ground.kind === 'unknown')
|
|
293
|
+
return { kind: 'unknown', reasons: ground.reasons, members: [] };
|
|
294
|
+
const extraReasons = ground.handedBack ? ['anchor-handed-back'] : [];
|
|
248
295
|
return membersShippedVerdict(state, batch, read, { ...opts, extraReasons });
|
|
249
296
|
}
|
|
250
297
|
/** The idempotency marker on the anchor-close comment — one per batch. */
|
|
@@ -346,4 +393,240 @@ function sweepAnchors(state, read, opts = {}) {
|
|
|
346
393
|
}
|
|
347
394
|
return items;
|
|
348
395
|
}
|
|
396
|
+
// --- #790: orphan anchors — batches dropped from `state.batches` entirely ---
|
|
397
|
+
//
|
|
398
|
+
// `sweepAnchors` above only ever sees a batch that is still IN `state.batches`
|
|
399
|
+
// (`openAnchorBatches` filters that array). Nothing in this codebase today
|
|
400
|
+
// removes an entry from `state.batches` — `abandonBatch` dissolves a batch
|
|
401
|
+
// in place (status → `dissolved`, still swept) and the one split path
|
|
402
|
+
// (`recovery.ts`'s halved dissolve) carries the parent's `anchor` forward
|
|
403
|
+
// onto the new half-batches. The one way a batch's row is gone while its
|
|
404
|
+
// GitHub anchor stays open is `state.json` itself being lost or reset
|
|
405
|
+
// (`persist.ts`'s `load()` falls back to `createEmptyState()` when the file
|
|
406
|
+
// is missing) — exactly the imboard#4244/#4253 shape: `sched status --json`
|
|
407
|
+
// showed `batches: []` while both anchors were still open. Whatever the
|
|
408
|
+
// cause, an anchor with no ledger row is invisible to `sweepAnchors`
|
|
409
|
+
// (there is no `BatchEntry` to iterate), so this sweep is GitHub-only: list
|
|
410
|
+
// open `batch-epic` anchors directly, recover membership from the anchor's
|
|
411
|
+
// own issue body, and classify with the same shipping-evidence logic
|
|
412
|
+
// `classifyAnchor` uses.
|
|
413
|
+
/** One `- [ ] #N ...` / `- [x] #N ...` member line, plus the `base_branch: <name>` line — both written once at batch creation (per `examples/git/batch-issues-preparation.ds.md`'s Step 6 anchor-body template) and never edited afterward by any code in this repo. */
|
|
414
|
+
const ORPHAN_MEMBER_RE = /^- \[[ xX]\] #(\d+)/gm;
|
|
415
|
+
const ORPHAN_BASE_BRANCH_RE = /^base_branch:\s*(\S+)/m;
|
|
416
|
+
/** The base branch `parseOrphanAnchorBody` falls back to, and `classifyOrphanAnchor` treats as the expected/project-standard base absent an `expectedBaseBranch` override — what `gate-issue` itself defaults to. */
|
|
417
|
+
exports.DEFAULT_ORPHAN_BASE_BRANCH = 'main';
|
|
418
|
+
/** The largest issue number a GitHub GraphQL `Int!` variable accepts — a member number above this could never be a real issue, so it is dropped rather than sent to `read`. */
|
|
419
|
+
const MAX_GITHUB_ISSUE_NUMBER = 2 ** 31 - 1;
|
|
420
|
+
/**
|
|
421
|
+
* #790 (security review): the anchor body is untrusted input — anyone who can
|
|
422
|
+
* comment-and-edit an open `batch-epic` issue controls it. Without a cap, a
|
|
423
|
+
* body with thousands of checklist lines would cost thousands of GraphQL
|
|
424
|
+
* reads per sweep (`classifyOrphanAnchor` runs `exhaustive: true`), and one
|
|
425
|
+
* crafted out-of-range member number would error that member's read,
|
|
426
|
+
* `orphan-unknown` it, and abort {@link sweepOrphanAnchors}'s reads for every
|
|
427
|
+
* later anchor. Both are answered the same way: a body over the cap is
|
|
428
|
+
* reported `orphan-needs-operator` (reason `members-over-cap`) with NO reads
|
|
429
|
+
* performed at all — see {@link classifyOrphanAnchor}.
|
|
430
|
+
*/
|
|
431
|
+
exports.ORPHAN_SWEEP_MAX_MEMBERS = 50;
|
|
432
|
+
/**
|
|
433
|
+
* Recover a batch anchor's members and base branch from its own issue body —
|
|
434
|
+
* the only record left once the batch has dropped out of `state.batches`.
|
|
435
|
+
* The body is the batch-compose format (RFC-0001): one member checklist line
|
|
436
|
+
* per issue, then metadata lines including `base_branch: <name>`. Nothing in
|
|
437
|
+
* this codebase edits an anchor's body after creation (verified: no
|
|
438
|
+
* `gh issue edit ... --body` targets an anchor), so the checklist is already
|
|
439
|
+
* the complete, stable membership — a `batch-setup` runstate milestone would
|
|
440
|
+
* only repeat the same list less reliably (missing entirely for an anchor
|
|
441
|
+
* that predates runstate, or belonging to a requeued run's earlier attempt).
|
|
442
|
+
*
|
|
443
|
+
* Both fields are untrusted (#790 security review) and validated before use:
|
|
444
|
+
* a member number outside `1..MAX_GITHUB_ISSUE_NUMBER` is dropped (never sent
|
|
445
|
+
* to `read`), and `base_branch` falls back to `main` — never propagating a
|
|
446
|
+
* string {@link SAFE_REF_RE} would reject as a git ref — when the metadata
|
|
447
|
+
* line is missing OR unsafe. `main` is what `gate-issue` defaults to, so it
|
|
448
|
+
* is what `shippingEvidence` checks a closer against either way.
|
|
449
|
+
* `members_over_cap` is set (members truncated to {@link ORPHAN_SWEEP_MAX_MEMBERS})
|
|
450
|
+
* rather than silently proceeding on a partial list — the caller reports it,
|
|
451
|
+
* never reads a partial membership as if it were the whole batch.
|
|
452
|
+
*/
|
|
453
|
+
function parseOrphanAnchorBody(body) {
|
|
454
|
+
const raw = [...body.matchAll(ORPHAN_MEMBER_RE)].map((m) => Number(m[1]));
|
|
455
|
+
const valid = raw.filter((n) => Number.isInteger(n) && n > 0 && n <= MAX_GITHUB_ISSUE_NUMBER);
|
|
456
|
+
const deduped = [...new Set(valid)];
|
|
457
|
+
const members_over_cap = deduped.length > exports.ORPHAN_SWEEP_MAX_MEMBERS;
|
|
458
|
+
const members = members_over_cap ? deduped.slice(0, exports.ORPHAN_SWEEP_MAX_MEMBERS) : deduped;
|
|
459
|
+
const rawBranch = ORPHAN_BASE_BRANCH_RE.exec(body)?.[1];
|
|
460
|
+
const base_branch = rawBranch !== undefined && attribution_1.SAFE_REF_RE.test(rawBranch) ? rawBranch : exports.DEFAULT_ORPHAN_BASE_BRANCH;
|
|
461
|
+
return { members, base_branch, members_over_cap };
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Classify one orphan anchor candidate, or `null` when it turns out not to be
|
|
465
|
+
* an orphan at all — the anchor CLOSED between the GitHub list and this read
|
|
466
|
+
* (the caller only ever lists open anchors), the same list-then-read race
|
|
467
|
+
* `sweepAnchors` answers by `continue`-ing past a freshly `anchor-closed`
|
|
468
|
+
* verdict rather than reporting one. Deliberately NOT `classifyAnchor` /
|
|
469
|
+
* `membersShippedVerdict` verbatim: those consult `anchorLedgerBlockers`,
|
|
470
|
+
* which pushes `member-not-in-ledger:#N` for every member of ANY batch not
|
|
471
|
+
* in `state.batches` — for an orphan that is true by construction, so the
|
|
472
|
+
* ledger-backed predicate would answer `needs-operator` unconditionally and
|
|
473
|
+
* this sweep could never report a clean batch as a candidate. This reuses
|
|
474
|
+
* the SAME shipping-evidence logic ({@link readMembersShipping}, which is
|
|
475
|
+
* {@link shippingEvidence} plus the open/not-completed/handed-back checks)
|
|
476
|
+
* and the SAME anchor-level ground truth ({@link anchorGroundVerdict}) that
|
|
477
|
+
* `classifyAnchor` uses — the ledger check is the one piece structurally
|
|
478
|
+
* inapplicable to something not in the ledger.
|
|
479
|
+
*/
|
|
480
|
+
function classifyOrphanAnchor(candidate, read, opts = {}) {
|
|
481
|
+
const ground = anchorGroundVerdict(read, candidate.anchor);
|
|
482
|
+
if (ground.kind === 'anchor-closed') {
|
|
483
|
+
// The caller lists only OPEN anchors, so this is a list-then-read race
|
|
484
|
+
// (closed between the list and this read) — same non-event as
|
|
485
|
+
// `sweepAnchors`'s `if (verdict.kind === 'anchor-closed') continue`, so
|
|
486
|
+
// the sweep skips it too rather than reporting a stale action item.
|
|
487
|
+
return null;
|
|
488
|
+
}
|
|
489
|
+
if (ground.kind === 'anchor-missing') {
|
|
490
|
+
return { kind: 'orphan-needs-operator', reasons: ['anchor-missing'], members: [] };
|
|
491
|
+
}
|
|
492
|
+
if (ground.kind === 'unknown') {
|
|
493
|
+
return { kind: 'orphan-unknown', reasons: ground.reasons, members: [] };
|
|
494
|
+
}
|
|
495
|
+
if (candidate.members.length === 0) {
|
|
496
|
+
return { kind: 'orphan-needs-operator', reasons: ['no-members-recovered'], members: [] };
|
|
497
|
+
}
|
|
498
|
+
// #790 security review: a body truncated at the member cap is a PARTIAL
|
|
499
|
+
// membership — reading and clearing those members would be evidence about
|
|
500
|
+
// the wrong batch. Refuse without a single GitHub read.
|
|
501
|
+
if (candidate.members_over_cap === true) {
|
|
502
|
+
return { kind: 'orphan-needs-operator', reasons: ['members-over-cap'], members: [] };
|
|
503
|
+
}
|
|
504
|
+
// #790 review: `base_branch` is parsed from the same untrusted body as
|
|
505
|
+
// `members` — `parseOrphanAnchorBody` already refuses a syntactically
|
|
506
|
+
// UNSAFE value (falls back to `main`), but a syntactically valid one that
|
|
507
|
+
// simply names a DIFFERENT branch is not thereby trustworthy: it decides
|
|
508
|
+
// what counts as "shipped" (`shippingEvidence`), so a value that does not
|
|
509
|
+
// match the project's expected base is never allowed to produce
|
|
510
|
+
// `orphan-closable-candidate` — needs-operator, unconditionally, citing the
|
|
511
|
+
// value, so a human confirms it rather than the sweep silently trusting an
|
|
512
|
+
// editable issue field to pick which branch code must land on to count.
|
|
513
|
+
const expectedBase = opts.expectedBaseBranch ?? exports.DEFAULT_ORPHAN_BASE_BRANCH;
|
|
514
|
+
if (candidate.base_branch !== expectedBase) {
|
|
515
|
+
return {
|
|
516
|
+
kind: 'orphan-needs-operator',
|
|
517
|
+
reasons: [`base-branch-nonstandard:${candidate.base_branch}`],
|
|
518
|
+
members: [],
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
const extraReasons = ground.handedBack ? ['anchor-handed-back'] : [];
|
|
522
|
+
const gh = readMembersShipping(candidate.members, read, candidate.base_branch, { exhaustive: true, repo: opts.repo, commitInBase: opts.commitInBase }, () => null);
|
|
523
|
+
const reasons = [...extraReasons, ...gh.reasons];
|
|
524
|
+
if (reasons.length > 0) {
|
|
525
|
+
return { kind: 'orphan-needs-operator', reasons, members: gh.members };
|
|
526
|
+
}
|
|
527
|
+
if (gh.unreachable !== null) {
|
|
528
|
+
return {
|
|
529
|
+
kind: 'orphan-unknown',
|
|
530
|
+
reasons: [`issue #${gh.unreachable} unreachable`],
|
|
531
|
+
members: gh.members,
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
return { kind: 'orphan-closable-candidate', reasons: [], members: gh.members };
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* The exact `gh issue list` argv for the #790 orphan lister — exported so
|
|
538
|
+
* the CLI's real lister (`orphanAnchorListerFor`, `cli/src/commands/sched.ts`)
|
|
539
|
+
* and this package's own tests build the SAME command from ONE definition
|
|
540
|
+
* (#790 review: the earlier AC6 test built its own copy of this argv, so a
|
|
541
|
+
* future change to the production command would not have been caught by
|
|
542
|
+
* it). Read-only by construction — `gh issue list` never writes.
|
|
543
|
+
*/
|
|
544
|
+
function orphanAnchorListArgs(repo, limit) {
|
|
545
|
+
return [
|
|
546
|
+
'issue',
|
|
547
|
+
'list',
|
|
548
|
+
'--label',
|
|
549
|
+
labels_1.BATCH_ANCHOR_LABEL,
|
|
550
|
+
'--state',
|
|
551
|
+
'open',
|
|
552
|
+
'-R',
|
|
553
|
+
repo,
|
|
554
|
+
'--json',
|
|
555
|
+
'number,title,body',
|
|
556
|
+
'--limit',
|
|
557
|
+
String(limit),
|
|
558
|
+
];
|
|
559
|
+
}
|
|
560
|
+
/** `sched status --anchors`' orphan sweep (#790): bounded read cost per run — a GitHub-side sweep must never grow with the repo's total anchor count. */
|
|
561
|
+
exports.ORPHAN_SWEEP_MAX_ANCHORS = 20;
|
|
562
|
+
/**
|
|
563
|
+
* `sched status --anchors`' orphan sweep (#790): every open `batch-epic`
|
|
564
|
+
* anchor in the pinned project repo whose batch is no longer in
|
|
565
|
+
* `state.batches` — invisible to {@link sweepAnchors}, which only walks the
|
|
566
|
+
* ledger. Report-only by construction, exactly like `sweepAnchors`: `list`
|
|
567
|
+
* and `read` are both pure lookups with no write capability, so this
|
|
568
|
+
* function has no way to close, comment on, label, or edit anything — it
|
|
569
|
+
* only ever builds and returns {@link OrphanAnchorReportItem} rows.
|
|
570
|
+
*
|
|
571
|
+
* `null` means the list itself failed (an unverified repo, or `gh`
|
|
572
|
+
* unreachable) — distinct from `{items: [], truncated: false}` ("asked,
|
|
573
|
+
* found zero orphans"), the same null-vs-empty convention
|
|
574
|
+
* `StatusReport.anchors`/`orphan_anchors` already use for "the sweep did not
|
|
575
|
+
* run at all". Ledger-tracked anchors are excluded BEFORE the
|
|
576
|
+
* {@link ORPHAN_SWEEP_MAX_ANCHORS} cap is applied — a busy repo with 20+ open
|
|
577
|
+
* ledger-tracked `batch-epic` anchors must not let them crowd out the
|
|
578
|
+
* orphans this sweep exists to find; `truncated=true` when the cap still
|
|
579
|
+
* left real orphan candidates unprobed. Classifying stops at the first
|
|
580
|
+
* failed member/anchor read (the same fail-closed posture as
|
|
581
|
+
* `sweepAnchors`): every anchor after that point is reported `orphan-unknown`
|
|
582
|
+
* without a further call.
|
|
583
|
+
*/
|
|
584
|
+
function sweepOrphanAnchors(state, list, read, opts = {}) {
|
|
585
|
+
const anchors = list();
|
|
586
|
+
if (anchors === undefined)
|
|
587
|
+
return null;
|
|
588
|
+
const ledgerAnchors = new Set(state.batches.map((b) => b.anchor).filter((a) => a !== null));
|
|
589
|
+
const orphanCandidates = anchors.filter((issue) => !ledgerAnchors.has(issue.number));
|
|
590
|
+
const truncated = orphanCandidates.length > exports.ORPHAN_SWEEP_MAX_ANCHORS;
|
|
591
|
+
const items = [];
|
|
592
|
+
let aborted = false;
|
|
593
|
+
for (const issue of orphanCandidates.slice(0, exports.ORPHAN_SWEEP_MAX_ANCHORS)) {
|
|
594
|
+
const { members, base_branch, members_over_cap } = parseOrphanAnchorBody(issue.body);
|
|
595
|
+
const verdict = aborted
|
|
596
|
+
? { kind: 'orphan-unknown', reasons: ['GitHub unreachable — sweep aborted'], members: [] }
|
|
597
|
+
: classifyOrphanAnchor({ anchor: issue.number, members, base_branch, members_over_cap }, read, opts);
|
|
598
|
+
if (verdict === null)
|
|
599
|
+
continue; // closed between the list and this read — not an orphan
|
|
600
|
+
if (verdict.kind === 'orphan-unknown')
|
|
601
|
+
aborted = true;
|
|
602
|
+
items.push({
|
|
603
|
+
anchor: issue.number,
|
|
604
|
+
title: issue.title,
|
|
605
|
+
verdict: verdict.kind,
|
|
606
|
+
reasons: verdict.reasons,
|
|
607
|
+
members: verdict.members,
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
return { items, truncated };
|
|
611
|
+
}
|
|
612
|
+
// --- #790: warn (never refuse) when a batch with an open anchor is dropped ---
|
|
613
|
+
/**
|
|
614
|
+
* Whether dissolving `batch` (`sched abandon --batch`) should warn an
|
|
615
|
+
* operator: its anchor is set and, per `read`, still OPEN. Pure predicate —
|
|
616
|
+
* the CLI performs the actual GitHub read and the print/journal side effect
|
|
617
|
+
* (`sched abandon --batch`'s handler). `null` covers both "no anchor to warn
|
|
618
|
+
* about" and "read failed / anchor already closed or missing" alike: this
|
|
619
|
+
* function only ever tells the caller whether to warn, never why not to —
|
|
620
|
+
* `abandonBatch` itself must NEVER refuse over this (#790: refusing would
|
|
621
|
+
* wedge exactly the cleanup `abandon` exists for).
|
|
622
|
+
*/
|
|
623
|
+
function batchAnchorStillOpen(batch, read) {
|
|
624
|
+
if (batch.anchor === null)
|
|
625
|
+
return null;
|
|
626
|
+
// Reuses `anchorGroundVerdict` (the same anchor-level read `classifyAnchor`
|
|
627
|
+
// and `classifyOrphanAnchor` use) rather than re-deriving "is it OPEN"
|
|
628
|
+
// ourselves — `kind === 'open'` is exactly `truth.state === 'OPEN'`, one
|
|
629
|
+
// ground-truth read of the anchor shared by all three call sites.
|
|
630
|
+
return anchorGroundVerdict(read, batch.anchor).kind === 'open' ? batch.anchor : null;
|
|
631
|
+
}
|
|
349
632
|
//# sourceMappingURL=anchor-close.js.map
|
package/dist/anchor-close.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-close.js","sourceRoot":"","sources":["../src/anchor-close.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anchor-close.js","sourceRoot":"","sources":["../src/anchor-close.ts"],"names":[],"mappings":"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"}
|
package/dist/batch-dispatch.d.ts
CHANGED
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
* before returning, so a member's first command is never the one that
|
|
62
62
|
* discovers `node_modules` is missing (`env-cold`, `docs/agent-traps.md`).
|
|
63
63
|
*/
|
|
64
|
+
import { type CommitInBase, type IssueCloseReader } from './anchor-close';
|
|
64
65
|
import { type ResolvedDispatch, type SpawnDeps } from './dispatch';
|
|
65
66
|
import { type GroundTruth } from './groundtruth';
|
|
66
67
|
import { type Journal } from './journal';
|
|
@@ -237,6 +238,63 @@ export declare function resumeBlockedGate(deps: BatchDispatchDeps, config: Sched
|
|
|
237
238
|
blockedBy?: 'inconclusive' | 'unevidenced-failure';
|
|
238
239
|
detail?: string;
|
|
239
240
|
};
|
|
241
|
+
/**
|
|
242
|
+
* #686: reconcile a `blocked` batch whose work demonstrably shipped anyway.
|
|
243
|
+
* `reconcilePrWatch` above only watches `awaiting-merge` batches, and
|
|
244
|
+
* `resumeBlockedGate` only re-runs the gate — so a batch blocked on a stale
|
|
245
|
+
* verdict (the concrete case: `gate-inconclusive:test.focused`, itself often
|
|
246
|
+
* a #690-declined gate TIMEOUT) whose PR merged out of band — or whose every
|
|
247
|
+
* member commit is already in the base — stayed blocked FOREVER: no report,
|
|
248
|
+
* no teardown, an operator-visible `blocked` row, and members stuck
|
|
249
|
+
* `in-work`. Sibling of the per-issue `reconcileStaleFailedParks`
|
|
250
|
+
* (engine.ts) under the same principle: ground truth beats the ledger, for
|
|
251
|
+
* ANY stale verdict — the blocked_reason is deliberately not examined.
|
|
252
|
+
*
|
|
253
|
+
* Evidence (cheapest first): the batch PR is MERGED with a real timestamp (a
|
|
254
|
+
* merged batch PR contains the whole batch branch) — including one
|
|
255
|
+
* `batch.pr` never recorded at all (#789): when `pr === null`, before falling
|
|
256
|
+
* through to the weaker branch/members evidence below, look for exactly one
|
|
257
|
+
* MERGED PR whose head is the batch branch (`imboard#4255`, a hand-opened PR
|
|
258
|
+
* the ledger never saw). Positive evidence only — zero candidates changes
|
|
259
|
+
* nothing, more than one is `ambiguous` and journaled rather than guessed —
|
|
260
|
+
* or the batch branch has fully landed in the base branch. A survivability
|
|
261
|
+
* guard applies to every path (see `everySurvivingMemberDispatched`) — a
|
|
262
|
+
* batch with a surviving member that was never dispatched is not
|
|
263
|
+
* reconcilable.
|
|
264
|
+
*
|
|
265
|
+
* On reconcile the batch joins the SAME rail a normally-merged batch takes:
|
|
266
|
+
* `blocked → merged → deployed` (the `blocked → merged` edge exists for
|
|
267
|
+
* exactly this caller), surviving members walked to `done` along legal
|
|
268
|
+
* edges, and — when the batch now carries a PR (recorded before or detected
|
|
269
|
+
* here) — the ordinary `deployed` machinery dispatches the report agent next
|
|
270
|
+
* tick, with teardown after `batch-report done`. With no PR at all no report
|
|
271
|
+
* agent can be prompted (it names the PR), so the same lock continues
|
|
272
|
+
* `deployed → reported → done` and the worktree is torn down here instead;
|
|
273
|
+
* the journal line says why no report agent was dispatched rather than
|
|
274
|
+
* leaving the gap silent.
|
|
275
|
+
*
|
|
276
|
+
* Bounded by construction: only `blocked` batches within the window are
|
|
277
|
+
* examined, the PR check is one `gh` call, git runs only when PR evidence
|
|
278
|
+
* didn't already reconcile, and a reconciled batch leaves `blocked` — the
|
|
279
|
+
* one journal line fires on the one-way transition, never per-tick (the
|
|
280
|
+
* #632 lesson: no journal inside a loop that doesn't terminate the unit).
|
|
281
|
+
*/
|
|
282
|
+
export declare function reconcileStaleBlockedBatches(deps: BatchDispatchDeps, now: Date, result: BatchTickResult, anchorCtx: AnchorTickContext | undefined): void;
|
|
283
|
+
/**
|
|
284
|
+
* #768: what one tick's anchor work reads GitHub and git through — built once
|
|
285
|
+
* per tick so the stale-blocked reconcile and the anchor close never read the
|
|
286
|
+
* same issue twice in a tick. `undefined` when the tick cannot verify anything
|
|
287
|
+
* (no issue-closure ground truth, or no verified `anchorRepo`): then neither
|
|
288
|
+
* pass acts at all.
|
|
289
|
+
*/
|
|
290
|
+
interface AnchorTickContext {
|
|
291
|
+
repo: string;
|
|
292
|
+
/** Cached for the tick — the verdict passes. */
|
|
293
|
+
read: IssueCloseReader;
|
|
294
|
+
/** Uncached — the re-read immediately before an irreversible close. */
|
|
295
|
+
readFresh: IssueCloseReader;
|
|
296
|
+
commitInBase: CommitInBase;
|
|
297
|
+
}
|
|
240
298
|
/**
|
|
241
299
|
* How a batch should dispatch its members (#809) — decided once, at the
|
|
242
300
|
* `ready → executing` claim, and persisted on `BatchEntry.member_dispatch`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-dispatch.d.ts","sourceRoot":"","sources":["../src/batch-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;
|
|
1
|
+
{"version":3,"file":"batch-dispatch.d.ts","sourceRoot":"","sources":["../src/batch-dispatch.ts"],"names":[],"mappings":"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"}
|