@journeykit/canon 0.12.0 → 0.13.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.
@@ -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.12.0",
3
+ "version": "0.13.0",
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.12.0",
34
- "@journeykit/canon-core-linux-x64": "0.12.0",
35
- "@journeykit/canon-core-win32-x64": "0.12.0"
33
+ "@journeykit/canon-core-darwin-arm64": "0.13.0",
34
+ "@journeykit/canon-core-linux-x64": "0.13.0",
35
+ "@journeykit/canon-core-win32-x64": "0.13.0"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "^20.0.0",