@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.
@@ -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 both inventories exactly, and only then are the flat tables
118
- * dropped. A failure rolls everything back. Rows move as storage; no ground
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 stored = {};
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
- const present = table.map(({ name }) => name);
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
- stored[inventory] = present;
142
- // A column the flat table never gained holds no value in any row.
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 = stored[inventory].map(column => `f.${column} IS v.${column}`).join(" AND ");
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;
@@ -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":"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"}
1
+ {"version":3,"file":"physical-path-witness.js","sourceRoot":"","sources":["../src/physical-path-witness.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -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,EAA4C,MAAM,4BAA4B,CAAC;AAMlH,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,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"}
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. */
@@ -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. */