@journeykit/canon 0.33.0 → 0.34.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.
Files changed (118) hide show
  1. package/dist/skills/SKILL.src.md +24 -10
  2. package/dist/skills/reference/canon-authoring.md +2 -2
  3. package/dist/skills/reference/canon-context.md +2 -2
  4. package/dist/skills/reference/canon-gate.md +1 -1
  5. package/dist/skills/reference/canon-review.md +1 -1
  6. package/dist/skills/reference/canon-storage.md +5 -3
  7. package/dist/skills/reference/canon-subject.md +1 -1
  8. package/dist/skills/reference/role-implementer.md +33 -33
  9. package/dist/skills/reference/role-orchestrator.md +63 -63
  10. package/dist/skills/reference/role-planner.md +24 -24
  11. package/dist/skills/reference/role-reviewer.md +26 -26
  12. package/man/canon-adapter-authorize.1 +3 -3
  13. package/man/canon-adapter-validate.1 +3 -3
  14. package/man/canon-adapter.1 +3 -3
  15. package/man/canon-artifacts-move.1 +3 -3
  16. package/man/canon-artifacts-store.1 +3 -3
  17. package/man/canon-artifacts-verify.1 +3 -3
  18. package/man/canon-artifacts.1 +3 -3
  19. package/man/canon-brief-approve.1 +3 -3
  20. package/man/canon-brief-check.1 +3 -3
  21. package/man/canon-brief-show.1 +3 -3
  22. package/man/canon-brief.1 +3 -3
  23. package/man/canon-change-new.1 +3 -3
  24. package/man/canon-change.1 +3 -3
  25. package/man/canon-completion.1 +3 -3
  26. package/man/canon-context-pack-add.1 +3 -3
  27. package/man/canon-context-pack-show.1 +3 -3
  28. package/man/canon-context-pack-verify.1 +3 -3
  29. package/man/canon-context-pack.1 +3 -3
  30. package/man/canon-context.1 +4 -4
  31. package/man/canon-dashboard.1 +3 -3
  32. package/man/canon-demo-init.1 +3 -3
  33. package/man/canon-demo-review.1 +3 -3
  34. package/man/canon-demo.1 +3 -3
  35. package/man/canon-dispatch-begin.1 +3 -3
  36. package/man/canon-dispatch-diff.1 +3 -3
  37. package/man/canon-dispatch-end.1 +3 -3
  38. package/man/canon-dispatch.1 +3 -3
  39. package/man/canon-divergence-accept.1 +3 -3
  40. package/man/canon-divergence-add.1 +3 -3
  41. package/man/canon-divergence-defer.1 +3 -3
  42. package/man/canon-divergence-list.1 +6 -6
  43. package/man/canon-divergence-resolve.1 +3 -3
  44. package/man/canon-divergence.1 +3 -3
  45. package/man/canon-evidence-add.1 +3 -3
  46. package/man/canon-evidence-approval-payload.1 +3 -3
  47. package/man/canon-evidence-audit.1 +3 -3
  48. package/man/canon-evidence.1 +3 -3
  49. package/man/canon-export.1 +6 -6
  50. package/man/canon-feature-new.1 +3 -3
  51. package/man/canon-feature.1 +3 -3
  52. package/man/canon-finding-add.1 +4 -4
  53. package/man/canon-finding-close.1 +3 -3
  54. package/man/canon-finding-list.1 +6 -6
  55. package/man/canon-finding.1 +3 -3
  56. package/man/canon-format.1 +3 -3
  57. package/man/canon-gate-check.1 +3 -3
  58. package/man/canon-gate-install-hooks.1 +3 -3
  59. package/man/canon-gate-promote.1 +3 -3
  60. package/man/canon-gate.1 +3 -3
  61. package/man/canon-ingest-plans.1 +3 -3
  62. package/man/canon-ingest-records.1 +3 -3
  63. package/man/canon-ingest-sessions.1 +3 -3
  64. package/man/canon-ingest.1 +3 -3
  65. package/man/canon-init.1 +4 -4
  66. package/man/canon-inventory-sync.1 +3 -3
  67. package/man/canon-inventory.1 +3 -3
  68. package/man/canon-ledger-compact.1 +3 -3
  69. package/man/canon-ledger.1 +3 -3
  70. package/man/canon-migrate.1 +3 -3
  71. package/man/canon-plugin-sync.1 +3 -3
  72. package/man/canon-plugin.1 +3 -3
  73. package/man/canon-policy-approve.1 +3 -3
  74. package/man/canon-policy-show.1 +3 -3
  75. package/man/canon-policy.1 +3 -3
  76. package/man/canon-prompt-add.1 +3 -3
  77. package/man/canon-prompt-show.1 +3 -3
  78. package/man/canon-prompt.1 +3 -3
  79. package/man/canon-purge.1 +3 -3
  80. package/man/canon-query.1 +6 -6
  81. package/man/canon-regime-show.1 +3 -3
  82. package/man/canon-regime.1 +3 -3
  83. package/man/canon-report-build.1 +3 -3
  84. package/man/canon-report-check.1 +3 -3
  85. package/man/canon-report-snapshot.1 +3 -3
  86. package/man/canon-report.1 +3 -3
  87. package/man/canon-retrieve.1 +4 -4
  88. package/man/canon-review-change.1 +3 -3
  89. package/man/canon-review-scenario.1 +3 -3
  90. package/man/canon-review.1 +3 -3
  91. package/man/canon-scenario-new.1 +3 -3
  92. package/man/canon-scenario.1 +3 -3
  93. package/man/canon-schema.1 +14 -6
  94. package/man/canon-search.1 +3 -3
  95. package/man/canon-selftest.1 +3 -3
  96. package/man/canon-skills-check.1 +3 -3
  97. package/man/canon-skills-doctor.1 +3 -3
  98. package/man/canon-skills-install.1 +3 -3
  99. package/man/canon-skills-show.1 +3 -3
  100. package/man/canon-skills.1 +3 -3
  101. package/man/canon-status.1 +4 -4
  102. package/man/canon-strategy-approval-payload.1 +3 -3
  103. package/man/canon-strategy-promote.1 +3 -3
  104. package/man/canon-strategy-rollback.1 +3 -3
  105. package/man/canon-strategy.1 +3 -3
  106. package/man/canon-subject-adopt.1 +3 -3
  107. package/man/canon-subject-move.1 +3 -3
  108. package/man/canon-subject-new.1 +4 -4
  109. package/man/canon-subject-show.1 +3 -3
  110. package/man/canon-subject-unadopt.1 +3 -3
  111. package/man/canon-subject.1 +3 -3
  112. package/man/canon-task-done.1 +3 -3
  113. package/man/canon-task.1 +3 -3
  114. package/man/canon-tier-age.1 +3 -3
  115. package/man/canon-tier.1 +3 -3
  116. package/man/canon-trace.1 +3 -3
  117. package/man/canon.1 +3 -3
  118. package/package.json +4 -4
