@journeykit/canon 0.32.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 (119) hide show
  1. package/dist/index.js +4 -0
  2. package/dist/skills/SKILL.src.md +41 -19
  3. package/dist/skills/reference/canon-authoring.md +2 -2
  4. package/dist/skills/reference/canon-context.md +2 -2
  5. package/dist/skills/reference/canon-gate.md +2 -2
  6. package/dist/skills/reference/canon-review.md +3 -3
  7. package/dist/skills/reference/canon-storage.md +7 -4
  8. package/dist/skills/reference/canon-subject.md +15 -13
  9. package/dist/skills/reference/role-implementer.md +35 -35
  10. package/dist/skills/reference/role-orchestrator.md +71 -71
  11. package/dist/skills/reference/role-planner.md +25 -25
  12. package/dist/skills/reference/role-reviewer.md +28 -28
  13. package/man/canon-adapter-authorize.1 +3 -3
  14. package/man/canon-adapter-validate.1 +3 -3
  15. package/man/canon-adapter.1 +3 -3
  16. package/man/canon-artifacts-move.1 +4 -4
  17. package/man/canon-artifacts-store.1 +3 -3
  18. package/man/canon-artifacts-verify.1 +3 -3
  19. package/man/canon-artifacts.1 +3 -3
  20. package/man/canon-brief-approve.1 +3 -3
  21. package/man/canon-brief-check.1 +3 -3
  22. package/man/canon-brief-show.1 +3 -3
  23. package/man/canon-brief.1 +3 -3
  24. package/man/canon-change-new.1 +3 -3
  25. package/man/canon-change.1 +3 -3
  26. package/man/canon-completion.1 +3 -3
  27. package/man/canon-context-pack-add.1 +3 -3
  28. package/man/canon-context-pack-show.1 +3 -3
  29. package/man/canon-context-pack-verify.1 +3 -3
  30. package/man/canon-context-pack.1 +3 -3
  31. package/man/canon-context.1 +4 -4
  32. package/man/canon-dashboard.1 +3 -3
  33. package/man/canon-demo-init.1 +3 -3
  34. package/man/canon-demo-review.1 +3 -3
  35. package/man/canon-demo.1 +3 -3
  36. package/man/canon-dispatch-begin.1 +3 -3
  37. package/man/canon-dispatch-diff.1 +3 -3
  38. package/man/canon-dispatch-end.1 +3 -3
  39. package/man/canon-dispatch.1 +3 -3
  40. package/man/canon-divergence-accept.1 +3 -3
  41. package/man/canon-divergence-add.1 +3 -3
  42. package/man/canon-divergence-defer.1 +3 -3
  43. package/man/canon-divergence-list.1 +6 -6
  44. package/man/canon-divergence-resolve.1 +3 -3
  45. package/man/canon-divergence.1 +3 -3
  46. package/man/canon-evidence-add.1 +3 -3
  47. package/man/canon-evidence-approval-payload.1 +3 -3
  48. package/man/canon-evidence-audit.1 +3 -3
  49. package/man/canon-evidence.1 +3 -3
  50. package/man/canon-export.1 +6 -6
  51. package/man/canon-feature-new.1 +3 -3
  52. package/man/canon-feature.1 +3 -3
  53. package/man/canon-finding-add.1 +4 -4
  54. package/man/canon-finding-close.1 +3 -3
  55. package/man/canon-finding-list.1 +6 -6
  56. package/man/canon-finding.1 +3 -3
  57. package/man/canon-format.1 +3 -3
  58. package/man/canon-gate-check.1 +3 -3
  59. package/man/canon-gate-install-hooks.1 +3 -3
  60. package/man/canon-gate-promote.1 +3 -3
  61. package/man/canon-gate.1 +3 -3
  62. package/man/canon-ingest-plans.1 +3 -3
  63. package/man/canon-ingest-records.1 +3 -3
  64. package/man/canon-ingest-sessions.1 +3 -3
  65. package/man/canon-ingest.1 +3 -3
  66. package/man/canon-init.1 +4 -4
  67. package/man/canon-inventory-sync.1 +3 -3
  68. package/man/canon-inventory.1 +3 -3
  69. package/man/canon-ledger-compact.1 +3 -3
  70. package/man/canon-ledger.1 +3 -3
  71. package/man/canon-migrate.1 +3 -3
  72. package/man/canon-plugin-sync.1 +3 -3
  73. package/man/canon-plugin.1 +3 -3
  74. package/man/canon-policy-approve.1 +3 -3
  75. package/man/canon-policy-show.1 +3 -3
  76. package/man/canon-policy.1 +3 -3
  77. package/man/canon-prompt-add.1 +3 -3
  78. package/man/canon-prompt-show.1 +3 -3
  79. package/man/canon-prompt.1 +3 -3
  80. package/man/canon-purge.1 +3 -3
  81. package/man/canon-query.1 +6 -6
  82. package/man/canon-regime-show.1 +3 -3
  83. package/man/canon-regime.1 +3 -3
  84. package/man/canon-report-build.1 +3 -3
  85. package/man/canon-report-check.1 +3 -3
  86. package/man/canon-report-snapshot.1 +3 -3
  87. package/man/canon-report.1 +3 -3
  88. package/man/canon-retrieve.1 +4 -4
  89. package/man/canon-review-change.1 +3 -3
  90. package/man/canon-review-scenario.1 +3 -3
  91. package/man/canon-review.1 +3 -3
  92. package/man/canon-scenario-new.1 +3 -3
  93. package/man/canon-scenario.1 +3 -3
  94. package/man/canon-schema.1 +14 -6
  95. package/man/canon-search.1 +3 -3
  96. package/man/canon-selftest.1 +3 -3
  97. package/man/canon-skills-check.1 +3 -3
  98. package/man/canon-skills-doctor.1 +3 -3
  99. package/man/canon-skills-install.1 +3 -3
  100. package/man/canon-skills-show.1 +3 -3
  101. package/man/canon-skills.1 +3 -3
  102. package/man/canon-status.1 +4 -4
  103. package/man/canon-strategy-approval-payload.1 +3 -3
  104. package/man/canon-strategy-promote.1 +3 -3
  105. package/man/canon-strategy-rollback.1 +3 -3
  106. package/man/canon-strategy.1 +3 -3
  107. package/man/canon-subject-adopt.1 +3 -3
  108. package/man/canon-subject-move.1 +3 -3
  109. package/man/canon-subject-new.1 +4 -4
  110. package/man/canon-subject-show.1 +3 -3
  111. package/man/canon-subject-unadopt.1 +3 -3
  112. package/man/canon-subject.1 +3 -3
  113. package/man/canon-task-done.1 +3 -3
  114. package/man/canon-task.1 +3 -3
  115. package/man/canon-tier-age.1 +3 -3
  116. package/man/canon-tier.1 +3 -3
  117. package/man/canon-trace.1 +3 -3
  118. package/man/canon.1 +3 -3
  119. package/package.json +4 -4
