instar 1.3.96 → 1.3.97
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/monitoring/TokenLedger.d.ts +54 -12
- package/dist/monitoring/TokenLedger.d.ts.map +1 -1
- package/dist/monitoring/TokenLedger.js +131 -27
- package/dist/monitoring/TokenLedger.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.97.md +59 -0
- package/upgrades/side-effects/tokenledger-backfill-async-boot.md +75 -0
|
@@ -119,6 +119,20 @@ export interface TokenLedgerOptions {
|
|
|
119
119
|
* better-sqlite3's Database constructor directly.
|
|
120
120
|
*/
|
|
121
121
|
databaseFactory?: (dbPath: string) => BetterSqliteDatabase;
|
|
122
|
+
/**
|
|
123
|
+
* How the one-time attribution backfill (legacy PRE_ATTRIBUTION_KEY sentinel
|
|
124
|
+
* rows → resolved keys) runs at construction:
|
|
125
|
+
* - 'async' (default): scheduled off the boot path in bounded chunks that
|
|
126
|
+
* yield the event loop between batches, so construction NEVER blocks. This
|
|
127
|
+
* is the fix for large ledgers bricking server boot — the old synchronous
|
|
128
|
+
* full-scan-in-one-transaction could exceed the supervisor health-check
|
|
129
|
+
* timeout, getting the boot killed mid-scan so the completion marker was
|
|
130
|
+
* never written and the backfill re-ran forever (permanent crash-loop).
|
|
131
|
+
* - 'sync': drain fully during construction (deterministic; for tests).
|
|
132
|
+
* - 'off': don't auto-run; the caller drives backfillAttributionOnce()/Chunk().
|
|
133
|
+
* Default: 'async'.
|
|
134
|
+
*/
|
|
135
|
+
attributionBackfill?: 'async' | 'sync' | 'off';
|
|
122
136
|
}
|
|
123
137
|
export declare class TokenLedger {
|
|
124
138
|
private db;
|
|
@@ -127,6 +141,12 @@ export declare class TokenLedger {
|
|
|
127
141
|
private maxFilesPerScan;
|
|
128
142
|
private yieldEveryNFiles;
|
|
129
143
|
private asyncYieldFn;
|
|
144
|
+
/** Background attribution-backfill timer (async strategy); cleared on close(). */
|
|
145
|
+
private attributionBackfillTimer;
|
|
146
|
+
/** Consecutive failed backfill chunks; bounded by ATTRIBUTION_BACKFILL_MAX_FAILURES. */
|
|
147
|
+
private attributionBackfillFailures;
|
|
148
|
+
/** Set in close() so a pending background chunk doesn't touch a closed DB. */
|
|
149
|
+
private closed;
|
|
130
150
|
private scanCursor;
|
|
131
151
|
private stmts;
|
|
132
152
|
constructor(opts: TokenLedgerOptions);
|
|
@@ -135,27 +155,49 @@ export declare class TokenLedger {
|
|
|
135
155
|
/** Upsert a value into the ledger_meta key/value table. */
|
|
136
156
|
private setMeta;
|
|
137
157
|
/**
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
158
|
+
* Idempotent backfill of the attribution_key column for legacy rows that
|
|
159
|
+
* still carry the PRE_ATTRIBUTION_KEY sentinel (ingested before Phase 2
|
|
160
|
+
* attribution was wired into ingestLine).
|
|
141
161
|
*
|
|
142
162
|
* Why it's needed: before this fix, every JSONL-sourced event was hardcoded
|
|
143
163
|
* to `unknown::pre-attribution`, so 100% of spend sat in one bucket and the
|
|
144
|
-
* BurnDetector's absolute-share trigger fired forever
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
164
|
+
* BurnDetector's absolute-share trigger fired forever. Backfilling re-resolves
|
|
165
|
+
* those rows from the signals we DO have on each row (session_id, project_path,
|
|
166
|
+
* model).
|
|
167
|
+
*
|
|
168
|
+
* This is the FULL-DRAIN form (loops bounded chunks until done) — used by the
|
|
169
|
+
* 'sync' boot strategy, explicit callers, and tests. Production boot uses the
|
|
170
|
+
* async scheduler (scheduleAttributionBackfill) so a large ledger can't block
|
|
171
|
+
* construction. Marker-guarded via ledger_meta so it runs at most once per DB.
|
|
149
172
|
*
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
* ~384k rows — cheap. Marker-guarded via ledger_meta so it never re-runs.
|
|
173
|
+
* Termination: each chunk either makes progress (rows leave the sentinel) or
|
|
174
|
+
* sets the completion marker (no further progress possible), so this always
|
|
175
|
+
* terminates even if some triples resolve back to the sentinel.
|
|
154
176
|
*/
|
|
155
177
|
backfillAttributionOnce(): {
|
|
156
178
|
backfilled: number;
|
|
157
179
|
alreadyDone: boolean;
|
|
158
180
|
};
|
|
181
|
+
/**
|
|
182
|
+
* Process up to `limit` distinct still-sentinel (session, project, model)
|
|
183
|
+
* triples, committing per chunk so progress survives a restart. Returns
|
|
184
|
+
* done=true once the completion marker is set — either no sentinel rows remain
|
|
185
|
+
* or this batch could move none off the sentinel (the remaining rows stay
|
|
186
|
+
* unattributed, the documented acceptable worst case, and are exempt from burn
|
|
187
|
+
* alerts). Bounded + committable so it can be driven incrementally off the
|
|
188
|
+
* event loop without a multi-minute write transaction blocking the process.
|
|
189
|
+
*/
|
|
190
|
+
backfillAttributionChunk(limit?: number): {
|
|
191
|
+
backfilled: number;
|
|
192
|
+
done: boolean;
|
|
193
|
+
};
|
|
194
|
+
/**
|
|
195
|
+
* Drive the attribution backfill in bounded chunks off the event loop so a
|
|
196
|
+
* large ledger never blocks construction or server boot. Each tick processes
|
|
197
|
+
* one chunk then yields (setTimeout); reschedules until the marker is set.
|
|
198
|
+
* Unref'd so it never keeps the process alive on its own. Cancelled by close().
|
|
199
|
+
*/
|
|
200
|
+
private scheduleAttributionBackfill;
|
|
159
201
|
private prepareStatements;
|
|
160
202
|
/**
|
|
161
203
|
* Parse a single JSONL line and INSERT OR IGNORE into token_events.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenLedger.d.ts","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAKvE,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenLedger.d.ts","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,14 @@ import crypto from 'node:crypto';
|
|
|
19
19
|
import { NativeModuleHealer } from '../memory/NativeModuleHealer.js';
|
|
20
20
|
import { parseCodexRollout } from './CodexRolloutParser.js';
|
|
21
21
|
import { resolveAttribution, PRE_ATTRIBUTION_KEY } from './AttributionResolver.js';
|
|
22
|
+
/** ledger_meta marker key — set exactly once when the attribution backfill is complete. */
|
|
23
|
+
const ATTRIBUTION_BACKFILL_MARKER = 'attribution-backfill-v1';
|
|
24
|
+
/** Distinct (session, project, model) triples processed per backfill chunk. Bounds each write transaction. */
|
|
25
|
+
const ATTRIBUTION_BACKFILL_CHUNK = 100;
|
|
26
|
+
/** Delay between background backfill chunks — yields the event loop so /health + requests aren't blocked. */
|
|
27
|
+
const ATTRIBUTION_BACKFILL_TICK_MS = 200;
|
|
28
|
+
/** Give up the background backfill after this many consecutive chunk failures (rows stay on the sentinel). */
|
|
29
|
+
const ATTRIBUTION_BACKFILL_MAX_FAILURES = 20;
|
|
22
30
|
/**
|
|
23
31
|
* Compute a small content fingerprint for a JSONL file. Used to detect
|
|
24
32
|
* file rotation/replacement even when the OS reuses the same inode number
|
|
@@ -138,6 +146,12 @@ export class TokenLedger {
|
|
|
138
146
|
maxFilesPerScan;
|
|
139
147
|
yieldEveryNFiles;
|
|
140
148
|
asyncYieldFn;
|
|
149
|
+
/** Background attribution-backfill timer (async strategy); cleared on close(). */
|
|
150
|
+
attributionBackfillTimer = null;
|
|
151
|
+
/** Consecutive failed backfill chunks; bounded by ATTRIBUTION_BACKFILL_MAX_FAILURES. */
|
|
152
|
+
attributionBackfillFailures = 0;
|
|
153
|
+
/** Set in close() so a pending background chunk doesn't touch a closed DB. */
|
|
154
|
+
closed = false;
|
|
141
155
|
// Cursor between scan calls — when a tick stops at the per-scan cap,
|
|
142
156
|
// the next tick resumes from here instead of restarting the whole tree.
|
|
143
157
|
scanCursor = { dirIdx: 0, fileIdx: 0 };
|
|
@@ -177,19 +191,33 @@ export class TokenLedger {
|
|
|
177
191
|
}
|
|
178
192
|
}
|
|
179
193
|
this.prepareStatements();
|
|
180
|
-
// One-
|
|
194
|
+
// One-time: convert legacy rows written before Phase 2 attribution was
|
|
181
195
|
// wired (all under the PRE_ATTRIBUTION_KEY sentinel) into resolved keys.
|
|
182
196
|
// Marker-guarded so it runs exactly once per DB, even across restarts.
|
|
183
197
|
// Self-healing on boot — existing agents get this on their next server
|
|
184
198
|
// start with no PostUpdateMigrator change required.
|
|
185
|
-
|
|
186
|
-
|
|
199
|
+
//
|
|
200
|
+
// Runs ASYNC + chunked by default so a large ledger NEVER blocks
|
|
201
|
+
// construction (and therefore never blocks server boot). The old
|
|
202
|
+
// synchronous full-scan-in-one-transaction bricked agents with big
|
|
203
|
+
// ledgers: the scan outran the supervisor health-check timeout, the boot
|
|
204
|
+
// was killed mid-scan, the completion marker was never written, and the
|
|
205
|
+
// backfill re-ran on every restart — a permanent crash-loop.
|
|
206
|
+
const backfillStrategy = opts.attributionBackfill ?? 'async';
|
|
207
|
+
if (backfillStrategy === 'sync') {
|
|
208
|
+
try {
|
|
209
|
+
this.backfillAttributionOnce();
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
// Never let a backfill failure take down ledger init — the worst case
|
|
213
|
+
// is the sentinel rows stay unattributed (and exempt from burn alerts).
|
|
214
|
+
console.warn(`[token-ledger] attribution backfill skipped (non-fatal): ${err.message}`);
|
|
215
|
+
}
|
|
187
216
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
// is the sentinel rows stay unattributed (and exempt from burn alerts).
|
|
191
|
-
console.warn(`[token-ledger] attribution backfill skipped (non-fatal): ${err.message}`);
|
|
217
|
+
else if (backfillStrategy === 'async') {
|
|
218
|
+
this.scheduleAttributionBackfill();
|
|
192
219
|
}
|
|
220
|
+
// 'off' → caller drives backfillAttributionOnce()/backfillAttributionChunk().
|
|
193
221
|
}
|
|
194
222
|
/** Read a value from the ledger_meta key/value table (null if absent). */
|
|
195
223
|
getMeta(key) {
|
|
@@ -211,33 +239,62 @@ export class TokenLedger {
|
|
|
211
239
|
.run(key, value, Date.now());
|
|
212
240
|
}
|
|
213
241
|
/**
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
242
|
+
* Idempotent backfill of the attribution_key column for legacy rows that
|
|
243
|
+
* still carry the PRE_ATTRIBUTION_KEY sentinel (ingested before Phase 2
|
|
244
|
+
* attribution was wired into ingestLine).
|
|
217
245
|
*
|
|
218
246
|
* Why it's needed: before this fix, every JSONL-sourced event was hardcoded
|
|
219
247
|
* to `unknown::pre-attribution`, so 100% of spend sat in one bucket and the
|
|
220
|
-
* BurnDetector's absolute-share trigger fired forever
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
248
|
+
* BurnDetector's absolute-share trigger fired forever. Backfilling re-resolves
|
|
249
|
+
* those rows from the signals we DO have on each row (session_id, project_path,
|
|
250
|
+
* model).
|
|
251
|
+
*
|
|
252
|
+
* This is the FULL-DRAIN form (loops bounded chunks until done) — used by the
|
|
253
|
+
* 'sync' boot strategy, explicit callers, and tests. Production boot uses the
|
|
254
|
+
* async scheduler (scheduleAttributionBackfill) so a large ledger can't block
|
|
255
|
+
* construction. Marker-guarded via ledger_meta so it runs at most once per DB.
|
|
225
256
|
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
* ~384k rows — cheap. Marker-guarded via ledger_meta so it never re-runs.
|
|
257
|
+
* Termination: each chunk either makes progress (rows leave the sentinel) or
|
|
258
|
+
* sets the completion marker (no further progress possible), so this always
|
|
259
|
+
* terminates even if some triples resolve back to the sentinel.
|
|
230
260
|
*/
|
|
231
261
|
backfillAttributionOnce() {
|
|
232
|
-
|
|
233
|
-
if (this.getMeta(MARKER))
|
|
262
|
+
if (this.getMeta(ATTRIBUTION_BACKFILL_MARKER)) {
|
|
234
263
|
return { backfilled: 0, alreadyDone: true };
|
|
264
|
+
}
|
|
265
|
+
let backfilled = 0;
|
|
266
|
+
for (;;) {
|
|
267
|
+
const { backfilled: n, done } = this.backfillAttributionChunk(ATTRIBUTION_BACKFILL_CHUNK);
|
|
268
|
+
backfilled += n;
|
|
269
|
+
if (done)
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
return { backfilled, alreadyDone: false };
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Process up to `limit` distinct still-sentinel (session, project, model)
|
|
276
|
+
* triples, committing per chunk so progress survives a restart. Returns
|
|
277
|
+
* done=true once the completion marker is set — either no sentinel rows remain
|
|
278
|
+
* or this batch could move none off the sentinel (the remaining rows stay
|
|
279
|
+
* unattributed, the documented acceptable worst case, and are exempt from burn
|
|
280
|
+
* alerts). Bounded + committable so it can be driven incrementally off the
|
|
281
|
+
* event loop without a multi-minute write transaction blocking the process.
|
|
282
|
+
*/
|
|
283
|
+
backfillAttributionChunk(limit = ATTRIBUTION_BACKFILL_CHUNK) {
|
|
284
|
+
if (this.getMeta(ATTRIBUTION_BACKFILL_MARKER)) {
|
|
285
|
+
return { backfilled: 0, done: true };
|
|
286
|
+
}
|
|
235
287
|
// Distinct (session_id, project_path, model) triples still on the sentinel.
|
|
236
288
|
const triples = this.db
|
|
237
289
|
.prepare(`SELECT DISTINCT session_id AS sessionId, project_path AS projectPath, model AS model
|
|
238
290
|
FROM token_events
|
|
239
|
-
WHERE attribution_key =
|
|
240
|
-
|
|
291
|
+
WHERE attribution_key = ?
|
|
292
|
+
LIMIT ?`)
|
|
293
|
+
.all(PRE_ATTRIBUTION_KEY, limit);
|
|
294
|
+
if (triples.length === 0) {
|
|
295
|
+
this.setMeta(ATTRIBUTION_BACKFILL_MARKER, new Date().toISOString());
|
|
296
|
+
return { backfilled: 0, done: true };
|
|
297
|
+
}
|
|
241
298
|
const update = this.db.prepare(`UPDATE token_events
|
|
242
299
|
SET attribution_key = @newKey
|
|
243
300
|
WHERE attribution_key = @sentinel
|
|
@@ -253,8 +310,7 @@ export class TokenLedger {
|
|
|
253
310
|
prompt: null,
|
|
254
311
|
model: t.model,
|
|
255
312
|
});
|
|
256
|
-
// resolveAttribution never returns the sentinel, but guard anyway
|
|
257
|
-
// future change can't silently no-op the marker.
|
|
313
|
+
// resolveAttribution never returns the sentinel, but guard anyway.
|
|
258
314
|
if (newKey === PRE_ATTRIBUTION_KEY)
|
|
259
315
|
continue;
|
|
260
316
|
const res = update.run({
|
|
@@ -266,10 +322,53 @@ export class TokenLedger {
|
|
|
266
322
|
});
|
|
267
323
|
backfilled += res.changes;
|
|
268
324
|
}
|
|
269
|
-
this.setMeta(MARKER, new Date().toISOString());
|
|
270
325
|
});
|
|
271
326
|
run();
|
|
272
|
-
|
|
327
|
+
// No row could be moved off the sentinel this batch (every triple resolved
|
|
328
|
+
// back to the sentinel). Re-selecting them would loop forever, so finalize.
|
|
329
|
+
if (backfilled === 0) {
|
|
330
|
+
this.setMeta(ATTRIBUTION_BACKFILL_MARKER, new Date().toISOString());
|
|
331
|
+
return { backfilled: 0, done: true };
|
|
332
|
+
}
|
|
333
|
+
return { backfilled, done: false };
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Drive the attribution backfill in bounded chunks off the event loop so a
|
|
337
|
+
* large ledger never blocks construction or server boot. Each tick processes
|
|
338
|
+
* one chunk then yields (setTimeout); reschedules until the marker is set.
|
|
339
|
+
* Unref'd so it never keeps the process alive on its own. Cancelled by close().
|
|
340
|
+
*/
|
|
341
|
+
scheduleAttributionBackfill(delayMs = 0) {
|
|
342
|
+
if (this.closed)
|
|
343
|
+
return;
|
|
344
|
+
if (this.getMeta(ATTRIBUTION_BACKFILL_MARKER))
|
|
345
|
+
return;
|
|
346
|
+
const timer = setTimeout(() => {
|
|
347
|
+
this.attributionBackfillTimer = null;
|
|
348
|
+
if (this.closed)
|
|
349
|
+
return;
|
|
350
|
+
let more = false;
|
|
351
|
+
try {
|
|
352
|
+
const { done } = this.backfillAttributionChunk(ATTRIBUTION_BACKFILL_CHUNK);
|
|
353
|
+
this.attributionBackfillFailures = 0;
|
|
354
|
+
more = !done;
|
|
355
|
+
}
|
|
356
|
+
catch (err) {
|
|
357
|
+
this.attributionBackfillFailures += 1;
|
|
358
|
+
if (this.attributionBackfillFailures >= ATTRIBUTION_BACKFILL_MAX_FAILURES) {
|
|
359
|
+
console.warn(`[token-ledger] attribution backfill giving up after ${this.attributionBackfillFailures} failures (rows stay unattributed): ${err.message}`);
|
|
360
|
+
more = false;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
// Non-fatal: leave the rows on the sentinel and retry on the next tick.
|
|
364
|
+
more = true;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
if (more)
|
|
368
|
+
this.scheduleAttributionBackfill(ATTRIBUTION_BACKFILL_TICK_MS);
|
|
369
|
+
}, delayMs);
|
|
370
|
+
timer.unref?.();
|
|
371
|
+
this.attributionBackfillTimer = timer;
|
|
273
372
|
}
|
|
274
373
|
prepareStatements() {
|
|
275
374
|
this.stmts = {
|
|
@@ -1001,6 +1100,11 @@ export class TokenLedger {
|
|
|
1001
1100
|
}));
|
|
1002
1101
|
}
|
|
1003
1102
|
close() {
|
|
1103
|
+
this.closed = true;
|
|
1104
|
+
if (this.attributionBackfillTimer) {
|
|
1105
|
+
clearTimeout(this.attributionBackfillTimer);
|
|
1106
|
+
this.attributionBackfillTimer = null;
|
|
1107
|
+
}
|
|
1004
1108
|
try {
|
|
1005
1109
|
this.db.close();
|
|
1006
1110
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenLedger.js","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenLedger.js","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-05-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-05-29T21:18:18.960Z",
|
|
5
|
+
"instarVersion": "1.3.97",
|
|
6
6
|
"entryCount": 193,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- bump: patch -->
|
|
4
|
+
|
|
5
|
+
## What Changed
|
|
6
|
+
|
|
7
|
+
**Fixed a fleet-wide crash-loop that could brick an agent on startup.** The
|
|
8
|
+
TokenLedger attribution backfill (shipped in #530) ran a full scan of the entire
|
|
9
|
+
token-usage database synchronously during server boot. On a large ledger (Echo's
|
|
10
|
+
real one: 202 MB / ~380k rows) that scan ran 10+ minutes — longer than the
|
|
11
|
+
supervisor's health-check timeout — so the boot was killed mid-scan, the
|
|
12
|
+
"done" marker was never written, and the next boot re-ran the same scan from
|
|
13
|
+
scratch. The result was a permanent boot crash-loop: the server could never
|
|
14
|
+
become healthy.
|
|
15
|
+
|
|
16
|
+
The backfill now runs **asynchronously after the server is listening**, in small
|
|
17
|
+
**resumable chunks** that save progress — so a large token-usage database can no
|
|
18
|
+
longer freeze an agent on startup. Boot is instant again regardless of ledger
|
|
19
|
+
size; the re-labeling drains quietly in the background. The completion marker is
|
|
20
|
+
unchanged, so agents that already finished the backfill never re-run it, and
|
|
21
|
+
agents interrupted mid-scan resume instead of restarting.
|
|
22
|
+
|
|
23
|
+
## What to Tell Your User
|
|
24
|
+
|
|
25
|
+
If your agent ever got stuck "restarting" or unresponsive after a recent update,
|
|
26
|
+
this removes one cause: a large token-usage database freezing the agent on
|
|
27
|
+
startup. No action needed — boot is now instant regardless of ledger size. For a
|
|
28
|
+
few seconds after a big agent boots, a handful of token-usage rows may show an
|
|
29
|
+
"unknown" label until the background pass catches up — harmless, since token
|
|
30
|
+
counts are display-only and never block real work.
|
|
31
|
+
|
|
32
|
+
## Summary of New Capabilities
|
|
33
|
+
|
|
34
|
+
| Capability | How to Use |
|
|
35
|
+
|-----------|-----------|
|
|
36
|
+
| Non-blocking token-ledger backfill | Automatic — every agent gets it by running the new build. No config needed. |
|
|
37
|
+
| `attributionBackfill` ledger option | `'async'` (default), `'sync'`, or `'off'` on `new TokenLedger(...)` — opt into inline backfill or disable auto-run (tests / special cases). |
|
|
38
|
+
|
|
39
|
+
## Evidence
|
|
40
|
+
|
|
41
|
+
**Reproduction:** Echo's production server, 2026-05-29 ~18:34–19:53Z. After a
|
|
42
|
+
restart, `/health` returned 000 for ~90 minutes; the supervisor log showed
|
|
43
|
+
repeated "Server unhealthy. Restart attempt N/5". `sample <server-pid> 3`
|
|
44
|
+
captured the booting process burning CPU entirely inside `better_sqlite3.node`
|
|
45
|
+
(`sqlite3VdbeExec` / `btreeNext` / `pcache1Fetch` — a full B-tree scan). The DB:
|
|
46
|
+
`.instar/server-data/token-ledger.db` = 202 MB / ~380k rows.
|
|
47
|
+
|
|
48
|
+
**Before:** server stuck in a permanent boot crash-loop; the synchronous
|
|
49
|
+
constructor backfill never finished before the health-timeout killed the boot,
|
|
50
|
+
so the completion marker was never set and every subsequent boot re-scanned from
|
|
51
|
+
zero.
|
|
52
|
+
|
|
53
|
+
**After:** with the async/chunked backfill, the constructor returns immediately
|
|
54
|
+
and the server reports healthy at once; the re-labeling drains in the
|
|
55
|
+
background. Confirmed manually that moving the oversized DB aside let a fresh
|
|
56
|
+
(empty) ledger boot instantly — isolating the backfill as the sole cause — and
|
|
57
|
+
the new code reproduces that instant boot while preserving the full ledger.
|
|
58
|
+
Unit + integration tests cover async-non-blocking, chunk-bounded/resumable, and
|
|
59
|
+
the existing migration/503 paths (52 green); `tsc --noEmit` clean.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Side-effects review — TokenLedger async/chunked attribution backfill
|
|
2
|
+
|
|
3
|
+
**Spec:** `docs/specs/TOKENLEDGER-BACKFILL-ASYNC-BOOT-SPEC.md`
|
|
4
|
+
**Change:** `src/monitoring/TokenLedger.ts` (+ test updates)
|
|
5
|
+
**Class:** boot-path safety fix for a fleet-wide, agent-bricking crash-loop.
|
|
6
|
+
|
|
7
|
+
## What changed
|
|
8
|
+
|
|
9
|
+
The one-shot attribution backfill (#530) no longer runs synchronously inside the
|
|
10
|
+
`TokenLedger` constructor. New `attributionBackfill: 'async' | 'sync' | 'off'`
|
|
11
|
+
option (default `'async'`):
|
|
12
|
+
|
|
13
|
+
- `'async'` — constructor returns immediately; a background unref'd timer drains
|
|
14
|
+
the backfill one bounded chunk at a time after the server is listening.
|
|
15
|
+
- `'sync'` — legacy inline full-drain at construction (tests + opt-in callers).
|
|
16
|
+
- `'off'` — no auto-run; `backfillAttributionChunk()` callable directly.
|
|
17
|
+
|
|
18
|
+
`backfillAttributionOnce()` refactored to loop over a new
|
|
19
|
+
`backfillAttributionChunk(limit)` (DISTINCT-triple, transactional, marker-gated,
|
|
20
|
+
resumable). `close()` now clears the pending timer and sets a `closed` guard.
|
|
21
|
+
|
|
22
|
+
## Blast radius
|
|
23
|
+
|
|
24
|
+
- **Callers of `new TokenLedger(...)`:** the production caller (server startup
|
|
25
|
+
wiring) gets the new default `'async'` with no code change. No call sites need
|
|
26
|
+
to pass the new option. Searched: the only behavioral consumers are the server
|
|
27
|
+
boot wiring and tests.
|
|
28
|
+
- **Public API:** purely additive — one optional constructor field, one new
|
|
29
|
+
public method (`backfillAttributionChunk`). No signature of an existing method
|
|
30
|
+
changed. `backfillAttributionOnce()` keeps its return shape
|
|
31
|
+
(`{ backfilled, alreadyDone }`).
|
|
32
|
+
- **DB schema:** unchanged. Same `ledger_meta` marker key AND value
|
|
33
|
+
(`attribution-backfill-v1`) → an agent that already completed the backfill
|
|
34
|
+
under old code is detected as done and never re-scans; an agent mid-scan
|
|
35
|
+
resumes rather than restarting.
|
|
36
|
+
|
|
37
|
+
## What could break (and why it doesn't)
|
|
38
|
+
|
|
39
|
+
- **Tests asserting synchronous post-construction conversion** — would now see
|
|
40
|
+
un-converted rows under the new default. Mitigated: the two such tests
|
|
41
|
+
(`token-ledger.test.ts` migration test, `burn-attribution-wiring.test.ts`
|
|
42
|
+
backfill block) opt into `attributionBackfill: 'sync'`. Verified green.
|
|
43
|
+
- **`/tokens/*` correctness window** — for a short interval after a large-ledger
|
|
44
|
+
boot, some rows still read the `unknown::pre-attribution` sentinel until the
|
|
45
|
+
background drain catches up. Attribution is observability-only (never gates a
|
|
46
|
+
job, never mutates source), and a fresh install already serves the sentinel
|
|
47
|
+
before its first backfill — so this is an existing, benign state, not a new
|
|
48
|
+
failure mode. Strictly better than the prior outcome (server fully down).
|
|
49
|
+
- **Runaway background loop** — bounded by `ATTRIBUTION_BACKFILL_MAX_FAILURES`
|
|
50
|
+
consecutive-error cap and by the marker-on-zero-progress termination; the
|
|
51
|
+
timer is unref'd so it never holds the process open.
|
|
52
|
+
- **Use-after-close** — `close()` sets `closed` + clears the timer before
|
|
53
|
+
`db.close()`; a scheduled chunk checks `closed` and no-ops.
|
|
54
|
+
|
|
55
|
+
## Security
|
|
56
|
+
|
|
57
|
+
No new external input, network, auth, or filesystem surface. No secrets touched.
|
|
58
|
+
Pure refactor of an internal SQLite maintenance task from sync→async-chunked.
|
|
59
|
+
|
|
60
|
+
## Migration parity
|
|
61
|
+
|
|
62
|
+
Server-internal monitoring code, not an agent-installed file — no
|
|
63
|
+
PostUpdateMigrator entry required. Every agent receives the fix by running the
|
|
64
|
+
new server build. No config defaults added.
|
|
65
|
+
|
|
66
|
+
## Rollback
|
|
67
|
+
|
|
68
|
+
Revert the commit. The marker key/value is unchanged, so a rolled-back agent
|
|
69
|
+
that had started (or finished) the async backfill is consistent under the old
|
|
70
|
+
synchronous code path.
|
|
71
|
+
|
|
72
|
+
## Tests
|
|
73
|
+
|
|
74
|
+
Unit (`burn-attribution-wiring`, `token-ledger`) + integration
|
|
75
|
+
(`tokens-503-regression`) — 52 tests green. `tsc --noEmit` clean.
|