@@ -18,7 +18,7 @@ in your ids. Use only the options on a line; never guess one. Ask `canon schema
18
18
  <command> --json` only for a leaf this block does not list, or after a `USAGE` refusal.
19
19
 
20
20
  <!-- canon:generated commands-orchestrator begin -->
21
- Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `regime show`, `schema`, `selftest`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list; camelCase and snake_case both match.
21
+ Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `regime show`, `schema`, `selftest`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
22
22
  In a syntax line `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` exactly one is required, `[--x <V>]*` may repeat, `<X>+` is one or more, `[--a --b <V>]` go together. An option that is not on the line does not exist: it is refused (`USAGE`).
23
23
 
24
24
  ```text
@@ -26,14 +26,14 @@ In a syntax line `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` e
26
26
  canon adapter authorize --response <FILE>
27
27
  ```
28
28
  ```bash
29
- canon adapter authorize --response adapter-response.json --repo .
29
+ canon adapter authorize --response adapter-response.json --repo . --json
30
30
  ```
31
31
  ```text
32
32
  # Read and validate one provider-neutral response envelope
33
33
  canon adapter validate --response <FILE>
34
34
  ```
35
35
  ```bash
36
- canon adapter validate --response adapter-response.json
36
+ canon adapter validate --response adapter-response.json --json
37
37
  ```
38
38
  ```text
39
39
  # Move the local artifact blobs to an object-store tier, verify them, and remove the local copies
@@ -41,182 +41,182 @@ canon artifacts move --tier <TIER> [--commit --plan-digest <DIGEST>] [--input]
41
41
  # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
42
42
  ```
43
43
  ```bash
44
- canon artifacts move --tier cold
44
+ canon artifacts move --tier cold --json
45
45
  ```
46
46
  ```text
47
47
  # Store the bound files of existing evidence records and current reviews in the artifact store (.canon/artifacts/sha256/)
48
48
  canon artifacts store [--max-artifact-mib <N>] [--dry-run] [--input]
49
49
  ```
50
50
  ```bash
51
- canon artifacts store
51
+ canon artifacts store --json
52
52
  ```
53
53
  ```text
54
54
  # Check that the artifact store holds every file the latest evidence and current reviews bind (--full re-hashes the stored bytes)
55
55
  canon artifacts verify [--full]
56
56
  ```
57
57
  ```bash
58
- canon artifacts verify
58
+ canon artifacts verify --json
59
59
  ```
60
60
  ```text
61
61
  # Write the shell completion script for canon (bash, zsh or fish)
62
62
  canon completion <SHELL>
63
63
  ```
64
64
  ```bash
65
- canon completion zsh
65
+ canon completion zsh --json
66
66
  ```