@@ -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,151 +28,151 @@ 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
 
175
- After the first `status`, follow `meta.next` of each write. `brief check`
175
+ After the first `status`, follow `meta.next` of each write. Each `meta.next` entry is runnable: run `canon` + its `argv`; guidance that needs a value you must fill in is in the error `hint` or the report text, not in `meta.next`. `brief check`
176
176
  lists blockers and advisories and exits 1 when it finds blockers; `canon
177
177
  brief show --as planner` names the next steps. The change is an optional
178
178
  operand of both (`canon brief check add-login`); without it they read the
@@ -19,7 +19,7 @@ in your ids. Use only the options on a line; never guess one. Ask `canon schema
19
19
  <command> --json` only for a leaf this block does not list, or after a `USAGE` refusal.
20
20
 
21
21
  <!-- canon:generated commands-reviewer begin -->
22
- 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.
22
+ 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.
23
23
  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`).
24
24
 
25
25
  ```text
@@ -27,154 +27,154 @@ In a syntax line `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` e
27
27
  canon brief check [<CHANGE_ID>]
28
28
  ```
29
29
  ```bash
30
- canon brief check
30
+ canon brief check --json
31
31
  ```
32
32
  ```text
33
33
  # Show where the change stands and the next one to three steps; never edits
34
34
  canon brief show [<CHANGE_ID>] [--body]
