instar 1.3.504 → 1.3.506

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.
Files changed (43) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +46 -0
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/AutonomousSessions.d.ts +19 -0
  5. package/dist/core/AutonomousSessions.d.ts.map +1 -1
  6. package/dist/core/AutonomousSessions.js +71 -0
  7. package/dist/core/AutonomousSessions.js.map +1 -1
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +34 -1
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/core/TransferByNickname.d.ts +11 -0
  12. package/dist/core/TransferByNickname.d.ts.map +1 -1
  13. package/dist/core/TransferByNickname.js +29 -6
  14. package/dist/core/TransferByNickname.js.map +1 -1
  15. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  16. package/dist/core/devGatedFeatures.js +6 -0
  17. package/dist/core/devGatedFeatures.js.map +1 -1
  18. package/dist/core/time-claim.d.ts +57 -0
  19. package/dist/core/time-claim.d.ts.map +1 -0
  20. package/dist/core/time-claim.js +167 -0
  21. package/dist/core/time-claim.js.map +1 -0
  22. package/dist/messaging/OutboundAdvisory.d.ts +20 -2
  23. package/dist/messaging/OutboundAdvisory.d.ts.map +1 -1
  24. package/dist/messaging/OutboundAdvisory.js +37 -1
  25. package/dist/messaging/OutboundAdvisory.js.map +1 -1
  26. package/dist/monitoring/SessionReaper.d.ts +27 -0
  27. package/dist/monitoring/SessionReaper.d.ts.map +1 -1
  28. package/dist/monitoring/SessionReaper.js +41 -2
  29. package/dist/monitoring/SessionReaper.js.map +1 -1
  30. package/dist/scaffold/templates.d.ts.map +1 -1
  31. package/dist/scaffold/templates.js +4 -2
  32. package/dist/scaffold/templates.js.map +1 -1
  33. package/dist/server/routes.d.ts.map +1 -1
  34. package/dist/server/routes.js +96 -9
  35. package/dist/server/routes.js.map +1 -1
  36. package/package.json +1 -1
  37. package/src/data/builtin-manifest.json +64 -64
  38. package/src/scaffold/templates.ts +4 -2
  39. package/src/templates/scripts/telegram-reply.sh +28 -8
  40. package/upgrades/1.3.505.md +57 -0
  41. package/upgrades/1.3.506.md +63 -0
  42. package/upgrades/side-effects/multi-machine-seamlessness-ws12-ws14.md +197 -0
  43. package/upgrades/side-effects/time-claim-advisory.md +177 -0
@@ -30,6 +30,17 @@ export interface TransferByNicknameState {
30
30
  now: () => number;
31
31
  /** Minimum ms between placement updates per topic. Default 10000. */
32
32
  minUpdateIntervalMs?: number;
33
+ /**
34
+ * WS1.4 (MULTI-MACHINE-SEAMLESSNESS-SPEC): a LIVE autonomous run on this
35
+ * topic on THIS machine, or null when none. Evaluated FIRST among the
36
+ * consent gates (before offline/mid-reply) — moving a topic out from under
37
+ * an in-flight autonomous run suspends real work, so it always requires
38
+ * explicit confirmation. Optional for backward compatibility.
39
+ */
40
+ autonomousRunActive?: (sessionKey: string) => {
41
+ goal: string | null;
42
+ remainingMinutes: number | null;
43
+ } | null;
33
44
  }
34
45
  export type TransferPlanAction = 'transfer' | 'noop' | 'confirm-required' | 'reject';
