instar 1.3.71 → 1.3.72

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.
@@ -0,0 +1,88 @@
1
+ /**
2
+ * AttentionTopicGuard — a per-source + global circuit breaker for forum-topic
3
+ * creation. NOT a blocker: it is a DELIVERY SHAPER (same class as
4
+ * SentinelNotifier), never a gate. It holds no authority over agent behavior or
5
+ * information flow — it only changes the FORM of delivery (one coalesced topic +
6
+ * a log line) for non-critical, high-volume notices, and never withholds a
7
+ * critical notice or drops an item. See docs/signal-vs-authority.md (the rate-
8
+ * counter / transport-dedup carve-outs).
9
+ *
10
+ * Built in response to the 2026-05-28 topic-spam flood (the SECOND such flood;
11
+ * the first, 2026-05-22, produced the SentinelNotifier fix). Root cause both
12
+ * times: `TelegramAdapter.createAttentionItem` spawns a BRAND-NEW forum topic
13
+ * per attention item, and there was no structural gate stopping a housekeeping
14
+ * feature from raising attention items at volume.
15
+ *
16
+ * It sits at the one chokepoint (createAttentionItem) and caps how many NEW
17
+ * topics may be spawned in a rolling window — BOTH per source AND globally. Past
18
+ * the budget, items are COALESCED into one running notice topic + logged. The
19
+ * GLOBAL cap is load-bearing: a mis-wired feature that varies its `sourceContext`
20
+ * per item would dodge a per-source-only budget, so once total topic creation in
21
+ * the window exceeds the global ceiling, every further non-critical item — of any
22
+ * source — coalesces into ONE shared global bucket. That makes the "a brand-new
23
+ * mis-wired feature gets auto-throttled" guarantee hold regardless of source
24
+ * cardinality.
25
+ *
26
+ * Invariants:
27
+ * - HIGH / URGENT (case-insensitive; CRITICAL treated as URGENT) ALWAYS get
28
+ * their own topic and are never counted. Critical messages are never coalesced.
29
+ * - No item is ever DROPPED. A coalesced item is still recorded in the attention
30
+ * store and written to the suppression audit log; only its per-item TOPIC is
31
+ * withheld.
32
+ *
33
+ * Pure logic, injectable clock, bounded memory — unit-testable in isolation.
34
+ */
35
+ export interface AttentionTopicGuardConfig {
36
+ /** When false, every item is allowed its own topic (pre-guard behavior). */
37
+ enabled: boolean;
38
+ /** Rolling window over which topic creations are counted. */
39
+ windowMs: number;
40
+ /** Max NEW topics a single source may spawn within `windowMs`. */
41
+ maxTopicsPerSource: number;
42
+ /**
43
+ * Max NEW topics across ALL sources within `windowMs`. Backstop against a
44
+ * source that varies its key per item to dodge the per-source budget. Past
45
+ * this, non-critical items coalesce into one shared global bucket regardless
46
+ * of source. Must be >= maxTopicsPerSource to be meaningful.
47
+ */
48
+ maxTopicsGlobal: number;
49
+ /** Hard cap on distinct source keys tracked (memory bound). */
50
+ maxTrackedSources: number;
51
+ }
52
+ export declare const DEFAULT_ATTENTION_TOPIC_GUARD: AttentionTopicGuardConfig;
53
+ /** The shared key used when the GLOBAL cap (not a per-source cap) trips. */
54
+ export declare const GLOBAL_BUCKET = "*";
55
+ export type GuardDecision = {
56
+ action: 'allow';
57
+ } | {
58
+ action: 'coalesce';
59
+ firstInEpisode: boolean;
60
+ suppressedCount: number;
61
+ bucket: string;
62
+ };
63
+ export declare class AttentionTopicGuard {
64
+ private readonly cfg;
65
+ private readonly now;
66
+ /** source key -> timestamps of recent topic-relevant events within the window. */
67
+ private readonly events;
68
+ /** bucket key -> count of items coalesced in the CURRENT (uninterrupted) episode. */
69
+ private readonly episode;
70
+ /** Global rolling timeline of topic-relevant events (all sources). */
71
+ private globalEvents;
72
+ constructor(cfg?: Partial<AttentionTopicGuardConfig>, now?: () => number);
73
+ get config(): Readonly<AttentionTopicGuardConfig>;
74
+ /**
75
+ * Decide whether an item from `source` at `priority` may spawn its own topic.
76
+ * Returns the coalesce `bucket` (the source key, or GLOBAL_BUCKET when only the
77
+ * global cap tripped) so the adapter routes all global-flood notices into ONE
78
+ * shared topic rather than one-per-varying-source.
79
+ */
80
+ decide(source: string | undefined, priority: string | undefined): GuardDecision;
81
+ /** Drop source keys whose events have all aged out, and hard-cap map size. */
82
+ private evictStaleSources;
83
+ /** Test/inspection seam. */
84
+ episodeCount(bucket: string): number;
85
+ /** Test/inspection seam — number of distinct source keys currently tracked. */
86
+ get trackedSourceCount(): number;
87
+ }
88
+ //# sourceMappingURL=AttentionTopicGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttentionTopicGuard.d.ts","sourceRoot":"","sources":["../../src/messaging/AttentionTopicGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,6BAA6B,EAAE,yBAM3C,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAW7F,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,sEAAsE;IACtE,OAAO,CAAC,YAAY,CAAgB;gBAExB,GAAG,GAAE,OAAO,CAAC,yBAAyB,CAAM,EAAE,GAAG,GAAE,MAAM,MAAyB;IAmB9F,IAAI,MAAM,IAAI,QAAQ,CAAC,yBAAyB,CAAC,CAEhD;IAED;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa;IAqC/E,8EAA8E;IAC9E,OAAO,CAAC,iBAAiB;IAuBzB,4BAA4B;IAC5B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIpC,+EAA+E;IAC/E,IAAI,kBAAkB,IAAI,MAAM,CAE/B;CACF"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * AttentionTopicGuard — a per-source + global circuit breaker for forum-topic
3
+ * creation. NOT a blocker: it is a DELIVERY SHAPER (same class as
4
+ * SentinelNotifier), never a gate. It holds no authority over agent behavior or
5
+ * information flow — it only changes the FORM of delivery (one coalesced topic +
6
+ * a log line) for non-critical, high-volume notices, and never withholds a
7
+ * critical notice or drops an item. See docs/signal-vs-authority.md (the rate-
8
+ * counter / transport-dedup carve-outs).
9
+ *
10
+ * Built in response to the 2026-05-28 topic-spam flood (the SECOND such flood;
11
+ * the first, 2026-05-22, produced the SentinelNotifier fix). Root cause both
12
+ * times: `TelegramAdapter.createAttentionItem` spawns a BRAND-NEW forum topic
13
+ * per attention item, and there was no structural gate stopping a housekeeping
14
+ * feature from raising attention items at volume.
15
+ *
16
+ * It sits at the one chokepoint (createAttentionItem) and caps how many NEW
17
+ * topics may be spawned in a rolling window — BOTH per source AND globally. Past
18
+ * the budget, items are COALESCED into one running notice topic + logged. The
19
+ * GLOBAL cap is load-bearing: a mis-wired feature that varies its `sourceContext`
20
+ * per item would dodge a per-source-only budget, so once total topic creation in
21
+ * the window exceeds the global ceiling, every further non-critical item — of any
22
+ * source — coalesces into ONE shared global bucket. That makes the "a brand-new
23
+ * mis-wired feature gets auto-throttled" guarantee hold regardless of source
24
+ * cardinality.
25
+ *
26
+ * Invariants:
27
+ * - HIGH / URGENT (case-insensitive; CRITICAL treated as URGENT) ALWAYS get
28
+ * their own topic and are never counted. Critical messages are never coalesced.
29
+ * - No item is ever DROPPED. A coalesced item is still recorded in the attention
30
+ * store and written to the suppression audit log; only its per-item TOPIC is
31
+ * withheld.
32
+ *
33
+ * Pure logic, injectable clock, bounded memory — unit-testable in isolation.
34
+ */
35
+ export const DEFAULT_ATTENTION_TOPIC_GUARD = {
36
+ enabled: true,
37
+ windowMs: 10 * 60 * 1000,
38
+ maxTopicsPerSource: 3,
39
+ maxTopicsGlobal: 8,
40
+ maxTrackedSources: 512,
41
+ };
42
+ /** The shared key used when the GLOBAL cap (not a per-source cap) trips. */
43
+ export const GLOBAL_BUCKET = '*';
44
+ /** Priorities that always get their own topic and are never counted. */
45
+ const CRITICAL_PRIORITIES = new Set(['HIGH', 'URGENT', 'CRITICAL']);
46
+ function coerceNum(v, fallback, { int = false, min = 0 } = {}) {
47
+ const n = typeof v === 'number' ? v : NaN;
48
+ if (!Number.isFinite(n) || n < min)
49
+ return fallback;
50
+ return int ? Math.floor(n) : n;
51
+ }
52
+ export class AttentionTopicGuard {
53
+ cfg;
54
+ now;
55
+ /** source key -> timestamps of recent topic-relevant events within the window. */
56
+ events = new Map();
57
+ /** bucket key -> count of items coalesced in the CURRENT (uninterrupted) episode. */
58
+ episode = new Map();
59
+ /** Global rolling timeline of topic-relevant events (all sources). */
60
+ globalEvents = [];
61
+ constructor(cfg = {}, now = () => Date.now()) {
62
+ // Validate/coerce: a fat-fingered NaN/negative must NOT silently disable the
63
+ // guard (NaN comparisons are always false → it would never trip).
64
+ const d = DEFAULT_ATTENTION_TOPIC_GUARD;
65
+ const windowMs = coerceNum(cfg.windowMs, d.windowMs, { min: 1 });
66
+ const maxTopicsPerSource = coerceNum(cfg.maxTopicsPerSource, d.maxTopicsPerSource, { int: true, min: 0 });
67
+ this.cfg = {
68
+ enabled: cfg.enabled !== false,
69
+ windowMs,
70
+ maxTopicsPerSource,
71
+ // Independent global ceiling. A LOW global with a HIGH per-source budget is
72
+ // the intended high-cardinality config (cap total topics regardless of how
73
+ // many distinct source keys appear), so we do NOT clamp it up to per-source.
74
+ maxTopicsGlobal: coerceNum(cfg.maxTopicsGlobal, d.maxTopicsGlobal, { int: true, min: 1 }),
75
+ maxTrackedSources: coerceNum(cfg.maxTrackedSources, d.maxTrackedSources, { int: true, min: 1 }),
76
+ };
77
+ this.now = now;
78
+ }
79
+ get config() {
80
+ return this.cfg;
81
+ }
82
+ /**
83
+ * Decide whether an item from `source` at `priority` may spawn its own topic.
84
+ * Returns the coalesce `bucket` (the source key, or GLOBAL_BUCKET when only the
85
+ * global cap tripped) so the adapter routes all global-flood notices into ONE
86
+ * shared topic rather than one-per-varying-source.
87
+ */
88
+ decide(source, priority) {
89
+ if (!this.cfg.enabled)
90
+ return { action: 'allow' };
91
+ const p = (priority ?? '').toUpperCase();
92
+ if (CRITICAL_PRIORITIES.has(p))
93
+ return { action: 'allow' };
94
+ const key = source && source.trim() ? source : 'unknown';
95
+ const now = this.now();
96
+ const cutoff = now - this.cfg.windowMs;
97
+ const perRecent = (this.events.get(key) ?? []).filter((t) => t >= cutoff);
98
+ this.globalEvents = this.globalEvents.filter((t) => t >= cutoff);
99
+ const perTripped = perRecent.length >= this.cfg.maxTopicsPerSource;
100
+ const globalTripped = this.globalEvents.length >= this.cfg.maxTopicsGlobal;
101
+ // Record this event in both timelines so a sustained flood keeps the window
102
+ // full and stays in a single coalesce episode.
103
+ perRecent.push(now);
104
+ this.events.set(key, perRecent);
105
+ this.globalEvents.push(now);
106
+ this.evictStaleSources(cutoff);
107
+ if (perTripped || globalTripped) {
108
+ // Per-source flood → coalesce under the source (one topic per flooding
109
+ // source). Global-only flood (many low-volume sources) → coalesce under the
110
+ // shared global bucket (one topic total), defeating key-variation dodges.
111
+ const bucket = perTripped ? key : GLOBAL_BUCKET;
112
+ const count = (this.episode.get(bucket) ?? 0) + 1;
113
+ this.episode.set(bucket, count);
114
+ return { action: 'coalesce', firstInEpisode: count === 1, suppressedCount: count, bucket };
115
+ }
116
+ // Under both budgets: own topic, and any prior episode for this source is over.
117
+ this.episode.set(key, 0);
118
+ return { action: 'allow' };
119
+ }
120
+ /** Drop source keys whose events have all aged out, and hard-cap map size. */
121
+ evictStaleSources(cutoff) {
122
+ if (this.events.size <= this.cfg.maxTrackedSources) {
123
+ // cheap path: nothing to do until we approach the cap.
124
+ return;
125
+ }
126
+ for (const [k, ts] of this.events) {
127
+ const live = ts.filter((t) => t >= cutoff);
128
+ if (live.length === 0) {
129
+ this.events.delete(k);
130
+ this.episode.delete(k);
131
+ }
132
+ else {
133
+ this.events.set(k, live);
134
+ }
135
+ }
136
+ // If still over the cap (many genuinely-active sources), drop the oldest.
137
+ while (this.events.size > this.cfg.maxTrackedSources) {
138
+ const oldest = this.events.keys().next().value;
139
+ if (oldest === undefined)
140
+ break;
141
+ this.events.delete(oldest);
142
+ this.episode.delete(oldest);
143
+ }
144
+ }
145
+ /** Test/inspection seam. */
146
+ episodeCount(bucket) {
147
+ return this.episode.get(bucket && bucket.trim() ? bucket : 'unknown') ?? 0;
148
+ }
149
+ /** Test/inspection seam — number of distinct source keys currently tracked. */
150
+ get trackedSourceCount() {
151
+ return this.events.size;
152
+ }
153
+ }
154
+ //# sourceMappingURL=AttentionTopicGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttentionTopicGuard.js","sourceRoot":"","sources":["../../src/messaging/AttentionTopicGuard.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ import type { ContentValidationConfig } from './TopicContentValidator.js';
14
14
  import { MessagingEventBus } from './shared/MessagingEventBus.js';
