omp-fabric 1.25.26 → 1.25.28
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/CHANGELOG.md +20 -0
- package/dist/compaction/lcm-runtime.d.ts +2 -0
- package/dist/compaction/lcm-runtime.d.ts.map +1 -1
- package/dist/compaction/lcm-runtime.js +30 -5
- package/dist/compaction/lcm-runtime.js.map +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +2 -2
- package/dist/storage/lcm-ledger.d.ts +4 -0
- package/dist/storage/lcm-ledger.d.ts.map +1 -1
- package/dist/storage/lcm-migration.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.25.28
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- The `/fabric` ledger migration path now runs `LcmLedger.runStartupChecks()` after it opens a ledger. 1.25.27 moved migrations, the FTS backfill and the integrity check out of the constructor into that method, but `src/storage/lcm-migration.ts` opens a ledger and writes through `ledger.db` directly, so a migration would have written into an un-migrated, unverified ledger. The two dev benchmarks (`scripts/benchmark-lcm.mjs`, `benchmark-lcm-contender.mjs`) construct ledgers without the checks as well; they measure raw ledger mechanics, so they stay as they are.
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Correction to the 1.25.26 entry: it called the 30000ms handler overrun a tail risk and said the single sample above it came from the old bundle. The host log for 2026-10-15 says otherwise: `Extension handler timed out` with `event: "session_start"` on 17 separate session starts between 08:01 and 11:12, so the overrun was systematic and no bundle in that window was immune.
|
|
12
|
+
- Real-host confirmation of 1.25.27 from the host logs after this session's restart: a session that booted 12:27:04 on 1.25.26 logged its `session_start` timeout at 12:27:40, 36s after boot; five sessions that booted after the 12:36:25 install of 1.25.27, three of them concurrent, logged none.
|
|
13
|
+
|
|
14
|
+
## 1.25.27
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Correction to the 1.25.26 entry: it says its host pins moved from 18.10.1, but the working tree was already on 18.10.4 (shipped in 1.25.25). The range was 18.10.4 to 18.11.0.
|
|
19
|
+
- **Session start no longer blocks on the LCM ledger's size.** `LcmLedger` construction ran `migrateSchema()` and `PRAGMA integrity_check` — both O(file size) — inline, so every `session_start` handler paid them: 5929ms, 9210ms, 17393ms and 22245ms across measured runs against this project's 611MB ledger (the ledger directory holds several 1.5-2.4GB files), inside the host's 30000ms per-handler budget. The host log has the receipts: `Extension handler timed out` for `event: "session_start"`, 17 times on 2026-10-15 alone, including one at 11:12:57 with 1.25.26 already installed. The FTS table and trigger DDL stays synchronous, because it is cheap and `searchRaw` needs those objects to exist; migrations, their backfill and the integrity check moved to `LcmLedger.runStartupChecks()`, which the detached session warmup runs after a macrotask yield. Compaction is unaffected: the compaction hook's `getEngine()` reports `omp` until the runtime is `ready`, so a cold session hands compaction to the host core instead of summarising through an unverified ledger.
|
|
20
|
+
- Same phase marks before and after: `session_start` returned after 5929-22245ms before and 672ms after (compat 155ms, bootstrap 3ms, LCM prepare 513ms, activation 0ms). The deferred migrations and integrity check still cost about 2s on the 611MB ledger, now on a background macrotask outside the handler.
|
|
21
|
+
- `tests/storage/lcm-ledger.test.ts` now drives `runStartupChecks()` explicitly for the five migration cases (orphan quarantine, FTS backfill, fts5-less fallback, index re-sync, purge counts). The contracts are unchanged; only their timing moved.
|
|
22
|
+
|
|
3
23
|
## 1.25.26
|
|
4
24
|
|
|
5
25
|
### Changed
|
|
@@ -91,6 +91,8 @@ export declare class LcmRuntime {
|
|
|
91
91
|
private persistedSessionId;
|
|
92
92
|
private lastReconciliation;
|
|
93
93
|
constructor(context: ExtensionContext, options?: LcmRuntimeOptions | (() => LcmRuntimeOptions));
|
|
94
|
+
get ready(): boolean;
|
|
95
|
+
open(): void;
|
|
94
96
|
private get options();
|
|
95
97
|
get projectKey(): string;
|
|
96
98
|
get signal(): AbortSignal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lcm-runtime.d.ts","sourceRoot":"","sources":["../../src/compaction/lcm-runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lcm-runtime.d.ts","sourceRoot":"","sources":["../../src/compaction/lcm-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -259,6 +259,7 @@ var LcmLedger = class {
|
|
|
259
259
|
transactionDepth = 0;
|
|
260
260
|
closed = false;
|
|
261
261
|
fts = false;
|
|
262
|
+
startupChecksRun = false;
|
|
262
263
|
migrations = [];
|
|
263
264
|
constructor(options = {}) {
|
|
264
265
|
this.now = options.now ?? Date.now;
|
|
@@ -283,16 +284,29 @@ var LcmLedger = class {
|
|
|
283
284
|
this.db.exec("ALTER TABLE raw_entries ADD COLUMN payload_json TEXT NOT NULL DEFAULT ''");
|
|
284
285
|
}
|
|
285
286
|
this.fts = probeFts5(this.db);
|
|
286
|
-
this.
|
|
287
|
+
this.ensureFtsObjects();
|
|
287
288
|
this.db.exec("PRAGMA foreign_keys=ON");
|
|
288
|
-
const result = this.db.prepare("PRAGMA integrity_check").get();
|
|
289
|
-
if (result.integrity_check !== "ok") throw new Error(String(result.integrity_check));
|
|
290
289
|
this.registerProject(this.project);
|
|
291
290
|
} catch (error) {
|
|
292
291
|
this.degraded = true;
|
|
293
292
|
throw new LedgerDegradedError("ledger startup failed", error);
|
|
294
293
|
}
|
|
295
294
|
}
|
|
295
|
+
get startupChecksComplete() {
|
|
296
|
+
return this.startupChecksRun;
|
|
297
|
+
}
|
|
298
|
+
runStartupChecks() {
|
|
299
|
+
if (this.startupChecksRun) return;
|
|
300
|
+
try {
|
|
301
|
+
this.migrateSchema();
|
|
302
|
+
const result = this.db.prepare("PRAGMA integrity_check").get();
|
|
303
|
+
if (result.integrity_check !== "ok") throw new Error(String(result.integrity_check));
|
|
304
|
+
} catch (error) {
|
|
305
|
+
this.degraded = true;
|
|
306
|
+
throw new LedgerDegradedError("ledger startup checks failed", error);
|
|
307
|
+
}
|
|
308
|
+
this.startupChecksRun = true;
|
|
309
|
+
}
|
|
296
310
|
readRepairLadder(projectKey = this.project.key) {
|
|
297
311
|
return this.readOnly((db) => new Map(db.prepare("SELECT fault,attempts,next_at,detail,updated_at FROM repair_ladder WHERE project_key=?").all(projectKey).map((row) => [row.fault, { attempts: Number(row.attempts), nextAt: Number(row.next_at), detail: row.detail, updatedAt: Number(row.updated_at) }])));
|
|
298
312
|
}
|
|
@@ -361,6 +375,11 @@ var LcmLedger = class {
|
|
|
361
375
|
if (version < 3 || this.db.prepare("PRAGMA foreign_key_list(summary_edges)").all().length === 0) this.migrations.push(this.migrateDerivedForeignKeys());
|
|
362
376
|
if (version !== LEDGER_SCHEMA_VERSION) this.db.prepare("INSERT INTO schema_metadata(key,value) VALUES('version',?) ON CONFLICT(key) DO UPDATE SET value=excluded.value").run(String(LEDGER_SCHEMA_VERSION));
|
|
363
377
|
}
|
|
378
|
+
ensureFtsObjects() {
|
|
379
|
+
if (!this.fts) return;
|
|
380
|
+
this.db.exec("CREATE VIRTUAL TABLE IF NOT EXISTS raw_entries_fts USING fts5(content, project_key UNINDEXED, session_id UNINDEXED, entry_id UNINDEXED, revision UNINDEXED)");
|
|
381
|
+
this.db.exec("CREATE TRIGGER IF NOT EXISTS raw_entries_fts_insert AFTER INSERT ON raw_entries BEGIN INSERT INTO raw_entries_fts(content,project_key,session_id,entry_id,revision) VALUES(new.content,new.project_key,new.session_id,new.entry_id,new.revision); END");
|
|
382
|
+
}
|
|
364
383
|
migrateFullTextIndex() {
|
|
365
384
|
if (!this.fts) {
|
|
366
385
|
this.db.exec("DROP TRIGGER IF EXISTS raw_entries_fts_insert");
|
|
@@ -368,8 +387,7 @@ var LcmLedger = class {
|
|
|
368
387
|
}
|
|
369
388
|
let indexed = 0;
|
|
370
389
|
this.transaction((db) => {
|
|
371
|
-
|
|
372
|
-
db.exec("CREATE TRIGGER IF NOT EXISTS raw_entries_fts_insert AFTER INSERT ON raw_entries BEGIN INSERT INTO raw_entries_fts(content,project_key,session_id,entry_id,revision) VALUES(new.content,new.project_key,new.session_id,new.entry_id,new.revision); END");
|
|
390
|
+
this.ensureFtsObjects();
|
|
373
391
|
indexed = Number(db.prepare("SELECT count(*) n FROM raw_entries").get().n);
|
|
374
392
|
if (Number(db.prepare("SELECT count(*) n FROM raw_entries_fts").get().n) === indexed) return;
|
|
375
393
|
db.exec("DELETE FROM raw_entries_fts");
|
|
@@ -978,6 +996,7 @@ function migrateSessions(options) {
|
|
|
978
996
|
if (options.ledger) ledger = options.ledger;
|
|
979
997
|
else if (options.ledgerRoot) ledger = new LcmLedger({ rootDir: options.ledgerRoot, project: { recordedCwd: cwd } });
|
|
980
998
|
else ledger = new LcmLedger({ project: { recordedCwd: cwd } });
|
|
999
|
+
ledger.runStartupChecks();
|
|
981
1000
|
database = ledger.db;
|
|
982
1001
|
database.exec(CHECKPOINT_SCHEMA);
|
|
983
1002
|
} else if (options.ledger) database = options.ledger.db;
|
|
@@ -1804,6 +1823,12 @@ var LcmRuntime = class {
|
|
|
1804
1823
|
}
|
|
1805
1824
|
});
|
|
1806
1825
|
}
|
|
1826
|
+
get ready() {
|
|
1827
|
+
return this.ledger.startupChecksComplete;
|
|
1828
|
+
}
|
|
1829
|
+
open() {
|
|
1830
|
+
this.ledger.runStartupChecks();
|
|
1831
|
+
}
|
|
1807
1832
|
get options() {
|
|
1808
1833
|
return this.resolveOptions();
|
|
1809
1834
|
}
|