35
46
  export interface TransferPlan {
@@ -1 +1 @@
1
- {"version":3,"file":"TransferByNickname.d.ts","sourceRoot":"","sources":["../../src/core/TransferByNickname.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,mFAAmF;IACnF,cAAc,EAAE,MAAM,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,6FAA6F;IAC7F,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,gFAAgF;IAChF,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,0BAA0B,GAAG,cAAc,CAAC;IAC3D,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CA+CjI"}
1
+ {"version":3,"file":"TransferByNickname.d.ts","sourceRoot":"","sources":["../../src/core/TransferByNickname.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,uBAAuB;IACtC,yFAAyF;IACzF,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,mFAAmF;IACnF,cAAc,EAAE,MAAM,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACtD,6FAA6F;IAC7F,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACrD,gFAAgF;IAChF,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/G;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,MAAM,GAAG,kBAAkB,GAAG,QAAQ,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,0BAA0B,GAAG,cAAc,CAAC;IAC3D,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CAsEjI"}
@@ -44,17 +44,40 @@ export function planTransferByNickname(command, state, sessionKey) {
44
44
  if (last != null && state.now() - last < minInterval) {
45
45
  return { action: 'reject', sessionKey, targetMachine: target, rejectReason: 'rate-limited' };
46
46
  }
47
- // Confirmation gate (§L4): offline target, OR a different owner while mid-reply.
47
+ // Consent gates ALL applicable conditions are evaluated and STACKED into
48
+ // ONE prompt, so confirming is always informed consent to everything that is
49
+ // actually true (a confirm given for the autonomous-run prompt must never
50
+ // silently consent to an offline target the user was not shown — second-pass
51
+ // finding, 2026-06-13). The WS1.4 autonomous-run condition leads (spec
52
+ // precedence: it fires at transfer-request time, before any move mechanics);
53
+ // `detail` carries every condition, '+'-joined, so callers can see exactly
54
+ // what a confirm consents to.
55
+ const consents = [];
56
+ const run = state.autonomousRunActive?.(sessionKey) ?? null;
57
+ if (run) {
58
+ const remaining = run.remainingMinutes != null ? `, ~${run.remainingMinutes} minutes remaining` : '';
59
+ consents.push({
60
+ detail: 'autonomous-run-in-flight',
61
+ prompt: `There's an autonomous run in flight on this topic${remaining}${run.goal ? ` (goal: ${run.goal})` : ''} — moving will pause it at the next turn boundary and carry its state over.`,
62
+ });
63
+ }
48
64
  if (!state.isOnline(target)) {
49
- return {
50
- action: 'confirm-required', sessionKey, targetMachine: target, setPin: true,
51
- confirmationPrompt: `${command.nickname} is offline right now. Move this conversation there anyway? It'll pick up like a fresh-session catch-up once it's back.`,
52
- };
65
+ consents.push({
66
+ detail: 'target-offline',
67
+ prompt: `${command.nickname} is offline right now it'll pick up like a fresh-session catch-up once it's back.`,
68
+ });
53
69
  }
54
70
  if (owner != null && owner !== target && state.isMidReply(sessionKey)) {
71
+ consents.push({
72
+ detail: 'mid-reply',
73
+ prompt: `I'm mid-reply — it'll be like a fresh-session catch-up on the other machine.`,
74
+ });
75
+ }
76
+ if (consents.length > 0) {
55
77
  return {
56
78
  action: 'confirm-required', sessionKey, targetMachine: target, setPin: true,
57
- confirmationPrompt: `Move this to ${command.nickname}? I'm mid-reply — it'll be like a fresh-session catch-up on the other machine.`,
79
+ detail: consents.map((c) => c.detail).join('+'),
80
+ confirmationPrompt: `${consents.map((c) => c.prompt).join(' Also: ')} Move to ${command.nickname} anyway?`,
58
81
  };
59
82
  }
60
83
  return { action: 'transfer', sessionKey, targetMachine: target, setPin: true };
@@ -1 +1 @@
1
- {"version":3,"file":"TransferByNickname.js","sourceRoot":"","sources":["../../src/core/TransferByNickname.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA4CH,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAwB,EAAE,KAA8B,EAAE,UAAkB;IACjH,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,0BAA0B,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IACtJ,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAE/C,4EAA4E;IAC5E,8EAA8E;IAC9E,2EAA2E;IAC3E,wEAAwE;IACxE,8EAA8E;IAC9E,sEAAsE;IACtE,0EAA0E;IAC1E,cAAc;IACd,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IAC1G,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;QAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC;IACjH,CAAC;IAED,0EAA0E;IAC1E,6EAA6E;IAC7E,4CAA4C;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,IAAI,8BAA8B,CAAC;IAChF,MAAM,IAAI,GAAG,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,WAAW,EAAE,CAAC;QACrD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/F,CAAC;IAED,iFAAiF;IACjF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;YAC3E,kBAAkB,EAAE,GAAG,OAAO,CAAC,QAAQ,yHAAyH;SACjK,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,OAAO;YACL,MAAM,EAAE,kBAAkB,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;YAC3E,kBAAkB,EAAE,gBAAgB,OAAO,CAAC,QAAQ,gFAAgF;SACrI,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"TransferByNickname.js","sourceRoot":"","sources":["../../src/core/TransferByNickname.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAmE/C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,sBAAsB,GACtB,cAAc,GACd,iBAAiB,GACjB,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAoHnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
1
+ {"version":3,"file":"devGatedFeatures.d.ts","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,eAAe,EA2E/C,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,sBAAsB,GACtB,cAAc,GACd,iBAAiB,GACjB,0BAA0B,CAAC;AAE/B,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAAiB,EAoHnD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAO5E"}
@@ -90,6 +90,12 @@ export const DEV_GATED_FEATURES = [
90
90
  description: 'Topic Profile — per-topic model/thinking/framework pins (TOPIC-PROFILE-SPEC).',
91
91
  justification: 'Gate covers the WRITE path only (reads are always-on O(1) resolution) and ships dryRun:true (§14 shadow-field — logs intended respawns, performs none); no spend, no destructive action while the dry-run canary holds.',
92
92
  },
93
+ {
94
+ name: 'outboundAdvisoryTimeClaim',
95
+ configPath: 'messaging.outboundAdvisory.timeClaim.enabled',
96
+ description: 'TIME_CLAIM outbound advisory — flags elapsed/remaining/percent claims that contradict the live session clock (operator mandate 2026-06-12).',
97
+ justification: 'Deterministic regex check feeding the existing inform-only advisory surface (never blocks; sender fixes or acks); no LLM, no egress, no spend, no destructive action.',
98
+ },
93
99
  ];
94
100
  export const DARK_GATE_EXCLUSIONS = [
95
101
  // ── destructive — kills/deletes on a heuristic; off + dry-run for EVERYONE ──
@@ -1 +1 @@
1
- {"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"devGatedFeatures.js","sourceRoot":"","sources":["../../src/core/devGatedFeatures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * time-claim.ts — deterministic detector for elapsed/remaining/percent time
3
+ * claims that contradict the live session clock of the sending topic's active
4
+ * time-boxed (autonomous) session.
5
+ *
6
+ * Founding incident (2026-06-12, topic 13481): an autonomous progress report
7
+ * claimed "~7h elapsed / 24h total" when the run's real clock read 1h 35m —
8
+ * the operator mandated structurally-enforced accurate time reporting
9
+ * ("MANDATE accurate time reporting and NOT allow guessing"). The session
10
+ * clock API exists precisely so no time is ever estimated
11
+ * (docs/specs/ROBUST-SESSION-TIME-AWARENESS-SPEC.md); this detector closes the
12
+ * loop on the OUTBOUND side: a report that contradicts the clock is flagged
13
+ * BEFORE it reaches the user.
14
+ *
15
+ * Pure + total (no I/O, no LLM): the caller passes the already-computed
16
+ * clock(s); every malformed input degrades to "not detected" (fail-open, the
17
+ * advisory layer's contract). Signal-only — it feeds the inform-only outbound
18
+ * advisory surface (src/messaging/OutboundAdvisory.ts) and never blocks.
19
+ *
20
+ * Deliberately CONSERVATIVE extraction: only claims with an explicit
21
+ * elapsed/remaining/percent anchor are parsed ("7h elapsed", "7.5 hours in:",
22
+ * "2h 40m left", "8% elapsed"). Unanchored durations ("the test took 3h",
23
+ * "in 2 hours I'll check") are never matched — a missed claim is an accepted
24
+ * under-block; a false fire on conversational text is the failure mode this
25
+ * conservatism exists to avoid.
26
+ */
27
+ /** The clock fields the detector compares against (subset of SessionClock). */
28
+ export interface TimeClaimClock {
29
+ elapsedSeconds: number;
30
+ /** null for an unbounded run — remaining/percent claims are then skipped. */
31
+ remainingSeconds: number | null;
32
+ /** null for an unbounded run. */
33
+ percentElapsed: number | null;
34
+ }
35
+ export interface TimeClaimResult {
36
+ detected: boolean;
37
+ /** Bounded inert summary: `claimed <X>; live clock: <Y>` (≤120 chars). */
38
+ match?: string;
39
+ }
40
+ interface ExtractedClaim {
41
+ kind: 'elapsed' | 'remaining' | 'percent';
42
+ /** Claimed value in seconds (elapsed/remaining) or percent points. */
43
+ value: number;
44
+ /** The matched claim text, for the inert match summary. */
45
+ text: string;
46
+ }
47
+ /** Extract every anchored time claim from `text` (bounded input expected). */
48
+ export declare function extractTimeClaims(text: string): ExtractedClaim[];
49
+ /**
50
+ * Compare every anchored claim in `text` against the active clock(s).
51
+ * A claim passes if it is consistent with ANY provided clock (lenient by
52
+ * design — multiple active clocks for a topic should not cross-fire).
53
+ * No clocks → never detected (nothing to contradict).
54
+ */
55
+ export declare function detectTimeClaimContradiction(text: string, clocks: ReadonlyArray<TimeClaimClock>): TimeClaimResult;
56
+ export {};
57
+ //# sourceMappingURL=time-claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-claim.d.ts","sourceRoot":"","sources":["../../src/core/time-claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iCAAiC;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1C,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;CACd;AA6DD,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CA4BhE;AAaD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,GACpC,eAAe,CAuCjB"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * time-claim.ts — deterministic detector for elapsed/remaining/percent time
3
+ * claims that contradict the live session clock of the sending topic's active
4
+ * time-boxed (autonomous) session.
5
+ *
6
+ * Founding incident (2026-06-12, topic 13481): an autonomous progress report
7
+ * claimed "~7h elapsed / 24h total" when the run's real clock read 1h 35m —
8
+ * the operator mandated structurally-enforced accurate time reporting
9
+ * ("MANDATE accurate time reporting and NOT allow guessing"). The session
10
+ * clock API exists precisely so no time is ever estimated
11
+ * (docs/specs/ROBUST-SESSION-TIME-AWARENESS-SPEC.md); this detector closes the
12
+ * loop on the OUTBOUND side: a report that contradicts the clock is flagged
13
+ * BEFORE it reaches the user.
14
+ *
15
+ * Pure + total (no I/O, no LLM): the caller passes the already-computed
16
+ * clock(s); every malformed input degrades to "not detected" (fail-open, the
17
+ * advisory layer's contract). Signal-only — it feeds the inform-only outbound
18
+ * advisory surface (src/messaging/OutboundAdvisory.ts) and never blocks.
19
+ *
20
+ * Deliberately CONSERVATIVE extraction: only claims with an explicit
21
+ * elapsed/remaining/percent anchor are parsed ("7h elapsed", "7.5 hours in:",
22
+ * "2h 40m left", "8% elapsed"). Unanchored durations ("the test took 3h",
23
+ * "in 2 hours I'll check") are never matched — a missed claim is an accepted
24
+ * under-block; a false fire on conversational text is the failure mode this
25
+ * conservatism exists to avoid.
26
+ */
27
+ import { humanizeDuration } from './SessionClock.js';
28
+ // Anchored claim patterns. Each requires the anchor WORD so plain durations
29
+ // never match. Hours may be fractional ("7.5 hours"); "Xh Ym" composes.
30
+ // "in" as an elapsed anchor is only accepted at a boundary ("7.5 hours in:",
31
+ // "1h50m in.", "2h in)") — never "3h in CI" / "in 2 hours".
32
+ const HOURS = String.raw `(\d{1,3}(?:\.\d+)?)\s*h(?:ours?|rs?)?`;
33
+ const MINUTES = String.raw `(\d{1,2})\s*m(?:in(?:ute)?s?)?`;
34
+ const HM = `${HOURS}(?:\\s*${MINUTES})?|${MINUTES}`;
35
+ const PRE = String.raw `(?:~|≈|about\s+|around\s+|roughly\s+)?`;
36
+ const ELAPSED_RE = new RegExp(`${PRE}(?:${HM})\\s*(?:elapsed|into\\s+the\\s+(?:run|session)|in(?=\\s*(?:[,.;:)\\]!\\n—–-]|$|now\\b)))`, 'gi');
37
+ const REMAINING_RE = new RegExp(`${PRE}(?:${HM})\\s*(?:remaining|left|to\\s+go|on\\s+the\\s+clock)`, 'gi');
38
+ // Percent anchors require an explicit TIME noun ("of the run", "through the
39
+ // session") — never bare "complete"/"done"/"through"/"in", which dominantly
40
+ // mean TASK progress ("the migration is 80% done"), not wall-clock fraction.
41
+ // Comparing task progress against percentElapsed fires on the NORMAL state
42
+ // (work is never proportional to wall-clock) and the guidance would then make
43
+ // the report WRONG (second-pass review concern 1, 2026-06-12).
44
+ const PERCENT_RE = new RegExp(String.raw `(\d{1,3})\s*%\s*(?:elapsed|(?:through|of|into)\s+the\s+(?:run|session|clock))`, 'gi');
45
+ /** Parse the H/M capture groups of ELAPSED_RE/REMAINING_RE into seconds. */
46
+ function groupsToSeconds(m) {
47
+ // Groups: 1=hours, 2=minutes-after-hours, 3=minutes-only (per HM alternation).
48
+ const hours = m[1] !== undefined ? Number(m[1]) : null;
49
+ const minAfter = m[2] !== undefined ? Number(m[2]) : 0;
50
+ const minOnly = m[3] !== undefined ? Number(m[3]) : null;
51
+ if (hours !== null && Number.isFinite(hours)) {
52
+ return Math.round(hours * 3600 + (Number.isFinite(minAfter) ? minAfter : 0) * 60);
53
+ }
54
+ if (minOnly !== null && Number.isFinite(minOnly)) {
55
+ return Math.round(minOnly * 60);
56
+ }
57
+ return null;
58
+ }
59
+ /**
60
+ * A claim directly preceded by a quote/backtick is someone QUOTING a number
61
+ * (e.g. a correction message citing the wrong claim it is correcting:
62
+ * `my "~7h elapsed" line was wrong`) — never a fresh assertion. Skipped.
63
+ */
64
+ const QUOTE_CHARS = new Set(['"', "'", '“', '”', '‘', '’', '`']);
65
+ function isQuoted(text, index) {
66
+ for (let i = index - 1; i >= 0 && i >= index - 2; i--) {
67
+ const ch = text[i];
68
+ if (QUOTE_CHARS.has(ch))
69
+ return true;
70
+ if (ch !== ' ' && ch !== '(')
71
+ return false;
72
+ }
73
+ return false;
74
+ }
75
+ /** Extract every anchored time claim from `text` (bounded input expected). */
76
+ export function extractTimeClaims(text) {
77
+ const claims = [];
78
+ if (typeof text !== 'string' || text.length === 0)
79
+ return claims;
80
+ for (const [re, kind] of [
81
+ [ELAPSED_RE, 'elapsed'],
82
+ [REMAINING_RE, 'remaining'],
83
+ ]) {
84
+ re.lastIndex = 0;
85
+ let m;
86
+ while ((m = re.exec(text)) !== null && claims.length < 16) {
87
+ const seconds = groupsToSeconds(m);
88
+ if (seconds !== null && !isQuoted(text, m.index)) {
89
+ claims.push({ kind, value: seconds, text: m[0].trim().slice(0, 40) });
90
+ }
91
+ }
92
+ }
93
+ PERCENT_RE.lastIndex = 0;
94
+ let p;
95
+ while ((p = PERCENT_RE.exec(text)) !== null && claims.length < 16) {
96
+ const pct = Number(p[1]);
97
+ if (Number.isFinite(pct) && pct <= 100 && !isQuoted(text, p.index)) {
98
+ claims.push({ kind: 'percent', value: pct, text: p[0].trim().slice(0, 40) });
99
+ }
100
+ }
101
+ return claims;
102
+ }
103
+ /** Duration tolerance: generous on purpose — only a GROSS guess should fire. */
104
+ const DURATION_TOLERANCE_FLOOR_S = 15 * 60; // 15 minutes
105
+ const DURATION_TOLERANCE_FRACTION = 0.2; // 20% of the true value
106
+ /** Percent tolerance in absolute points. */
107
+ const PERCENT_TOLERANCE_POINTS = 15;
108
+ function durationConsistent(claimed, actual) {
109
+ const tol = Math.max(DURATION_TOLERANCE_FLOOR_S, actual * DURATION_TOLERANCE_FRACTION);
110
+ return Math.abs(claimed - actual) <= tol;
111
+ }
112
+ /**
113
+ * Compare every anchored claim in `text` against the active clock(s).
114
+ * A claim passes if it is consistent with ANY provided clock (lenient by
115
+ * design — multiple active clocks for a topic should not cross-fire).
116
+ * No clocks → never detected (nothing to contradict).
117
+ */
118
+ export function detectTimeClaimContradiction(text, clocks) {
119
+ if (!Array.isArray(clocks) || clocks.length === 0)
120
+ return { detected: false };
121
+ const claims = extractTimeClaims(text);
122
+ if (claims.length === 0)
123
+ return { detected: false };
124
+ for (const claim of claims) {
125
+ let consistentWithAny = false;
126
+ let comparable = false;
127
+ for (const clock of clocks) {
128
+ if (claim.kind === 'elapsed') {
129
+ if (!Number.isFinite(clock.elapsedSeconds))
130
+ continue;
131
+ comparable = true;
132
+ if (durationConsistent(claim.value, clock.elapsedSeconds))
133
+ consistentWithAny = true;
134
+ }
135
+ else if (claim.kind === 'remaining') {
136
+ if (typeof clock.remainingSeconds !== 'number' || !Number.isFinite(clock.remainingSeconds))
137
+ continue;
138
+ comparable = true;
139
+ if (durationConsistent(claim.value, clock.remainingSeconds))
140
+ consistentWithAny = true;
141
+ }
142
+ else {
143
+ if (typeof clock.percentElapsed !== 'number' || !Number.isFinite(clock.percentElapsed))
144
+ continue;
145
+ comparable = true;
146
+ if (Math.abs(claim.value - clock.percentElapsed) <= PERCENT_TOLERANCE_POINTS)
147
+ consistentWithAny = true;
148
+ }
149
+ if (consistentWithAny)
150
+ break;
151
+ }
152
+ if (comparable && !consistentWithAny) {
153
+ const clock = clocks[0];
154
+ const live = claim.kind === 'percent'
155
+ ? `${clock.percentElapsed}% elapsed`
156
+ : claim.kind === 'remaining'
157
+ ? `${humanizeDuration(clock.remainingSeconds ?? 0)} remaining`
158
+ : `${humanizeDuration(clock.elapsedSeconds)} elapsed`;
159
+ return {
160
+ detected: true,
161
+ match: `claimed "${claim.text}"; live clock: ${live}`.slice(0, 120),
162
+ };
163
+ }
164
+ }
165
+ return { detected: false };
166
+ }
167
+ //# sourceMappingURL=time-claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-claim.js","sourceRoot":"","sources":["../../src/core/time-claim.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,8 @@
38
38
  * FIXED sourceContext 'outbound-advisory-escalation' so the per-source
39
39
  * topic budget genuinely binds — P17). It never gates the sender.
40
40
  */
41
- export type AdvisoryCode = 'JARGON' | 'RAW_FILE_PATH' | 'LOCALHOST_LINK';
41
+ import { type TimeClaimClock } from '../core/time-claim.js';
42
+ export type AdvisoryCode = 'JARGON' | 'RAW_FILE_PATH' | 'LOCALHOST_LINK' | 'TIME_CLAIM';
42
43
  export interface Advisory {
43
44
  code: AdvisoryCode;
44
45
  /** Bounded inert detector match (≤120 chars) — data, never instructions. */
@@ -48,11 +49,28 @@ export interface Advisory {
48
49
  }
49
50
  /** Analyzed-text cap (consistent with the pipeline's downstream rejects). */
50
51
  export declare const PREFLIGHT_TEXT_CAP: number;
52
+ export interface ComposeAdvisoryOptions {
53
+ /**
54
+ * Active session clock(s) for the sending topic (caller resolves them —
55
+ * this module stays pure). Absent/empty → the TIME_CLAIM detector is a
56
+ * no-op. Spec: time-claim verification rides the same inform-only slot
57
+ * (operator mandate 2026-06-12, topic 13481).
58
+ */
59
+ sessionClocks?: ReadonlyArray<TimeClaimClock>;
60
+ }
61
+ /**
62
+ * The TIME_CLAIM detector alone — used for NON-automated (conversational
63
+ * session) preflights, where the jargon/path detectors deliberately do NOT
64
+ * apply (over-block concern, outbound-jargon-filepath-gap §4 Q2) but a time
65
+ * claim contradicting the live clock is wrong regardless of message kind.
66
+ * Fail-OPEN like every detector.
67
+ */
68
+ export declare function composeTimeClaimAdvisories(text: string, sessionClocks: ReadonlyArray<TimeClaimClock> | undefined): Advisory[];
51
69
  /**
52
70
  * Run the deterministic detectors over a candidate text. Each detector is
53
71
  * individually fail-OPEN: a throw skips that signal and never withholds.
54
72
  */
55
- export declare function composeAdvisories(text: string): Advisory[];
73
+ export declare function composeAdvisories(text: string, opts?: ComposeAdvisoryOptions): Advisory[];
56
74
  export type AdvisoryAction = 'clean' | 'advised' | 'acked';
57
75
  export interface AdvisoryAuditEntry {
58
76
  ts: string;
@@ -1 +1 @@
1
- {"version":3,"file":"OutboundAdvisory.d.ts","sourceRoot":"","sources":["../../src/messaging/OutboundAdvisory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OutboundAdvisory.d.ts","sourceRoot":"","sources":["../../src/messaging/OutboundAdvisory.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ import crypto from 'node:crypto';
44
44
  import { detectJargon } from '../core/JargonDetector.js';
45
45
  import { detectRawFilePath } from '../core/raw-file-path.js';
46
46
  import { detectLocalhostLink } from '../core/localhost-link.js';
47
+ import { detectTimeClaimContradiction } from '../core/time-claim.js';
47
48
  /** Static guidance table — injection-pinned by construction. */
48
49
  const GUIDANCE = {
49
50
  JARGON: 'This automated message uses internal developer jargon the user may not understand or be able to act on. ' +
@@ -53,14 +54,48 @@ const GUIDANCE = {
53
54
  LOCALHOST_LINK: 'This message contains a machine-local (localhost/loopback) link the user cannot open from their device. ' +
54
55
  'IMPORTANT: the server’s pre-existing deterministic guard will refuse a raw localhost link REGARDLESS of --ack-advisory — ' +
55
56
  'acknowledging this advisory will NOT deliver it. Replace the link with the public tunnel URL (GET /tunnel → url + path) before re-sending.',
57
+ TIME_CLAIM: 'This message states an elapsed/remaining time for this topic’s active time-boxed session that contradicts the live session clock. ' +
58
+ 'Never estimate time — read GET /session/clock (Bearer auth) and quote its numbers exactly, then re-send with the corrected figure.',
56
59
  };
57
60
  /** Analyzed-text cap (consistent with the pipeline's downstream rejects). */
58
61
  export const PREFLIGHT_TEXT_CAP = 64 * 1024;
62
+ /**
63
+ * The TIME_CLAIM detector alone — used for NON-automated (conversational
64
+ * session) preflights, where the jargon/path detectors deliberately do NOT
65
+ * apply (over-block concern, outbound-jargon-filepath-gap §4 Q2) but a time
66
+ * claim contradicting the live clock is wrong regardless of message kind.
67
+ * Fail-OPEN like every detector.
68
+ */
69
+ export function composeTimeClaimAdvisories(text, sessionClocks) {
70
+ if (!sessionClocks || sessionClocks.length === 0)
71
+ return [];
72
+ try {
73
+ const input = typeof text === 'string'
74
+ ? text.length > PREFLIGHT_TEXT_CAP
75
+ ? text.slice(0, PREFLIGHT_TEXT_CAP)
76
+ : text
77
+ : '';
78
+ const tc = detectTimeClaimContradiction(input, sessionClocks);
79
+ if (tc.detected) {
80
+ return [
81
+ {
82
+ code: 'TIME_CLAIM',
83
+ match: tc.match ? tc.match.slice(0, 120) : undefined,
84
+ guidance: GUIDANCE.TIME_CLAIM,
85
+ },
86
+ ];
87
+ }
88
+ }
89
+ catch {
90
+ /* @silent-fallback-ok — fail-open by spec contract (outbound-jargon-filepath-gap §2.3): a detector error skips the signal, never withholds a message */
91
+ }
92
+ return [];
93
+ }
59
94
  /**
60
95
  * Run the deterministic detectors over a candidate text. Each detector is
61
96
  * individually fail-OPEN: a throw skips that signal and never withholds.
62
97
  */
63
- export function composeAdvisories(text) {
98
+ export function composeAdvisories(text, opts) {
64
99
  const input = typeof text === 'string'
65
100
  ? text.length > PREFLIGHT_TEXT_CAP
66
101
  ? text.slice(0, PREFLIGHT_TEXT_CAP)
@@ -102,6 +137,7 @@ export function composeAdvisories(text) {
102
137
  catch {
103
138
  /* @silent-fallback-ok — fail-open by spec contract (outbound-jargon-filepath-gap §2.3): a detector error skips the signal, never withholds a message */
104
139
  }
140
+ advisories.push(...composeTimeClaimAdvisories(input, opts?.sessionClocks));
105
141
  return advisories;
106
142
  }
107
143
  /** Fixed sourceContext — P17: the per-source topic budget must genuinely bind. */
@@ -1 +1 @@
1
- {"version":3,"file":"OutboundAdvisory.js","sourceRoot":"","sources":["../../src/messaging/OutboundAdvisory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OutboundAdvisory.js","sourceRoot":"","sources":["../../src/messaging/OutboundAdvisory.ts"],"names":[],"mappings":"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"}
@@ -94,6 +94,15 @@ export interface SessionReaperConfig {
94
94
  * closeout fires — absorbs transfer races and brief ownership churn.
95
95
  * Default 2 (~4 min at the default 120s tick). */
96
96
  topicMovedConfirmTicks: number;
97
+ /** P19 breaker (WS1.2, MULTI-MACHINE-SEAMLESSNESS-SPEC): after this many
98
+ * CONSECUTIVE vetoed closeout attempts on the same session, the closeout
99
+ * stops retrying and ONE degradation notice surfaces — the 2026-06-12
100
+ * incident was this exact loop attacking a working session every 2 minutes
101
+ * for hours. The session is NOT stranded: the normal idle pipeline still
102
+ * evaluates it every tick and reaps it when it actually finishes. The
103
+ * breaker resets when the topic returns home / a pin-conflict hold engages /
104
+ * the session ends. Default 5 (~10 min of vetoes at the default 120s tick). */
105
+ topicMovedVetoBreakerAttempts: number;
97
106
  }
98
107
  export declare const DEFAULT_SESSION_REAPER_CONFIG: SessionReaperConfig;
99
108
  /**
@@ -203,6 +212,18 @@ export interface SessionReaperDeps {
203
212
  now?: () => number;
204
213
  /** Structured audit sink (sentinel-events.jsonl). */
205
214
  audit?: (event: Record<string, unknown>) => void;
215
+ /** WS1.2 P19 breaker escalation: ONE deduped degradation notice when the
216
+ * post-transfer closeout gives up on a permanently-vetoing session ("topic
217
+ * moved to X but the old session won't close — still finishing Y"). The
218
+ * attention queue dedupes on `id`, so a breaker that re-opens within the
219
+ * same episode never floods. Absent ⇒ audit-only (the transition is still
220
+ * in sentinel-events.jsonl). */
221
+ raiseAttention?: (item: {
222
+ id: string;
223
+ title: string;
224
+ summary: string;
225
+ description?: string;
226
+ }) => void;
206
227
  /** Durable candidacy (A): load the persisted per-session idle-candidacy map on
207
228
  * start so the multi-minute idle clock (candidateSince) survives a server restart.
208
229
  * Without this the in-memory clock resets every restart — and on a box that
@@ -239,6 +260,12 @@ export declare class SessionReaper extends EventEmitter {
239
260
  /** Consecutive busy-orphan-suspect ticks per session (observe-only dwell for
240
261
  * `busyOrphanDetection`). Resets to 0 on any non-suspect tick. GC'd with obs. */
241
262
  private busyOrphanStreak;
263
+ /** Consecutive VETOED closeout terminate attempts per session (the WS1.2
264
+ * P19 breaker counter). Distinct from the dwell streak: this counts only
265
+ * real terminate() calls that came back vetoed. At
266
+ * `topicMovedVetoBreakerAttempts` the closeout stops retrying for the
267
+ * episode. Reset on success / topic-home / pin-conflict hold. GC'd with obs. */
268
+ private topicMovedVetoes;
242
269
  /** Consecutive owned-elsewhere ticks per session (the topicMovedCloseout
243
270
  * dwell). Resets when the topic returns to this machine / unowned. GC'd with obs. */
244
271
  private topicMovedStreak;