mergestorm 0.3.47 → 0.3.48
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 +1 -1
- package/dist/stack-blockers.d.ts +2 -0
- package/dist/stack-blockers.js +10 -1
- package/dist/stack-dto.d.ts +13 -0
- package/dist/ui/banner.js +3 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ On a TTY, bare `mergestorm` (or `mergestorm shell`) opens a branded REPL: a comp
|
|
|
45
45
|
|
|
46
46
|
```
|
|
47
47
|
╭──────────────────────────────────────────────────────────────────────────────╮
|
|
48
|
-
│ ▀▀▀▀▀▀▀▀▀▀▘ mergestorm v0.3.
|
|
48
|
+
│ ▀▀▀▀▀▀▀▀▀▀▘ mergestorm v0.3.48 │
|
|
49
49
|
│ ▀▀▀▀▀▀▀▀▀ ● msk_live_… · maelstrom │
|
|
50
50
|
│ ▀▀▀▀▀▀ [████████░░░░░░░░░░░░░░░░░░░░░░] 25% used │
|
|
51
51
|
│ ▝▀▀▀▀▀ local reviews + stacked PRs · mergestorm.ai │
|
package/dist/stack-blockers.d.ts
CHANGED
|
@@ -165,6 +165,8 @@ export declare const SEAM_VERDICT_STALE = "Seam verdict is for an older head, no
|
|
|
165
165
|
export declare const VORTEX_FINDINGS_NEED_PERSON = "Vortex findings need a person";
|
|
166
166
|
export declare function autoResolveActive(stack: StackDto, layer: StackLayerDto): boolean;
|
|
167
167
|
export declare function autoFixCiActive(stack: StackDto, layer: StackLayerDto): boolean;
|
|
168
|
+
export declare const CI_DID_NOT_FINISH_BLOCKER = "CI did not finish \u2014 left for a person";
|
|
169
|
+
export declare function pendingCiLeftForPerson(stack: StackDto, layer: StackLayerDto): boolean;
|
|
168
170
|
export declare const VORTEX_AUTO_REVIEW_OFF = "Vortex auto-review is off, so this head was not reviewed";
|
|
169
171
|
export declare const VORTEX_BILLING_SKIPPED = "Vortex skipped this head: it could not confirm billing";
|
|
170
172
|
export declare const VORTEX_REVIEW_INCOMPLETE = "Vortex reviewed only part of this PR";
|
package/dist/stack-blockers.js
CHANGED
|
@@ -131,6 +131,11 @@ export function autoFixCiActive(stack, layer) {
|
|
|
131
131
|
return !stack.cycloneCiOff && !isLandPrLayer(stack, layer) &&
|
|
132
132
|
!sameHead(layer.cycloneCiHandoff?.headSha, layer.headSha);
|
|
133
133
|
}
|
|
134
|
+
export const CI_DID_NOT_FINISH_BLOCKER = "CI did not finish — left for a person";
|
|
135
|
+
export function pendingCiLeftForPerson(stack, layer) {
|
|
136
|
+
return layer.ciStatus === "pending" && !isLandPrLayer(stack, layer) &&
|
|
137
|
+
sameHead(layer.cycloneCiHandoff?.headSha, layer.headSha);
|
|
138
|
+
}
|
|
134
139
|
function ciHandoffNote(stack, layer) {
|
|
135
140
|
if (isLandPrLayer(stack, layer))
|
|
136
141
|
return null;
|
|
@@ -272,6 +277,8 @@ function layerAttention(stack, layer, queue, cursor) {
|
|
|
272
277
|
const name = layer.checks?.failingName?.trim();
|
|
273
278
|
return hardBlock(`CI failed${name ? ` — ${name}` : ""}`, "ci_failed");
|
|
274
279
|
}
|
|
280
|
+
if (pendingCiLeftForPerson(stack, layer))
|
|
281
|
+
return hardBlock(CI_DID_NOT_FINISH_BLOCKER, "ci_failed");
|
|
275
282
|
if (layer.vortexStatus === "failed" && !vortexRetryScheduled(layer) &&
|
|
276
283
|
(!layer.vortexReview?.head_sha || sameHead(layer.vortexReview.head_sha, layer.headSha))) {
|
|
277
284
|
return hardBlock(VORTEX_REVIEW_FAILED, "vortex_failed");
|
|
@@ -780,7 +787,9 @@ export function stackRepair(stack, attention, layer, bounce, queueWait = null) {
|
|
|
780
787
|
headSha: layer.headSha ?? null,
|
|
781
788
|
branch: layer.branch,
|
|
782
789
|
failingCheck,
|
|
783
|
-
steps:
|
|
790
|
+
steps: pendingCiLeftForPerson(stack, layer)
|
|
791
|
+
? `CI on ${layer.branch} at ${layer.headSha ?? "its live head"} ended cancelled or interrupted and did not finish after Cyclone's one re-run. Find the cancelled run (gh run list --branch ${layer.branch}), read why it stopped (gh run view <run-id>), and re-run it (gh run rerun <run-id>) if it was a runner or infrastructure stop. If the job itself cancels, fix that on ${layer.branch} and push. Do not retarget the PR base.`
|
|
792
|
+
: `Read the failing ${failingCheck ? `check ${failingCheck}` : "checks"} on ${layer.branch} (gh run list --branch ${layer.branch}, then gh run view <run-id> --log-failed), fix it on ${layer.branch} with the smallest patch, run that check locally, confirm the remote head is still ${layer.headSha ?? "the head you started from"}, then an ordinary git push. Do not retarget the PR base.`,
|
|
784
793
|
...(note ? { note } : {}),
|
|
785
794
|
};
|
|
786
795
|
}
|
package/dist/stack-dto.d.ts
CHANGED
|
@@ -427,12 +427,25 @@ export type MergeQueueBounceBatch = {
|
|
|
427
427
|
withPrNumbers: number[];
|
|
428
428
|
};
|
|
429
429
|
export type MergeQueueBatchState = "verifying" | "landing" | "landed" | "stopped" | "bounced" | "abandoned";
|
|
430
|
+
export type MergeQueueBatchCiCheckState = "passed" | "skipped" | "failed" | "running" | "queued";
|
|
431
|
+
export type MergeQueueBatchCiCheckDto = {
|
|
432
|
+
name: string;
|
|
433
|
+
state: MergeQueueBatchCiCheckState;
|
|
434
|
+
startedAt: string | null;
|
|
435
|
+
completedAt: string | null;
|
|
436
|
+
};
|
|
437
|
+
export type MergeQueueBatchCiDto = {
|
|
438
|
+
sha: string;
|
|
439
|
+
observedAt: string;
|
|
440
|
+
checks: MergeQueueBatchCiCheckDto[];
|
|
441
|
+
};
|
|
430
442
|
export type MergeQueueEntryBatchDto = {
|
|
431
443
|
id: string;
|
|
432
444
|
position: number;
|
|
433
445
|
size: number;
|
|
434
446
|
state: MergeQueueBatchState;
|
|
435
447
|
landedCount: number;
|
|
448
|
+
ci?: MergeQueueBatchCiDto | null;
|
|
436
449
|
};
|
|
437
450
|
export type MergeQueueAheadDto = {
|
|
438
451
|
stackId: string | null;
|
package/dist/ui/banner.js
CHANGED
|
@@ -179,6 +179,9 @@ const WHATS_NEW = {
|
|
|
179
179
|
"0.3.47": [
|
|
180
180
|
"New stack PRs are adopted on Work at submit",
|
|
181
181
|
],
|
|
182
|
+
"0.3.48": [
|
|
183
|
+
"Watch names CI Cyclone could not finish",
|
|
184
|
+
],
|
|
182
185
|
};
|
|
183
186
|
function densityFromVariant(variant) {
|
|
184
187
|
if (variant === "mini" || variant === "nano")
|
package/package.json
CHANGED