instar 1.3.1004 → 1.3.1005

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.
@@ -52,6 +52,27 @@ export declare class IMessageAdapter implements MessagingAdapter {
52
52
  private auditLog;
53
53
  private messageHandler;
54
54
  private started;
55
+ /**
56
+ * The instant the adapter actually connected, or null when it is not connected.
57
+ *
58
+ * Previously `getConnectionInfo()` computed this inline as
59
+ * `started ? new Date().toISOString() : undefined` — i.e. it returned the moment the CALLER
60
+ * ASKED, never the moment the connection was established. Asking three times produced three
61
+ * different "connection times", all of them wrong, and each looked more precise than the state
62
+ * field beside it. A fabricated timestamp is worse than an absent one: it invites arithmetic
63
+ * (uptime, staleness) on a number that means nothing.
64
+ *
65
+ * CONTRACT-EVIDENCE: EXEMPT — this change touches no API-contract surface. It adds a private
66
+ * field, assigns it inside the existing start()/stop() paths, and reads it in
67
+ * getConnectionInfo(). Every call into `this.backend` (connect, disconnect, send, poll) is
68
+ * byte-for-byte unchanged, and no request/response shape crosses the Messages boundary. The
69
+ * decisive test for the exemption is whether a live-API contract run could confirm or falsify
70
+ * the change: it could not — correctness here depends entirely on WHEN a local field is
71
+ * assigned, which a real Messages account cannot observe or contradict. The marker covers this
72
+ * specific edit only; the next change to this file's API surface must remove it and run
73
+ * `npm run test:contract` for real.
74
+ */
75
+ private connectedAtIso;
55
76
  private authorizedContacts;
56
77
  private receivedMessageIds;
57
78
  private lastInboundFrom;
@@ -1 +1 @@
1
- {"version":3,"file":"IMessageAdapter.d.ts","sourceRoot":"","sources":["../../../src/messaging/imessage/IMessageAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IMessageAdapter.d.ts","sourceRoot":"","sources":["../../../src/messaging/imessage/IMessageAdapter.ts"],"names":[],"mappings":"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"}
@@ -64,6 +64,27 @@ export class IMessageAdapter {
64
64
  // State
65
65
  messageHandler = null;
66
66
  started = false;
67
+ /**
68
+ * The instant the adapter actually connected, or null when it is not connected.
69
+ *
70
+ * Previously `getConnectionInfo()` computed this inline as
71
+ * `started ? new Date().toISOString() : undefined` — i.e. it returned the moment the CALLER
72
+ * ASKED, never the moment the connection was established. Asking three times produced three
73
+ * different "connection times", all of them wrong, and each looked more precise than the state
74
+ * field beside it. A fabricated timestamp is worse than an absent one: it invites arithmetic
75
+ * (uptime, staleness) on a number that means nothing.
76
+ *
77
+ * CONTRACT-EVIDENCE: EXEMPT — this change touches no API-contract surface. It adds a private
78
+ * field, assigns it inside the existing start()/stop() paths, and reads it in
79
+ * getConnectionInfo(). Every call into `this.backend` (connect, disconnect, send, poll) is
80
+ * byte-for-byte unchanged, and no request/response shape crosses the Messages boundary. The
81
+ * decisive test for the exemption is whether a live-API contract run could confirm or falsify
82
+ * the change: it could not — correctness here depends entirely on WHEN a local field is
83
+ * assigned, which a real Messages account cannot observe or contradict. The marker covers this
84
+ * specific edit only; the next change to this file's API surface must remove it and run
85
+ * `npm run test:contract` for real.
86
+ */
87
+ connectedAtIso = null;
67
88
  authorizedContacts; // normalized E.164
68
89
  receivedMessageIds = new Set();
69
90
  lastInboundFrom = new Map(); // normalized contact → timestamp
@@ -145,12 +166,15 @@ export class IMessageAdapter {
145
166
  this._logStartupWarnings();
146
167
  await this.backend.connect();
147
168
  this.started = true;
169
+ // Recorded HERE, once, at the moment it is true — not synthesised later on read.
170
+ this.connectedAtIso = new Date().toISOString();
148
171
  // Start stall detection
149
172
  this.stallDetector.start();
150
173
  console.log('[imessage] Adapter started (backend: native)');
151
174
  }
152
175
  async stop() {
153
176
  this.started = false;
177
+ this.connectedAtIso = null;
154
178
  this.stallDetector.stop();
155
179
  await this.backend.disconnect();
156
180
  console.log('[imessage] Adapter stopped');
@@ -206,7 +230,7 @@ export class IMessageAdapter {
206
230
  getConnectionInfo() {
207
231
  return {
208
232
  state: this.backend.state,
209
- connectedAt: this.started ? new Date().toISOString() : undefined,
233
+ connectedAt: this.connectedAtIso ?? undefined,
210
234
  lastError: undefined,
211
235
  reconnectAttempts: 0,
212
236
  };
@@ -1 +1 @@
1
- {"version":3,"file":"IMessageAdapter.js","sourceRoot":"","sources":["../../../src/messaging/imessage/IMessageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAiB,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAA6C,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAQnF,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAUpC,MAAM,OAAO,eAAe;IACjB,QAAQ,GAAG,UAAU,CAAC;IAE/B,oDAAoD;IAC5C,MAAM,CAAiB;IACvB,QAAQ,CAAS;IACR,WAAW,CAAU;IACrB,oBAAoB,CAAU;IAC9B,mBAAmB,CAAS;IAC5B,WAAW,CAAoB;IACxC,SAAS,CAAqB;IAEtC,aAAa;IACL,OAAO,CAAgB;IACvB,MAAM,CAAgB;IACrB,QAAQ,CAAoB;IAC7B,QAAQ,CAAyB;IACjC,aAAa,CAAgB;IAC7B,WAAW,CAAsB;IACjC,QAAQ,CAAmB;IAEnC,QAAQ;IACA,cAAc,GAAiD,IAAI,CAAC;IACpE,OAAO,GAAG,KAAK,CAAC;IAChB,kBAAkB,CAAc,CAAE,mBAAmB;IACrD,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAE,iCAAiC;IAC/E,iBAAiB,GAAG,IAAI,GAAG,EAAqB,CAAC;IACjD,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAE,0CAA0C;IAE5F,iCAAiC;IACjC,eAAe,GAAuC,IAAI,CAAC;IAC3D,eAAe,GAAgF,IAAI,CAAC;IAEpG,YAAY,MAA+B,EAAE,QAAgB;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAmC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,uDAAuD;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAE3D,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAC;QAC7H,CAAC;QAED,2EAA2E;QAC3E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,KAAK,CAAC;QACtE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAEvC,iCAAiC;QACjC,yEAAyE;QACzE,uEAAuE;QACvE,iEAAiE;QACjE,iCAAiC;QACjC,EAAE;QACF,oEAAoE;QACpE,wEAAwE;QACxE,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;eACrC,eAAe,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC;YAC/B,MAAM,EAAE,eAAe;YACvB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;YAC1C,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAClD,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC;YAC5D,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACvD,uEAAuE;YACvE,8EAA8E;YAC9E,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,aAAa,CAAC;SAC/D,CAAC,CAAC;QAEH,oBAAoB;QACpB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC;YACvD,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAElD,sCAAsC;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,sBAAsB,CAAC;YACzC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,wBAAwB,CAAC;SAC5D,CAAC,CAAC;QAEH,4BAA4B;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC;YACrC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC;YACzD,qBAAqB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE;SAC/D,CAAC,CAAC;QAEH,0BAA0B;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,mBAAmB,CAAC;YACzC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAChD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,GAAG;SAChD,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAClC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAC/C,CAAC;QAEF,8BAA8B;QAC9B,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAsB,EAAE,EAAE;YACxD,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IAEnC,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,4BAA4B;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,wBAAwB;QACxB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAE3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,QAAyB;QAClC,MAAM,IAAI,KAAK,CACb,iFAAiF;YACjF,qFAAqF,CACtF,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,OAA4C;QACpD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,iBAAyB;QACzC,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,2BAA2B;IAE3B,eAAe,CAAC,MAAc,EAAE,WAAmB;QACjD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,mBAAmB,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,mBAAmB,CAAC,WAAmB;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC;IAED,wBAAwB;IAExB,qBAAqB,CAAC,MAAc,EAAE,WAAmB,EAAE,IAAY;QACrE,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAED,mBAAmB,CAAC,MAAc;QAChC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,iBAAiB,CAAC,KAA0B;QAC1C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,UAAU,CAAC,QAA8D;QACvE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,0BAA0B;IAE1B,sBAAsB,CAAC,MAAc,EAAE,KAAK,GAAG,EAAE;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,KAAK,GAAG,EAAE;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,cAAc,CAAC,MAAc,EAAE,KAAK,GAAG,EAAE;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,wBAAwB;IAExB,iBAAiB;QACf,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;YAChE,SAAS,EAAE,SAAS;YACpB,iBAAiB,EAAE,CAAC;SACrB,CAAC;IACJ,CAAC;IAED,+CAA+C;IAE/C,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,wBAAwB;IAExB,+DAA+D;IAC/D,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,6DAA6D;IAC7D,sBAAsB;QACpB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,SAAiB;QAC3B,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW;YAAE,OAAO,WAAW,CAAC;QAErC,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACtD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,GAAG,QAAQ;YAAE,OAAO,WAAW,CAAC;QAE5D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,SAAiB;QAM5B,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAElD,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,qBAAqB;gBAChC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;QAC7E,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,qBAAqB;gBAChC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;QAC3E,CAAC;QAED,8BAA8B;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,0BAA0B;gBACrC,QAAQ,EAAE,WAAW;gBACrB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mEAAmE,EAAE,CAAC;QACzG,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,kBAAkB;gBAC7B,QAAQ;gBACR,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YAEH,8CAA8C;YAC9C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBAC1C,SAAS,EAAE,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC;gBACrD,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,qBAAqB;aAClD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEnB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC/E,CAAC;QAED,kDAAkD;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,SAAS,GAAc;YAC3B,KAAK;YACL,SAAS,EAAE,UAAU;YACrB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;YACpB,KAAK,EAAE,MAAM,EAAE,aAAa;SAC7B,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE7C,0BAA0B;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,KAAa,EAAE,SAAiB,EAAE,IAAY;QAIxD,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,qBAAqB;gBAChC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;QAChE,CAAC;QAED,iCAAiC;QACjC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,0EAA0E;QAC1E,IAAI,SAAS,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,sBAAsB;gBACjC,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;QAClF,CAAC;QAED,YAAY;QACZ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,SAAS,EAAE,UAAU;gBACrB,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,qBAAqB;gBAChC,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;aACnD,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QAC/D,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEpC,sBAAsB;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,UAAU;YACrB,IAAI;YACJ,OAAO,EAAE,IAAI;YACb,QAAQ;YACR,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;SACnD,CAAC,CAAC;QAEH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,+DAA+D;IAC/D,kBAAkB;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,qBAAqB;IAErB,uDAAuD;IACvD,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,oCAAoC;IACpC,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,IAAY,EAAE,MAAe;QACzC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;YAC/B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC;QAED,qFAAqF;QACrF,MAAM,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;QAEzD,yEAAyE;QACzE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE9D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,SAAS,CAAC;YAEhE,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YAClD,CAAC;YAED,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;YACjD,CAAC;YAED,gEAAgE;QAClE,CAAC;QAED,qGAAqG;QACrG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,oDAAoD;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9E,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;IAC7D,CAAC;IAED,gBAAgB;IAEhB,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,SAAiB,EAAE,IAAY;QAChD,IAAI,CAAC,WAAW,CAAC;YACf,SAAS,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;YAC9B,SAAS,EAAE,mBAAmB,CAAC,SAAS,CAAC;YACzC,IAAI;YACJ,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,EAAU;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,oBAAoB,CAAC,QAAgB;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE7C,oEAAoE;QACpE,uDAAuD;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3C,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,CAAC;gBAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBAElC,6DAA6D;gBAC7D,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;wBACpC,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;wBACtC,IAAI,MAAM,KAAK,OAAO;4BAAE,SAAS;oBACnC,CAAC;oBAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;oBAC1C,IAAI,CAAC;wBAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC1D,CAAC;gBAED,wDAAwD;gBACxD,IAAI,CAAC;oBACH,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACzB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,iCAAiC,IAAI,KAAM,GAAa,CAAC,OAAO,IAAI;wBAC/E,oEAAoE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,qCAAsC,GAAa,CAAC,OAAO,IAAI;gBAC1E,6DAA6D,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iBAAiB;IAEjB;;;OAGG;IACK,0BAA0B;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;QAE7C,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CACV,wEAAwE;oBACxE,yGAAyG,CAC1G,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CACV,6EAA6E;gBAC7E,2CAA2C,CAC5C,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,gCAAgC;QAChC,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CACV,0EAA0E;gBAC1E,kEAAkE;gBAClE,+CAA+C,CAChD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CACV,qDAAqD;gBACrD,sFAAsF,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,GAAqB;QACxD,6BAA6B;QAC7B,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO;QAEzB,+BAA+B;QAC/B,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO;QACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAErC,iEAAiE;QACjE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,yDAAyD,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnH,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEvD,gFAAgF;QAChF,0EAA0E;QAC1E,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,gDAAgD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;YACpJ,2DAA2D;YAC3D,IAAI,CAAC,WAAW,CAAC;gBACf,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,SAAS,EAAE,GAAG,CAAC,MAAM;gBACrB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,IAAI;gBACd,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;gBACvD,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,cAAc,EAAE,GAAG,CAAC,MAAM;gBAC1B,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,oEAAoE;QACpE,MAAM,aAAa,GAAG,aAAa,CAAC,YAAY,CAAC;QAEjD,sBAAsB;QACtB,IAAI,CAAC,WAAW,CAAC;YACf,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,MAAM;YACrB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;YACvD,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,cAAc,EAAE,GAAG,CAAC,MAAM;YAC1B,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,oBAAoB;QACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC3C,SAAS,EAAE,GAAG,CAAC,MAAM;YACrB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,aAAa;YACnB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;YACvD,GAAG,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEnC,sCAAsC;QACtC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAY;gBACvB,EAAE,EAAE,GAAG,CAAC,SAAS;gBACjB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE;gBACrD,UAAU,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;gBACxD,QAAQ,EAAE;oBACR,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;iBAC7B;aACF,CAAC;YAEF,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,qCAAsC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,OAAO;YAAE,OAAO;QAEhC,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,GAAG,GAAG,OAAO,GAAG,QAAQ;YAAE,OAAO;QAErC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;QAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,qBAAqB,CAAC;QAE3D,qCAAqC;QACrC,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9F,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,KAAK,CAAC,oCAAoC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC;YAC1G,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,SAAiB;QACxC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,qBAAqB,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC7D,IAAI,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,KAAe;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACxD,IAAI,GAAG,GAAG,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC/C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"IMessageAdapter.js","sourceRoot":"","sources":["../../../src/messaging/imessage/IMessageAdapter.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.1004",
3
+ "version": "1.3.1005",
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",
@@ -0,0 +1,185 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * recheck-parked-tests.mjs — the EXIT PATH for `FLAKY_TESTS`.
4
+ *
5
+ * THE DEFECT THIS CLOSES. `vitest.push.config.ts`'s `FLAKY_TESTS` array excludes tests from the
6
+ * push/CI gate. Adding an entry costs nothing — the file is classified as ordinary config, so
7
+ * removing a guard from CI needs no ELI16, no side-effects review, no trace. And NOTHING ever
8
+ * re-checks whether a parked test could come back. Entry is free; exit is impossible. The ungated
9
+ * surface can therefore only grow.
10
+ *
11
+ * That is not theoretical. Measured on 2026-07-27, three consecutive runs each:
12
+ *
13
+ * notification-spam-prevention.test.ts parked "assertion mismatch, emoji vs keyword" 15/15/15 PASS
14
+ * message-formatter.test.ts parked "expects /msg reply format" 17/17/17 PASS
15
+ * ReflectionConsolidator.test.ts parked "pattern detection non-deterministic" 16/16/16 PASS
16
+ *
17
+ * All three were repaired at some point and never re-armed. Note the INVERSE of the lesson already
18
+ * recorded in that same file: the 2026-06-05 pair ROTTED while parked; these were FIXED while parked.
19
+ * Nobody noticed either way, because nothing looks. A fourth entry,
20
+ * `tests/unit/slack-stall-active-gate.test.ts`, does not exist on disk at all — an exclusion that
21
+ * excludes nothing.
22
+ *
23
+ * ── WHAT THIS IS, AND WHAT IT DELIBERATELY IS NOT ────────────────────────────────────────────────
24
+ *
25
+ * It is a SIGNAL. It reports which parked entries now pass deterministically and which point at
26
+ * missing files. It NEVER re-arms anything and never edits the config.
27
+ *
28
+ * That restraint is the design, not timidity: re-arming is a JUDGEMENT about whether the reason for
29
+ * parking still holds. "Passes on this machine" does not establish "passes in CI" — a third of the
30
+ * list is parked for a native-binding failure whose stated scope is literally "on this machine", and
31
+ * CI is a different environment where it may genuinely fail. A tool that auto-re-armed on a local
32
+ * green would be exactly the confident-wrong-answer this whole area is about.
33
+ *
34
+ * ── WHY IT IS CHEAP ENOUGH TO ACTUALLY RUN ──────────────────────────────────────────────────────
35
+ *
36
+ * A tool nobody runs is a decoration, and running ~90 test files repeatedly is not something anyone
37
+ * will do. So the default is bounded: the missing-file scan is free (no test execution at all), and
38
+ * only a small ROTATING slice is executed per invocation, chosen from a stable hash of the day. Over
39
+ * successive runs the whole list is covered without any single run being expensive.
40
+ *
41
+ * Usage:
42
+ * node scripts/recheck-parked-tests.mjs # missing-file scan + rotating slice
43
+ * node scripts/recheck-parked-tests.mjs --slice 20 # widen the slice
44
+ * node scripts/recheck-parked-tests.mjs --missing-only # free: no test execution
45
+ * node scripts/recheck-parked-tests.mjs --json # machine-readable
46
+ * node scripts/recheck-parked-tests.mjs --runs 3 # runs per file (default 2)
47
+ *
48
+ * Always exits 0. It reports; it does not gate. Making it a gate would recreate the original
49
+ * problem from the other side — a red build for a test somebody parked on purpose.
50
+ */
51
+
52
+ import fs from 'node:fs';
53
+ import path from 'node:path';
54
+ import { fileURLToPath } from 'node:url';
55
+ import { spawnSync } from 'node:child_process';
56
+
57
+ const ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
58
+ const CONFIG = path.join(ROOT, 'vitest.push.config.ts');
59
+
60
+ function parseArgs(argv) {
61
+ const out = { slice: 6, runs: 2, json: false, missingOnly: false };
62
+ for (let i = 2; i < argv.length; i++) {
63
+ const a = argv[i];
64
+ if (a === '--json') out.json = true;
65
+ else if (a === '--missing-only') out.missingOnly = true;
66
+ else if (a === '--slice') out.slice = Number(argv[++i]);
67
+ else if (a === '--runs') out.runs = Number(argv[++i]);
68
+ }
69
+ if (!Number.isFinite(out.slice) || out.slice < 0) out.slice = 6;
70
+ if (!Number.isFinite(out.runs) || out.runs < 1) out.runs = 2;
71
+ return out;
72
+ }
73
+
74
+ /**
75
+ * Read the parked entries out of the config.
76
+ *
77
+ * Deliberately a literal parse of the array rather than importing the config: importing would
78
+ * execute it, and this must be safe to run against a config that does not load.
79
+ */
80
+ function readParkedEntries() {
81
+ const src = fs.readFileSync(CONFIG, 'utf-8');
82
+ const m = /const FLAKY_TESTS = \[(.*?)\n\];/s.exec(src);
83
+ if (!m) throw new Error(`could not locate FLAKY_TESTS in ${path.relative(ROOT, CONFIG)}`);
84
+
85
+ // Parse LINE BY LINE and skip comments. A naive /'([^']+)'/g over the whole block also matches
86
+ // apostrophes inside the prose — "the test's own beforeAll" yields a bogus entry `s own`. That is
87
+ // not hypothetical: the first version of this script reported 42 dangling entries, nearly all of
88
+ // them fragments of the explanatory comment added when two tests were re-armed. The array is
89
+ // heavily commented BY DESIGN (those comments are what stop the next person re-parking on a wrong
90
+ // label), so the parser has to tolerate prose rather than the prose having to stay terse.
91
+ const entries = [];
92
+ for (const raw of m[1].split('\n')) {
93
+ const line = raw.trim();
94
+ if (line.startsWith('//') || line.startsWith('*') || line.startsWith('/*')) continue;
95
+ const e = /^'([^']+)',?$/.exec(line);
96
+ if (e) entries.push(e[1]);
97
+ }
98
+ return entries;
99
+ }
100
+
101
+ /** Stable rotation so successive runs cover the whole list without any run being expensive. */
102
+ function rotatingSlice(items, size, dayKey) {
103
+ if (size <= 0 || items.length === 0) return [];
104
+ let h = 0;
105
+ for (const c of dayKey) h = (h * 31 + c.charCodeAt(0)) >>> 0;
106
+ const start = h % items.length;
107
+ return Array.from({ length: Math.min(size, items.length) }, (_, i) => items[(start + i) % items.length]);
108
+ }
109
+
110
+ function runOnce(file) {
111
+ const res = spawnSync(
112
+ process.execPath,
113
+ ['./node_modules/.bin/vitest', 'run', file, '--reporter=basic'],
114
+ { cwd: ROOT, encoding: 'utf-8', timeout: 300_000, env: { ...process.env } },
115
+ );
116
+ const out = `${res.stdout ?? ''}${res.stderr ?? ''}`;
117
+ if (res.status === 0) return 'pass';
118
+ if (res.error || res.status === null) return 'errored';
119
+ return /Tests\s+\d+\s+failed/.test(out) ? 'fail' : 'errored';
120
+ }
121
+
122
+ const opts = parseArgs(process.argv);
123
+ const entries = readParkedEntries();
124
+
125
+ // Glob patterns cannot be resolved to a single file; report them rather than pretending.
126
+ const isGlob = (e) => e.includes('*');
127
+ const concrete = entries.filter((e) => !isGlob(e));
128
+ const globs = entries.filter(isGlob);
129
+
130
+ const missing = concrete.filter((e) => !fs.existsSync(path.join(ROOT, e)));
131
+ const present = concrete.filter((e) => fs.existsSync(path.join(ROOT, e)));
132
+
133
+ const results = [];
134
+ if (!opts.missingOnly) {
135
+ const dayKey = new Date().toISOString().slice(0, 10);
136
+ for (const file of rotatingSlice(present, opts.slice, dayKey)) {
137
+ const runs = Array.from({ length: opts.runs }, () => runOnce(file));
138
+ const verdict = runs.every((r) => r === 'pass')
139
+ ? 'deterministic-pass'
140
+ : runs.every((r) => r === 'fail')
141
+ ? 'deterministic-fail'
142
+ : runs.includes('errored')
143
+ ? 'could-not-run'
144
+ : 'genuinely-flaky';
145
+ results.push({ file, runs, verdict });
146
+ }
147
+ }
148
+
149
+ const report = {
150
+ parkedTotal: entries.length,
151
+ concrete: concrete.length,
152
+ globPatterns: globs,
153
+ missingFiles: missing,
154
+ checked: results,
155
+ note:
156
+ 'SIGNAL ONLY — nothing is re-armed. A local deterministic-pass does NOT establish that the ' +
157
+ 'test passes in CI; a third of this list is parked for an environment reason whose stated ' +
158
+ 'scope is "on this machine". Re-arming remains a judgement.',
159
+ };
160
+
161
+ if (opts.json) {
162
+ console.log(JSON.stringify(report, null, 2));
163
+ } else {
164
+ console.log(`\nParked tests: ${report.parkedTotal} entries (${concrete.length} concrete, ${globs.length} glob patterns)\n`);
165
+ if (missing.length) {
166
+ console.log(` ENTRIES POINTING AT NOTHING (${missing.length}) — excluding a file that does not exist:`);
167
+ for (const f of missing) console.log(` - ${f}`);
168
+ console.log('');
169
+ } else {
170
+ console.log(' No dangling entries.\n');
171
+ }
172
+ if (results.length) {
173
+ console.log(` RE-CHECKED THIS RUN (rotating slice of ${results.length}, ${opts.runs} runs each):`);
174
+ for (const r of results) console.log(` ${r.verdict.padEnd(20)} ${r.file}`);
175
+ const back = results.filter((r) => r.verdict === 'deterministic-pass');
176
+ if (back.length) {
177
+ console.log(`\n ${back.length} entr${back.length === 1 ? 'y' : 'ies'} now pass deterministically HERE.`);
178
+ console.log(' That is a prompt to look, not a verdict: re-arming is a judgement about whether');
179
+ console.log(' the environment reason still holds, and CI is a different environment.');
180
+ }
181
+ }
182
+ console.log(`\n${report.note}\n`);
183
+ }
184
+
185
+ process.exit(0);
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "./builtin-manifest.schema.json",
3
3
  "schemaVersion": 1,
4
- "generatedAt": "2026-07-27T15:44:54.818Z",
5
- "instarVersion": "1.3.1004",
4
+ "generatedAt": "2026-07-27T15:52:35.456Z",
5
+ "instarVersion": "1.3.1005",
6
6
  "entryCount": 202,
7
7
  "entries": {
8
8
  "hook:session-start": {
@@ -0,0 +1,235 @@
1
+ # Upgrade Guide — vNEXT
2
+
3
+ <!-- assembled-by: assemble-next-md -->
4
+ <!-- bump: patch -->
5
+
6
+ ## What Changed
7
+
8
+ `GET /channels` covers WhatsApp and iMessage. Both adapters existed but had no registry row — a gap
9
+ recorded explicitly when the direct user channels shipped, and a hole in the registry's own
10
+ "absence is impossible" property, since a channel with no row cannot report that it is missing.
11
+
12
+ WhatsApp is read from `getStatus().state`, a real state machine rather than a boolean, so
13
+ `qr-pending` maps to `reachable-no-credential` — the link is alive and waiting for a human to scan a
14
+ pairing code, and a restart will not help. `connecting`/`reconnecting` report `unknown` with the phase
15
+ named rather than being guessed; `disconnected`/`closed` are `broken`; an unrecognised state is
16
+ `unknown`, never `working`.
17
+
18
+ iMessage is read from `getConnectionInfo().state`, deliberately NOT the sibling `connectedAt` — that
19
+ field is computed as `started ? new Date().toISOString() : undefined`, so it reports the moment you
20
+ asked rather than the moment it connected. A source ratchet fails if anyone wires it in.
21
+
22
+ `IMessageAdapter.getConnectionInfo().connectedAt` was computed inline as
23
+ `started ? new Date().toISOString() : undefined`, so it reported the moment of the READ rather than
24
+ the moment of connection. Three reads produced three different "connection times", all wrong.
25
+
26
+ The instant is now captured once, immediately after `started` flips true in `start()`, and cleared in
27
+ `stop()`. An adapter that never connected reports no time.
28
+
29
+ Adds `scripts/recheck-parked-tests.mjs` — the missing EXIT PATH for `vitest.push.config.ts`'s
30
+ `FLAKY_TESTS`. Entry to that list costs nothing (the file is classified as ordinary config, so
31
+ removing a guard from CI needs no artifact), and nothing ever re-checked whether a parked test could
32
+ return. Entry free, exit impossible, ungated surface monotonically growing.
33
+
34
+ The script reports which parked entries now pass deterministically and which point at files that no
35
+ longer exist. It never re-arms and never edits config.
36
+
37
+ Skipping the host-wide test-runner bound via `INSTAR_HOST_TEST_SEMAPHORE=off` printed a deterministic
38
+ warning — identical on every run. The shared detector that counts sustained self-disables was consumed
39
+ only by `dev:preflight`, hours downstream.
40
+
41
+ Measured on 2026-07-27: an agent self-disabled the bound 37 times in about three hours and read the
42
+ same warning 37 times as routine output. The detector's threshold is 3.
43
+
44
+ The skip warning now also reports the current count, that this is no longer an exception, and that
45
+ `dev:preflight` fails on the signature. It reuses the shared detector, so the number in the warning
46
+ and the number that fails preflight cannot drift.
47
+
48
+ `scripts/lib/classify-tier.mjs` no longer treats a `.config` FILENAME reference as evidence of a
49
+ config surface. The `\.config\b` alternative in `CONFIG_SURFACE_HINT` matched any text containing
50
+ `.config`, including filenames — so a script that merely READ `vitest.push.config.ts`, combined with
51
+ an ordinary object literal, fired "new capability: new config key added" and raised that change's risk
52
+ floor to 2.
53
+
54
+ ## What to Tell Your User
55
+
56
+ Your agent can now tell you whether WhatsApp and iMessage are actually working, alongside Telegram and
57
+ Slack.
58
+
59
+ The useful part is what it says when WhatsApp is waiting for you to scan a pairing code. That is not
60
+ broken — the connection is fine, it just needs you for a moment — and restarting things would not fix
61
+ it. It now says exactly that, instead of lumping it in with a dropped connection.
62
+
63
+ It is also careful about what it does not know. If a link is mid-connection it says so rather than
64
+ guessing, and a working link means the connection was up when it checked, not a promise that a message
65
+ to one particular person will arrive.
66
+
67
+ If your agent uses iMessage, the "connected since" time it reported was never real — it was recomputed
68
+ as the current time every time anything asked, so it always said "just now".
69
+
70
+ That is a small thing that could have caused a confident wrong answer, because a precise-looking
71
+ timestamp invites questions like how long has this been up or did it drop recently. Those would all
72
+ have been answered with a number that meant nothing.
73
+
74
+ It now records the moment it actually connects, and reports nothing at all when it is not connected —
75
+ which is the honest answer rather than a placeholder.
76
+
77
+ None — internal change (no user-facing surface).
78
+
79
+ None — internal change (no user-facing surface).
80
+
81
+ None — internal change (no user-facing surface).
82
+
83
+ ## Summary of New Capabilities
84
+
85
+ No new endpoint, command, or config key. `GET /channels` gains `user-whatsapp` and `user-imessage`
86
+ rows with live-state verdicts.
87
+
88
+ No new endpoint, command, or config key. The iMessage connection-info object now reports a real
89
+ connect instant instead of the current time.
90
+
91
+ None — internal change (no user-facing surface).
92
+
93
+ None — internal change (no user-facing surface).
94
+
95
+ None — internal change (no user-facing surface).
96
+
97
+ ## Evidence
98
+
99
+ Falsified by flattening `qr-pending` to `broken` in production:
100
+
101
+ ```
102
+ × THE STATE A BOOLEAN LOSES: qr-pending is reachable-no-credential, not broken
103
+ → expected 'broken' to be 'reachable-no-credential'
104
+ Tests 1 failed | 15 passed (16)
105
+ ```
106
+
107
+ Restored byte-identical. Green across every suite touching the change:
108
+ `Test Files 5 passed (5) · Tests 59 passed (59)` (`user-channel-wa-imessage`,
109
+ `user-channel-liveness`, `channel-registry`, `channel-registry-claims`, `channels-route`);
110
+ `tsc --noEmit` exit 0. The integration test pinning the exact channel set and the audience partition
111
+ was updated in this change rather than left for CI to catch.
112
+
113
+ Falsified by restoring the inline expression:
114
+
115
+ ```
116
+ × THE FIX: getConnectionInfo no longer manufactures a timestamp on read
117
+ → expected 'getConnectionInfo(): ConnectionInfo {…' not to match /new Date\(\)/
118
+ Tests 1 failed | 3 passed (4)
119
+ ```
120
+
121
+ Restored byte-identical. Green across every iMessage suite:
122
+ `Test Files 4 passed (4) · Tests 64 passed (64)`; `tsc --noEmit` exit 0. No production consumer reads
123
+ the field — verified by grep; the only references are comments explaining why the channel-registry row
124
+ deliberately does not use it.
125
+
126
+ Measured on current main, three consecutive runs each: `notification-spam-prevention.test.ts`
127
+ 15/15/15, `message-formatter.test.ts` 17/17/17, `ReflectionConsolidator.test.ts` 16/16/16 — all parked
128
+ as broken or non-deterministic, all repaired at some point and never re-armed. Note the inverse of the
129
+ 2026-06-05 note in that same file: those tests rotted while parked; these were fixed while parked.
130
+ Nobody noticed either way. Plus one dangling entry: `tests/unit/slack-stall-active-gate.test.ts` is
131
+ excluded and does not exist.
132
+
133
+ Falsified by restoring the naive parser:
134
+
135
+ ```
136
+ × THE PARSER: prose in the array does not become an entry → s own
137
+ × finds the dangling entry ... → expected 42 to be less than 5
138
+ × REGRESSION: an apostrophe in a comment cannot corrupt the parse
139
+ Tests 3 failed | 2 passed (5)
140
+ ```
141
+
142
+ Restored byte-identical; 5 passed.
143
+
144
+ Live, against the real ledger:
145
+
146
+ ```
147
+ WARN: SKIPPING the host-wide test-runner bound (reason: off) — posture: off. …
148
+ WARN: this is self-disable #39 on this host within the detector's window (threshold 3).
149
+ WARN: that is no longer an exception — it is the pattern the detector exists to find.
150
+ WARN: `instar dev:preflight` FAILS on this signature …
151
+ ```
152
+
153
+ Falsified by reverting the mapping to the originally-guessed field name:
154
+
155
+ ```
156
+ × THE FIX: fires on the detector's real output shape → expected null not to be null
157
+ × fires exactly AT the threshold
158
+ Tests 2 failed | 3 passed (5)
159
+ ```
160
+
161
+ Restored byte-identical. Green: `Test Files 3 passed (3) · Tests 121 passed (121)`; `tsc --noEmit`
162
+ exit 0.
163
+
164
+ Falsified by restoring the alternative:
165
+
166
+ ```
167
+ × does NOT fire on a mere .config FILENAME reference — the reproduction of the real case
168
+ → reading a .config filename is not adding a config key: expected 2 to be 1
169
+ Tests 1 failed | 48 passed (49)
170
+ ```
171
+
172
+ Restored byte-identical; 49 passed, including all 47 pre-existing classifier tests unchanged. A second
173
+ new test iterates every remaining anchor (`ConfigDefaults`, `defaultConfig`, `InstarConfig`,
174
+ `configSchema`) and asserts the floor still rises — narrowing a check must not blind it.
175
+
176
+ ## Also in this change: the Telegram row now names its subject
177
+
178
+ Found by checking the shipped feature on a running agent rather than only in tests. `/capabilities`
179
+ reported `telegram: { configured: true, adapter: true, bidirectional: true }` while `/channels`
180
+ reported `user-telegram: unknown — the Telegram poll loop is not running` — the config surface and the
181
+ live surface disagreeing, which is exactly what this registry exists to expose.
182
+
183
+ But the row was measuring the SERVER process's adapter and presenting it as the channel's state. On a
184
+ lifeline deployment inbound never goes through that adapter: a separate lifeline process polls and
185
+ forwards, and the server logs "Telegram relay wired (via lifeline callback forwarding)". Inbound was
186
+ healthy; a stopped server poller is normal there.
187
+
188
+ That is the same scope error the `threadline-relay` row was fixed for in #1667 — a true statement
189
+ whose subject is unstated, so the reader concludes something about a path that was never measured.
190
+ The verdict stays `unknown` (what it can see is genuinely undetermined); it now names the server
191
+ adapter and says plainly that this alone does not mean messages are not arriving.
192
+
193
+ ## Known limits
194
+
195
+ `working` means the link was up when probed — not that a message to a particular chat or contact
196
+ would land. Neither row probes a round-trip, because a status read must not send. iMessage is bound to
197
+ the host running its backend, recorded as a real cost of choosing it.
198
+
199
+ `lastError` and `reconnectAttempts` in the same object are still hardcoded `undefined` / `0`. They are
200
+ the same class of defect and are deliberately not fixed here — inventing values for them would repeat
201
+ the error this corrects. The field also says nothing about connection quality.
202
+
203
+ It never re-arms — a local deterministic-pass does not establish a CI pass, and a third of the list is
204
+ parked for a native-binding reason whose stated scope is "on this machine". Glob entries are reported
205
+ rather than resolved. Only a rotating slice runs per invocation, so a single run does not survey the
206
+ whole list; the output says how many it checked.
207
+
208
+ Louder text only — it cannot refuse a run, and making the kill switch refuse was considered and
209
+ rejected (a kill switch that stops working after three uses is not a kill switch). It fires only for
210
+ `reason: 'off'`; the spoofed-CI skip is not escalated, since that path has a different population and
211
+ no measurement behind it.
212
+
213
+ If a genuine config-key addition mentions only a `*.config.ts` filename and none of the remaining
214
+ anchors, its floor will no longer rise. The remaining anchors cover this repo's actual config
215
+ surfaces, and the both-sides test guards against a future narrowing that blinds the check — but this
216
+ is a heuristic over diff text and always was.
217
+
218
+ ## Correction
219
+
220
+ The first (naive) parser reported 92 parked entries; the true count is 91. That wrong number was
221
+ published in the release note of the earlier re-arm change. Recorded rather than silently fixed.
222
+
223
+ ## Built-in caution
224
+
225
+ Two implementations of this produced no output and no error — one un-awaited promise, one guessed data
226
+ shape swallowed by the best-effort catch. Both were found by running it and reading the output. The
227
+ fallible mapping is now a pure exported function pinned against the detector's real shape, so a future
228
+ shape change fails a test rather than vanishing into the catch.
229
+
230
+ ## Why it mattered
231
+
232
+ The floor is what makes a tier declaration meaningful: declaring under it is permitted but audited as
233
+ a deliberate override. A floor that fires on a filename teaches authors that below-floor declarations
234
+ are routine, which is how a real floor gets argued past later. A noisy guard degrades the guard it
235
+ belongs to.
@@ -0,0 +1,62 @@
1
+ # Side-effects review — iMessage connectedAt is recorded, not synthesised
2
+
3
+ **Change:** `IMessageAdapter.getConnectionInfo().connectedAt` returned
4
+ `started ? new Date().toISOString() : undefined` — the time of the READ, never the time of the
5
+ connection. It now returns a value captured once at connect and cleared on stop.
6
+
7
+ **Decision point touched?** No. Status reporting only; nothing gates on this field.
8
+
9
+ ---
10
+
11
+ ## 1. Over-block
12
+
13
+ None — nothing is rejected or blocked. The only behavioural change is that a value which was always
14
+ populated-while-running can now be `undefined` in one new case: an adapter whose `started` flag is
15
+ true but which has not passed through `start()` in this process (not reachable through the public
16
+ API, since `start()` is what sets `started`).
17
+
18
+ ## 2. Under-block
19
+
20
+ The field is now accurate about connect time but still says nothing about connection QUALITY — a
21
+ long-lived connection that has been failing to deliver reports the same timestamp as a healthy one.
22
+ Unchanged by this and not claimed.
23
+
24
+ Also unchanged: `lastError` and `reconnectAttempts` in the same object are still hardcoded
25
+ `undefined` / `0`. They are the same class of defect — fields that look informative and carry no
26
+ information — and are deliberately NOT fixed here, because inventing values for them would repeat
27
+ the error this change corrects. Named rather than silently left.
28
+
29
+ ## 3. Level-of-abstraction fit
30
+
31
+ Correct: the adapter is the only thing that knows when it connected, so it is the only place the
32
+ instant can be recorded honestly. Nothing downstream can reconstruct it.
33
+
34
+ ## 4. Signal vs authority compliance
35
+
36
+ Pure signal, unchanged in authority. It makes an existing signal truthful rather than adding one.
37
+
38
+ ## 5. Interactions
39
+
40
+ No production consumer reads `connectedAt` — verified by grep across `src/`; the only references are
41
+ comments in `userChannels.ts` and `routes.ts` explaining why the channel-registry row deliberately
42
+ does NOT use it. Those comments remain accurate: the row is built on `state`, which is the right
43
+ liveness signal regardless of this fix.
44
+
45
+ `ConnectionInfo.connectedAt` is already optional in the type, so returning `undefined` when not
46
+ connected requires no type change.
47
+
48
+ ## 6. External surfaces
49
+
50
+ None directly. The value appears in whatever surfaces render `getConnectionInfo()`. Anything that was
51
+ displaying it was displaying fiction; it will now show a real instant or nothing.
52
+
53
+ ## 7. Multi-machine posture
54
+
55
+ Machine-local by design and inherently so: the adapter and its backend run on one host, and a
56
+ connection instant is a fact about THIS process. There is no state to replicate and a cross-machine
57
+ view would be meaningless — another machine's connect time says nothing about this one's.
58
+
59
+ ## 8. Rollback cost
60
+
61
+ Trivial: restore the inline expression and drop the field. No persisted state, no schema, no
62
+ migration. Rolling back restores a fabricated timestamp, so it should carry a reason.
@@ -0,0 +1,71 @@
1
+ # Side-effects review — parked-test re-check (the exit path for FLAKY_TESTS)
2
+
3
+ **Change:** adds `scripts/recheck-parked-tests.mjs`, which reports which `FLAKY_TESTS` entries now
4
+ pass deterministically and which point at files that no longer exist. Read-only; never edits config.
5
+
6
+ **Decision point touched?** No gate is added or changed. It informs a human judgement (should this
7
+ test be re-armed?) that currently has no prompt at all.
8
+
9
+ ---
10
+
11
+ ## 1. Over-block
12
+
13
+ None possible: the script always exits 0 and modifies nothing. Making it a gate was considered and
14
+ rejected — a red build for a test somebody parked deliberately would recreate the original problem
15
+ from the other side.
16
+
17
+ ## 2. Under-block
18
+
19
+ Deliberate and central: it does NOT re-arm. A local deterministic-pass does not establish a CI pass,
20
+ and roughly a third of the list is parked for a native-binding failure whose stated scope is literally
21
+ "on this machine" while CI is a different environment. Auto-re-arming on local green would be the
22
+ confident-wrong-answer this area keeps producing.
23
+
24
+ It also cannot evaluate glob entries (`tests/unit/threadline/**`) — those are reported separately
25
+ rather than resolved, because a glob is not a file and pretending otherwise would put fake entries in
26
+ the missing list.
27
+
28
+ Bounded by default: only a rotating slice is executed per run. So a single run does NOT survey the
29
+ whole list, and the output says how many were checked. Under-coverage that announces itself.
30
+
31
+ ## 3. Level-of-abstraction fit
32
+
33
+ Correct. The gap is that the exclusion list has an entry path and no exit path; this is the exit
34
+ path's reporting half. The complementary half — requiring evidence on ADDITIONS — is tracked
35
+ separately (ACT-1341) and is a gate change, not a report.
36
+
37
+ ## 4. Signal vs authority compliance
38
+
39
+ Pure signal, and deliberately so. Per `docs/signal-vs-authority.md` it produces information for an
40
+ authority (a human) that already exists; it holds none itself.
41
+
42
+ ## 5. Interactions
43
+
44
+ Reads `vitest.push.config.ts` by literal parse rather than importing it — importing would execute the
45
+ config, and this must remain safe to run against a config that does not load. It executes vitest as a
46
+ subprocess for the sampled files; those runs go through the normal host test-runner bound like any
47
+ other.
48
+
49
+ No production code touched. Nothing imports the script.
50
+
51
+ ## 6. External surfaces
52
+
53
+ None. A developer-facing script; no endpoint, no config key, no agent-visible behaviour.
54
+
55
+ ## 7. Multi-machine posture
56
+
57
+ Not applicable in the replication sense, and that is itself the point: the answer it produces is
58
+ about THIS machine's environment, and the script says so in its own output note. A cross-machine
59
+ merged view would be actively misleading, since the whole question is whether a local environment
60
+ reason still holds.
61
+
62
+ ## 8. Rollback cost
63
+
64
+ Trivial — delete the script and its test. No state, no schema, no consumers.
65
+
66
+ ## A correction this change surfaced
67
+
68
+ The first implementation's naive parser produced a count of 92 parked entries. The true count is 91.
69
+ That wrong number was published in the release note of the earlier re-arm change (`#1668`). It is
70
+ recorded here rather than silently corrected, because a plausible-but-wrong number that reached an
71
+ artifact is exactly the failure class this repository keeps finding.
@@ -0,0 +1,78 @@
1
+ # Side-effects review — escalate the self-disable warning at the point of use
2
+
3
+ **Change:** when the test-runner bound is skipped via `INSTAR_HOST_TEST_SEMAPHORE=off`, the existing
4
+ deterministic warning is followed by an escalation naming how many self-disables the shared detector
5
+ already sees in its window, and that `dev:preflight` fails on the signature.
6
+
7
+ **Decision point touched?** No gate, no blocking, no new authority. It adds output to an existing
8
+ logging path. The bound's behaviour is unchanged in every posture.
9
+
10
+ ---
11
+
12
+ ## 1. Over-block
13
+
14
+ None possible — it prints lines. It cannot refuse, delay, or fail a run. Explicitly considered and
15
+ rejected: making the chokepoint REFUSE on a sustained pattern. The kill switch exists for genuine
16
+ emergencies, and a kill switch that stops working after three uses is not a kill switch. Escalating
17
+ the signal is the correct lever; removing the escape hatch is not.
18
+
19
+ ## 2. Under-block
20
+
21
+ It is only louder text. A reader determined to ignore it still can, and someone scripting `off`
22
+ permanently will see it scroll past forever. This narrows the gap between the moment of the decision
23
+ and the moment of the consequence; it does not close it.
24
+
25
+ It also fires only for `reason === 'off'`. The other loud skip (spoofed CI on a dev host) is graded
26
+ "like off" by the spec and is NOT escalated here — deliberate scope, since that path has a different
27
+ population and I have no measurement for it.
28
+
29
+ ## 3. Level-of-abstraction fit
30
+
31
+ Correct: the chokepoint is where the decision is observable at the moment it is made. The detector
32
+ already existed but was consumed only by `dev:preflight`, hours downstream. This wires the same
33
+ detector to the earliest surface, and reuses it rather than re-counting so threshold and window
34
+ cannot drift between the two consumers.
35
+
36
+ ## 4. Signal vs authority compliance
37
+
38
+ Pure signal, and deliberately kept so. The escalation informs; the human or agent decides; the
39
+ existing preflight check retains whatever authority it had.
40
+
41
+ ## 5. Interactions
42
+
43
+ `skipLine` becomes async and is awaited at all seven call sites in `globalSetup`. That is load-bearing
44
+ rather than cosmetic: the first implementation used fire-and-forget and the escalation never printed,
45
+ because globalSetup returns before the promise settles.
46
+
47
+ The lookup dynamically imports `scripts/lib/test-runner-selfdisable-patterns.mjs` from a test setup
48
+ file. Wrapped so a resolution failure degrades to the plain line.
49
+
50
+ Adds one ledger read (bounded to the detector's own `DEFAULT_MAX_EVENTS`) per SKIPPED run only — never
51
+ on the acquire path.
52
+
53
+ ## 6. External surfaces
54
+
55
+ None. Test-run stderr only; no endpoint, no config key, no user-facing behaviour.
56
+
57
+ ## 7. Multi-machine posture
58
+
59
+ Machine-local by design and inherently so: the ledger records what THIS host did, and the bound is a
60
+ per-host concurrency limit. A cross-machine count would be meaningless — another machine's
61
+ self-disables say nothing about this one's.
62
+
63
+ ## 8. Rollback cost
64
+
65
+ Trivial: drop the escalation block and revert `skipLine` to sync. No state, no schema, no consumers.
66
+
67
+ ## What this change's own construction demonstrated
68
+
69
+ Two implementations produced NO output and NO error. The first attached the lookup to an un-awaited
70
+ promise; the second guessed the detector's shape and had the mistake swallowed by the best-effort
71
+ catch that exists so a louder warning cannot break a run. Both were found by running it and reading
72
+ the output, not by anything failing.
73
+
74
+ That is the same failure class as the change's subject, twice, inside the change. The response was
75
+ structural rather than resolving to be careful: the fallible mapping is now a pure exported function
76
+ pinned against the detector's real output shape, so a future shape change fails a test instead of
77
+ disappearing into the catch. The catch stays — it is correct that this cannot break a run — but it no
78
+ longer has anything unverified to hide.
@@ -1,111 +0,0 @@
1
- # Upgrade Guide — vNEXT
2
-
3
- <!-- assembled-by: assemble-next-md -->
4
- <!-- bump: patch -->
5
-
6
- ## What Changed
7
-
8
- `GET /channels` covers WhatsApp and iMessage. Both adapters existed but had no registry row — a gap
9
- recorded explicitly when the direct user channels shipped, and a hole in the registry's own
10
- "absence is impossible" property, since a channel with no row cannot report that it is missing.
11
-
12
- WhatsApp is read from `getStatus().state`, a real state machine rather than a boolean, so
13
- `qr-pending` maps to `reachable-no-credential` — the link is alive and waiting for a human to scan a
14
- pairing code, and a restart will not help. `connecting`/`reconnecting` report `unknown` with the phase
15
- named rather than being guessed; `disconnected`/`closed` are `broken`; an unrecognised state is
16
- `unknown`, never `working`.
17
-
18
- iMessage is read from `getConnectionInfo().state`, deliberately NOT the sibling `connectedAt` — that
19
- field is computed as `started ? new Date().toISOString() : undefined`, so it reports the moment you
20
- asked rather than the moment it connected. A source ratchet fails if anyone wires it in.
21
-
22
- `scripts/lib/classify-tier.mjs` no longer treats a `.config` FILENAME reference as evidence of a
23
- config surface. The `\.config\b` alternative in `CONFIG_SURFACE_HINT` matched any text containing
24
- `.config`, including filenames — so a script that merely READ `vitest.push.config.ts`, combined with
25
- an ordinary object literal, fired "new capability: new config key added" and raised that change's risk
26
- floor to 2.
27
-
28
- ## What to Tell Your User
29
-
30
- Your agent can now tell you whether WhatsApp and iMessage are actually working, alongside Telegram and
31
- Slack.
32
-
33
- The useful part is what it says when WhatsApp is waiting for you to scan a pairing code. That is not
34
- broken — the connection is fine, it just needs you for a moment — and restarting things would not fix
35
- it. It now says exactly that, instead of lumping it in with a dropped connection.
36
-
37
- It is also careful about what it does not know. If a link is mid-connection it says so rather than
38
- guessing, and a working link means the connection was up when it checked, not a promise that a message
39
- to one particular person will arrive.
40
-
41
- None — internal change (no user-facing surface).
42
-
43
- ## Summary of New Capabilities
44
-
45
- No new endpoint, command, or config key. `GET /channels` gains `user-whatsapp` and `user-imessage`
46
- rows with live-state verdicts.
47
-
48
- None — internal change (no user-facing surface).
49
-
50
- ## Evidence
51
-
52
- Falsified by flattening `qr-pending` to `broken` in production:
53
-
54
- ```
55
- × THE STATE A BOOLEAN LOSES: qr-pending is reachable-no-credential, not broken
56
- → expected 'broken' to be 'reachable-no-credential'
57
- Tests 1 failed | 15 passed (16)
58
- ```
59
-
60
- Restored byte-identical. Green across every suite touching the change:
61
- `Test Files 5 passed (5) · Tests 59 passed (59)` (`user-channel-wa-imessage`,
62
- `user-channel-liveness`, `channel-registry`, `channel-registry-claims`, `channels-route`);
63
- `tsc --noEmit` exit 0. The integration test pinning the exact channel set and the audience partition
64
- was updated in this change rather than left for CI to catch.
65
-
66
- Falsified by restoring the alternative:
67
-
68
- ```
69
- × does NOT fire on a mere .config FILENAME reference — the reproduction of the real case
70
- → reading a .config filename is not adding a config key: expected 2 to be 1
71
- Tests 1 failed | 48 passed (49)
72
- ```
73
-
74
- Restored byte-identical; 49 passed, including all 47 pre-existing classifier tests unchanged. A second
75
- new test iterates every remaining anchor (`ConfigDefaults`, `defaultConfig`, `InstarConfig`,
76
- `configSchema`) and asserts the floor still rises — narrowing a check must not blind it.
77
-
78
- ## Also in this change: the Telegram row now names its subject
79
-
80
- Found by checking the shipped feature on a running agent rather than only in tests. `/capabilities`
81
- reported `telegram: { configured: true, adapter: true, bidirectional: true }` while `/channels`
82
- reported `user-telegram: unknown — the Telegram poll loop is not running` — the config surface and the
83
- live surface disagreeing, which is exactly what this registry exists to expose.
84
-
85
- But the row was measuring the SERVER process's adapter and presenting it as the channel's state. On a
86
- lifeline deployment inbound never goes through that adapter: a separate lifeline process polls and
87
- forwards, and the server logs "Telegram relay wired (via lifeline callback forwarding)". Inbound was
88
- healthy; a stopped server poller is normal there.
89
-
90
- That is the same scope error the `threadline-relay` row was fixed for in #1667 — a true statement
91
- whose subject is unstated, so the reader concludes something about a path that was never measured.
92
- The verdict stays `unknown` (what it can see is genuinely undetermined); it now names the server
93
- adapter and says plainly that this alone does not mean messages are not arriving.
94
-
95
- ## Known limits
96
-
97
- `working` means the link was up when probed — not that a message to a particular chat or contact
98
- would land. Neither row probes a round-trip, because a status read must not send. iMessage is bound to
99
- the host running its backend, recorded as a real cost of choosing it.
100
-
101
- If a genuine config-key addition mentions only a `*.config.ts` filename and none of the remaining
102
- anchors, its floor will no longer rise. The remaining anchors cover this repo's actual config
103
- surfaces, and the both-sides test guards against a future narrowing that blinds the check — but this
104
- is a heuristic over diff text and always was.
105
-
106
- ## Why it mattered
107
-
108
- The floor is what makes a tier declaration meaningful: declaring under it is permitted but audited as
109
- a deliberate override. A floor that fires on a filename teaches authors that below-floor declarations
110
- are routine, which is how a real floor gets argued past later. A noisy guard degrades the guard it
111
- belongs to.