15
15
  import type { DetectedPrompt } from '../monitoring/PromptGate.js';
16
16
  import { type FormatMode } from './TelegramMarkdownFormatter.js';
17
+ import { type AttentionTopicGuardConfig } from './AttentionTopicGuard.js';
17
18
  export interface TelegramConfig {
18
19
  /** Bot token from @BotFather */
19
20
  token: string;
@@ -72,6 +73,14 @@ export interface TelegramConfig {
72
73
  getFormatMode?: () => FormatMode | undefined;
73
74
  /** Hot-reloadable accessor for lint-strict mode. */
74
75
  getLintStrict?: () => boolean | undefined;
76
+ /**
77
+ * Per-source forum-topic circuit breaker. Caps how many NEW topics a single
78
+ * attention `sourceContext` may spawn in a rolling window; past the budget,
79
+ * items coalesce into one running notice topic instead of a wall of topics.
80
+ * Defaults to DEFAULT_ATTENTION_TOPIC_GUARD (enabled) — the 2026-05-28
81
+ * topic-flood lockdown. See AttentionTopicGuard.
82
+ */
83
+ attentionTopicGuard?: Partial<AttentionTopicGuardConfig>;
75
84
  }
76
85
  export interface SendResult {
77
86
  /** Telegram message ID */
@@ -126,6 +135,13 @@ export interface AttentionItem {
126
135
  createdAt: string;
127
136
  updatedAt: string;
128
137
  topicId?: number;
138
+ /**
139
+ * True when the topic-flood guard coalesced this item into a shared "notices
140
+ * coalesced" topic instead of giving it its own. Such items are NOT registered
141
+ * in the per-item topic maps and are managed via /attention (PATCH / dashboard),
142
+ * not per-topic /ack — so resolving one never closes the shared notice topic.
143
+ */
144
+ coalesced?: boolean;
129
145
  }
130
146
  /**
131
147
  * Standard topic styles for visual organization in Telegram forum.
@@ -209,6 +225,10 @@ export declare class TelegramAdapter implements MessagingAdapter {
209
225
  private attentionTopicToItem;
210
226
  private attentionItems;
211
227
  private attentionFilePath;
228
+ private attentionTopicGuard;
229
+ private floodNoticeTopicByBucket;
230
+ private floodNoticePending;
231
+ private attentionSuppressedLogPath;
212
232
  private pendingMessages;
213
233
  private stallCheckInterval;
214
234
  private pendingPromises;
@@ -792,6 +812,25 @@ export declare class TelegramAdapter implements MessagingAdapter {
792
812
  * Create an attention item and its Telegram topic.
793
813
  */
794
814
  createAttentionItem(item: Omit<AttentionItem, 'createdAt' | 'updatedAt' | 'status' | 'topicId'>): Promise<AttentionItem>;
815
+ /**
816
+ * Append a suppressed attention item to the audit trail. This is the
817
+ * "housekeeping goes to the logs" path for the topic-flood guard — the item
818
+ * is preserved, just not given its own forum topic. Size-capped with a single
819
+ * rotation (the flood is exactly the failure mode that grows this fastest).
820
+ */
821
+ private writeSuppressedAttentionLog;
822
+ /**
823
+ * Route a coalesced attention item into ONE reused notice topic for its bucket
824
+ * (the source key, or the shared global bucket when the global cap tripped).
825
+ * The topic is created lazily once per bucket and reused thereafter (so a
826
+ * flapping source does not churn a new topic per episode). Concurrent coalesced
827
+ * items for one bucket share a single in-flight creation (no double-create
828
+ * race). Returns the notice topicId, or null if Telegram is unavailable (the
829
+ * item is still recorded + logged).
830
+ */
831
+ private routeToFloodNotice;
832
+ /** Lazily create (once) and return the reused notice topic id for a bucket. */
833
+ private ensureFloodNoticeTopic;
795
834
  /**
796
835
  * Update attention item status. Called by /ack, /done, /wontdo, /reopen commands.
797
836
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TelegramAdapter.d.ts","sourceRoot":"","sources":["../../src/messaging/TelegramAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TelegramAdapter.d.ts","sourceRoot":"","sources":["../../src/messaging/TelegramAdapter.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ import { formatForTelegram } from './TelegramMarkdownFormatter.js';
25
25
  import { recordFormatApplied, recordFormatLintIssue, recordFormatFallbackPlainRetry, } from './telegramFormatMetrics.js';
26
26
  import { SafeFsExecutor } from '../core/SafeFsExecutor.js';
27
27
  import { stopAutonomousTopic } from '../core/AutonomousSessions.js';
28
+ import { AttentionTopicGuard } from './AttentionTopicGuard.js';
28
29
  /**
29
30
  * Telegram General topic convention:
30
31
  * - Incoming: messages in General have message_thread_id=1 (or undefined in older API)
@@ -158,6 +159,14 @@ export class TelegramAdapter {
158
159
  attentionTopicToItem = new Map();
159
160
  attentionItems = new Map();
160
161
  attentionFilePath;
162
+ // Per-source forum-topic circuit breaker (2026-05-28 topic-flood lockdown).
163
+ attentionTopicGuard;
164
+ // bucket -> the single reused "notices coalesced" topic for that bucket.
165
+ floodNoticeTopicByBucket = new Map();
166
+ // bucket -> in-flight createForumTopic promise, so concurrent coalesced items
167
+ // for one bucket share ONE topic creation (no double-create race).
168
+ floodNoticePending = new Map();
169
+ attentionSuppressedLogPath;
161
170
  // Stall detection
162
171
  pendingMessages = new Map(); // key = topicId-timestamp
163
172
  stallCheckInterval = null;
@@ -340,6 +349,8 @@ export class TelegramAdapter {
340
349
  this.messageLogPath = path.join(this.botStateDir, 'telegram-messages.jsonl');
341
350
  this.offsetPath = path.join(this.botStateDir, 'telegram-poll-offset.json');
342
351
  this.attentionFilePath = path.join(this.botStateDir, 'state', 'attention-items.json');
352
+ this.attentionSuppressedLogPath = path.join(this.botStateDir, 'state', 'attention-suppressed.jsonl');
353
+ this.attentionTopicGuard = new AttentionTopicGuard(config.attentionTopicGuard ?? {});
343
354
  this.loadRegistry();
344
355
  this.loadOffset();
345
356
  this.loadAttentionItems();
@@ -2843,6 +2854,30 @@ export class TelegramAdapter {
2843
2854
  createdAt: now,
2844
2855
  updatedAt: now,
2845
2856
  };
2857
+ // ── Topic-flood circuit breaker (2026-05-28 lockdown) ──────────────
2858
+ // Before spawning a per-item forum topic, consult the per-source guard.
2859
+ // HIGH/URGENT always pass (critical items must always be visible). A
2860
+ // non-critical source that exceeds its topic budget within the window has
2861
+ // its items COALESCED into one running notice topic + logged — never a
2862
+ // wall of new topics. No item is dropped; only the per-item topic is held.
2863
+ const guardSource = item.sourceContext || item.category || 'unknown';
2864
+ const decision = this.attentionTopicGuard.decide(guardSource, item.priority);
2865
+ if (decision.action === 'coalesce') {
2866
+ this.writeSuppressedAttentionLog(attention, decision.bucket, decision.suppressedCount);
2867
+ const noticeTopicId = await this.routeToFloodNotice(decision.bucket, attention, decision);
2868
+ // Mark coalesced and record the (shared) notice topic for reference ONLY.
2869
+ // Deliberately do NOT register the per-item topic maps: many items share one
2870
+ // notice topic, so registering them would (a) make `loadAttentionItems`
2871
+ // last-writer-win-corrupt the reverse map on restart and (b) make
2872
+ // `updateAttentionStatus` close the shared topic when ONE sibling resolves.
2873
+ // Coalesced items are managed via /attention (PATCH / dashboard), not /ack.
2874
+ attention.coalesced = true;
2875
+ if (noticeTopicId !== null)
2876
+ attention.topicId = noticeTopicId;
2877
+ this.attentionItems.set(item.id, attention);
2878
+ this.saveAttentionItems();
2879
+ return attention;
2880
+ }
2846
2881
  // Create Telegram topic (uses the centralized method for forum detection)
2847
2882
  try {
2848
2883
  const emoji = PRIORITY_EMOJI[item.priority] || PRIORITY_EMOJI.NORMAL;
@@ -2893,6 +2928,109 @@ export class TelegramAdapter {
2893
2928
  this.saveAttentionItems();
2894
2929
  return attention;
2895
2930
  }
2931
+ /**
2932
+ * Append a suppressed attention item to the audit trail. This is the
2933
+ * "housekeeping goes to the logs" path for the topic-flood guard — the item
2934
+ * is preserved, just not given its own forum topic. Size-capped with a single
2935
+ * rotation (the flood is exactly the failure mode that grows this fastest).
2936
+ */
2937
+ writeSuppressedAttentionLog(item, bucket, episodeCount) {
2938
+ const entry = {
2939
+ ts: new Date().toISOString(),
2940
+ bucket,
2941
+ episodeCount,
2942
+ id: item.id,
2943
+ priority: item.priority,
2944
+ category: item.category,
2945
+ title: item.title,
2946
+ summary: item.summary,
2947
+ };
2948
+ try {
2949
+ fs.mkdirSync(path.dirname(this.attentionSuppressedLogPath), { recursive: true });
2950
+ // Rotate at ~2MB so a sustained flood can't grow the audit log unbounded.
2951
+ try {
2952
+ const st = fs.statSync(this.attentionSuppressedLogPath);
2953
+ if (st.size > 2 * 1024 * 1024) {
2954
+ fs.renameSync(this.attentionSuppressedLogPath, `${this.attentionSuppressedLogPath}.1`);
2955
+ }
2956
+ }
2957
+ catch { /* no existing file — nothing to rotate */ }
2958
+ fs.appendFileSync(this.attentionSuppressedLogPath, JSON.stringify(entry) + '\n');
2959
+ }
2960
+ catch {
2961
+ // @silent-fallback-ok — an audit-log write failure must never crash the
2962
+ // attention path; the item is still recorded in the in-memory store.
2963
+ }
2964
+ console.log(`[telegram] attention topic-flood guard: coalesced "${item.title}" (bucket=${bucket}, #${episodeCount}) — logged, no new topic`);
2965
+ }
2966
+ /**
2967
+ * Route a coalesced attention item into ONE reused notice topic for its bucket
2968
+ * (the source key, or the shared global bucket when the global cap tripped).
2969
+ * The topic is created lazily once per bucket and reused thereafter (so a
2970
+ * flapping source does not churn a new topic per episode). Concurrent coalesced
2971
+ * items for one bucket share a single in-flight creation (no double-create
2972
+ * race). Returns the notice topicId, or null if Telegram is unavailable (the
2973
+ * item is still recorded + logged).
2974
+ */
2975
+ async routeToFloodNotice(bucket, item, decision) {
2976
+ let topicId;
2977
+ try {
2978
+ topicId = await this.ensureFloodNoticeTopic(bucket);
2979
+ }
2980
+ catch (err) {
2981
+ console.error(`[telegram] flood-notice topic creation failed for bucket "${bucket}": ${err}`);
2982
+ topicId = this.floodNoticeTopicByBucket.get(bucket) ?? null;
2983
+ }
2984
+ if (topicId === null)
2985
+ return null;
2986
+ const line = `• [#${decision.suppressedCount}] ${this.escapeHtml(item.title)} — ${this.escapeHtml(String(item.summary ?? '').slice(0, 200))}`;
2987
+ // @silent-fallback-ok — best-effort coalesce line; the item is already
2988
+ // recorded + audit-logged, so a transient send failure is non-fatal. If the
2989
+ // topic was deleted out from under us, drop the mapping so it's recreated.
2990
+ await this.sendToTopic(topicId, line).catch(() => {
2991
+ this.floodNoticeTopicByBucket.delete(bucket);
2992
+ });
2993
+ return topicId;
2994
+ }
2995
+ /** Lazily create (once) and return the reused notice topic id for a bucket. */
2996
+ async ensureFloodNoticeTopic(bucket) {
2997
+ const existing = this.floodNoticeTopicByBucket.get(bucket);
2998
+ if (existing !== undefined)
2999
+ return existing;
3000
+ const inFlight = this.floodNoticePending.get(bucket);
3001
+ if (inFlight)
3002
+ return inFlight;
3003
+ const creation = (async () => {
3004
+ const label = bucket === '*' ? 'multiple sources' : bucket;
3005
+ const title = `🔁 ${label}: notices coalesced (flood guard)`.slice(0, 128);
3006
+ const topic = await this.createForumTopic(title, PRIORITY_COLOR.LOW ?? PRIORITY_COLOR.NORMAL);
3007
+ const topicId = topic.topicId;
3008
+ this.floodNoticeTopicByBucket.set(bucket, topicId);
3009
+ this.topicToName.set(topicId, title);
3010
+ const intro = [
3011
+ `<b>${this.escapeHtml(label)}</b> raised more than its topic budget in a short window, so I'm collecting these notices HERE instead of spawning a new topic per item (housekeeping flood guard, 2026-05-28).`,
3012
+ ``,
3013
+ `Each item is also recorded in <code>state/attention-suppressed.jsonl</code> and in the attention list — manage them via the dashboard / <code>/attention</code>, not per-item /ack here. Critical (HIGH/URGENT) items are never coalesced — they still get their own topic.`,
3014
+ ].join('\n');
3015
+ const introParams = {
3016
+ chat_id: this.config.chatId,
3017
+ text: intro,
3018
+ parse_mode: 'HTML',
3019
+ _formatMode: 'html',
3020
+ };
3021
+ if (!isGeneralTopic(topicId))
3022
+ introParams.message_thread_id = topicId;
3023
+ await this.apiCall('sendMessage', introParams);
3024
+ return topicId;
3025
+ })();
3026
+ this.floodNoticePending.set(bucket, creation);
3027
+ try {
3028
+ return await creation;
3029
+ }
3030
+ finally {
3031
+ this.floodNoticePending.delete(bucket);
3032
+ }
3033
+ }
2896
3034
  /**
2897
3035
  * Update attention item status. Called by /ack, /done, /wontdo, /reopen commands.
2898
3036
  */
@@ -2983,7 +3121,10 @@ export class TelegramAdapter {
2983
3121
  if (data.items) {
2984
3122
  for (const item of data.items) {
2985
3123
  this.attentionItems.set(item.id, item);
2986
- if (item.topicId) {
3124
+ // Coalesced items share ONE notice topic; registering them in the
3125
+ // per-item maps would last-writer-win-corrupt the reverse map and make
3126
+ // resolving one close the shared topic. They are managed via /attention.
3127
+ if (item.topicId && !item.coalesced) {
2987
3128
  this.attentionItemToTopic.set(item.id, item.topicId);
2988
3129
  this.attentionTopicToItem.set(item.topicId, item.id);
2989
3130
  }