@sellable/mcp 0.1.752 → 0.1.753
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/refill-run-loop.js +23 -2
- package/package.json +1 -1
package/dist/refill-run-loop.js
CHANGED
|
@@ -78,6 +78,12 @@ const REFILL_DONE_REASONS = new Set([
|
|
|
78
78
|
"abandoned_stale_checkpoint",
|
|
79
79
|
"signal_search_provider_unavailable",
|
|
80
80
|
"exact_action_complete",
|
|
81
|
+
// fix(112ay): the fence opened, the fresh plan's head had already drifted
|
|
82
|
+
// away from the pinned action, and NOTHING executed. The pinned edge was
|
|
83
|
+
// never attempted, so this terminal must not read as a completion — the
|
|
84
|
+
// coordinator records no claim and the edge stays selectable when the
|
|
85
|
+
// planner exposes it as head again.
|
|
86
|
+
"exact_action_superseded",
|
|
81
87
|
]);
|
|
82
88
|
// fix(110-20d): a resumed scheduler wait must be mortal. Terminalize a stale
|
|
83
89
|
// checkpoint once the persisted wait entry has aged past this multiple of the
|
|
@@ -2636,11 +2642,26 @@ async function gatePlan(input, deps, ctx) {
|
|
|
2636
2642
|
// preflight/fence. Continuing inside this run misattributes later blockers
|
|
2637
2643
|
// to the original target (for example, a Signal outage reported against a
|
|
2638
2644
|
// scheduler action) and is the root of cross-action retry loops.
|
|
2639
|
-
|
|
2645
|
+
//
|
|
2646
|
+
// fix(112ay): head drift BEFORE anything executed is not a completion. Run
|
|
2647
|
+
// 5 (Dotwork td7-28): the sweep fence opened, the in-fence dated capacity
|
|
2648
|
+
// read blocked pending a credit refresh, the fresh head became
|
|
2649
|
+
// approve_messages, and this branch stamped exact_action_complete on a
|
|
2650
|
+
// sweep that NEVER RAN — the coordinator hardened that into a confirmed
|
|
2651
|
+
// claim while a directly-dispatched dated sweep placed 18 cells
|
|
2652
|
+
// immediately. Only a fence that actually executed its pinned (or
|
|
2653
|
+
// sanctioned in-fence) action may claim completion; an unexecuted pin
|
|
2654
|
+
// terminals exact_action_superseded, which records NO claim.
|
|
2655
|
+
const fenceExecutedPinnedAction = Boolean(executedAction);
|
|
2656
|
+
return completeTerminal(input, deps, ctx, fenceExecutedPinnedAction
|
|
2657
|
+
? "exact_action_complete"
|
|
2658
|
+
: "exact_action_superseded", {
|
|
2640
2659
|
expectedActionKey,
|
|
2641
2660
|
nextActionKey,
|
|
2642
2661
|
nextActionType: stringValue(action.type),
|
|
2643
|
-
guidance:
|
|
2662
|
+
guidance: fenceExecutedPinnedAction
|
|
2663
|
+
? "The pinned exact action is no longer the planner head. Return to the workspace coordinator and preflight the fresh action behind a new fence."
|
|
2664
|
+
: "The pinned exact action was superseded before this fence executed anything. No completion is claimed; return to the workspace coordinator and preflight the fresh head behind a new fence.",
|
|
2644
2665
|
plan,
|
|
2645
2666
|
});
|
|
2646
2667
|
}
|