@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.
Files changed (113) hide show
  1. package/dist/skills/SKILL.src.md +2 -2
  2. package/dist/skills/reference/canon-gate.md +8 -2
  3. package/dist/skills/reference/canon-report-dashboard.md +2 -2
  4. package/dist/skills/reference/canon-review.md +4 -3
  5. package/dist/skills/reference/canon-storage.md +18 -1
  6. package/dist/skills/reference/role-implementer.md +1 -1
  7. package/dist/skills/reference/role-orchestrator.md +4 -3
  8. package/dist/skills/reference/role-reviewer.md +3 -3
  9. package/man/canon-adapter-authorize.1 +2 -2
  10. package/man/canon-adapter-validate.1 +2 -2
  11. package/man/canon-adapter.1 +2 -2
  12. package/man/canon-artifacts-move.1 +2 -2
  13. package/man/canon-artifacts-store.1 +2 -2
  14. package/man/canon-artifacts-verify.1 +2 -2
  15. package/man/canon-artifacts.1 +2 -2
  16. package/man/canon-brief-approve.1 +2 -2
  17. package/man/canon-brief-check.1 +2 -2
  18. package/man/canon-brief-show.1 +2 -2
  19. package/man/canon-brief.1 +2 -2
  20. package/man/canon-change-new.1 +2 -2
  21. package/man/canon-change.1 +2 -2
  22. package/man/canon-completion.1 +2 -2
  23. package/man/canon-context-pack-add.1 +2 -2
  24. package/man/canon-context-pack-show.1 +2 -2
  25. package/man/canon-context-pack-verify.1 +2 -2
  26. package/man/canon-context-pack.1 +2 -2
  27. package/man/canon-context.1 +2 -2
  28. package/man/canon-dashboard.1 +2 -2
  29. package/man/canon-demo-init.1 +2 -2
  30. package/man/canon-demo-review.1 +2 -2
  31. package/man/canon-demo.1 +2 -2
  32. package/man/canon-dispatch-begin.1 +2 -2
  33. package/man/canon-dispatch-diff.1 +2 -2
  34. package/man/canon-dispatch-end.1 +2 -2
  35. package/man/canon-dispatch.1 +2 -2
  36. package/man/canon-divergence-accept.1 +2 -2
  37. package/man/canon-divergence-add.1 +2 -2
  38. package/man/canon-divergence-defer.1 +2 -2
  39. package/man/canon-divergence-list.1 +2 -2
  40. package/man/canon-divergence-resolve.1 +2 -2
  41. package/man/canon-divergence.1 +2 -2
  42. package/man/canon-evidence-add.1 +2 -2
  43. package/man/canon-evidence-approval-payload.1 +2 -2
  44. package/man/canon-evidence-audit.1 +2 -2
  45. package/man/canon-evidence.1 +2 -2
  46. package/man/canon-export.1 +2 -2
  47. package/man/canon-feature-new.1 +2 -2
  48. package/man/canon-feature.1 +2 -2
  49. package/man/canon-finding-add.1 +17 -5
  50. package/man/canon-finding-close.1 +2 -2
  51. package/man/canon-finding-list.1 +2 -2
  52. package/man/canon-finding.1 +2 -2
  53. package/man/canon-format.1 +2 -2
  54. package/man/canon-gate-check.1 +2 -2
  55. package/man/canon-gate-install-hooks.1 +2 -2
  56. package/man/canon-gate-promote.1 +2 -2
  57. package/man/canon-gate.1 +2 -2
  58. package/man/canon-ingest-plans.1 +2 -2
  59. package/man/canon-ingest-records.1 +2 -2
  60. package/man/canon-ingest-sessions.1 +2 -2
  61. package/man/canon-ingest.1 +2 -2
  62. package/man/canon-init.1 +2 -2
  63. package/man/canon-inventory-sync.1 +2 -2
  64. package/man/canon-inventory.1 +2 -2
  65. package/man/canon-ledger-compact.1 +2 -2
  66. package/man/canon-ledger.1 +2 -2
  67. package/man/canon-migrate.1 +20 -3
  68. package/man/canon-plugin-sync.1 +2 -2
  69. package/man/canon-plugin.1 +2 -2
  70. package/man/canon-policy-approve.1 +2 -2
  71. package/man/canon-policy-show.1 +2 -2
  72. package/man/canon-policy.1 +2 -2
  73. package/man/canon-prompt-add.1 +2 -2
  74. package/man/canon-prompt-show.1 +2 -2
  75. package/man/canon-prompt.1 +2 -2
  76. package/man/canon-purge.1 +2 -2
  77. package/man/canon-query.1 +2 -2
  78. package/man/canon-regime-show.1 +2 -2
  79. package/man/canon-regime.1 +2 -2
  80. package/man/canon-report-build.1 +2 -2
  81. package/man/canon-report-check.1 +2 -2
  82. package/man/canon-report-snapshot.1 +2 -2
  83. package/man/canon-report.1 +2 -2
  84. package/man/canon-retrieve.1 +2 -2
  85. package/man/canon-review-change.1 +2 -2
  86. package/man/canon-review-scenario.1 +2 -2
  87. package/man/canon-review.1 +2 -2
  88. package/man/canon-scenario-new.1 +2 -2
  89. package/man/canon-scenario.1 +2 -2
  90. package/man/canon-schema.1 +2 -2
  91. package/man/canon-selftest.1 +2 -2
  92. package/man/canon-skills-check.1 +2 -2
  93. package/man/canon-skills-doctor.1 +2 -2
  94. package/man/canon-skills-install.1 +2 -2
  95. package/man/canon-skills-show.1 +2 -2
  96. package/man/canon-skills.1 +2 -2
  97. package/man/canon-status.1 +2 -2
  98. package/man/canon-strategy-approval-payload.1 +2 -2
  99. package/man/canon-strategy-promote.1 +2 -2
  100. package/man/canon-strategy-rollback.1 +2 -2
  101. package/man/canon-strategy.1 +2 -2
  102. package/man/canon-subject-adopt.1 +2 -2
  103. package/man/canon-subject-move.1 +2 -2
  104. package/man/canon-subject-new.1 +2 -2
  105. package/man/canon-subject-show.1 +2 -2
  106. package/man/canon-subject-unadopt.1 +2 -2
  107. package/man/canon-subject.1 +2 -2
  108. package/man/canon-task-done.1 +2 -2
  109. package/man/canon-task.1 +2 -2
  110. package/man/canon-tier-age.1 +2 -2
  111. package/man/canon-tier.1 +2 -2
  112. package/man/canon.1 +2 -2
  113. package/package.json +4 -4