67
67
  ```text
68
68
  # Show what you can author here: record kinds, fields, enums, policies
69
69
  canon context [--fields <FIELDS>]
70
70
  ```
71
71
  ```bash
72
- canon context
72
+ canon context --json
73
73
  ```
74
74
  ```text
75
75
  # Create an immutable context pack from a repository-local JSON manifest
76
76
  canon context-pack add --manifest <FILE> [--input]
77
77
  ```
78
78
  ```bash
79
- canon context-pack add --manifest .canon/context-manifest.json
79
+ canon context-pack add --manifest .canon/context-manifest.json --json
80
80
  ```
81
81
  ```text
82
82
  # Show a context pack after verifying its manifest and content objects
83
83
  canon context-pack show <PACK_ID>
84
84
  ```
85
85
  ```bash
86
- canon context-pack show sha256:0000000000000000000000000000000000000000000000000000000000000000
86
+ canon context-pack show sha256:0000000000000000000000000000000000000000000000000000000000000000 --json
87
87
  ```
88
88
  ```text
89
89
  # Verify a context pack's manifest and immutable content objects
90
90
  canon context-pack verify <PACK_ID>
91
91
  ```
92
92
  ```bash
93
- canon context-pack verify sha256:0000000000000000000000000000000000000000000000000000000000000000
93
+ canon context-pack verify sha256:0000000000000000000000000000000000000000000000000000000000000000 --json
94
94
  ```
95
95
  ```text
96
96
  # Serve the local status dashboard
97
97
  canon dashboard [--snapshot <DIR>] [--port <N>] [--input]
98
98
  ```
99
99
  ```bash
100
- canon dashboard
100
+ canon dashboard --json
101
101
  ```
102
102
  ```text
103
103
  # Scaffold the demo repo (gate starts RED)
104
104
  canon demo init [--input]
105
105
  ```
106
106
  ```bash
107
- canon demo init --repo canon-demo
107
+ canon demo init --repo canon-demo --json
108
108
  ```
109
109
  ```text
110
110
  # Record the missing reviewer evidence (gate turns GREEN)
111
111
  canon demo review [--input]
112
112
  ```
113
113
  ```bash
114
- canon demo review
114
+ canon demo review --json
115
115
  ```
116
116
  ```text
117
117
  # Mint a Run manifest with retrieved guidance and context/policy lineage
118
- canon dispatch begin --regime <KEY> [--role <ROLE>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--provider <NAME>] [--model <NAME>] [--skill <ID>] [--skill-digest <DIGEST>] [--manifest <FILE>] [--prompt-bundle <NAME@VERSION>] [--task <TASK_ID>] [--parent-run <RUN_ID>] [--input]
118
+ canon dispatch begin --regime <KEY> [--role <ROLE>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--provider <NAME>] [--model <NAME>] [--skill <ID>] [--skill-digest <DIGEST> (with --skill)] [--manifest <FILE>] [--prompt-bundle <NAME@VERSION>] [--task <TASK_ID>] [--parent-run <RUN_ID>] [--input]
119
119
  ```
120
120
  ```bash
121
- canon dispatch begin --regime implementer/my-repo/api/abcdef012345 --role implementer
121
+ canon dispatch begin --regime implementer/my-repo/api/abcdef012345 --role implementer --json
122
122
  ```
123
123
  ```text
124
124
  # Diff the declared plan DAG against the observed execution graph
125
125
  canon dispatch diff
126
126
  ```
127
127
  ```bash
128
- canon dispatch diff
128
+ canon dispatch diff --json
129
129
  ```
130
130
  ```text
131
131
  # Close a dispatched run with a terminal status and an ended_at
132
132
  canon dispatch end <RUN_ID> --run-outcome <succeeded|failed> [--input]
133
133
  ```
134
134
  ```bash
135
- canon dispatch end 01ARZ3NDEKTSV4RRFFQ69G5FAV --run-outcome succeeded
135
+ canon dispatch end 01ARZ3NDEKTSV4RRFFQ69G5FAV --run-outcome succeeded --json
136
136
  ```
137
137
  ```text
138
138
  # List the current divergence burn-down state
139
139
  canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
140
140
  ```
141
141
  ```bash
142
- canon divergence list --as-of 2030-01-01
142
+ canon divergence list --as-of 2030-01-01 --json
143
143
  ```
144
144
  ```text
145
145
  # Emit exact bytes for external `ssh-keygen -Y sign -n canon-approval-v1`
146
146
  canon evidence approval-payload --approver <NAME> --approval-at <TIMESTAMP> [--task <TASK_ID>] [--project <PROJECT_ID>] [--scenario <SCENARIO_ID>] [--run <RUN_ID>] [--rev <REV>] [--surface-ref <PATH_OR_EFFECT>]*
147
147
  ```