35
35
  ```
36
36
  ```bash
37
- canon brief show
37
+ canon brief show --json
38
38
  ```
39
39
  ```text
40
40
  # Write the shell completion script for canon (bash, zsh or fish)
41
41
  canon completion <SHELL>
42
42
  ```
43
43
  ```bash
44
- canon completion zsh
44
+ canon completion zsh --json
45
45
  ```
46
46
  ```text
47
47
  # Show what you can author here: record kinds, fields, enums, policies
48
48
  canon context [--fields <FIELDS>]
49
49
  ```
50
50
  ```bash
51
- canon context
51
+ canon context --json
52
52
  ```
53
53
  ```text
54
54
  # Add a divergence candidate, staged with no run_seq yet
55
55
  canon divergence add <SCENARIO_ID> --actor <ACTOR_ID> [--project <PROJECT_ID>] [--rev <REV>] [--state <open|still-divergent|resolved|deferred>] [--reason <TEXT>] [--expiry <TIMESTAMP>] [--round <N>] [--session <SESSION_ID>] [--detail <TEXT>] [--role <ROLE>] [--promote | --no-promote] [--input]
56
56
  ```
57
57
  ```bash
58
- canon divergence add auth.login.01 --actor alice --role reviewer
58
+ canon divergence add auth.login.01 --actor alice --role reviewer --json
59
59
  ```
60
60
  ```text
61
61
  # Directly record a deferred divergence (requires --reason/--expiry)
62
62
  canon divergence defer <SCENARIO_ID> --actor <ACTOR_ID> --reason <TEXT> --expiry <TIMESTAMP> [--project <PROJECT_ID>] [--rev <REV>] [--round <N>] [--session <SESSION_ID>] [--role <ROLE>] [--input]
63
63
  ```
64
64
  ```bash
65
- canon divergence defer auth.login.01 --actor alice --reason "waiting on the vendor" --expiry 2030-01-01T00:00:00Z --role reviewer
65
+ canon divergence defer auth.login.01 --actor alice --reason "waiting on the vendor" --expiry 2030-01-01T00:00:00Z --role reviewer --json
66
66
  ```
67
67
  ```text
68
68
  # List the current divergence burn-down state
69
69
  canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
70
70
  ```
71
71
  ```bash
72
- canon divergence list --as-of 2030-01-01
72
+ canon divergence list --as-of 2030-01-01 --json
73
73
  ```
74
74
  ```text
75
75
  # Directly record a resolved divergence
76
76
  canon divergence resolve <SCENARIO_ID> --actor <ACTOR_ID> [--project <PROJECT_ID>] [--rev <REV>] [--round <N>] [--session <SESSION_ID>] [--detail <TEXT>] [--role <ROLE>] [--input]
77
77
  ```
78
78
  ```bash
79
- canon divergence resolve auth.login.01 --actor alice --role reviewer
79
+ canon divergence resolve auth.login.01 --actor alice --role reviewer --json
80
80
  ```
81
81
  ```text
82
82
  # Record one code-review finding
83
- canon finding add --change <CHANGE_ID> --round <N> --seq <N> --severity <blocker|should-fix|note> --actor <ACTOR_ID> --summary <TEXT> [--disposition <open|fixed|rejected|deferred>] [--rev <REV>] [--resolution-rev <REV>] [--introduced-rev <REV>] [--introduced-unknown] [--review <REVIEW_ID>] [--file-ref <TEXT>] [--scenario <SCENARIO_ID>]* [--role <ROLE>] [--session <SESSION_ID>] [--promote | --no-promote] [--input]
83
+ canon finding add --change <CHANGE_ID> --round <N> --seq <N> --severity <blocker|should-fix|note> --actor <ACTOR_ID> --summary <TEXT> [--disposition <open|fixed|rejected|deferred>] [--rev <REV>] [--resolution-rev <REV> (with --disposition)] [--introduced-rev <REV> | --introduced-unknown] [--review <REVIEW_ID>] [--file-ref <TEXT>] [--scenario <SCENARIO_ID>]* [--role <ROLE>] [--session <SESSION_ID>] [--promote | --no-promote] [--input]
84
84
  ```
85
85
  ```bash
