@indigoai-us/hq-cloud 6.3.4 → 6.3.5
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/dist/cli/sync.d.ts.map +1 -1
- package/dist/cli/sync.js +26 -2
- package/dist/cli/sync.js.map +1 -1
- package/dist/cli/sync.test.js +66 -0
- package/dist/cli/sync.test.js.map +1 -1
- package/dist/journal.d.ts +19 -0
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +42 -0
- package/dist/journal.js.map +1 -1
- package/dist/journal.test.js +111 -1
- package/dist/journal.test.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/sync.test.ts +85 -0
- package/src/cli/sync.ts +25 -1
- package/src/journal.test.ts +120 -0
- package/src/journal.ts +41 -0
package/dist/journal.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.test.js","sourceRoot":"","sources":["../src/journal.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"journal.test.js","sourceRoot":"","sources":["../src/journal.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cli/sync.test.ts
CHANGED
|
@@ -775,6 +775,91 @@ describe("sync", () => {
|
|
|
775
775
|
expect(journal.files["docs/kept.md"]).toBeDefined();
|
|
776
776
|
});
|
|
777
777
|
|
|
778
|
+
it("does NOT tombstone a live file recorded under a Windows backslash journal key whose POSIX twin still exists remotely (ridge data-loss regression — feedback_b8d09d0f)", async () => {
|
|
779
|
+
// Root-cause regression. A pre-5.47.2 Windows client stamped the journal
|
|
780
|
+
// key with path.sep ("\\"): `projects\forecast-development\...\sean-frank.csv`.
|
|
781
|
+
// The forecast file IS still in the vault (remote LIST has the forward-slash
|
|
782
|
+
// key). Pre-fix the planner compared the raw backslash key against the
|
|
783
|
+
// forward-slash remote set, missed the match, classed the LIVE file as
|
|
784
|
+
// remote-deleted, and dropped its journal entry (and on Windows, where
|
|
785
|
+
// path.join collapses "\\", unlinked the real file — ~36 files lost in one
|
|
786
|
+
// pull). The fix: normalize journal keys to POSIX on load + compare in POSIX
|
|
787
|
+
// space, so the live file is recognized as present and never tombstoned.
|
|
788
|
+
const companyRoot = path.join(tmpDir, "companies", "acme");
|
|
789
|
+
const forecastDir = path.join(
|
|
790
|
+
companyRoot,
|
|
791
|
+
"projects",
|
|
792
|
+
"forecast-development",
|
|
793
|
+
"forecasts",
|
|
794
|
+
);
|
|
795
|
+
fs.mkdirSync(forecastDir, { recursive: true });
|
|
796
|
+
const forecastPath = path.join(forecastDir, "sean-frank.csv");
|
|
797
|
+
fs.writeFileSync(forecastPath, "forecast,data\n1,2\n");
|
|
798
|
+
|
|
799
|
+
const posixKey = "projects/forecast-development/forecasts/sean-frank.csv";
|
|
800
|
+
const backslashKey =
|
|
801
|
+
"projects\\forecast-development\\forecasts\\sean-frank.csv";
|
|
802
|
+
|
|
803
|
+
const crypto = await import("node:crypto");
|
|
804
|
+
const baseline = crypto
|
|
805
|
+
.createHash("sha256")
|
|
806
|
+
.update("forecast,data\n1,2\n")
|
|
807
|
+
.digest("hex");
|
|
808
|
+
|
|
809
|
+
// Seed the journal under the MALFORMED backslash key (the landmine state).
|
|
810
|
+
fs.writeFileSync(
|
|
811
|
+
journalPath,
|
|
812
|
+
JSON.stringify({
|
|
813
|
+
version: "2",
|
|
814
|
+
lastSync: new Date(Date.now() - 60_000).toISOString(),
|
|
815
|
+
files: {
|
|
816
|
+
[backslashKey]: {
|
|
817
|
+
hash: baseline,
|
|
818
|
+
size: 18,
|
|
819
|
+
syncedAt: new Date(Date.now() - 60_000).toISOString(),
|
|
820
|
+
direction: "down",
|
|
821
|
+
remoteEtag: "e-forecast",
|
|
822
|
+
},
|
|
823
|
+
},
|
|
824
|
+
pulls: [],
|
|
825
|
+
}),
|
|
826
|
+
);
|
|
827
|
+
|
|
828
|
+
// The vault still holds the file under its canonical forward-slash key.
|
|
829
|
+
vi.mocked(s3Module.listRemoteFiles).mockResolvedValueOnce([
|
|
830
|
+
{
|
|
831
|
+
key: posixKey,
|
|
832
|
+
size: 18,
|
|
833
|
+
lastModified: new Date(),
|
|
834
|
+
etag: '"e-forecast"',
|
|
835
|
+
},
|
|
836
|
+
]);
|
|
837
|
+
// If anything still HEAD-probed the backslash key, S3 would say NotFound —
|
|
838
|
+
// model that worst case so the test proves the planner never gets there.
|
|
839
|
+
vi.mocked(s3Module.headRemoteFile).mockResolvedValue(null);
|
|
840
|
+
|
|
841
|
+
const result = await sync({
|
|
842
|
+
company: "acme",
|
|
843
|
+
vaultConfig: mockConfig,
|
|
844
|
+
hqRoot: tmpDir,
|
|
845
|
+
});
|
|
846
|
+
|
|
847
|
+
// The live forecast file MUST survive the pull.
|
|
848
|
+
expect(fs.existsSync(forecastPath)).toBe(true);
|
|
849
|
+
expect(fs.readFileSync(forecastPath, "utf-8")).toBe("forecast,data\n1,2\n");
|
|
850
|
+
// Nothing was tombstoned — the file is present remotely.
|
|
851
|
+
expect(result.filesTombstoned).toBe(0);
|
|
852
|
+
|
|
853
|
+
// The journal is healed: the malformed key is gone, the canonical POSIX key
|
|
854
|
+
// points at the live file (so a future pull stays converged, not poisoned).
|
|
855
|
+
const journal = JSON.parse(fs.readFileSync(journalPath, "utf-8"));
|
|
856
|
+
expect(journal.files[backslashKey]).toBeUndefined();
|
|
857
|
+
expect(journal.files[posixKey]).toBeDefined();
|
|
858
|
+
expect(
|
|
859
|
+
Object.keys(journal.files).some((k) => k.includes("\\")),
|
|
860
|
+
).toBe(false);
|
|
861
|
+
});
|
|
862
|
+
|
|
778
863
|
it("does NOT tombstone keys whose local copy has diverged from the journal (Codex P1 — delete-vs-edit race)", async () => {
|
|
779
864
|
// Codex review on PR #24 round 3 caught: in a delete-vs-local-edit
|
|
780
865
|
// race, peer A deletes a file remotely while peer B edits it
|
package/src/cli/sync.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
listRemoteFiles,
|
|
16
16
|
headRemoteFile,
|
|
17
17
|
primeObjectTransport,
|
|
18
|
+
toPosixKey,
|
|
18
19
|
} from "../s3.js";
|
|
19
20
|
import type { RemoteFile } from "../s3.js";
|
|
20
21
|
import {
|
|
@@ -1253,6 +1254,17 @@ export async function sync(options: SyncOptions): Promise<SyncResult> {
|
|
|
1253
1254
|
// converged. Failures are reported but non-fatal — the entry stays in
|
|
1254
1255
|
// the journal and the next run retries.
|
|
1255
1256
|
for (const key of plan.tombstones) {
|
|
1257
|
+
// Last line of defense against the Windows backslash-key landmine: a
|
|
1258
|
+
// malformed key must NEVER reach fs.unlinkSync. path.join(companyRoot, key)
|
|
1259
|
+
// collapses the backslashes and resolves onto the REAL POSIX file, so
|
|
1260
|
+
// unlinking here destroys live data (ridge incident, feedback_b8d09d0f).
|
|
1261
|
+
// The planner already refuses to enqueue malformed keys; if one still
|
|
1262
|
+
// arrives, drop the poisoned journal entry without touching disk —
|
|
1263
|
+
// normalizeJournalKeys rewrites it to its POSIX form on load.
|
|
1264
|
+
if (isMalformedVaultKey(key)) {
|
|
1265
|
+
removeEntry(journal, key);
|
|
1266
|
+
continue;
|
|
1267
|
+
}
|
|
1256
1268
|
const localPath = path.join(companyRoot, key);
|
|
1257
1269
|
let removedSomething = false;
|
|
1258
1270
|
try {
|
|
@@ -1795,7 +1807,19 @@ function computePullPlan(
|
|
|
1795
1807
|
for (const rf of remoteFiles) remoteKeySet.add(rf.key);
|
|
1796
1808
|
const tombstones: string[] = [];
|
|
1797
1809
|
for (const key of Object.keys(journal.files)) {
|
|
1798
|
-
|
|
1810
|
+
// Compare membership in POSIX space. A pre-5.47.2 Windows journal key can
|
|
1811
|
+
// carry backslash separators; the remote LIST is always forward-slash, so a
|
|
1812
|
+
// raw `has(key)` would miss the match and class a live local file as
|
|
1813
|
+
// remote-deleted. normalizeJournalKeys() defuses this on load, but the
|
|
1814
|
+
// POSIX compare is defense-in-depth (ridge data-loss, feedback_b8d09d0f).
|
|
1815
|
+
const posixKey = toPosixKey(key);
|
|
1816
|
+
if (remoteKeySet.has(posixKey)) continue;
|
|
1817
|
+
// Never tombstone-delete via a malformed (backslash) key: the executor's
|
|
1818
|
+
// path.join(companyRoot, key) collapses backslashes back onto the REAL
|
|
1819
|
+
// POSIX file and unlinks live data. Leave it for normalizeJournalKeys to
|
|
1820
|
+
// rewrite to POSIX on the next write; the canonical key is re-evaluated
|
|
1821
|
+
// (and correctly tombstoned if genuinely remote-deleted) on a later pull.
|
|
1822
|
+
if (isMalformedVaultKey(key)) continue;
|
|
1799
1823
|
// PersonalMode key gating — mirror the download branch.
|
|
1800
1824
|
if (personalMode && key.startsWith("companies/")) {
|
|
1801
1825
|
const slug = key.split("/")[1] ?? "";
|
package/src/journal.test.ts
CHANGED
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
writeJournal,
|
|
18
18
|
updateEntry,
|
|
19
19
|
migrateToV2,
|
|
20
|
+
normalizeJournalKeys,
|
|
20
21
|
appendPullRecord,
|
|
21
22
|
lastPullRecord,
|
|
22
23
|
tombstoneEntry,
|
|
@@ -208,6 +209,125 @@ describe("journal", () => {
|
|
|
208
209
|
expect(raw.version).toBe("2");
|
|
209
210
|
expect(raw.pulls).toEqual([]);
|
|
210
211
|
});
|
|
212
|
+
|
|
213
|
+
it("normalizes backslash keys even on an already-v2 journal", () => {
|
|
214
|
+
// The landmine predates the v2 bump, so a poisoned journal can be v2.
|
|
215
|
+
// migrateToV2's early-return must not skip normalization.
|
|
216
|
+
const j: SyncJournal = {
|
|
217
|
+
version: "2",
|
|
218
|
+
lastSync: "",
|
|
219
|
+
files: {
|
|
220
|
+
"projects\\forecast\\x.csv": {
|
|
221
|
+
hash: "h",
|
|
222
|
+
size: 1,
|
|
223
|
+
syncedAt: "2026-06-10",
|
|
224
|
+
direction: "down",
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
pulls: [],
|
|
228
|
+
};
|
|
229
|
+
migrateToV2(j);
|
|
230
|
+
expect(j.files["projects\\forecast\\x.csv"]).toBeUndefined();
|
|
231
|
+
expect(j.files["projects/forecast/x.csv"]).toBeDefined();
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
describe("normalizeJournalKeys (Windows backslash-key landmine — ridge data loss)", () => {
|
|
236
|
+
// Regression for feedback_b8d09d0f: pre-5.47.2 Windows clients stamped
|
|
237
|
+
// journal keys with path.sep ("\\"). Those keys never match the
|
|
238
|
+
// forward-slash remote LIST, so the cross-machine delete planner classed
|
|
239
|
+
// live local files as remote-deleted and path.join collapsed the key back
|
|
240
|
+
// onto the real file — deleting ~36 live files in a single pull. The
|
|
241
|
+
// canonical defense is rewriting every key to POSIX form on load.
|
|
242
|
+
it("rewrites backslash keys to POSIX form and reports the count", () => {
|
|
243
|
+
const j: SyncJournal = {
|
|
244
|
+
version: "2",
|
|
245
|
+
lastSync: "",
|
|
246
|
+
files: {
|
|
247
|
+
"projects\\forecast-development\\forecasts\\sean-frank.csv": {
|
|
248
|
+
hash: "h1",
|
|
249
|
+
size: 10,
|
|
250
|
+
syncedAt: "2026-06-10",
|
|
251
|
+
direction: "down",
|
|
252
|
+
},
|
|
253
|
+
"docs\\notes.md": {
|
|
254
|
+
hash: "h2",
|
|
255
|
+
size: 5,
|
|
256
|
+
syncedAt: "2026-06-10",
|
|
257
|
+
direction: "down",
|
|
258
|
+
},
|
|
259
|
+
},
|
|
260
|
+
pulls: [],
|
|
261
|
+
};
|
|
262
|
+
const rewritten = normalizeJournalKeys(j);
|
|
263
|
+
expect(rewritten).toBe(2);
|
|
264
|
+
expect(
|
|
265
|
+
j.files["projects/forecast-development/forecasts/sean-frank.csv"],
|
|
266
|
+
).toBeDefined();
|
|
267
|
+
expect(j.files["docs/notes.md"]).toBeDefined();
|
|
268
|
+
// No malformed keys survive.
|
|
269
|
+
expect(
|
|
270
|
+
Object.keys(j.files).some((k) => k.includes("\\")),
|
|
271
|
+
).toBe(false);
|
|
272
|
+
// Entry payload is preserved verbatim under the new key.
|
|
273
|
+
expect(j.files["docs/notes.md"]?.hash).toBe("h2");
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
it("leaves a clean (all-POSIX) journal untouched and returns 0", () => {
|
|
277
|
+
const j: SyncJournal = {
|
|
278
|
+
version: "2",
|
|
279
|
+
lastSync: "",
|
|
280
|
+
files: {
|
|
281
|
+
"docs/a.md": { hash: "h", size: 1, syncedAt: "x", direction: "down" },
|
|
282
|
+
},
|
|
283
|
+
pulls: [],
|
|
284
|
+
};
|
|
285
|
+
const before = JSON.stringify(j);
|
|
286
|
+
const rewritten = normalizeJournalKeys(j);
|
|
287
|
+
expect(rewritten).toBe(0);
|
|
288
|
+
expect(JSON.stringify(j)).toBe(before);
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it("prefers an existing POSIX twin and drops the malformed duplicate", () => {
|
|
292
|
+
// When both forms exist, the POSIX entry is authoritative (it round-
|
|
293
|
+
// tripped through an up-to-date client). The malformed dup is discarded.
|
|
294
|
+
const j: SyncJournal = {
|
|
295
|
+
version: "2",
|
|
296
|
+
lastSync: "",
|
|
297
|
+
files: {
|
|
298
|
+
"docs/a.md": {
|
|
299
|
+
hash: "posix-wins",
|
|
300
|
+
size: 1,
|
|
301
|
+
syncedAt: "x",
|
|
302
|
+
direction: "down",
|
|
303
|
+
},
|
|
304
|
+
"docs\\a.md": {
|
|
305
|
+
hash: "backslash-loses",
|
|
306
|
+
size: 2,
|
|
307
|
+
syncedAt: "x",
|
|
308
|
+
direction: "down",
|
|
309
|
+
},
|
|
310
|
+
},
|
|
311
|
+
pulls: [],
|
|
312
|
+
};
|
|
313
|
+
normalizeJournalKeys(j);
|
|
314
|
+
expect(j.files["docs\\a.md"]).toBeUndefined();
|
|
315
|
+
expect(j.files["docs/a.md"]?.hash).toBe("posix-wins");
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
it("is idempotent — a second pass rewrites nothing", () => {
|
|
319
|
+
const j: SyncJournal = {
|
|
320
|
+
version: "2",
|
|
321
|
+
lastSync: "",
|
|
322
|
+
files: {
|
|
323
|
+
"a\\b\\c.txt": { hash: "h", size: 1, syncedAt: "x", direction: "down" },
|
|
324
|
+
},
|
|
325
|
+
pulls: [],
|
|
326
|
+
};
|
|
327
|
+
expect(normalizeJournalKeys(j)).toBe(1);
|
|
328
|
+
expect(normalizeJournalKeys(j)).toBe(0);
|
|
329
|
+
expect(j.files["a/b/c.txt"]).toBeDefined();
|
|
330
|
+
});
|
|
211
331
|
});
|
|
212
332
|
|
|
213
333
|
describe("generatePullId", () => {
|
package/src/journal.ts
CHANGED
|
@@ -18,6 +18,7 @@ import * as os from "os";
|
|
|
18
18
|
import * as path from "path";
|
|
19
19
|
import * as crypto from "crypto";
|
|
20
20
|
import type { SyncJournal, JournalEntry, PullRecord } from "./types.js";
|
|
21
|
+
import { toPosixKey } from "./s3.js";
|
|
21
22
|
|
|
22
23
|
/** Tombstone retention. 30 days in milliseconds — roughly two release cycles. */
|
|
23
24
|
export const TOMBSTONE_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
@@ -134,6 +135,42 @@ export function readJournal(slug: string): SyncJournal {
|
|
|
134
135
|
return { version: JOURNAL_VERSION_CURRENT, lastSync: "", files: {}, pulls: [] };
|
|
135
136
|
}
|
|
136
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Defuse the pre-5.47.2 Windows backslash-key landmine in a journal's `files`
|
|
140
|
+
* map. Such clients stamped keys with the OS path separator ("\\"), e.g.
|
|
141
|
+
* `projects\\forecast-development\\x.csv`. A backslash key is a live data-loss
|
|
142
|
+
* hazard for the cross-machine delete planner (Bug #9): it never matches the
|
|
143
|
+
* forward-slash remote LIST, so the planner classifies the still-present local
|
|
144
|
+
* file as remote-deleted, and `path.join(companyRoot, key)` collapses the
|
|
145
|
+
* backslashes back onto the REAL POSIX file — which the executor then unlinks
|
|
146
|
+
* (ridge incident, feedback_b8d09d0f: a single pull deleted ~36 live files,
|
|
147
|
+
* with 587 backslash keys left in the journal as a recurring landmine).
|
|
148
|
+
*
|
|
149
|
+
* Rewriting every key to its canonical POSIX form on load removes the hazard
|
|
150
|
+
* idempotently — a clean (all-POSIX) journal is returned untouched. Merge rule:
|
|
151
|
+
* if a key's POSIX twin already exists, the POSIX entry is authoritative (it
|
|
152
|
+
* round-tripped through an up-to-date client) and the malformed duplicate is
|
|
153
|
+
* dropped; otherwise the entry is moved to its POSIX key. Returns the number of
|
|
154
|
+
* keys rewritten (0 for a clean journal) for telemetry and test assertions.
|
|
155
|
+
*/
|
|
156
|
+
export function normalizeJournalKeys(journal: SyncJournal): number {
|
|
157
|
+
if (!journal.files) return 0;
|
|
158
|
+
let rewritten = 0;
|
|
159
|
+
// Snapshot keys up front — we mutate journal.files during the walk.
|
|
160
|
+
for (const key of Object.keys(journal.files)) {
|
|
161
|
+
const posix = toPosixKey(key);
|
|
162
|
+
if (posix === key) continue; // already canonical (no backslash)
|
|
163
|
+
const entry = journal.files[key];
|
|
164
|
+
delete journal.files[key];
|
|
165
|
+
rewritten++;
|
|
166
|
+
// POSIX twin already present → it wins; drop the malformed duplicate.
|
|
167
|
+
if (!(posix in journal.files)) {
|
|
168
|
+
journal.files[posix] = entry;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return rewritten;
|
|
172
|
+
}
|
|
173
|
+
|
|
137
174
|
/**
|
|
138
175
|
* Coerce any-version journal into a v2 shape. Idempotent for v2 inputs.
|
|
139
176
|
* Mutates the input and returns it for chainable use. Call this immediately
|
|
@@ -145,6 +182,10 @@ export function readJournal(slug: string): SyncJournal {
|
|
|
145
182
|
* "all" in the scope-shrink algorithm).
|
|
146
183
|
*/
|
|
147
184
|
export function migrateToV2(journal: SyncJournal): SyncJournal {
|
|
185
|
+
// Backslash-key normalization runs UNCONDITIONALLY — a poisoned journal can
|
|
186
|
+
// already carry version "2" (the landmine predates the schema bump), so this
|
|
187
|
+
// must precede the v2 early-return or already-v2 journals stay poisoned.
|
|
188
|
+
normalizeJournalKeys(journal);
|
|
148
189
|
if (journal.version === "2" && Array.isArray(journal.pulls)) {
|
|
149
190
|
return journal;
|
|
150
191
|
}
|