@journeykit/canon 0.29.0 → 0.30.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 +2 -2
- package/dist/skills/reference/canon-gate.md +8 -2
- package/dist/skills/reference/canon-report-dashboard.md +2 -2
- package/dist/skills/reference/canon-review.md +4 -3
- package/dist/skills/reference/canon-storage.md +18 -1
- package/dist/skills/reference/role-implementer.md +1 -1
- package/dist/skills/reference/role-orchestrator.md +4 -3
- package/dist/skills/reference/role-reviewer.md +3 -3
- 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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/man/canon-divergence-defer.1 +2 -2
- package/man/canon-divergence-list.1 +2 -2
- package/man/canon-divergence-resolve.1 +2 -2
- package/man/canon-divergence.1 +2 -2
- package/man/canon-evidence-add.1 +2 -2
- package/man/canon-evidence-approval-payload.1 +2 -2
- package/man/canon-evidence-audit.1 +2 -2
- 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 +17 -5
- 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 +2 -2
- package/man/canon-inventory-sync.1 +2 -2
- package/man/canon-inventory.1 +2 -2
- package/man/canon-ledger-compact.1 +2 -2
- package/man/canon-ledger.1 +2 -2
- package/man/canon-migrate.1 +20 -3
- 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 +2 -2
- 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 +2 -2
- package/man/canon-review-scenario.1 +2 -2
- 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 +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 +2 -2
- 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 +2 -2
- 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 +2 -2
- package/man/canon-tier.1 +2 -2
- package/man/canon.1 +2 -2
- package/package.json +4 -4
package/dist/skills/SKILL.src.md
CHANGED
|
@@ -219,7 +219,7 @@ before anything is written: an invalid element writes nothing and exits 2,
|
|
|
219
219
|
```text
|
|
220
220
|
canon scenario new --input '[{"operands":["auth.login.01"],"title":"Logs in","case":"happy"},{"operands":["auth.login.02"],"title":"Wrong password","case":"failure"}]'
|
|
221
221
|
canon evidence add --input '[{"scenarioId":"auth.login.01","class":"test-run","ref":"npm test","role":"implementer"},{"scenarioId":"auth.login.02","class":"test-run","ref":"npm test","role":"implementer"}]'
|
|
222
|
-
canon finding add --input '[{"changeId":"add-login","round":1,"seq":1,"severity":"note","actorId":"reviewer-1","summary":"Token is logged"},{"changeId":"add-login","round":1,"seq":2,"severity":"blocker","actorId":"reviewer-1","summary":"No rate limit"}]'
|
|
222
|
+
canon finding add --input '[{"changeId":"add-login","round":1,"seq":1,"severity":"note","actorId":"reviewer-1","summary":"Token is logged"},{"changeId":"add-login","round":1,"seq":2,"severity":"blocker","introducedUnknown":true,"actorId":"reviewer-1","summary":"No rate limit"}]'
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
`--input` never carries `--commit` or `--plan-digest`, and the destructive
|
|
@@ -252,7 +252,7 @@ and `canon context` warn when the repo holds 0.27-era state and put
|
|
|
252
252
|
2. `canon migrate --commit --plan-digest <digest>` with that digest applies it.
|
|
253
253
|
It moves the layout, rewrites canon's own hooks and scripts, compacts the
|
|
254
254
|
ledger, replaces an old full skill with the stub, and backs up every file it
|
|
255
|
-
rewrites under `.canon/migrate-backup
|
|
255
|
+
rewrites under `.canon/migrate-backup/` (local and git-ignored; `--revert` needs it). It refuses uncommitted changes
|
|
256
256
|
under a path it moves.
|
|
257
257
|
3. `canon skills install` refreshes the stub and the scripts; `canon skills check`
|
|
258
258
|
confirms them.
|
|
@@ -205,9 +205,15 @@ Two refusals rather than a silent pass, both surfacing as
|
|
|
205
205
|
`divergence`, or `subject` sent anywhere but `local`) refuses, because
|
|
206
206
|
the gate reads one tier and would otherwise pass by seeing nothing.
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
Unparseable rows in those three kinds do NOT surface as
|
|
209
209
|
`malformed-evidence`; they are kept off the evidence violation set on
|
|
210
|
-
purpose, so enabling nothing changes no existing verdict.
|
|
210
|
+
purpose, so enabling nothing changes no existing verdict. A row whose file
|
|
211
|
+
name is not the one its body computes (a layout violation) is the
|
|
212
|
+
exception once `spec_coverage` judges the corpus: the gate names it as
|
|
213
|
+
`malformed-evidence`, because every read skips it and the corpus being
|
|
214
|
+
judged would otherwise be missing it silently. Without the section the
|
|
215
|
+
gate stays as it was; `canon query --kind <kind>` and `canon status`
|
|
216
|
+
report such files.
|
|
211
217
|
|
|
212
218
|
### Accepted divergence and re-verification
|
|
213
219
|
|
|
@@ -182,7 +182,7 @@ In `canon report`'s own render order. Each panel names the view that
|
|
|
182
182
|
computes it; nothing here is derived a second time.
|
|
183
183
|
|
|
184
184
|
- **Trust matrix** (`mart_trust_matrix`) — Change/task coverage × green × who.
|
|
185
|
-
`covered` means at least one `
|
|
185
|
+
`covered` means at least one `evidence` record exists for this `task_id`,
|
|
186
186
|
NOT that policy's REQUIRED evidence is present — that is `canon gate
|
|
187
187
|
check`'s question, and this view deliberately does not answer it. `green`
|
|
188
188
|
is the plain `verdict = 'faithful'` proxy over the latest attestation, not
|
|
@@ -258,7 +258,7 @@ computes it; nothing here is derived a second time.
|
|
|
258
258
|
- **Review rounds** (`mart_review_rounds`) — one row per `(change_id, round)`
|
|
259
259
|
over `Finding` records (`canon finding add`, then `canon finding close` to
|
|
260
260
|
move a finding's disposition), folded to the latest version
|
|
261
|
-
of each `
|
|
261
|
+
of each `(change_id, round, seq)` finding first, so a finding raised
|
|
262
262
|
`open` and later closed is counted once and in one disposition bucket.
|
|
263
263
|
A round that found
|
|
264
264
|
nothing wrote no `Finding` and so has no row: the table
|
|
@@ -27,7 +27,7 @@ The order an agent follows to claim a subject done:
|
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
canon finding add --change-id c-demo --round 1 --seq 1 \
|
|
30
|
-
--severity blocker --disposition open --actor-id reviewer-2 \
|
|
30
|
+
--severity blocker --introduced-unknown --disposition open --actor-id reviewer-2 \
|
|
31
31
|
--summary "unbounded subprocess wait" --session-id review-session-1
|
|
32
32
|
# ... fix, commit ...
|
|
33
33
|
canon finding close c-demo --round 1 --seq 1 \
|
|
@@ -75,7 +75,7 @@ work collapsed into one identity.
|
|
|
75
75
|
canon finding add --change-id <c> --round <n> --seq <n> \
|
|
76
76
|
--severity blocker|should-fix|note --disposition open \
|
|
77
77
|
--actor-id <who> --summary "<one line>" \
|
|
78
|
-
[--rev <rev>] [--resolution-rev <rev>] [--introduced-rev <rev>] [--file-ref path/to/file.rs:120-134] [--scenario-id <id>] [--session-id <id>]
|
|
78
|
+
[--rev <rev>] [--resolution-rev <rev>] [--introduced-rev <rev> | --introduced-unknown] [--file-ref path/to/file.rs:120-134] [--scenario-id <id>] [--session-id <id>]
|
|
79
79
|
canon finding close <c> --round <n> --seq <n> \
|
|
80
80
|
--disposition fixed --resolution-rev <rev> [--actor-id <id>] [--session-id <id>] # or rejected / deferred / open
|
|
81
81
|
canon finding close <c> --round <n> --seq <n> \
|
|
@@ -111,7 +111,8 @@ takes any git revision (`HEAD~1`, a branch, a tag, a full or short sha),
|
|
|
111
111
|
resolved with `git rev-parse --verify <rev>^{commit}`; the record stores
|
|
112
112
|
the full sha. `--rev` (the commit the round reviewed) defaults to `HEAD`,
|
|
113
113
|
and so does `--resolution-rev` on a `fixed` close; `--introduced-rev` has
|
|
114
|
-
no default and is only sourced, never guessed. A
|
|
114
|
+
no default and is only sourced, never guessed. A new `blocker` or `should-fix`
|
|
115
|
+
needs it or `--introduced-unknown` (never both). A revision that names no
|
|
115
116
|
commit is refused (exit `2`). A finding recorded against uncommitted code
|
|
116
117
|
is allowed: the record carries the `codeTree` it saw and `worktreeDirty`.
|
|
117
118
|
Outside git, or in a repository with no commit, the write is refused with
|
|
@@ -48,7 +48,7 @@ canon.yaml TierPolicy: `git` is a BACKEND name, not a rung — canon.yaml's
|
|
|
48
48
|
## Routing a record kind
|
|
49
49
|
|
|
50
50
|
`routing:` is the only place a kind's rung is decided. Keys are the
|
|
51
|
-
stable snake_case kind wire strings (`change`, `
|
|
51
|
+
stable snake_case kind wire strings (`change`, `evidence`,
|
|
52
52
|
`strategy_item`, …) — the same string the record's own `kind` field
|
|
53
53
|
serializes to. Values are `local`/`hot`/`cold`.
|
|
54
54
|
|
|
@@ -132,6 +132,23 @@ has no archive and keeps every version.
|
|
|
132
132
|
**Done when:** after `canon ledger compact --commit --plan-digest <digest
|
|
133
133
|
from the preview>`, a bare `canon ledger compact` previews no effect.
|
|
134
134
|
|
|
135
|
+
## How a record is named
|
|
136
|
+
|
|
137
|
+
Every store names a record the same way: `kind=<kind>/<key>_…_<digest8>.json`.
|
|
138
|
+
One directory level (no `area=`), the kind's key components joined by `_`
|
|
139
|
+
(a record with a `project_id` starts with it, `-` when absent; alternative
|
|
140
|
+
keys carry a tag: `scenario`, `change`, `task`, `run`), and the first 8 hex
|
|
141
|
+
digits of the content's SHA-256 last. Example:
|
|
142
|
+
`kind=review/canon_scenario_gate.check.104_e7f52dd1.json`. A review's pin is
|
|
143
|
+
in its body, not its name, so two reviews of one scenario share a key prefix
|
|
144
|
+
and differ by digest. Free-text ids escape bytes outside `[a-z0-9.-]` as `+`
|
|
145
|
+
and two hex digits. The same key with different content is refused in every
|
|
146
|
+
store. Readers take the digest from the record body, never the name. Evidence
|
|
147
|
+
is `evidence` everywhere (the 0.29 spelling `evidence_record` is gone). A
|
|
148
|
+
0.29 repo warns on read and refuses writes until `canon migrate` (preview),
|
|
149
|
+
then `canon migrate --commit --plan-digest <digest>`, moves it. Full rule:
|
|
150
|
+
`docs/design/ledger-layout.md`.
|
|
151
|
+
|
|
135
152
|
## Where artifact bytes live (`artifact_store:`)
|
|
136
153
|
|
|
137
154
|
```yaml
|
|
@@ -216,7 +216,7 @@ The forms you reach for most (the story's ids; swap in yours):
|
|
|
216
216
|
canon evidence add --all-scenarios --report junit:a.xml --report junit:b.xml --role implementer
|
|
217
217
|
canon evidence add --scenario-id auth.login.01 --report junit:red.xml
|
|
218
218
|
canon evidence add --scenario-id auth.login.01 --verdict divergent --class test-run --ref "upstream limit, tracked in issue 118" --artifact limit.log
|
|
219
|
-
canon finding add --change-id add-login --round 1 --seq 1 --severity should-fix --actor-id unit-1 --summary "Token is logged"
|
|
219
|
+
canon finding add --change-id add-login --round 1 --seq 1 --severity should-fix --introduced-unknown --actor-id unit-1 --summary "Token is logged"
|
|
220
220
|
```
|
|
221
221
|
|
|
222
222
|
Batches are one `--input` document (the keys are option names in camelCase,
|
|
@@ -227,7 +227,7 @@ canon ledger compact
|
|
|
227
227
|
```
|
|
228
228
|
```text
|
|
229
229
|
# Bring a repo from an earlier canon up to date
|
|
230
|
-
canon migrate [--commit --plan-digest <DIGEST>] [--input]
|
|
230
|
+
canon migrate [--commit --plan-digest <DIGEST>] [--revert] [--backup <DIR> (with --revert)] [--input]
|
|
231
231
|
# a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
|
|
232
232
|
```
|
|
233
233
|
```bash
|
|
@@ -635,14 +635,15 @@ canon skills install
|
|
|
635
635
|
(which do not count until then; the gate, `status` and `subject move`
|
|
636
636
|
print one advisory naming it) and replaces an old full skill with the
|
|
637
637
|
stub. It backs up every file it rewrites under
|
|
638
|
-
`.canon/migrate-backup/<timestamp
|
|
638
|
+
`.canon/migrate-backup/<timestamp>/` (local, git-ignored; `--revert` restores from it), is safe to run again (a second run
|
|
639
639
|
finds nothing to move) and refuses uncommitted changes under a path it
|
|
640
640
|
moves: commit first. In CI run it with full history (`fetch-depth: 0`).
|
|
641
641
|
3. `canon skills install` refreshes the stub and the scripts for the selected
|
|
642
642
|
harnesses; `canon skills check` reports a skill written by another canon
|
|
643
643
|
version (exit 1, `SKILLS_DRIFT`), `canon skills doctor` explains it.
|
|
644
644
|
|
|
645
|
-
Commit what it changes
|
|
645
|
+
Commit what it changes, except the backup: `.canon/migrate-backup/` is local and
|
|
646
|
+
git-ignored, and `canon migrate --revert` needs it (keep it until you are sure).
|
|
646
647
|
|
|
647
648
|
**Done when:** `canon migrate` reports nothing left to move, `canon skills
|
|
648
649
|
check` exits 0, and `canon status` and `canon gate check` no longer warn
|
|
@@ -79,10 +79,10 @@ canon divergence resolve auth.login.01 --actor-id alice --role reviewer
|
|
|
79
79
|
```
|
|
80
80
|
```text
|
|
81
81
|
# Record one code-review finding
|
|
82
|
-
canon finding add --change-id <CHANGE_ID> --round <N> --seq <N> --severity <blocker|should-fix|note> --actor-id <ACTOR_ID> --summary <TEXT> [--disposition <open|fixed|rejected|deferred>] [--rev <REV>] [--resolution-rev <REV>] [--introduced-rev <REV>] [--file-ref <TEXT>] [--scenario-id <SCENARIO_ID>]* [--role <ROLE>] [--session-id <SESSION_ID>] [--promote | --no-promote] [--input]
|
|
82
|
+
canon finding add --change-id <CHANGE_ID> --round <N> --seq <N> --severity <blocker|should-fix|note> --actor-id <ACTOR_ID> --summary <TEXT> [--disposition <open|fixed|rejected|deferred>] [--rev <REV>] [--resolution-rev <REV>] [--introduced-rev <REV>] [--introduced-unknown] [--review-id <REVIEW_ID>] [--file-ref <TEXT>] [--scenario-id <SCENARIO_ID>]* [--role <ROLE>] [--session-id <SESSION_ID>] [--promote | --no-promote] [--input]
|
|
83
83
|
```
|
|
84
84
|
```bash
|
|
85
|
-
canon finding add --change-id add-login --round 1 --seq 2 --severity should-fix --actor-id alice --summary "Token is logged"
|
|
85
|
+
canon finding add --change-id add-login --round 1 --seq 2 --severity should-fix --introduced-unknown --actor-id alice --summary "Token is logged"
|
|
86
86
|
```
|
|
87
87
|
```text
|
|
88
88
|
# Move an already-committed finding's disposition
|
|
@@ -187,7 +187,7 @@ Several findings at once are one `--input` array (the keys are option names
|
|
|
187
187
|
in camelCase):
|
|
188
188
|
|
|
189
189
|
```text
|
|
190
|
-
canon finding add --input '[{"changeId":"add-login","round":1,"seq":3,"severity":"note","actorId":"reviewer-1","summary":"Token is logged"},{"changeId":"add-login","round":1,"seq":4,"severity":"should-fix","actorId":"reviewer-1","summary":"Error text leaks the user name"}]'
|
|
190
|
+
canon finding add --input '[{"changeId":"add-login","round":1,"seq":3,"severity":"note","actorId":"reviewer-1","summary":"Token is logged"},{"changeId":"add-login","round":1,"seq":4,"severity":"should-fix","introducedUnknown":true,"actorId":"reviewer-1","summary":"Error text leaks the user name"}]'
|
|
191
191
|
```
|
|
192
192
|
|
|
193
193
|
A review pins what you saw: the scenario's digest plus the verdict
|
|
@@ -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.30.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.30.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.30.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.30.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.30.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.30.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.30.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
|
|
@@ -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.30.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.30.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.30.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.30.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.30.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.30.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.30.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.30.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
|
|
@@ -59,4 +59,4 @@ brief (the digest covers the brief without its `Approved:` lines) and records
|
|
|
59
59
|
not approved (BRIEF_CHANGED_SINCE_APPROVAL) until a human answers again and this
|
|
60
60
|
runs again. Run it only from the human\*(Aqs answer, with their words as \-\-note.
|
|
61
61
|
.SH VERSION
|
|
62
|
-
v0.
|
|
62
|
+
v0.30.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.30.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.30.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.30.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
|
|
@@ -47,4 +47,4 @@ Examples:
|
|
|
47
47
|
|
|
48
48
|
The operand names the change; without it the repo\*(Aqs only live change is read.
|
|
49
49
|
.SH VERSION
|
|
50
|
-
v0.
|
|
50
|
+
v0.30.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.30.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
|
|
@@ -60,4 +60,4 @@ Waive one rule in one section with
|
|
|
60
60
|
A brief without markers (written before 0.19) checks as `brief.legacy`, an
|
|
61
61
|
advisory. Without \-\-change\-id, the repo\*(Aqs only live change is checked.
|
|
62
62
|
.SH VERSION
|
|
63
|
-
v0.
|
|
63
|
+
v0.30.0
|
package/man/canon-change-new.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-change-new 1 "new 0.
|
|
3
|
+
.TH canon-change-new 1 "new 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-change\-new \- Write .canon/changes/<slug>/brief.md, import it, and adopt it into a subject
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -63,4 +63,4 @@ Print version
|
|
|
63
63
|
<\fICHANGE_ID\fR>
|
|
64
64
|
The change\*(Aqs slug (its change_id)
|
|
65
65
|
.SH VERSION
|
|
66
|
-
v0.
|
|
66
|
+
v0.30.0
|
package/man/canon-change.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-change 1 "change 0.
|
|
3
|
+
.TH canon-change 1 "change 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-change \- Write a plan change (.canon/changes/<slug>/brief.md) and adopt it into a subject
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -39,4 +39,4 @@ Write .canon/changes/<slug>/brief.md, import it, and adopt it into a subject
|
|
|
39
39
|
Examples:
|
|
40
40
|
canon change new add\-login \-\-subject\-id auth \-\-title \*(AqAdd login\*(Aq
|
|
41
41
|
.SH VERSION
|
|
42
|
-
v0.
|
|
42
|
+
v0.30.0
|
package/man/canon-completion.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-completion 1 "completion 0.
|
|
3
|
+
.TH canon-completion 1 "completion 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-completion \- Write the shell completion script for canon (bash, zsh or fish)
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -57,4 +57,4 @@ Examples:
|
|
|
57
57
|
|
|
58
58
|
The script is generated from the command tree, so it completes exactly what the parser accepts. It needs no repo and no network.
|
|
59
59
|
.SH VERSION
|
|
60
|
-
v0.
|
|
60
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-context-pack-add 1 "add 0.
|
|
3
|
+
.TH canon-context-pack-add 1 "add 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-context\-pack\-add \- Create an immutable context pack from a repository\-local JSON manifest
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -44,4 +44,4 @@ Print help
|
|
|
44
44
|
\fB\-V\fR, \fB\-\-version\fR
|
|
45
45
|
Print version
|
|
46
46
|
.SH VERSION
|
|
47
|
-
v0.
|
|
47
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-context-pack-show 1 "show 0.
|
|
3
|
+
.TH canon-context-pack-show 1 "show 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-context\-pack\-show \- Show a context pack after verifying its manifest and content objects
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -41,4 +41,4 @@ Print version
|
|
|
41
41
|
<\fIPACK_ID\fR>
|
|
42
42
|
Context pack id (sha256:<64 hex digits>)
|
|
43
43
|
.SH VERSION
|
|
44
|
-
v0.
|
|
44
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-context-pack-verify 1 "verify 0.
|
|
3
|
+
.TH canon-context-pack-verify 1 "verify 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-context\-pack\-verify \- Verify a context pack\*(Aqs manifest and immutable content objects
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -41,4 +41,4 @@ Print version
|
|
|
41
41
|
<\fIPACK_ID\fR>
|
|
42
42
|
Context pack id (sha256:<64 hex digits>)
|
|
43
43
|
.SH VERSION
|
|
44
|
-
v0.
|
|
44
|
+
v0.30.0
|
package/man/canon-context-pack.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-context-pack 1 "context-pack 0.
|
|
3
|
+
.TH canon-context-pack 1 "context-pack 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-context\-pack \- Create, inspect, and verify reproducible context packs
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -47,4 +47,4 @@ Examples:
|
|
|
47
47
|
canon context\-pack show sha256:<pack\-digest> \-\-repo . \-\-json
|
|
48
48
|
canon context\-pack verify sha256:<pack\-digest>
|
|
49
49
|
.SH VERSION
|
|
50
|
-
v0.
|
|
50
|
+
v0.30.0
|
package/man/canon-context.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-context 1 "context 0.
|
|
3
|
+
.TH canon-context 1 "context 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-context \- Show what you can author here: record kinds, fields, enums, policies
|
|
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.30.0
|
package/man/canon-dashboard.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-dashboard 1 "dashboard 0.
|
|
3
|
+
.TH canon-dashboard 1 "dashboard 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-dashboard \- Serve the local status dashboard
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -47,4 +47,4 @@ Print help
|
|
|
47
47
|
\fB\-V\fR, \fB\-\-version\fR
|
|
48
48
|
Print version
|
|
49
49
|
.SH VERSION
|
|
50
|
-
v0.
|
|
50
|
+
v0.30.0
|
package/man/canon-demo-init.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-demo-init 1 "init 0.
|
|
3
|
+
.TH canon-demo-init 1 "init 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-demo\-init \- Scaffold the demo repo (gate starts RED)
|
|
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.30.0
|
package/man/canon-demo-review.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-demo-review 1 "review 0.
|
|
3
|
+
.TH canon-demo-review 1 "review 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-demo\-review \- Record the missing reviewer evidence (gate turns GREEN)
|
|
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.30.0
|
package/man/canon-demo.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-demo 1 "demo 0.
|
|
3
|
+
.TH canon-demo 1 "demo 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-demo \- Try the evidence loop end\-to\-end in a throwaway demo repo
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -44,4 +44,4 @@ Examples:
|
|
|
44
44
|
canon gate check # RED
|
|
45
45
|
canon demo review && canon gate check # GREEN
|
|
46
46
|
.SH VERSION
|
|
47
|
-
v0.
|
|
47
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-dispatch-begin 1 "begin 0.
|
|
3
|
+
.TH canon-dispatch-begin 1 "begin 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-dispatch\-begin \- Mint a Run manifest with retrieved guidance and context/policy lineage
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -77,4 +77,4 @@ Print help
|
|
|
77
77
|
\fB\-V\fR, \fB\-\-version\fR
|
|
78
78
|
Print version
|
|
79
79
|
.SH VERSION
|
|
80
|
-
v0.
|
|
80
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-dispatch-diff 1 "diff 0.
|
|
3
|
+
.TH canon-dispatch-diff 1 "diff 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-dispatch\-diff \- Diff the declared plan DAG against the observed execution graph
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -38,4 +38,4 @@ Print help
|
|
|
38
38
|
\fB\-V\fR, \fB\-\-version\fR
|
|
39
39
|
Print version
|
|
40
40
|
.SH VERSION
|
|
41
|
-
v0.
|
|
41
|
+
v0.30.0
|
package/man/canon-dispatch-end.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-dispatch-end 1 "end 0.
|
|
3
|
+
.TH canon-dispatch-end 1 "end 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-dispatch\-end \- Close a dispatched run with a terminal status and an ended_at
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -57,4 +57,4 @@ Print version
|
|
|
57
57
|
<\fIRUN_ID\fR>
|
|
58
58
|
The RunId (ULID) minted by `canon dispatch begin`
|
|
59
59
|
.SH VERSION
|
|
60
|
-
v0.
|
|
60
|
+
v0.30.0
|
package/man/canon-dispatch.1
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-dispatch 1 "dispatch 0.
|
|
3
|
+
.TH canon-dispatch 1 "dispatch 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-dispatch \- Begin an agent run with retrieved guidance recorded
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -42,4 +42,4 @@ Close a dispatched run with a terminal status and an ended_at
|
|
|
42
42
|
canon\-dispatch\-diff(1)
|
|
43
43
|
Diff the declared plan DAG against the observed execution graph
|
|
44
44
|
.SH VERSION
|
|
45
|
-
v0.
|
|
45
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-divergence-accept 1 "accept 0.
|
|
3
|
+
.TH canon-divergence-accept 1 "accept 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-divergence\-accept \- Accept a divergent scenario as a tracked known gap (a reviewer step): its latest evidence must be divergent and not the accepting actor\*(Aqs or session\*(Aqs. The acceptance pins that evidence, so new evidence ends it, and lapses at \-\-expiry; until then the ship guard counts the cell as covered while `status` and `gate check` list it as `accepted\-divergence`
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -65,4 +65,4 @@ Print version
|
|
|
65
65
|
<\fISCENARIO_ID\fR>
|
|
66
66
|
The accepted scenarios (`<area>.<surface>.<nn>`), one acceptance each, all or nothing
|
|
67
67
|
.SH VERSION
|
|
68
|
-
v0.
|
|
68
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-divergence-add 1 "add 0.
|
|
3
|
+
.TH canon-divergence-add 1 "add 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-divergence\-add \- Add a divergence candidate, staged with no run_seq yet (commit it with `canon gate promote \-\-kind divergence`, or in the same run with \-\-promote / `write: { promote: auto }`)
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -94,4 +94,4 @@ Print version
|
|
|
94
94
|
<\fISCENARIO_ID\fR>
|
|
95
95
|
The scenario (`<area>.<surface>.<nn>`)
|
|
96
96
|
.SH VERSION
|
|
97
|
-
v0.
|
|
97
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-divergence-defer 1 "defer 0.
|
|
3
|
+
.TH canon-divergence-defer 1 "defer 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-divergence\-defer \- Directly record a deferred divergence (requires \-\-reason/\-\-expiry)
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -68,4 +68,4 @@ Print version
|
|
|
68
68
|
<\fISCENARIO_ID\fR>
|
|
69
69
|
The scenario (`<area>.<surface>.<nn>`)
|
|
70
70
|
.SH VERSION
|
|
71
|
-
v0.
|
|
71
|
+
v0.30.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.ie \n(.g .ds Aq \(aq
|
|
2
2
|
.el .ds Aq '
|
|
3
|
-
.TH canon-divergence-list 1 "list 0.
|
|
3
|
+
.TH canon-divergence-list 1 "list 0.30.0"
|
|
4
4
|
.SH NAME
|
|
5
5
|
canon\-divergence\-list \- List the current divergence burn\-down state
|
|
6
6
|
.SH SYNOPSIS
|
|
@@ -53,4 +53,4 @@ Print help
|
|
|
53
53
|
\fB\-V\fR, \fB\-\-version\fR
|
|
54
54
|
Print version
|
|
55
55
|
.SH VERSION
|
|
56
|
-
v0.
|
|
56
|
+
v0.30.0
|