86
- canon finding add --change add-login --round 1 --seq 2 --severity should-fix --introduced-unknown --actor alice --summary "Token is logged"
86
+ canon finding add --change add-login --round 1 --seq 2 --severity should-fix --introduced-unknown --actor alice --summary "Token is logged" --json
87
87
  ```
88
88
  ```text
89
89
  # Move an already-committed finding's disposition
90
90
  canon finding close <CHANGE_ID> --round <N> --seq <N> --disposition <open|fixed|rejected|deferred> [--resolution-rev <REV>] [--reason <TEXT>] [--actor <ACTOR_ID>] [--role <ROLE>] [--session <SESSION_ID>] [--promote | --no-promote] [--input]
91
91
  ```
92
92
  ```bash
93
- canon finding close add-login --round 1 --seq 1 --disposition rejected --reason "works as designed"
93
+ canon finding close add-login --round 1 --seq 1 --disposition rejected --reason "works as designed" --json
94
94
  ```
95
95
  ```text
96
96
  # List a change's committed findings at their latest version
97
97
  canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
98
98
  ```
99
99
  ```bash
100
- canon finding list --change add-login
100
+ canon finding list --change add-login --json
101
101
  ```
102
102
  ```text
103
103
  # Validate a spec/artifact corpus against canon's format
104
104
  canon format [<DIR>]
105
105
  ```
106
106
  ```bash
107
- canon format .canon/specs
107
+ canon format .canon/specs --json
108
108
  ```
109
109
  ```text
110
110
  # Run the coverage/ledger/staleness/trust checks (0 clean, 1 red, 2 usage)
111
111
  canon gate check [--release]
112
112
  ```
113
113
  ```bash
114
- canon gate check
114
+ canon gate check --json
115
115
  ```
116
116
  ```text
117
117
  # Read stored records across every storage tier
118
118
  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>]
119
119
  ```
120
120
  ```bash
121
- canon query --kind evidence
121
+ canon query --kind evidence --json
122
122
  ```
123
123
  ```text
124
124
  # Fetch role-scoped strategy guidance
125
- canon retrieve --for-role <ROLE> [--regime <KEY>] [--domain <NAME>] [--subject <SUBJECT_ID>] [--limit <N>]
125
+ canon retrieve --for-role <ROLE> (--regime <KEY> | --domain <NAME>) [--subject <SUBJECT_ID> (with --domain)] [--limit <N>]
126
126
  ```
127
127
  ```bash
128
- canon retrieve --for-role reviewer --domain dev --limit 20
128
+ canon retrieve --for-role reviewer --domain dev --limit 20 --json
129
129
  ```
130
130
  ```text
131
131
  # Write one attributed Review record for a chore change directly to the ledger (exactly one provenance ref required)
132
132
  canon review change <CHANGE_ID> --actor <ACTOR_ID> (--upstream-ref <TEXT> | --original-spec-ref <TEXT>) [--project <PROJECT_ID>] [--rev <REV>] [--role <ROLE>] [--session <SESSION_ID>] [--review-outcome <signed|indeterminate|unavailable>] [--reviewer-provider <NAME>] [--reviewer-model <NAME>] [--reviewer-harness <NAME>] [--artifact <PATH>]* [--max-artifact-mib <N>] [--input]
133
133
  ```
134
134
  ```bash