148
148
  ```bash
149
- canon evidence approval-payload --scenario auth.login.01 --project root --approver alice --approval-at 2030-01-01T00:00:00Z
149
+ canon evidence approval-payload --scenario auth.login.01 --project root --approver alice --approval-at 2030-01-01T00:00:00Z --json
150
150
  ```
151
151
  ```text
152
152
  # Export a redacted retention manifest without deleting records
153
153
  canon export --kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding> [--before <TIMESTAMP>] [--after <TIMESTAMP>] [--output <FILE>] [--include-sensitive] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>] [--dry-run] [--input]
154
154
  ```
155
155
  ```bash
156
- canon export --kind evidence --output evidence.json
156
+ canon export --kind evidence --output evidence.json --json
157
157
  ```
158
158
  ```text
159
159
  # List a change's committed findings at their latest version
160
160
  canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
161
161
  ```
162
162
  ```bash
163
- canon finding list --change add-login
163
+ canon finding list --change add-login --json
164
164
  ```
165
165
  ```text
166
166
  # Validate a spec/artifact corpus against canon's format
167
167
  canon format [<DIR>]
168
168
  ```
169
169
  ```bash
170
- canon format .canon/specs
170
+ canon format .canon/specs --json
171
171
  ```
172
172
  ```text
173
173
  # Run the coverage/ledger/staleness/trust checks (0 clean, 1 red, 2 usage)
174
174
  canon gate check [--release]
175
175
  ```
176
176
  ```bash
177
- canon gate check
177
+ canon gate check --json
178
178
  ```
179
179
  ```text
180
180
  # Install the gate hook into .claude/settings.json / .codex/hooks.json
181
181
  canon gate install-hooks [--event <NAME>] [--matcher <TEXT>] [--command <TEXT>] [--timeout <N>] [--dry-run] [--input]
182
182
  ```
183
183
  ```bash
184
- canon gate install-hooks
184
+ canon gate install-hooks --json
185
185
  ```
186
186
  ```text
187
187
  # Import plans as Change/Task records
188
188
  canon ingest plans [--dialect <NAME> --plan-source <DIR>] [--dry-run] [--input]
189
189
  ```
190
190
  ```bash
191
- canon ingest plans
191
+ canon ingest plans --json
192
192
  ```
193
193
  ```text
194
194
  # Import review/divergence/task/handoff records and derive verdicts
195
195
  canon ingest records [--watch] [--interval-secs <N>] [--dry-run] [--run <RUN_ID>] [--input]
196
196
  ```
197
197
  ```bash
198
- canon ingest records
198
+ canon ingest records --json
199
199
  ```
200
200
  ```text
201
201
  # Import agent CLI session transcripts (omp/pi, Claude Code, Codex, Hermes)
202
202
  canon ingest sessions [--watch] [--interval-secs <N>] [--home <DIR>] [--full] [--all-workspaces] [--dry-run] [--input]
203
203
  ```
204
204
  ```bash
205
- canon ingest sessions
205
+ canon ingest sessions --json
206
206
  ```
207
207
  ```text
208
208
  # Set up canon in a repo (canon.yaml, a starter policy, the AGENTS.md block, a plans home)
209
209
  canon init [--check] [--no-agents-md | --check] [--policy <light|standard|strict> | --check | --no-policy] [--providers <LIST> | --check] [--language <TAG> | --check] [--dry-run | --check] [--input]
210
210
  ```
211
211
  ```bash
212
- canon init
212
+ canon init --json
213
213
  ```
214
214
  ```text
215
215
  # Validate each spec root, then materialize scenario index records
216
216
  canon inventory sync [--spec-root <DIR>] [--dry-run] [--input]
217
217
  ```
218
218
  ```bash
219
- canon inventory sync
219
+ canon inventory sync --json
220
220
  ```
221
221
  ```text
222
222
  # Move superseded versions of every record out of the ledger into the archive
@@ -224,7 +224,7 @@ canon ledger compact [--commit --plan-digest <DIGEST>] [--input]
224
224
  # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
225
225
  ```
226
226
  ```bash
227
- canon ledger compact
227
+ canon ledger compact --json
228
228
  ```
229
229
  ```text
230
230
  # Bring a repo from an earlier canon up to date
@@ -232,35 +232,35 @@ canon migrate [--commit --plan-digest <DIGEST>] [--revert | --relayed-via <NAME>
232
232
  # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
233
233
  ```
234
234
  ```bash
235
- canon migrate
235
+ canon migrate --json
236
236
  ```
237
237
  ```text
238
238
  # Validate and write a plugin's overlay records
239
239
  canon plugin sync <PLUGIN_ID> [--spec-root <DIR>] [--dry-run] [--input]
240
240
  ```
241
241
  ```bash
242
- canon plugin sync my-plugin
242
+ canon plugin sync my-plugin --json
243
243
  ```
