@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
|
@@ -6,7 +6,7 @@ brief the human answers once. You build nothing. Declare the role with
|
|
|
6
6
|
then show your steps and count the rest under `waitingOn`. The approvals are
|
|
7
7
|
the human's: `brief approve`, `policy approve`, `divergence accept` and the
|
|
8
8
|
`migrate --commit` that re-binds `Approved:` lines refuse every agent role
|
|
9
|
-
(`
|
|
9
|
+
(`ACTOR_DENIED`, `retryable: false`) unless you record the answer the human gave
|
|
10
10
|
you in the conversation, with `--relayed-via <tool>` (step 4). Without a human's
|
|
11
11
|
explicit answer you never run them, and you never remove or unset your role
|
|
12
12
|
(`env -u CANON_ROLE`, dropping `--as`) to get past the refusal.
|
|
@@ -20,152 +20,152 @@ 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 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
|
-
|
|
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; 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.
|
|
24
|
+
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`).
|
|
25
25
|
|
|
26
26
|
```text
|
|
27
27
|
# Read the brief against the rules
|
|
28
|
-
canon brief check [<CHANGE_ID>]
|
|
28
|
+
usage: canon brief check [<CHANGE_ID>]
|
|
29
29
|
```
|
|
30
30
|
```bash
|
|
31
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
|
-
canon brief show [<CHANGE_ID>] [--body]
|
|
35
|
+
usage: canon brief show [<CHANGE_ID>] [--body]
|
|
36
36
|
```
|
|
37
37
|
```bash
|
|
38
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
|
-
canon change new <CHANGE_ID> --subject <SUBJECT_ID> --title <TEXT> [--change-kind <feature|chore>] [--input]
|
|
42
|
+
usage: canon change new <CHANGE_ID> --subject <SUBJECT_ID> --title <TEXT> [--change-kind <feature|chore>] [--input]
|
|
43
43
|
```
|
|
44
44
|
```bash
|
|
45
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
|
-
canon completion <SHELL>
|
|
49
|
+
usage: canon completion <SHELL>
|
|
50
50
|
```
|
|
51
51
|
```bash
|
|
52
52
|
canon completion zsh --json
|
|
53
53
|
```
|
|
54
54
|
```text
|
|
55
55
|
# Show what you can author here: record kinds, fields, enums, policies
|
|
56
|
-
canon context [--fields <FIELDS>]
|
|
56
|
+
usage: canon context [--fields <FIELDS>]
|
|
57
57
|
```
|
|
58
58
|
```bash
|
|
59
59
|
canon context --json
|
|
60
60
|
```
|
|
61
61
|
```text
|
|
62
62
|
# List the current divergence burn-down state
|
|
63
|
-
canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
63
|
+
usage: canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
64
64
|
```
|
|
65
65
|
```bash
|
|
66
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
|
-
canon feature new <SURFACE> --title <TEXT> [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--project <PROJECT_ID>] [--input]
|
|
70
|
+
usage: canon feature new <SURFACE> --title <TEXT> [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--project <PROJECT_ID>] [--input]
|
|
71
71
|
```
|
|
72
72
|
```bash
|
|
73
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
|
-
canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
77
|
+
usage: canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
78
78
|
```
|
|
79
79
|
```bash
|
|
80
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
|
-
canon format [<DIR>]
|
|
84
|
+
usage: canon format [<DIR>]
|
|
85
85
|
```
|
|
86
86
|
```bash
|
|
87
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
|
-
canon gate check [--release]
|
|
91
|
+
usage: canon gate check [--release]
|
|
92
92
|
```
|
|
93
93
|
```bash
|
|
94
94
|
canon gate check --json
|
|
95
95
|
```
|
|
96
96
|
```text
|
|
97
97
|
# Read stored records across every storage tier
|
|
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>]
|
|
98
|
+
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>]
|
|
99
99
|
```
|
|
100
100
|
```bash
|
|
101
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> (with --domain)] [--limit <N>]
|
|
105
|
+
usage: canon retrieve --for-role <ROLE> (--regime <KEY> | --domain <NAME>) [--subject <SUBJECT_ID> (with --domain)] [--limit <N>]
|
|
106
106
|
```
|
|
107
107
|
```bash
|
|
108
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
|
-
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]
|
|
112
|
+
usage: 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
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>]* [--
|
|
119
|
+
usage: canon schema [<PATH>]* [--schemas | --error <CODE> | --errors | --warning <CODE> | --warnings]
|
|
120
120
|
```
|
|
121
121
|
```bash
|
|
122
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
|
-
canon search <TEXT> [--kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding|brief>]* [--expand <N>] [--limit <N>]
|
|
126
|
+
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>]
|
|
127
127
|
```
|
|
128
128
|
```bash
|
|
129
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
|
-
canon skills show <NAME> [--full]
|
|
133
|
+
usage: canon skills show [<NAME>] [--full]
|
|
134
134
|
```
|
|
135
135
|
```bash
|
|
136
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
|
-
canon status [--fields <FIELDS>]
|
|
140
|
+
usage: canon status [--fields <FIELDS>]
|
|
141
141
|
```
|
|
142
142
|
```bash
|
|
143
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
|
-
canon subject adopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
147
|
+
usage: canon subject adopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
148
148
|
```
|
|
149
149
|
```bash
|
|
150
150
|
canon subject adopt demo --change add-login --json
|
|
151
151
|
```
|
|
152
152
|
```text
|
|
153
153
|
# Author a new subject at status `proposed`
|
|
154
|
-
canon subject new <SUBJECT_ID> --domain <NAME> --title <TEXT> [--summary <TEXT>] [--owner-role <ROLE>] [--actor <ACTOR_ID>] [--session <SESSION_ID>] [--input]
|
|
154
|
+
usage: 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
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
|
-
canon subject unadopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
161
|
+
usage: canon subject unadopt <SUBJECT_ID> --change <CHANGE_ID> [--dry-run] [--input]
|
|
162
162
|
```
|
|
163
163
|
```bash
|
|
164
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
|
-
canon trace <ID>
|
|
168
|
+
usage: canon trace <ID>
|
|
169
169
|
```
|
|
170
170
|
```bash
|
|
171
171
|
canon trace add-login_1_1 --json
|
|
@@ -183,7 +183,7 @@ lists N blockers`); then, while prose advisories remain, to the polish pass
|
|
|
183
183
|
(`polish the brief in <path> (canon skills show brief-polish), then run canon
|
|
184
184
|
brief check <slug>`, with the advisory count and the top rule
|
|
185
185
|
ids); the human step comes after it. A policy that no longer matches its approval fails closed
|
|
186
|
-
(`
|
|
186
|
+
(`POLICY_APPROVAL_STALE`): never edit it; the human re-approves.
|
|
187
187
|
|
|
188
188
|
## Steps
|
|
189
189
|
|
|
@@ -286,9 +286,9 @@ ids); the human step comes after it. A policy that no longer matches its approva
|
|
|
286
286
|
show` and the dashboard name it. Never approve in their name without their
|
|
287
287
|
answer, never write the answer for them, and never edit the policy to make
|
|
288
288
|
the gate pass. A digest that differs from the brief now
|
|
289
|
-
(`
|
|
289
|
+
(`RELAY_DIGEST_STALE`) means the brief changed after they saw it: show
|
|
290
290
|
it again and ask again; nothing was written. Without `--relayed-via` the call is
|
|
291
|
-
`
|
|
291
|
+
`ACTOR_DENIED`; with it and no role declared, `USAGE`. When `canon.yaml`
|
|
292
292
|
turns relaying off (`approval: { relay: deny }`), the refusal names that key:
|
|
293
293
|
report the human's call (`canon brief approve add-login --approver <their
|
|
294
294
|
name> --note "<their own words>"`) and wait for them to run it. Never
|
|
@@ -300,7 +300,7 @@ ids); the human step comes after it. A policy that no longer matches its approva
|
|
|
300
300
|
evidence with its reason and tracking reference, the migrate plan), ask,
|
|
301
301
|
count only an explicit approval, then record with the relay option.
|
|
302
302
|
`canon brief show <slug>` then reports `state: approved`. A brief edited
|
|
303
|
-
after its approval is not approved (`
|
|
303
|
+
after its approval is not approved (`BRIEF_APPROVAL_STALE`): it
|
|
304
304
|
needs a new answer, shown and asked again, and a new `brief approve`. A follow-up that
|
|
305
305
|
adds or changes a step of the brief is a scope change and needs a new
|
|
306
306
|
answer.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
You are the independent second look. Declare the role with
|
|
4
4
|
`CANON_ROLE=reviewer` (or `--as reviewer`); `--role` on `review scenario`,
|
|
5
5
|
`review change` and `finding add` then defaults to `reviewer`. The human's
|
|
6
|
-
acts refuse you (`
|
|
6
|
+
acts refuse you (`ACTOR_DENIED`): `brief approve`, `policy approve` and
|
|
7
7
|
`divergence accept`, unless you record the answer the human gave you in the
|
|
8
8
|
conversation with `--relayed-via <tool>` (the divergence acceptance below).
|
|
9
9
|
Name what the human has to decide; never look for another flag that grants it.
|
|
@@ -19,159 +19,159 @@ 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 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
|
-
|
|
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; 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.
|
|
23
|
+
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`).
|
|
24
24
|
|
|
25
25
|
```text
|
|
26
26
|
# Read the brief against the rules
|
|
27
|
-
canon brief check [<CHANGE_ID>]
|
|
27
|
+
usage: canon brief check [<CHANGE_ID>]
|
|
28
28
|
```
|
|
29
29
|
```bash
|
|
30
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
|
-
canon brief show [<CHANGE_ID>] [--body]
|
|
34
|
+
usage: canon brief show [<CHANGE_ID>] [--body]
|
|
35
35
|
```
|
|
36
36
|
```bash
|
|
37
37
|
canon brief show --json
|
|
38
38
|
```
|
|
39
39
|
```text
|
|
40
40
|
# Write the shell completion script for canon (bash, zsh or fish)
|
|
41
|
-
canon completion <SHELL>
|
|
41
|
+
usage: canon completion <SHELL>
|
|
42
42
|
```
|
|
43
43
|
```bash
|
|
44
44
|
canon completion zsh --json
|
|
45
45
|
```
|
|
46
46
|
```text
|
|
47
47
|
# Show what you can author here: record kinds, fields, enums, policies
|
|
48
|
-
canon context [--fields <FIELDS>]
|
|
48
|
+
usage: canon context [--fields <FIELDS>]
|
|
49
49
|
```
|
|
50
50
|
```bash
|
|
51
51
|
canon context --json
|
|
52
52
|
```
|
|
53
53
|
```text
|
|
54
54
|
# Add a divergence candidate, staged with no run_seq yet
|
|
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]
|
|
55
|
+
usage: 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
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
|
-
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]
|
|
62
|
+
usage: 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
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
|
-
canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
69
|
+
usage: canon divergence list [--as-of <TIMESTAMP>] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
70
70
|
```
|
|
71
71
|
```bash
|
|
72
72
|
canon divergence list --as-of 2030-01-01 --json
|
|
73
73
|
```
|
|
74
74
|
```text
|
|
75
75
|
# Directly record a resolved divergence
|
|
76
|
-
canon divergence resolve <SCENARIO_ID> --actor <ACTOR_ID> [--project <PROJECT_ID>] [--rev <REV>] [--round <N>] [--session <SESSION_ID>] [--detail <TEXT>] [--role <ROLE>] [--input]
|
|
76
|
+
usage: 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
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> (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]
|
|
83
|
+
usage: 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
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
|
-
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]
|
|
90
|
+
usage: 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
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
|
-
canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
97
|
+
usage: canon finding list --change <CHANGE_ID> [--open] [--limit <N> | --all] [--cursor <CURSOR>] [--fields <FIELDS>]
|
|
98
98
|
```
|
|
99
99
|
```bash
|
|
100
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
|
-
canon format [<DIR>]
|
|
104
|
+
usage: canon format [<DIR>]
|
|
105
105
|
```
|
|
106
106
|
```bash
|
|
107
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
|
-
canon gate check [--release]
|
|
111
|
+
usage: canon gate check [--release]
|
|
112
112
|
```
|
|
113
113
|
```bash
|
|
114
114
|
canon gate check --json
|
|
115
115
|
```
|
|
116
116
|
```text
|
|
117
117
|
# Read stored records across every storage tier
|
|
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>]
|
|
118
|
+
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>]
|
|
119
119
|
```
|
|
120
120
|
```bash
|
|
121
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> (with --domain)] [--limit <N>]
|
|
125
|
+
usage: canon retrieve --for-role <ROLE> (--regime <KEY> | --domain <NAME>) [--subject <SUBJECT_ID> (with --domain)] [--limit <N>]
|
|
126
126
|
```
|
|
127
127
|
```bash
|
|
128
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
|
-
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]
|
|
132
|
+
usage: 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
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
|
-
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]
|
|
139
|
+
usage: 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
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>]* [--
|
|
146
|
+
usage: canon schema [<PATH>]* [--schemas | --error <CODE> | --errors | --warning <CODE> | --warnings]
|
|
147
147
|
```
|
|
148
148
|
```bash
|
|
149
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
|
-
canon search <TEXT> [--kind <change|task|scenario|session|run|event|handoff|review|divergence|trajectory|strategy_item|evidence|subject|finding|brief>]* [--expand <N>] [--limit <N>]
|
|
153
|
+
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>]
|
|
154
154
|
```
|
|
155
155
|
```bash
|
|
156
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
|
-
canon skills show <NAME> [--full]
|
|
160
|
+
usage: canon skills show [<NAME>] [--full]
|
|
161
161
|
```
|
|
162
162
|
```bash
|
|
163
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
|
-
canon status [--fields <FIELDS>]
|
|
167
|
+
usage: canon status [--fields <FIELDS>]
|
|
168
168
|
```
|
|
169
169
|
```bash
|
|
170
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
|
-
canon trace <ID>
|
|
174
|
+
usage: canon trace <ID>
|
|
175
175
|
```
|
|
176
176
|
```bash
|
|
177
177
|
canon trace add-login_1_1 --json
|
|
@@ -288,7 +288,7 @@ sign.
|
|
|
288
288
|
`divergence accept` is for a scenario whose honest evidence is `divergent`
|
|
289
289
|
and whose gap is limited by something outside this change (an upstream
|
|
290
290
|
limit, a platform bug) and is tracked there. It records a human's decision,
|
|
291
|
-
so it refuses every agent role (`
|
|
291
|
+
so it refuses every agent role (`ACTOR_DENIED`), you included, unless it records
|
|
292
292
|
the answer the human gave you. What you do: confirm the evidence really is
|
|
293
293
|
divergent and the limit is outside this change, then put to the human the
|
|
294
294
|
scenario ids, the reason, the tracking reference and an expiry when the limit
|
|
@@ -297,11 +297,11 @@ Ask with the harness question tool (`ask` in omp, `AskUserQuestion` in Claude
|
|
|
297
297
|
Code, otherwise in the chat): accept the gap, or not. Only an explicit
|
|
298
298
|
approval counts; a question or a condition is not one, and no answer records
|
|
299
299
|
nothing. Then record it from a session that did not attest the evidence
|
|
300
|
-
(`
|
|
300
|
+
(`DIVERGENCE_DENIED` otherwise): `canon divergence accept <ids> --actor
|
|
301
301
|
<your actor id> --reason "<why>" --tracking <ref> --approver <their name> --note
|
|
302
302
|
"<their answer>" --relayed-via <tool>`; the record carries the relay, the
|
|
303
303
|
approver and their answer. When `canon.yaml` has `approval: { relay: deny }` the
|
|
304
|
-
call is refused (`
|
|
304
|
+
call is refused (`ACTOR_DENIED`, naming the key) and the human runs it themselves.
|
|
305
305
|
You never unset your role to run it. Never suggest it to skip
|
|
306
306
|
a fix the implementer can make in this change. The acceptance pins that
|
|
307
307
|
evidence: new evidence for the scenario, or its expiry, ends it, and the
|
|
@@ -358,7 +358,7 @@ implementer owns. Your last write's `meta.next` names the next step.
|
|
|
358
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_EXISTS`): take the next seq. `finding close` with the same
|
|
362
362
|
disposition is a no-op too.
|
|
363
363
|
|
|
364
364
|
## Excuses that fail
|
|
@@ -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.
|
|
3
|
+
.TH canon-adapter-authorize 1 "authorize 0.36.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-adapter\-authorize \- Authorize declared capabilities against repository policy (preflight only)
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -41,4 +41,4 @@ Print help
|
|
|
41
41
|
\fB\-V\fR, \fB\-\-version\fR
|
|
42
42
|
Print version
|
|
43
43
|
.SH VERSION
|
|
44
|
-
v0.
|
|
44
|
+
v0.36.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.
|
|
3
|
+
.TH canon-adapter-validate 1 "validate 0.36.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-adapter\-validate \- Read and validate one provider\-neutral response envelope
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -41,4 +41,4 @@ Print help
|
|
|
41
41
|
\fB\-V\fR, \fB\-\-version\fR
|
|
42
42
|
Print version
|
|
43
43
|
.SH VERSION
|
|
44
|
-
v0.
|
|
44
|
+
v0.36.0
|
package/man/canon-adapter.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-adapter 1 "adapter 0.
|
|
3
|
+
.TH canon-adapter 1 "adapter 0.36.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-adapter \- Validate a provider\-neutral adapter response without executing a provider
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -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.
|
|
46
|
+
v0.36.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.
|
|
3
|
+
.TH canon-artifacts-move 1 "move 0.36.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
|
|
@@ -30,10 +30,10 @@ orchestrator
|
|
|
30
30
|
The tier to move to: the name of an `s3` tier in canon.yaml (for example `cold`)
|
|
31
31
|
.TP
|
|
32
32
|
\fB\-\-commit\fR
|
|
33
|
-
|
|
33
|
+
Make the change; without it the command only previews.
|
|
34
34
|
.TP
|
|
35
|
-
\fB\-\-plan\-digest\fR \fI<
|
|
36
|
-
The
|
|
35
|
+
\fB\-\-plan\-digest\fR \fI<PLAN_DIGEST>\fR
|
|
36
|
+
The digest of the preview this commit carries out.
|
|
37
37
|
.TP
|
|
38
38
|
\fB\-\-repo\fR \fI<DIR>\fR
|
|
39
39
|
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
@@ -52,7 +52,7 @@ Print version
|
|
|
52
52
|
.SH EXTRA
|
|
53
53
|
Examples:
|
|
54
54
|
canon artifacts move \-\-tier cold
|
|
55
|
-
canon artifacts move \-\-tier cold \-\-commit \-\-plan\-digest <
|
|
55
|
+
canon artifacts move \-\-tier cold \-\-commit \-\-plan\-digest <PLAN_DIGEST>
|
|
56
56
|
|
|
57
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
|
|
|
@@ -60,4 +60,4 @@ The bare run previews: it lists every upload and removal and prints a planDigest
|
|
|
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.
|
|
63
|
+
v0.36.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.
|
|
3
|
+
.TH canon-artifacts-store 1 "store 0.36.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
|
|
@@ -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.
|
|
54
|
+
v0.36.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.
|
|
3
|
+
.TH canon-artifacts-verify 1 "verify 0.36.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
|
|
@@ -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.
|
|
48
|
+
v0.36.0
|
package/man/canon-artifacts.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-artifacts 1 "artifacts 0.
|
|
3
|
+
.TH canon-artifacts 1 "artifacts 0.36.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
|
|
@@ -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.
|
|
45
|
+
v0.36.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.
|
|
3
|
+
.TH canon-brief-approve 1 "approve 0.36.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
|
|
@@ -64,11 +64,12 @@ Examples:
|
|
|
64
64
|
canon brief approve add\-login add\-search fix\-sync \-\-approver Ana \-\-note \*(AqAll three, go.\*(Aq
|
|
65
65
|
|
|
66
66
|
Several ids take one name, one answer and one timestamp. Every id is checked
|
|
67
|
-
first; one refused id refuses the call (
|
|
67
|
+
first; one refused id refuses the call (the first refused id\*(Aqs code, with a
|
|
68
|
+
detail for each) and nothing is
|
|
68
69
|
written. Writes `Approved: <who> <when> — "<words>" (brief sha256:<digest>)` into the
|
|
69
70
|
brief (the digest covers the brief without its `Approved:` lines) and records
|
|
70
71
|
`canon policy approve` in the same call. Edit the brief afterwards and it reads as
|
|
71
|
-
not approved (
|
|
72
|
+
not approved (BRIEF_APPROVAL_STALE) until a human answers again and this
|
|
72
73
|
runs again. Run it only from the human\*(Aqs answer, with their words as \-\-note.
|
|
73
74
|
.SH VERSION
|
|
74
|
-
v0.
|
|
75
|
+
v0.36.0
|
package/man/canon-brief-check.1
CHANGED
|
@@ -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.
|
|
3
|
+
.TH canon-brief-check 1 "check 0.36.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
|
|
@@ -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.
|
|
44
|
+
v0.36.0
|
package/man/canon-brief-show.1
CHANGED
|
@@ -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.
|
|
3
|
+
.TH canon-brief-show 1 "show 0.36.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
|
|
@@ -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.
|
|
53
|
+
v0.36.0
|
package/man/canon-brief.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-brief 1 "brief 0.
|
|
3
|
+
.TH canon-brief 1 "brief 0.36.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-brief \- Check a change\*(Aqs brief (PRD format) and see the next steps; never edits
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -61,4 +61,4 @@ gets one blocker, `brief.old\-format`: `canon migrate` rewrites it. A brief
|
|
|
61
61
|
with fewer than two known headings (written before 0.19) checks as `brief.legacy`, an
|
|
62
62
|
advisory. Without \-\-change, the repo\*(Aqs only live change is checked.
|
|
63
63
|
.SH VERSION
|
|
64
|
-
v0.
|
|
64
|
+
v0.36.0
|