135
- canon review change add-login --actor alice --role reviewer --original-spec-ref docs/prd.md
135
+ canon review change add-login --actor alice --role reviewer --original-spec-ref docs/prd.md --json
136
136
  ```
137
137
  ```text
138
138
  # Write one attributed Review record per scenario directly to the ledger, nothing to promote (exactly one provenance ref required)
139
139
  canon review scenario <SCENARIO_ID>+ --actor <ACTOR_ID> (--upstream-ref <TEXT> | --original-spec-ref <TEXT>) [--project <PROJECT_ID>] [--rev <REV>] [--role <ROLE>] [--session <SESSION_ID>] [--review-outcome <signed|indeterminate|unavailable>] [--reviewer-provider <NAME>] [--reviewer-model <NAME>] [--reviewer-harness <NAME>] [--artifact <PATH>]* [--max-artifact-mib <N>] [--input]
140
140
  ```
141
141
  ```bash
142
- canon review scenario auth.login.01 --actor alice --role reviewer --original-spec-ref docs/prd.md
142
+ canon review scenario auth.login.01 --actor alice --role reviewer --original-spec-ref docs/prd.md --json
143
143
  ```
144
144
  ```text
145
145
  # Describe canon's own commands
146
- canon schema [<PATH>]* [--errors | --error <CODE>]
146
+ canon schema [<PATH>]* [--errors | --error <CODE> | --warning <CODE> | --warnings]
147
147
  ```
148
148
  ```bash
149
- canon schema evidence add
149
+ canon schema evidence add --json
150
150
  ```
151
151
  ```text
152
152
  # Search records, brief sections and scenario text, with each hit's neighbors in the record graph
153
153
  canon search <TEXT> [--kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding|brief>]* [--expand <N>] [--limit <N>]
154
154
  ```
155
155
  ```bash
156
- canon search timeout --kind finding
156
+ canon search timeout --kind finding --json
157
157
  ```
158
158
  ```text
159
159
  # Print a guide built into this binary (markdown on stdout); the installed SKILL.md is a stub that points here
160
160
  canon skills show <NAME> [--full]
161
161
  ```
162
162
  ```bash
163
- canon skills show canon --full
163
+ canon skills show canon --full --json
164
164
  ```
165
165
  ```text
166
166
  # Show where this repo stands: subjects by status, their gaps, and the next commands
167
167
  canon status [--fields <FIELDS>]
168
168
  ```
169
169
  ```bash
170
- canon status
170
+ canon status --json
171
171
  ```
172
172
  ```text
173
173
  # Follow a finding's review loop in time order: review, finding, fix, re-review, evidence
174
174
  canon trace <ID>
175
175
  ```
176
176
  ```bash