244
244
  ```text
245
245
  # Show the policy's digest and its approval (who, when, which bytes)
246
246
  canon policy show
247
247
  ```
248
248
  ```bash
249
- canon policy show
249
+ canon policy show --json
250
250
  ```
251
251
  ```text
252
252
  # Add a prompt bundle from a repository-local JSON manifest
253
253
  canon prompt add <NAME@VERSION> --manifest <FILE> [--input]
254
254
  ```
255
255
  ```bash
256
- canon prompt add reviewer@v1 --manifest .canon/prompt-manifest.json
256
+ canon prompt add reviewer@v1 --manifest .canon/prompt-manifest.json --json
257
257
  ```
258
258
  ```text
259
259
  # Select a registered prompt bundle version
260
260
  canon prompt show <NAME@VERSION>
261
261
  ```
262
262
  ```bash
263
- canon prompt show reviewer@v1
263
+ canon prompt show reviewer@v1 --json
264
264
  ```
265
265
  ```text
266
266
  # Remove allowlisted records older than a cutoff
@@ -268,161 +268,161 @@ canon purge --kind <session|run|event|trajectory> --before <TIMESTAMP> [--commit
268
268
  # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
269
269
  ```
270
270
  ```bash
271
- canon purge --kind session --before 2020-01-01T00:00:00Z
271
+ canon purge --kind session --before 2020-01-01T00:00:00Z --json
272
272
  ```
273
273
  ```text
274
274
  # Read stored records across every storage tier
275
275
  canon query --kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding> [--since <TIMESTAMP>] [--plugin <PLUGIN_ID> | --history] [--change <CHANGE_ID>] [--status <STATUS>] [--domain <NAME>] [--include-sensitive] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
276
276
  ```
277
277
  ```bash
278
- canon query --kind evidence
278
+ canon query --kind evidence --json
279
279
  ```
280
280
  ```text
281
281
  # Build a canonical regime key for hook scripts
282
282
  canon regime show --role-segment <NAME> --repo-name <NAME> --area <NAME> --hash <HASH>
283
283
  ```
284
284
  ```bash
285
- canon regime show --role-segment reviewer --repo-name my-repo --area api --hash abcdef012345
285
+ canon regime show --role-segment reviewer --repo-name my-repo --area api --hash abcdef012345 --json
286
286
  ```
287
287
  ```text
288
288
  # Write the status report (.canon/REPORT.md)
289
289
  canon report build [--input]
290
290
  ```
291
291
  ```bash
292
- canon report build
292
+ canon report build --json
293
293
  ```
294
294
  ```text
295
295
  # Byte-diff .canon/REPORT.md against a fresh build (0 fresh, 1 missing or drifted); writes nothing
296
296
  canon report check
297
297
  ```
298
298
  ```bash
299
- canon report check
299
+ canon report check --json
300
300
  ```
301
301
  ```text
302
302
  # Export the panel marts to <DIR>/*.parquet plus manifest.json
303
303
  canon report snapshot <DIR> [--input]
304
304
  ```
305
305
  ```bash
306
- canon report snapshot snapshot-out
306
+ canon report snapshot snapshot-out --json
307
307
  ```
308
308
  ```text
309
309
  # Fetch role-scoped strategy guidance
310
- canon retrieve --for-role <ROLE> [--regime <KEY>] [--domain <NAME>] [--subject <SUBJECT_ID>] [--limit <N>]
310
+ canon retrieve --for-role <ROLE> (--regime <KEY> | --domain <NAME>) [--subject <SUBJECT_ID> (with --domain)] [--limit <N>]
311
311
  ```
312
312
  ```bash
313
- canon retrieve --for-role reviewer --domain dev --limit 20
313
+ canon retrieve --for-role reviewer --domain dev --limit 20 --json
314
314
  ```
315
315
  ```text
316
316
  # Describe canon's own commands
317
- canon schema [<PATH>]* [--errors | --error <CODE>]
317
+ canon schema [<PATH>]* [--errors | --error <CODE> | --warning <CODE> | --warnings]
318
318
  ```
319
319
  ```bash
320
- canon schema evidence add
320
+ canon schema evidence add --json
321
321
  ```
322
322
  ```text
323
323
  # Search records, brief sections and scenario text, with each hit's neighbors in the record graph
324
324
  canon search <TEXT> [--kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding|brief>]* [--expand <N>] [--limit <N>]
325
325
  ```
326
326
  ```bash
327
- canon search timeout --kind finding
327
+ canon search timeout --kind finding --json
328
328
  ```
329
329
  ```text
330
330
  # Run canon's built-in fixture self-tests
331
331
  canon selftest [--suite <trust-spine-gate|tiered-storage|typed-authoring-vocabulary|policy-expressions|format-authority|session-ingest|canon-context|artifact-ingest|spec-ledger-selftest|plugin-overlays|plan-import>]
332
332
  ```
