cclaw-cli 0.49.0 → 0.51.1
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 +57 -84
- package/dist/artifact-linter.d.ts +4 -0
- package/dist/artifact-linter.js +24 -3
- package/dist/cli.d.ts +1 -19
- package/dist/cli.js +49 -491
- package/dist/constants.d.ts +2 -13
- package/dist/constants.js +1 -43
- package/dist/content/closeout-guidance.d.ts +14 -0
- package/dist/content/closeout-guidance.js +42 -0
- package/dist/content/core-agents.js +55 -17
- package/dist/content/decision-protocol.d.ts +12 -0
- package/dist/content/decision-protocol.js +20 -0
- package/dist/content/diff-command.d.ts +1 -2
- package/dist/content/diff-command.js +8 -94
- package/dist/content/examples.d.ts +4 -10
- package/dist/content/examples.js +10 -20
- package/dist/content/hook-events.js +2 -2
- package/dist/content/hook-inline-snippets.d.ts +5 -2
- package/dist/content/hook-inline-snippets.js +33 -1
- package/dist/content/hook-manifest.d.ts +3 -4
- package/dist/content/hook-manifest.js +11 -12
- package/dist/content/hooks.js +44 -21
- package/dist/content/ideate-command.d.ts +2 -0
- package/dist/content/ideate-command.js +34 -25
- package/dist/content/iron-laws.d.ts +5 -5
- package/dist/content/iron-laws.js +5 -5
- package/dist/content/language-policy.d.ts +2 -0
- package/dist/content/language-policy.js +13 -0
- package/dist/content/learnings.d.ts +3 -4
- package/dist/content/learnings.js +26 -50
- package/dist/content/meta-skill.js +33 -22
- package/dist/content/next-command.js +41 -38
- package/dist/content/node-hooks.js +17 -345
- package/dist/content/opencode-plugin.js +5 -103
- package/dist/content/research-playbooks.js +14 -14
- package/dist/content/review-loop.d.ts +2 -0
- package/dist/content/review-loop.js +8 -0
- package/dist/content/session-hooks.js +15 -47
- package/dist/content/skills.d.ts +0 -5
- package/dist/content/skills.js +55 -128
- package/dist/content/stage-common-guidance.d.ts +0 -1
- package/dist/content/stage-common-guidance.js +17 -14
- package/dist/content/stage-schema.d.ts +26 -1
- package/dist/content/stage-schema.js +121 -40
- package/dist/content/stages/_lint-metadata/index.js +9 -15
- package/dist/content/stages/brainstorm.js +22 -43
- package/dist/content/stages/design.js +37 -57
- package/dist/content/stages/plan.js +22 -13
- package/dist/content/stages/review.js +24 -27
- package/dist/content/stages/scope.js +34 -46
- package/dist/content/stages/ship.js +7 -4
- package/dist/content/stages/spec.js +20 -9
- package/dist/content/stages/tdd.js +64 -44
- package/dist/content/start-command.js +13 -12
- package/dist/content/status-command.d.ts +2 -7
- package/dist/content/status-command.js +19 -146
- package/dist/content/subagents.d.ts +0 -5
- package/dist/content/subagents.js +51 -28
- package/dist/content/templates.d.ts +1 -1
- package/dist/content/templates.js +126 -135
- package/dist/content/track-render-context.d.ts +17 -0
- package/dist/content/track-render-context.js +44 -0
- package/dist/content/tree-command.d.ts +1 -2
- package/dist/content/tree-command.js +4 -87
- package/dist/content/utility-skills.d.ts +2 -29
- package/dist/content/utility-skills.js +2 -1534
- package/dist/content/view-command.js +31 -11
- package/dist/delegation.d.ts +1 -1
- package/dist/delegation.js +5 -15
- package/dist/doctor-registry.js +20 -21
- package/dist/doctor.js +88 -344
- package/dist/flow-state.d.ts +3 -0
- package/dist/flow-state.js +2 -0
- package/dist/harness-adapters.d.ts +1 -1
- package/dist/harness-adapters.js +51 -58
- package/dist/install.js +128 -358
- package/dist/internal/advance-stage.js +3 -9
- package/dist/internal/compound-readiness.d.ts +1 -1
- package/dist/internal/compound-readiness.js +1 -1
- package/dist/internal/tdd-loop-status.d.ts +1 -1
- package/dist/internal/tdd-loop-status.js +1 -1
- package/dist/knowledge-store.d.ts +16 -10
- package/dist/knowledge-store.js +51 -15
- package/dist/policy.js +16 -105
- package/dist/run-archive.d.ts +4 -6
- package/dist/run-archive.js +15 -20
- package/dist/run-persistence.d.ts +2 -2
- package/dist/run-persistence.js +3 -9
- package/package.json +1 -2
- package/dist/content/archive-command.d.ts +0 -2
- package/dist/content/archive-command.js +0 -124
- package/dist/content/compound-command.d.ts +0 -5
- package/dist/content/compound-command.js +0 -193
- package/dist/content/contexts.d.ts +0 -18
- package/dist/content/contexts.js +0 -24
- package/dist/content/contracts.d.ts +0 -2
- package/dist/content/contracts.js +0 -51
- package/dist/content/doctor-references.d.ts +0 -2
- package/dist/content/doctor-references.js +0 -150
- package/dist/content/eval-scaffold.d.ts +0 -15
- package/dist/content/eval-scaffold.js +0 -370
- package/dist/content/feature-command.d.ts +0 -2
- package/dist/content/feature-command.js +0 -123
- package/dist/content/flow-map.d.ts +0 -23
- package/dist/content/flow-map.js +0 -134
- package/dist/content/harness-doc.d.ts +0 -2
- package/dist/content/harness-doc.js +0 -202
- package/dist/content/harness-playbooks.d.ts +0 -24
- package/dist/content/harness-playbooks.js +0 -393
- package/dist/content/harness-tool-refs.d.ts +0 -20
- package/dist/content/harness-tool-refs.js +0 -268
- package/dist/content/ops-command.d.ts +0 -2
- package/dist/content/ops-command.js +0 -71
- package/dist/content/protocols.d.ts +0 -7
- package/dist/content/protocols.js +0 -215
- package/dist/content/retro-command.d.ts +0 -2
- package/dist/content/retro-command.js +0 -165
- package/dist/content/rewind-command.d.ts +0 -2
- package/dist/content/rewind-command.js +0 -106
- package/dist/content/tdd-log-command.d.ts +0 -2
- package/dist/content/tdd-log-command.js +0 -85
- package/dist/eval/agents/single-shot.d.ts +0 -27
- package/dist/eval/agents/single-shot.js +0 -79
- package/dist/eval/agents/with-tools.d.ts +0 -44
- package/dist/eval/agents/with-tools.js +0 -261
- package/dist/eval/agents/workflow.d.ts +0 -31
- package/dist/eval/agents/workflow.js +0 -155
- package/dist/eval/baseline.d.ts +0 -38
- package/dist/eval/baseline.js +0 -282
- package/dist/eval/config-loader.d.ts +0 -14
- package/dist/eval/config-loader.js +0 -395
- package/dist/eval/corpus.d.ts +0 -30
- package/dist/eval/corpus.js +0 -330
- package/dist/eval/cost-guard.d.ts +0 -102
- package/dist/eval/cost-guard.js +0 -190
- package/dist/eval/diff.d.ts +0 -64
- package/dist/eval/diff.js +0 -323
- package/dist/eval/llm-client.d.ts +0 -176
- package/dist/eval/llm-client.js +0 -267
- package/dist/eval/mode.d.ts +0 -28
- package/dist/eval/mode.js +0 -61
- package/dist/eval/progress.d.ts +0 -83
- package/dist/eval/progress.js +0 -59
- package/dist/eval/report.d.ts +0 -11
- package/dist/eval/report.js +0 -181
- package/dist/eval/rubric-loader.d.ts +0 -20
- package/dist/eval/rubric-loader.js +0 -143
- package/dist/eval/runner.d.ts +0 -81
- package/dist/eval/runner.js +0 -746
- package/dist/eval/runs.d.ts +0 -41
- package/dist/eval/runs.js +0 -114
- package/dist/eval/sandbox.d.ts +0 -38
- package/dist/eval/sandbox.js +0 -137
- package/dist/eval/tools/glob.d.ts +0 -2
- package/dist/eval/tools/glob.js +0 -163
- package/dist/eval/tools/grep.d.ts +0 -2
- package/dist/eval/tools/grep.js +0 -152
- package/dist/eval/tools/index.d.ts +0 -7
- package/dist/eval/tools/index.js +0 -35
- package/dist/eval/tools/read.d.ts +0 -2
- package/dist/eval/tools/read.js +0 -122
- package/dist/eval/tools/types.d.ts +0 -49
- package/dist/eval/tools/types.js +0 -41
- package/dist/eval/tools/write.d.ts +0 -2
- package/dist/eval/tools/write.js +0 -92
- package/dist/eval/types.d.ts +0 -561
- package/dist/eval/types.js +0 -47
- package/dist/eval/verifiers/judge.d.ts +0 -40
- package/dist/eval/verifiers/judge.js +0 -256
- package/dist/eval/verifiers/rules.d.ts +0 -24
- package/dist/eval/verifiers/rules.js +0 -218
- package/dist/eval/verifiers/structural.d.ts +0 -14
- package/dist/eval/verifiers/structural.js +0 -171
- package/dist/eval/verifiers/traceability.d.ts +0 -23
- package/dist/eval/verifiers/traceability.js +0 -84
- package/dist/eval/verifiers/workflow-consistency.d.ts +0 -21
- package/dist/eval/verifiers/workflow-consistency.js +0 -225
- package/dist/eval/workflow-corpus.d.ts +0 -7
- package/dist/eval/workflow-corpus.js +0 -207
- package/dist/feature-system.d.ts +0 -42
- package/dist/feature-system.js +0 -432
- package/dist/internal/knowledge-digest.d.ts +0 -7
- package/dist/internal/knowledge-digest.js +0 -93
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { RUNTIME_ROOT } from "../constants.js";
|
|
2
|
+
import { diffSubcommandMarkdown } from "./diff-command.js";
|
|
3
|
+
import { statusSubcommandMarkdown } from "./status-command.js";
|
|
4
|
+
import { treeSubcommandMarkdown } from "./tree-command.js";
|
|
5
|
+
import { conversationLanguagePolicyMarkdown } from "./language-policy.js";
|
|
2
6
|
const VIEW_SKILL_FOLDER = "flow-view";
|
|
3
7
|
const VIEW_SKILL_NAME = "flow-view";
|
|
4
8
|
export function viewCommandContract() {
|
|
@@ -11,20 +15,21 @@ Unified read-only command surface for flow visibility.
|
|
|
11
15
|
Subcommands:
|
|
12
16
|
- \`/cc-view\` or \`/cc-view status\` -> status snapshot
|
|
13
17
|
- \`/cc-view tree\` -> structural flow tree
|
|
14
|
-
- \`/cc-view diff\` ->
|
|
18
|
+
- \`/cc-view diff\` -> read-only git delta map
|
|
15
19
|
|
|
16
20
|
## HARD-GATE
|
|
17
21
|
|
|
22
|
+
${conversationLanguagePolicyMarkdown()}
|
|
18
23
|
- \`/cc-view\` is strictly read-only at wrapper level.
|
|
19
|
-
- Do not mutate flow-state
|
|
24
|
+
- Do not mutate flow-state or derived state from any subcommand.
|
|
20
25
|
|
|
21
26
|
## Routing
|
|
22
27
|
|
|
23
28
|
1. Parse subcommand (default \`status\`).
|
|
24
29
|
2. Route:
|
|
25
|
-
- \`status\` ->
|
|
26
|
-
- \`tree\` ->
|
|
27
|
-
- \`diff\` ->
|
|
30
|
+
- \`status\` -> use the **Status Subcommand** section in \`${RUNTIME_ROOT}/skills/${VIEW_SKILL_FOLDER}/SKILL.md\`
|
|
31
|
+
- \`tree\` -> use the **Tree Subcommand** section in \`${RUNTIME_ROOT}/skills/${VIEW_SKILL_FOLDER}/SKILL.md\`
|
|
32
|
+
- \`diff\` -> use the **Diff Subcommand** section in \`${RUNTIME_ROOT}/skills/${VIEW_SKILL_FOLDER}/SKILL.md\`
|
|
28
33
|
3. Unknown subcommand -> print supported values and stop.
|
|
29
34
|
|
|
30
35
|
## Headless mode
|
|
@@ -32,7 +37,7 @@ Subcommands:
|
|
|
32
37
|
For machine orchestration, emit one JSON envelope:
|
|
33
38
|
|
|
34
39
|
\`\`\`json
|
|
35
|
-
{"version":"1","kind":"stage-output","stage":"
|
|
40
|
+
{"version":"1","kind":"stage-output","stage":"non-flow","payload":{"command":"/cc-view","subcommand":"status","summary":"<short>"},"emittedAt":"<ISO-8601>"}
|
|
36
41
|
\`\`\`
|
|
37
42
|
|
|
38
43
|
Validate envelopes with:
|
|
@@ -44,9 +49,12 @@ Validate envelopes with:
|
|
|
44
49
|
`;
|
|
45
50
|
}
|
|
46
51
|
export function viewCommandSkillMarkdown() {
|
|
52
|
+
const status = statusSubcommandMarkdown();
|
|
53
|
+
const tree = treeSubcommandMarkdown();
|
|
54
|
+
const diff = diffSubcommandMarkdown();
|
|
47
55
|
return `---
|
|
48
56
|
name: ${VIEW_SKILL_NAME}
|
|
49
|
-
description: "Unified read-only view
|
|
57
|
+
description: "Unified read-only view skill for status/tree/diff flow visibility commands."
|
|
50
58
|
---
|
|
51
59
|
|
|
52
60
|
# /cc-view
|
|
@@ -59,10 +67,22 @@ Wrapper is read-only and dispatch-only. It must not mutate flow state directly.
|
|
|
59
67
|
|
|
60
68
|
1. Parse optional subcommand token:
|
|
61
69
|
- missing -> \`status\`
|
|
62
|
-
- \`status\` ->
|
|
63
|
-
- \`tree\` ->
|
|
64
|
-
- \`diff\` ->
|
|
65
|
-
2. Execute the
|
|
70
|
+
- \`status\` -> run **Status Subcommand** below
|
|
71
|
+
- \`tree\` -> run **Tree Subcommand** below
|
|
72
|
+
- \`diff\` -> run **Diff Subcommand** below
|
|
73
|
+
2. Execute only the chosen subcommand section.
|
|
66
74
|
3. Return concise output and suggest \`/cc-view <subcommand>\` variants for navigation.
|
|
75
|
+
|
|
76
|
+
## Status Subcommand
|
|
77
|
+
|
|
78
|
+
${status}
|
|
79
|
+
|
|
80
|
+
## Tree Subcommand
|
|
81
|
+
|
|
82
|
+
${tree}
|
|
83
|
+
|
|
84
|
+
## Diff Subcommand
|
|
85
|
+
|
|
86
|
+
${diff}
|
|
67
87
|
`;
|
|
68
88
|
}
|
package/dist/delegation.d.ts
CHANGED
|
@@ -70,7 +70,7 @@ export type DelegationLedger = {
|
|
|
70
70
|
};
|
|
71
71
|
/**
|
|
72
72
|
* Heuristic: does a changed file path strongly imply a trust-boundary
|
|
73
|
-
* surface? Used
|
|
73
|
+
* surface? Used by tests and prompt guidance for risk-triggered review.
|
|
74
74
|
*
|
|
75
75
|
* Matches authN/Z, credentials, crypto, policy, or explicit sanitization
|
|
76
76
|
* or injection handling. Intentionally excludes broad terms like `input`
|
package/dist/delegation.js
CHANGED
|
@@ -55,7 +55,7 @@ async function resolveReviewDiffBase(projectRoot) {
|
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Heuristic: does a changed file path strongly imply a trust-boundary
|
|
58
|
-
* surface? Used
|
|
58
|
+
* surface? Used by tests and prompt guidance for risk-triggered review.
|
|
59
59
|
*
|
|
60
60
|
* Matches authN/Z, credentials, crypto, policy, or explicit sanitization
|
|
61
61
|
* or injection handling. Intentionally excludes broad terms like `input`
|
|
@@ -69,8 +69,7 @@ async function detectReviewTriggers(projectRoot) {
|
|
|
69
69
|
const empty = {
|
|
70
70
|
changedFiles: 0,
|
|
71
71
|
changedLines: 0,
|
|
72
|
-
trustBoundaryChanged: false
|
|
73
|
-
requireAdversarialReviewer: false
|
|
72
|
+
trustBoundaryChanged: false
|
|
74
73
|
};
|
|
75
74
|
const base = await resolveReviewDiffBase(projectRoot);
|
|
76
75
|
if (!base) {
|
|
@@ -94,12 +93,10 @@ async function detectReviewTriggers(projectRoot) {
|
|
|
94
93
|
.map((line) => line.trim())
|
|
95
94
|
.filter((line) => line.length > 0);
|
|
96
95
|
const trustBoundaryChanged = changedPaths.some((p) => isTrustBoundaryPath(p));
|
|
97
|
-
const requireAdversarialReviewer = changedLines > 100 || changedFiles > 10 || trustBoundaryChanged;
|
|
98
96
|
return {
|
|
99
97
|
changedFiles,
|
|
100
98
|
changedLines,
|
|
101
|
-
trustBoundaryChanged
|
|
102
|
-
requireAdversarialReviewer
|
|
99
|
+
trustBoundaryChanged
|
|
103
100
|
};
|
|
104
101
|
}
|
|
105
102
|
catch {
|
|
@@ -277,20 +274,13 @@ export async function checkMandatoryDelegations(projectRoot, stage, options = {}
|
|
|
277
274
|
const harnesses = config?.harnesses ?? [];
|
|
278
275
|
const fallbacks = harnesses.map((h) => HARNESS_ADAPTERS[h].capabilities.subagentFallback);
|
|
279
276
|
const expectedMode = expectedFulfillmentMode(fallbacks);
|
|
280
|
-
const reviewTriggers = stage === "review" ? await detectReviewTriggers(projectRoot) : null;
|
|
281
277
|
for (const agent of mandatory) {
|
|
282
278
|
const rows = forRun.filter((e) => e.agent === agent);
|
|
283
279
|
const completedRows = rows.filter((e) => e.status === "completed");
|
|
284
280
|
const waivedRows = rows.filter((e) => e.status === "waived");
|
|
285
|
-
const
|
|
286
|
-
agent === "reviewer" &&
|
|
287
|
-
reviewTriggers?.requireAdversarialReviewer === true;
|
|
288
|
-
const requiredCompletedCount = adversarialReviewerRequired ? 2 : 1;
|
|
289
|
-
const hasCompleted = completedRows.length >= requiredCompletedCount;
|
|
281
|
+
const hasCompleted = completedRows.length >= 1;
|
|
290
282
|
const hasWaived = waivedRows.length > 0;
|
|
291
|
-
const
|
|
292
|
-
completedRows.some((row) => row.skill === "adversarial-review");
|
|
293
|
-
const ok = hasWaived || (hasCompleted && hasAdversarialSkill);
|
|
283
|
+
const ok = hasWaived || hasCompleted;
|
|
294
284
|
if (!ok) {
|
|
295
285
|
missing.push(agent);
|
|
296
286
|
continue;
|
package/dist/doctor-registry.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { DOCTOR_REFERENCE_DIR } from "./content/doctor-references.js";
|
|
2
1
|
function ref(fileName) {
|
|
3
|
-
return
|
|
2
|
+
return `docs/${fileName}`;
|
|
4
3
|
}
|
|
5
4
|
const RULES = [
|
|
6
5
|
{
|
|
@@ -9,7 +8,7 @@ const RULES = [
|
|
|
9
8
|
severity: "info",
|
|
10
9
|
summary: "Gate reconciliation status update.",
|
|
11
10
|
fix: "No action required unless subsequent gate checks fail.",
|
|
12
|
-
docRef: ref("
|
|
11
|
+
docRef: ref("config.md")
|
|
13
12
|
}
|
|
14
13
|
},
|
|
15
14
|
{
|
|
@@ -18,7 +17,7 @@ const RULES = [
|
|
|
18
17
|
severity: "warning",
|
|
19
18
|
summary: "Advisory signal; runtime can continue with caution.",
|
|
20
19
|
fix: "Address when possible to prevent future drift or degraded behavior.",
|
|
21
|
-
docRef:
|
|
20
|
+
docRef: "README.md"
|
|
22
21
|
}
|
|
23
22
|
},
|
|
24
23
|
{
|
|
@@ -27,7 +26,7 @@ const RULES = [
|
|
|
27
26
|
severity: "warning",
|
|
28
27
|
summary: "Stage skill quality guardrail check.",
|
|
29
28
|
fix: "Tune generated stage skill content and re-run `cclaw sync`.",
|
|
30
|
-
docRef:
|
|
29
|
+
docRef: "README.md"
|
|
31
30
|
}
|
|
32
31
|
},
|
|
33
32
|
{
|
|
@@ -36,7 +35,7 @@ const RULES = [
|
|
|
36
35
|
severity: "error",
|
|
37
36
|
summary: "Required runtime tooling availability check.",
|
|
38
37
|
fix: "Install the missing required tool and re-run `cclaw doctor`.",
|
|
39
|
-
docRef:
|
|
38
|
+
docRef: "README.md"
|
|
40
39
|
}
|
|
41
40
|
},
|
|
42
41
|
{
|
|
@@ -45,7 +44,7 @@ const RULES = [
|
|
|
45
44
|
severity: "error",
|
|
46
45
|
summary: "Generated runtime surface presence check.",
|
|
47
46
|
fix: "Run `cclaw sync` to regenerate runtime files, then re-run doctor.",
|
|
48
|
-
docRef:
|
|
47
|
+
docRef: "README.md"
|
|
49
48
|
}
|
|
50
49
|
},
|
|
51
50
|
{
|
|
@@ -54,7 +53,7 @@ const RULES = [
|
|
|
54
53
|
severity: "error",
|
|
55
54
|
summary: "Hook wiring and lifecycle integration check.",
|
|
56
55
|
fix: "Repair hook/plugin wiring (usually via `cclaw sync`) and validate harness config.",
|
|
57
|
-
docRef: ref("
|
|
56
|
+
docRef: ref("harnesses.md")
|
|
58
57
|
}
|
|
59
58
|
},
|
|
60
59
|
{
|
|
@@ -63,16 +62,16 @@ const RULES = [
|
|
|
63
62
|
severity: "error",
|
|
64
63
|
summary: "Harness shim and routing file consistency check.",
|
|
65
64
|
fix: "Regenerate harness adapters via `cclaw sync`; confirm enabled harness list.",
|
|
66
|
-
docRef: ref("
|
|
65
|
+
docRef: ref("harnesses.md")
|
|
67
66
|
}
|
|
68
67
|
},
|
|
69
68
|
{
|
|
70
|
-
test: /^(flow_state:|state:|
|
|
69
|
+
test: /^(flow_state:|state:|gates:)/,
|
|
71
70
|
metadata: {
|
|
72
71
|
severity: "error",
|
|
73
72
|
summary: "Flow state and gate evidence consistency check.",
|
|
74
73
|
fix: "Repair flow-state artifacts and gate evidence, then run `cclaw doctor --reconcile-gates`.",
|
|
75
|
-
docRef: ref("
|
|
74
|
+
docRef: ref("config.md")
|
|
76
75
|
}
|
|
77
76
|
},
|
|
78
77
|
{
|
|
@@ -81,16 +80,16 @@ const RULES = [
|
|
|
81
80
|
severity: "error",
|
|
82
81
|
summary: "Knowledge and artifact runtime integrity check.",
|
|
83
82
|
fix: "Restore missing runtime files under `.cclaw/` or re-run `cclaw sync`.",
|
|
84
|
-
docRef:
|
|
83
|
+
docRef: "README.md"
|
|
85
84
|
}
|
|
86
85
|
},
|
|
87
86
|
{
|
|
88
|
-
test: /^(meta_skill:|protocol:|stage_skill
|
|
87
|
+
test: /^(meta_skill:|protocol:|stage_skill:)/,
|
|
89
88
|
metadata: {
|
|
90
89
|
severity: "error",
|
|
91
90
|
summary: "Routing skill and protocol integrity check.",
|
|
92
|
-
fix: "Regenerate runtime
|
|
93
|
-
docRef: ref("
|
|
91
|
+
fix: "Regenerate runtime skills via `cclaw sync`, then re-run doctor.",
|
|
92
|
+
docRef: ref("harnesses.md")
|
|
94
93
|
}
|
|
95
94
|
},
|
|
96
95
|
{
|
|
@@ -105,7 +104,7 @@ const RULES = [
|
|
|
105
104
|
severity: "warning",
|
|
106
105
|
summary: "Reference/overview doc integrity (non-blocking).",
|
|
107
106
|
fix: "Run `cclaw sync` to regenerate the reference doc from the canonical source.",
|
|
108
|
-
docRef: ref("
|
|
107
|
+
docRef: ref("harnesses.md")
|
|
109
108
|
}
|
|
110
109
|
},
|
|
111
110
|
{
|
|
@@ -114,7 +113,7 @@ const RULES = [
|
|
|
114
113
|
severity: "error",
|
|
115
114
|
summary: "Mandatory delegation completion check.",
|
|
116
115
|
fix: "Complete or explicitly waive missing mandatory delegations in delegation log.",
|
|
117
|
-
docRef: ref("
|
|
116
|
+
docRef: ref("harnesses.md")
|
|
118
117
|
}
|
|
119
118
|
},
|
|
120
119
|
{
|
|
@@ -123,7 +122,7 @@ const RULES = [
|
|
|
123
122
|
severity: "error",
|
|
124
123
|
summary: "Cross-artifact traceability integrity check.",
|
|
125
124
|
fix: "Restore criterion/task/test ID mappings across spec, plan, and tdd artifacts.",
|
|
126
|
-
docRef:
|
|
125
|
+
docRef: "README.md"
|
|
127
126
|
}
|
|
128
127
|
},
|
|
129
128
|
{
|
|
@@ -132,7 +131,7 @@ const RULES = [
|
|
|
132
131
|
severity: "error",
|
|
133
132
|
summary: "Config or policy schema consistency check.",
|
|
134
133
|
fix: "Fix config/rules drift, then run `cclaw sync` and re-run doctor.",
|
|
135
|
-
docRef: ref("config
|
|
134
|
+
docRef: ref("config.md")
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
];
|
|
@@ -143,9 +142,9 @@ export function doctorCheckMetadata(checkName) {
|
|
|
143
142
|
}
|
|
144
143
|
}
|
|
145
144
|
return {
|
|
146
|
-
severity: "
|
|
145
|
+
severity: "warning",
|
|
147
146
|
summary: "Unclassified doctor check.",
|
|
148
147
|
fix: "Report this check name to cclaw maintainers so doctor-registry can classify it explicitly.",
|
|
149
|
-
docRef:
|
|
148
|
+
docRef: "README.md"
|
|
150
149
|
};
|
|
151
150
|
}
|