@sellable/mcp 0.1.853 → 0.1.855

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.
@@ -57,13 +57,13 @@ export declare function refillV3CampaignWorkActionKey(params: {
57
57
  /**
58
58
  * A preparation launch must be recorded before its asynchronous work settles
59
59
  * so the selected lane remains owned. That pre-settlement receipt deliberately
60
- * makes no progress claim. When the authoritative post-settlement campaign
61
- * count increases, persist a SECOND run-scoped receipt under this derived key.
60
+ * makes no progress claim. When authoritative post-settlement campaign counts
61
+ * are available, persist a SECOND run-scoped receipt under this derived key;
62
+ * equal counts are an explicit settled/no-progress marker.
62
63
  *
63
64
  * Keeping the attestation additive matters: replaying the earlier ownership
64
- * write can never downgrade a real progress receipt back to no-progress, while
65
- * the original same-evidence receipt still suppresses an identical authority
66
- * replay.
65
+ * write can never downgrade or erase the settlement marker, while the original
66
+ * same-evidence receipt still suppresses an identical authority replay.
67
67
  */
68
68
  export declare function refillV3CampaignWorkSettlementProgressActionKey(params: {
69
69
  action: RefillV3CampaignWorkReceiptAction;
@@ -65,13 +65,13 @@ export function refillV3CampaignWorkActionKey(params) {
65
65
  /**
66
66
  * A preparation launch must be recorded before its asynchronous work settles
67
67
  * so the selected lane remains owned. That pre-settlement receipt deliberately
68
- * makes no progress claim. When the authoritative post-settlement campaign
69
- * count increases, persist a SECOND run-scoped receipt under this derived key.
68
+ * makes no progress claim. When authoritative post-settlement campaign counts
69
+ * are available, persist a SECOND run-scoped receipt under this derived key;
70
+ * equal counts are an explicit settled/no-progress marker.
70
71
  *
71
72
  * Keeping the attestation additive matters: replaying the earlier ownership
72
- * write can never downgrade a real progress receipt back to no-progress, while
73
- * the original same-evidence receipt still suppresses an identical authority
74
- * replay.
73
+ * write can never downgrade or erase the settlement marker, while the original
74
+ * same-evidence receipt still suppresses an identical authority replay.
75
75
  */
76
76
  export function refillV3CampaignWorkSettlementProgressActionKey(params) {
77
77
  return `${refillV3CampaignWorkActionKey(params)}:settlement-progress`;
@@ -432,8 +432,10 @@ export type RefillV3ContinueDependencies = {
432
432
  effectFingerprint: string;
433
433
  /**
434
434
  * Authoritative counts read around this exact authority's settlement.
435
- * Presence means the route writes an additive product-progress attestation;
436
- * absence means the original pre-settlement ownership/no-repeat receipt.
435
+ * Presence writes an additive settlement receipt: an increase remains
436
+ * useful campaign reporting, while an unchanged count proves the bounded
437
+ * cohort settled without campaign-message progress. Exact-lane usefulness
438
+ * is decided only by the next fresh world-state observation.
437
439
  */
438
440
  settlementProgress?: {
439
441
  generatedMessagesBefore: number;
@@ -1405,16 +1405,16 @@ async function executeRefillV3Continuation(input, dependencies) {
1405
1405
  const messageCountDelta = messageCountBefore === null || messageCountAfter === null
1406
1406
  ? null
1407
1407
  : messageCountAfter - messageCountBefore;
1408
- // V32-GALLEY-SETTLEMENT-PROGRESS-001: the receipt above MUST land before
1408
+ // V32-GALLEY-SETTLEMENT-PROGRESS-001 / LANE-PROGRESS-002: the receipt above MUST land before
1409
1409
  // settlement to retain lane ownership, so it cannot yet claim that an async
1410
1410
  // cohort produced anything. Once the same continuation has waited to idle
1411
- // and authoritative campaign counts prove an increase, write a separate
1412
- // progress attestation. The run-level futile-cycle bound resets from this
1413
- // receipt instead of falsely exhausting a campaign after three later
1414
- // placement refusals despite +3/+1/+1 newly generated messages.
1411
+ // and authoritative campaign counts are available, write a separate
1412
+ // settlement attestation. Campaign-wide message growth is reported here but
1413
+ // cannot by itself reset an exact sender/date/lane bound; the next advance's
1414
+ // fresh lane census decides whether the cohort produced placeable work.
1415
1415
  if (messageCountBefore !== null &&
1416
1416
  messageCountAfter !== null &&
1417
- messageCountAfter > messageCountBefore &&
1417
+ messageCountAfter >= messageCountBefore &&
1418
1418
  campaignWorkReceiptInput &&
1419
1419
  dependencies.persistCampaignWorkReceipt) {
1420
1420
  const progressReceiptInput = campaignWorkReceiptInput;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.853",
3
+ "version": "0.1.855",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code, Codex, and Hermes campaign workflows",
6
6
  "main": "dist/index.js",
@@ -626,6 +626,11 @@ per scoped sender/date/lane—not only the headline deferral or blocker. Include
626
626
  `scheduledDelta`. A cumulative observation or one surfaced blocker is never a
627
627
  row-complete terminal summary.
628
628
 
629
+ Lead every row-complete terminal summary by stating that all scoped
630
+ sender/date/lane rows were explored. Never say the workspace "stopped on" one
631
+ sender or headline blocker: that blocker classifies one row after independent
632
+ sibling work was explored; it is not the traversal stop.
633
+
629
634
  Resolve the workspace BEFORE the first call, exactly as the V1 route already
630
635
  requires. `workspaceId` must be an exact id on every automation call: when the
631
636
  operator names a workspace, call `list_workspaces` first and match that name to
@@ -476,6 +476,11 @@ sender/date/lane—not only the headline deferral or blocker. Include
476
476
  `scheduledDelta`. A cumulative observation or one surfaced blocker is never a
477
477
  row-complete terminal summary.
478
478
 
479
+ Lead every row-complete terminal summary by stating that all scoped
480
+ sender/date/lane rows were explored. Never say the workspace "stopped on" one
481
+ sender or headline blocker: that blocker classifies one row after independent
482
+ sibling work was explored; it is not the traversal stop.
483
+
479
484
  This workflow chooses nothing. It never reads capacity, supply, family, or reason
480
485
  fields to decide what to do next; never declares a terminal, an exhaustion
481
486
  verdict, or a health classification; never holds a counter or a cursor between
@@ -240,7 +240,7 @@
240
240
  "then": "call the advance tool again with the identical workspaceId, scope, and yolo grant",
241
241
  "note": "This is a bounded read-only wait inherited from Create Campaign. It holds the same campaign while its cells settle; it never authorizes selecting a sibling. A partial timeout returns to fresh advance, and the same deferral may authorize another bounded wait. NOTE on run identity: awaiting_external_change is a terminal, so the server already CLOSED the run and returned no runToken. The advance after this wait therefore omits runToken and opens a new run, which starts with zero progress-free campaign visits and zero retryable paid attempts."
242
242
  },
243
- "then": "for any other deferral code, stop and report the scoped wait plus every scoped sender/date/lane row from terminalEvidence.rows; never summarize only the headline deferral"
243
+ "then": "for any other deferral code, stop and report the scoped wait plus every scoped sender/date/lane row from terminalEvidence.rows; state that all scoped sender/date/lane rows were explored; never say the workspace \"stopped on\" the headline deferral"
244
244
  },
245
245
  "complete": {
246
246
  "alreadyExecuted": false,
@@ -260,7 +260,7 @@
260
260
  "terminalEvidence.rows[].approvedDelta",
261
261
  "terminalEvidence.rows[].scheduledDelta"
262
262
  ],
263
- "then": "stop and report the terminal code plus every scoped sender/date/lane row from terminalEvidence.rows"
263
+ "then": "stop and report the terminal code plus every scoped sender/date/lane row from terminalEvidence.rows; state that all scoped sender/date/lane rows were explored; never say the workspace \"stopped on\" the headline terminal"
264
264
  },
265
265
  "blocked": {
266
266
  "alreadyExecuted": false,
@@ -283,7 +283,7 @@
283
283
  "terminalEvidence.rows[].approvedDelta",
284
284
  "terminalEvidence.rows[].scheduledDelta"
285
285
  ],
286
- "then": "stop and report the typed business blocker plus every scoped sender/date/lane row from terminalEvidence.rows"
286
+ "then": "stop and report the typed business blocker plus every scoped sender/date/lane row from terminalEvidence.rows; state that all scoped sender/date/lane rows were explored; never say the workspace \"stopped on\" the headline blocker"
287
287
  }
288
288
  },
289
289
  "forbidden": [