333
333
  ```bash
334
- canon selftest --suite trust-spine-gate
334
+ canon selftest --suite trust-spine-gate --json
335
335
  ```
336
336
  ```text
337
337
  # Check canonical projections without writing; exit 1 on drift, a legacy remnant, or a lock another canon version wrote
338
338
  canon skills check [--skills-source <DIR>] [--providers <LIST>]
339
339
  ```
340
340
  ```bash
341
- canon skills check
341
+ canon skills check --json
342
342
  ```
343
343
  ```text
344
344
  # Print diagnostics for canonical projections, the install lock's canon version, legacy remnants, canon projections for a provider that is not selected, and other skills whose description claims build work; reports only, never edits
345
345
  canon skills doctor [--skills-source <DIR>] [--providers <LIST>]
346
346
  ```
347
347
  ```bash
348
- canon skills doctor
348
+ canon skills doctor --json
349
349
  ```
350
350
  ```text
351
351
  # Install the canonical `canon` bundle or legacy developer skills
352
352
  canon skills install [--skills-source <DIR>] [--providers <LIST>] [--dry-run] [--input]
353
353
  ```
354
354
  ```bash
355
- canon skills install
355
+ canon skills install --json
356
356
  ```
357
357
  ```text
358
358
  # Print a guide built into this binary (markdown on stdout); the installed SKILL.md is a stub that points here
359
359
  canon skills show <NAME> [--full]
360
360
  ```
361
361
  ```bash
362
- canon skills show canon --full
362
+ canon skills show canon --full --json
363
363
  ```
364
364
  ```text
365
365
  # Show where this repo stands: subjects by status, their gaps, and the next commands
366
366
  canon status [--fields <FIELDS>]
367
367
  ```
368
368
  ```bash
369
- canon status
369
+ canon status --json
370
370
  ```
371
371
  ```text
372
372
  # The unsigned approval payload bytes an external signer signs
373
373
  canon strategy approval-payload <STRATEGY_ID> --evaluation <FILE> --approver <NAME> --approval-at <TIMESTAMP>
374
374
  ```
375
375
  ```bash
376
- canon strategy approval-payload 01ARZ3NDEKTSV4RRFFQ69G5FAV --evaluation evaluation.json --approver alice --approval-at 2030-01-01T00:00:00Z
376
+ canon strategy approval-payload 01ARZ3NDEKTSV4RRFFQ69G5FAV --evaluation evaluation.json --approver alice --approval-at 2030-01-01T00:00:00Z --json
377
377
  ```
378
378
  ```text
379
379
  # Promote a strategy after paired evaluation and signed approval
380
380
  canon strategy promote <STRATEGY_ID> [--evaluation <FILE> --approval <FILE>] [--signature-file <FILE> (with --approval)] [--dry-run] [--input]
381
381
  ```
382
382
  ```bash
383
- canon strategy promote 01ARZ3NDEKTSV4RRFFQ69G5FAV
383
+ canon strategy promote 01ARZ3NDEKTSV4RRFFQ69G5FAV --json
384
384
  ```
385
385
  ```text
386
386
  # Disable an active strategy with durable rollback provenance
387
387
  canon strategy rollback <STRATEGY_ID> --reason <TEXT> --actor <ACTOR_ID> --signature-file <FILE> --approval-at <TIMESTAMP> [--contradicting-trajectory <ID>] [--input]
388
388
  ```
389
389
  ```bash
390
- canon strategy rollback 01ARZ3NDEKTSV4RRFFQ69G5FAV --reason "regressed in production" --actor alice --signature-file approval.sig --approval-at 2030-01-01T00:00:00Z
390
+ canon strategy rollback 01ARZ3NDEKTSV4RRFFQ69G5FAV --reason "regressed in production" --actor alice --signature-file approval.sig --approval-at 2030-01-01T00:00:00Z --json
391
391
  ```
392
392
  ```text
393
393
  # Link an imported plan change to a subject (adopting it under another subject adds that subject; a change may belong to several)
394
394
  canon subject adopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
395
395
  ```
396
396
  ```bash
397
- canon subject adopt demo --change add-login
397
+ canon subject adopt demo --change add-login --json
398
398
  ```
399
399
  ```text
400
400
  # Move a subject to another lifecycle state (shipping is evidence-gated; with spec_coverage.require_review, entering its scope is review-gated; shipped → verifying reopens with --reason)
401
401
  canon subject move <SUBJECT_ID> --to <proposed|specced|building|verifying|shipped|retired> [--override-reason <TEXT>] [--reason <TEXT>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--input]
402
402
  ```
403
403
  ```bash
404
- canon subject move demo --to specced
404
+ canon subject move demo --to specced --json
405
405
  ```
406
406
  ```text
407
407
  # Author a new subject at status `proposed`
408
408
  canon subject new <SUBJECT_ID> --domain <NAME> --title <TEXT> [--summary <TEXT>] [--owner-role <ROLE>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--input]
409
409
  ```
