@amalgm/shell 0.1.164-preview.36814066164 → 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 +21 -2
- 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/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/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 +126 -70
- package/npm-shrinkwrap.json +2 -2
- package/package.json +4 -4
package/PURPOSE.md
CHANGED
|
@@ -1655,8 +1655,27 @@ after adoption.
|
|
|
1655
1655
|
`(uuid, generation)` storage; `ground_roots` names each root's one visible
|
|
1656
1656
|
generation, and writes touch only that generation. A flat file converts in
|
|
1657
1657
|
one transaction that proves the views reproduce it exactly, or it stays as
|
|
1658
|
-
it was. The
|
|
1659
|
-
|
|
1658
|
+
it was. The released flat form stated each object as stat numbers: its
|
|
1659
|
+
device and inode are the physical key exactly as stored, and its
|
|
1660
|
+
millisecond times state neither a source signature nor a content
|
|
1661
|
+
boundary, so a converted row holds neither and its first examination
|
|
1662
|
+
reads every leaf again. The qualified profile gathers no planner
|
|
1663
|
+
statistics, but statistics already present are kept, never treated as
|
|
1664
|
+
corruption.
|
|
1665
|
+
|
|
1666
|
+
76. **Replication state belongs to the authority that ordered it.** This
|
|
1667
|
+
machine's entity authority is named by a contract-scoped id, so a registry
|
|
1668
|
+
contract change derives a new one and the superseded authority never again
|
|
1669
|
+
orders anything this machine sends or receives. Before convergence reads
|
|
1670
|
+
any of it, binding the ground to its current authority retires every
|
|
1671
|
+
record, cursor, baseline, Apply fact and intent, and Register declaration
|
|
1672
|
+
of any other authority in one transaction. None of them can mean anything
|
|
1673
|
+
to the current authority: a pending row would stall Send behind a contract
|
|
1674
|
+
that no longer decodes, a cursor or resolution would skip the current
|
|
1675
|
+
authority's first sequences, and an accepted result would settle a new
|
|
1676
|
+
observation as if the current authority already held it. Files ground is
|
|
1677
|
+
untouched; convergence settles it with the current authority exactly as it
|
|
1678
|
+
settles ground that holds no replication state.
|
|
1660
1679
|
|
|
1661
1680
|
## Relationship to amalgm-engine
|
|
1662
1681
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replication state belongs to the authority that ordered it.
|
|
3
|
+
*
|
|
4
|
+
* This machine's entity authority is named by a contract-scoped id: a
|
|
5
|
+
* registry contract change derives a new one, and the superseded authority
|
|
6
|
+
* never again orders anything this machine sends or receives. Its records,
|
|
7
|
+
* cursors, baselines, Apply facts and intents, and Register declarations
|
|
8
|
+
* describe a history the current authority does not hold, so no reader may
|
|
9
|
+
* interpret them: a pending record would block Send behind a superseded
|
|
10
|
+
* contract, a cursor or resolution would skip the current authority's first
|
|
11
|
+
* sequences, and an accepted result would settle a new observation as if the
|
|
12
|
+
* current authority already held it.
|
|
13
|
+
*
|
|
14
|
+
* Binding the ground to its authority therefore retires every row of any
|
|
15
|
+
* other authority, in one transaction, before convergence reads any of them.
|
|
16
|
+
* Files ground is untouched: it is current truth, and convergence settles it
|
|
17
|
+
* with the current authority exactly as it settles ground that holds no
|
|
18
|
+
* replication state. An intent's private control directory stays where it is
|
|
19
|
+
* as machine-control evidence; the bytes it may hold are a superseded
|
|
20
|
+
* authority's history, never unsent local work.
|
|
21
|
+
*
|
|
22
|
+
* Run only by the ground file's saver thread (ground-save-ops.ts).
|
|
23
|
+
*/
|
|
24
|
+
import type Database from "better-sqlite3";
|
|
25
|
+
/** Every table that holds replication state, by the column naming its authority. */
|
|
26
|
+
declare const AUTHORITY_SCOPED: readonly [readonly ["record_outbox", "authority_id"], readonly ["record_inbox", "authority_id"], readonly ["entity_receive_cursors", "authority_id"], readonly ["authority_delivery_cursors", "authority_id"], readonly ["authority_snapshot_baselines", "authority_id"], readonly ["entity_apply_state", "authority_id"], readonly ["entity_apply_intents", "authority_id"], readonly ["snapshot_publications", "resource_id"]];
|
|
27
|
+
export type RetiredReplication = Readonly<Record<(typeof AUTHORITY_SCOPED)[number][0], number>>;
|
|
28
|
+
/** `ground.bindAuthority`: how many rows of each table it retired. */
|
|
29
|
+
export declare function bindGroundAuthority(database: Database.Database, input: {
|
|
30
|
+
readonly authorityId: string;
|
|
31
|
+
}): RetiredReplication;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Every table that holds replication state, by the column naming its authority. */
|
|
2
|
+
const AUTHORITY_SCOPED = [
|
|
3
|
+
["record_outbox", "authority_id"],
|
|
4
|
+
["record_inbox", "authority_id"],
|
|
5
|
+
["entity_receive_cursors", "authority_id"],
|
|
6
|
+
["authority_delivery_cursors", "authority_id"],
|
|
7
|
+
["authority_snapshot_baselines", "authority_id"],
|
|
8
|
+
["entity_apply_state", "authority_id"],
|
|
9
|
+
["entity_apply_intents", "authority_id"],
|
|
10
|
+
["snapshot_publications", "resource_id"],
|
|
11
|
+
];
|
|
12
|
+
/** `ground.bindAuthority`: how many rows of each table it retired. */
|
|
13
|
+
export function bindGroundAuthority(database, input) {
|
|
14
|
+
const { authorityId } = input;
|
|
15
|
+
if (!authorityId)
|
|
16
|
+
throw new Error("the ground's entity authority is required");
|
|
17
|
+
// A declaration's pages belong to its journal row.
|
|
18
|
+
database.prepare(`DELETE FROM snapshot_publication_pages WHERE mutation_id IN
|
|
19
|
+
(SELECT mutation_id FROM snapshot_publications WHERE resource_id <> ?)`).run(authorityId);
|
|
20
|
+
return Object.fromEntries(AUTHORITY_SCOPED.map(([table, column]) => [table,
|
|
21
|
+
database.prepare(`DELETE FROM ${table} WHERE ${column} <> ?`).run(authorityId).changes]));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=authority-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-binding.js","sourceRoot":"","sources":["../src/authority-binding.ts"],"names":[],"mappings":"AAyBA,oFAAoF;AACpF,MAAM,gBAAgB,GAAG;IACvB,CAAC,eAAe,EAAE,cAAc,CAAC;IACjC,CAAC,cAAc,EAAE,cAAc,CAAC;IAChC,CAAC,wBAAwB,EAAE,cAAc,CAAC;IAC1C,CAAC,4BAA4B,EAAE,cAAc,CAAC;IAC9C,CAAC,8BAA8B,EAAE,cAAc,CAAC;IAChD,CAAC,oBAAoB,EAAE,cAAc,CAAC;IACtC,CAAC,sBAAsB,EAAE,cAAc,CAAC;IACxC,CAAC,uBAAuB,EAAE,aAAa,CAAC;CAChC,CAAC;AAIX,sEAAsE;AACtE,MAAM,UAAU,mBAAmB,CAAC,QAA2B,EAAE,KAEhE;IACC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/E,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC;2EACwD,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5F,OAAO,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK;QACxE,QAAQ,CAAC,OAAO,CAAC,eAAe,KAAK,UAAU,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAuB,CAAC;AACpH,CAAC"}
|
package/dist/ground-database.js
CHANGED
|
@@ -204,6 +204,13 @@ export function migrateGroundDatabase(file) {
|
|
|
204
204
|
if (!columnsOf(database, "record_inbox").has("resolved_at")) {
|
|
205
205
|
database.exec("ALTER TABLE record_inbox ADD COLUMN resolved_at INTEGER");
|
|
206
206
|
}
|
|
207
|
+
// An intent journaled before Apply kept a recovery locator or a
|
|
208
|
+
// retirement holds neither.
|
|
209
|
+
const intentColumns = columnsOf(database, "entity_apply_intents");
|
|
210
|
+
for (const column of ["recovery_location", "retirement_json"]) {
|
|
211
|
+
if (!intentColumns.has(column))
|
|
212
|
+
database.exec(`ALTER TABLE entity_apply_intents ADD COLUMN ${column} TEXT`);
|
|
213
|
+
}
|
|
207
214
|
// A cursor that predates its floor may have jumped at any adopted
|
|
208
215
|
// snapshot, so the largest adopted baseline is its only honest floor.
|
|
209
216
|
if (!columnsOf(database, "authority_delivery_cursors").has("history_floor")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ground-database.js","sourceRoot":"","sources":["../src/ground-database.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ground-database.js","sourceRoot":"","sources":["../src/ground-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -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. */
|