canon-ai 3.7.0 → 3.8.0
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/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [3.8.0] — 2026-10-07
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **`/canon-spec-review`'s factual reviewer now runs on Haiku.** The reviewer that checks a spec's paths, symbols, and signatures against the code now runs on `haiku`. Its work is lookups, so the smaller model is enough and costs less. The shape and spec-quality reviewers still use your session's model. Run `canon upgrade`, then start a new Claude Code session to pick it up.
|
|
12
|
+
|
|
7
13
|
## [3.7.0] — 2026-10-06
|
|
8
14
|
|
|
9
15
|
### Added
|
package/dist/cli/index.js
CHANGED
|
@@ -1224,7 +1224,7 @@ function checkTemplates(cwd) {
|
|
|
1224
1224
|
}
|
|
1225
1225
|
function checkCanonVersion(cwd) {
|
|
1226
1226
|
const versionPath = join(cwd, ".canon", "version");
|
|
1227
|
-
const installedVersion = "3.
|
|
1227
|
+
const installedVersion = "3.8.0";
|
|
1228
1228
|
if (!existsSync(versionPath)) {
|
|
1229
1229
|
return { label: ".canon/version", status: "warn", detail: "missing \u2014 run `canon upgrade`" };
|
|
1230
1230
|
}
|
|
@@ -1721,7 +1721,7 @@ function initCmd(_args) {
|
|
|
1721
1721
|
}
|
|
1722
1722
|
function writeCanonVersion(cwd) {
|
|
1723
1723
|
const versionPath = join2(cwd, ".canon", "version");
|
|
1724
|
-
const version = "3.
|
|
1724
|
+
const version = "3.8.0";
|
|
1725
1725
|
mkdirSync(dirname2(versionPath), { recursive: true });
|
|
1726
1726
|
writeFileSync(versionPath, version + "\n");
|
|
1727
1727
|
}
|
|
@@ -2731,7 +2731,7 @@ function isInstalledSourcePath(sourcePath) {
|
|
|
2731
2731
|
return sourcePath.includes("/node_modules/") || sourcePath.includes("\\node_modules\\") || sourcePath.includes("/_npx/") || sourcePath.includes("\\_npx\\");
|
|
2732
2732
|
}
|
|
2733
2733
|
function resolveCanonVersion(explicit) {
|
|
2734
|
-
return explicit ?? "3.
|
|
2734
|
+
return explicit ?? "3.8.0" ?? "dev";
|
|
2735
2735
|
}
|
|
2736
2736
|
function resolveOrchestratorCommit(repoRoot, upstreamCommit, runGitAt) {
|
|
2737
2737
|
const ownToplevel = captureGitOutput(repoRoot, ["rev-parse", "--show-toplevel"], runGitAt);
|
|
@@ -4893,7 +4893,7 @@ function currentPinFromManifest(manifest) {
|
|
|
4893
4893
|
return "unknown";
|
|
4894
4894
|
}
|
|
4895
4895
|
function bakedVersion() {
|
|
4896
|
-
return "3.
|
|
4896
|
+
return "3.8.0";
|
|
4897
4897
|
}
|
|
4898
4898
|
function ownPackageName(pkgDir) {
|
|
4899
4899
|
try {
|
|
@@ -5370,7 +5370,7 @@ function runUpgrade(cwd, pkgDir, options = {}) {
|
|
|
5370
5370
|
cutoverWarnings.push(docsRefsCheckRel);
|
|
5371
5371
|
}
|
|
5372
5372
|
const versionPath = join5(cwd, ".canon", "version");
|
|
5373
|
-
const newVersion = "3.
|
|
5373
|
+
const newVersion = "3.8.0";
|
|
5374
5374
|
const currentVersion = existsSync5(versionPath) ? readFileSync4(versionPath, "utf8").trim() : null;
|
|
5375
5375
|
if (currentVersion !== newVersion) {
|
|
5376
5376
|
pending.push({ rel: ".canon/version", projectPath: versionPath, content: newVersion + "\n" });
|
|
@@ -5678,7 +5678,7 @@ Global:
|
|
|
5678
5678
|
`);
|
|
5679
5679
|
}
|
|
5680
5680
|
function printVersion() {
|
|
5681
|
-
console.log("3.
|
|
5681
|
+
console.log("3.8.0");
|
|
5682
5682
|
}
|
|
5683
5683
|
switch (command) {
|
|
5684
5684
|
case "doctor":
|
|
@@ -5205,7 +5205,7 @@ function isInstalledSourcePath(sourcePath) {
|
|
|
5205
5205
|
return sourcePath.includes("/node_modules/") || sourcePath.includes("\\node_modules\\") || sourcePath.includes("/_npx/") || sourcePath.includes("\\_npx\\");
|
|
5206
5206
|
}
|
|
5207
5207
|
function resolveCanonVersion(explicit) {
|
|
5208
|
-
return explicit ?? "3.
|
|
5208
|
+
return explicit ?? "3.8.0" ?? "dev";
|
|
5209
5209
|
}
|
|
5210
5210
|
function resolveOrchestratorCommit(repoRoot, upstreamCommit, runGitAt) {
|
|
5211
5211
|
const ownToplevel = captureGitOutput(repoRoot, ["rev-parse", "--show-toplevel"], runGitAt);
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@ Review the spec yourself and spawn no sub-agents.
|
|
|
10
10
|
Invoke no skills.
|
|
11
11
|
Write no files. Run no `canon` commands and ask the user nothing.
|
|
12
12
|
Bash is read-only: search, list, print file ranges, and inspect read-only git history. Use no redirects, in-place edits, or state-changing git.
|
|
13
|
-
Inherit the session's model and effort.
|
|
13
|
+
Inherit the session's model and effort unless the dispatching call sets a model.
|
|
14
14
|
|
|
15
15
|
Every finding cites `file:line` or an AC number. Re-open the current file before making any claim about code; do not rely on memory.
|
|
16
16
|
|
|
@@ -39,7 +39,7 @@ State briefly: task ID, size, delicate flag, "dispatching 3 parallel sub-agents.
|
|
|
39
39
|
|
|
40
40
|
### 2. Dispatch 3 sub-agents in one message
|
|
41
41
|
|
|
42
|
-
Send a SINGLE message with three Agent tool calls so they run concurrently. Every call uses `subagent_type: spec-review-lens` and carries the full spec text inline, its angle, scope and rubric. Each lens returns cited findings in its own format. If the Agent tool rejects `spec-review-lens`, stop and tell the human to run `canon upgrade`, then start a new Claude Code session; do not fall back to another agent type.
|
|
42
|
+
Send a SINGLE message with three Agent tool calls so they run concurrently. Every call uses `subagent_type: spec-review-lens` and carries the full spec text inline, its angle, scope and rubric. Agent B's call also passes `model: haiku`; its lookups are mechanical, while A and C need judgment and inherit the session model. Each lens returns cited findings in its own format. If the Agent tool rejects `spec-review-lens`, stop and tell the human to run `canon upgrade`, then start a new Claude Code session; do not fall back to another agent type.
|
|
43
43
|
|
|
44
44
|
#### Agent A — Structural / shape
|
|
45
45
|
|