410
410
  ```bash
411
- canon subject new payments --domain dev --title Payments
411
+ canon subject new payments --domain dev --title Payments --json
412
412
  ```
413
413
  ```text
414
414
  # Show a subject (read-only)
415
415
  canon subject show <SUBJECT_ID>
416
416
  ```
417
417
  ```bash
418
- canon subject show demo
418
+ canon subject show demo --json
419
419
  ```
420
420
  ```text
421
421
  # Take a change back out of a subject (the mirror of adopt; refused for a change whose brief is approved)
422
422
  canon subject unadopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
423
423
  ```
424
424
  ```bash
425
- canon subject unadopt demo --change add-login
425
+ canon subject unadopt demo --change add-login --json
426
426
  ```
427
427
  ```text
428
428
  # Apply canon.yaml aging rules, moving old records to their destination tier
@@ -430,14 +430,14 @@ canon tier age [--commit --plan-digest <DIGEST>] [--input]
430
430
  # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
431
431
  ```
432
432
  ```bash
433
- canon tier age
433
+ canon tier age --json
434
434
  ```
435
435
  ```text
436
436
  # Follow a finding's review loop in time order: review, finding, fix, re-review, evidence
437
437
  canon trace <ID>
438
438
  ```
439
439
  ```bash
440
- canon trace add-login_1_1
440
+ canon trace add-login_1_1 --json
441
441
  ```
442
442
  <!-- canon:generated commands-orchestrator end -->
443
443
 
@@ -20,7 +20,7 @@ in your ids. Use only the options on a line; never guess one. Ask `canon schema
20
20
  <command> --json` only for a leaf this block does not list, or after a `USAGE` refusal.
21
21
 
22
22
  <!-- canon:generated commands-planner begin -->
23
- Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `schema`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list; camelCase and snake_case both match.
23
+ Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `schema`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
24
24
  In a syntax line `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` exactly one is required, `[--x <V>]*` may repeat, `<X>+` is one or more, `[--a --b <V>]` go together. An option that is not on the line does not exist: it is refused (`USAGE`).
25
25
 
26
26
  ```text
@@ -28,147 +28,147 @@ In a syntax line `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` e
28
28
  canon brief check [<CHANGE_ID>]
29
29
  ```
30
30
  ```bash
31
- canon brief check
31
+ canon brief check --json
32
32
  ```
33
33
  ```text
34
34
  # Show where the change stands and the next one to three steps; never edits
35
35
  canon brief show [<CHANGE_ID>] [--body]
36
36
  ```
37
37
  ```bash
38
- canon brief show
38
+ canon brief show --json
39
39
  ```
40
40
  ```text
41
41
  # Write .canon/changes/<slug>/brief.md, import it, and adopt it into a subject
42
42
  canon change new <CHANGE_ID> --subject <SUBJECT_ID> --title <TEXT> [--change-kind <feature|chore>] [--input]
43
43
  ```
44
44
  ```bash
45
- canon change new add-search --subject demo --title "Add search"
45
+ canon change new add-search --subject demo --title "Add search" --json
46
46
  ```
47
47
  ```text
48
48
  # Write the shell completion script for canon (bash, zsh or fish)
49
49
  canon completion <SHELL>
50
50
  ```
51
51
  ```bash
52
- canon completion zsh
52
+ canon completion zsh --json
53
53
  ```
54
54
  ```text
55
55
  # Show what you can author here: record kinds, fields, enums, policies
56
56
  canon context [--fields <FIELDS>]
57
57
  ```
58
58
  ```bash
59
- canon context
59
+ canon context --json
60
60
  ```
61
61
  ```text
62
62
  # List the current divergence burn-down state
63
63
  canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
64
64
  ```
65
65
  ```bash
66
- canon divergence list --as-of 2030-01-01
66
+ canon divergence list --as-of 2030-01-01 --json
67
67
  ```
68
68
  ```text
69
69
  # Create a fresh .feature file for a new area.surface
70
70
  canon feature new <SURFACE> --title <TEXT> [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--project <PROJECT_ID>] [--input]
71
71
  ```
72
72
  ```bash
73
- canon feature new billing.invoice --title Invoices
73
+ canon feature new billing.invoice --title Invoices --json
74
74
  ```
75
75
  ```text
76
76
  # List a change's committed findings at their latest version
77
77
  canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
78
78
  ```
79
79
  ```bash
80
- canon finding list --change add-login
80
+ canon finding list --change add-login --json
81
81
  ```
82
82
  ```text
83
83
  # Validate a spec/artifact corpus against canon's format
84
84
  canon format [<DIR>]
85
85
  ```
86
86
  ```bash
87
- canon format .canon/specs
87
+ canon format .canon/specs --json
88
88
  ```
