instar 1.3.183 → 1.3.185

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.
@@ -50,7 +50,11 @@ export interface PortalCluster {
50
50
  /** A cluster-level outcome, keyed by fingerprint (the order-independent cluster identity). */
51
51
  export interface ClusterOutcome {
52
52
  fingerprint: string;
53
- /** Terminal lifecycle status (e.g. 'resolved', 'investigating', 'new'). */
53
+ /**
54
+ * Lifecycle status in either vocabulary (v1 'resolved'/'open'/'fixed' or v2
55
+ * 'closed'/'new'/'fix_applied'). compareClusterOutcomes projects both sides
56
+ * through normalizeStatus before comparing, so the side's vocabulary is irrelevant.
57
+ */
54
58
  status: string;
55
59
  /** Chronic-regression recurrence count. */
56
60
  recurrenceCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/processor/parity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEnF;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,sEAAsE;IACtE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,qBAAqB,EAAE,CAUnG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EAAE,EACxB,MAAM,EAAE,cAAc,EAAE,GACvB,iBAAiB,EAAE,CA6BrB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC,GAAG,YAAY,CAmBf"}
1
+ {"version":3,"file":"parity.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/processor/parity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAKH,+FAA+F;AAC/F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEnF;AAED,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,8FAA8F;AAC9F,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,8CAA8C;AAC9C,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;;;OAQG;IACH,uBAAuB,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,qBAAqB,EAAE,CAAC;IAChD,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,sEAAsE;IACtE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,qBAAqB,EAAE,CAUnG;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,EAAE,EACxB,MAAM,EAAE,cAAc,EAAE,GACvB,iBAAiB,EAAE,CAmCrB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC;CACnC,GAAG,YAAY,CAmBf"}
@@ -33,6 +33,7 @@
33
33
  * structural signal that BLOCKS Phase 4 cutover (spec §2.5 Phase 4/5).
34
34
  */
35
35
  import { computeFingerprint } from './fingerprint.js';
36
+ import { normalizeStatus } from './transitions.js';
36
37
  /** The canonical fingerprint for a cluster: exactly the reference's per-cluster derivation. */
37
38
  export function clusterFingerprint(cluster) {
38
39
  return computeFingerprint(cluster.type, cluster.title);
@@ -76,7 +77,13 @@ export function compareClusterOutcomes(instar, portal) {
76
77
  out.push({ fingerprint: fp, kind: 'missing-instar', portal: p.status });
77
78
  continue;
78
79
  }
79
- if (i.status !== p.status) {
80
+ // Compare in the canonical v2 space: Portal still emits v1 literals
81
+ // (open/fixed/resolved) while Instar emits the v2 lifecycle (new/fix_applied/
82
+ // closed), so a raw `i.status !== p.status` reads benign vocabulary skew as a
83
+ // cutover-blocking divergence (e.g. Portal `resolved` vs Instar `closed`).
84
+ // normalizeStatus projects BOTH sides first; the reported values stay raw so the
85
+ // operator sees each side's actual stored status when a real divergence survives.
86
+ if (normalizeStatus(i.status) !== normalizeStatus(p.status)) {
80
87
  out.push({ fingerprint: fp, kind: 'status', instar: i.status, portal: p.status });
81
88
  }
82
89
  if (i.recurrenceCount !== p.recurrenceCount) {
@@ -1 +1 @@
1
- {"version":3,"file":"parity.js","sourceRoot":"","sources":["../../../src/feedback-factory/processor/parity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parity.js","sourceRoot":"","sources":["../../../src/feedback-factory/processor/parity.ts"],"names":[],"mappings":"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"}
@@ -41,4 +41,37 @@ export declare function detectCycling(cluster: {
41
41
  status?: string;
42
42
  recurrenceCount?: number;
43
43
  }): boolean;
44
+ /**
45
+ * V1_TO_V2_STATUS — legacy(v1)→canonical(v2) status projection. Byte-faithful to
46
+ * Portal's `V1_TO_V2_STATUS` (feedback-processor.py:1035). Identity entries
47
+ * (investigating/wontfix/duplicate are spelled the same in both vocabularies) are
48
+ * listed verbatim so the map documents the full v1 vocabulary; only open/fixed/
49
+ * resolved actually change under projection.
50
+ *
51
+ * NB `open` is the v1 birth-default literal (schema.prisma:1970 `@default("open")`),
52
+ * NOT a standalone canonical state — it projects to `new`.
53
+ */
54
+ export declare const V1_TO_V2_STATUS: Readonly<Record<string, string>>;
55
+ /**
56
+ * TERMINAL_STATUSES — the canonical terminal set, evaluated on NORMALIZED status
57
+ * (feedback-processor.py:379). A cluster whose normalized status is in this set has
58
+ * reached a lifecycle end-state. Includes `legacy_closed`, a terminal-only legacy
59
+ * literal that is not a member of {@link V2_STATES} and has no v1→v2 mapping (so it
60
+ * passes through {@link normalizeStatus} unchanged and is matched here directly).
61
+ */
62
+ export declare const TERMINAL_STATUSES: ReadonlySet<string>;
63
+ /**
64
+ * Project a (possibly legacy-v1) status into the canonical v2 lifecycle space.
65
+ * A status already in v2 — or any unrecognised value — passes through unchanged, so
66
+ * this is idempotent and safe to apply to either side of a comparison without risk
67
+ * of double-mapping.
68
+ */
69
+ export declare function normalizeStatus(status: string): string;
70
+ /**
71
+ * True iff the status, after normalization, is a canonical terminal state.
72
+ * Normalize-BEFORE-check is load-bearing: a raw v1 `resolved` must read terminal,
73
+ * which it only does once projected to `closed`. Checking the raw literal against
74
+ * the v2 terminal set would let `resolved` slip through as non-terminal.
75
+ */
76
+ export declare function isTerminalStatus(status: string): boolean;
44
77
  //# sourceMappingURL=transitions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/processor/transitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,wEAAwE;AACxE,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,CAMxC,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAexE,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAKlG,CAAC;AAUF,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACjC,CAAC,OAAO,EAAE,MAAM,CAAC,CAsCnB;AAED,uGAAuG;AACvG,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAM7F"}
1
+ {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../src/feedback-factory/processor/transitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,wEAAwE;AACxE,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,CAMxC,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAexE,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAKlG,CAAC;AAUF,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,GACjC,CAAC,OAAO,EAAE,MAAM,CAAC,CAsCnB;AAED,uGAAuG;AACvG,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAM7F;AAeD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAEhD,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -99,4 +99,62 @@ export function detectCycling(cluster) {
99
99
  return ((status === 'fix_applied' || status === 'new' || status === 'investigating') &&
100
100
  (cluster.recurrenceCount ?? 0) >= 2);
101
101
  }
102
+ // ---------------------------------------------------------------------------
103
+ // Status vocabulary normalization (Portal owns it; mirrored, not invented).
104
+ //
105
+ // Three feedback instances use three status vocabularies during the migration:
106
+ // the v1 legacy literals Portal still writes (open/fixed/resolved/…), the live
107
+ // write-gate superset both sides accept mid-migration, and the canonical v2
108
+ // lifecycle ({@link V2_STATES}). To compare apples to apples, BOTH sides project
109
+ // their status through {@link normalizeStatus} into the v2 space BEFORE any
110
+ // status comparison AND before the terminal check. Anchored to the authoritative
111
+ // definitions Dawn pinned (thread-978f016b) from the reference
112
+ // `the-portal/.claude/scripts/feedback-processor.py`.
113
+ // ---------------------------------------------------------------------------
114
+ /**
115
+ * V1_TO_V2_STATUS — legacy(v1)→canonical(v2) status projection. Byte-faithful to
116
+ * Portal's `V1_TO_V2_STATUS` (feedback-processor.py:1035). Identity entries
117
+ * (investigating/wontfix/duplicate are spelled the same in both vocabularies) are
118
+ * listed verbatim so the map documents the full v1 vocabulary; only open/fixed/
119
+ * resolved actually change under projection.
120
+ *
121
+ * NB `open` is the v1 birth-default literal (schema.prisma:1970 `@default("open")`),
122
+ * NOT a standalone canonical state — it projects to `new`.
123
+ */
124
+ export const V1_TO_V2_STATUS = {
125
+ open: 'new',
126
+ investigating: 'investigating',
127
+ fixed: 'fix_applied',
128
+ resolved: 'closed',
129
+ wontfix: 'wontfix',
130
+ duplicate: 'duplicate',
131
+ };
132
+ /**
133
+ * TERMINAL_STATUSES — the canonical terminal set, evaluated on NORMALIZED status
134
+ * (feedback-processor.py:379). A cluster whose normalized status is in this set has
135
+ * reached a lifecycle end-state. Includes `legacy_closed`, a terminal-only legacy
136
+ * literal that is not a member of {@link V2_STATES} and has no v1→v2 mapping (so it
137
+ * passes through {@link normalizeStatus} unchanged and is matched here directly).
138
+ */
139
+ export const TERMINAL_STATUSES = new Set([
140
+ 'closed', 'verified', 'wontfix', 'duplicate', 'chronic_escalated', 'legacy_closed',
141
+ ]);
142
+ /**
143
+ * Project a (possibly legacy-v1) status into the canonical v2 lifecycle space.
144
+ * A status already in v2 — or any unrecognised value — passes through unchanged, so
145
+ * this is idempotent and safe to apply to either side of a comparison without risk
146
+ * of double-mapping.
147
+ */
148
+ export function normalizeStatus(status) {
149
+ return V1_TO_V2_STATUS[status] ?? status;
150
+ }
151
+ /**
152
+ * True iff the status, after normalization, is a canonical terminal state.
153
+ * Normalize-BEFORE-check is load-bearing: a raw v1 `resolved` must read terminal,
154
+ * which it only does once projected to `closed`. Checking the raw literal against
155
+ * the v2 terminal set would let `resolved` slip through as non-terminal.
156
+ */
157
+ export function isTerminalStatus(status) {
158
+ return TERMINAL_STATUSES.has(normalizeStatus(status));
159
+ }
102
160
  //# sourceMappingURL=transitions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../src/feedback-factory/processor/transitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../src/feedback-factory/processor/transitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * ThreadlineGroundingGate — "Ground Before You Assert" for OUTBOUND agent-to-agent
3
+ * messages (the constitution's proposed Interaction principle; companion to the
4
+ * pre-Telegram grounding gate).
5
+ *
6
+ * Pure, side-effect-free claim analysis: given the text an agent is about to send
7
+ * to a peer, surface the claims that need verification BEFORE they leave — so an
8
+ * unverified fact doesn't propagate to another agent as truth. The first concrete
9
+ * check is URL provenance: a scheme-qualified URL to an unfamiliar host that the
10
+ * agent has NOT confirmed this session is flagged, because that is exactly the
11
+ * class that caused the 2026-05-31 cross-agent incoherence (a peer handed over a
12
+ * `https://…` endpoint that 404'd, propagated as fact).
13
+ *
14
+ * This module is the DECISION; wiring it as a hard pre-send gate on threadline_send
15
+ * (block / require-confirm) is a separate step. Signal-vs-Authority: the gate
16
+ * returns structured issues; the caller chooses to block, warn, or require a
17
+ * verification step.
18
+ */
19
+ export interface GroundingIssue {
20
+ kind: 'ungrounded-url' | 'malformed-url';
21
+ detail: string;
22
+ }
23
+ export interface GroundingContext {
24
+ /** Hosts that never need grounding (suffix-matched), in addition to the defaults. */
25
+ knownDomains?: string[];
26
+ /** Exact URLs the agent has confirmed resolve THIS session (e.g. curl-verified). */
27
+ verifiedUrls?: string[];
28
+ }
29
+ export interface GroundingResult {
30
+ /** True when no claim needs grounding. */
31
+ allow: boolean;
32
+ issues: GroundingIssue[];
33
+ }
34
+ /**
35
+ * Evaluate an outbound peer message for ungrounded claims. Only scheme-qualified
36
+ * (`http(s)://`) URLs are checked — bare host references (e.g. `dawn.bot-me.ai/x`)
37
+ * are intentionally NOT flagged, matching the convention that a bare host conveys
38
+ * the same curl-verified info without asserting a live, fetchable endpoint.
39
+ */
40
+ export declare function evaluateOutboundGrounding(message: string, ctx?: GroundingContext): GroundingResult;
41
+ //# sourceMappingURL=ThreadlineGroundingGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadlineGroundingGate.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineGroundingGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,gBAAgB,GAAG,eAAe,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oFAAoF;IACpF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAmBD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,gBAAqB,GAAG,eAAe,CA0BtG"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * ThreadlineGroundingGate — "Ground Before You Assert" for OUTBOUND agent-to-agent
3
+ * messages (the constitution's proposed Interaction principle; companion to the
4
+ * pre-Telegram grounding gate).
5
+ *
6
+ * Pure, side-effect-free claim analysis: given the text an agent is about to send
7
+ * to a peer, surface the claims that need verification BEFORE they leave — so an
8
+ * unverified fact doesn't propagate to another agent as truth. The first concrete
9
+ * check is URL provenance: a scheme-qualified URL to an unfamiliar host that the
10
+ * agent has NOT confirmed this session is flagged, because that is exactly the
11
+ * class that caused the 2026-05-31 cross-agent incoherence (a peer handed over a
12
+ * `https://…` endpoint that 404'd, propagated as fact).
13
+ *
14
+ * This module is the DECISION; wiring it as a hard pre-send gate on threadline_send
15
+ * (block / require-confirm) is a separate step. Signal-vs-Authority: the gate
16
+ * returns structured issues; the caller chooses to block, warn, or require a
17
+ * verification step.
18
+ */
19
+ /** Hosts that are part of the agent's own surface / well-known infra. */
20
+ const DEFAULT_KNOWN_DOMAINS = [
21
+ 'localhost',
22
+ 'github.com',
23
+ 'githubusercontent.com',
24
+ 'npmjs.com',
25
+ 'anthropic.com',
26
+ 'claude.com',
27
+ ];
28
+ function hostIsKnown(host, known) {
29
+ for (const d of known) {
30
+ if (host === d || host.endsWith('.' + d))
31
+ return true;
32
+ }
33
+ return false;
34
+ }
35
+ /**
36
+ * Evaluate an outbound peer message for ungrounded claims. Only scheme-qualified
37
+ * (`http(s)://`) URLs are checked — bare host references (e.g. `dawn.bot-me.ai/x`)
38
+ * are intentionally NOT flagged, matching the convention that a bare host conveys
39
+ * the same curl-verified info without asserting a live, fetchable endpoint.
40
+ */
41
+ export function evaluateOutboundGrounding(message, ctx = {}) {
42
+ const known = new Set([...DEFAULT_KNOWN_DOMAINS, ...(ctx.knownDomains ?? [])]);
43
+ const verified = new Set(ctx.verifiedUrls ?? []);
44
+ const issues = [];
45
+ const urls = message.match(/https?:\/\/[^\s)"'>\]]+/g) ?? [];
46
+ for (const raw of urls) {
47
+ const url = raw.replace(/[.,;:]+$/, ''); // trim trailing punctuation
48
+ if (verified.has(url) || verified.has(raw))
49
+ continue;
50
+ let host;
51
+ try {
52
+ host = new URL(url).hostname;
53
+ }
54
+ catch {
55
+ issues.push({ kind: 'malformed-url', detail: `${raw} is not a parseable URL.` });
56
+ continue;
57
+ }
58
+ if (!hostIsKnown(host, known)) {
59
+ issues.push({
60
+ kind: 'ungrounded-url',
61
+ detail: `${url} — unfamiliar host "${host}". Verify it resolves (curl) before asserting it to a peer, ` +
62
+ `or reference it bare (no scheme) if it carries already-verified info.`,
63
+ });
64
+ }
65
+ }
66
+ return { allow: issues.length === 0, issues };
67
+ }
68
+ //# sourceMappingURL=ThreadlineGroundingGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadlineGroundingGate.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineGroundingGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAoBH,yEAAyE;AACzE,MAAM,qBAAqB,GAAG;IAC5B,WAAW;IACX,YAAY;IACZ,uBAAuB;IACvB,WAAW;IACX,eAAe;IACf,YAAY;CACb,CAAC;AAEF,SAAS,WAAW,CAAC,IAAY,EAAE,KAAkB;IACnD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,MAAwB,EAAE;IACnF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,qBAAqB,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,4BAA4B;QACrE,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACrD,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,GAAG,0BAA0B,EAAE,CAAC,CAAC;YACjF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,gBAAgB;gBACtB,MAAM,EAAE,GAAG,GAAG,uBAAuB,IAAI,8DAA8D;oBACrG,uEAAuE;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AAChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadlineMCPServer.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineMCPServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThreadlineMCPServer.d.ts","sourceRoot":"","sources":["../../src/threadline/ThreadlineMCPServer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAiB,MAAM,cAAc,CAAC;AAMzE,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB;IACrB,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC/C,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/G,oDAAoD;IACpD,QAAQ,IAAI,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,KAAK,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC,CAAC;CACL;AAED,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,SAAS,EAAE,cAAc,CAAC;IAC1B,yCAAyC;IACzC,eAAe,EAAE,eAAe,CAAC;IACjC,2CAA2C;IAC3C,YAAY,EAAE,iBAAiB,CAAC;IAChC,uDAAuD;IACvD,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACrB,+EAA+E;IAC/E,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvE,+BAA+B;IAC/B,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACrG,gEAAgE;IAChE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0HAA0H;IAC1H,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAsED;;;;GAIG;AACH,UAAU,cAAc;IACtB,2CAA2C;IAC3C,aAAa,EAAE,OAAO,CAAC;IACvB,mDAAmD;IACnD,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,iBAAiB;IA2BtE;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;;OAGG;IACH,SAAS,IAAI,SAAS;IAItB;;;OAGG;IACH,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAI5C;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAmB7C,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,oBAAoB;IAgI5B,OAAO,CAAC,gBAAgB;IA4HxB,OAAO,CAAC,mBAAmB;IAsE3B,OAAO,CAAC,kBAAkB;IA8E1B,OAAO,CAAC,kBAAkB;IAsD1B,OAAO,CAAC,iBAAiB;IA2LzB,OAAO,CAAC,iBAAiB;IAmJzB,oEAAoE;IACpE,OAAO,CAAC,iBAAiB;IAczB,iCAAiC;IACjC,OAAO,CAAC,UAAU;IASlB,mCAAmC;IACnC,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,0BAA0B;IAmElC,OAAO,CAAC,0BAA0B;IA0DlC,OAAO,CAAC,0BAA0B;IAmClC,OAAO,CAAC,uBAAuB;CA+ChC"}
@@ -25,6 +25,7 @@ import { z } from 'zod';
25
25
  import fs from 'node:fs';
26
26
  import path from 'node:path';
27
27
  import { DEFAULT_RELAY_URL } from './constants.js';
28
+ import { evaluateOutboundGrounding } from './ThreadlineGroundingGate.js';
28
29
  // ── Tool Result Builders ─────────────────────────────────────────────
29
30
  /**
30
31
  * Convert a relay-discovered agent entry into the local ThreadlineAgentInfo
@@ -313,6 +314,13 @@ export class ThreadlineMCPServer {
313
314
  'for 2025 Stripe net+gross volume CSVs"). Stored on the local ' +
314
315
  'commitment record for context when the reply lands; NEVER sent ' +
315
316
  'over the wire to the remote agent.'),
317
+ groundingAck: z.boolean().default(false).describe('Ground Before You Assert: set true ONLY after you have verified the ' +
318
+ 'claims in this message (endpoints resolve, tokens authenticate, ' +
319
+ 'identities/state are current). Leave false (default) and the send is ' +
320
+ 'refused if it contains a scheme-qualified URL to a host you have not ' +
321
+ 'confirmed this session — so an unverified claim never propagates to a ' +
322
+ 'peer as fact. Resend with groundingAck:true once verified, or write ' +
323
+ 'the host bare (no scheme).'),
316
324
  }, async (args) => {
317
325
  const authError = this.checkAuth('threadline:send');
318
326
  if (authError)
@@ -325,6 +333,24 @@ export class ThreadlineMCPServer {
325
333
  if (!args.message.trim()) {
326
334
  return errorResult('Message cannot be empty');
327
335
  }
336
+ // Ground Before You Assert (constitution Interaction principle): refuse to
337
+ // send a peer message that asserts an unverified scheme-qualified URL,
338
+ // unless the caller has consciously acked grounding. Block-with-override —
339
+ // a real structural gate (Structure > Willpower) that still respects
340
+ // Signal-vs-Authority: the agent can override after verifying, so a
341
+ // false-positive can never permanently block a legitimate send. The check
342
+ // is a pure function, so it runs correctly here in the MCP stdio process.
343
+ if (!args.groundingAck) {
344
+ const grounding = evaluateOutboundGrounding(args.message);
345
+ if (!grounding.allow) {
346
+ return errorResult('Ground Before You Assert — this message asserts something you have not ' +
347
+ 'verified this session:\n' +
348
+ grounding.issues.map((i) => `• ${i.detail}`).join('\n') +
349
+ '\nVerify each (e.g. curl the endpoint), or reference the host bare (no ' +
350
+ 'scheme) if it carries already-verified info. If you have already ' +
351
+ 'verified it, resend with groundingAck: true.');
352
+ }
353
+ }
328
354
  try {
329
355
  const result = await this.deps.sendMessage({
330
356
  targetAgent: args.agentId,
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadlineMCPServer.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineMCPServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ThreadlineMCPServer.js","sourceRoot":"","sources":["../../src/threadline/ThreadlineMCPServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.3.183",
3
+ "version": "1.3.185",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-06-01T04:26:53.570Z",
5
- "instarVersion": "1.3.183",
4
+ "generatedAt": "2026-06-01T04:43:49.548Z",
5
+ "instarVersion": "1.3.185",
6
6
  "entryCount": 193,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -1089,7 +1089,7 @@
1089
1089
  "type": "template",
1090
1090
  "domain": "operations",
1091
1091
  "sourcePath": "src/templates/scripts/convergence-check.sh",
1092
- "contentHash": "24dcfa8fc813bfcb3aff9e0612c3c0b129a70481b0f8306d7f678b7b445a0942",
1092
+ "contentHash": "41ef69307819140731f293b175093238f88988365c3973b8e44b9c18669e32bd",
1093
1093
  "since": "2025-01-01"
1094
1094
  },
1095
1095
  "template:git-sync-gate.sh": {
@@ -64,9 +64,10 @@ if [ -n "$URLS_IN_MSG" ]; then
64
64
  # confabulation. Read it from config at runtime. If config/python is
65
65
  # unavailable or tunnel.hostname is empty, fall back to the static allowlist.
66
66
  OWN_TUNNEL_HOST=""
67
+ OWN_TUNNEL_PARENT=""
67
68
  CONFIG_PATH="${CLAUDE_PROJECT_DIR:-.}/.instar/config.json"
68
69
  if [ -f "$CONFIG_PATH" ]; then
69
- OWN_TUNNEL_HOST=$(python3 - "$CONFIG_PATH" <<'PY' 2>/dev/null
70
+ OWN_TUNNEL_INFO=$(python3 - "$CONFIG_PATH" <<'PY' 2>/dev/null
70
71
  import json
71
72
  import sys
72
73
  from urllib.parse import urlparse
@@ -76,13 +77,26 @@ try:
76
77
  raw = ((cfg.get('tunnel') or {}).get('hostname') or '').strip()
77
78
  if not raw:
78
79
  print('')
80
+ print('')
79
81
  else:
80
82
  parsed = urlparse(raw if '://' in raw else f'https://{raw}')
81
- print((parsed.hostname or '').lower())
83
+ host = (parsed.hostname or '').lower()
84
+ print(host)
85
+ # Parent tunnel domain: drop the leftmost label so SIBLING NODES of the
86
+ # SAME agent on the SAME tunnel provider domain are trusted — a
87
+ # multi-machine agent runs on >1 machine, each with its own subdomain
88
+ # under the operator's tunnel domain (e.g. own 'echo.dawn-tunnel.dev'
89
+ # trusts sibling 'echo-mini.dawn-tunnel.dev'). Only emit a parent with
90
+ # >=3 labels so we never collapse to a 2-label apex or public suffix.
91
+ labels = host.split('.')
92
+ print('.'.join(labels[1:]) if len(labels) >= 3 else '')
82
93
  except Exception:
83
94
  print('')
95
+ print('')
84
96
  PY
85
97
  )
98
+ OWN_TUNNEL_HOST=$(printf '%s\n' "$OWN_TUNNEL_INFO" | sed -n '1p')
99
+ OWN_TUNNEL_PARENT=$(printf '%s\n' "$OWN_TUNNEL_INFO" | sed -n '2p')
86
100
  fi
87
101
 
88
102
  UNFAMILIAR_URLS=""
@@ -101,6 +115,15 @@ PY
101
115
  if [ -n "$OWN_TUNNEL_HOST" ] && [ "$URL_HOST" = "$OWN_TUNNEL_HOST" ]; then
102
116
  continue
103
117
  fi
118
+ # Skip SIBLING NODES of the same agent: any host under the agent's own
119
+ # tunnel parent domain (e.g. own 'echo.dawn-tunnel.dev' → trust
120
+ # 'echo-mini.dawn-tunnel.dev'). A multi-machine agent reaches its other
121
+ # machines via per-machine subdomains of the operator's tunnel domain;
122
+ # those are agent-controlled, not confabulated. Guarded to >=3-label
123
+ # parents above so this never trusts a bare public-suffix apex.
124
+ if [ -n "$OWN_TUNNEL_PARENT" ] && { [ "$URL_HOST" = "$OWN_TUNNEL_PARENT" ] || [ "${URL_HOST%.$OWN_TUNNEL_PARENT}" != "$URL_HOST" ]; }; then
125
+ continue
126
+ fi
104
127
  # Skip Cloudflare quick-tunnel hosts. These are ephemeral but agent-generated.
105
128
  if echo "$URL_HOST" | grep -qE '(^|\.)trycloudflare\.com$'; then
106
129
  continue
@@ -0,0 +1,177 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ **The feedback-factory migration's parity check no longer flags two systems as
9
+ "diverged" just because they spell the same status differently.** As Portal's
10
+ feedback processor is ported into Instar, the two run side-by-side and a parity
11
+ comparator confirms they reach the same conclusions before any cutover. But Portal
12
+ still writes the legacy status words (`open`, `fixed`, `resolved`) while the ported
13
+ Instar processor emits the canonical lifecycle words (`new`, `fix_applied`,
14
+ `closed`). The comparator compared those words literally, so a cluster Portal
15
+ marked `resolved` and Instar marked `closed` — the *same* outcome — was reported as
16
+ a divergence, which structurally blocks the cutover. That was benign vocabulary
17
+ skew being treated as a real history fork.
18
+
19
+ The fix adds the canonical status-normalization primitives Dawn (Portal's owner)
20
+ pinned as the authoritative contract — a legacy→canonical projection map, a
21
+ terminal-state check evaluated on the normalized status, and an idempotent
22
+ `normalizeStatus()` — and applies the projection to **both sides** before the
23
+ parity comparator comparison. A genuine lifecycle mismatch still surfaces, and the
24
+ reported values stay raw so an operator still sees each side's actual stored status.
25
+
26
+ **A moved conversation's reply no longer hangs silently when the other machine
27
+ is briefly unreachable.** When you move a conversation to another machine, that
28
+ machine relays its replies through the machine that holds the Telegram
29
+ connection. That relay had two operational defects, both found by driving the
30
+ multi-machine feature live: it had no time limit (so when the receiving machine's
31
+ connection was momentarily restarting, the reply hung for over a minute with no
32
+ result), and it failed completely silently (a dropped reply wrote nothing to the
33
+ log, so there was no way to tell why it didn't arrive).
34
+
35
+ The relay is now bounded and observable: it gives the receiving machine a fixed
36
+ window (15 seconds by default, adjustable) and then fails fast, and every failure
37
+ writes one clear line saying exactly what went wrong (no reachable machine, a
38
+ rejection with its status code, or a timeout). The relay logic was also extracted
39
+ into its own well-tested unit.
40
+
41
+ It also no longer reports a false success: previously the relay could report
42
+ "delivered" even when the message never actually reached the chat (it accepted a
43
+ response that carried no real message id). Now the receiving machine returns the
44
+ real message id and the relay only counts a reply as delivered when that id is
45
+ present — otherwise it's treated as undelivered and surfaced, so a busy or flaky
46
+ moment becomes a real, visible failure (and a retry candidate) instead of a
47
+ silent loss dressed up as success.
48
+
49
+ `GET /updates/status` now includes the `restartImmediately` field. PR #641 added
50
+ the primary-developer-mode flag and claimed it was surfaced in this endpoint, but
51
+ the route's hand-picked response object had omitted it — so the flag's live state
52
+ wasn't actually readable there. This adds the one missing line so the route
53
+ echoes the value `AutoUpdater.getStatus()` already computes.
54
+
55
+ **The pre-messaging honesty guard now recognizes your agent's other machines as
56
+ its own.** A multi-machine instar agent runs on more than one machine, each
57
+ exposed at its own subdomain under the operator's tunnel domain (for example the
58
+ laptop and the Mac Mini each get a subdomain of the same tunnel domain). The
59
+ URL-provenance check — which blocks messages containing made-up-looking links —
60
+ previously trusted only the agent's exact own tunnel host, so a legitimate
61
+ operation addressing a sibling machine of the same agent was falsely flagged as
62
+ an "unfamiliar domain" and blocked.
63
+
64
+ It now also trusts hosts that share the agent's tunnel parent domain, so sibling
65
+ nodes are recognized — while still blocking genuinely fabricated links. Two
66
+ guards keep it safe: the parent domain is derived only when the own host has at
67
+ least three labels (never trusts a bare public-suffix apex), and the match is a
68
+ true DNS-suffix test (a look-alike like echo.dawn-tunnel.dev.evil.com stays
69
+ blocked because it actually ends in evil.com). Single-machine agents are
70
+ completely unaffected.
71
+
72
+ ## What to Tell Your User
73
+
74
+ Nothing to configure, and nothing changes for any current capability. This is
75
+ internal plumbing for the in-progress feedback-factory migration: the
76
+ Portal↔Instar parity check that gates cutover now reconciles the two status
77
+ vocabularies instead of failing on the difference. No routes, jobs, or user-facing
78
+ behavior are affected.
79
+
80
+ Nothing to configure. If you run across more than one machine and move a
81
+ conversation between them, a reply that can't be delivered now fails quickly with
82
+ a clear reason in the log, instead of hanging for over a minute and vanishing
83
+ without explanation. Single-machine setups are unaffected.
84
+
85
+ Nothing to do. If anyone asks how to tell whether an agent is set to always jump
86
+ to the newest version immediately, the status readout now shows that on/off state
87
+ directly.
88
+
89
+ Nothing to configure. If your agent runs across more than one machine, it can
90
+ now perform legitimate cross-machine operations (like the multi-machine reply
91
+ relay) without its own honesty guard blocking the request — while still catching
92
+ invented links. If you only run one machine, nothing changes at all.
93
+
94
+ ## Summary of New Capabilities
95
+
96
+ - `normalizeStatus()` / `isTerminalStatus()` / `V1_TO_V2_STATUS` / `TERMINAL_STATUSES`
97
+ (`src/feedback-factory/processor/transitions.ts`) — the canonical status-vocabulary
98
+ primitives, byte-mirrored from Portal's reference (`feedback-processor.py` :1035 / :379).
99
+ Normalize-before-terminal-check so a legacy `resolved` correctly reads terminal.
100
+ - `compareClusterOutcomes` (`src/feedback-factory/processor/parity.ts`) now normalizes
101
+ both sides before comparing status — eliminating false cutover-blocking divergences
102
+ from v1↔v2 vocabulary skew while still flagging real lifecycle mismatches.
103
+
104
+ - `relayOutbound` (`src/core/TelegramRelay.ts`) — the tokenless-standby reply
105
+ relay, extracted as a pure injectable unit with a bounded `AbortController`
106
+ timeout and a log line on every failure path. `server.ts` wires
107
+ `telegram.outboundRelay` to it. New optional `multiMachine.relayTimeoutMs`
108
+ (default 15000).
109
+
110
+ - `GET /updates/status` response gains a `restartImmediately` boolean (default
111
+ false for the fleet; true for an agent in primary-developer mode). Read-only;
112
+ agents gain it automatically on update.
113
+
114
+ - `convergence-check.sh` URL-provenance guard trusts sibling-node tunnel hosts
115
+ (any host under the agent's tunnel parent domain), in addition to the agent's
116
+ own host, Cloudflare quick tunnels, and the static allowlist. Deploys to
117
+ existing agents via the standard `migrateScripts()` template path (the template
118
+ content is the migration — no `PostUpdateMigrator` code change).
119
+
120
+ ## Evidence
121
+
122
+ Reproduction: feed the parity comparator one cluster (same fingerprint) whose
123
+ outcome is expressed in the two vocabularies — Instar `closed` vs Portal `resolved`
124
+ (the same terminal outcome) — and observe the status-branch verdict before vs after
125
+ the change. Ran live against the worktree source:
126
+
127
+ ```
128
+ input: { instar: "closed", portal: "resolved" }
129
+ BEFORE (raw `i.status !== p.status`): divergent = true ← false positive, blocks cutover
130
+ AFTER (normalizeStatus both sides): divergent = false (both → "closed")
131
+ genuine mismatch (instar "investigating" vs portal "resolved"): still_flagged = true
132
+ ```
133
+
134
+ So the benign vocabulary skew that previously produced a red parity verdict now
135
+ reconciles, while a real lifecycle divergence (`investigating` vs `resolved`→`closed`)
136
+ still surfaces. Confirmed across the full pair set + recurrence-not-masked + a green
137
+ `compareInvariants` verdict over a vocabulary-skewed window in
138
+ `tests/unit/feedback-factory/parity.test.ts` (156 unit + 4 integration green, `tsc` clean).
139
+
140
+ - Reproduction (live, 2026-06-01): driving the multi-machine reply proof, a
141
+ relayed reply hung 25s then 70s with no result and no log line; root cause was
142
+ the holder's tunnel being mid-restart, and the relay `fetch` having no timeout.
143
+ Once the tunnel was back, the relay completed (a tone-gate response and an `ok`
144
+ came back through the full standby→holder chain), confirming the path itself
145
+ works — but the hang + silence were real operational defects on the way there.
146
+ - Tests: `tests/unit/telegram-relay-timeout-observability.test.ts` (7) drive the
147
+ real `relayOutbound` with an injected fetch + logger: 2xx returns messageId and
148
+ posts the right URL + `Bearer` header; self-hold no-ops; no-peer-URL logs;
149
+ non-2xx logs the status; **a hanging holder aborts within the timeout (elapsed
150
+ under 2s) and logs `timeout after Nms`**; a network error logs its message; the
151
+ `silent` flag passes through. 7/7 green; `tsc` clean.
152
+
153
+ - The gap was observed live on 1.3.180: with the flag set true in config, the
154
+ agent behaved correctly (restarts not deferred) but `/updates/status` returned
155
+ no `restartImmediately` field — the #641 "surfaced in /updates/status" claim
156
+ was incomplete.
157
+ - Test: `tests/integration/updates-status-restart-immediately-route.test.ts`
158
+ (+2) — asserts the field is present and correct for both true and false. tsc +
159
+ linters clean.
160
+
161
+ - Reproduction (live, 2026-06-01): proving the multi-machine reply relay, the
162
+ command `POST https://echo-mini.dawn-tunnel.dev/telegram/reply/8882` (laptop
163
+ driving the mini's tokenless-standby relay) was blocked by the
164
+ `grounding-before-messaging` hook because its convergence-check URL-provenance
165
+ guard flagged `echo-mini.dawn-tunnel.dev` as unfamiliar — it knew the laptop's
166
+ own host `echo.dawn-tunnel.dev` but not its sibling. The mini's LAN address was
167
+ firewalled, so the tunnel host was the only path, and the proof was blocked.
168
+ - Before/after (the guard decision, real shipped template): own host
169
+ `echo.dawn-tunnel.dev` → parent `dawn-tunnel.dev`; sibling
170
+ `echo-mini.dawn-tunnel.dev` BLOCK→PASS (the fix); own host PASS→PASS;
171
+ `totally-fake-host.xyz` BLOCK→BLOCK; look-alike `echo.dawn-tunnel.dev.evil.com`
172
+ BLOCK→BLOCK; arbitrary host with a 2-label apex config BLOCK→BLOCK (apex not
173
+ over-trusted).
174
+ - Tests: `tests/unit/convergence-check-sibling-trust.test.ts` (6) execute the
175
+ real shipped `convergence-check.sh`: `bash -n` valid; sibling trusted; own
176
+ unchanged; fabricated blocked; look-alike suffix blocked; 2-label apex not
177
+ over-trusted. 6/6 green; `tsc` clean.
@@ -0,0 +1,58 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ Agent-to-agent messages now pass through a **"Ground Before You Assert"** gate
9
+ before they leave. When you send a peer a message via `threadline_send` that
10
+ asserts a full `https://…` URL to a host you have **not** confirmed this
11
+ session, the send is refused with a clear explanation instead of going out —
12
+ because an unverified claim handed to another agent propagates as fact (this is
13
+ exactly the failure that caused recent Echo↔Dawn incoherence: a peer handed over
14
+ an endpoint that 404'd and a token that 401'd, and both were treated as real).
15
+
16
+ It is a **block-with-override** gate, not a wall: known infrastructure hosts
17
+ (github, localhost, anthropic, npm, …) pass; a **bare** host reference (no
18
+ scheme — e.g. `dawn.bot-me.ai/api/instar/read`) passes, since it conveys the same
19
+ already-verified information without asserting a live, fetchable endpoint; and
20
+ once you have actually verified the URL (e.g. you curled it), you resend with the
21
+ new `groundingAck: true` argument and it goes through. So a false positive can
22
+ never permanently block a legitimate send — it only forces a conscious moment of
23
+ verification on the exact class of claim that has burned cross-agent trust.
24
+
25
+ The check is a pure function and runs inside the Threadline MCP process, so it
26
+ adds no network round-trip and never blocks on I/O.
27
+
28
+ ## What to Tell Your User
29
+
30
+ Your agent is now harder to mislead when it talks to other agents. If it is
31
+ about to tell a peer that some web endpoint is live without having checked, it
32
+ stops itself, verifies, and only then asserts it — the same discipline it already
33
+ applies before messaging you. Nothing for you to configure; agent-to-agent
34
+ collaboration just becomes more trustworthy.
35
+
36
+ ## Summary of New Capabilities
37
+
38
+ - `threadline_send` refuses a message asserting a scheme-qualified URL to an
39
+ unverified host, unless the caller sets the new `groundingAck: true` argument
40
+ (after verifying) — the structural realization of "grounding before every
41
+ Threadline communication."
42
+ - Known/infra hosts and bare-host references (no scheme) are exempt, so the gate
43
+ targets only unverified live-endpoint assertions.
44
+ - Pure, in-process check — no added latency, no I/O dependency.
45
+
46
+ ## Evidence
47
+
48
+ - Logic: `src/threadline/ThreadlineGroundingGate.ts` (`evaluateOutboundGrounding`),
49
+ 9 unit tests covering both sides of the boundary
50
+ (`tests/unit/threadline/ThreadlineGroundingGate.test.ts`).
51
+ - Wiring: `src/threadline/ThreadlineMCPServer.ts` `registerSendTool` — 4 integration
52
+ tests over the real MCP Client/Server transport (refuses an ungrounded URL and
53
+ proves `sendMessage` is never called; allows with `groundingAck`; allows a bare
54
+ host; allows a known/infra domain) in
55
+ `tests/unit/threadline/ThreadlineMCPServer.test.ts` (49 tests green).
56
+ - `tsc --noEmit` clean; companion constitution article
57
+ ("Ground Before You Assert", `docs/STANDARDS-REGISTRY.md`) proposed separately
58
+ and awaiting operator ratification.
@@ -0,0 +1,91 @@
1
+ # Side-Effects Review — feedback-factory canonical status normalization (Phase 1)
2
+
3
+ **Slug:** `feedback-factory-status-normalization`
4
+ **Date:** `2026-05-31`
5
+ **Author:** Echo
6
+ **Spec:** `docs/specs/feedback-factory-migration.md` (converged v2, approved by Justin 2026-05-26, topic 12476)
7
+ **Second-pass reviewer:** not required (pure additive primitives + one comparator predicate; both-sides-of-boundary unit coverage)
8
+ **Scope:** The status-vocabulary normalization primitives in `src/feedback-factory/processor/transitions.ts`, and their application in the Phase-3 parity comparator `src/feedback-factory/processor/parity.ts` (`compareClusterOutcomes`). Driven by Dawn's pinned canonical contract (thread-978f016b): the authoritative `V1_TO_V2_STATUS` (feedback-processor.py:1035) + terminal set (:379) that Portal owns.
9
+
10
+ ## Summary of the change
11
+
12
+ During the migration, three status vocabularies coexist: the v1 legacy literals Portal still writes (`open`/`fixed`/`resolved`/…), the mid-migration write-gate superset both sides accept, and the canonical v2 lifecycle (`V2_STATES`). The Phase-3 live-mirror parity comparator compared cluster outcome status with a raw `i.status !== p.status`, so an equivalent cluster — Portal `resolved` vs the ported Instar processor's `closed` — read as a **divergence**, which structurally **blocks Phase-4 cutover** (`ParityResult.divergent`). That is benign vocabulary skew being treated as a real history fork.
13
+
14
+ This change adds three pure primitives to `transitions.ts` — `V1_TO_V2_STATUS` (the v1→v2 projection map), `TERMINAL_STATUSES` + `isTerminalStatus()` (terminal check on the normalized status, incl. the terminal-only `legacy_closed` literal), and `normalizeStatus()` (idempotent v1→v2 projection; already-v2 and unknown values pass through) — and applies `normalizeStatus` to BOTH sides of the status comparison in `compareClusterOutcomes` before the `!==`. Reported divergence values stay raw so the operator still sees each side's actual stored status when a genuine mismatch survives. **No route/job behavior changes** — the parity comparator is exercised by the dry-run runner, and `transitions.ts` is a pure library.
15
+
16
+ ## Decision-point inventory
17
+
18
+ - `compareClusterOutcomes` status equality (`parity.ts:~155`) — **modify** — now compares in normalized v2 space; recurrence + missing-on-one-side checks unchanged.
19
+ - `normalizeStatus` / `isTerminalStatus` / `V1_TO_V2_STATUS` / `TERMINAL_STATUSES` (`transitions.ts`) — **add** — canonical vocabulary primitives mirrored from Portal's reference.
20
+
21
+ ---
22
+
23
+ ## 1. Over-block
24
+
25
+ The only "block/allow"-like surface here is `ParityResult.divergent`, which gates Phase-4 cutover. **Over-block before this change:** a window where Portal stored `resolved`/`open`/`fixed` and Instar recomputed `closed`/`new`/`fix_applied` for the SAME fingerprint produced a `status` divergence and a red verdict — blocking cutover on noise. This change removes exactly that false block: each v1↔v2 pair now reconciles. It does not newly reject any input — it only stops rejecting vocabulary-equivalent ones.
26
+
27
+ ---
28
+
29
+ ## 2. Under-block
30
+
31
+ **What real divergence could normalization now mask?** Only a difference that vanishes under the pinned v1→v2 map. The map is a small, fixed bijection on the legacy literals (`open→new`, `fixed→fix_applied`, `resolved→closed`; investigating/wontfix/duplicate identity). A genuine lifecycle mismatch — e.g. Instar `investigating` vs Portal `resolved` (→`closed`) — still differs after normalization and is still flagged (asserted in `parity.test.ts`). Recurrence divergence on a vocabulary-equivalent status is also still flagged (asserted) — normalization touches status only. Risk that the map itself is wrong is contained: it is byte-mirrored from Dawn's owned reference and asserted against drift in `transitions.test.ts`.
32
+
33
+ ---
34
+
35
+ ## 3. Level-of-abstraction fit
36
+
37
+ Correct layer. `normalizeStatus`/`isTerminalStatus` are pure processor-logic primitives living beside the existing ported lifecycle decision functions (`canTransition`, `detectCycling`) in `transitions.ts` — the same module that already owns `V2_STATES`. The parity comparator is the right and only consumer for the projection at cutover time; it now USES the shared primitive rather than re-encoding status equality. No higher-level gate is bypassed and no lower-level primitive is re-implemented.
38
+
39
+ ---
40
+
41
+ ## 4. Signal vs authority compliance
42
+
43
+ **Required reference:** [docs/signal-vs-authority.md](../../docs/signal-vs-authority.md)
44
+
45
+ - [x] No — this change has no block/allow surface over user/agent messages. `ParityResult.divergent` is a structural equivalence signal consumed by the dry-run/cutover decision (a human-gated process), not an autonomous block on traffic.
46
+
47
+ `compareClusterOutcomes` is a deterministic comparator over two pre-computed outcome lists; it owns no runtime authority over messages or operations. The normalization makes its signal *more* accurate (fewer false divergences) without granting it new authority. The terminal authority over a cluster's lifecycle remains with the curated cluster history (per the spec's Signal-vs-Authority lesson), untouched here.
48
+
49
+ ---
50
+
51
+ ## 5. Interactions
52
+
53
+ - **Shadowing:** none. The status branch is independent of the fingerprint invariant (invariant 1) and the recurrence branch; normalization is scoped to the status `!==` only. `missing-instar`/`missing-portal` paths are unchanged.
54
+ - **Double-fire:** none. Single comparator, single call site (the dry-run runner).
55
+ - **Races:** none. Pure functions over injected snapshots; no shared mutable state.
56
+ - **Feedback loops:** none. The comparator reads Portal's read-only snapshot + supplied Instar outcomes and emits a verdict; it writes nothing back into either system.
57
+ - **Import graph:** `parity.ts` now imports `normalizeStatus` from `transitions.ts`. `transitions.ts` imports nothing — no cycle introduced (confirmed: `tsc --noEmit` clean).
58
+
59
+ ---
60
+
61
+ ## 6. External surfaces
62
+
63
+ - **Other agents / install base:** none. Internal feedback-factory library code; not wired to a route or job. No CLAUDE.md-template/hook/config surface touched → no Migration-Parity obligation.
64
+ - **External systems:** none. Portal is read-only here; no write path.
65
+ - **Persistent state:** none. No schema, ledger, or memory file change. The JSONL audit-trail RECORD shape (`dryRunCompare.toRecords`) is unchanged — the `status` divergence still reports raw values, so existing audit consumers see the same field semantics.
66
+ - **Reported-value semantics:** an emitted `status` divergence continues to carry the RAW stored status of each side (not the normalized form), deliberately — so a human reading the audit trail sees what each side actually stored. Documented in code + tests.
67
+
68
+ ---
69
+
70
+ ## 7. Rollback cost
71
+
72
+ Pure code change — revert the two source edits and ship as a patch. No persistent state, no data migration, no agent-state repair, no user-visible surface. Reverting restores the prior raw `!==` comparison; the only effect of a revert is the re-appearance of vocabulary-skew false divergences in a dry-run (a stricter, not looser, gate — fail-safe direction for a cutover block).
73
+
74
+ ---
75
+
76
+ ## Equivalence verification
77
+
78
+ - `V1_TO_V2_STATUS` and `TERMINAL_STATUSES` are byte-mirrored from Dawn's pinned authoritative definitions (feedback-processor.py:1035 / :379) and asserted exactly in `transitions.test.ts` (no-drift tests).
79
+ - `normalizeStatus` proven idempotent (no v2 output value is itself a re-mapping v1 key) — asserted via double-apply.
80
+ - `isTerminalStatus` proven to normalize-before-check: raw v1 `resolved` reads terminal (the load-bearing case); `legacy_closed` is terminal but not a `V2_STATES` member.
81
+ - `transitions.ts` change is **purely additive** — `canTransition`/`detectCycling` (the Python byte-parity surface covered by `scripts/feedback-factory/transitions-parity.mjs`) are untouched, so byte-exact parity with the reference is preserved by construction.
82
+
83
+ ## Tests
84
+
85
+ - **Tier-1 unit (CI):** `tests/unit/feedback-factory/transitions.test.ts` — `normalizeStatus` (each mapping, identity entries, idempotence, already-v2 passthrough, unknown passthrough, exact-map no-drift) and `isTerminalStatus` (every terminal state, the normalize-before-check `resolved` case, non-terminal v1 literals incl. `fixed→fix_applied`, exact-set no-drift, `legacy_closed`). `tests/unit/feedback-factory/parity.test.ts` — each v1↔v2 pair reconciles, direction-agnostic, genuine lifecycle divergence still flagged with RAW reported values, recurrence not masked, and a green `compareInvariants` verdict across a vocabulary-skewed window. **156 feedback-factory unit tests green, `tsc` clean.**
86
+ - **Tier-2 integration:** `tests/integration/feedback-factory-process.test.ts` — 4/4 green (no regression in the processing composition).
87
+ - **No new E2E tier:** the comparator is not wired to a live route/job — the live dual-forward parity run (the Phase-4 cutover gate) is the operational verification and runs against Portal's `/api/instar/read` via `HttpParitySource`. Reasoned decision, documented.
88
+
89
+ ## Conclusion
90
+
91
+ This review produced no design change — the projection is the minimal, contract-faithful fix for the false-divergence seam Dawn pinned, scoped precisely to the parity comparator + the shared primitives. The two consumer-side sites that ALSO read raw status literals — `FeedbackStore.getActiveClusters` (`!= 'resolved'`) and `reportPartition` (raw `'open'`/`'fixed'`) — were deliberately left out of this change because the correct fix hinges on the canonical active/merge-candidate query semantics (`!= closed`, faithful to the reference `status != 'resolved'`, vs full `!isTerminal`), which is a bilateral question for Dawn (the domain owner) rather than a guess that could itself introduce a divergence. That open question is being raised to Dawn directly on thread-978f016b. Clear to ship.
@@ -0,0 +1,46 @@
1
+ # Side effects — URL-provenance sibling-node trust
2
+
3
+ ## What changes at runtime
4
+
5
+ The pre-messaging convergence check's URL-provenance guard now additionally
6
+ trusts URL hosts that share the agent's tunnel **parent** domain (sibling nodes
7
+ of the same multi-machine agent), in addition to the agent's exact own tunnel
8
+ host, Cloudflare quick tunnels, and the static allowlist it already trusted.
9
+
10
+ ## Who is affected
11
+
12
+ - **Single-machine agents:** NO behavior change. They address no sibling nodes;
13
+ the parent-domain trust simply never matches a host they'd ever message. A
14
+ fabricated unfamiliar URL is still flagged exactly as before.
15
+ - **Multi-machine agents:** a message that legitimately references a sibling
16
+ node (e.g. the laptop addressing the mini's tunnel host to drive the
17
+ multi-machine reply relay) is no longer falsely flagged as an "unfamiliar
18
+ domain."
19
+
20
+ ## Blast radius
21
+
22
+ - Single file: `src/templates/scripts/convergence-check.sh`, the URL-provenance
23
+ block only. Re-deployed to `.instar/scripts/convergence-check.sh` via the
24
+ existing `migrateScripts()` template-load path (no PostUpdateMigrator code
25
+ change; the template content IS the migration).
26
+ - No config keys added/changed. No new dependency. The check still runs as the
27
+ same heuristic gate behind the `grounding-before-messaging` hook.
28
+
29
+ ## Failure modes considered
30
+
31
+ - **Over-trust of a public-suffix apex:** prevented — the parent is derived only
32
+ when the own tunnel host has ≥3 DNS labels, so a 2-label apex config yields no
33
+ parent (verified by test).
34
+ - **Look-alike suffix attack** (`echo.dawn-tunnel.dev.evil.com`): blocked — the
35
+ match is a true DNS-suffix test (`${URL_HOST%.$PARENT}`), so a host that merely
36
+ contains the parent mid-string but ends elsewhere is not trusted (verified by
37
+ test).
38
+ - **Missing/empty tunnel config:** no parent derived → unchanged behavior.
39
+
40
+ ## Not touched
41
+
42
+ - The pre-existing inline fallback `PostUpdateMigrator.getConvergenceCheckInline()`
43
+ is intentionally NOT modified here. In practice `loadTemplate()` always returns
44
+ the template file, so the inline path is dead code; it additionally has a
45
+ separate, pre-existing bash syntax error on `main` (independent of this change)
46
+ and entangling a fix would muddy this diff. Flagged as a separate latent issue.
@@ -1,81 +0,0 @@
1
- # Upgrade Guide — vNEXT
2
-
3
- <!-- assembled-by: assemble-next-md -->
4
- <!-- bump: patch -->
5
-
6
- ## What Changed
7
-
8
- **A moved conversation's reply no longer hangs silently when the other machine
9
- is briefly unreachable.** When you move a conversation to another machine, that
10
- machine relays its replies through the machine that holds the Telegram
11
- connection. That relay had two operational defects, both found by driving the
12
- multi-machine feature live: it had no time limit (so when the receiving machine's
13
- connection was momentarily restarting, the reply hung for over a minute with no
14
- result), and it failed completely silently (a dropped reply wrote nothing to the
15
- log, so there was no way to tell why it didn't arrive).
16
-
17
- The relay is now bounded and observable: it gives the receiving machine a fixed
18
- window (15 seconds by default, adjustable) and then fails fast, and every failure
19
- writes one clear line saying exactly what went wrong (no reachable machine, a
20
- rejection with its status code, or a timeout). The relay logic was also extracted
21
- into its own well-tested unit.
22
-
23
- It also no longer reports a false success: previously the relay could report
24
- "delivered" even when the message never actually reached the chat (it accepted a
25
- response that carried no real message id). Now the receiving machine returns the
26
- real message id and the relay only counts a reply as delivered when that id is
27
- present — otherwise it's treated as undelivered and surfaced, so a busy or flaky
28
- moment becomes a real, visible failure (and a retry candidate) instead of a
29
- silent loss dressed up as success.
30
-
31
- `GET /updates/status` now includes the `restartImmediately` field. PR #641 added
32
- the primary-developer-mode flag and claimed it was surfaced in this endpoint, but
33
- the route's hand-picked response object had omitted it — so the flag's live state
34
- wasn't actually readable there. This adds the one missing line so the route
35
- echoes the value `AutoUpdater.getStatus()` already computes.
36
-
37
- ## What to Tell Your User
38
-
39
- Nothing to configure. If you run across more than one machine and move a
40
- conversation between them, a reply that can't be delivered now fails quickly with
41
- a clear reason in the log, instead of hanging for over a minute and vanishing
42
- without explanation. Single-machine setups are unaffected.
43
-
44
- Nothing to do. If anyone asks how to tell whether an agent is set to always jump
45
- to the newest version immediately, the status readout now shows that on/off state
46
- directly.
47
-
48
- ## Summary of New Capabilities
49
-
50
- - `relayOutbound` (`src/core/TelegramRelay.ts`) — the tokenless-standby reply
51
- relay, extracted as a pure injectable unit with a bounded `AbortController`
52
- timeout and a log line on every failure path. `server.ts` wires
53
- `telegram.outboundRelay` to it. New optional `multiMachine.relayTimeoutMs`
54
- (default 15000).
55
-
56
- - `GET /updates/status` response gains a `restartImmediately` boolean (default
57
- false for the fleet; true for an agent in primary-developer mode). Read-only;
58
- agents gain it automatically on update.
59
-
60
- ## Evidence
61
-
62
- - Reproduction (live, 2026-06-01): driving the multi-machine reply proof, a
63
- relayed reply hung 25s then 70s with no result and no log line; root cause was
64
- the holder's tunnel being mid-restart, and the relay `fetch` having no timeout.
65
- Once the tunnel was back, the relay completed (a tone-gate response and an `ok`
66
- came back through the full standby→holder chain), confirming the path itself
67
- works — but the hang + silence were real operational defects on the way there.
68
- - Tests: `tests/unit/telegram-relay-timeout-observability.test.ts` (7) drive the
69
- real `relayOutbound` with an injected fetch + logger: 2xx returns messageId and
70
- posts the right URL + `Bearer` header; self-hold no-ops; no-peer-URL logs;
71
- non-2xx logs the status; **a hanging holder aborts within the timeout (elapsed
72
- under 2s) and logs `timeout after Nms`**; a network error logs its message; the
73
- `silent` flag passes through. 7/7 green; `tsc` clean.
74
-
75
- - The gap was observed live on 1.3.180: with the flag set true in config, the
76
- agent behaved correctly (restarts not deferred) but `/updates/status` returned
77
- no `restartImmediately` field — the #641 "surfaced in /updates/status" claim
78
- was incomplete.
79
- - Test: `tests/integration/updates-status-restart-immediately-route.test.ts`
80
- (+2) — asserts the field is present and correct for both true and false. tsc +
81
- linters clean.