@amalgm/shell 0.1.164-preview.36809057014 → 0.1.164-preview.36824980905
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/PURPOSE.md +28 -3
- package/dist/authority-binding.d.ts +32 -0
- package/dist/authority-binding.js +23 -0
- package/dist/authority-binding.js.map +1 -0
- package/dist/content-cache-host.d.ts +1 -0
- package/dist/content-cache-host.js +21 -6
- package/dist/content-cache-host.js.map +1 -1
- package/dist/entity-apply-host.js +10 -7
- package/dist/entity-apply-host.js.map +1 -1
- package/dist/ground-database.js +7 -0
- package/dist/ground-database.js.map +1 -1
- package/dist/ground-inventory-schema.js +30 -14
- package/dist/ground-inventory-schema.js.map +1 -1
- package/dist/ground-save-ops.d.ts +2 -0
- package/dist/ground-save-ops.js +2 -0
- package/dist/ground-save-ops.js.map +1 -1
- package/dist/physical-path-witness.d.ts +9 -0
- package/dist/physical-path-witness.js +8 -0
- package/dist/physical-path-witness.js.map +1 -1
- package/dist/source-witness.d.ts +2 -2
- package/dist/source-witness.js +2 -1
- package/dist/source-witness.js.map +1 -1
- package/dist/user-ground-host.d.ts +4 -0
- package/dist/user-ground-host.js +14 -0
- package/dist/user-ground-host.js.map +1 -1
- package/examinations/fixtures/private-wire-authority.js +154 -72
- package/npm-shrinkwrap.json +59 -38
- package/package.json +5 -5
|
@@ -112,11 +112,33 @@ export function ensureInventorySchema(database) {
|
|
|
112
112
|
const validationMs = convertFlatInventories(database);
|
|
113
113
|
return { from: "flat", validationMs, keysBuilt: ensureInventoryKeys(database) };
|
|
114
114
|
}
|
|
115
|
+
/** The released flat form stated each observed object as stat numbers.
|
|
116
|
+
* Its device and inode are the object's physical key exactly as stored; a
|
|
117
|
+
* stored number that no fresh stat repeats is a never-seen inode to the
|
|
118
|
+
* identity laws, which the address claims. Its millisecond times state
|
|
119
|
+
* neither the exact source signature nor the nanosecond content boundary,
|
|
120
|
+
* so a converted row holds neither: an absent signature is never unchanged,
|
|
121
|
+
* and the first examination reads every leaf again (source-signature.ts). */
|
|
122
|
+
const RELEASED_STAT_COLUMNS = ["device_number", "inode", "byte_size", "modified_time_ms", "changed_time_ms",
|
|
123
|
+
"content_verified_at_ms"];
|
|
124
|
+
/** Each stored column's value, read from a flat row `f`: the same-named flat
|
|
125
|
+
* column, the physical key the released stat columns state, or none. */
|
|
126
|
+
function flatSources(inventory, present) {
|
|
127
|
+
const unknown = present.filter(column => !inventoryColumns(inventory).includes(column)
|
|
128
|
+
&& !RELEASED_STAT_COLUMNS.includes(column));
|
|
129
|
+
if (unknown.length)
|
|
130
|
+
throw new Error(`the flat ${inventory} inventory has unknown columns: ${unknown.join(", ")}`);
|
|
131
|
+
return new Map(inventoryColumns(inventory).map(column => [column, present.includes(column) ? `f.${column}`
|
|
132
|
+
: column === "physical_key" && present.includes("device_number") && present.includes("inode")
|
|
133
|
+
? "CAST(f.device_number AS TEXT) || ':' || CAST(f.inode AS TEXT)"
|
|
134
|
+
// A column the flat table never gained holds no value in any row.
|
|
135
|
+
: "NULL"]));
|
|
136
|
+
}
|
|
115
137
|
/** One transaction: the flat tables step aside, their rows are copied under
|
|
116
138
|
* one generation per root shared by both inventories, the views must then
|
|
117
|
-
* reproduce
|
|
118
|
-
* dropped. A failure rolls everything back. Rows move as
|
|
119
|
-
* write, stamp, history or Record is produced. */
|
|
139
|
+
* reproduce every flat row's stored values exactly, and only then are the
|
|
140
|
+
* flat tables dropped. A failure rolls everything back. Rows move as
|
|
141
|
+
* storage; no ground write, stamp, history or Record is produced. */
|
|
120
142
|
function convertFlatInventories(database) {
|
|
121
143
|
return database.transaction(() => {
|
|
122
144
|
const flat = { entities: "flat_entities", detection_notebook: "flat_notebook" };
|
|
@@ -127,21 +149,15 @@ function convertFlatInventories(database) {
|
|
|
127
149
|
for (const root of database.prepare(`SELECT root_uuid FROM ${flat.entities}
|
|
128
150
|
UNION SELECT root_uuid FROM ${flat.detection_notebook}`).pluck().all())
|
|
129
151
|
place.run(root, randomUUID());
|
|
130
|
-
const
|
|
152
|
+
const sources = {};
|
|
131
153
|
for (const inventory of INVENTORIES) {
|
|
132
|
-
const columns = inventoryColumns(inventory);
|
|
133
154
|
const table = database.prepare(`PRAGMA table_info(${flat[inventory]})`).all();
|
|
134
|
-
|
|
135
|
-
const unknown = present.filter(column => !columns.includes(column));
|
|
136
|
-
if (unknown.length)
|
|
137
|
-
throw new Error(`the flat ${inventory} inventory has unknown columns: ${unknown.join(", ")}`);
|
|
155
|
+
sources[inventory] = flatSources(inventory, table.map(({ name }) => name));
|
|
138
156
|
if (table.filter(({ pk }) => pk > 0).map(({ name }) => name).join() !== "uuid") {
|
|
139
157
|
throw new Error(`the flat ${inventory} inventory is not keyed by its UUID alone`);
|
|
140
158
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
database.exec(`INSERT INTO ${INVENTORY_ROWS[inventory]}(generation, ${columns.join(", ")})
|
|
144
|
-
SELECT r.generation, ${columns.map(column => present.includes(column) ? `f.${column}` : "NULL").join(", ")}
|
|
159
|
+
database.exec(`INSERT INTO ${INVENTORY_ROWS[inventory]}(generation, ${[...sources[inventory].keys()].join(", ")})
|
|
160
|
+
SELECT r.generation, ${[...sources[inventory].values()].join(", ")}
|
|
145
161
|
FROM ${flat[inventory]} f JOIN ground_roots r ON r.root_uuid = f.root_uuid`);
|
|
146
162
|
}
|
|
147
163
|
database.exec(VIEWS);
|
|
@@ -151,7 +167,7 @@ function convertFlatInventories(database) {
|
|
|
151
167
|
// row having an equal visible row, with equal counts, makes the visible
|
|
152
168
|
// rows exactly the flat rows, each UUID once.
|
|
153
169
|
for (const inventory of INVENTORIES) {
|
|
154
|
-
const equal =
|
|
170
|
+
const equal = [...sources[inventory]].map(([column, source]) => `${source} IS v.${column}`).join(" AND ");
|
|
155
171
|
const differs = database.prepare(`SELECT
|
|
156
172
|
(SELECT COUNT(*) FROM ${flat[inventory]}) <> (SELECT COUNT(*) FROM ${inventory})
|
|
157
173
|
OR (SELECT COUNT(*) FROM ${flat[inventory]} f JOIN ${inventory} v ON v.uuid = f.uuid WHERE ${equal})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ground-inventory-schema.js","sourceRoot":"","sources":["../src/ground-inventory-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ground-inventory-schema.js","sourceRoot":"","sources":["../src/ground-inventory-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Each is synchronous and runs inside its own savepoint of the batch. */
|
|
3
3
|
import type Database from "better-sqlite3";
|
|
4
4
|
import { acknowledgeCleanup, adoptSnapshotHistory, beginIntent, bindRecovery, relocateRows, renameSignatures, resolveOwnPublication, retire, setIntentPhase } from "./apply-saves.js";
|
|
5
|
+
import { bindGroundAuthority } from "./authority-binding.js";
|
|
5
6
|
import { retireProofs } from "./content-clock.js";
|
|
6
7
|
import { rememberConstruct } from "./construct-ledger.js";
|
|
7
8
|
import { clearDeclaration, markDeclarationRejected, markDeclarationSubmitted } from "./declaration-journal.js";
|
|
@@ -27,6 +28,7 @@ export declare const GROUND_SAVE_OPS: {
|
|
|
27
28
|
"detect.admit": typeof saveAdmission;
|
|
28
29
|
"detect.dispositions": (database: Database.Database, events: readonly import("@amalgm/live").DetectDispositionEvent[]) => readonly import("./detection/disposition-rows.js").DispositionRow[];
|
|
29
30
|
"detect.prune": typeof pruneDispositions;
|
|
31
|
+
"ground.bindAuthority": typeof bindGroundAuthority;
|
|
30
32
|
"ground.retireProofs": typeof retireProofs;
|
|
31
33
|
"install.clearRoot": typeof clearRoot;
|
|
32
34
|
"install.references": typeof installReferences;
|
package/dist/ground-save-ops.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { acknowledgeCleanup, adoptSnapshotHistory, beginIntent, bindRecovery, relocateRows, renameSignatures, resolveOwnPublication, retire, setIntentPhase, } from "./apply-saves.js";
|
|
2
|
+
import { bindGroundAuthority } from "./authority-binding.js";
|
|
2
3
|
import { retireProofs } from "./content-clock.js";
|
|
3
4
|
import { rememberConstruct } from "./construct-ledger.js";
|
|
4
5
|
import { clearDeclaration, markDeclarationRejected, markDeclarationSubmitted } from "./declaration-journal.js";
|
|
@@ -24,6 +25,7 @@ export const GROUND_SAVE_OPS = {
|
|
|
24
25
|
"detect.admit": saveAdmission,
|
|
25
26
|
"detect.dispositions": saveDispositions,
|
|
26
27
|
"detect.prune": pruneDispositions,
|
|
28
|
+
"ground.bindAuthority": bindGroundAuthority,
|
|
27
29
|
"ground.retireProofs": retireProofs,
|
|
28
30
|
"install.clearRoot": clearRoot,
|
|
29
31
|
"install.references": installReferences,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ground-save-ops.js","sourceRoot":"","sources":["../src/ground-save-ops.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EACN,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnI,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB,EAAE,cAAc;IACjC,iBAAiB,EAAE,cAAc;IACjC,0BAA0B,EAAE,kBAAkB;IAC9C,4BAA4B,EAAE,oBAAoB;IAClD,mBAAmB,EAAE,WAAW;IAChC,oBAAoB,EAAE,YAAY;IAClC,oBAAoB,EAAE,YAAY;IAClC,wBAAwB,EAAE,gBAAgB;IAC1C,6BAA6B,EAAE,qBAAqB;IACpD,cAAc,EAAE,MAAM;IACtB,sBAAsB,EAAE,cAAc;IACtC,qBAAqB,EAAE,iBAAiB;IACxC,cAAc,EAAE,aAAa;IAC7B,qBAAqB,EAAE,gBAAgB;IACvC,cAAc,EAAE,iBAAiB;IACjC,qBAAqB,EAAE,YAAY;IACnC,mBAAmB,EAAE,SAAS;IAC9B,oBAAoB,EAAE,iBAAiB;IACvC,qBAAqB,EAAE,WAAW;IAClC,cAAc,EAAE,WAAW;IAC3B,8BAA8B,EAAE,6BAA6B;IAC7D,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,cAAc;IAChC,cAAc,EAAE,aAAa;IAC7B,kBAAkB,EAAE,gBAAgB;IACpC,kBAAkB,EAAE,eAAe;IACnC,mBAAmB,EAAE,uBAAuB;IAC5C,oBAAoB,EAAE,wBAAwB;CACkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ground-save-ops.js","sourceRoot":"","sources":["../src/ground-save-ops.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EACN,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC/G,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEnI,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB,EAAE,cAAc;IACjC,iBAAiB,EAAE,cAAc;IACjC,0BAA0B,EAAE,kBAAkB;IAC9C,4BAA4B,EAAE,oBAAoB;IAClD,mBAAmB,EAAE,WAAW;IAChC,oBAAoB,EAAE,YAAY;IAClC,oBAAoB,EAAE,YAAY;IAClC,wBAAwB,EAAE,gBAAgB;IAC1C,6BAA6B,EAAE,qBAAqB;IACpD,cAAc,EAAE,MAAM;IACtB,sBAAsB,EAAE,cAAc;IACtC,qBAAqB,EAAE,iBAAiB;IACxC,cAAc,EAAE,aAAa;IAC7B,qBAAqB,EAAE,gBAAgB;IACvC,cAAc,EAAE,iBAAiB;IACjC,sBAAsB,EAAE,mBAAmB;IAC3C,qBAAqB,EAAE,YAAY;IACnC,mBAAmB,EAAE,SAAS;IAC9B,oBAAoB,EAAE,iBAAiB;IACvC,qBAAqB,EAAE,WAAW;IAClC,cAAc,EAAE,WAAW;IAC3B,8BAA8B,EAAE,6BAA6B;IAC7D,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,cAAc;IAChC,cAAc,EAAE,aAAa;IAC7B,kBAAkB,EAAE,gBAAgB;IACpC,kBAAkB,EAAE,eAAe;IACnC,mBAAmB,EAAE,uBAAuB;IAC5C,oBAAoB,EAAE,wBAAwB;CACkC,CAAC"}
|
|
@@ -21,6 +21,13 @@ export interface PathsWitness {
|
|
|
21
21
|
readonly paths: string;
|
|
22
22
|
readonly stats: BigInt64Array;
|
|
23
23
|
}
|
|
24
|
+
/** Which object holds one address: its device, inode and kind. A claim about
|
|
25
|
+
* the object itself, never its contents, mode or times, retains only this. */
|
|
26
|
+
export interface AddressWitness {
|
|
27
|
+
readonly kind: "address";
|
|
28
|
+
readonly path: string;
|
|
29
|
+
readonly object: string;
|
|
30
|
+
}
|
|
24
31
|
/** One directory's identity and names, as a namespace reader saw them. */
|
|
25
32
|
export interface NamespaceWitness {
|
|
26
33
|
readonly kind: "namespace";
|
|
@@ -40,6 +47,8 @@ export declare const pathComponents: (witness: PathsWitness) => [string, Retaine
|
|
|
40
47
|
/** Parents forward before children, then every directory again in reverse,
|
|
41
48
|
* so a component replaced and restored around a child's read still differs. */
|
|
42
49
|
export declare function judgePaths(witness: PathsWitness, read?: (path: string) => SourceStat | null): void;
|
|
50
|
+
export declare const addressWitness: (path: string, stat: SourceStat) => AddressWitness;
|
|
51
|
+
export declare function judgeAddress(witness: AddressWitness): void;
|
|
43
52
|
export declare function observeNamespace(path: string): NamespaceWitness;
|
|
44
53
|
export declare function judgeNamespace(witness: NamespaceWitness): void;
|
|
45
54
|
export declare class PhysicalPathWitnesses {
|
|
@@ -93,6 +93,14 @@ export function judgePaths(witness, read = optionalLstat) {
|
|
|
93
93
|
check(index);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
+
const objectOf = (stat) => `${stat.dev}:${stat.ino}:${stat.mode & KIND}`;
|
|
97
|
+
export const addressWitness = (path, stat) => Object.freeze({ kind: "address", path, object: objectOf(stat) });
|
|
98
|
+
export function judgeAddress(witness) {
|
|
99
|
+
const now = optionalLstat(witness.path);
|
|
100
|
+
if (now === null || objectOf(now) !== witness.object) {
|
|
101
|
+
throw new CaptureSourceChangedError(`address changed: ${witness.path}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
96
104
|
function readNamespace(path) {
|
|
97
105
|
const stat = lstatSync(path, { bigint: true });
|
|
98
106
|
return !stat.isDirectory() ? null : Object.freeze({ kind: "namespace", path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physical-path-witness.js","sourceRoot":"","sources":["../src/physical-path-witness.ts"],"names":[],"mappings":"AAAA;;4EAE4E;AAC5E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAoB,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAmB,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAc,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"physical-path-witness.js","sourceRoot":"","sources":["../src/physical-path-witness.ts"],"names":[],"mappings":"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"}
|
package/dist/source-witness.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ import { type GitIndexWitness } from "./git-index-witness.js";
|
|
|
8
8
|
import { type GitMarkerWitness } from "./git-literal-read.js";
|
|
9
9
|
import { type NativeFileWitness } from "./git-native-file.js";
|
|
10
10
|
import { type GitOperationWitness } from "./git-operation-host.js";
|
|
11
|
-
import { type NamespaceWitness, type PathsWitness } from "./physical-path-witness.js";
|
|
12
|
-
export type SourceWitness = PathsWitness | NamespaceWitness | NativeFileWitness | GitRouteWitness | GitConfigurationWitness | GitIndexWitness | GitOperationWitness | GitMarkerWitness;
|
|
11
|
+
import { type AddressWitness, type NamespaceWitness, type PathsWitness } from "./physical-path-witness.js";
|
|
12
|
+
export type SourceWitness = PathsWitness | NamespaceWitness | AddressWitness | NativeFileWitness | GitRouteWitness | GitConfigurationWitness | GitIndexWitness | GitOperationWitness | GitMarkerWitness;
|
|
13
13
|
export declare function judgeWitness(witness: SourceWitness): void;
|
|
14
14
|
/** In order: a witness sampled later may depend on an earlier one's ground. */
|
|
15
15
|
export declare function judgeWitnesses(witnesses: readonly SourceWitness[]): void;
|
package/dist/source-witness.js
CHANGED
|
@@ -8,11 +8,12 @@ import { judgeGitIndex } from "./git-index-witness.js";
|
|
|
8
8
|
import { judgeGitMarker } from "./git-literal-read.js";
|
|
9
9
|
import { judgeNativeFile } from "./git-native-file.js";
|
|
10
10
|
import { judgeGitOperation } from "./git-operation-host.js";
|
|
11
|
-
import { judgeNamespace, judgePaths } from "./physical-path-witness.js";
|
|
11
|
+
import { judgeAddress, judgeNamespace, judgePaths, } from "./physical-path-witness.js";
|
|
12
12
|
export function judgeWitness(witness) {
|
|
13
13
|
switch (witness.kind) {
|
|
14
14
|
case "paths": return judgePaths(witness);
|
|
15
15
|
case "namespace": return judgeNamespace(witness);
|
|
16
|
+
case "address": return judgeAddress(witness);
|
|
16
17
|
case "native-file": return judgeNativeFile(witness);
|
|
17
18
|
case "git-route": return judgeGitRoute(witness);
|
|
18
19
|
case "git-configuration": return judgeGitConfiguration(witness);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-witness.js","sourceRoot":"","sources":["../src/source-witness.ts"],"names":[],"mappings":"AAAA;;;wEAGwE;AACxE,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAgC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAwB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAyB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAA0B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"source-witness.js","sourceRoot":"","sources":["../src/source-witness.ts"],"names":[],"mappings":"AAAA;;;wEAGwE;AACxE,OAAO,EAAE,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAgC,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAwB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAyB,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAA0B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EACL,YAAY,EAAE,cAAc,EAAE,UAAU,GACzC,MAAM,4BAA4B,CAAC;AAMpC,MAAM,UAAU,YAAY,CAAC,OAAsB;IACjD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,OAAO,CAAC,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;QACzC,KAAK,WAAW,CAAC,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,SAAS,CAAC,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,KAAK,aAAa,CAAC,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;QACpD,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,mBAAmB,CAAC,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,KAAK,WAAW,CAAC,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,KAAK,eAAe,CAAC,CAAC,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxD,KAAK,YAAY,CAAC,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,SAAmC;IAChE,KAAK,MAAM,OAAO,IAAI,SAAS;QAAE,YAAY,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -405,6 +405,10 @@ export declare class UserGroundHost {
|
|
|
405
405
|
/** A failed attempt answers every ticket its cuts covered; its slot's
|
|
406
406
|
* release wakes them. */
|
|
407
407
|
private detectEnded;
|
|
408
|
+
/** Before convergence reads any replication state, the ground holds only
|
|
409
|
+
* its current authority's (authority-binding.ts). The held connection's
|
|
410
|
+
* first open starts the saver that runs the binding. */
|
|
411
|
+
private bindGroundAuthority;
|
|
408
412
|
/** Install the exact snapshot/tail boundary before Receive or Apply can
|
|
409
413
|
* treat older official history as materialization work. The SQLite cursor,
|
|
410
414
|
* retained Inbox resolution, and Apply baseline all derive from the same N. */
|
package/dist/user-ground-host.js
CHANGED
|
@@ -353,6 +353,7 @@ export class UserGroundHost {
|
|
|
353
353
|
const initialization = await initializeGroundDatabase(this.databasePath(this.activeIdentity));
|
|
354
354
|
this.stage({ primitive: "detect", stage: "ground-initialization", status: "completed",
|
|
355
355
|
durationMs: initialization.readinessMs, measurements: { ...initialization } });
|
|
356
|
+
await this.bindGroundAuthority(this.activeIdentity);
|
|
356
357
|
this.reserveGroundRoots(this.activeIdentity);
|
|
357
358
|
const local = this.localPort(this.activeIdentity);
|
|
358
359
|
const result = await convergeUserGround(this.activeIdentity, {
|
|
@@ -1574,6 +1575,19 @@ export class UserGroundHost {
|
|
|
1574
1575
|
waiter.failure = failure;
|
|
1575
1576
|
}
|
|
1576
1577
|
}
|
|
1578
|
+
/** Before convergence reads any replication state, the ground holds only
|
|
1579
|
+
* its current authority's (authority-binding.ts). The held connection's
|
|
1580
|
+
* first open starts the saver that runs the binding. */
|
|
1581
|
+
async bindGroundAuthority(identity) {
|
|
1582
|
+
const file = this.databasePath(identity);
|
|
1583
|
+
groundDatabase(file);
|
|
1584
|
+
const started = performance.now();
|
|
1585
|
+
const { value: retired } = await save(file, "ground.bindAuthority", {
|
|
1586
|
+
authorityId: privateEntityResourceId(identity.userId, sha256Hex),
|
|
1587
|
+
});
|
|
1588
|
+
this.stage({ primitive: "detect", stage: "authority-binding", status: "completed",
|
|
1589
|
+
durationMs: performance.now() - started, measurements: { ...retired } });
|
|
1590
|
+
}
|
|
1577
1591
|
/** Install the exact snapshot/tail boundary before Receive or Apply can
|
|
1578
1592
|
* treat older official history as materialization work. The SQLite cursor,
|
|
1579
1593
|
* retained Inbox resolution, and Apply baseline all derive from the same N. */
|