@amalgm/live 0.2.53 → 0.2.55
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 +17 -0
- package/dist/contracts/binding.d.ts +3 -2
- package/dist/contracts/binding.d.ts.map +1 -1
- package/dist/contracts/deployments.d.ts +39 -0
- package/dist/contracts/deployments.d.ts.map +1 -0
- package/dist/contracts/deployments.js +75 -0
- package/dist/contracts/deployments.js.map +1 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +1 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/detection/adapter-contract.d.ts +0 -33
- package/dist/detection/adapter-contract.d.ts.map +1 -1
- package/dist/detection/adapter-contract.js +0 -32
- package/dist/detection/adapter-contract.js.map +1 -1
- package/dist/detection/diff.d.ts +5 -87
- package/dist/detection/diff.d.ts.map +1 -1
- package/dist/detection/diff.js +5 -111
- package/dist/detection/diff.js.map +1 -1
- package/dist/detection/enrollment.d.ts +8 -17
- package/dist/detection/enrollment.d.ts.map +1 -1
- package/dist/detection/enrollment.js +8 -73
- package/dist/detection/enrollment.js.map +1 -1
- package/dist/detection/index.d.ts +5 -8
- package/dist/detection/index.d.ts.map +1 -1
- package/dist/detection/index.js +5 -8
- package/dist/detection/index.js.map +1 -1
- package/dist/detection/territory.d.ts +1 -27
- package/dist/detection/territory.d.ts.map +1 -1
- package/dist/detection/territory.js +1 -77
- package/dist/detection/territory.js.map +1 -1
- package/dist/entities/cloud.d.ts +31 -6
- package/dist/entities/cloud.d.ts.map +1 -1
- package/dist/entities/cloud.js +210 -47
- package/dist/entities/cloud.js.map +1 -1
- package/dist/entities/graph-head.d.ts +109 -0
- package/dist/entities/graph-head.d.ts.map +1 -0
- package/dist/entities/graph-head.js +267 -0
- package/dist/entities/graph-head.js.map +1 -0
- package/dist/entities/index.d.ts +3 -1
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +3 -1
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/rules.js +2 -2
- package/dist/entities/rules.js.map +1 -1
- package/dist/entities/types.d.ts +3 -0
- package/dist/entities/types.d.ts.map +1 -1
- package/dist/entities/types.js +3 -0
- package/dist/entities/types.js.map +1 -1
- package/dist/files/commands.d.ts.map +1 -1
- package/dist/files/commands.js +2 -13
- package/dist/files/commands.js.map +1 -1
- package/dist/registration/user-ground.d.ts +5 -1
- package/dist/registration/user-ground.d.ts.map +1 -1
- package/dist/registration/user-ground.js +9 -14
- package/dist/registration/user-ground.js.map +1 -1
- package/dist/transfer/cargo.d.ts +46 -12
- package/dist/transfer/cargo.d.ts.map +1 -1
- package/dist/transfer/cargo.js +52 -18
- package/dist/transfer/cargo.js.map +1 -1
- package/dist-cjs/contracts/deployments.js +81 -0
- package/dist-cjs/contracts/deployments.js.map +1 -0
- package/dist-cjs/contracts/index.js +1 -0
- package/dist-cjs/contracts/index.js.map +1 -1
- package/dist-cjs/detection/adapter-contract.js +1 -34
- package/dist-cjs/detection/adapter-contract.js.map +1 -1
- package/dist-cjs/detection/diff.js +5 -113
- package/dist-cjs/detection/diff.js.map +1 -1
- package/dist-cjs/detection/enrollment.js +9 -75
- package/dist-cjs/detection/enrollment.js.map +1 -1
- package/dist-cjs/detection/index.js +5 -8
- package/dist-cjs/detection/index.js.map +1 -1
- package/dist-cjs/detection/territory.js +1 -79
- package/dist-cjs/detection/territory.js.map +1 -1
- package/dist-cjs/entities/cloud.js +212 -49
- package/dist-cjs/entities/cloud.js.map +1 -1
- package/dist-cjs/entities/graph-head.js +280 -0
- package/dist-cjs/entities/graph-head.js.map +1 -0
- package/dist-cjs/entities/index.js +3 -1
- package/dist-cjs/entities/index.js.map +1 -1
- package/dist-cjs/entities/rules.js +1 -1
- package/dist-cjs/entities/rules.js.map +1 -1
- package/dist-cjs/entities/types.js +4 -1
- package/dist-cjs/entities/types.js.map +1 -1
- package/dist-cjs/files/commands.js +1 -12
- package/dist-cjs/files/commands.js.map +1 -1
- package/dist-cjs/registration/user-ground.js +8 -13
- package/dist-cjs/registration/user-ground.js.map +1 -1
- package/dist-cjs/transfer/cargo.js +55 -20
- package/dist-cjs/transfer/cargo.js.map +1 -1
- package/package.json +1 -1
- package/dist/detection/continuity.d.ts +0 -54
- package/dist/detection/continuity.d.ts.map +0 -1
- package/dist/detection/continuity.js +0 -85
- package/dist/detection/continuity.js.map +0 -1
- package/dist-cjs/detection/continuity.js +0 -88
- package/dist-cjs/detection/continuity.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Detection — the pure cores that turn observed disk evidence into facts.
|
|
4
4
|
* Normative sources:
|
|
5
|
-
* entity-model.md (identity axioms, the two
|
|
5
|
+
* entity-model.md (identity axioms, the two identity witnesses) and
|
|
6
6
|
* entity-implementation.md (the ratified seams).
|
|
7
7
|
*
|
|
8
8
|
* Everything here is rows and entries in, verdicts out. Walking disk,
|
|
@@ -11,15 +11,13 @@
|
|
|
11
11
|
* policy) and this layer owns only the laws:
|
|
12
12
|
*
|
|
13
13
|
* - `adapter-contract` the seven rails, the ratified detect socket,
|
|
14
|
-
* descriptor conviction
|
|
15
|
-
* judgment, the reference adapter
|
|
14
|
+
* and descriptor conviction
|
|
16
15
|
* - `classify` text/binary from detect's own read evidence
|
|
17
16
|
* - `refusal` declined-vs-broken, named where it is raised
|
|
18
|
-
* - `enrollment` tracked user-ground policy
|
|
19
|
-
* - `diff`
|
|
20
|
-
* - `continuity` root rescue and the undecided address
|
|
17
|
+
* - `enrollment` the tracked user-ground policy
|
|
18
|
+
* - `diff` directory channel identity from inode and address
|
|
21
19
|
* - `watch-boundary` generation-safe Watch input and coverage output
|
|
22
|
-
* - `territory` nearest-repository
|
|
20
|
+
* - `territory` nearest-repository ownership, indexed per graph
|
|
23
21
|
* - `record-proposal` the exact Detect-to-Record contract
|
|
24
22
|
* - `batch` net-difference planning and Watch settlement
|
|
25
23
|
* - `content` text/binary/link replay from one captured read
|
|
@@ -44,7 +42,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
44
42
|
__exportStar(require("./adapter-contract.js"), exports);
|
|
45
43
|
__exportStar(require("./batch.js"), exports);
|
|
46
44
|
__exportStar(require("./classify.js"), exports);
|
|
47
|
-
__exportStar(require("./continuity.js"), exports);
|
|
48
45
|
__exportStar(require("./content.js"), exports);
|
|
49
46
|
__exportStar(require("./diff.js"), exports);
|
|
50
47
|
__exportStar(require("./echo.js"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;;;;;;;;;;;;;;AAEH,wDAAsC;AACtC,6CAA2B;AAC3B,gDAA8B;AAC9B,+CAA6B;AAC7B,4CAA0B;AAC1B,4CAA0B;AAC1B,kDAAgC;AAChC,uDAAqC;AACrC,kDAAgC;AAChC,+CAA6B;AAC7B,iDAA+B;AAC/B,sDAAoC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/** Nearest-repository ownership for
|
|
2
|
+
/** Nearest-repository ownership, indexed once for a whole graph. */
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.indexRepositoryTerritory = indexRepositoryTerritory;
|
|
5
|
-
exports.nearestRepository = nearestRepository;
|
|
6
|
-
exports.recorderTargets = recorderTargets;
|
|
7
5
|
/**
|
|
8
6
|
* Index nearest-repository territory once for a complete or boundary-trimmed
|
|
9
7
|
* graph. Hosts use this when one scan needs ownership for every row: repeated
|
|
@@ -54,80 +52,4 @@ function indexRepositoryTerritory(nodes) {
|
|
|
54
52
|
ownedBy: (repositoryId) => Object.freeze([...(owned.get(repositoryId) ?? [])]),
|
|
55
53
|
});
|
|
56
54
|
}
|
|
57
|
-
/** The nearest repo at or above `uuid`; nested repositories win. */
|
|
58
|
-
function nearestRepository(uuid, byUuid) {
|
|
59
|
-
const seen = new Set();
|
|
60
|
-
let cursor = uuid;
|
|
61
|
-
while (cursor !== null) {
|
|
62
|
-
if (seen.has(cursor))
|
|
63
|
-
throw new Error(`registry corrupt: parent cycle at ${cursor}`);
|
|
64
|
-
seen.add(cursor);
|
|
65
|
-
const row = byUuid(cursor);
|
|
66
|
-
if (!row)
|
|
67
|
-
throw new Error(`no entity ${cursor}`);
|
|
68
|
-
if (row.type === 'repo.git')
|
|
69
|
-
return row;
|
|
70
|
-
cursor = row.parentUuid;
|
|
71
|
-
}
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Name every recorder whose state a transition can change.
|
|
76
|
-
*
|
|
77
|
-
* Ordinary changes outside repository territory publish on the entity UUID.
|
|
78
|
-
* A change wholly inside one repository publishes only the repository parcel.
|
|
79
|
-
* Crossing a repository boundary also publishes the entity graph transition,
|
|
80
|
-
* plus the source and/or destination repositories whose identity maps and
|
|
81
|
-
* Checkpoints changed.
|
|
82
|
-
*/
|
|
83
|
-
function recorderTargets(transition, byUuid) {
|
|
84
|
-
const { base, result } = transition;
|
|
85
|
-
if (base !== null && base.uuid !== result.uuid) {
|
|
86
|
-
throw new Error('a recorder transition cannot change entity UUID');
|
|
87
|
-
}
|
|
88
|
-
const before = nearestRepository(base?.parentUUID ?? null, byUuid);
|
|
89
|
-
const after = nearestRepository(result.parentUUID, byUuid);
|
|
90
|
-
const add = (targets, target) => {
|
|
91
|
-
if (!targets.some((candidate) => candidate.resourceId === target.resourceId))
|
|
92
|
-
targets.push(target);
|
|
93
|
-
};
|
|
94
|
-
// Every `.git` boundary starts its own repository rail, even when nested.
|
|
95
|
-
// Its enclosing repository changes only when the boundary's graph entry
|
|
96
|
-
// changes; ordinary Card/Checkpoint advancement remains on the inner rail.
|
|
97
|
-
if (base?.type === 'repo.git' || result.type === 'repo.git') {
|
|
98
|
-
const targets = [];
|
|
99
|
-
add(targets, {
|
|
100
|
-
kind: result.type === 'repo.git' ? 'repository' : 'entity',
|
|
101
|
-
resourceId: result.uuid,
|
|
102
|
-
});
|
|
103
|
-
const boundaryChanged = base === null
|
|
104
|
-
|| base.type !== result.type
|
|
105
|
-
|| base.parentUUID !== result.parentUUID
|
|
106
|
-
|| base.name !== result.name
|
|
107
|
-
|| base.status !== result.status;
|
|
108
|
-
if (boundaryChanged) {
|
|
109
|
-
if (before)
|
|
110
|
-
add(targets, { kind: 'repository', resourceId: before.uuid });
|
|
111
|
-
if (after)
|
|
112
|
-
add(targets, { kind: 'repository', resourceId: after.uuid });
|
|
113
|
-
}
|
|
114
|
-
return Object.freeze(targets);
|
|
115
|
-
}
|
|
116
|
-
if (base === null) {
|
|
117
|
-
return Object.freeze(after
|
|
118
|
-
? [{ kind: 'repository', resourceId: after.uuid }]
|
|
119
|
-
: [{ kind: 'entity', resourceId: result.uuid }]);
|
|
120
|
-
}
|
|
121
|
-
if (before?.uuid === after?.uuid) {
|
|
122
|
-
return Object.freeze(before
|
|
123
|
-
? [{ kind: 'repository', resourceId: before.uuid }]
|
|
124
|
-
: [{ kind: 'entity', resourceId: result.uuid }]);
|
|
125
|
-
}
|
|
126
|
-
const targets = [{ kind: 'entity', resourceId: result.uuid }];
|
|
127
|
-
for (const repository of [before, after]) {
|
|
128
|
-
if (repository)
|
|
129
|
-
add(targets, { kind: 'repository', resourceId: repository.uuid });
|
|
130
|
-
}
|
|
131
|
-
return Object.freeze(targets);
|
|
132
|
-
}
|
|
133
55
|
//# sourceMappingURL=territory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"territory.js","sourceRoot":"","sources":["../../src/detection/territory.ts"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"territory.js","sourceRoot":"","sources":["../../src/detection/territory.ts"],"names":[],"mappings":";AAAA,oEAAoE;;AAwBpE,4DAyCC;AAhDD;;;;;;GAMG;AACH,SAAgB,wBAAwB,CACtC,KAAsB;IAEtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,IAAU,EAAe,EAAE;QAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChE,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI;YAC3B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE;YACtB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,CAAC,YAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACvF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -2,21 +2,29 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* The entity-cloud boundary's pure half (engine
|
|
4
4
|
* registration/entity-cloud.js): the snapshot codec, record assertions,
|
|
5
|
-
* equality, the private resource id, and the repo
|
|
6
|
-
* logical graph facts, never a path, inode, watcher, or
|
|
5
|
+
* equality, the private resource id, containment selection, and the repo
|
|
6
|
+
* travel law — only logical graph facts, never a path, inode, watcher, or
|
|
7
|
+
* database row.
|
|
7
8
|
*
|
|
8
9
|
* Wire parity is the contract here: `stableJson`, record key order, and
|
|
9
10
|
* snapshot sorting reproduce the engine's bytes exactly, so a snapshot
|
|
10
11
|
* packed on either side hashes and compares identically.
|
|
12
|
+
*
|
|
13
|
+
* Every ancestor question in this module is answered once per graph, not
|
|
14
|
+
* once per record. A workspace of ~19,000 entities 32 levels deep re-walks
|
|
15
|
+
* the same spine for every record it holds, and that is the difference
|
|
16
|
+
* between a linear pass and a quadratic one. `indexRepositoryTerritory`
|
|
17
|
+
* (src/detection/territory.ts) memoizes the same shape for the same reason.
|
|
11
18
|
*/
|
|
12
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.
|
|
20
|
+
exports.sameRecord = exports.stableJson = exports.ENTITY_CLOUD_SCHEMA_VERSION = exports.ENTITY_CLOUD_CONTRACT = void 0;
|
|
14
21
|
exports.privateEntityResourceId = privateEntityResourceId;
|
|
15
|
-
exports.
|
|
22
|
+
exports.sameRecords = sameRecords;
|
|
16
23
|
exports.assertRecord = assertRecord;
|
|
17
24
|
exports.enclosedByRepositoryAncestor = enclosedByRepositoryAncestor;
|
|
18
25
|
exports.travelingRecords = travelingRecords;
|
|
19
26
|
exports.snapshotFromRecords = snapshotFromRecords;
|
|
27
|
+
exports.containedRecords = containedRecords;
|
|
20
28
|
exports.rootReplacementFromRecords = rootReplacementFromRecords;
|
|
21
29
|
exports.parseSnapshot = parseSnapshot;
|
|
22
30
|
const types_js_1 = require("./types.js");
|
|
@@ -44,14 +52,32 @@ const stableJson = (value) => JSON.stringify(value);
|
|
|
44
52
|
exports.stableJson = stableJson;
|
|
45
53
|
const sameRecord = (left, right) => (0, exports.stableJson)(left) === (0, exports.stableJson)(right);
|
|
46
54
|
exports.sameRecord = sameRecord;
|
|
47
|
-
/**
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
/** The eight canonical record fields, in the order `assertRecord` emits them. */
|
|
56
|
+
const RECORD_FIELDS = [
|
|
57
|
+
'uuid', 'type', 'parentUUID', 'name', 'status', 'version', 'payloadVersion', 'transportVersion',
|
|
58
|
+
];
|
|
59
|
+
/** Two record lists describe the same graph (normalized, sorted, compared
|
|
60
|
+
* field by field).
|
|
61
|
+
*
|
|
62
|
+
* Comparing the canonical bytes would answer the same question, but it would
|
|
63
|
+
* spell out both whole graphs to answer one boolean — megabytes of JSON per
|
|
64
|
+
* call at register scale. `assertRecord` guarantees the equivalence: every
|
|
65
|
+
* normalized record carries exactly these eight keys in this order, and every
|
|
66
|
+
* value is `string | null`, never `undefined`. JSON's spelling of a string is
|
|
67
|
+
* injective, so field-wise equality and byte equality decide identically. */
|
|
68
|
+
function sameRecords(left, right) {
|
|
69
|
+
const ours = snapshotFromRecords(left).records;
|
|
70
|
+
const theirs = snapshotFromRecords(right).records;
|
|
71
|
+
if (ours.length !== theirs.length)
|
|
72
|
+
return false;
|
|
73
|
+
for (let index = 0; index < ours.length; index += 1) {
|
|
74
|
+
const mine = ours[index];
|
|
75
|
+
const yours = theirs[index];
|
|
76
|
+
for (const field of RECORD_FIELDS)
|
|
77
|
+
if (mine[field] !== yours[field])
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
55
81
|
}
|
|
56
82
|
/**
|
|
57
83
|
* Validate one snapshot record and normalize it (UUIDs lowercased,
|
|
@@ -66,7 +92,7 @@ function assertRecord(value) {
|
|
|
66
92
|
|| typeof record.type !== 'string' || !types_js_1.TYPES.has(record.type)
|
|
67
93
|
|| (record.parentUUID !== null && (typeof record.parentUUID !== 'string' || !types_js_1.UUID_PATTERN.test(record.parentUUID)))
|
|
68
94
|
|| typeof record.name !== 'string' || !record.name || record.name.includes('/') || record.name.includes('\0')
|
|
69
|
-
|| !
|
|
95
|
+
|| !types_js_1.STATUSES.has(record.status)
|
|
70
96
|
|| typeof record.version !== 'string' || !/^[0-9a-f]{64}$/.test(record.version)
|
|
71
97
|
|| (record.payloadVersion !== null && typeof record.payloadVersion !== 'string')
|
|
72
98
|
|| (record.transportVersion !== undefined && record.transportVersion !== null
|
|
@@ -94,6 +120,66 @@ function assertRecord(value) {
|
|
|
94
120
|
transportVersion,
|
|
95
121
|
};
|
|
96
122
|
}
|
|
123
|
+
/** A chain that never terminates, so no node on it can name a repository. */
|
|
124
|
+
const CYCLIC_CHAIN = Symbol('cyclic parent chain');
|
|
125
|
+
/**
|
|
126
|
+
* The repo travel law resolved once per graph. Asking it record by record
|
|
127
|
+
* re-walks the same spine for every entity the spine holds, which is
|
|
128
|
+
* quadratic in a deep workspace; the answer only ever depends on where the
|
|
129
|
+
* walk starts, so one memo serves every asker.
|
|
130
|
+
*
|
|
131
|
+
* The memo holds the nearest repository's UUID rather than a boolean because
|
|
132
|
+
* the naive walk's refusal is asker-dependent: it seeds its `seen` set with
|
|
133
|
+
* the asking record's own UUID, so a repository that is its own nearest
|
|
134
|
+
* repository is convicted of a cycle before its type can answer `true`. That
|
|
135
|
+
* is the single case where a chain-only answer would differ, and comparing
|
|
136
|
+
* the resolved UUID against the asker restores it exactly.
|
|
137
|
+
*/
|
|
138
|
+
function createRepositoryEnclosure(lookup) {
|
|
139
|
+
const nearest = new Map();
|
|
140
|
+
const resolve = (start) => {
|
|
141
|
+
const walked = [];
|
|
142
|
+
const walking = new Set();
|
|
143
|
+
let cursor = start;
|
|
144
|
+
let answer = null;
|
|
145
|
+
for (;;) {
|
|
146
|
+
if (cursor === null || cursor === undefined)
|
|
147
|
+
break;
|
|
148
|
+
const memoized = nearest.get(cursor);
|
|
149
|
+
if (memoized !== undefined) {
|
|
150
|
+
answer = memoized;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
if (walking.has(cursor)) {
|
|
154
|
+
answer = CYCLIC_CHAIN;
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
walking.add(cursor);
|
|
158
|
+
walked.push(cursor);
|
|
159
|
+
const node = lookup(cursor);
|
|
160
|
+
if (!node)
|
|
161
|
+
break;
|
|
162
|
+
if (node.type === 'repo.git') {
|
|
163
|
+
answer = cursor;
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
cursor = node.parentUUID;
|
|
167
|
+
}
|
|
168
|
+
for (const uuid of walked)
|
|
169
|
+
nearest.set(uuid, answer);
|
|
170
|
+
return answer;
|
|
171
|
+
};
|
|
172
|
+
return (record) => {
|
|
173
|
+
const { parentUUID } = record;
|
|
174
|
+
if (parentUUID === null || parentUUID === undefined)
|
|
175
|
+
return false;
|
|
176
|
+
const repository = resolve(parentUUID);
|
|
177
|
+
if (repository === CYCLIC_CHAIN || repository === record.uuid) {
|
|
178
|
+
throw new Error(`cloud entity ${record.uuid} has a cyclic parent chain`);
|
|
179
|
+
}
|
|
180
|
+
return repository !== null;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
97
183
|
/**
|
|
98
184
|
* The repo travel law: a record with a `repo.git` PROPER ancestor never
|
|
99
185
|
* travels to the cloud on its own. The repository is the sync boundary —
|
|
@@ -106,20 +192,7 @@ function assertRecord(value) {
|
|
|
106
192
|
* silently unsynced entity.
|
|
107
193
|
*/
|
|
108
194
|
function enclosedByRepositoryAncestor(record, lookup) {
|
|
109
|
-
|
|
110
|
-
let parentUUID = record.parentUUID;
|
|
111
|
-
while (parentUUID !== null && parentUUID !== undefined) {
|
|
112
|
-
if (seen.has(parentUUID))
|
|
113
|
-
throw new Error(`cloud entity ${record.uuid} has a cyclic parent chain`);
|
|
114
|
-
seen.add(parentUUID);
|
|
115
|
-
const parent = lookup(parentUUID);
|
|
116
|
-
if (!parent)
|
|
117
|
-
return false;
|
|
118
|
-
if (parent.type === 'repo.git')
|
|
119
|
-
return true;
|
|
120
|
-
parentUUID = parent.parentUUID;
|
|
121
|
-
}
|
|
122
|
-
return false;
|
|
195
|
+
return createRepositoryEnclosure(lookup)(record);
|
|
123
196
|
}
|
|
124
197
|
/** Project a complete local entity graph onto the cloud registry. Ordinary
|
|
125
198
|
* repository children keep their local SQLite identities inside the nearest
|
|
@@ -139,10 +212,16 @@ function enclosedByRepositoryAncestor(record, lookup) {
|
|
|
139
212
|
function travelingRecords(records, sha256Hex) {
|
|
140
213
|
const snapshot = snapshotFromRecords(records);
|
|
141
214
|
const byUuid = new Map(snapshot.records.map((record) => [record.uuid, record]));
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
for (const
|
|
215
|
+
const encloses = createRepositoryEnclosure((uuid) => byUuid.get(uuid));
|
|
216
|
+
const repositories = [];
|
|
217
|
+
const traveling = new Set();
|
|
218
|
+
for (const record of snapshot.records) {
|
|
219
|
+
if (record.type === 'repo.git')
|
|
220
|
+
repositories.push(record);
|
|
221
|
+
if (!encloses(record))
|
|
222
|
+
traveling.add(record.uuid);
|
|
223
|
+
}
|
|
224
|
+
for (const repository of repositories) {
|
|
146
225
|
let cursor = repository;
|
|
147
226
|
while (cursor) {
|
|
148
227
|
traveling.add(cursor.uuid);
|
|
@@ -151,13 +230,20 @@ function travelingRecords(records, sha256Hex) {
|
|
|
151
230
|
cursor = byUuid.get(cursor.parentUUID);
|
|
152
231
|
}
|
|
153
232
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const projected =
|
|
233
|
+
// The containers that lost active children, the records that survive, and
|
|
234
|
+
// each survivor's active membership all read the same list — so they read
|
|
235
|
+
// it once.
|
|
236
|
+
const narrowed = new Set();
|
|
237
|
+
const projected = [];
|
|
159
238
|
const activeChildren = new Map();
|
|
160
|
-
for (const record of
|
|
239
|
+
for (const record of snapshot.records) {
|
|
240
|
+
if (!traveling.has(record.uuid)) {
|
|
241
|
+
if (record.status === 'active' && record.parentUUID !== null && traveling.has(record.parentUUID)) {
|
|
242
|
+
narrowed.add(record.parentUUID);
|
|
243
|
+
}
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
projected.push(record);
|
|
161
247
|
if (record.status !== 'active' || record.parentUUID === null)
|
|
162
248
|
continue;
|
|
163
249
|
const siblings = activeChildren.get(record.parentUUID);
|
|
@@ -184,8 +270,11 @@ function travelingRecords(records, sha256Hex) {
|
|
|
184
270
|
function snapshotFromRecords(records) {
|
|
185
271
|
const normalized = records.map(assertRecord)
|
|
186
272
|
.sort((left, right) => (left.uuid < right.uuid ? -1 : left.uuid > right.uuid ? 1 : 0));
|
|
187
|
-
|
|
188
|
-
|
|
273
|
+
// Sorted, so duplicates are adjacent: no second array and no set to build.
|
|
274
|
+
for (let index = 1; index < normalized.length; index += 1) {
|
|
275
|
+
if (normalized[index].uuid === normalized[index - 1].uuid) {
|
|
276
|
+
throw new Error('cloud entity snapshot has duplicate UUIDs');
|
|
277
|
+
}
|
|
189
278
|
}
|
|
190
279
|
return {
|
|
191
280
|
schemaVersion: exports.ENTITY_CLOUD_SCHEMA_VERSION,
|
|
@@ -193,6 +282,83 @@ function snapshotFromRecords(records) {
|
|
|
193
282
|
records: normalized,
|
|
194
283
|
};
|
|
195
284
|
}
|
|
285
|
+
/** One complete subtree of an already-normalized record list: `rootUuid` and
|
|
286
|
+
* everything that descends from it, in the order it arrived.
|
|
287
|
+
*
|
|
288
|
+
* Containment is reachability down child edges, so it is answered by one
|
|
289
|
+
* walk over one child index — not by sweeping the whole graph until a fixed
|
|
290
|
+
* point stops moving. Records sorted by UUID arrive in no useful tree order,
|
|
291
|
+
* so a sweep adds roughly one level per pass and pays the graph's full depth
|
|
292
|
+
* in whole-list scans. Reachability is the whole law, exactly as a sweep
|
|
293
|
+
* decided it: a record in a cycle the root cannot reach stays out, and a
|
|
294
|
+
* record whose named parent is the root itself stays in even when no record
|
|
295
|
+
* for that root is present. */
|
|
296
|
+
function containedRecords(records, rootUuid) {
|
|
297
|
+
const children = new Map();
|
|
298
|
+
for (const record of records) {
|
|
299
|
+
if (record.parentUUID === null)
|
|
300
|
+
continue;
|
|
301
|
+
const siblings = children.get(record.parentUUID);
|
|
302
|
+
if (siblings)
|
|
303
|
+
siblings.push(record);
|
|
304
|
+
else
|
|
305
|
+
children.set(record.parentUUID, [record]);
|
|
306
|
+
}
|
|
307
|
+
const included = new Set([rootUuid]);
|
|
308
|
+
const frontier = [rootUuid];
|
|
309
|
+
while (frontier.length > 0) {
|
|
310
|
+
for (const child of children.get(frontier.pop()) ?? []) {
|
|
311
|
+
if (included.has(child.uuid))
|
|
312
|
+
continue;
|
|
313
|
+
included.add(child.uuid);
|
|
314
|
+
frontier.push(child.uuid);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return records.filter((record) => included.has(record.uuid));
|
|
318
|
+
}
|
|
319
|
+
/** The two ways a record's climb to a root can fail. */
|
|
320
|
+
const PARENT_CYCLE = Symbol('parent cycle');
|
|
321
|
+
const INCOMPLETE_ANCESTRY = Symbol('incomplete ancestry');
|
|
322
|
+
/** Answer "which root is above this record" once per node instead of once
|
|
323
|
+
* per record. Unlike the enclosure walk this one starts its cycle set empty,
|
|
324
|
+
* so the answer is already a pure function of where the climb begins: every
|
|
325
|
+
* node the climb crosses shares the answer it lands on, faults included —
|
|
326
|
+
* a node leading into a cycle can only ever lead into that cycle. */
|
|
327
|
+
function createRootResolver(byUuid) {
|
|
328
|
+
const ancestry = new Map();
|
|
329
|
+
return (record) => {
|
|
330
|
+
const walked = [];
|
|
331
|
+
const walking = new Set();
|
|
332
|
+
let cursor = record;
|
|
333
|
+
let answer;
|
|
334
|
+
for (;;) {
|
|
335
|
+
const memoized = ancestry.get(cursor.uuid);
|
|
336
|
+
if (memoized !== undefined) {
|
|
337
|
+
answer = memoized;
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
if (cursor.parentUUID === null) {
|
|
341
|
+
answer = cursor.uuid;
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
if (walking.has(cursor.uuid)) {
|
|
345
|
+
answer = PARENT_CYCLE;
|
|
346
|
+
break;
|
|
347
|
+
}
|
|
348
|
+
walking.add(cursor.uuid);
|
|
349
|
+
walked.push(cursor.uuid);
|
|
350
|
+
const parent = byUuid.get(cursor.parentUUID);
|
|
351
|
+
if (!parent) {
|
|
352
|
+
answer = INCOMPLETE_ANCESTRY;
|
|
353
|
+
break;
|
|
354
|
+
}
|
|
355
|
+
cursor = parent;
|
|
356
|
+
}
|
|
357
|
+
for (const uuid of walked)
|
|
358
|
+
ancestry.set(uuid, answer);
|
|
359
|
+
return answer;
|
|
360
|
+
};
|
|
361
|
+
}
|
|
196
362
|
/** Build the complete, self-contained root replacement carried by cold
|
|
197
363
|
* Register. Every declared root must be present, every record must descend
|
|
198
364
|
* from one of those roots inside this same operation, and active slots must
|
|
@@ -220,6 +386,7 @@ function rootReplacementFromRecords(rootIds, records) {
|
|
|
220
386
|
|| actual.some((rootId, index) => rootId !== normalizedRoots[index])) {
|
|
221
387
|
throw new Error('cloud root replacement records do not exactly match its roots');
|
|
222
388
|
}
|
|
389
|
+
const ancestryOf = createRootResolver(byUuid);
|
|
223
390
|
const activeSlots = new Set();
|
|
224
391
|
for (const record of snapshot.records) {
|
|
225
392
|
if (record.parentUUID !== null) {
|
|
@@ -234,17 +401,13 @@ function rootReplacementFromRecords(rootIds, records) {
|
|
|
234
401
|
activeSlots.add(slot);
|
|
235
402
|
}
|
|
236
403
|
}
|
|
237
|
-
const
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
seen.add(cursor.uuid);
|
|
243
|
-
cursor = byUuid.get(cursor.parentUUID);
|
|
244
|
-
if (!cursor)
|
|
245
|
-
throw new Error(`cloud root replacement entity ${record.uuid} has incomplete ancestry`);
|
|
404
|
+
const ancestry = ancestryOf(record);
|
|
405
|
+
if (ancestry === PARENT_CYCLE)
|
|
406
|
+
throw new Error('cloud root replacement has a parent cycle');
|
|
407
|
+
if (ancestry === INCOMPLETE_ANCESTRY) {
|
|
408
|
+
throw new Error(`cloud root replacement entity ${record.uuid} has incomplete ancestry`);
|
|
246
409
|
}
|
|
247
|
-
if (!declared.has(
|
|
410
|
+
if (!declared.has(ancestry)) {
|
|
248
411
|
throw new Error(`cloud root replacement entity ${record.uuid} is outside its declared roots`);
|
|
249
412
|
}
|
|
250
413
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/entities/cloud.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../../src/entities/cloud.ts"],"names":[],"mappings":"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"}
|