@journeykit/canon 0.12.0 → 0.13.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/dist/skills/SKILL.src.md
CHANGED
|
@@ -11,17 +11,19 @@ Use this single skill when working with Canon in a consumer repository. Canon's
|
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
13
|
canon init
|
|
14
|
-
canon skills install # detects .claude/.codex/.omp/.pi; if none exists, installs Claude+Codex
|
|
14
|
+
canon skills install # detects .claude/.agents|.codex/.omp/.pi; if none exists, installs Claude+Codex
|
|
15
15
|
canon skills install --providers=claude,codex,omp,pi
|
|
16
16
|
canon skills check # read-only drift check
|
|
17
17
|
canon skills doctor # diagnostics; never deletes user files
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
The canonical bundle is read-only. Claude receives
|
|
21
|
-
`.claude/skills/canon/SKILL.md`; Codex receives
|
|
22
|
-
`.
|
|
23
|
-
receives `.pi/skills/canon/SKILL.md`. Every selected provider receives
|
|
24
|
-
`reference/**` and `scripts/**` sidecars under its `canon` bundle.
|
|
21
|
+
`.claude/skills/canon/SKILL.md`; Codex receives
|
|
22
|
+
`.agents/skills/canon/SKILL.md`; OMP receives `.omp/skills/canon/SKILL.md`; and
|
|
23
|
+
Pi receives `.pi/skills/canon/SKILL.md`. Every selected provider receives
|
|
24
|
+
matching `reference/**` and `scripts/**` sidecars under its `canon` bundle. A
|
|
25
|
+
legacy `.codex/skills/canon*` projection from canon 0.13.0 or earlier is
|
|
26
|
+
migrated by `canon skills install` and reported by `check`/`doctor`. OMP and Pi
|
|
25
27
|
projections are project-local passive skill bundles: the
|
|
26
28
|
`scripts/canon-retrieve-pre-dispatch.sh` file is available as a sidecar, not
|
|
27
29
|
installed as a native hook. Load only the reference needed for the current
|
|
@@ -100,7 +100,27 @@ output form includes captured prompt bytes.
|
|
|
100
100
|
- **`joinKeys`** — the join-spine grammar string per key (`regime_key`,
|
|
101
101
|
`session_id`, `task_id`, …).
|
|
102
102
|
- **`policy`** — the resolved `policy.yaml`-derived evidence/trust
|
|
103
|
-
requirements per kind
|
|
103
|
+
requirements per kind, plus `clean` and the policy `diagnostics`
|
|
104
|
+
(an unknown top-level key is one). In `--json`, `spec_coverage` and
|
|
105
|
+
`evidence_binding` are objects keyed like `policy.yaml`, with booleans
|
|
106
|
+
as booleans and lists as arrays (an empty `scope`/`case`/`lane` means
|
|
107
|
+
unfiltered):
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
"spec_coverage": {"require_evidence": true, "scope": ["building", "verifying"],
|
|
111
|
+
"exclude_lanes": ["process"], "require_cases": ["failure"],
|
|
112
|
+
"require_review": {"scope": ["verifying", "shipped"], "distinct_actor": true, "block_on_findings": true}},
|
|
113
|
+
"evidence_binding": {"mode": "warn", "strength": "report", "case": ["failure"], "lane": [], "scope": []}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`spec_coverage` is `null` when absent, `require_review` is `null` when
|
|
117
|
+
its sub-section is absent, and `evidence_binding` is omitted when absent.
|
|
118
|
+
A present but unusable section is `{"invalid": "<detail>"}`. The text
|
|
119
|
+
outline keeps its one-line summaries (`spec_coverage: INVALID — …`).
|
|
120
|
+
- **`review`** — finding severities and dispositions, the Review fields,
|
|
121
|
+
and `requireReview`: `{"scope": [...], "distinctActor": true,
|
|
122
|
+
"blockOnFindings": true}`, or `null` when review is not required
|
|
123
|
+
(absent, or `spec_coverage` is absent or invalid).
|
|
104
124
|
- **`vocab`** — the typed authoring vocabulary (directive/enum/evidence-
|
|
105
125
|
kind index) + its content-hash version.
|
|
106
126
|
- **`cel`** — the per-kind CEL binding surface: the bindable
|
|
@@ -6,6 +6,23 @@ mapping guards, retrieval filters, and a template's `applies_when:`
|
|
|
6
6
|
section. Wherever a `policy.yaml` predicate or an `applies_when:` string
|
|
7
7
|
appears, it is a CEL expression evaluated against the target record.
|
|
8
8
|
|
|
9
|
+
## Top-level keys
|
|
10
|
+
|
|
11
|
+
`.canon/policy.yaml` accepts exactly these top-level keys:
|
|
12
|
+
`adapter_capabilities`, `allowed_signers`, `approval`, `experimental`,
|
|
13
|
+
`query`, `risk_approvals`, `risk_routing`, `risk_tiers`, `schema`,
|
|
14
|
+
`spec_coverage`, `staleness`, `trust_required`, `trust_sample`
|
|
15
|
+
(`risk_approvals` and a top-level `allowed_signers` are compatibility
|
|
16
|
+
aliases for `approval.allowed_signers`). Any other key, usually a typo,
|
|
17
|
+
is a policy diagnostic, and `canon gate check` fails on it:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
uncovered-cell spec_coverag — `spec_coverag` is not a known top-level policy.yaml key (known keys: adapter_capabilities, allowed_signers, approval, experimental, query, risk_approvals, risk_routing, risk_tiers, schema, spec_coverage, staleness, trust_required, trust_sample); fix it or remove it — an unknown key is never silently ignored
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The known keys still resolve normally, and `canon context` lists the
|
|
24
|
+
diagnostic and reports `clean: false`.
|
|
25
|
+
|
|
9
26
|
## The closed CEL profile
|
|
10
27
|
|
|
11
28
|
Every expression is evaluated against exactly one variable, `record` (the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@journeykit/canon",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"description": "canon — harness knowledge substrate. JS launcher: platform detection + native binary resolution.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {},
|
|
32
32
|
"optionalDependencies": {
|
|
33
|
-
"@journeykit/canon-core-darwin-arm64": "0.
|
|
34
|
-
"@journeykit/canon-core-linux-x64": "0.
|
|
35
|
-
"@journeykit/canon-core-win32-x64": "0.
|
|
33
|
+
"@journeykit/canon-core-darwin-arm64": "0.13.1",
|
|
34
|
+
"@journeykit/canon-core-linux-x64": "0.13.1",
|
|
35
|
+
"@journeykit/canon-core-win32-x64": "0.13.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@types/node": "^20.0.0",
|