177
- canon trace add-login_1_1
177
+ canon trace add-login_1_1 --json
178
178
  ```
179
179
  <!-- canon:generated commands-reviewer end -->
180
180
 
@@ -220,7 +220,7 @@ advisory names it); that is the orchestrator's step, not yours.
220
220
  Run `gate check` once, before `review scenario`: its `unreviewed-promotion`
221
221
  violations are the subjects and scenarios that need your review. Do not loop
222
222
  it. After `review scenario`, read its `meta.next` instead of calling `gate check`
223
- or `status` again.
223
+ or `status` again. Each `meta.next` entry is runnable: run `canon` + its `argv`; guidance that needs a value you must fill in is in the error `hint` or the report text, not in `meta.next`.
224
224
 
225
225
  ## Separate session
226
226
 
@@ -355,7 +355,7 @@ implementer owns. Your last write's `meta.next` names the next step.
355
355
  ## Retry safety
356
356
 
357
357
  `review scenario`, `review change` and `finding add` are content-keyed: an
358
- identical repeat is reported `unchanged` (`meta.unchanged: true`, or the
358
+ identical repeat is reported `unchanged` (`data.unchanged: true`, or the
359
359
  element's `status` in a batch), so after a timeout run the same command
360
360
  again. A different finding under an occupied round and seq is refused
361
361
  (`FINDING_SEQ_OCCUPIED`): take the next seq. `finding close` with the same
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-adapter-authorize 1 "authorize 0.32.0"
3
+ .TH canon-adapter-authorize 1 "authorize 0.34.0"
4
4
  .SH NAME
5
5
  canon\-adapter\-authorize \- Authorize declared capabilities against repository policy (preflight only)
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Authorize declared capabilities against repository policy (preflight only)
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -41,4 +41,4 @@ Print help
41
41
  \fB\-V\fR, \fB\-\-version\fR
42
42
  Print version
43
43
  .SH VERSION
44
- v0.32.0
44
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-adapter-validate 1 "validate 0.32.0"
3
+ .TH canon-adapter-validate 1 "validate 0.34.0"
4
4
  .SH NAME
5
5
  canon\-adapter\-validate \- Read and validate one provider\-neutral response envelope
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Read and validate one provider\-neutral response envelope
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -41,4 +41,4 @@ Print help
41
41
  \fB\-V\fR, \fB\-\-version\fR
42
42
  Print version
43
43
  .SH VERSION
44
- v0.32.0
44
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-adapter 1 "adapter 0.32.0"
3
+ .TH canon-adapter 1 "adapter 0.34.0"
4
4
  .SH NAME
5
5
  canon\-adapter \- Validate a provider\-neutral adapter response without executing a provider
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Validate a provider\-neutral adapter response without executing a provider
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -43,4 +43,4 @@ Examples:
43
43
  canon adapter validate \-\-response response.json
44
44
  canon adapter validate \-\-response response.json \-\-repo . \-\-json
45
45
  .SH VERSION
46
- v0.32.0
46
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts-move 1 "move 0.32.0"
3
+ .TH canon-artifacts-move 1 "move 0.34.0"
4
4
  .SH NAME
5
5
  canon\-artifacts\-move \- Move the local artifact blobs to an object\-store tier, verify them, and remove the local copies
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Move the local artifact blobs to an object\-store tier, verify them, and remove
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -54,10 +54,10 @@ Examples:
54
54
  canon artifacts move \-\-tier cold
55
55
  canon artifacts move \-\-tier cold \-\-commit \-\-plan\-digest <DIGEST>
56
56
 
57
- The bare run previews: it lists every upload and removal and prints a planDigest, and writes nothing. \-\-commit \-\-plan\-digest acts on exactly that plan (PLAN_CHANGED, exit 2, when it changed since).
57
+ The bare run previews: it lists every upload and removal and prints a planDigest, and writes nothing. \-\-commit \-\-plan\-digest acts on exactly that plan (PLAN_STALE, exit 2, when it changed since).
58
58
 
59
59
  \-\-tier names an `s3` tier of canon.yaml\*(Aqs `tiers:` (for example `cold`; its credentials are the tier\*(Aqs own). Every blob in .canon/artifacts/sha256 is hashed, uploaded under <prefix>sha256/<digest> (prefix artifacts/), and read back; only when all of them verified does canon.yaml gain `artifact_store: { backend: <tier>, prefix: artifacts/ }`, after which the local copies are removed and `.canon/artifacts/` is added to .gitignore. Commit the removal with the ledger.
60
60
 
61
61
  Idempotent and resumable: a run stopped anywhere leaves a repo the gate still passes, and the next run finishes; a second run finds nothing to do. A blob whose bytes do not match its name is never moved. Moving back to local is refused; `\-\-tier local` on a local repo is a no\-op.
62
62
  .SH VERSION
63
- v0.32.0
63
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts-store 1 "store 0.32.0"
3
+ .TH canon-artifacts-store 1 "store 0.34.0"
4
4
  .SH NAME
5
5
  canon\-artifacts\-store \- Store the bound files of existing evidence records and current reviews in the artifact store (.canon/artifacts/sha256/)
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Store the bound files of existing evidence records and current reviews in the ar
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -51,4 +51,4 @@ For records written before canon stored bound bytes (0.11\-0.13), and for any ev
51
51
 
52
52
  Exit 0 when the pass ran (the gate decides whether an unstored file matters), 2 when the ledger cannot be read or a write fails.
53
53
  .SH VERSION
54
- v0.32.0
54
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts-verify 1 "verify 0.32.0"
3
+ .TH canon-artifacts-verify 1 "verify 0.34.0"
4
4
  .SH NAME
5
5
  canon\-artifacts\-verify \- Check that the artifact store holds every file the latest evidence and current reviews bind (\-\-full re\-hashes the stored bytes)
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Check that the artifact store holds every file the latest evidence and current r
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -45,4 +45,4 @@ Asks the store canon.yaml\*(Aqs `artifacts:` block selects (default: local, .can
45
45
 
46
46
  Exit 0 when every file is stored, 1 when one is missing or altered (data.problems names each), 2 when the store cannot be used or reached: an unreachable store is a refusal, never a pass.
47
47
  .SH VERSION
48
- v0.32.0
48
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts 1 "artifacts 0.32.0"
3
+ .TH canon-artifacts 1 "artifacts 0.34.0"
4
4
  .SH NAME
5
5
  canon\-artifacts \- Check or move the evidence artifact store (local, or an object\-store tier)
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Check or move the evidence artifact store (local, or an object\-store tier)
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -42,4 +42,4 @@ Store the bound files of existing evidence records and current reviews in the ar
42
42
  canon\-artifacts\-move(1)
43
43
  Move the local artifact blobs to an object\-store tier, verify them, and remove the local copies
44
44
  .SH VERSION
45
- v0.32.0
45
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief-approve 1 "approve 0.32.0"
3
+ .TH canon-brief-approve 1 "approve 0.34.0"
4
4
  .SH NAME
5
5
  canon\-brief\-approve \- Record the human\*(Aqs approval of the brief, bound to its text; refused while `brief check` has blockers
6
6
  .SH SYNOPSIS
@@ -13,7 +13,7 @@ Record the human\*(Aqs approval of the brief, bound to its text; refused while `
13
13
  Who approved (the human, not the agent)
