@cleocode/core 2026.11.1-canary.2 → 2026.11.1-canary.4
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/README.md +2 -0
- package/binaries/README.md +30 -10
- package/dist/.source-stamp.json +1 -1
- package/dist/audit/reconstruct.d.ts.map +1 -1
- package/dist/audit/reconstruct.js +3 -13
- package/dist/audit/reconstruct.js.map +1 -1
- package/dist/build-provenance.json +2 -2
- package/dist/cloud/nexus-vault.d.ts.map +1 -1
- package/dist/cloud/nexus-vault.js +3 -9
- package/dist/cloud/nexus-vault.js.map +1 -1
- package/dist/docs/docs-fts.d.ts +102 -0
- package/dist/docs/docs-fts.d.ts.map +1 -0
- package/dist/docs/docs-fts.js +276 -0
- package/dist/docs/docs-fts.js.map +1 -0
- package/dist/docs/docs-ops.d.ts +40 -5
- package/dist/docs/docs-ops.d.ts.map +1 -1
- package/dist/docs/docs-ops.js +168 -19
- package/dist/docs/docs-ops.js.map +1 -1
- package/dist/docs/docs-read-model.d.ts +41 -14
- package/dist/docs/docs-read-model.d.ts.map +1 -1
- package/dist/docs/docs-read-model.js +13 -99
- package/dist/docs/docs-read-model.js.map +1 -1
- package/dist/docs/doctor.d.ts +39 -0
- package/dist/docs/doctor.d.ts.map +1 -1
- package/dist/docs/doctor.js +111 -31
- package/dist/docs/doctor.js.map +1 -1
- package/dist/docs/lineage.d.ts +16 -1
- package/dist/docs/lineage.d.ts.map +1 -1
- package/dist/docs/lineage.js +73 -0
- package/dist/docs/lineage.js.map +1 -1
- package/dist/docs/modernize/apply.d.ts +16 -2
- package/dist/docs/modernize/apply.d.ts.map +1 -1
- package/dist/docs/modernize/apply.js +116 -28
- package/dist/docs/modernize/apply.js.map +1 -1
- package/dist/docs/modernize/guard.d.ts +27 -7
- package/dist/docs/modernize/guard.d.ts.map +1 -1
- package/dist/docs/modernize/guard.js +110 -14
- package/dist/docs/modernize/guard.js.map +1 -1
- package/dist/docs/modernize/index.d.ts +11 -2
- package/dist/docs/modernize/index.d.ts.map +1 -1
- package/dist/docs/modernize/index.js +20 -10
- package/dist/docs/modernize/index.js.map +1 -1
- package/dist/docs/modernize/plan.d.ts.map +1 -1
- package/dist/docs/modernize/plan.js +113 -5
- package/dist/docs/modernize/plan.js.map +1 -1
- package/dist/docs/modernize/rules.d.ts +92 -8
- package/dist/docs/modernize/rules.d.ts.map +1 -1
- package/dist/docs/modernize/rules.js +224 -28
- package/dist/docs/modernize/rules.js.map +1 -1
- package/dist/docs/publish-pr.d.ts.map +1 -1
- package/dist/docs/publish-pr.js +3 -1
- package/dist/docs/publish-pr.js.map +1 -1
- package/dist/gateway-client/generated/index.d.ts +2 -2
- package/dist/gateway-client/generated/index.d.ts.map +1 -1
- package/dist/gateway-client/generated/index.js +1 -1
- package/dist/gateway-client/generated/index.js.map +1 -1
- package/dist/gateway-client/generated/namespaces.gen.d.ts +1 -0
- package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -1
- package/dist/gateway-client/generated/namespaces.gen.js +2 -1
- package/dist/gateway-client/generated/namespaces.gen.js.map +1 -1
- package/dist/gateway-client/generated/sdk.gen.d.ts +5 -1
- package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -1
- package/dist/gateway-client/generated/sdk.gen.js +11 -0
- package/dist/gateway-client/generated/sdk.gen.js.map +1 -1
- package/dist/gateway-client/generated/types.gen.d.ts +54 -0
- package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
- package/dist/git/work-tree.d.ts +24 -0
- package/dist/git/work-tree.d.ts.map +1 -1
- package/dist/git/work-tree.js +12 -1
- package/dist/git/work-tree.js.map +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +13 -5
- package/dist/init.js.map +1 -1
- package/dist/internal.d.ts +1 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/memory/engine-compat.d.ts.map +1 -1
- package/dist/memory/engine-compat.js +44 -12
- package/dist/memory/engine-compat.js.map +1 -1
- package/dist/orchestration/spawn-prompt.d.ts +17 -0
- package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
- package/dist/orchestration/spawn-prompt.js +41 -3
- package/dist/orchestration/spawn-prompt.js.map +1 -1
- package/dist/orchestration/spawn.d.ts.map +1 -1
- package/dist/orchestration/spawn.js +12 -0
- package/dist/orchestration/spawn.js.map +1 -1
- package/dist/paths.d.ts +20 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/paths.js.map +1 -1
- package/dist/release/ci-evidence.d.ts +7 -3
- package/dist/release/ci-evidence.d.ts.map +1 -1
- package/dist/release/ci-evidence.js +77 -14
- package/dist/release/ci-evidence.js.map +1 -1
- package/dist/release/cut.d.ts +13 -0
- package/dist/release/cut.d.ts.map +1 -1
- package/dist/release/cut.js +63 -9
- package/dist/release/cut.js.map +1 -1
- package/dist/release/engine-ops.d.ts.map +1 -1
- package/dist/release/engine-ops.js +10 -4
- package/dist/release/engine-ops.js.map +1 -1
- package/dist/release/plan.d.ts +3 -1
- package/dist/release/plan.d.ts.map +1 -1
- package/dist/release/plan.js +4 -2
- package/dist/release/plan.js.map +1 -1
- package/dist/release/reconcile.d.ts +3 -1
- package/dist/release/reconcile.d.ts.map +1 -1
- package/dist/release/reconcile.js +18 -6
- package/dist/release/reconcile.js.map +1 -1
- package/dist/release/release-published.d.ts +27 -0
- package/dist/release/release-published.d.ts.map +1 -0
- package/dist/release/release-published.js +35 -0
- package/dist/release/release-published.js.map +1 -0
- package/dist/remote/index.js +1 -1
- package/dist/remote/index.js.map +1 -1
- package/dist/scaffold/ensure-dirs.d.ts.map +1 -1
- package/dist/scaffold/ensure-dirs.js +8 -6
- package/dist/scaffold/ensure-dirs.js.map +1 -1
- package/dist/selfimprove/draft-pr.d.ts.map +1 -1
- package/dist/selfimprove/draft-pr.js +4 -1
- package/dist/selfimprove/draft-pr.js.map +1 -1
- package/dist/skills/propose-patch.d.ts.map +1 -1
- package/dist/skills/propose-patch.js +4 -1
- package/dist/skills/propose-patch.js.map +1 -1
- package/dist/store/ac-binding-prune.d.ts +3 -2
- package/dist/store/ac-binding-prune.d.ts.map +1 -1
- package/dist/store/ac-binding-prune.js +4 -3
- package/dist/store/ac-binding-prune.js.map +1 -1
- package/dist/store/git-checkpoint.d.ts +11 -1
- package/dist/store/git-checkpoint.d.ts.map +1 -1
- package/dist/store/git-checkpoint.js +14 -3
- package/dist/store/git-checkpoint.js.map +1 -1
- package/dist/store/schema/tasks.d.ts +1 -1
- package/dist/store/schema/tasks.d.ts.map +1 -1
- package/dist/store/schema/tasks.js +2 -0
- package/dist/store/schema/tasks.js.map +1 -1
- package/dist/store/table-classification.d.ts.map +1 -1
- package/dist/store/table-classification.js +8 -0
- package/dist/store/table-classification.js.map +1 -1
- package/dist/system/dependencies.d.ts +22 -0
- package/dist/system/dependencies.d.ts.map +1 -1
- package/dist/system/dependencies.js +49 -2
- package/dist/system/dependencies.js.map +1 -1
- package/dist/system/health.d.ts.map +1 -1
- package/dist/system/health.js +3 -1
- package/dist/system/health.js.map +1 -1
- package/dist/task-work/index.d.ts.map +1 -1
- package/dist/task-work/index.js +3 -1
- package/dist/task-work/index.js.map +1 -1
- package/dist/tasks/ac-immutability.d.ts +21 -2
- package/dist/tasks/ac-immutability.d.ts.map +1 -1
- package/dist/tasks/ac-immutability.js +25 -0
- package/dist/tasks/ac-immutability.js.map +1 -1
- package/dist/tasks/ac-table.d.ts +15 -1
- package/dist/tasks/ac-table.d.ts.map +1 -1
- package/dist/tasks/ac-table.js +21 -0
- package/dist/tasks/ac-table.js.map +1 -1
- package/dist/tasks/add.d.ts +8 -0
- package/dist/tasks/add.d.ts.map +1 -1
- package/dist/tasks/add.js +12 -3
- package/dist/tasks/add.js.map +1 -1
- package/dist/tasks/change-set.d.ts.map +1 -1
- package/dist/tasks/change-set.js +92 -27
- package/dist/tasks/change-set.js.map +1 -1
- package/dist/tasks/complete.d.ts.map +1 -1
- package/dist/tasks/complete.js +23 -14
- package/dist/tasks/complete.js.map +1 -1
- package/dist/tasks/component-pr.d.ts.map +1 -1
- package/dist/tasks/component-pr.js +4 -3
- package/dist/tasks/component-pr.js.map +1 -1
- package/dist/tasks/criterion-receipt.d.ts +63 -0
- package/dist/tasks/criterion-receipt.d.ts.map +1 -0
- package/dist/tasks/criterion-receipt.js +145 -0
- package/dist/tasks/criterion-receipt.js.map +1 -0
- package/dist/tasks/done-plan.d.ts.map +1 -1
- package/dist/tasks/done-plan.js +70 -6
- package/dist/tasks/done-plan.js.map +1 -1
- package/dist/tasks/evidence.d.ts +8 -2
- package/dist/tasks/evidence.d.ts.map +1 -1
- package/dist/tasks/evidence.js +51 -15
- package/dist/tasks/evidence.js.map +1 -1
- package/dist/tasks/gate-notes.d.ts +17 -0
- package/dist/tasks/gate-notes.d.ts.map +1 -1
- package/dist/tasks/gate-notes.js.map +1 -1
- package/dist/tasks/manifest-scope.d.ts +42 -5
- package/dist/tasks/manifest-scope.d.ts.map +1 -1
- package/dist/tasks/manifest-scope.js +162 -9
- package/dist/tasks/manifest-scope.js.map +1 -1
- package/dist/tasks/merge-close.d.ts +25 -2
- package/dist/tasks/merge-close.d.ts.map +1 -1
- package/dist/tasks/merge-close.js +30 -2
- package/dist/tasks/merge-close.js.map +1 -1
- package/dist/tasks/req.d.ts +49 -0
- package/dist/tasks/req.d.ts.map +1 -1
- package/dist/tasks/req.js +156 -2
- package/dist/tasks/req.js.map +1 -1
- package/dist/tasks/verification-policy.d.ts +34 -0
- package/dist/tasks/verification-policy.d.ts.map +1 -1
- package/dist/tasks/verification-policy.js +77 -5
- package/dist/tasks/verification-policy.js.map +1 -1
- package/dist/validation/doctor/checks.d.ts +20 -0
- package/dist/validation/doctor/checks.d.ts.map +1 -1
- package/dist/validation/doctor/checks.js +112 -0
- package/dist/validation/doctor/checks.js.map +1 -1
- package/dist/validation/engine-ops.d.ts.map +1 -1
- package/dist/validation/engine-ops.js +11 -4
- package/dist/validation/engine-ops.js.map +1 -1
- package/dist/worktree/merged-cleanup.d.ts +10 -0
- package/dist/worktree/merged-cleanup.d.ts.map +1 -1
- package/dist/worktree/merged-cleanup.js +12 -1
- package/dist/worktree/merged-cleanup.js.map +1 -1
- package/package.json +12 -12
- package/templates/CLEO-INJECTION.md +1 -1
- package/templates/CLEO-REFERENCE.md +6 -2
- package/templates/git-hooks/legacy-hashes.json +2 -1
- package/templates/git-hooks/pre-commit +43 -11
|
@@ -1,36 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DocsReadModel — unified read-side query surface for the CLEO docs system.
|
|
3
|
-
*
|
|
4
|
-
* Abstracts the scattered document surfaces (the `attachments` doc registry,
|
|
5
|
-
* manifest.db blobs, and the `docs_publications` store ledger) behind one
|
|
6
|
-
* coherent read API. Agents and CLI command handlers query through this
|
|
7
|
-
* model instead of navigating the individual stores directly.
|
|
8
|
-
*
|
|
9
|
-
* Lookup axes:
|
|
10
|
-
* - slug → resolve by stable human-readable slug (from attachments.slug)
|
|
11
|
-
* - owner → resolve all docs owned by a task/session/observation
|
|
12
|
-
* - attachmentId → resolve by attachment UUID or SHA-256 content address
|
|
13
|
-
* - blobName → resolve by blob name within an owner's manifest
|
|
14
|
-
* - latest → resolve the latest version for a given slug
|
|
15
|
-
*
|
|
16
|
-
* The read model also surfaces publication status and drift classification
|
|
17
|
-
* from the `docs_publications` store ledger, which is the canonical record
|
|
18
|
-
* of which blobs have been published to git-tracked paths and whether those
|
|
19
|
-
* published files are in-sync with the backing blob store.
|
|
20
|
-
*
|
|
21
|
-
* Content reads are blob-store ONLY (T13362): the legacy
|
|
22
|
-
* `.cleo/attachments/sha256/` byte tree has no fallback path here — docs
|
|
23
|
-
* whose bytes were never mirrored/consolidated into `.cleo/blobs/blobs/`
|
|
24
|
-
* report `no-content` until migrated.
|
|
25
|
-
*
|
|
26
|
-
* @task T11049 (T10516-C2)
|
|
27
|
-
* @epic T10519 (T10516-C)
|
|
28
|
-
* @saga T10516 (SG-DOCS-CLI-SIMPLIFICATION)
|
|
29
|
-
* @see packages/core/src/store/attachment-store.ts (doc registry)
|
|
30
|
-
* @see packages/core/src/store/blob-ops.ts (manifest.db blobs via llmtxt)
|
|
31
|
-
* @see packages/core/src/docs/docs-ops.ts (publications ledger + status)
|
|
32
|
-
*/
|
|
33
|
-
import { createHash } from 'node:crypto';
|
|
34
1
|
import { getProjectRoot } from '../paths.js';
|
|
35
2
|
import { createAttachmentStore } from '../store/attachment-store.js';
|
|
36
3
|
import { blobList, blobRead, blobReadBySha } from '../store/blob-ops.js';
|
|
@@ -346,73 +313,20 @@ export class DocsReadModel {
|
|
|
346
313
|
/**
|
|
347
314
|
* Check publication status for all published docs.
|
|
348
315
|
*
|
|
349
|
-
*
|
|
350
|
-
*
|
|
351
|
-
*
|
|
316
|
+
* Delegates to {@link statusDocs} so `cleo docs status`, the doctor and
|
|
317
|
+
* every other caller share one drift classification (T14135), including the
|
|
318
|
+
* default-branch and unmerged-worktree cases.
|
|
319
|
+
*
|
|
320
|
+
* @param projectRootOverride - Store root (default: the model's project root).
|
|
321
|
+
* @param checkoutRoot - Where the mirror files are read (default: the store
|
|
322
|
+
* root); the invoking CLEO worktree when run from one (T14188).
|
|
352
323
|
*/
|
|
353
|
-
async status(projectRootOverride) {
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
}
|
|
359
|
-
const { readFile, stat } = await import('node:fs/promises');
|
|
360
|
-
const { resolve: resolvePathFn, isAbsolute: isAbs } = await import('node:path');
|
|
361
|
-
// Build blob sha cache from the manifest
|
|
362
|
-
const ownerCache = new Map();
|
|
363
|
-
async function getBlobSha(ownerId, blobName, ledgerSha) {
|
|
364
|
-
let perOwner = ownerCache.get(ownerId);
|
|
365
|
-
if (!perOwner) {
|
|
366
|
-
perOwner = new Map();
|
|
367
|
-
const rows = await blobList(ownerId, root).catch(() => []);
|
|
368
|
-
for (const row of rows)
|
|
369
|
-
perOwner.set(row.name, row.sha256);
|
|
370
|
-
ownerCache.set(ownerId, perOwner);
|
|
371
|
-
}
|
|
372
|
-
return perOwner.get(blobName) ?? ledgerSha;
|
|
373
|
-
}
|
|
374
|
-
const items = [];
|
|
375
|
-
for (const row of publications) {
|
|
376
|
-
const filePath = isAbs(row.publishedPath)
|
|
377
|
-
? row.publishedPath
|
|
378
|
-
: resolvePathFn(root, row.publishedPath);
|
|
379
|
-
const blobSha = await getBlobSha(row.ownerId, row.blobName, row.lastBlobSha);
|
|
380
|
-
let fileSha = null;
|
|
381
|
-
let exists = false;
|
|
382
|
-
try {
|
|
383
|
-
await stat(filePath);
|
|
384
|
-
exists = true;
|
|
385
|
-
}
|
|
386
|
-
catch {
|
|
387
|
-
/* missing */
|
|
388
|
-
}
|
|
389
|
-
let drift;
|
|
390
|
-
if (exists) {
|
|
391
|
-
try {
|
|
392
|
-
const data = await readFile(filePath);
|
|
393
|
-
fileSha = createHash('sha256').update(data).digest('hex');
|
|
394
|
-
drift = fileSha === blobSha ? 'in-sync' : 'modified';
|
|
395
|
-
}
|
|
396
|
-
catch {
|
|
397
|
-
drift = 'deleted';
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
else {
|
|
401
|
-
drift = 'deleted';
|
|
402
|
-
}
|
|
403
|
-
items.push({
|
|
404
|
-
ownerId: row.ownerId,
|
|
405
|
-
blobName: row.blobName,
|
|
406
|
-
publishedPath: row.publishedPath,
|
|
407
|
-
blobSha,
|
|
408
|
-
fileSha,
|
|
409
|
-
drift,
|
|
410
|
-
});
|
|
411
|
-
}
|
|
412
|
-
return {
|
|
413
|
-
items,
|
|
414
|
-
allInSync: items.every((i) => i.drift === 'in-sync'),
|
|
415
|
-
};
|
|
324
|
+
async status(projectRootOverride, checkoutRoot) {
|
|
325
|
+
const { statusDocs } = await import('./docs-ops.js');
|
|
326
|
+
return statusDocs({
|
|
327
|
+
projectRoot: projectRootOverride ?? this.projectRoot,
|
|
328
|
+
...(checkoutRoot !== undefined ? { checkoutRoot } : {}),
|
|
329
|
+
});
|
|
416
330
|
}
|
|
417
331
|
// -----------------------------------------------------------------------
|
|
418
332
|
// Private: resolution helpers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-read-model.js","sourceRoot":"","sources":["../../src/docs/docs-read-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"docs-read-model.js","sourceRoot":"","sources":["../../src/docs/docs-read-model.ts"],"names":[],"mappings":"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"}
|
package/dist/docs/doctor.d.ts
CHANGED
|
@@ -152,6 +152,19 @@ export interface DocsDoctorDiagnostic {
|
|
|
152
152
|
/** True when `count` exceeded the detail cap. */
|
|
153
153
|
readonly truncated: boolean;
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* The diagnostic classes that carry a repair, accepted by
|
|
157
|
+
* {@link DocsDoctorOptions.only} to scope a run to some of them (T14174).
|
|
158
|
+
*
|
|
159
|
+
* @task T14174
|
|
160
|
+
*/
|
|
161
|
+
export declare const DOCS_DOCTOR_REPAIR_CLASSES: readonly ["dangling-pointers", "doc-version-skew", "empty-provenance", "wikilinks-drift", "legacy-blob-coverage", "conduit-history-gaps", "publication-ledger-drift"];
|
|
162
|
+
/**
|
|
163
|
+
* A diagnostic class that carries a repair.
|
|
164
|
+
*
|
|
165
|
+
* @task T14174
|
|
166
|
+
*/
|
|
167
|
+
export type DocsDoctorRepairClass = (typeof DOCS_DOCTOR_REPAIR_CLASSES)[number];
|
|
155
168
|
/**
|
|
156
169
|
* One planned or executed repair step.
|
|
157
170
|
*
|
|
@@ -187,6 +200,16 @@ export interface DocsDoctorReport {
|
|
|
187
200
|
readonly diagnostics: readonly DocsDoctorDiagnostic[];
|
|
188
201
|
/** Repair plan (dry run) or executed repairs (apply). */
|
|
189
202
|
readonly repairs: readonly DocsDoctorRepairAction[];
|
|
203
|
+
/**
|
|
204
|
+
* Repairs per class: `planned` lists every repair entry of the class,
|
|
205
|
+
* `applied` the ones written (0 on a dry run) (T14174).
|
|
206
|
+
*/
|
|
207
|
+
readonly repairCounts: Readonly<Partial<Record<DocsDoctorRepairClass, {
|
|
208
|
+
readonly planned: number;
|
|
209
|
+
readonly applied: number;
|
|
210
|
+
}>>>;
|
|
211
|
+
/** The classes this run was scoped to, or null for every class (T14174). */
|
|
212
|
+
readonly only: readonly DocsDoctorRepairClass[] | null;
|
|
190
213
|
/** One-line human summary. */
|
|
191
214
|
readonly summary: string;
|
|
192
215
|
}
|
|
@@ -210,12 +233,28 @@ export interface DocsDoctorOptions {
|
|
|
210
233
|
readonly repair?: boolean;
|
|
211
234
|
/** Age threshold (days) for the `stale-drafts` diagnostic. Default 30. */
|
|
212
235
|
readonly olderThanDays?: number;
|
|
236
|
+
/**
|
|
237
|
+
* Scope the run to these repair classes ({@link DOCS_DOCTOR_REPAIR_CLASSES})
|
|
238
|
+
* (T14174): only their repairs are planned and, under {@link apply},
|
|
239
|
+
* written; every other class is left untouched. Diagnostics still report
|
|
240
|
+
* every class. An unknown name is refused with `E_DOCS_DOCTOR_UNKNOWN_CLASS`.
|
|
241
|
+
* The wikilinks rebuild also runs for `empty-provenance`, since a provenance
|
|
242
|
+
* backfill changes the derived edges. Cannot be combined with {@link repair}.
|
|
243
|
+
*/
|
|
244
|
+
readonly only?: readonly string[];
|
|
213
245
|
/**
|
|
214
246
|
* Path to a backup artifact created within the last
|
|
215
247
|
* {@link DOCS_DOCTOR_BACKUP_MAX_AGE_MS} milliseconds (checked via mtime).
|
|
216
248
|
* Required when {@link apply} is true.
|
|
217
249
|
*/
|
|
218
250
|
readonly backupReceiptPath?: string;
|
|
251
|
+
/**
|
|
252
|
+
* Where the published mirrors are read and git is asked (T14188): the
|
|
253
|
+
* invoking checkout, so a run from a CLEO worktree compares the store
|
|
254
|
+
* against that worktree's docs/. The store, ledger and backups stay at the
|
|
255
|
+
* project root. Default: the project root.
|
|
256
|
+
*/
|
|
257
|
+
readonly checkoutRoot?: string;
|
|
219
258
|
}
|
|
220
259
|
/**
|
|
221
260
|
* Discriminated outcome of {@link runDocsDoctor}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/docs/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmGG;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/docs/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/docs/doctor.js
CHANGED
|
@@ -115,6 +115,7 @@ import { docsAttachments } from '../store/tasks-schema.js';
|
|
|
115
115
|
import { applyConduitHistoryBackfill, planConduitHistoryBackfill, } from './conduit-history-backfill.js';
|
|
116
116
|
import { deriveDocLinks, isScannableTextMime, linksJsonOrNull, } from './derive-links.js';
|
|
117
117
|
import { DOCS_VERSIONING_AUDIT_FILE } from './docs-update.js';
|
|
118
|
+
import { assertCheckoutOfProject } from './modernize/guard.js';
|
|
118
119
|
import { deleteDocsPublication, readDocsPublications } from './publications-store.js';
|
|
119
120
|
import { deriveWikilinkEdges, rebuildDocsWikilinks } from './wikilinks.js';
|
|
120
121
|
/**
|
|
@@ -147,6 +148,25 @@ export const DOCS_DOCTOR_MAX_DETAIL_ITEMS = 50;
|
|
|
147
148
|
* @task T14117
|
|
148
149
|
*/
|
|
149
150
|
export const DOCS_DOCTOR_LEDGER_PRUNE_AUDIT_FILE = '.cleo/audit/docs-publications-prune.jsonl';
|
|
151
|
+
/**
|
|
152
|
+
* The diagnostic classes that carry a repair, accepted by
|
|
153
|
+
* {@link DocsDoctorOptions.only} to scope a run to some of them (T14174).
|
|
154
|
+
*
|
|
155
|
+
* @task T14174
|
|
156
|
+
*/
|
|
157
|
+
export const DOCS_DOCTOR_REPAIR_CLASSES = [
|
|
158
|
+
'dangling-pointers',
|
|
159
|
+
'doc-version-skew',
|
|
160
|
+
'empty-provenance',
|
|
161
|
+
'wikilinks-drift',
|
|
162
|
+
'legacy-blob-coverage',
|
|
163
|
+
'conduit-history-gaps',
|
|
164
|
+
'publication-ledger-drift',
|
|
165
|
+
];
|
|
166
|
+
/** Whether a diagnostic kind carries a repair (T14174). @internal */
|
|
167
|
+
function isRepairClass(kind) {
|
|
168
|
+
return DOCS_DOCTOR_REPAIR_CLASSES.includes(kind);
|
|
169
|
+
}
|
|
150
170
|
/**
|
|
151
171
|
* Parse a row's `attachment_json` defensively. Malformed JSON yields null —
|
|
152
172
|
* such rows are skipped by kind-scoped checks rather than failing the run.
|
|
@@ -435,12 +455,12 @@ function provePublicationGone(projectRoot, publishedPath, absPath) {
|
|
|
435
455
|
*
|
|
436
456
|
* @internal
|
|
437
457
|
*/
|
|
438
|
-
async function scanPublicationLedger(projectRoot, rows) {
|
|
458
|
+
async function scanPublicationLedger(projectRoot, rows, checkoutRoot) {
|
|
439
459
|
const ledger = await readDocsPublications(projectRoot);
|
|
440
460
|
if (ledger.length === 0)
|
|
441
461
|
return [];
|
|
442
|
-
const { statusDocs } = await import('./docs-ops.js');
|
|
443
|
-
const status = await statusDocs({ projectRoot });
|
|
462
|
+
const { resolvePublishedMirror, statusDocs } = await import('./docs-ops.js');
|
|
463
|
+
const status = await statusDocs({ projectRoot, checkoutRoot });
|
|
444
464
|
const key = (r) => `${r.ownerId}\u0000${r.blobName}\u0000${r.publishedPath}`;
|
|
445
465
|
const recordByKey = new Map(ledger.map((r) => [key(r), r]));
|
|
446
466
|
const attachmentShas = new Set(rows.map((r) => r.sha256));
|
|
@@ -459,10 +479,8 @@ async function scanPublicationLedger(projectRoot, rows) {
|
|
|
459
479
|
const record = recordByKey.get(key(item));
|
|
460
480
|
if (!record)
|
|
461
481
|
continue;
|
|
462
|
-
const absPath =
|
|
463
|
-
|
|
464
|
-
: resolve(projectRoot, record.publishedPath);
|
|
465
|
-
const rel = relative(projectRoot, absPath);
|
|
482
|
+
const absPath = resolvePublishedMirror(projectRoot, checkoutRoot, record.publishedPath);
|
|
483
|
+
const rel = relative(checkoutRoot, absPath);
|
|
466
484
|
const outsideRoot = rel.startsWith('..') || isAbsolute(rel);
|
|
467
485
|
if (item.drift === 'modified') {
|
|
468
486
|
const storeMoved = item.fileSha === record.lastBlobSha;
|
|
@@ -480,7 +498,7 @@ async function scanPublicationLedger(projectRoot, rows) {
|
|
|
480
498
|
}
|
|
481
499
|
const shas = new Set([record.lastBlobSha, item.blobSha]);
|
|
482
500
|
const protectedElsewhere = [...shas].every((sha) => attachmentShas.has(sha) || (liveLedgerShas.get(sha) ?? 0) > 0);
|
|
483
|
-
const proof = provePublicationGone(
|
|
501
|
+
const proof = provePublicationGone(checkoutRoot, record.publishedPath, absPath);
|
|
484
502
|
const blob = record.lastBlobSha.slice(0, 12);
|
|
485
503
|
let action;
|
|
486
504
|
let detail;
|
|
@@ -516,7 +534,7 @@ async function scanPublicationLedger(projectRoot, rows) {
|
|
|
516
534
|
*
|
|
517
535
|
* @internal
|
|
518
536
|
*/
|
|
519
|
-
async function scanStore(projectRoot, db, olderThanDays) {
|
|
537
|
+
async function scanStore(projectRoot, db, olderThanDays, checkoutRoot) {
|
|
520
538
|
const rows = await db.select().from(docsAttachments).all();
|
|
521
539
|
const payloadById = new Map();
|
|
522
540
|
for (const row of rows)
|
|
@@ -721,7 +739,7 @@ async function scanStore(projectRoot, db, olderThanDays) {
|
|
|
721
739
|
// planner reads the audit file, the registry and (hash-verified) bytes,
|
|
722
740
|
// and writes nothing.
|
|
723
741
|
const conduitBackfill = await planConduitHistoryBackfill(projectRoot);
|
|
724
|
-
const ledger = await scanPublicationLedger(projectRoot, rows);
|
|
742
|
+
const ledger = await scanPublicationLedger(projectRoot, rows, checkoutRoot);
|
|
725
743
|
const ledgerItems = ledger.slice(0, DOCS_DOCTOR_MAX_DETAIL_ITEMS).map((f) => ({
|
|
726
744
|
ownerId: f.record.ownerId,
|
|
727
745
|
blobName: f.record.blobName,
|
|
@@ -866,18 +884,63 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
866
884
|
},
|
|
867
885
|
};
|
|
868
886
|
}
|
|
887
|
+
// T14174 — scope to some repair classes.
|
|
888
|
+
let only = null;
|
|
889
|
+
if (opts.only !== undefined) {
|
|
890
|
+
const valid = new Set(DOCS_DOCTOR_REPAIR_CLASSES);
|
|
891
|
+
const unknown = opts.only.filter((c) => !valid.has(c));
|
|
892
|
+
if (unknown.length > 0 || opts.only.length === 0) {
|
|
893
|
+
return {
|
|
894
|
+
ok: false,
|
|
895
|
+
error: {
|
|
896
|
+
// @sync-invariant none:input-shape an argument refusal before any repair write; nothing was written
|
|
897
|
+
code: 'E_DOCS_DOCTOR_UNKNOWN_CLASS',
|
|
898
|
+
message: `docs doctor: --only ${unknown.length > 0 ? `names unknown class(es) ${unknown.join(', ')}` : 'names no class'}; ` +
|
|
899
|
+
`valid classes: ${DOCS_DOCTOR_REPAIR_CLASSES.join(', ')}`,
|
|
900
|
+
},
|
|
901
|
+
};
|
|
902
|
+
}
|
|
903
|
+
if (repair) {
|
|
904
|
+
return {
|
|
905
|
+
ok: false,
|
|
906
|
+
error: {
|
|
907
|
+
// @sync-invariant none:input-shape a flag-combination refusal before any repair write; nothing was written
|
|
908
|
+
code: 'E_DOCS_DOCTOR_FLAG_CONFLICT',
|
|
909
|
+
message: 'docs doctor: --only and --repair cannot be combined — --repair is already scoped to ' +
|
|
910
|
+
'the legacy-blob backfill; use `--apply --only legacy-blob-coverage` instead.',
|
|
911
|
+
},
|
|
912
|
+
};
|
|
913
|
+
}
|
|
914
|
+
only = [...new Set(opts.only)].filter((c) => valid.has(c));
|
|
915
|
+
}
|
|
916
|
+
const inScope = (kind) => only === null || only.includes(kind);
|
|
917
|
+
const rebuildWikilinks = inScope('wikilinks-drift') || inScope('empty-provenance');
|
|
869
918
|
if (mutate) {
|
|
870
919
|
const refusal = checkBackupReceipt(opts.backupReceiptPath);
|
|
871
920
|
if (refusal)
|
|
872
921
|
return { ok: false, error: refusal };
|
|
873
922
|
}
|
|
874
923
|
const db = await getDb(projectRoot);
|
|
875
|
-
const
|
|
924
|
+
const checkoutRoot = opts.checkoutRoot ?? projectRoot;
|
|
925
|
+
try {
|
|
926
|
+
assertCheckoutOfProject(projectRoot, checkoutRoot);
|
|
927
|
+
}
|
|
928
|
+
catch (err) {
|
|
929
|
+
return {
|
|
930
|
+
ok: false,
|
|
931
|
+
error: {
|
|
932
|
+
// @sync-invariant none:input-shape a checkout of another repository is refused before any read or repair write
|
|
933
|
+
code: 'E_DOCS_DOCTOR_FOREIGN_CHECKOUT',
|
|
934
|
+
message: err instanceof Error ? err.message : String(err),
|
|
935
|
+
},
|
|
936
|
+
};
|
|
937
|
+
}
|
|
938
|
+
const pre = await scanStore(projectRoot, db, olderThanDays, checkoutRoot);
|
|
876
939
|
const repairs = [];
|
|
877
940
|
// T13653: in repair mode ONLY the blob backfill runs — apply mode plans it
|
|
878
941
|
// alongside the other repairs.
|
|
879
942
|
if (!repair) {
|
|
880
|
-
for (const { row, path } of pre.dangling.archivable) {
|
|
943
|
+
for (const { row, path } of inScope('dangling-pointers') ? pre.dangling.archivable : []) {
|
|
881
944
|
repairs.push({
|
|
882
945
|
kind: 'dangling-pointers',
|
|
883
946
|
action: 'archive-dangling',
|
|
@@ -887,7 +950,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
887
950
|
detail: `marked-dangling: local-file target missing (${path}) → lifecycle_status = 'archived'`,
|
|
888
951
|
});
|
|
889
952
|
}
|
|
890
|
-
for (const { row, path } of pre.dangling.clearable) {
|
|
953
|
+
for (const { row, path } of inScope('dangling-pointers') ? pre.dangling.clearable : []) {
|
|
891
954
|
repairs.push({
|
|
892
955
|
kind: 'dangling-pointers',
|
|
893
956
|
action: 'clear-stale-path',
|
|
@@ -898,7 +961,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
898
961
|
`(sha256 ${row.sha256.slice(0, 12)}…)`,
|
|
899
962
|
});
|
|
900
963
|
}
|
|
901
|
-
for (const { row, expected } of pre.skewed) {
|
|
964
|
+
for (const { row, expected } of inScope('doc-version-skew') ? pre.skewed : []) {
|
|
902
965
|
repairs.push({
|
|
903
966
|
kind: 'doc-version-skew',
|
|
904
967
|
action: 'set-doc-version',
|
|
@@ -908,7 +971,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
908
971
|
detail: `audit-note: docVersion ${row.docVersion} → ${expected} (audit log revisions + 1)`,
|
|
909
972
|
});
|
|
910
973
|
}
|
|
911
|
-
for (const { row, derived } of pre.backfillable) {
|
|
974
|
+
for (const { row, derived } of inScope('empty-provenance') ? pre.backfillable : []) {
|
|
912
975
|
const derivedCount = derived.topics.length + derived.relatedTasks.length;
|
|
913
976
|
repairs.push({
|
|
914
977
|
kind: 'empty-provenance',
|
|
@@ -921,7 +984,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
921
984
|
: 'no derivable topics or task mentions — columns stay NULL',
|
|
922
985
|
});
|
|
923
986
|
}
|
|
924
|
-
if (pre.needsWikilinksRebuild) {
|
|
987
|
+
if (pre.needsWikilinksRebuild && rebuildWikilinks) {
|
|
925
988
|
repairs.push({
|
|
926
989
|
kind: 'wikilinks-drift',
|
|
927
990
|
action: 'rebuild-wikilinks',
|
|
@@ -935,7 +998,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
935
998
|
// dry-run/apply mode; executed only under --apply (the --repair mode
|
|
936
999
|
// stays the T13653 blob-backfill-only fast path). A complete doc with
|
|
937
1000
|
// unrecoverable gaps still gets an entry so the gap stays explained.
|
|
938
|
-
for (const plan of pre.conduitBackfill) {
|
|
1001
|
+
for (const plan of inScope('conduit-history-gaps') ? pre.conduitBackfill : []) {
|
|
939
1002
|
if (plan.complete && plan.gaps.length === 0)
|
|
940
1003
|
continue;
|
|
941
1004
|
if (plan.conflict) {
|
|
@@ -975,7 +1038,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
975
1038
|
}
|
|
976
1039
|
// T14117 — publication-ledger drift: prune protected deleted rows; every
|
|
977
1040
|
// other finding is a plan-only proposal.
|
|
978
|
-
for (const finding of pre.ledger) {
|
|
1041
|
+
for (const finding of inScope('publication-ledger-drift') ? pre.ledger : []) {
|
|
979
1042
|
repairs.push({
|
|
980
1043
|
kind: 'publication-ledger-drift',
|
|
981
1044
|
action: finding.action,
|
|
@@ -984,7 +1047,8 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
984
1047
|
});
|
|
985
1048
|
}
|
|
986
1049
|
}
|
|
987
|
-
|
|
1050
|
+
const blobBackfillable = inScope('legacy-blob-coverage') ? pre.blobBackfillable : [];
|
|
1051
|
+
for (const candidate of blobBackfillable) {
|
|
988
1052
|
repairs.push({
|
|
989
1053
|
kind: 'legacy-blob-coverage',
|
|
990
1054
|
action: 'backfill-blob-bytes',
|
|
@@ -1006,7 +1070,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1006
1070
|
.map((r, i) => ({ r, i }))
|
|
1007
1071
|
.filter(({ r }) => r.kind === 'legacy-blob-coverage' && r.action === 'backfill-blob-bytes')
|
|
1008
1072
|
.map(({ i }) => i);
|
|
1009
|
-
for (const [n, candidate] of
|
|
1073
|
+
for (const [n, candidate] of blobBackfillable.entries()) {
|
|
1010
1074
|
if (candidate.sourcePath === null)
|
|
1011
1075
|
continue;
|
|
1012
1076
|
const outcome = await backfillBlobStoreBytes(cleoDir, candidate.sha256, candidate.sourcePath);
|
|
@@ -1030,7 +1094,7 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1030
1094
|
// backfill above so the bytes the new rows address are mirrored first;
|
|
1031
1095
|
// annotate each repair entry with its executed outcome (zip by slug).
|
|
1032
1096
|
const conduitBySlug = new Map();
|
|
1033
|
-
for (const plan of pre.conduitBackfill) {
|
|
1097
|
+
for (const plan of inScope('conduit-history-gaps') ? pre.conduitBackfill : []) {
|
|
1034
1098
|
if (plan.toBackfill.length === 0 || plan.conflict)
|
|
1035
1099
|
continue;
|
|
1036
1100
|
const result = await applyConduitHistoryBackfill(projectRoot, plan);
|
|
@@ -1047,14 +1111,14 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1047
1111
|
detail: `${repair.detail} → executed: ${outcome.inserted} row(s) inserted, ${outcome.gaps} gap(s)`,
|
|
1048
1112
|
};
|
|
1049
1113
|
}
|
|
1050
|
-
for (const { row, expected } of pre.skewed) {
|
|
1114
|
+
for (const { row, expected } of inScope('doc-version-skew') ? pre.skewed : []) {
|
|
1051
1115
|
await db
|
|
1052
1116
|
.update(docsAttachments)
|
|
1053
1117
|
.set({ docVersion: expected })
|
|
1054
1118
|
.where(eq(docsAttachments.id, row.id))
|
|
1055
1119
|
.run();
|
|
1056
1120
|
}
|
|
1057
|
-
for (const { row, derived } of pre.backfillable) {
|
|
1121
|
+
for (const { row, derived } of inScope('empty-provenance') ? pre.backfillable : []) {
|
|
1058
1122
|
if (derived.topics.length + derived.relatedTasks.length === 0)
|
|
1059
1123
|
continue;
|
|
1060
1124
|
await db
|
|
@@ -1066,14 +1130,14 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1066
1130
|
.where(eq(docsAttachments.id, row.id))
|
|
1067
1131
|
.run();
|
|
1068
1132
|
}
|
|
1069
|
-
for (const { row } of pre.dangling.archivable) {
|
|
1133
|
+
for (const { row } of inScope('dangling-pointers') ? pre.dangling.archivable : []) {
|
|
1070
1134
|
await db
|
|
1071
1135
|
.update(docsAttachments)
|
|
1072
1136
|
.set({ lifecycleStatus: 'archived' })
|
|
1073
1137
|
.where(eq(docsAttachments.id, row.id))
|
|
1074
1138
|
.run();
|
|
1075
1139
|
}
|
|
1076
|
-
for (const { row, payload } of pre.dangling.clearable) {
|
|
1140
|
+
for (const { row, payload } of inScope('dangling-pointers') ? pre.dangling.clearable : []) {
|
|
1077
1141
|
const cleaned = { ...payload };
|
|
1078
1142
|
delete cleaned['path'];
|
|
1079
1143
|
await db
|
|
@@ -1082,10 +1146,12 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1082
1146
|
.where(eq(docsAttachments.id, row.id))
|
|
1083
1147
|
.run();
|
|
1084
1148
|
}
|
|
1085
|
-
if (pre.needsWikilinksRebuild) {
|
|
1149
|
+
if (pre.needsWikilinksRebuild && rebuildWikilinks) {
|
|
1086
1150
|
await rebuildDocsWikilinks({ projectRoot });
|
|
1087
1151
|
}
|
|
1088
|
-
const prunable =
|
|
1152
|
+
const prunable = inScope('publication-ledger-drift')
|
|
1153
|
+
? pre.ledger.filter((f) => f.prunable)
|
|
1154
|
+
: [];
|
|
1089
1155
|
if (prunable.length > 0) {
|
|
1090
1156
|
const auditPath = join(projectRoot, DOCS_DOCTOR_LEDGER_PRUNE_AUDIT_FILE);
|
|
1091
1157
|
mkdirSync(dirname(auditPath), { recursive: true });
|
|
@@ -1101,24 +1167,36 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1101
1167
|
// T13560: on a mutating run, re-scan so the envelope's diagnostics (and the
|
|
1102
1168
|
// summary computed from them) describe POST-repair state, consistent with
|
|
1103
1169
|
// a follow-up dry run. Dry runs keep the pre-repair scan.
|
|
1104
|
-
const post = mutate ? await scanStore(projectRoot, db, olderThanDays) : pre;
|
|
1170
|
+
const post = mutate ? await scanStore(projectRoot, db, olderThanDays, checkoutRoot) : pre;
|
|
1105
1171
|
const findings = post.diagnostics.reduce((sum, d) => sum + d.count, 0);
|
|
1106
1172
|
// T13727 — surface the conduit backfill counts in the one-line summary so
|
|
1107
1173
|
// operators see backfilled/skipped/gap per run without reading the report.
|
|
1108
1174
|
const conduitActionable = pre.conduitBackfill.filter((p) => !p.complete || p.gaps.length > 0 || p.conflict);
|
|
1109
1175
|
const conduitGapTotal = conduitActionable.reduce((s, p) => s + p.gaps.length, 0);
|
|
1110
1176
|
const conduitConflictTotal = conduitActionable.filter((p) => p.conflict).length;
|
|
1111
|
-
const conduitBackfillNote = repair || conduitActionable.length === 0
|
|
1177
|
+
const conduitBackfillNote = repair || !inScope('conduit-history-gaps') || conduitActionable.length === 0
|
|
1112
1178
|
? ''
|
|
1113
1179
|
: apply
|
|
1114
1180
|
? `; conduit history: ${conduitActionable.reduce((s, p) => s + p.toBackfill.length, 0)} version(s) backfilled across ${conduitActionable.length} doc(s) (${conduitGapTotal} gap(s) unrecoverable, ${conduitConflictTotal} conflict(s))`
|
|
1115
1181
|
: `; conduit history: ${conduitActionable.length} doc(s) need attention (${conduitActionable.reduce((s, p) => s + p.toBackfill.length, 0)} version(s) to backfill, ${conduitGapTotal} gap(s) unrecoverable, ${conduitConflictTotal} conflict(s))`;
|
|
1182
|
+
const repairCounts = {};
|
|
1183
|
+
for (const r of repairs) {
|
|
1184
|
+
const kind = r.kind;
|
|
1185
|
+
if (!isRepairClass(kind))
|
|
1186
|
+
continue;
|
|
1187
|
+
const entry = repairCounts[kind] ?? { planned: 0, applied: 0 };
|
|
1188
|
+
entry.planned += 1;
|
|
1189
|
+
if (r.applied)
|
|
1190
|
+
entry.applied += 1;
|
|
1191
|
+
repairCounts[kind] = entry;
|
|
1192
|
+
}
|
|
1193
|
+
const scopeNote = only === null ? '' : ` (only: ${only.join(', ')})`;
|
|
1116
1194
|
const summary = repair
|
|
1117
1195
|
? `docs doctor repaired ${repairs.filter((r) => r.applied).length} blob backfill(s); ` +
|
|
1118
1196
|
`${post.diagnostics.find((d) => d.kind === 'legacy-blob-coverage')?.count ?? 0} sha(s) still missing post-repair`
|
|
1119
1197
|
: apply
|
|
1120
|
-
? `docs doctor applied ${repairs.filter((r) => r.applied).length} repair(s); ${findings} finding(s) remain post-repair${conduitBackfillNote}`
|
|
1121
|
-
: `docs doctor found ${findings} finding(s); ${repairs.length} repair(s) planned (dry-run — pass --apply to execute)${conduitBackfillNote}`;
|
|
1198
|
+
? `docs doctor applied ${repairs.filter((r) => r.applied).length} repair(s)${scopeNote}; ${findings} finding(s) remain post-repair${conduitBackfillNote}`
|
|
1199
|
+
: `docs doctor found ${findings} finding(s); ${repairs.length} repair(s) planned${scopeNote} (dry-run — pass --apply to execute)${conduitBackfillNote}`;
|
|
1122
1200
|
return {
|
|
1123
1201
|
ok: true,
|
|
1124
1202
|
report: {
|
|
@@ -1127,6 +1205,8 @@ export async function runDocsDoctor(projectRoot, opts = {}) {
|
|
|
1127
1205
|
backupReceiptPath: mutate ? (opts.backupReceiptPath ?? null) : null,
|
|
1128
1206
|
diagnostics: post.diagnostics,
|
|
1129
1207
|
repairs,
|
|
1208
|
+
repairCounts,
|
|
1209
|
+
only,
|
|
1130
1210
|
summary,
|
|
1131
1211
|
},
|
|
1132
1212
|
};
|