@journeykit/canon 0.34.0 → 0.36.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/dist/skills/SKILL.src.md +47 -30
- package/dist/skills/reference/canon-artifact-ingest.md +6 -3
- package/dist/skills/reference/canon-authoring.md +9 -5
- package/dist/skills/reference/canon-context.md +6 -3
- package/dist/skills/reference/canon-fmt.md +2 -1
- package/dist/skills/reference/canon-gate.md +29 -21
- package/dist/skills/reference/canon-inventory.md +16 -11
- package/dist/skills/reference/canon-plan-import.md +6 -3
- package/dist/skills/reference/canon-plugins.md +12 -6
- package/dist/skills/reference/canon-policy.md +3 -3
- package/dist/skills/reference/canon-report-dashboard.md +11 -8
- package/dist/skills/reference/canon-review.md +8 -7
- package/dist/skills/reference/canon-session-ingest.md +12 -6
- package/dist/skills/reference/canon-storage.md +47 -17
- package/dist/skills/reference/canon-subject.md +45 -35
- package/dist/skills/reference/role-implementer.md +33 -33
- package/dist/skills/reference/role-orchestrator.md +83 -77
- package/dist/skills/reference/role-planner.md +28 -28
- package/dist/skills/reference/role-reviewer.md +29 -29
- package/man/canon-adapter-authorize.1 +2 -2
- package/man/canon-adapter-validate.1 +2 -2
- package/man/canon-adapter.1 +2 -2
- package/man/canon-artifacts-move.1 +6 -6
- package/man/canon-artifacts-store.1 +2 -2
- package/man/canon-artifacts-verify.1 +2 -2
- package/man/canon-artifacts.1 +2 -2
- package/man/canon-brief-approve.1 +5 -4
- package/man/canon-brief-check.1 +2 -2
- package/man/canon-brief-show.1 +2 -2
- package/man/canon-brief.1 +2 -2
- package/man/canon-change-new.1 +2 -2
- package/man/canon-change.1 +2 -2
- package/man/canon-completion.1 +2 -2
- package/man/canon-context-pack-add.1 +2 -2
- package/man/canon-context-pack-show.1 +2 -2
- package/man/canon-context-pack-verify.1 +2 -2
- package/man/canon-context-pack.1 +2 -2
- package/man/canon-context.1 +2 -2
- package/man/canon-dashboard.1 +2 -2
- package/man/canon-demo-init.1 +2 -2
- package/man/canon-demo-review.1 +2 -2
- package/man/canon-demo.1 +2 -2
- package/man/canon-dispatch-begin.1 +2 -2
- package/man/canon-dispatch-diff.1 +2 -2
- package/man/canon-dispatch-end.1 +2 -2
- package/man/canon-dispatch.1 +2 -2
- package/man/canon-divergence-accept.1 +2 -2
- package/man/canon-divergence-add.1 +3 -3
- package/man/canon-divergence-defer.1 +3 -3
- package/man/canon-divergence-list.1 +2 -2
- package/man/canon-divergence-resolve.1 +3 -3
- package/man/canon-divergence.1 +2 -2
- package/man/canon-evidence-add.1 +5 -5
- package/man/canon-evidence-approval-payload.1 +3 -3
- package/man/canon-evidence-audit.1 +4 -4
- package/man/canon-evidence.1 +2 -2
- package/man/canon-export.1 +2 -2
- package/man/canon-feature-new.1 +2 -2
- package/man/canon-feature.1 +2 -2
- package/man/canon-finding-add.1 +3 -3
- package/man/canon-finding-close.1 +2 -2
- package/man/canon-finding-list.1 +2 -2
- package/man/canon-finding.1 +2 -2
- package/man/canon-format.1 +2 -2
- package/man/canon-gate-check.1 +2 -2
- package/man/canon-gate-install-hooks.1 +2 -2
- package/man/canon-gate-promote.1 +2 -2
- package/man/canon-gate.1 +2 -2
- package/man/canon-ingest-plans.1 +2 -2
- package/man/canon-ingest-records.1 +2 -2
- package/man/canon-ingest-sessions.1 +2 -2
- package/man/canon-ingest.1 +2 -2
- package/man/canon-init.1 +7 -7
- package/man/canon-inventory-sync.1 +2 -2
- package/man/canon-inventory.1 +2 -2
- package/man/canon-ledger-compact.1 +5 -5
- package/man/canon-ledger.1 +3 -3
- package/man/canon-migrate.1 +8 -8
- package/man/canon-plugin-sync.1 +2 -2
- package/man/canon-plugin.1 +2 -2
- package/man/canon-policy-approve.1 +2 -2
- package/man/canon-policy-show.1 +2 -2
- package/man/canon-policy.1 +2 -2
- package/man/canon-prompt-add.1 +2 -2
- package/man/canon-prompt-show.1 +2 -2
- package/man/canon-prompt.1 +2 -2
- package/man/canon-purge.1 +7 -7
- package/man/canon-query.1 +2 -2
- package/man/canon-regime-show.1 +2 -2
- package/man/canon-regime.1 +2 -2
- package/man/canon-report-build.1 +2 -2
- package/man/canon-report-check.1 +2 -2
- package/man/canon-report-snapshot.1 +2 -2
- package/man/canon-report.1 +2 -2
- package/man/canon-retrieve.1 +2 -2
- package/man/canon-review-change.1 +3 -3
- package/man/canon-review-scenario.1 +3 -3
- package/man/canon-review.1 +2 -2
- package/man/canon-scenario-new.1 +2 -2
- package/man/canon-scenario.1 +2 -2
- package/man/canon-schema.1 +10 -4
- package/man/canon-search.1 +2 -2
- package/man/canon-selftest.1 +2 -2
- package/man/canon-skills-check.1 +2 -2
- package/man/canon-skills-doctor.1 +2 -2
- package/man/canon-skills-install.1 +2 -2
- package/man/canon-skills-show.1 +5 -5
- package/man/canon-skills.1 +2 -2
- package/man/canon-status.1 +2 -2
- package/man/canon-strategy-approval-payload.1 +2 -2
- package/man/canon-strategy-promote.1 +2 -2
- package/man/canon-strategy-rollback.1 +2 -2
- package/man/canon-strategy.1 +2 -2
- package/man/canon-subject-adopt.1 +2 -2
- package/man/canon-subject-move.1 +2 -2
- package/man/canon-subject-new.1 +2 -2
- package/man/canon-subject-show.1 +2 -2
- package/man/canon-subject-unadopt.1 +3 -3
- package/man/canon-subject.1 +2 -2
- package/man/canon-task-done.1 +2 -2
- package/man/canon-task.1 +2 -2
- package/man/canon-tier-age.1 +5 -5
- package/man/canon-tier.1 +2 -2
- package/man/canon-trace.1 +2 -2
- package/man/canon.1 +3 -3
- package/package.json +4 -4
|
@@ -4,7 +4,7 @@ You run the loop across agents and move the subject. You write no brief,
|
|
|
4
4
|
code or review yourself. Declare the role with `CANON_ROLE=orchestrator` (or
|
|
5
5
|
`--as orchestrator`); your `canon status` also lists the human's steps. The
|
|
6
6
|
human's acts (`brief approve`, `policy approve`, `divergence accept`) refuse
|
|
7
|
-
every agent role, you included (`
|
|
7
|
+
every agent role, you included (`ACTOR_DENIED`), unless you record the answer the
|
|
8
8
|
human gave you in the conversation with `--relayed-via <tool>` (below). You never
|
|
9
9
|
run them without that answer, and never remove or unset your role (`env -u CANON_ROLE`,
|
|
10
10
|
dropping `--as`) to get past the refusal.
|
|
@@ -18,423 +18,423 @@ 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 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
|
-
|
|
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; none is the key left out, `[]` is refused), 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
|
+
A `usage:` line shows the syntax and is not itself a command to run (the runnable example under it is): `<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
|
|
25
25
|
# Authorize declared capabilities against repository policy (preflight only)
|
|
26
|
-
canon adapter authorize --response <FILE>
|
|
26
|
+
usage: canon adapter authorize --response <FILE>
|
|
27
27
|
```
|
|
28
28
|
```bash
|
|
29
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
|
-
canon adapter validate --response <FILE>
|
|
33
|
+
usage: canon adapter validate --response <FILE>
|
|
34
34
|
```
|
|
35
35
|
```bash
|
|
36
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
|
|
40
|
-
canon artifacts move --tier <TIER> [--commit --plan-digest <
|
|
41
|
-
# a bare run previews and prints planDigest; `--commit --plan-digest <
|
|
40
|
+
usage: canon artifacts move --tier <TIER> [--commit --plan-digest <PLAN_DIGEST>] [--input]
|
|
41
|
+
# a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
|
|
42
42
|
```
|
|
43
43
|
```bash
|
|
44
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
|
-
canon artifacts store [--max-artifact-mib <N>] [--dry-run] [--input]
|
|
48
|
+
usage: canon artifacts store [--max-artifact-mib <N>] [--dry-run] [--input]
|
|
49
49
|
```
|
|
50
50
|
```bash
|
|
51
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
|
-
canon artifacts verify [--full]
|
|
55
|
+
usage: canon artifacts verify [--full]
|
|
56
56
|
```
|
|
57
57
|
```bash
|
|
58
58
|
canon artifacts verify --json
|
|
59
59
|
```
|
|
60
60
|
```text
|
|
61
61
|
# Write the shell completion script for canon (bash, zsh or fish)
|
|
62
|
-
canon completion <SHELL>
|
|
62
|
+
usage: canon completion <SHELL>
|
|
63
63
|
```
|
|
64
64
|
```bash
|
|
65
65
|
canon completion zsh --json
|
|
66
66
|
```
|
|
67
67
|
```text
|
|
68
68
|
# Show what you can author here: record kinds, fields, enums, policies
|
|
69
|
-
canon context [--fields <FIELDS>]
|
|
69
|
+
usage: canon context [--fields <FIELDS>]
|
|
70
70
|
```
|
|
71
71
|
```bash
|
|
72
72
|
canon context --json
|
|
73
73
|
```
|
|
74
74
|
```text
|
|
75
75
|
# Create an immutable context pack from a repository-local JSON manifest
|
|
76
|
-
canon context-pack add --manifest <FILE> [--input]
|
|
76
|
+
usage: canon context-pack add --manifest <FILE> [--input]
|
|
77
77
|
```
|
|
78
78
|
```bash
|
|
79
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
|
-
canon context-pack show <PACK_ID>
|
|
83
|
+
usage: canon context-pack show <PACK_ID>
|
|
84
84
|
```
|
|
85
85
|
```bash
|
|
86
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
|
-
canon context-pack verify <PACK_ID>
|
|
90
|
+
usage: canon context-pack verify <PACK_ID>
|
|
91
91
|
```
|
|
92
92
|
```bash
|
|
93
93
|
canon context-pack verify sha256:0000000000000000000000000000000000000000000000000000000000000000 --json
|
|
94
94
|
```
|
|
95
95
|
```text
|
|
96
96
|
# Serve the local status dashboard
|
|
97
|
-
canon dashboard [--snapshot <DIR>] [--port <N>] [--input]
|
|
97
|
+
usage: canon dashboard [--snapshot <DIR>] [--port <N>] [--input]
|
|
98
98
|
```
|
|
99
99
|
```bash
|
|
100
100
|
canon dashboard --json
|
|
101
101
|
```
|
|
102
102
|
```text
|
|
103
103
|
# Scaffold the demo repo (gate starts RED)
|
|
104
|
-
canon demo init [--input]
|
|
104
|
+
usage: canon demo init [--input]
|
|
105
105
|
```
|
|
106
106
|
```bash
|
|
107
107
|
canon demo init --repo canon-demo --json
|
|
108
108
|
```
|
|
109
109
|
```text
|
|
110
110
|
# Record the missing reviewer evidence (gate turns GREEN)
|
|
111
|
-
canon demo review [--input]
|
|
111
|
+
usage: canon demo review [--input]
|
|
112
112
|
```
|
|
113
113
|
```bash
|
|
114
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> (with --skill)] [--manifest <FILE>] [--prompt-bundle <NAME@VERSION>] [--task <TASK_ID>] [--parent-run <RUN_ID>] [--input]
|
|
118
|
+
usage: 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
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
|
-
canon dispatch diff
|
|
125
|
+
usage: canon dispatch diff
|
|
126
126
|
```
|
|
127
127
|
```bash
|
|
128
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
|
-
canon dispatch end <RUN_ID> --run-outcome <succeeded|failed> [--input]
|
|
132
|
+
usage: canon dispatch end <RUN_ID> --run-outcome <succeeded|failed> [--input]
|
|
133
133
|
```
|
|
134
134
|
```bash
|
|
135
135
|
canon dispatch end 01ARZ3NDEKTSV4RRFFQ69G5FAV --run-outcome succeeded --json
|
|
136
136
|
```
|
|
137
137
|
```text
|
|
138
138
|
# List the current divergence burn-down state
|
|
139
|
-
canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
139
|
+
usage: canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
140
140
|
```
|
|
141
141
|
```bash
|
|
142
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
|
-
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>]*
|
|
146
|
+
usage: 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
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
|
-
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]
|
|
153
|
+
usage: 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
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
|
-
canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
160
|
+
usage: canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
161
161
|
```
|
|
162
162
|
```bash
|
|
163
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
|
-
canon format [<DIR>]
|
|
167
|
+
usage: canon format [<DIR>]
|
|
168
168
|
```
|
|
169
169
|
```bash
|
|
170
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
|
-
canon gate check [--release]
|
|
174
|
+
usage: canon gate check [--release]
|
|
175
175
|
```
|
|
176
176
|
```bash
|
|
177
177
|
canon gate check --json
|
|
178
178
|
```
|
|
179
179
|
```text
|
|
180
180
|
# Install the gate hook into .claude/settings.json / .codex/hooks.json
|
|
181
|
-
canon gate install-hooks [--event <NAME>] [--matcher <TEXT>] [--command <TEXT>] [--timeout <N>] [--dry-run] [--input]
|
|
181
|
+
usage: canon gate install-hooks [--event <NAME>] [--matcher <TEXT>] [--command <TEXT>] [--timeout <N>] [--dry-run] [--input]
|
|
182
182
|
```
|
|
183
183
|
```bash
|
|
184
184
|
canon gate install-hooks --json
|
|
185
185
|
```
|
|
186
186
|
```text
|
|
187
187
|
# Import plans as Change/Task records
|
|
188
|
-
canon ingest plans [--dialect <NAME> --plan-source <DIR>] [--dry-run] [--input]
|
|
188
|
+
usage: canon ingest plans [--dialect <NAME> --plan-source <DIR>] [--dry-run] [--input]
|
|
189
189
|
```
|
|
190
190
|
```bash
|
|
191
191
|
canon ingest plans --json
|
|
192
192
|
```
|
|
193
193
|
```text
|
|
194
194
|
# Import review/divergence/task/handoff records and derive verdicts
|
|
195
|
-
canon ingest records [--watch] [--interval-secs <N>] [--dry-run] [--run <RUN_ID>] [--input]
|
|
195
|
+
usage: canon ingest records [--watch] [--interval-secs <N>] [--dry-run] [--run <RUN_ID>] [--input]
|
|
196
196
|
```
|
|
197
197
|
```bash
|
|
198
198
|
canon ingest records --json
|
|
199
199
|
```
|
|
200
200
|
```text
|
|
201
201
|
# Import agent CLI session transcripts (omp/pi, Claude Code, Codex, Hermes)
|
|
202
|
-
canon ingest sessions [--watch] [--interval-secs <N>] [--home <DIR>] [--full] [--all-workspaces] [--dry-run] [--input]
|
|
202
|
+
usage: canon ingest sessions [--watch] [--interval-secs <N>] [--home <DIR>] [--full] [--all-workspaces] [--dry-run] [--input]
|
|
203
203
|
```
|
|
204
204
|
```bash
|
|
205
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
|
-
canon init [--check] [--no-agents-md | --check] [--policy <light|standard|strict> | --check | --no-policy] [--providers <LIST> | --check] [--language <TAG> | --check] [--dry-run | --check] [--input]
|
|
209
|
+
usage: 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
212
|
canon init --json
|
|
213
213
|
```
|
|
214
214
|
```text
|
|
215
215
|
# Validate each spec root, then materialize scenario index records
|
|
216
|
-
canon inventory sync [--spec-root <DIR>] [--dry-run] [--input]
|
|
216
|
+
usage: canon inventory sync [--spec-root <DIR>] [--dry-run] [--input]
|
|
217
217
|
```
|
|
218
218
|
```bash
|
|
219
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
|
|
223
|
-
canon ledger compact [--commit --plan-digest <
|
|
224
|
-
# a bare run previews and prints planDigest; `--commit --plan-digest <
|
|
223
|
+
usage: canon ledger compact [--commit --plan-digest <PLAN_DIGEST>] [--input]
|
|
224
|
+
# a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
|
|
225
225
|
```
|
|
226
226
|
```bash
|
|
227
227
|
canon ledger compact --json
|
|
228
228
|
```
|
|
229
229
|
```text
|
|
230
230
|
# Bring a repo from an earlier canon up to date
|
|
231
|
-
canon migrate [--commit --plan-digest <
|
|
232
|
-
# a bare run previews and prints planDigest; `--commit --plan-digest <
|
|
231
|
+
usage: canon migrate [--commit --plan-digest <PLAN_DIGEST>] [--revert | --relayed-via <NAME>] [--backup <DIR> (with --revert)] [--actor <ACTOR_ID> (with --relayed-via)] [--approver <NAME> (with --relayed-via)] [--note <TEXT> (with --relayed-via)] [--input]
|
|
232
|
+
# a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
|
|
233
233
|
```
|
|
234
234
|
```bash
|
|
235
235
|
canon migrate --json
|
|
236
236
|
```
|
|
237
237
|
```text
|
|
238
238
|
# Validate and write a plugin's overlay records
|
|
239
|
-
canon plugin sync <PLUGIN_ID> [--spec-root <DIR>] [--dry-run] [--input]
|
|
239
|
+
usage: canon plugin sync <PLUGIN_ID> [--spec-root <DIR>] [--dry-run] [--input]
|
|
240
240
|
```
|
|
241
241
|
```bash
|
|
242
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
|
-
canon policy show
|
|
246
|
+
usage: canon policy show
|
|
247
247
|
```
|
|
248
248
|
```bash
|
|
249
249
|
canon policy show --json
|
|
250
250
|
```
|
|
251
251
|
```text
|
|
252
252
|
# Add a prompt bundle from a repository-local JSON manifest
|
|
253
|
-
canon prompt add <NAME@VERSION> --manifest <FILE> [--input]
|
|
253
|
+
usage: canon prompt add <NAME@VERSION> --manifest <FILE> [--input]
|
|
254
254
|
```
|
|
255
255
|
```bash
|
|
256
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
|
-
canon prompt show <NAME@VERSION>
|
|
260
|
+
usage: canon prompt show <NAME@VERSION>
|
|
261
261
|
```
|
|
262
262
|
```bash
|
|
263
263
|
canon prompt show reviewer@v1 --json
|
|
264
264
|
```
|
|
265
265
|
```text
|
|
266
266
|
# Remove allowlisted records older than a cutoff
|
|
267
|
-
canon purge --kind <session|run|event|trajectory> --before <TIMESTAMP> [--commit --plan-digest <
|
|
268
|
-
# a bare run previews and prints planDigest; `--commit --plan-digest <
|
|
267
|
+
usage: canon purge --kind <session|run|event|trajectory> --before <TIMESTAMP> [--commit --plan-digest <PLAN_DIGEST>] [--input]
|
|
268
|
+
# a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
|
|
269
269
|
```
|
|
270
270
|
```bash
|
|
271
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
|
-
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>]
|
|
275
|
+
usage: 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
278
|
canon query --kind evidence --json
|
|
279
279
|
```
|
|
280
280
|
```text
|
|
281
281
|
# Build a canonical regime key for hook scripts
|
|
282
|
-
canon regime show --role-segment <NAME> --repo-name <NAME> --area <NAME> --hash <HASH>
|
|
282
|
+
usage: canon regime show --role-segment <NAME> --repo-name <NAME> --area <NAME> --hash <HASH>
|
|
283
283
|
```
|
|
284
284
|
```bash
|
|
285
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
|
-
canon report build [--input]
|
|
289
|
+
usage: canon report build [--input]
|
|
290
290
|
```
|
|
291
291
|
```bash
|
|
292
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
|
-
canon report check
|
|
296
|
+
usage: canon report check
|
|
297
297
|
```
|
|
298
298
|
```bash
|
|
299
299
|
canon report check --json
|
|
300
300
|
```
|
|
301
301
|
```text
|
|
302
302
|
# Export the panel marts to <DIR>/*.parquet plus manifest.json
|
|
303
|
-
canon report snapshot <DIR> [--input]
|
|
303
|
+
usage: canon report snapshot <DIR> [--input]
|
|
304
304
|
```
|
|
305
305
|
```bash
|
|
306
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> (with --domain)] [--limit <N>]
|
|
310
|
+
usage: canon retrieve --for-role <ROLE> (--regime <KEY> | --domain <NAME>) [--subject <SUBJECT_ID> (with --domain)] [--limit <N>]
|
|
311
311
|
```
|
|
312
312
|
```bash
|
|
313
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>]* [--
|
|
317
|
+
usage: canon schema [<PATH>]* [--schemas | --error <CODE> | --errors | --warning <CODE> | --warnings]
|
|
318
318
|
```
|
|
319
319
|
```bash
|
|
320
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
|
-
canon search <TEXT> [--kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding|brief>]* [--expand <N>] [--limit <N>]
|
|
324
|
+
usage: 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
327
|
canon search timeout --kind finding --json
|
|
328
328
|
```
|
|
329
329
|
```text
|
|
330
330
|
# Run canon's built-in fixture self-tests
|
|
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>]
|
|
331
|
+
usage: 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
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
|
-
canon skills check [--skills-source <DIR>] [--providers <LIST>]
|
|
338
|
+
usage: canon skills check [--skills-source <DIR>] [--providers <LIST>]
|
|
339
339
|
```
|
|
340
340
|
```bash
|
|
341
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
|
-
canon skills doctor [--skills-source <DIR>] [--providers <LIST>]
|
|
345
|
+
usage: canon skills doctor [--skills-source <DIR>] [--providers <LIST>]
|
|
346
346
|
```
|
|
347
347
|
```bash
|
|
348
348
|
canon skills doctor --json
|
|
349
349
|
```
|
|
350
350
|
```text
|
|
351
351
|
# Install the canonical `canon` bundle or legacy developer skills
|
|
352
|
-
canon skills install [--skills-source <DIR>] [--providers <LIST>] [--dry-run] [--input]
|
|
352
|
+
usage: canon skills install [--skills-source <DIR>] [--providers <LIST>] [--dry-run] [--input]
|
|
353
353
|
```
|
|
354
354
|
```bash
|
|
355
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
|
-
canon skills show <NAME> [--full]
|
|
359
|
+
usage: canon skills show [<NAME>] [--full]
|
|
360
360
|
```
|
|
361
361
|
```bash
|
|
362
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
|
-
canon status [--fields <FIELDS>]
|
|
366
|
+
usage: canon status [--fields <FIELDS>]
|
|
367
367
|
```
|
|
368
368
|
```bash
|
|
369
369
|
canon status --json
|
|
370
370
|
```
|
|
371
371
|
```text
|
|
372
372
|
# The unsigned approval payload bytes an external signer signs
|
|
373
|
-
canon strategy approval-payload <STRATEGY_ID> --evaluation <FILE> --approver <NAME> --approval-at <TIMESTAMP>
|
|
373
|
+
usage: canon strategy approval-payload <STRATEGY_ID> --evaluation <FILE> --approver <NAME> --approval-at <TIMESTAMP>
|
|
374
374
|
```
|
|
375
375
|
```bash
|
|
376
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
|
-
canon strategy promote <STRATEGY_ID> [--evaluation <FILE> --approval <FILE>] [--signature-file <FILE> (with --approval)] [--dry-run] [--input]
|
|
380
|
+
usage: canon strategy promote <STRATEGY_ID> [--evaluation <FILE> --approval <FILE>] [--signature-file <FILE> (with --approval)] [--dry-run] [--input]
|
|
381
381
|
```
|
|
382
382
|
```bash
|
|
383
383
|
canon strategy promote 01ARZ3NDEKTSV4RRFFQ69G5FAV --json
|
|
384
384
|
```
|
|
385
385
|
```text
|
|
386
386
|
# Disable an active strategy with durable rollback provenance
|
|
387
|
-
canon strategy rollback <STRATEGY_ID> --reason <TEXT> --actor <ACTOR_ID> --signature-file <FILE> --approval-at <TIMESTAMP> [--contradicting-trajectory <ID>] [--input]
|
|
387
|
+
usage: 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
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
|
-
canon subject adopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
394
|
+
usage: canon subject adopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
395
395
|
```
|
|
396
396
|
```bash
|
|
397
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
|
-
canon subject move <SUBJECT_ID> --to <proposed|specced|building|verifying|shipped|retired> [--override-reason <TEXT>] [--reason <TEXT>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--input]
|
|
401
|
+
usage: 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
404
|
canon subject move demo --to specced --json
|
|
405
405
|
```
|
|
406
406
|
```text
|
|
407
407
|
# Author a new subject at status `proposed`
|
|
408
|
-
canon subject new <SUBJECT_ID> --domain <NAME> --title <TEXT> [--summary <TEXT>] [--owner-role <ROLE>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--input]
|
|
408
|
+
usage: 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
411
|
canon subject new payments --domain dev --title Payments --json
|
|
412
412
|
```
|
|
413
413
|
```text
|
|
414
414
|
# Show a subject (read-only)
|
|
415
|
-
canon subject show <SUBJECT_ID>
|
|
415
|
+
usage: canon subject show <SUBJECT_ID>
|
|
416
416
|
```
|
|
417
417
|
```bash
|
|
418
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
|
-
canon subject unadopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
422
|
+
usage: canon subject unadopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
423
423
|
```
|
|
424
424
|
```bash
|
|
425
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
|
|
429
|
-
canon tier age [--commit --plan-digest <
|
|
430
|
-
# a bare run previews and prints planDigest; `--commit --plan-digest <
|
|
429
|
+
usage: canon tier age [--commit --plan-digest <PLAN_DIGEST>] [--input]
|
|
430
|
+
# a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
|
|
431
431
|
```
|
|
432
432
|
```bash
|
|
433
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
|
-
canon trace <ID>
|
|
437
|
+
usage: canon trace <ID>
|
|
438
438
|
```
|
|
439
439
|
```bash
|
|
440
440
|
canon trace add-login_1_1 --json
|
|
@@ -527,16 +527,16 @@ Approve or fill the form. On their approval record it: `canon brief approve
|
|
|
527
527
|
<ask|AskUserQuestion|chat> --actor <your actor id> --digest <slug>=<the digest
|
|
528
528
|
shown>` (several slugs take one answer, each with its own `--digest`; nothing is written
|
|
529
529
|
if one is refused). The record says you recorded it, with your role, actor and
|
|
530
|
-
tool. `
|
|
530
|
+
tool. `RELAY_DIGEST_STALE` means the brief changed after they saw it: show it
|
|
531
531
|
again. When `canon.yaml` has `approval: { relay: deny }` the call is refused
|
|
532
|
-
(`
|
|
532
|
+
(`ACTOR_DENIED`, naming the key): report the human's own call and wait for them to
|
|
533
533
|
run it. Removing or unsetting your declared role (`env -u CANON_ROLE`,
|
|
534
534
|
dropping `--as`) to get past a refusal is the same act under another label.
|
|
535
535
|
`canon skills show role-planner` has the full procedure. Do not start the
|
|
536
536
|
implementer before `canon brief show <slug>` reports `state: approved`.
|
|
537
537
|
Never approve it yourself and never edit the policy to pass the gate. A
|
|
538
538
|
policy that no longer matches the approval fails closed
|
|
539
|
-
(`
|
|
539
|
+
(`POLICY_APPROVAL_STALE`, or `POLICY_APPROVAL_CORRUPT`): the ship
|
|
540
540
|
guard and the reopen refuse, and `--override-reason` does not waive it. Run
|
|
541
541
|
`canon policy show`, then show the policy to the human, ask them to re-approve
|
|
542
542
|
and record their explicit answer (`canon policy approve --approver <their name>
|
|
@@ -576,7 +576,7 @@ its preview, never from an old digest.
|
|
|
576
576
|
|
|
577
577
|
| The thought | The reality |
|
|
578
578
|
|---|---|
|
|
579
|
-
| "Edit the policy so the gate passes." | A changed policy fails closed (`
|
|
579
|
+
| "Edit the policy so the gate passes." | A changed policy fails closed (`POLICY_APPROVAL_STALE`); ask the human to re-approve or restore it from git. |
|
|
580
580
|
| "The reviewer can be me under another label." | The reviewer is a separate process with its own real session id (#39). |
|
|
581
581
|
| "Approve the brief; the human said they are busy." | An answer they did not give is not recorded. Show the brief, ask, and record only an explicit approval with `--relayed-via`. |
|
|
582
582
|
| "Override the refusal to ship." | Fix the gap the refusal names; `--override-reason` waives only the `require_review` gaps and the brief gap, is recorded on the subject, and is for the human's call, not a shortcut. |
|
|
@@ -591,7 +591,8 @@ directly (a transition is a state change, not a destructive act) and is not
|
|
|
591
591
|
repeatable: a move to the state the subject is already in is refused
|
|
592
592
|
(exit 2), so after a lost response read `subject show` before you retry.
|
|
593
593
|
It refuses a move the policy does not allow (missing evidence or reviews,
|
|
594
|
-
open blockers, an unapproved brief) with
|
|
594
|
+
open blockers, an unapproved brief) with exit 2 and the code of the condition
|
|
595
|
+
(`SUBJECT_APPROVAL_REQUIRED` for a missing review, evidence or approval, `EVIDENCE_STALE`, `SUBJECT_INVALID` for the rest; several causes are `error.details[]`),
|
|
595
596
|
the record unchanged; fix the gap rather than overriding. Move to `shipped`
|
|
596
597
|
yourself once its guard passes, unless the brief says the human ships. A
|
|
597
598
|
follow-up on a shipped subject goes back to `verifying` with `--reason`,
|
|
@@ -614,7 +615,7 @@ red. A bad `--to` fails with `error.field` `--to` and `error.expected`
|
|
|
614
615
|
listing the states.
|
|
615
616
|
|
|
616
617
|
**Done when:** `canon subject show demo` (the subject's id) reports the
|
|
617
|
-
state you moved it to and `canon gate check` is clean; when the move exits
|
|
618
|
+
state you moved it to and `canon gate check` is clean; when the move exits 2,
|
|
618
619
|
read the refusal in `error` of `canon subject move demo --to shipped --json`.
|
|
619
620
|
|
|
620
621
|
## Destructive commands preview first
|
|
@@ -624,9 +625,14 @@ move` and `canon migrate` delete or rewrite existing data. A bare run only
|
|
|
624
625
|
previews: exit 0, nothing written, a report with `planDigest` and
|
|
625
626
|
`effects[]`. Read the effects, then act with `--commit --plan-digest
|
|
626
627
|
<planDigest>`; it refuses (`PLAN_STALE`, exit 2) when the plan recomputed
|
|
627
|
-
now differs from the one you previewed.
|
|
628
|
-
|
|
629
|
-
|
|
628
|
+
now differs from the one you previewed. The digest is `sha256:` and 64 hex
|
|
629
|
+
digits, over the effects and what the plan read, so a file or record the plan
|
|
630
|
+
read that changed since is `PLAN_STALE` too, and `meta.next[0]` is the preview
|
|
631
|
+
to run again. A commit holds the repository write lock for its whole run:
|
|
632
|
+
another command that writes waits for it, and one that waited 30 seconds
|
|
633
|
+
answers `REPO_LOCK_UNAVAILABLE` (exit 2, retryable): run it again. A document passed
|
|
634
|
+
with `--input` never carries `--commit` or `--plan-digest`, and these five
|
|
635
|
+
leaves take one object only (`INPUT_INVALID`).
|
|
630
636
|
|
|
631
637
|
```bash
|
|
632
638
|
canon purge --kind session --before 2026-01-01
|
|
@@ -670,7 +676,7 @@ canon skills install
|
|
|
670
676
|
moves: commit first. In CI run it with full history (`fetch-depth: 0`).
|
|
671
677
|
3. `canon skills install` refreshes the stub and the scripts for the selected
|
|
672
678
|
harnesses; `canon skills check` reports a skill written by another canon
|
|
673
|
-
version (exit 1, `
|
|
679
|
+
version (exit 1, `SKILLS_CHECK_FAILED`), `canon skills doctor` explains it.
|
|
674
680
|
|
|
675
681
|
Commit what it changes, except the backup: `.canon/migrate-backup/` is local and
|
|
676
682
|
git-ignored, and `canon migrate --revert` needs it (keep it until you are sure).
|