14
14
  .TP
15
15
  \fB\-\-as\fR \fI<ROLE>\fR
16
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
16
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
17
17
  .br
18
18
 
19
19
  .br
@@ -71,4 +71,4 @@ brief (the digest covers the brief without its `Approved:` lines) and records
71
71
  not approved (BRIEF_CHANGED_SINCE_APPROVAL) until a human answers again and this
72
72
  runs again. Run it only from the human\*(Aqs answer, with their words as \-\-note.
73
73
  .SH VERSION
74
- v0.32.0
74
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief-check 1 "check 0.32.0"
3
+ .TH canon-brief-check 1 "check 0.34.0"
4
4
  .SH NAME
5
5
  canon\-brief\-check \- Read the brief against the rules: blocker and advisory findings (exit 0 clean, 1 blockers, 2 refused)
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Read the brief against the rules: blocker and advisory findings (exit 0 clean, 1
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -41,4 +41,4 @@ Print version
41
41
  [\fICHANGE_ID\fR]
42
42
  The change to read (default: the repo\*(Aqs only live change)
43
43
  .SH VERSION
44
- v0.32.0
44
+ v0.34.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief-show 1 "show 0.32.0"
3
+ .TH canon-brief-show 1 "show 0.34.0"
4
4
  .SH NAME
5
5
  canon\-brief\-show \- Show where the change stands and the next one to three steps; never edits
6
6
  .SH SYNOPSIS
@@ -10,7 +10,7 @@ Show where the change stands and the next one to three steps; never edits
10
10
  .SH OPTIONS
11
11
  .TP
12
12
  \fB\-\-as\fR \fI<ROLE>\fR
13
- The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
13
+ The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` is this role unless given
14
14
  .br
15
15
 
16
16
  .br
@@ -50,4 +50,4 @@ Examples:
50
50
 
51
51
  The operand names the change; without it the repo\*(Aqs only live change is read.
52
52
  .SH VERSION
53
- v0.32.0
53
+ v0.34.0