@@ -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/`. It refuses uncommitted changes
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
- Malformed rows in those three kinds do NOT surface as
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 `evidence_record` exists for this `task_id`,
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 `{change_id}__{round}__{seq}` finding first, so a finding raised
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 revision that names no
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`, `evidence_record`,
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>/`, is safe to run again (a second run
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.29.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.29.0
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.29.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.29.0
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 1 "adapter 0.29.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.29.0
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.29.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.29.0
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.29.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.29.0
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.29.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.29.0
48
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts 1 "artifacts 0.29.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.29.0
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.29.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.29.0
62
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief-check 1 "check 0.29.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.29.0
44
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief-show 1 "show 0.29.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.29.0
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.29.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.29.0
63
+ v0.30.0
@@ -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.29.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.29.0
66
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-change 1 "change 0.29.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.29.0
42
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-completion 1 "completion 0.29.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.29.0
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.29.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.29.0
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.29.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.29.0
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.29.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.29.0
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 1 "context-pack 0.29.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.29.0
50
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-context 1 "context 0.29.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.29.0
44
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-dashboard 1 "dashboard 0.29.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.29.0
50
+ v0.30.0
@@ -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.29.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.29.0
44
+ v0.30.0
@@ -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.29.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.29.0
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.29.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.29.0
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.29.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.29.0
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.29.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.29.0
41
+ v0.30.0
@@ -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.29.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.29.0
60
+ v0.30.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-dispatch 1 "dispatch 0.29.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.29.0
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.29.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.29.0
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.29.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.29.0
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.29.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.29.0
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.29.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.29.0
56
+ v0.30.0