instar 1.3.1024 → 1.3.1025
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.
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/GrowthDigestPublisher.d.ts +143 -2
- package/dist/monitoring/GrowthDigestPublisher.d.ts.map +1 -1
- package/dist/monitoring/GrowthDigestPublisher.js +404 -21
- package/dist/monitoring/GrowthDigestPublisher.js.map +1 -1
- package/dist/monitoring/GrowthMilestoneAnalyst.d.ts.map +1 -1
- package/dist/monitoring/GrowthMilestoneAnalyst.js +8 -2
- package/dist/monitoring/GrowthMilestoneAnalyst.js.map +1 -1
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +15 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +13 -1
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +23 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/src/data/state-coherence-registry.json +18 -0
- package/upgrades/1.3.1025.md +76 -0
- package/upgrades/growth-digest-fallback-tags.eli16.md +27 -0
- package/upgrades/side-effects/growth-digest-fallback-tags.md +46 -0
- package/upgrades/side-effects/maturation-followthrough-fix-standard-c.md +138 -0
|
@@ -42,7 +42,7 @@ export interface DeliveryResult {
|
|
|
42
42
|
}
|
|
43
43
|
export interface GrowthDigestAuditEntry {
|
|
44
44
|
ts: string;
|
|
45
|
-
action: 'sent' | 'send-blocked' | 'dry-run' | 'skipped-standby' | 'skipped-off' | 'skipped-overlap' | 'skipped-calm' | 'error';
|
|
45
|
+
action: 'sent' | 'send-blocked' | 'dry-run' | 'skipped-standby' | 'skipped-off' | 'skipped-overlap' | 'skipped-calm' | 'error' | 'send-deferred' | 'send-exhausted';
|
|
46
46
|
trigger?: GrowthDigestTrigger;
|
|
47
47
|
/** ISO of the scheduled window this cycle belongs to. The idempotency key for
|
|
48
48
|
* catch-up: recorded ONLY on a real post-lease decision (never on a pre-lease
|
|
@@ -57,7 +57,65 @@ export interface GrowthDigestAuditEntry {
|
|
|
57
57
|
* a SIGNAL (never a cross-component mutation) that the old voice should be
|
|
58
58
|
* disabled to avoid two voices on the same initiatives. */
|
|
59
59
|
supersedeConflict?: boolean;
|
|
60
|
+
/** C1: the retry-attempt count carried on a `send-deferred` / `send-exhausted`
|
|
61
|
+
* entry (observability — the audit shows how many times a window was retried). */
|
|
62
|
+
attemptCount?: number;
|
|
60
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* The single durable delivery-attempt record for a digest window that hit a
|
|
66
|
+
* RETRYABLE block. It is the shared idempotency ledger the spec's watcher (D,
|
|
67
|
+
* a later increment) also reads/advances — so watcher-drain and cron-retry can
|
|
68
|
+
* never both fire the same window. `state` is `deferred` while it may still
|
|
69
|
+
* retry, `terminal-failed` once it exhausts a ceiling (poison window — stops
|
|
70
|
+
* retrying, but is loudly surfaced, never silently dropped).
|
|
71
|
+
*/
|
|
72
|
+
export interface GrowthDigestDeferral {
|
|
73
|
+
windowId: string;
|
|
74
|
+
attemptCount: number;
|
|
75
|
+
firstDeferredAt: string;
|
|
76
|
+
nextAttemptAt: string;
|
|
77
|
+
lastReason: string;
|
|
78
|
+
attentionDedupeKey: string;
|
|
79
|
+
state: 'deferred' | 'terminal-failed';
|
|
80
|
+
}
|
|
81
|
+
/** Durable store for the C1 delivery-attempt records (one per deferred window). */
|
|
82
|
+
export interface GrowthDigestDeferralStore {
|
|
83
|
+
get(windowId: string): GrowthDigestDeferral | undefined;
|
|
84
|
+
upsert(record: GrowthDigestDeferral): void;
|
|
85
|
+
remove(windowId: string): void;
|
|
86
|
+
/** Records still `deferred` whose `nextAttemptAt` is at/before `now`. */
|
|
87
|
+
duePending(now: Date): GrowthDigestDeferral[];
|
|
88
|
+
all(): GrowthDigestDeferral[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The escalation input the publisher hands to whatever raises operator-facing
|
|
92
|
+
* attention items (wired to `TelegramAdapter.createAttentionItem` at route
|
|
93
|
+
* registration). SECURITY (C1): `reason` is a GENERIC plain-English string only
|
|
94
|
+
* — the publisher NEVER passes the raw rejected digest body or the tone gate's
|
|
95
|
+
* cited offending pattern (which would re-introduce the very leak C2 stripped).
|
|
96
|
+
*/
|
|
97
|
+
export interface GrowthDigestAttention {
|
|
98
|
+
/** Stable dedupe id (`<machineId>:growth-digest-defer:<windowId>`). */
|
|
99
|
+
id: string;
|
|
100
|
+
title: string;
|
|
101
|
+
summary: string;
|
|
102
|
+
/** Generic plain-English reason — never the raw body / offending pattern. */
|
|
103
|
+
reason: string;
|
|
104
|
+
priority: 'NORMAL' | 'HIGH';
|
|
105
|
+
windowId: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* A non-send reason is RETRYABLE (worth deferring + retrying) vs TERMINAL
|
|
109
|
+
* (retrying the same window changes nothing → consume it as today). Retryable =
|
|
110
|
+
* a transient tone-gate block (content may pass on a later window, or the gate
|
|
111
|
+
* fail-closed under transient pressure) or a provider/send failure. Terminal =
|
|
112
|
+
* a structural non-send (no updates topic, telegram not configured, no sender)
|
|
113
|
+
* or a content bug that a retry cannot fix (empty/too-long). Exported so the
|
|
114
|
+
* classification is testable on both sides of the boundary. Unknown → terminal
|
|
115
|
+
* (the SAFE direction: never defer a reason we can't reason about into an
|
|
116
|
+
* open-ended retry).
|
|
117
|
+
*/
|
|
118
|
+
export declare function isRetryableSendReason(reason: string | undefined): boolean;
|
|
61
119
|
export interface GrowthDigestPublisherDeps {
|
|
62
120
|
/** Bound to the live analyst (`(now) => analyst.buildDigest(now)`). */
|
|
63
121
|
buildDigest: (now: Date) => GrowthDigest;
|
|
@@ -90,6 +148,23 @@ export interface GrowthDigestPublisherDeps {
|
|
|
90
148
|
perRuleCap?: number;
|
|
91
149
|
/** Formatter: per-detail char cap (default 200). */
|
|
92
150
|
detailCap?: number;
|
|
151
|
+
/** Is the C1 un-droppable-delivery behavior on? Read live per cycle (a rollback
|
|
152
|
+
* needs no restart). When absent OR returns false → LEGACY behavior (a
|
|
153
|
+
* retryable block records `send-blocked` WITH its window = consume-and-drop),
|
|
154
|
+
* so merging the code changes nothing until the flag is on. */
|
|
155
|
+
blockedDigestEscalationEnabled?: () => boolean;
|
|
156
|
+
/** Durable delivery-attempt store (C1's bounded-retry ledger). Absent → the C1
|
|
157
|
+
* path is inert (legacy behavior) even if the flag is on — fail-safe. */
|
|
158
|
+
deferrals?: GrowthDigestDeferralStore;
|
|
159
|
+
/** Raise ONE operator-facing attention item on defer / exhaustion. Absent → the
|
|
160
|
+
* audit still records the defer, but no attention item (degraded, not silent). */
|
|
161
|
+
raiseAttention?: (item: GrowthDigestAttention) => void;
|
|
162
|
+
/** This machine's id (for the dedupe key; default 'single'). */
|
|
163
|
+
machineId?: () => string;
|
|
164
|
+
/** C1 retry-contract ceilings (defaults 5 / 14d / 60s). Injectable for tests. */
|
|
165
|
+
maxAttempts?: number;
|
|
166
|
+
maxAgeMs?: number;
|
|
167
|
+
backoffBaseMs?: number;
|
|
93
168
|
}
|
|
94
169
|
export declare class GrowthDigestPublisher {
|
|
95
170
|
private readonly deps;
|
|
@@ -100,7 +175,13 @@ export declare class GrowthDigestPublisher {
|
|
|
100
175
|
private readonly settleMs;
|
|
101
176
|
private readonly perRuleCap;
|
|
102
177
|
private readonly detailCap;
|
|
178
|
+
private readonly maxAttempts;
|
|
179
|
+
private readonly maxAgeMs;
|
|
180
|
+
private readonly backoffBaseMs;
|
|
103
181
|
private sender?;
|
|
182
|
+
/** C1: attached at route registration (needs ctx.telegram). Prefer over
|
|
183
|
+
* deps.raiseAttention when set. */
|
|
184
|
+
private attentionRaiser?;
|
|
104
185
|
private cronTask;
|
|
105
186
|
private settleTimer;
|
|
106
187
|
private running;
|
|
@@ -108,6 +189,9 @@ export declare class GrowthDigestPublisher {
|
|
|
108
189
|
private nowFn;
|
|
109
190
|
/** Attach the guarded sender after construction (route-registration time). */
|
|
110
191
|
attachSender(send: (text: string) => Promise<DeliveryResult>): void;
|
|
192
|
+
/** C1: attach the operator-facing attention raiser after construction (needs
|
|
193
|
+
* ctx.telegram, available only at route registration). */
|
|
194
|
+
attachAttention(raise: (item: GrowthDigestAttention) => void): void;
|
|
111
195
|
/** True once the cron task is scheduled (false if refused by the sanity-floor
|
|
112
196
|
* or an invalid cron). Used by wiring tests. */
|
|
113
197
|
isStarted(): boolean;
|
|
@@ -120,7 +204,8 @@ export declare class GrowthDigestPublisher {
|
|
|
120
204
|
start(): void;
|
|
121
205
|
/** Stop the cron + cancel a pending catch-up. Idempotent. */
|
|
122
206
|
stop(): void;
|
|
123
|
-
/** Replay a single fire time that elapsed while the box was down/asleep
|
|
207
|
+
/** Replay a single fire time that elapsed while the box was down/asleep, and
|
|
208
|
+
* (C1) retry any deferred windows whose backoff has elapsed. */
|
|
124
209
|
private catchUp;
|
|
125
210
|
/**
|
|
126
211
|
* Run ONE cadence cycle. PUBLIC so tests (and a future debug route) can drive a
|
|
@@ -129,6 +214,32 @@ export declare class GrowthDigestPublisher {
|
|
|
129
214
|
*/
|
|
130
215
|
publishOnce(now: Date, trigger: GrowthDigestTrigger, windowKey?: string): Promise<void>;
|
|
131
216
|
private record;
|
|
217
|
+
/** Is the C1 un-droppable-delivery behavior on? Fails toward LEGACY (consume +
|
|
218
|
+
* record 'send-blocked') on any read fault — never crashes, never silently
|
|
219
|
+
* drops. */
|
|
220
|
+
private escalationActive;
|
|
221
|
+
private machineIdFn;
|
|
222
|
+
private raise;
|
|
223
|
+
/**
|
|
224
|
+
* Route a non-send. A RETRYABLE reason under active+wired C1 defers the window;
|
|
225
|
+
* anything else (terminal reason, C1 off, no store/window) records
|
|
226
|
+
* `send-blocked` and consumes the window exactly as today (never silent).
|
|
227
|
+
*/
|
|
228
|
+
private handleNonSend;
|
|
229
|
+
/**
|
|
230
|
+
* Advance the bounded delivery-attempt contract for a retryable block. Increment
|
|
231
|
+
* the attempt count, and either DEFER (record `send-deferred` WITHOUT a window +
|
|
232
|
+
* one deduped NORMAL attention item) or, when a ceiling is hit, mark the poison
|
|
233
|
+
* window `terminal-failed` (record `send-exhausted` WITH its window so it stops
|
|
234
|
+
* retrying + one HIGH escalated attention item). A store fault falls back to
|
|
235
|
+
* consuming the window (today's behavior) — never a lost signal.
|
|
236
|
+
*/
|
|
237
|
+
private deferRetryableBlock;
|
|
238
|
+
/** A successful send decides the window; drop a stale deferral so it can't retry. */
|
|
239
|
+
private clearDeferralOnSuccess;
|
|
240
|
+
/** Retry deferred windows whose backoff has elapsed. Bounded by duePending; a
|
|
241
|
+
* window already decided (present in recordedWindows) is skipped + cleared. */
|
|
242
|
+
private drainDeferrals;
|
|
132
243
|
/** True if the cadence's two soonest fires are ≥1h apart (or not computable). */
|
|
133
244
|
private cadenceWithinFloor;
|
|
134
245
|
/**
|
|
@@ -165,4 +276,34 @@ export declare function createGrowthDigestAuditSink(stateDir: string): {
|
|
|
165
276
|
recordedWindows: () => Set<string>;
|
|
166
277
|
logPath: string;
|
|
167
278
|
};
|
|
279
|
+
/**
|
|
280
|
+
* Map a raw internal non-send reason to a GENERIC plain-English string safe for
|
|
281
|
+
* an operator-facing attention item. It NEVER echoes the raw reason (which can
|
|
282
|
+
* carry the tone gate's cited offending pattern — the very route path / config
|
|
283
|
+
* key C2 stripped), so the escalation can never re-introduce the leak C2 fixed or
|
|
284
|
+
* itself trip the tone gate. The raw detail stays in the local audit only.
|
|
285
|
+
*/
|
|
286
|
+
export declare function genericSendReason(reason: string | undefined): string;
|
|
287
|
+
/**
|
|
288
|
+
* C2 preflight (maturation-followthrough-fix §C2) — a deterministic regression
|
|
289
|
+
* guard over FORMATTED digest text. It catches a formatter change that
|
|
290
|
+
* reintroduces an operator-facing leak the tone gate blocks: a raw route path
|
|
291
|
+
* (`GET /x`, `/growth/digest`), a dotted config key (`monitoring.foo.enabled`),
|
|
292
|
+
* or a repo/dot-dir file path (`src/…`, `.instar/config.json`). It is NOT the
|
|
293
|
+
* tone gate (that stays unchanged) — it is a cheap, LLM-free assertion the C2
|
|
294
|
+
* test suite runs over representative digest content so a leak is caught at
|
|
295
|
+
* build time, not by a future live block. `clean:true` ⇒ no leak pattern found.
|
|
296
|
+
*/
|
|
297
|
+
export declare function scanFormattedDigestForLeaks(text: string): {
|
|
298
|
+
clean: boolean;
|
|
299
|
+
matches: string[];
|
|
300
|
+
};
|
|
301
|
+
/**
|
|
302
|
+
* File-backed store for the C1 delivery-attempt records. Machine-local BY DESIGN
|
|
303
|
+
* (the digest is emitted only by the awake/serving-lease machine, so its retry
|
|
304
|
+
* ledger is a fact about that machine — never merged from a peer), matching how
|
|
305
|
+
* `growth-digest.jsonl` is machine-local. Bounded: one record per deferred
|
|
306
|
+
* window (window cardinality is tiny), resolved by a send / exhaustion / drain.
|
|
307
|
+
*/
|
|
308
|
+
export declare function createGrowthDigestDeferralStore(stateDir: string): GrowthDigestDeferralStore;
|
|
168
309
|
//# sourceMappingURL=GrowthDigestPublisher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GrowthDigestPublisher.d.ts","sourceRoot":"","sources":["../../src/monitoring/GrowthDigestPublisher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAMH,OAAO,KAAK,EAAE,YAAY,EAA+B,MAAM,6BAA6B,CAAC;AAE7F,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ;mFAC+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EACF,MAAM,GACN,cAAc,GACd,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,iBAAiB,GACjB,cAAc,GACd,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GrowthDigestPublisher.d.ts","sourceRoot":"","sources":["../../src/monitoring/GrowthDigestPublisher.ts"],"names":[],"mappings":"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"}
|