@cleocode/core 2026.8.5 → 2026.8.6
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.
|
@@ -50,7 +50,9 @@ export interface SupersededStoreEntry {
|
|
|
50
50
|
readonly modifiedAt: string;
|
|
51
51
|
/**
|
|
52
52
|
* Rows found in the superseded file's own task table, if it has one.
|
|
53
|
-
* `null` when the file has no such table or could not be read.
|
|
53
|
+
* `null` when the file has no such table or could not be read. A 0-byte
|
|
54
|
+
* file yields `0`, never `null` — an empty file holds zero rows by
|
|
55
|
+
* definition (T12099).
|
|
54
56
|
*/
|
|
55
57
|
readonly rowsInSuperseded: number | null;
|
|
56
58
|
/** Rows found in the LIVE store's prefixed table. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superseded-store.d.ts","sourceRoot":"","sources":["../../src/doctor/superseded-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAMH;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B
|
|
1
|
+
{"version":3,"file":"superseded-store.d.ts","sourceRoot":"","sources":["../../src/doctor/superseded-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAMH;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,8CAA8C;AAC9C,MAAM,WAAW,yBAAyB;IACxC,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;CACnD;AAgBD,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAiC7C;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,yBAAyB,CAuEnF"}
|
|
@@ -120,7 +120,11 @@ export function scanSupersededStores(projectRoot) {
|
|
|
120
120
|
// risk advising removal of something still being written.
|
|
121
121
|
if (stat.mtimeMs >= liveMtimeMs)
|
|
122
122
|
continue;
|
|
123
|
-
|
|
123
|
+
// A 0-byte file holds zero rows BY DEFINITION — bypass countRows, which
|
|
124
|
+
// would return null (nothing to open) and manufacture the "unknown number
|
|
125
|
+
// of rows" corruption signal this check exists to kill (T12099). `null`
|
|
126
|
+
// remains reserved for a NONZERO file that could not be read.
|
|
127
|
+
const rowsInSuperseded = stat.size === 0 ? 0 : countRows(path, bareTable);
|
|
124
128
|
const rowsInLive = countRows(liveStorePath, liveTable);
|
|
125
129
|
// `rowsInSuperseded === 0` must be EXPLICIT, never `?? 0`. `null` means the
|
|
126
130
|
// file could not be read — corrupt, locked, truncated, or not SQLite — and
|
|
@@ -128,17 +132,29 @@ export function scanSupersededStores(projectRoot) {
|
|
|
128
132
|
// recommend archiving precisely the file whose contents are unknown, which
|
|
129
133
|
// is the one case where being wrong loses data.
|
|
130
134
|
const safeToArchive = (rowsInLive ?? 0) > 0 && rowsInSuperseded === 0;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
`${
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
`
|
|
141
|
-
|
|
135
|
+
let reason;
|
|
136
|
+
if (stat.size === 0 && safeToArchive) {
|
|
137
|
+
reason =
|
|
138
|
+
`${file} is 0 bytes — an empty file holds zero rows by definition, so there is ` +
|
|
139
|
+
`nothing to reconcile. The live store ${LIVE_STORE_FILENAME}#${liveTable} holds ` +
|
|
140
|
+
`${rowsInLive} rows. Safe to archive.`;
|
|
141
|
+
}
|
|
142
|
+
else if (safeToArchive) {
|
|
143
|
+
reason =
|
|
144
|
+
`superseded by ${LIVE_STORE_FILENAME}: ${rowsInSuperseded ?? 0} rows in ${file}#${bareTable} ` +
|
|
145
|
+
`vs ${rowsInLive} in ${LIVE_STORE_FILENAME}#${liveTable}. Last written ` +
|
|
146
|
+
`${stat.mtime.toISOString().slice(0, 10)}, while ${LIVE_STORE_FILENAME} was written ` +
|
|
147
|
+
`${new Date(liveMtimeMs).toISOString().slice(0, 10)}. Its name is the one the docs and ` +
|
|
148
|
+
`\`cleo restore backup --file tasks.db\` still say, and snapshots are named ` +
|
|
149
|
+
`\`tasks-<ts>.db\` even though they snapshot ${LIVE_STORE_FILENAME} — so this file reads ` +
|
|
150
|
+
`as a truncated live DB when it is simply the pre-migration one.`;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
reason =
|
|
154
|
+
`predates ${LIVE_STORE_FILENAME} but still holds ${rowsInSuperseded ?? 'an unknown number of'} ` +
|
|
155
|
+
`rows in ${bareTable} (live ${liveTable}: ${rowsInLive ?? 'unreadable'}). NOT recommended for ` +
|
|
156
|
+
`removal — reconcile the contents first.`;
|
|
157
|
+
}
|
|
142
158
|
entries.push({
|
|
143
159
|
path,
|
|
144
160
|
name: file,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"superseded-store.js","sourceRoot":"","sources":["../../src/doctor/superseded-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"superseded-store.js","sourceRoot":"","sources":["../../src/doctor/superseded-store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleocode/core",
|
|
3
|
-
"version": "2026.8.
|
|
3
|
+
"version": "2026.8.6",
|
|
4
4
|
"description": "CLEO core business logic kernel — tasks, sessions, memory, orchestration, lifecycle, with bundled SQLite store",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -456,16 +456,16 @@
|
|
|
456
456
|
"write-file-atomic": "^7.0.1",
|
|
457
457
|
"yaml": "^2.8.3",
|
|
458
458
|
"zod": "^4.3.6",
|
|
459
|
-
"@cleocode/adapters": "2026.8.
|
|
460
|
-
"@cleocode/contracts": "2026.8.
|
|
461
|
-
"@cleocode/
|
|
462
|
-
"@cleocode/
|
|
463
|
-
"@cleocode/
|
|
464
|
-
"@cleocode/
|
|
465
|
-
"@cleocode/
|
|
466
|
-
"@cleocode/
|
|
467
|
-
"@cleocode/
|
|
468
|
-
"@cleocode/
|
|
459
|
+
"@cleocode/adapters": "2026.8.6",
|
|
460
|
+
"@cleocode/contracts": "2026.8.6",
|
|
461
|
+
"@cleocode/caamp": "2026.8.6",
|
|
462
|
+
"@cleocode/git-shim": "2026.8.6",
|
|
463
|
+
"@cleocode/agents": "2026.8.6",
|
|
464
|
+
"@cleocode/lafs": "2026.8.6",
|
|
465
|
+
"@cleocode/skills": "2026.8.6",
|
|
466
|
+
"@cleocode/nexus": "2026.8.6",
|
|
467
|
+
"@cleocode/paths": "2026.8.6",
|
|
468
|
+
"@cleocode/worktree": "2026.8.6"
|
|
469
469
|
},
|
|
470
470
|
"engines": {
|
|
471
471
|
"node": ">=24.16.0"
|
|
@@ -491,7 +491,7 @@
|
|
|
491
491
|
"@types/proper-lockfile": "^4.1.4",
|
|
492
492
|
"@types/tar": "^6.1.13",
|
|
493
493
|
"@types/write-file-atomic": "^4.0.3",
|
|
494
|
-
"@cleocode/utils": "2026.8.
|
|
494
|
+
"@cleocode/utils": "2026.8.6"
|
|
495
495
|
},
|
|
496
496
|
"repository": {
|
|
497
497
|
"type": "git",
|
|
@@ -500,7 +500,7 @@
|
|
|
500
500
|
},
|
|
501
501
|
"optionalDependencies": {
|
|
502
502
|
"llmtxt": "^2026.5.15",
|
|
503
|
-
"@cleocode/studio": "^2026.8.
|
|
503
|
+
"@cleocode/studio": "^2026.8.6"
|
|
504
504
|
},
|
|
505
505
|
"scripts": {
|
|
506
506
|
"build": "tsc && node scripts/copy-selfimprove-fixtures.mjs",
|
|
@@ -67,6 +67,13 @@ permissions:
|
|
|
67
67
|
contents: write
|
|
68
68
|
pull-requests: write
|
|
69
69
|
id-token: write
|
|
70
|
+
# T12094: `actions: write` is required to CREATE a workflow_dispatch event.
|
|
71
|
+
# Without it the "Trigger CI for the bump-PR" step gets
|
|
72
|
+
# HTTP 403: Resource not accessible by integration
|
|
73
|
+
# and the bump-PR opens with no checks — the exact failure this step exists to
|
|
74
|
+
# prevent. Measured on the v2026.8.5 dispatch, which is why the step warns
|
|
75
|
+
# instead of failing: the release still completed and told us precisely why.
|
|
76
|
+
actions: write
|
|
70
77
|
|
|
71
78
|
# R-207: concurrent prepare runs against the same version queue rather than
|
|
72
79
|
# collide. cancel-in-progress=false preserves in-flight work.
|
|
@@ -445,6 +452,17 @@ jobs:
|
|
|
445
452
|
- name: Trigger CI for the bump-PR
|
|
446
453
|
run: |
|
|
447
454
|
BRANCH="${{ steps.branch.outputs.name }}"
|
|
455
|
+
# The worktree-napi prebuild must be dispatched too. CI's "Worktree NAPI
|
|
456
|
+
# Prebuild Gate" looks for a prebuild run on this branch's SHA, and a
|
|
457
|
+
# run created by the GITHUB_TOKEN pull_request event comes back with
|
|
458
|
+
# conclusion `action_required` — queued pending human approval — which
|
|
459
|
+
# the gate reads as a failure. An explicit dispatch is not gated on
|
|
460
|
+
# approval, so it produces a real result.
|
|
461
|
+
if gh workflow run worktree-napi-prebuild.yml --ref "$BRANCH" 2>/dev/null; then
|
|
462
|
+
echo "Dispatched worktree-napi prebuild for $BRANCH."
|
|
463
|
+
else
|
|
464
|
+
echo "::warning::Could not dispatch worktree-napi-prebuild.yml for $BRANCH; the NAPI gate may block the bump-PR pending approval."
|
|
465
|
+
fi
|
|
448
466
|
if gh workflow run ci.yml --ref "$BRANCH"; then
|
|
449
467
|
echo "Dispatched CI for $BRANCH."
|
|
450
468
|
else
|