89
89
  ```text
90
90
  # Run the coverage/ledger/staleness/trust checks (0 clean, 1 red, 2 usage)
91
91
  canon gate check [--release]
92
92
  ```
93
93
  ```bash
94
- canon gate check
94
+ canon gate check --json
95
95
  ```
96
96
  ```text
97
97
  # Read stored records across every storage tier
98
98
  canon query --kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding> [--since <TIMESTAMP>] [--plugin <PLUGIN_ID> | --history] [--change <CHANGE_ID>] [--status <STATUS>] [--domain <NAME>] [--include-sensitive] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
99
99
  ```
100
100
  ```bash
101
- canon query --kind evidence
101
+ canon query --kind evidence --json
102
102
  ```
103
103
  ```text
104
104
  # Fetch role-scoped strategy guidance
105
- canon retrieve --for-role <ROLE> [--regime <KEY>] [--domain <NAME>] [--subject <SUBJECT_ID>] [--limit <N>]
105
+ canon retrieve --for-role <ROLE> (--regime <KEY> | --domain <NAME>) [--subject <SUBJECT_ID> (with --domain)] [--limit <N>]
106
106
  ```
107
107
  ```bash
108
- canon retrieve --for-role reviewer --domain dev --limit 20
108
+ canon retrieve --for-role reviewer --domain dev --limit 20 --json
109
109
  ```
110
110
  ```text
111
111
  # Append a tagged scenario stub to its .feature file (created if missing); many at once with `--input`
112
112
  canon scenario new <SCENARIO_ID> --title <TEXT> [--subject <SUBJECT_ID>] [--lane <NAME>] [--case <NAME>] [--flow <FLOW_ID>] [--change <CHANGE_ID> (with --flow)] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--feature <FILE>] [--project <PROJECT_ID>] [--input]
113
113
  ```
114
114
  ```bash
115
- canon scenario new auth.login.02 --title "Sign out" --feature .canon/specs/kind=feature/area=auth/login.feature
115
+ canon scenario new auth.login.02 --title "Sign out" --feature .canon/specs/kind=feature/area=auth/login.feature --json
116
116
  ```
117
117
  ```text
118
118
  # Describe canon's own commands
119
- canon schema [<PATH>]* [--errors | --error <CODE>]
119
+ canon schema [<PATH>]* [--errors | --error <CODE> | --warning <CODE> | --warnings]
120
120
  ```
121
121
  ```bash
122
- canon schema evidence add
122
+ canon schema evidence add --json
123
123
  ```
124
124
  ```text
125
125
  # Search records, brief sections and scenario text, with each hit's neighbors in the record graph
126
126
  canon search <TEXT> [--kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding|brief>]* [--expand <N>] [--limit <N>]
127
127
  ```
128
128
  ```bash
129
- canon search timeout --kind finding
129
+ canon search timeout --kind finding --json
130
130
  ```
131
131
  ```text
132
132
  # Print a guide built into this binary (markdown on stdout); the installed SKILL.md is a stub that points here
133
133
  canon skills show <NAME> [--full]
134
134
  ```
135
135
  ```bash
136
- canon skills show canon --full
136
+ canon skills show canon --full --json
137
137
  ```
138
138
  ```text
139
139
  # Show where this repo stands: subjects by status, their gaps, and the next commands
140
140
  canon status [--fields <FIELDS>]
141
141
  ```
142
142
  ```bash
143
- canon status
143
+ canon status --json
144
144
  ```
145
145
  ```text
146
146
  # Link an imported plan change to a subject (adopting it under another subject adds that subject; a change may belong to several)
147
147
  canon subject adopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
148
148
  ```
149
149
  ```bash
150
- canon subject adopt demo --change add-login
150
+ canon subject adopt demo --change add-login --json
151
151
  ```
152
152
  ```text
153
153
  # Author a new subject at status `proposed`
154
154
  canon subject new <SUBJECT_ID> --domain <NAME> --title <TEXT> [--summary <TEXT>] [--owner-role <ROLE>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--input]
155
155
  ```
156
156
  ```bash
157
- canon subject new payments --domain dev --title Payments
157
+ canon subject new payments --domain dev --title Payments --json
158
158
  ```
159
159
  ```text
160
160
  # Take a change back out of a subject (the mirror of adopt; refused for a change whose brief is approved)
161
161
  canon subject unadopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
162
162
  ```
163
163
  ```bash
164
- canon subject unadopt demo --change add-login
164
+ canon subject unadopt demo --change add-login --json
165
165
  ```
166
166
  ```text
167
167
  # Follow a finding's review loop in time order: review, finding, fix, re-review, evidence
168
168
  canon trace <ID>
169
169
  ```
170
170
  ```bash
171
- canon trace add-login_1_1
171
+ canon trace add-login_1_1 --json
172
172
  ```
173
173
  <!-- canon:generated commands-planner end -->
174
174