@indigoai-us/hq-cloud 6.15.80 → 6.15.82
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/backup-prune.d.ts +18 -0
- package/dist/backup-prune.d.ts.map +1 -1
- package/dist/backup-prune.js +20 -0
- package/dist/backup-prune.js.map +1 -1
- package/dist/backup-prune.test.js +30 -1
- package/dist/backup-prune.test.js.map +1 -1
- package/dist/bin/backup-prune-runner.d.ts +4 -1
- package/dist/bin/backup-prune-runner.d.ts.map +1 -1
- package/dist/bin/backup-prune-runner.js +61 -38
- package/dist/bin/backup-prune-runner.js.map +1 -1
- package/dist/bin/backup-prune-runner.test.d.ts +2 -0
- package/dist/bin/backup-prune-runner.test.d.ts.map +1 -0
- package/dist/bin/backup-prune-runner.test.js +22 -0
- package/dist/bin/backup-prune-runner.test.js.map +1 -0
- package/dist/bin/layout-compatibility.d.ts +12 -0
- package/dist/bin/layout-compatibility.d.ts.map +1 -0
- package/dist/bin/layout-compatibility.js +50 -0
- package/dist/bin/layout-compatibility.js.map +1 -0
- package/dist/bin/layout-compatibility.test.d.ts +2 -0
- package/dist/bin/layout-compatibility.test.d.ts.map +1 -0
- package/dist/bin/layout-compatibility.test.js +87 -0
- package/dist/bin/layout-compatibility.test.js.map +1 -0
- package/dist/bin/sync-runner-company.d.ts.map +1 -1
- package/dist/bin/sync-runner-company.js +15 -0
- package/dist/bin/sync-runner-company.js.map +1 -1
- package/dist/bin/sync-runner-company.test.js +65 -0
- package/dist/bin/sync-runner-company.test.js.map +1 -1
- package/dist/bin/sync-runner-events.test.js +20 -0
- package/dist/bin/sync-runner-events.test.js.map +1 -1
- package/dist/bin/sync-runner-watch-loop.d.ts +9 -0
- package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
- package/dist/bin/sync-runner-watch-loop.js +369 -21
- package/dist/bin/sync-runner-watch-loop.js.map +1 -1
- package/dist/bin/sync-runner.d.ts +5 -0
- package/dist/bin/sync-runner.d.ts.map +1 -1
- package/dist/bin/sync-runner.js +11 -1
- package/dist/bin/sync-runner.js.map +1 -1
- package/dist/bin/sync-runner.test.js +165 -2
- package/dist/bin/sync-runner.test.js.map +1 -1
- package/dist/cli/share.d.ts.map +1 -1
- package/dist/cli/share.js +29 -5
- package/dist/cli/share.js.map +1 -1
- package/dist/cli/share.test.js +131 -24
- package/dist/cli/share.test.js.map +1 -1
- package/dist/cli/sync.d.ts +23 -0
- package/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +72 -7
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +199 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/cli/watch-event-push-conflict.test.js +22 -11
- package/dist/cli/watch-event-push-conflict.test.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/journal.d.ts +18 -0
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +41 -17
- package/dist/journal.js.map +1 -1
- package/dist/journal.test.js +8 -1
- package/dist/journal.test.js.map +1 -1
- package/dist/outposts/self-deploy.d.ts.map +1 -1
- package/dist/outposts/self-deploy.js +10 -1
- package/dist/outposts/self-deploy.js.map +1 -1
- package/dist/outposts/self-deploy.test.js +4 -1
- package/dist/outposts/self-deploy.test.js.map +1 -1
- package/dist/s3.d.ts +62 -0
- package/dist/s3.d.ts.map +1 -1
- package/dist/s3.js +91 -1
- package/dist/s3.js.map +1 -1
- package/dist/s3.rename-retry.test.d.ts +2 -0
- package/dist/s3.rename-retry.test.d.ts.map +1 -0
- package/dist/s3.rename-retry.test.js +153 -0
- package/dist/s3.rename-retry.test.js.map +1 -0
- package/dist/sync/area-ledger-migration.d.ts +8 -1
- package/dist/sync/area-ledger-migration.d.ts.map +1 -1
- package/dist/sync/area-ledger-migration.js +23 -0
- package/dist/sync/area-ledger-migration.js.map +1 -1
- package/dist/sync/area-ledger-migration.test.js +20 -0
- package/dist/sync/area-ledger-migration.test.js.map +1 -1
- package/dist/sync/area-ledger.d.ts +10 -0
- package/dist/sync/area-ledger.d.ts.map +1 -1
- package/dist/sync/area-ledger.js +11 -0
- package/dist/sync/area-ledger.js.map +1 -1
- package/dist/sync/feature-flags.d.ts +29 -0
- package/dist/sync/feature-flags.d.ts.map +1 -1
- package/dist/sync/feature-flags.js +44 -0
- package/dist/sync/feature-flags.js.map +1 -1
- package/dist/sync/feature-flags.test.js +38 -1
- package/dist/sync/feature-flags.test.js.map +1 -1
- package/dist/sync/index.d.ts +6 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +3 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/layout-compatibility.d.ts +17 -0
- package/dist/sync/layout-compatibility.d.ts.map +1 -0
- package/dist/sync/layout-compatibility.js +29 -0
- package/dist/sync/layout-compatibility.js.map +1 -0
- package/dist/sync/parallel-sync-coordinator.d.ts.map +1 -1
- package/dist/sync/parallel-sync-coordinator.js +0 -3
- package/dist/sync/parallel-sync-coordinator.js.map +1 -1
- package/dist/sync/parallel-sync-coordinator.test.js +14 -0
- package/dist/sync/parallel-sync-coordinator.test.js.map +1 -1
- package/dist/sync/per-area-maintenance.d.ts +45 -0
- package/dist/sync/per-area-maintenance.d.ts.map +1 -0
- package/dist/sync/per-area-maintenance.js +131 -0
- package/dist/sync/per-area-maintenance.js.map +1 -0
- package/dist/sync/per-area-maintenance.test.d.ts +2 -0
- package/dist/sync/per-area-maintenance.test.d.ts.map +1 -0
- package/dist/sync/per-area-maintenance.test.js +100 -0
- package/dist/sync/per-area-maintenance.test.js.map +1 -0
- package/dist/sync/realtime-telemetry.d.ts +49 -0
- package/dist/sync/realtime-telemetry.d.ts.map +1 -0
- package/dist/sync/realtime-telemetry.js +101 -0
- package/dist/sync/realtime-telemetry.js.map +1 -0
- package/dist/sync/realtime-telemetry.test.d.ts +2 -0
- package/dist/sync/realtime-telemetry.test.d.ts.map +1 -0
- package/dist/sync/realtime-telemetry.test.js +64 -0
- package/dist/sync/realtime-telemetry.test.js.map +1 -0
- package/dist/sync/state-store.d.ts +10 -0
- package/dist/sync/state-store.d.ts.map +1 -1
- package/dist/sync/state-store.js +18 -0
- package/dist/sync/state-store.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parallel-sync-coordinator.test.js","sourceRoot":"","sources":["../../src/sync/parallel-sync-coordinator.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parallel-sync-coordinator.test.js","sourceRoot":"","sources":["../../src/sync/parallel-sync-coordinator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const AREA_MAINTENANCE_CURSOR_FORMAT = 1;
|
|
2
|
+
export type AreaMaintenanceCursor = {
|
|
3
|
+
format: typeof AREA_MAINTENANCE_CURSOR_FORMAT;
|
|
4
|
+
epoch: string;
|
|
5
|
+
pendingAreaIds: readonly string[];
|
|
6
|
+
nextIndex: number;
|
|
7
|
+
};
|
|
8
|
+
export type AreaMaintenanceCursorStoreOptions = {
|
|
9
|
+
rootDir: string;
|
|
10
|
+
journalSlug: string;
|
|
11
|
+
layoutEpoch: number;
|
|
12
|
+
};
|
|
13
|
+
export type AreaMaintenanceTarget = {
|
|
14
|
+
maintenanceAreaIds(): readonly string[];
|
|
15
|
+
maintainArea(areaId: string): unknown;
|
|
16
|
+
};
|
|
17
|
+
export type AreaMaintenanceOutcome = {
|
|
18
|
+
areaId: string;
|
|
19
|
+
status: "maintained";
|
|
20
|
+
result: unknown;
|
|
21
|
+
} | {
|
|
22
|
+
areaId: string;
|
|
23
|
+
status: "isolated";
|
|
24
|
+
error: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* One tiny cursor per journal layout. It is advanced after each area, not at
|
|
28
|
+
* the end of a sweep, so a worker restart cannot make a healthy area repeat a
|
|
29
|
+
* large maintenance pass because another area was corrupt.
|
|
30
|
+
*/
|
|
31
|
+
export declare class AreaMaintenanceCursorStore {
|
|
32
|
+
private readonly store;
|
|
33
|
+
private constructor();
|
|
34
|
+
static open(options: AreaMaintenanceCursorStoreOptions): AreaMaintenanceCursorStore;
|
|
35
|
+
read(): AreaMaintenanceCursor | undefined;
|
|
36
|
+
begin(epoch: string, areaIds: readonly string[]): AreaMaintenanceCursor;
|
|
37
|
+
completeUnit(cursor: AreaMaintenanceCursor, areaId: string): AreaMaintenanceCursor;
|
|
38
|
+
}
|
|
39
|
+
/** Execute at most one area maintenance unit and durably checkpoint its result. */
|
|
40
|
+
export declare function runBoundedAreaMaintenance(target: AreaMaintenanceTarget, cursorStore: AreaMaintenanceCursorStore, epoch: string): {
|
|
41
|
+
cursor: AreaMaintenanceCursor;
|
|
42
|
+
outcome?: AreaMaintenanceOutcome;
|
|
43
|
+
complete: boolean;
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=per-area-maintenance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-area-maintenance.d.ts","sourceRoot":"","sources":["../../src/sync/per-area-maintenance.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,OAAO,8BAA8B,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAAC;IACxC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAI1D;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiD;IAEvE,OAAO;IAcP,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAiC,GAAG,0BAA0B;IAInF,IAAI,IAAI,qBAAqB,GAAG,SAAS;IAKzC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,qBAAqB;IAsBvE,YAAY,CAAC,MAAM,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,GAAG,qBAAqB;CAYnF;AAED,mFAAmF;AACnF,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,0BAA0B,EACvC,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,qBAAqB,CAAC;IAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAmBxF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable, bounded maintenance chores for an area-authoritative journal.
|
|
3
|
+
*
|
|
4
|
+
* This module deliberately knows nothing about the global operation lock.
|
|
5
|
+
* Normal rotation and healthy repair are per-area work; callers reserve the
|
|
6
|
+
* exclusive gate only for a format change or an authority cutover.
|
|
7
|
+
*/
|
|
8
|
+
import { StateStore } from "./state-store.js";
|
|
9
|
+
export const AREA_MAINTENANCE_CURSOR_FORMAT = 1;
|
|
10
|
+
const CURSOR_SET = 1;
|
|
11
|
+
/**
|
|
12
|
+
* One tiny cursor per journal layout. It is advanced after each area, not at
|
|
13
|
+
* the end of a sweep, so a worker restart cannot make a healthy area repeat a
|
|
14
|
+
* large maintenance pass because another area was corrupt.
|
|
15
|
+
*/
|
|
16
|
+
export class AreaMaintenanceCursorStore {
|
|
17
|
+
store;
|
|
18
|
+
constructor(options) {
|
|
19
|
+
if (!Number.isSafeInteger(options.layoutEpoch) || options.layoutEpoch < 1) {
|
|
20
|
+
throw new Error("area maintenance layoutEpoch must be a positive safe integer");
|
|
21
|
+
}
|
|
22
|
+
if (options.journalSlug.length === 0)
|
|
23
|
+
throw new Error("area maintenance journalSlug is required");
|
|
24
|
+
this.store = StateStore.open({
|
|
25
|
+
rootDir: options.rootDir,
|
|
26
|
+
scopeId: `area-maintenance:${options.journalSlug}:${options.layoutEpoch}`,
|
|
27
|
+
initialState: {},
|
|
28
|
+
reduce: reduceCursor,
|
|
29
|
+
validateRecord: validateCursorRecord,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
static open(options) {
|
|
33
|
+
return new AreaMaintenanceCursorStore(options);
|
|
34
|
+
}
|
|
35
|
+
read() {
|
|
36
|
+
this.store.refresh();
|
|
37
|
+
return cloneCursor(this.store.getState().cursor);
|
|
38
|
+
}
|
|
39
|
+
begin(epoch, areaIds) {
|
|
40
|
+
if (epoch.length === 0)
|
|
41
|
+
throw new Error("area maintenance epoch is required");
|
|
42
|
+
const pendingAreaIds = [...new Set(areaIds)].sort((left, right) => left.localeCompare(right));
|
|
43
|
+
if (pendingAreaIds.some((areaId) => areaId.length === 0))
|
|
44
|
+
throw new Error("area maintenance areaId is required");
|
|
45
|
+
const current = this.read();
|
|
46
|
+
// A scheduler's calendar epoch can advance before a bounded sweep is
|
|
47
|
+
// complete. Keep that sweep's durable epoch until every area has been
|
|
48
|
+
// checkpointed; otherwise the next daily invocation would reset to index
|
|
49
|
+
// zero and starve every later area indefinitely.
|
|
50
|
+
if (current && sameAreas(current.pendingAreaIds, pendingAreaIds) && current.nextIndex < current.pendingAreaIds.length) {
|
|
51
|
+
return current;
|
|
52
|
+
}
|
|
53
|
+
const cursor = {
|
|
54
|
+
format: AREA_MAINTENANCE_CURSOR_FORMAT,
|
|
55
|
+
epoch,
|
|
56
|
+
pendingAreaIds,
|
|
57
|
+
nextIndex: 0,
|
|
58
|
+
};
|
|
59
|
+
this.store.append(CURSOR_SET, { cursor });
|
|
60
|
+
return cursor;
|
|
61
|
+
}
|
|
62
|
+
completeUnit(cursor, areaId) {
|
|
63
|
+
const current = this.read();
|
|
64
|
+
if (!current || current.epoch !== cursor.epoch || !sameAreas(current.pendingAreaIds, cursor.pendingAreaIds)) {
|
|
65
|
+
throw new Error("area maintenance cursor changed before checkpoint");
|
|
66
|
+
}
|
|
67
|
+
if (current.pendingAreaIds[current.nextIndex] !== areaId) {
|
|
68
|
+
throw new Error("area maintenance cursor checkpoint is out of order");
|
|
69
|
+
}
|
|
70
|
+
const next = { ...current, nextIndex: current.nextIndex + 1 };
|
|
71
|
+
this.store.append(CURSOR_SET, { cursor: next });
|
|
72
|
+
return next;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/** Execute at most one area maintenance unit and durably checkpoint its result. */
|
|
76
|
+
export function runBoundedAreaMaintenance(target, cursorStore, epoch) {
|
|
77
|
+
let cursor = cursorStore.begin(epoch, target.maintenanceAreaIds());
|
|
78
|
+
const areaId = cursor.pendingAreaIds[cursor.nextIndex];
|
|
79
|
+
if (areaId === undefined)
|
|
80
|
+
return { cursor, complete: true };
|
|
81
|
+
let outcome;
|
|
82
|
+
try {
|
|
83
|
+
outcome = { areaId, status: "maintained", result: target.maintainArea(areaId) };
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
// A malformed/corrupt area is recorded as its own completed unit. The
|
|
87
|
+
// next scheduler tick can continue the healthy areas while the operator
|
|
88
|
+
// receives the isolated error through its ordinary chore reporting path.
|
|
89
|
+
outcome = {
|
|
90
|
+
areaId,
|
|
91
|
+
status: "isolated",
|
|
92
|
+
error: error instanceof Error ? error.message : String(error),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
cursor = cursorStore.completeUnit(cursor, areaId);
|
|
96
|
+
return { cursor, outcome, complete: cursor.nextIndex >= cursor.pendingAreaIds.length };
|
|
97
|
+
}
|
|
98
|
+
function reduceCursor(_state, record) {
|
|
99
|
+
if (record.type !== CURSOR_SET)
|
|
100
|
+
throw new Error(`area maintenance: unknown record type ${record.type}`);
|
|
101
|
+
return { cursor: cloneCursor(record.payload.cursor) };
|
|
102
|
+
}
|
|
103
|
+
function validateCursorRecord(record) {
|
|
104
|
+
if (record.type !== CURSOR_SET)
|
|
105
|
+
throw new Error(`area maintenance: unknown record type ${record.type}`);
|
|
106
|
+
const cursor = record.payload.cursor;
|
|
107
|
+
const nextIndex = cursor?.nextIndex;
|
|
108
|
+
if (!cursor ||
|
|
109
|
+
cursor.format !== AREA_MAINTENANCE_CURSOR_FORMAT ||
|
|
110
|
+
typeof cursor.epoch !== "string" ||
|
|
111
|
+
!Array.isArray(cursor.pendingAreaIds) ||
|
|
112
|
+
!cursor.pendingAreaIds.every((areaId) => typeof areaId === "string" && areaId.length > 0) ||
|
|
113
|
+
typeof nextIndex !== "number" ||
|
|
114
|
+
!Number.isSafeInteger(nextIndex) ||
|
|
115
|
+
nextIndex < 0 ||
|
|
116
|
+
nextIndex > cursor.pendingAreaIds.length) {
|
|
117
|
+
throw new Error("area maintenance: invalid cursor record");
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function cloneCursor(cursor) {
|
|
121
|
+
return cursor && {
|
|
122
|
+
format: cursor.format,
|
|
123
|
+
epoch: cursor.epoch,
|
|
124
|
+
pendingAreaIds: [...cursor.pendingAreaIds],
|
|
125
|
+
nextIndex: cursor.nextIndex,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function sameAreas(left, right) {
|
|
129
|
+
return left.length === right.length && left.every((areaId, index) => areaId === right[index]);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=per-area-maintenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-area-maintenance.js","sourceRoot":"","sources":["../../src/sync/per-area-maintenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-area-maintenance.test.d.ts","sourceRoot":"","sources":["../../src/sync/per-area-maintenance.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { AreaLedger } from "./area-ledger.js";
|
|
6
|
+
import { runBoundedAreaMaintenance, AreaMaintenanceCursorStore } from "./per-area-maintenance.js";
|
|
7
|
+
import { setStateStoreAfterGenerationStageHookForTest } from "./state-store.js";
|
|
8
|
+
const roots = [];
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
setStateStoreAfterGenerationStageHookForTest(undefined);
|
|
11
|
+
for (const root of roots.splice(0))
|
|
12
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
13
|
+
});
|
|
14
|
+
function makeRoot() {
|
|
15
|
+
const root = fs.mkdtempSync(path.join(os.tmpdir(), "hq-area-maintenance-test-"));
|
|
16
|
+
roots.push(root);
|
|
17
|
+
return root;
|
|
18
|
+
}
|
|
19
|
+
function entry(size) {
|
|
20
|
+
return { hash: `${size}`.repeat(64), size, syncedAt: "2026-08-27T00:00:00.000Z", direction: "up" };
|
|
21
|
+
}
|
|
22
|
+
function openLedger(root) {
|
|
23
|
+
return AreaLedger.open({
|
|
24
|
+
rootDir: root,
|
|
25
|
+
journalSlug: "personal-vault",
|
|
26
|
+
layoutEpoch: 1,
|
|
27
|
+
areaIds: ["root:alpha", "root:beta"],
|
|
28
|
+
resolveArea: (key) => key.startsWith("alpha/") ? "root:alpha" : "root:beta",
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
describe("per-area maintenance", () => {
|
|
32
|
+
it("rotates one area while a realtime append commits in another area", () => {
|
|
33
|
+
const root = makeRoot();
|
|
34
|
+
const ledger = openLedger(root);
|
|
35
|
+
ledger.append({ upserts: { "alpha/before.md": entry(1) } });
|
|
36
|
+
let appended = false;
|
|
37
|
+
setStateStoreAfterGenerationStageHookForTest(() => {
|
|
38
|
+
if (appended)
|
|
39
|
+
return;
|
|
40
|
+
appended = true;
|
|
41
|
+
ledger.append({ upserts: { "beta/realtime.md": entry(2) } });
|
|
42
|
+
});
|
|
43
|
+
ledger.maintainArea("root:alpha", { force: true });
|
|
44
|
+
expect(appended).toBe(true);
|
|
45
|
+
expect(openLedger(root).read().files).toMatchObject({
|
|
46
|
+
"alpha/before.md": { size: 1 },
|
|
47
|
+
"beta/realtime.md": { size: 2 },
|
|
48
|
+
});
|
|
49
|
+
const directories = ledger.stateDirectoriesForTest();
|
|
50
|
+
expect(directories.get("root:alpha")).not.toBe(directories.get("root:beta"));
|
|
51
|
+
});
|
|
52
|
+
it("isolates a corrupt area and continues to the next healthy area", () => {
|
|
53
|
+
const root = makeRoot();
|
|
54
|
+
const ledger = openLedger(root);
|
|
55
|
+
ledger.append({ upserts: { "alpha/bad.md": entry(1), "beta/good.md": entry(2) } });
|
|
56
|
+
const alphaDir = ledger.stateDirectoriesForTest().get("root:alpha");
|
|
57
|
+
const stateFiles = fs.readdirSync(alphaDir).filter((name) => /^(?:snapshot|wal)-\d+\.bin$/.test(name));
|
|
58
|
+
expect(stateFiles.length).toBeGreaterThan(0);
|
|
59
|
+
for (const stateFile of stateFiles)
|
|
60
|
+
fs.writeFileSync(path.join(alphaDir, stateFile), "corrupt");
|
|
61
|
+
const target = {
|
|
62
|
+
maintenanceAreaIds: () => ["root:alpha", "root:beta"],
|
|
63
|
+
maintainArea: (areaId) => openLedger(root).maintainArea(areaId, { force: true }),
|
|
64
|
+
};
|
|
65
|
+
const cursor = AreaMaintenanceCursorStore.open({ rootDir: root, journalSlug: "personal-vault", layoutEpoch: 1 });
|
|
66
|
+
const first = runBoundedAreaMaintenance(target, cursor, "daily-1");
|
|
67
|
+
const second = runBoundedAreaMaintenance(target, cursor, "daily-1");
|
|
68
|
+
expect(first.outcome).toMatchObject({ areaId: "root:alpha", status: "isolated" });
|
|
69
|
+
expect(second.outcome).toMatchObject({ areaId: "root:beta", status: "maintained" });
|
|
70
|
+
expect(second.complete).toBe(true);
|
|
71
|
+
});
|
|
72
|
+
it("durably resumes the next bounded unit after a worker restart", () => {
|
|
73
|
+
const root = makeRoot();
|
|
74
|
+
const calls = [];
|
|
75
|
+
const target = {
|
|
76
|
+
maintenanceAreaIds: () => ["root:beta", "root:alpha"],
|
|
77
|
+
maintainArea: (areaId) => calls.push(areaId),
|
|
78
|
+
};
|
|
79
|
+
const firstStore = AreaMaintenanceCursorStore.open({ rootDir: root, journalSlug: "personal-vault", layoutEpoch: 1 });
|
|
80
|
+
expect(runBoundedAreaMaintenance(target, firstStore, "daily-2").outcome).toMatchObject({ areaId: "root:alpha" });
|
|
81
|
+
const restartedStore = AreaMaintenanceCursorStore.open({ rootDir: root, journalSlug: "personal-vault", layoutEpoch: 1 });
|
|
82
|
+
expect(runBoundedAreaMaintenance(target, restartedStore, "daily-2").outcome).toMatchObject({ areaId: "root:beta" });
|
|
83
|
+
expect(calls).toEqual(["root:alpha", "root:beta"]);
|
|
84
|
+
});
|
|
85
|
+
it("finishes an incomplete sweep when the scheduler advances to a new day", () => {
|
|
86
|
+
const root = makeRoot();
|
|
87
|
+
const calls = [];
|
|
88
|
+
const target = {
|
|
89
|
+
maintenanceAreaIds: () => ["root:alpha", "root:beta"],
|
|
90
|
+
maintainArea: (areaId) => calls.push(areaId),
|
|
91
|
+
};
|
|
92
|
+
const cursor = AreaMaintenanceCursorStore.open({ rootDir: root, journalSlug: "personal-vault", layoutEpoch: 1 });
|
|
93
|
+
expect(runBoundedAreaMaintenance(target, cursor, "2026-08-27").outcome)
|
|
94
|
+
.toMatchObject({ areaId: "root:alpha" });
|
|
95
|
+
expect(runBoundedAreaMaintenance(target, cursor, "2026-08-28").outcome)
|
|
96
|
+
.toMatchObject({ areaId: "root:beta" });
|
|
97
|
+
expect(calls).toEqual(["root:alpha", "root:beta"]);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=per-area-maintenance.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-area-maintenance.test.js","sourceRoot":"","sources":["../../src/sync/per-area-maintenance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Low-cardinality telemetry contract for coordinator-owned realtime work.
|
|
3
|
+
*
|
|
4
|
+
* The values are per-item observations and every timing carries an explicit
|
|
5
|
+
* denominator. Paths, causality IDs, area IDs, tenant IDs, and worker PIDs are
|
|
6
|
+
* intentionally excluded: they belong in bounded diagnostic traces, never in
|
|
7
|
+
* metric labels.
|
|
8
|
+
*/
|
|
9
|
+
export declare const REALTIME_TELEMETRY_EVENT = "sync.realtime.timing";
|
|
10
|
+
export declare const REALTIME_TELEMETRY_SCHEMA_VERSION = 1;
|
|
11
|
+
export declare const REALTIME_TIMING_STAGES: readonly ["queue", "conflict", "worker", "operationGate", "appendLock", "network", "commit"];
|
|
12
|
+
export type RealtimeTimingStage = (typeof REALTIME_TIMING_STAGES)[number];
|
|
13
|
+
export type RealtimeTelemetrySource = "watcher" | "receiver" | "wake";
|
|
14
|
+
export type RealtimeTelemetryDirection = "push" | "pull";
|
|
15
|
+
export type RealtimeTelemetryOutcome = "durable" | "retryable" | "refused";
|
|
16
|
+
export type RealtimeTelemetryRecord = {
|
|
17
|
+
event: typeof REALTIME_TELEMETRY_EVENT;
|
|
18
|
+
schemaVersion: typeof REALTIME_TELEMETRY_SCHEMA_VERSION;
|
|
19
|
+
source: RealtimeTelemetrySource;
|
|
20
|
+
direction: RealtimeTelemetryDirection;
|
|
21
|
+
outcome: RealtimeTelemetryOutcome;
|
|
22
|
+
items: number;
|
|
23
|
+
timingMs: Record<RealtimeTimingStage, number>;
|
|
24
|
+
denominator: Record<RealtimeTimingStage, number>;
|
|
25
|
+
};
|
|
26
|
+
export type RealtimeTelemetrySink = (record: RealtimeTelemetryRecord) => void;
|
|
27
|
+
export type RealtimeTelemetryClock = () => number;
|
|
28
|
+
/** Reject dynamic dimensions before they can become a metric-key convention. */
|
|
29
|
+
export declare function assertRealtimeTelemetryLowCardinality(record: RealtimeTelemetryRecord): void;
|
|
30
|
+
/**
|
|
31
|
+
* A bridge executor currently exposes one composite sync pass. It marks all
|
|
32
|
+
* seven contract stages around that pass so dashboards remain denominator-safe
|
|
33
|
+
* while child workers gain finer internal probes. The stages are separately
|
|
34
|
+
* named now, so that refinement does not change the published schema.
|
|
35
|
+
*/
|
|
36
|
+
export declare class RealtimeTelemetrySpan {
|
|
37
|
+
private readonly source;
|
|
38
|
+
private readonly direction;
|
|
39
|
+
private readonly items;
|
|
40
|
+
private readonly sink;
|
|
41
|
+
private readonly now;
|
|
42
|
+
private readonly startedAt;
|
|
43
|
+
private readonly marks;
|
|
44
|
+
constructor(source: RealtimeTelemetrySource, direction: RealtimeTelemetryDirection, items: number, sink: RealtimeTelemetrySink, now?: RealtimeTelemetryClock);
|
|
45
|
+
mark(stage: RealtimeTimingStage): void;
|
|
46
|
+
finish(outcome: RealtimeTelemetryOutcome): RealtimeTelemetryRecord;
|
|
47
|
+
}
|
|
48
|
+
export declare function writeRealtimeTelemetryToStderr(record: RealtimeTelemetryRecord): void;
|
|
49
|
+
//# sourceMappingURL=realtime-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-telemetry.d.ts","sourceRoot":"","sources":["../../src/sync/realtime-telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAEnD,eAAO,MAAM,sBAAsB,8FAQzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1E,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AACtE,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE3E,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,OAAO,wBAAwB,CAAC;IACvC,aAAa,EAAE,OAAO,iCAAiC,CAAC;IACxD,MAAM,EAAE,uBAAuB,CAAC;IAChC,SAAS,EAAE,0BAA0B,CAAC;IACtC,OAAO,EAAE,wBAAwB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,uBAAuB,KAAK,IAAI,CAAC;AAC9E,MAAM,MAAM,sBAAsB,GAAG,MAAM,MAAM,CAAC;AAclD,gFAAgF;AAChF,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAa3F;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IARtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;gBAG7C,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,0BAA0B,EACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,qBAAqB,EAC3B,GAAG,GAAE,sBAAiC;IAKzD,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAItC,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,uBAAuB;CAwBnE;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAEpF"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Low-cardinality telemetry contract for coordinator-owned realtime work.
|
|
3
|
+
*
|
|
4
|
+
* The values are per-item observations and every timing carries an explicit
|
|
5
|
+
* denominator. Paths, causality IDs, area IDs, tenant IDs, and worker PIDs are
|
|
6
|
+
* intentionally excluded: they belong in bounded diagnostic traces, never in
|
|
7
|
+
* metric labels.
|
|
8
|
+
*/
|
|
9
|
+
export const REALTIME_TELEMETRY_EVENT = "sync.realtime.timing";
|
|
10
|
+
export const REALTIME_TELEMETRY_SCHEMA_VERSION = 1;
|
|
11
|
+
export const REALTIME_TIMING_STAGES = [
|
|
12
|
+
"queue",
|
|
13
|
+
"conflict",
|
|
14
|
+
"worker",
|
|
15
|
+
"operationGate",
|
|
16
|
+
"appendLock",
|
|
17
|
+
"network",
|
|
18
|
+
"commit",
|
|
19
|
+
];
|
|
20
|
+
const sourceValues = new Set(["watcher", "receiver", "wake"]);
|
|
21
|
+
const directionValues = new Set(["push", "pull"]);
|
|
22
|
+
const outcomeValues = new Set(["durable", "retryable", "refused"]);
|
|
23
|
+
function emptyTiming() {
|
|
24
|
+
return Object.fromEntries(REALTIME_TIMING_STAGES.map((stage) => [stage, 0]));
|
|
25
|
+
}
|
|
26
|
+
function allDenominators(items) {
|
|
27
|
+
return Object.fromEntries(REALTIME_TIMING_STAGES.map((stage) => [stage, items]));
|
|
28
|
+
}
|
|
29
|
+
/** Reject dynamic dimensions before they can become a metric-key convention. */
|
|
30
|
+
export function assertRealtimeTelemetryLowCardinality(record) {
|
|
31
|
+
const allowed = new Set(["event", "schemaVersion", "source", "direction", "outcome", "items", "timingMs", "denominator"]);
|
|
32
|
+
if (Object.keys(record).some((key) => !allowed.has(key))) {
|
|
33
|
+
throw new Error("realtime telemetry: record contains a high-cardinality label");
|
|
34
|
+
}
|
|
35
|
+
if (!sourceValues.has(record.source) || !directionValues.has(record.direction) || !outcomeValues.has(record.outcome)) {
|
|
36
|
+
throw new Error("realtime telemetry: record contains an unsupported label value");
|
|
37
|
+
}
|
|
38
|
+
if (!Number.isSafeInteger(record.items) || record.items < 0)
|
|
39
|
+
throw new Error("realtime telemetry: items must be a non-negative integer");
|
|
40
|
+
for (const stage of REALTIME_TIMING_STAGES) {
|
|
41
|
+
if (!Number.isFinite(record.timingMs[stage]) || record.timingMs[stage] < 0)
|
|
42
|
+
throw new Error(`realtime telemetry: ${stage} timing is invalid`);
|
|
43
|
+
if (record.denominator[stage] !== record.items)
|
|
44
|
+
throw new Error(`realtime telemetry: ${stage} denominator must equal items`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A bridge executor currently exposes one composite sync pass. It marks all
|
|
49
|
+
* seven contract stages around that pass so dashboards remain denominator-safe
|
|
50
|
+
* while child workers gain finer internal probes. The stages are separately
|
|
51
|
+
* named now, so that refinement does not change the published schema.
|
|
52
|
+
*/
|
|
53
|
+
export class RealtimeTelemetrySpan {
|
|
54
|
+
source;
|
|
55
|
+
direction;
|
|
56
|
+
items;
|
|
57
|
+
sink;
|
|
58
|
+
now;
|
|
59
|
+
startedAt;
|
|
60
|
+
marks = new Map();
|
|
61
|
+
constructor(source, direction, items, sink, now = Date.now) {
|
|
62
|
+
this.source = source;
|
|
63
|
+
this.direction = direction;
|
|
64
|
+
this.items = items;
|
|
65
|
+
this.sink = sink;
|
|
66
|
+
this.now = now;
|
|
67
|
+
this.startedAt = now();
|
|
68
|
+
}
|
|
69
|
+
mark(stage) {
|
|
70
|
+
this.marks.set(stage, this.now());
|
|
71
|
+
}
|
|
72
|
+
finish(outcome) {
|
|
73
|
+
const end = this.now();
|
|
74
|
+
const timingMs = emptyTiming();
|
|
75
|
+
const workerStart = this.marks.get("worker") ?? end;
|
|
76
|
+
timingMs.queue = Math.max(0, workerStart - this.startedAt);
|
|
77
|
+
for (const stage of REALTIME_TIMING_STAGES) {
|
|
78
|
+
if (stage === "queue")
|
|
79
|
+
continue;
|
|
80
|
+
const stageStart = this.marks.get(stage) ?? workerStart;
|
|
81
|
+
timingMs[stage] = Math.max(0, end - stageStart);
|
|
82
|
+
}
|
|
83
|
+
const record = {
|
|
84
|
+
event: REALTIME_TELEMETRY_EVENT,
|
|
85
|
+
schemaVersion: REALTIME_TELEMETRY_SCHEMA_VERSION,
|
|
86
|
+
source: this.source,
|
|
87
|
+
direction: this.direction,
|
|
88
|
+
outcome,
|
|
89
|
+
items: this.items,
|
|
90
|
+
timingMs,
|
|
91
|
+
denominator: allDenominators(this.items),
|
|
92
|
+
};
|
|
93
|
+
assertRealtimeTelemetryLowCardinality(record);
|
|
94
|
+
this.sink(record);
|
|
95
|
+
return record;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
export function writeRealtimeTelemetryToStderr(record) {
|
|
99
|
+
process.stderr.write(`${JSON.stringify(record)}\n`);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=realtime-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-telemetry.js","sourceRoot":"","sources":["../../src/sync/realtime-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-telemetry.test.d.ts","sourceRoot":"","sources":["../../src/sync/realtime-telemetry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { REALTIME_TELEMETRY_EVENT, RealtimeTelemetrySpan, assertRealtimeTelemetryLowCardinality, } from "./realtime-telemetry.js";
|
|
3
|
+
describe("realtime telemetry schema", () => {
|
|
4
|
+
it("emits every required timing with a per-item denominator and stable labels", () => {
|
|
5
|
+
let now = 100;
|
|
6
|
+
const records = [];
|
|
7
|
+
const span = new RealtimeTelemetrySpan("watcher", "push", 2, (record) => records.push(record), () => now);
|
|
8
|
+
now = 110;
|
|
9
|
+
span.mark("worker");
|
|
10
|
+
for (const stage of ["conflict", "operationGate", "appendLock", "network", "commit"])
|
|
11
|
+
span.mark(stage);
|
|
12
|
+
now = 135;
|
|
13
|
+
const record = span.finish("durable");
|
|
14
|
+
expect(records).toEqual([record]);
|
|
15
|
+
expect(record).toEqual({
|
|
16
|
+
event: REALTIME_TELEMETRY_EVENT,
|
|
17
|
+
schemaVersion: 1,
|
|
18
|
+
source: "watcher",
|
|
19
|
+
direction: "push",
|
|
20
|
+
outcome: "durable",
|
|
21
|
+
items: 2,
|
|
22
|
+
timingMs: {
|
|
23
|
+
queue: 10,
|
|
24
|
+
conflict: 25,
|
|
25
|
+
worker: 25,
|
|
26
|
+
operationGate: 25,
|
|
27
|
+
appendLock: 25,
|
|
28
|
+
network: 25,
|
|
29
|
+
commit: 25,
|
|
30
|
+
},
|
|
31
|
+
denominator: {
|
|
32
|
+
queue: 2,
|
|
33
|
+
conflict: 2,
|
|
34
|
+
worker: 2,
|
|
35
|
+
operationGate: 2,
|
|
36
|
+
appendLock: 2,
|
|
37
|
+
network: 2,
|
|
38
|
+
commit: 2,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
it("rejects a path-shaped field before it can create a high-cardinality metric key", () => {
|
|
43
|
+
const record = {
|
|
44
|
+
event: REALTIME_TELEMETRY_EVENT,
|
|
45
|
+
schemaVersion: 1,
|
|
46
|
+
source: "watcher",
|
|
47
|
+
direction: "push",
|
|
48
|
+
outcome: "durable",
|
|
49
|
+
items: 1,
|
|
50
|
+
timingMs: { queue: 0, conflict: 0, worker: 0, operationGate: 0, appendLock: 0, network: 0, commit: 0 },
|
|
51
|
+
denominator: { queue: 1, conflict: 1, worker: 1, operationGate: 1, appendLock: 1, network: 1, commit: 1 },
|
|
52
|
+
path: "companies/indigo/private.md",
|
|
53
|
+
};
|
|
54
|
+
expect(() => assertRealtimeTelemetryLowCardinality(record)).toThrow("high-cardinality");
|
|
55
|
+
});
|
|
56
|
+
it("preserves pathless wake failures as zero-item retryable observations", () => {
|
|
57
|
+
const records = [];
|
|
58
|
+
const record = new RealtimeTelemetrySpan("wake", "pull", 0, (value) => records.push(value)).finish("retryable");
|
|
59
|
+
expect(records).toEqual([record]);
|
|
60
|
+
expect(record).toMatchObject({ source: "wake", outcome: "retryable", items: 0 });
|
|
61
|
+
expect(Object.values(record.denominator)).toEqual([0, 0, 0, 0, 0, 0, 0]);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=realtime-telemetry.test.js.map
|