@amalgm/shell 0.1.41 → 0.1.43
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 +32 -0
- package/dist/detection-host.d.ts +48 -0
- package/dist/detection-host.js +124 -0
- package/dist/detection-host.js.map +1 -0
- package/dist/files-register-host.d.ts +8 -0
- package/dist/files-register-host.js +15 -0
- package/dist/files-register-host.js.map +1 -1
- package/dist/user-ground-host.d.ts +3 -2
- package/dist/user-ground-host.js +471 -107
- package/dist/user-ground-host.js.map +1 -1
- package/package.json +2 -2
package/PURPOSE.md
CHANGED
|
@@ -243,6 +243,9 @@ shell only assembles.
|
|
|
243
243
|
verified from the immutable cache before its rows or reveal are trusted.
|
|
244
244
|
Staging beside the destination makes the reveal an atomic rename on every
|
|
245
245
|
supported filesystem.
|
|
246
|
+
Register reuses identity at the same native address. Device and inode may
|
|
247
|
+
rescue a move only when the prior address is gone; a different address
|
|
248
|
+
that is still present is a collision or hard link, never the same entity.
|
|
246
249
|
The refreshed references and their parent container's derived membership
|
|
247
250
|
version enter machine SQLite in one transaction, so the authoritative
|
|
248
251
|
install is already internally consistent before Watch opens it.
|
|
@@ -335,6 +338,35 @@ shell only assembles.
|
|
|
335
338
|
changes after the cutoff remain inside the blind interval that startup
|
|
336
339
|
catch-up is required to close.
|
|
337
340
|
|
|
341
|
+
42. **Record commits evidence before Watch settles.** The host reconciles a
|
|
342
|
+
Watch generation against one last-verified detection notebook, writes the
|
|
343
|
+
exact portable Detect proposals into the existing cloud outbox, and
|
|
344
|
+
advances that notebook in the same SQLite transaction. The materialized
|
|
345
|
+
`entities` table contains only ground present on this machine; the notebook
|
|
346
|
+
may retain the UUID and last verified evidence for missing ground so an
|
|
347
|
+
external disappearance cannot invent a delete or a replacement identity.
|
|
348
|
+
Repository boundaries own the portable changes of their enclosed children:
|
|
349
|
+
gaining `.git` records one Card + Checkpoint transition, while losing it
|
|
350
|
+
recaptures those children through their newly selected file rails. Watch
|
|
351
|
+
settles only after this transaction is durable and never interprets any of
|
|
352
|
+
these meanings itself.
|
|
353
|
+
|
|
354
|
+
43. **One Detect job proves one finite Watch generation.** A scheduled pass or
|
|
355
|
+
explicit flush observes and settles only the generations it froze before
|
|
356
|
+
reading truth. A ring received during that read remains pending and owns a
|
|
357
|
+
later debounced pass; no caller waits for the operating system to become
|
|
358
|
+
globally silent. This keeps duplicate or continuous native callbacks from
|
|
359
|
+
making an otherwise complete Record operation unbounded without dropping
|
|
360
|
+
any suspicion.
|
|
361
|
+
|
|
362
|
+
44. **Detect indexes each observed graph once.** Repository ownership and
|
|
363
|
+
identity reconciliation reuse one UUID index for the complete batch;
|
|
364
|
+
planning a no-op generation is linear in the entity graph, never one full
|
|
365
|
+
graph rebuild per entity. Record advances only notebook rows whose accepted
|
|
366
|
+
evidence changed rather than rewriting the entire accepted graph. Large
|
|
367
|
+
existing ground therefore cannot hold a small new Register behind
|
|
368
|
+
quadratic planning or unrelated SQLite writes.
|
|
369
|
+
|
|
338
370
|
## Relationship to amalgm-engine
|
|
339
371
|
|
|
340
372
|
Stage 1 cut the bricks out of the engine. Stage 2 proves them here, composed.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one host seam between Node filesystem evidence and Live's portable
|
|
3
|
+
* Detect laws. This file owns no watcher, scanner, database, or transport.
|
|
4
|
+
* It only binds already-observed ground to durable UUIDs and asks Live to
|
|
5
|
+
* plan the exact Watch generation that Record may accept.
|
|
6
|
+
*/
|
|
7
|
+
import { type CloudEntityRecord, type DetectionBatchPlan, type EntityType, type ReplayInstruction, type SuspicionSnapshot } from "@amalgm/live";
|
|
8
|
+
export interface IdentityRow {
|
|
9
|
+
readonly uuid: string;
|
|
10
|
+
readonly type: EntityType;
|
|
11
|
+
readonly relativePath: string;
|
|
12
|
+
readonly deviceNumber: number;
|
|
13
|
+
readonly inode: number;
|
|
14
|
+
}
|
|
15
|
+
export interface IdentityEntry {
|
|
16
|
+
/** Stable only for this observation; never leaves the host. */
|
|
17
|
+
readonly key: string;
|
|
18
|
+
readonly type: EntityType;
|
|
19
|
+
readonly relativePath: string;
|
|
20
|
+
readonly deviceNumber: number;
|
|
21
|
+
readonly inode: number;
|
|
22
|
+
/** A deliberate Register/Add boundary already owns this UUID. */
|
|
23
|
+
readonly fixedUUID?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve one observation against the last notebook. Directories claim by
|
|
27
|
+
* unique physical continuity first; files and links claim their address
|
|
28
|
+
* first, then unique physical continuity rescues a move. Equal bytes are not
|
|
29
|
+
* an input and therefore can never create identity.
|
|
30
|
+
*/
|
|
31
|
+
export declare function reconcileGroundUUIDs(rows: readonly IdentityRow[], entries: readonly IdentityEntry[]): ReadonlyMap<string, string>;
|
|
32
|
+
export interface DetectedGroundRow {
|
|
33
|
+
readonly record: CloudEntityRecord;
|
|
34
|
+
readonly relativePath: string;
|
|
35
|
+
readonly replay?: ReplayInstruction;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Turn one real Watch observation and its settled before/after graph into the
|
|
39
|
+
* portable Detect plan. Ordinary descendants owned by a repository do not
|
|
40
|
+
* publish independent records; the nearest repository's Card + Checkpoint
|
|
41
|
+
* proposal owns them.
|
|
42
|
+
*/
|
|
43
|
+
export declare function planGroundDetection(input: {
|
|
44
|
+
readonly rootId: string;
|
|
45
|
+
readonly suspicion: SuspicionSnapshot;
|
|
46
|
+
readonly before: readonly CloudEntityRecord[];
|
|
47
|
+
readonly after: readonly DetectedGroundRow[];
|
|
48
|
+
}): DetectionBatchPlan;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one host seam between Node filesystem evidence and Live's portable
|
|
3
|
+
* Detect laws. This file owns no watcher, scanner, database, or transport.
|
|
4
|
+
* It only binds already-observed ground to durable UUIDs and asks Live to
|
|
5
|
+
* plan the exact Watch generation that Record may accept.
|
|
6
|
+
*/
|
|
7
|
+
import { CONTAINERS, detectionBatch, diffDirState, enclosedByRepositoryAncestor, matchByInode, planDetectionBatch, } from "@amalgm/live";
|
|
8
|
+
/**
|
|
9
|
+
* Resolve one observation against the last notebook. Directories claim by
|
|
10
|
+
* unique physical continuity first; files and links claim their address
|
|
11
|
+
* first, then unique physical continuity rescues a move. Equal bytes are not
|
|
12
|
+
* an input and therefore can never create identity.
|
|
13
|
+
*/
|
|
14
|
+
export function reconcileGroundUUIDs(rows, entries) {
|
|
15
|
+
const resolved = new Map();
|
|
16
|
+
const claimed = new Set();
|
|
17
|
+
const claim = (entry, uuid) => {
|
|
18
|
+
if (resolved.has(entry.key))
|
|
19
|
+
throw new Error(`detection entry ${entry.key} claimed twice`);
|
|
20
|
+
if (claimed.has(uuid))
|
|
21
|
+
throw new Error(`detection UUID ${uuid} claimed twice`);
|
|
22
|
+
resolved.set(entry.key, uuid);
|
|
23
|
+
claimed.add(uuid);
|
|
24
|
+
};
|
|
25
|
+
for (const entry of entries) {
|
|
26
|
+
if (entry.fixedUUID)
|
|
27
|
+
claim(entry, entry.fixedUUID);
|
|
28
|
+
}
|
|
29
|
+
const availableRows = () => rows.filter((row) => !claimed.has(row.uuid));
|
|
30
|
+
const availableEntries = () => entries.filter((entry) => !resolved.has(entry.key));
|
|
31
|
+
const directoryRows = availableRows().filter((row) => CONTAINERS.has(row.type));
|
|
32
|
+
const directoryEntries = availableEntries().filter((entry) => CONTAINERS.has(entry.type));
|
|
33
|
+
const directoryEntryByPath = new Map(directoryEntries.map((entry) => [entry.relativePath, entry]));
|
|
34
|
+
const directories = diffDirState(directoryRows.map((row) => ({
|
|
35
|
+
dirId: row.uuid,
|
|
36
|
+
relPath: row.relativePath,
|
|
37
|
+
device: row.deviceNumber,
|
|
38
|
+
inode: row.inode,
|
|
39
|
+
})), directoryEntries.map((entry) => ({
|
|
40
|
+
entry,
|
|
41
|
+
relPath: entry.relativePath,
|
|
42
|
+
device: entry.deviceNumber,
|
|
43
|
+
inode: entry.inode,
|
|
44
|
+
})));
|
|
45
|
+
for (const match of [...directories.renames, ...directories.retags]) {
|
|
46
|
+
const entry = directoryEntryByPath.get(match.entry.relPath);
|
|
47
|
+
if (!entry)
|
|
48
|
+
throw new Error(`detection directory ${match.entry.relPath} disappeared from its observation`);
|
|
49
|
+
claim(entry, match.row.dirId);
|
|
50
|
+
}
|
|
51
|
+
const rowsByPath = new Map(availableRows().map((row) => [row.relativePath, row]));
|
|
52
|
+
for (const entry of availableEntries().filter((candidate) => !CONTAINERS.has(candidate.type))) {
|
|
53
|
+
const row = rowsByPath.get(entry.relativePath);
|
|
54
|
+
if (row)
|
|
55
|
+
claim(entry, row.uuid);
|
|
56
|
+
}
|
|
57
|
+
const physicalRows = availableRows().filter((row) => !CONTAINERS.has(row.type));
|
|
58
|
+
const physicalEntries = availableEntries().filter((entry) => !CONTAINERS.has(entry.type));
|
|
59
|
+
for (const match of matchByInode(physicalRows.map((row) => ({
|
|
60
|
+
row,
|
|
61
|
+
device: row.deviceNumber,
|
|
62
|
+
inode: row.inode,
|
|
63
|
+
})), physicalEntries.map((entry) => ({
|
|
64
|
+
entry,
|
|
65
|
+
device: entry.deviceNumber,
|
|
66
|
+
inode: entry.inode,
|
|
67
|
+
})))) {
|
|
68
|
+
claim(match.entry.entry, match.row.row.uuid);
|
|
69
|
+
}
|
|
70
|
+
return resolved;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Turn one real Watch observation and its settled before/after graph into the
|
|
74
|
+
* portable Detect plan. Ordinary descendants owned by a repository do not
|
|
75
|
+
* publish independent records; the nearest repository's Card + Checkpoint
|
|
76
|
+
* proposal owns them.
|
|
77
|
+
*/
|
|
78
|
+
export function planGroundDetection(input) {
|
|
79
|
+
const batch = detectionBatch(input.rootId, input.suspicion);
|
|
80
|
+
const beforeByUuid = new Map(input.before.map((record) => [record.uuid, record]));
|
|
81
|
+
const afterRecords = input.after.map((row) => row.record);
|
|
82
|
+
const afterByUuid = new Map(input.after.map((row) => [row.record.uuid, row]));
|
|
83
|
+
const afterRecordByUuid = new Map(afterRecords.map((record) => [record.uuid, record]));
|
|
84
|
+
// Repository ownership is a graph lookup. Build each graph index once;
|
|
85
|
+
// rebuilding it for every entity turns a large no-op observation into
|
|
86
|
+
// quadratic work before Record can settle.
|
|
87
|
+
const beforeEnclosed = (record) => enclosedByRepositoryAncestor(record, (uuid) => beforeByUuid.get(uuid));
|
|
88
|
+
const afterEnclosed = (record) => enclosedByRepositoryAncestor(record, (uuid) => afterRecordByUuid.get(uuid));
|
|
89
|
+
const transitions = [];
|
|
90
|
+
for (const uuid of new Set([...beforeByUuid.keys(), ...afterByUuid.keys()])) {
|
|
91
|
+
const base = beforeByUuid.get(uuid) ?? null;
|
|
92
|
+
const current = afterByUuid.get(uuid) ?? null;
|
|
93
|
+
const baseEnclosed = base ? beforeEnclosed(base) : false;
|
|
94
|
+
const resultEnclosed = current ? afterEnclosed(current.record) : false;
|
|
95
|
+
const repositoryBoundary = base?.type === "repo.git" || current?.record.type === "repo.git";
|
|
96
|
+
if (!repositoryBoundary
|
|
97
|
+
&& ((current === null && baseEnclosed)
|
|
98
|
+
|| (current !== null && resultEnclosed)))
|
|
99
|
+
continue;
|
|
100
|
+
if (current === null) {
|
|
101
|
+
transitions.push({ truth: "absent", base });
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
transitions.push({
|
|
105
|
+
truth: "present",
|
|
106
|
+
relPath: current.relativePath,
|
|
107
|
+
base,
|
|
108
|
+
result: current.record,
|
|
109
|
+
replay: current.replay ?? { kind: "structure" },
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
return planDetectionBatch(batch, transitions);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
117
|
+
const candidates = transitions.slice(0, 8).map((transition) => transition.truth === "present"
|
|
118
|
+
? `${transition.result.uuid}:${transition.result.type}:${transition.result.payloadVersion ?? "none"}`
|
|
119
|
+
: `${transition.base?.uuid ?? "none"}:absent`).join(",");
|
|
120
|
+
const remainder = transitions.length > 8 ? `,+${transitions.length - 8} more` : "";
|
|
121
|
+
throw new Error(`Detect plan for ${input.rootId} failed (${candidates}${remainder}): ${message}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=detection-host.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection-host.js","sourceRoot":"","sources":["../src/detection-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,4 +42,12 @@ export declare function ensureWorkspaceReference(input: {
|
|
|
42
42
|
};
|
|
43
43
|
export declare function pathExists(path: string): boolean;
|
|
44
44
|
export declare function pathWithin(root: string, candidate: string): boolean;
|
|
45
|
+
export interface KnownRegistrationIdentity {
|
|
46
|
+
readonly uuid: string;
|
|
47
|
+
readonly absolutePath: string;
|
|
48
|
+
}
|
|
49
|
+
/** Physical identity rescues a moved registration only after its prior
|
|
50
|
+
* address is gone. A still-present different address is a collision or hard
|
|
51
|
+
* link, never permission to give new ground an existing UUID. */
|
|
52
|
+
export declare function selectKnownRegistrationId(requestedPath: string, candidates: readonly KnownRegistrationIdentity[]): string | null;
|
|
45
53
|
export declare function referenceWorkspaceId(referencePath: string, bindingDir: string): string | null;
|
|
@@ -145,6 +145,21 @@ export function pathWithin(root, candidate) {
|
|
|
145
145
|
const rel = relative(resolve(root), resolve(candidate));
|
|
146
146
|
return rel === "" || (rel !== ".." && !rel.startsWith(`..${sep}`) && !isAbsolute(rel));
|
|
147
147
|
}
|
|
148
|
+
/** Physical identity rescues a moved registration only after its prior
|
|
149
|
+
* address is gone. A still-present different address is a collision or hard
|
|
150
|
+
* link, never permission to give new ground an existing UUID. */
|
|
151
|
+
export function selectKnownRegistrationId(requestedPath, candidates) {
|
|
152
|
+
const eligible = candidates.filter((candidate) => (sameNativePath(candidate.absolutePath, requestedPath)
|
|
153
|
+
|| !pathExists(candidate.absolutePath)));
|
|
154
|
+
const ids = [...new Set(eligible.map(({ uuid }) => uuid))];
|
|
155
|
+
if (ids.length > 1) {
|
|
156
|
+
throw new Error(`entity graph has ambiguous identity for ${requestedPath}`);
|
|
157
|
+
}
|
|
158
|
+
return ids[0] ?? null;
|
|
159
|
+
}
|
|
160
|
+
function sameNativePath(left, right) {
|
|
161
|
+
return pathWithin(left, right) && pathWithin(right, left);
|
|
162
|
+
}
|
|
148
163
|
export function referenceWorkspaceId(referencePath, bindingDir) {
|
|
149
164
|
try {
|
|
150
165
|
const target = resolve(dirname(referencePath), readlinkSync(referencePath));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files-register-host.js","sourceRoot":"","sources":["../src/files-register-host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"files-register-host.js","sourceRoot":"","sources":["../src/files-register-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,8 +100,9 @@ export declare class UserGroundHost {
|
|
|
100
100
|
readonly cloudHead: string;
|
|
101
101
|
readonly watch: WatchCoverageEvidence;
|
|
102
102
|
}>;
|
|
103
|
-
/**
|
|
104
|
-
*
|
|
103
|
+
/** Prove one finite observation boundary in SQLite, immutable content
|
|
104
|
+
* storage, and the official cloud head. Rings received during that proof
|
|
105
|
+
* remain pending and already own their next debounced Detect pass. */
|
|
105
106
|
flush(): Promise<void>;
|
|
106
107
|
private syncNow;
|
|
107
108
|
private flushObservedChanges;
|