@journeykit/canon 0.29.0 → 0.31.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 (123) hide show
  1. package/dist/skills/SKILL.src.md +48 -22
  2. package/dist/skills/reference/brief-polish.md +4 -4
  3. package/dist/skills/reference/brief-shape.md +38 -7
  4. package/dist/skills/reference/canon-authoring.md +6 -6
  5. package/dist/skills/reference/canon-gate.md +49 -34
  6. package/dist/skills/reference/canon-learn.md +2 -2
  7. package/dist/skills/reference/canon-plan-import.md +2 -2
  8. package/dist/skills/reference/canon-plugins.md +6 -6
  9. package/dist/skills/reference/canon-report-dashboard.md +12 -8
  10. package/dist/skills/reference/canon-review.md +26 -25
  11. package/dist/skills/reference/canon-storage.md +20 -3
  12. package/dist/skills/reference/canon-subject.md +132 -98
  13. package/dist/skills/reference/role-implementer.md +42 -28
  14. package/dist/skills/reference/role-orchestrator.md +40 -24
  15. package/dist/skills/reference/role-planner.md +32 -17
  16. package/dist/skills/reference/role-reviewer.md +48 -30
  17. package/man/canon-adapter-authorize.1 +2 -2
  18. package/man/canon-adapter-validate.1 +2 -2
  19. package/man/canon-adapter.1 +2 -2
  20. package/man/canon-artifacts-move.1 +2 -2
  21. package/man/canon-artifacts-store.1 +2 -2
  22. package/man/canon-artifacts-verify.1 +2 -2
  23. package/man/canon-artifacts.1 +2 -2
  24. package/man/canon-brief-approve.1 +7 -4
  25. package/man/canon-brief-check.1 +2 -2
  26. package/man/canon-brief-show.1 +2 -2
  27. package/man/canon-brief.1 +8 -7
  28. package/man/canon-change-new.1 +4 -4
  29. package/man/canon-change.1 +3 -3
  30. package/man/canon-completion.1 +2 -2
  31. package/man/canon-context-pack-add.1 +2 -2
  32. package/man/canon-context-pack-show.1 +2 -2
  33. package/man/canon-context-pack-verify.1 +2 -2
  34. package/man/canon-context-pack.1 +2 -2
  35. package/man/canon-context.1 +2 -2
  36. package/man/canon-dashboard.1 +2 -2
  37. package/man/canon-demo-init.1 +2 -2
  38. package/man/canon-demo-review.1 +2 -2
  39. package/man/canon-demo.1 +2 -2
  40. package/man/canon-dispatch-begin.1 +10 -10
  41. package/man/canon-dispatch-diff.1 +2 -2
  42. package/man/canon-dispatch-end.1 +2 -2
  43. package/man/canon-dispatch.1 +2 -2
  44. package/man/canon-divergence-accept.1 +6 -6
  45. package/man/canon-divergence-add.1 +6 -6
  46. package/man/canon-divergence-defer.1 +6 -6
  47. package/man/canon-divergence-list.1 +2 -2
  48. package/man/canon-divergence-resolve.1 +6 -6
  49. package/man/canon-divergence.1 +2 -2
  50. package/man/canon-evidence-add.1 +16 -16
  51. package/man/canon-evidence-approval-payload.1 +10 -10
  52. package/man/canon-evidence-audit.1 +10 -10
  53. package/man/canon-evidence.1 +3 -3
  54. package/man/canon-export.1 +2 -2
  55. package/man/canon-feature-new.1 +6 -6
  56. package/man/canon-feature.1 +2 -2
  57. package/man/canon-finding-add.1 +23 -11
  58. package/man/canon-finding-close.1 +8 -8
  59. package/man/canon-finding-list.1 +4 -4
  60. package/man/canon-finding.1 +4 -4
  61. package/man/canon-format.1 +2 -2
  62. package/man/canon-gate-check.1 +2 -2
  63. package/man/canon-gate-install-hooks.1 +2 -2
  64. package/man/canon-gate-promote.1 +2 -2
  65. package/man/canon-gate.1 +2 -2
  66. package/man/canon-ingest-plans.1 +2 -2
  67. package/man/canon-ingest-records.1 +4 -4
  68. package/man/canon-ingest-sessions.1 +2 -2
  69. package/man/canon-ingest.1 +2 -2
  70. package/man/canon-init.1 +2 -2
  71. package/man/canon-inventory-sync.1 +2 -2
  72. package/man/canon-inventory.1 +2 -2
  73. package/man/canon-ledger-compact.1 +2 -2
  74. package/man/canon-ledger.1 +2 -2
  75. package/man/canon-migrate.1 +25 -3
  76. package/man/canon-plugin-sync.1 +2 -2
  77. package/man/canon-plugin.1 +2 -2
  78. package/man/canon-policy-approve.1 +2 -2
  79. package/man/canon-policy-show.1 +2 -2
  80. package/man/canon-policy.1 +2 -2
  81. package/man/canon-prompt-add.1 +2 -2
  82. package/man/canon-prompt-show.1 +2 -2
  83. package/man/canon-prompt.1 +2 -2
  84. package/man/canon-purge.1 +2 -2
  85. package/man/canon-query.1 +5 -5
  86. package/man/canon-regime-show.1 +2 -2
  87. package/man/canon-regime.1 +2 -2
  88. package/man/canon-report-build.1 +2 -2
  89. package/man/canon-report-check.1 +2 -2
  90. package/man/canon-report-snapshot.1 +2 -2
  91. package/man/canon-report.1 +2 -2
  92. package/man/canon-retrieve.1 +5 -5
  93. package/man/canon-review-change.1 +6 -6
  94. package/man/canon-review-scenario.1 +6 -6
  95. package/man/canon-review.1 +2 -2
  96. package/man/canon-scenario-new.1 +10 -10
  97. package/man/canon-scenario.1 +2 -2
  98. package/man/canon-schema.1 +2 -2
  99. package/man/canon-search.1 +104 -0
  100. package/man/canon-selftest.1 +2 -2
  101. package/man/canon-skills-check.1 +2 -2
  102. package/man/canon-skills-doctor.1 +2 -2
  103. package/man/canon-skills-install.1 +2 -2
  104. package/man/canon-skills-show.1 +2 -2
  105. package/man/canon-skills.1 +2 -2
  106. package/man/canon-status.1 +7 -2
  107. package/man/canon-strategy-approval-payload.1 +2 -2
  108. package/man/canon-strategy-promote.1 +2 -2
  109. package/man/canon-strategy-rollback.1 +5 -5
  110. package/man/canon-strategy.1 +2 -2
  111. package/man/canon-subject-adopt.1 +4 -4
  112. package/man/canon-subject-move.1 +5 -5
  113. package/man/canon-subject-new.1 +5 -5
  114. package/man/canon-subject-show.1 +2 -2
  115. package/man/canon-subject-unadopt.1 +5 -5
  116. package/man/canon-subject.1 +2 -2
  117. package/man/canon-task-done.1 +2 -2
  118. package/man/canon-task.1 +2 -2
  119. package/man/canon-tier-age.1 +2 -2
  120. package/man/canon-tier.1 +2 -2
  121. package/man/canon-trace.1 +56 -0
  122. package/man/canon.1 +8 -2
  123. package/package.json +4 -4
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-finding-add 1 "add 0.29.0"
3
+ .TH canon-finding-add 1 "add 0.31.0"
4
4
  .SH NAME
5
5
  canon\-finding\-add \- Record one code\-review finding (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
6
6
  .SH SYNOPSIS
7
- \fBcanon finding add\fR [\fB\-\-as\fR] <\fB\-\-change\-id\fR> <\fB\-\-round\fR> <\fB\-\-seq\fR> <\fB\-\-severity\fR> [\fB\-\-disposition\fR] <\fB\-\-actor\-id\fR> <\fB\-\-summary\fR> [\fB\-\-rev\fR] [\fB\-\-resolution\-rev\fR] [\fB\-\-introduced\-rev\fR] [\fB\-\-file\-ref\fR] [\fB\-\-scenario\-id\fR] [\fB\-\-role\fR] [\fB\-\-session\-id\fR] [\fB\-\-promote\fR] [\fB\-\-no\-promote\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
7
+ \fBcanon finding add\fR [\fB\-\-as\fR] <\fB\-\-change\fR> <\fB\-\-round\fR> <\fB\-\-seq\fR> <\fB\-\-severity\fR> [\fB\-\-disposition\fR] <\fB\-\-actor\fR> <\fB\-\-summary\fR> [\fB\-\-rev\fR] [\fB\-\-resolution\-rev\fR] [\fB\-\-introduced\-rev\fR] [\fB\-\-introduced\-unknown\fR] [\fB\-\-review\fR] [\fB\-\-file\-ref\fR] [\fB\-\-scenario\fR] [\fB\-\-role\fR] [\fB\-\-session\fR] [\fB\-\-promote\fR] [\fB\-\-no\-promote\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
8
8
  .SH DESCRIPTION
9
9
  Record one code\-review finding (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
10
10
  .SH OPTIONS
@@ -26,7 +26,7 @@ reviewer
26
26
  orchestrator
27
27
  .RE
28
28
  .TP
29
- \fB\-\-change\-id\fR \fI<CHANGE_ID>\fR
29
+ \fB\-\-change\fR \fI<CHANGE_ID>\fR
30
30
  The change under review (e.g. s43\-findings\-are\-records) — first component of the natural key
31
31
  .TP
32
32
  \fB\-\-round\fR \fI<N>\fR
@@ -67,7 +67,7 @@ rejected
67
67
  deferred
68
68
  .RE
69
69
  .TP
70
- \fB\-\-actor\-id\fR \fI<ACTOR_ID>\fR
70
+ \fB\-\-actor\fR \fI<ACTOR_ID>\fR
71
71
  The reviewer who raised it, recorded as the finding\*(Aqs reviewer and author (line breaks refused)
72
72
  .TP
73
73
  \fB\-\-summary\fR \fI<TEXT>\fR
@@ -82,16 +82,22 @@ The commit that closed it, any git revision (resolved to the full sha, with the
82
82
  \fB\-\-introduced\-rev\fR \fI<REV>\fR
83
83
  The SOURCED introducing commit, any git revision (resolved to the full sha). No default: leave it unset when it is not known, never guess (see \-\-help). Existence only; canon never reads the commit\*(Aqs message or diff
84
84
  .TP
85
+ \fB\-\-introduced\-unknown\fR
86
+ Say the introducing commit is not known, instead of \-\-introduced\-rev. A new blocker or should\-fix needs one of the two; a note needs neither. Stored in its own field, never in the commit slot
87
+ .TP
88
+ \fB\-\-review\fR \fI<REVIEW_ID>\fR
89
+ The review this finding came out of: the review id `canon review scenario` or `canon review change` printed. Refused when no review in the ledger or the archive carries it; a close copies it
90
+ .TP
85
91
  \fB\-\-file\-ref\fR \fI<TEXT>\fR
86
92
  Where in the tree, as path/to/file.rs:120\-134 (line breaks refused)
87
93
  .TP
88
- \fB\-\-scenario\-id\fR \fI<SCENARIO_ID>\fR
94
+ \fB\-\-scenario\fR \fI<SCENARIO_ID>\fR
89
95
  A scenario this finding is about (repeatable). After a `fixed` close, fresh evidence for these scenarios alone re\-verifies the fix; with none named, every evidenced scenario of the subject does. Each must be a scenario the index knows; a close inherits the list
90
96
  .TP
91
97
  \fB\-\-role\fR \fI<ROLE>\fR [default: reviewer]
92
98
  Attribution only — unlike `canon evidence add`, no partition key derives from it
93
99
  .TP
94
- \fB\-\-session\-id\fR \fI<SESSION_ID>\fR
100
+ \fB\-\-session\fR \fI<SESSION_ID>\fR
95
101
  The authoring session (recorded as actor.session_id)
96
102
  .TP
97
103
  \fB\-\-promote\fR
@@ -151,8 +157,11 @@ What the record IS good for:
151
157
  \-\-introduced\-rev must be SOURCED:
152
158
  Set it only when the introducing commit was actually established — someone
153
159
  read the diff, or the fixing commit names it. Never from timing, commit
154
- adjacency, or `git blame`. Leaving it UNSET is the correct record when it is
155
- not known, not an incomplete one. Unset means UNSOURCED, never \*(Aqno cause\*(Aq; a
160
+ adjacency, or `git blame`. A new blocker or should\-fix must name the commit with \-\-introduced\-rev or
161
+ say it is not known with \-\-introduced\-unknown (a note needs neither); with
162
+ neither it is refused, and both together are refused. \-\-introduced\-unknown
163
+ is the correct record when the commit was not established, not an
164
+ incomplete one. Not naming a commit means UNSOURCED, never \*(Aqno cause\*(Aq; a
156
165
  guessed value would inflate the exact number this command exists to make
157
166
  trustworthy.
158
167
 
@@ -178,12 +187,15 @@ would relocate the hand\-typing from the release notes into the record.
178
187
  \-\-seq is REQUIRED, never auto\-assigned: two concurrent adds would read the
179
188
  same highest seq and both pick the next one, landing two records under one
180
189
  finding\*(Aqs identity and inflating the count. An already\-occupied
181
- (\-\-change\-id, \-\-round, \-\-seq) is refused, naming it.
190
+ (\-\-change, \-\-round, \-\-seq) is refused, naming it.
182
191
 
183
192
  Refused before anything is staged:
193
+ \- a blocker or should\-fix with neither \-\-introduced\-rev nor
194
+ \-\-introduced\-unknown, and \-\-introduced\-rev together with \-\-introduced\-unknown
195
+ \- a \-\-review that no review in the ledger or the archive carries
184
196
  \- \-\-disposition fixed with no \-\-resolution\-rev, and \-\-resolution\-rev with
185
197
  any other disposition
186
- \- a line separator in \-\-summary, \-\-file\-ref or \-\-actor\-id: a
198
+ \- a line separator in \-\-summary, \-\-file\-ref or \-\-actor: a
187
199
  finding is rendered as ONE row, so a separator appends a second row that
188
200
  no record backs
189
201
 
@@ -193,4 +205,4 @@ The loop:
193
205
  Under `write.promote: manual` (no `write:` key), run `canon gate promote` to
194
206
  commit it.
195
207
  .SH VERSION
196
- v0.29.0
208
+ v0.31.0
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-finding-close 1 "close 0.29.0"
3
+ .TH canon-finding-close 1 "close 0.31.0"
4
4
  .SH NAME
5
5
  canon\-finding\-close \- Move an already\-committed finding\*(Aqs disposition (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
6
6
  .SH SYNOPSIS
7
- \fBcanon finding close\fR [\fB\-\-as\fR] <\fB\-\-round\fR> <\fB\-\-seq\fR> <\fB\-\-disposition\fR> [\fB\-\-resolution\-rev\fR] [\fB\-\-reason\fR] [\fB\-\-actor\-id\fR] [\fB\-\-role\fR] [\fB\-\-session\-id\fR] [\fB\-\-promote\fR] [\fB\-\-no\-promote\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fICHANGE_ID\fR>
7
+ \fBcanon finding close\fR [\fB\-\-as\fR] <\fB\-\-round\fR> <\fB\-\-seq\fR> <\fB\-\-disposition\fR> [\fB\-\-resolution\-rev\fR] [\fB\-\-reason\fR] [\fB\-\-actor\fR] [\fB\-\-role\fR] [\fB\-\-session\fR] [\fB\-\-promote\fR] [\fB\-\-no\-promote\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fICHANGE_ID\fR>
8
8
  .SH DESCRIPTION
9
9
  Move an already\-committed finding\*(Aqs disposition (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
10
10
  .SH OPTIONS
@@ -55,13 +55,13 @@ The commit that closed it, any git revision (resolved to the full sha, with the
55
55
  \fB\-\-reason\fR \fI<TEXT>\fR
56
56
  Why it was closed, one line. Required for rejected and deferred, optional for fixed and open; stored on the closing version and shown by `finding list`
57
57
  .TP
58
- \fB\-\-actor\-id\fR \fI<ACTOR_ID>\fR [default: canon]
58
+ \fB\-\-actor\fR \fI<ACTOR_ID>\fR [default: canon]
59
59
  The actor recorded as authoring the TRANSITION — not the original finding\*(Aqs author, which is preserved on the record this supersedes
60
60
  .TP
61
61
  \fB\-\-role\fR \fI<ROLE>\fR [default: reviewer]
62
62
  Attribution only — no partition key derives from it
63
63
  .TP
64
- \fB\-\-session\-id\fR \fI<SESSION_ID>\fR
64
+ \fB\-\-session\fR \fI<SESSION_ID>\fR
65
65
  The session that authored the TRANSITION (recorded as actor.session_id)
66
66
  .TP
67
67
  \fB\-\-promote\fR
@@ -109,9 +109,9 @@ natural key to the latest version, so the finding is still counted once.
109
109
  the second version, so a hand\-written body must clear the same bar.
110
110
 
111
111
  Examples:
112
- canon finding close \-\-change\-id s44\-spec\-derived\-worklist \-\-round 1 \-\-seq 1 \\
112
+ canon finding close s44\-spec\-derived\-worklist \-\-round 1 \-\-seq 1 \\
113
113
  \-\-disposition fixed \-\-resolution\-rev $(git rev\-parse HEAD)
114
- canon finding close \-\-change\-id s44\-spec\-derived\-worklist \-\-round 1 \-\-seq 9 \\
115
- \-\-disposition rejected
114
+ canon finding close s44\-spec\-derived\-worklist \-\-round 1 \-\-seq 9 \\
115
+ \-\-disposition rejected \-\-reason "not a defect"
116
116
  .SH VERSION
117
- v0.29.0
117
+ v0.31.0
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-finding-list 1 "list 0.29.0"
3
+ .TH canon-finding-list 1 "list 0.31.0"
4
4
  .SH NAME
5
5
  canon\-finding\-list \- List a change\*(Aqs committed findings at their latest version: round, seq, severity, disposition, reviewer and summary
6
6
  .SH SYNOPSIS
7
- \fBcanon finding list\fR [\fB\-\-as\fR] <\fB\-\-change\-id\fR> [\fB\-\-open\fR] [\fB\-\-json\fR] [\fB\-\-repo\fR] [\fB\-\-limit\fR] [\fB\-\-cursor\fR] [\fB\-\-all\fR] [\fB\-\-fields\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
7
+ \fBcanon finding list\fR [\fB\-\-as\fR] <\fB\-\-change\fR> [\fB\-\-open\fR] [\fB\-\-json\fR] [\fB\-\-repo\fR] [\fB\-\-limit\fR] [\fB\-\-cursor\fR] [\fB\-\-all\fR] [\fB\-\-fields\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
8
8
  .SH DESCRIPTION
9
9
  List a change\*(Aqs committed findings at their latest version: round, seq, severity, disposition, reviewer and summary
10
10
  .SH OPTIONS
@@ -26,7 +26,7 @@ reviewer
26
26
  orchestrator
27
27
  .RE
28
28
  .TP
29
- \fB\-\-change\-id\fR \fI<CHANGE_ID>\fR
29
+ \fB\-\-change\fR \fI<CHANGE_ID>\fR
30
30
  The change whose findings to list
31
31
  .TP
32
32
  \fB\-\-open\fR
@@ -56,4 +56,4 @@ Print help
56
56
  \fB\-V\fR, \fB\-\-version\fR
57
57
  Print version
58
58
  .SH VERSION
59
- v0.29.0
59
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-finding 1 "finding 0.29.0"
3
+ .TH canon-finding 1 "finding 0.31.0"
4
4
  .SH NAME
5
5
  canon\-finding \- Record one code\-review finding as a durable record
6
6
  .SH SYNOPSIS
@@ -43,8 +43,8 @@ canon\-finding\-list(1)
43
43
  List a change\*(Aqs committed findings at their latest version: round, seq, severity, disposition, reviewer and summary
44
44
  .SH EXTRA
45
45
  Examples:
46
- canon finding add \-\-change\-id s43\-findings\-are\-records \-\-round 1 \-\-seq 1 \\
47
- \-\-severity blocker \-\-disposition open \-\-actor\-id review\-voice \\
46
+ canon finding add \-\-change s43\-findings\-are\-records \-\-round 1 \-\-seq 1 \\
47
+ \-\-severity blocker \-\-disposition open \-\-actor review\-voice \\
48
48
  \-\-summary \*(Aqa release metric is asserted, never computed\*(Aq
49
49
  canon finding close s43\-findings\-are\-records \-\-round 1 \-\-seq 1 \\
50
50
  \-\-disposition fixed \-\-resolution\-rev $(git rev\-parse HEAD)
@@ -64,4 +64,4 @@ RECORDED OBSERVATION, NOT PROOF — canon never verifies that the defect
64
64
  existed, that it was fixed, or that \-\-introduced\-rev is the true cause.
65
65
  See `canon finding add \-\-help` for exactly what it does and does not establish.
66
66
  .SH VERSION
67
- v0.29.0
67
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-format 1 "format 0.29.0"
3
+ .TH canon-format 1 "format 0.31.0"
4
4
  .SH NAME
5
5
  canon\-format \- Validate a spec/artifact corpus against canon\*(Aqs format
6
6
  .SH SYNOPSIS
@@ -46,4 +46,4 @@ Examples:
46
46
  canon format spec
47
47
  canon format spec \-\-repo ~/work/myrepo
48
48
  .SH VERSION
49
- v0.29.0
49
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-gate-check 1 "check 0.29.0"
3
+ .TH canon-gate-check 1 "check 0.31.0"
4
4
  .SH NAME
5
5
  canon\-gate\-check \- Run the coverage/ledger/staleness/trust checks (0 clean, 1 red, 2 usage)
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.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-gate-install-hooks 1 "install-hooks 0.29.0"
3
+ .TH canon-gate-install-hooks 1 "install-hooks 0.31.0"
4
4
  .SH NAME
5
5
  canon\-gate\-install\-hooks \- Install the gate hook into .claude/settings.json / .codex/hooks.json
6
6
  .SH SYNOPSIS
@@ -56,4 +56,4 @@ Print help
56
56
  \fB\-V\fR, \fB\-\-version\fR
57
57
  Print version
58
58
  .SH VERSION
59
- v0.29.0
59
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-gate-promote 1 "promote 0.29.0"
3
+ .TH canon-gate-promote 1 "promote 0.31.0"
4
4
  .SH NAME
5
5
  canon\-gate\-promote \- Promote staged records (evidence, findings, divergences) to the committed ledger
6
6
  .SH SYNOPSIS
@@ -59,4 +59,4 @@ Print help
59
59
  \fB\-V\fR, \fB\-\-version\fR
60
60
  Print version
61
61
  .SH VERSION
62
- v0.29.0
62
+ v0.31.0
package/man/canon-gate.1 CHANGED
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-gate 1 "gate 0.29.0"
3
+ .TH canon-gate 1 "gate 0.31.0"
4
4
  .SH NAME
5
5
  canon\-gate \- Run evidence gates, promote staged records, install hooks
6
6
  .SH SYNOPSIS
@@ -47,4 +47,4 @@ Examples:
47
47
  canon task done my\-change#3
48
48
  canon gate install\-hooks
49
49
  .SH VERSION
50
- v0.29.0
50
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-ingest-plans 1 "plans 0.29.0"
3
+ .TH canon-ingest-plans 1 "plans 0.31.0"
4
4
  .SH NAME
5
5
  canon\-ingest\-plans \- Import plans as Change/Task records: canon\*(Aqs own .canon/changes, then the configured external sources (openspec, superpowers)
6
6
  .SH SYNOPSIS
@@ -50,4 +50,4 @@ Print help
50
50
  \fB\-V\fR, \fB\-\-version\fR
51
51
  Print version
52
52
  .SH VERSION
53
- v0.29.0
53
+ v0.31.0
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-ingest-records 1 "records 0.29.0"
3
+ .TH canon-ingest-records 1 "records 0.31.0"
4
4
  .SH NAME
5
5
  canon\-ingest\-records \- Import review/divergence/task/handoff records and derive verdicts
6
6
  .SH SYNOPSIS
7
- \fBcanon ingest records\fR [\fB\-\-as\fR] [\fB\-\-watch\fR] [\fB\-\-interval\-secs\fR] [\fB\-\-repo\fR] [\fB\-\-dry\-run\fR] [\fB\-\-json\fR] [\fB\-\-run\-id\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
7
+ \fBcanon ingest records\fR [\fB\-\-as\fR] [\fB\-\-watch\fR] [\fB\-\-interval\-secs\fR] [\fB\-\-repo\fR] [\fB\-\-dry\-run\fR] [\fB\-\-json\fR] [\fB\-\-run\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
8
8
  .SH DESCRIPTION
9
9
  Import review/divergence/task/handoff records and derive verdicts
10
10
  .SH OPTIONS
@@ -41,7 +41,7 @@ Validate fully and report what would be written, without writing anything
41
41
  \fB\-\-json\fR
42
42
  Output JSON instead of the human\-readable form
43
43
  .TP
44
- \fB\-\-run\-id\fR \fI<RUN_ID>\fR
44
+ \fB\-\-run\fR \fI<RUN_ID>\fR
45
45
  Attribute this pass\*(Aqs trajectories to a dispatched run (a RunId minted by `canon dispatch begin`)
46
46
  .TP
47
47
  \fB\-\-input\fR \fI<JSON|FILE|\->\fR
@@ -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.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-ingest-sessions 1 "sessions 0.29.0"
3
+ .TH canon-ingest-sessions 1 "sessions 0.31.0"
4
4
  .SH NAME
5
5
  canon\-ingest\-sessions \- Import agent CLI session transcripts (omp/pi, Claude Code, Codex, Hermes)
6
6
  .SH SYNOPSIS
@@ -59,4 +59,4 @@ Print help
59
59
  \fB\-V\fR, \fB\-\-version\fR
60
60
  Print version
61
61
  .SH VERSION
62
- v0.29.0
62
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-ingest 1 "ingest 0.29.0"
3
+ .TH canon-ingest 1 "ingest 0.31.0"
4
4
  .SH NAME
5
5
  canon\-ingest \- Import agent sessions, records, and plans into canon\*(Aqs store
6
6
  .SH SYNOPSIS
@@ -47,4 +47,4 @@ Examples:
47
47
  canon ingest records
48
48
  canon ingest plans
49
49
  .SH VERSION
50
- v0.29.0
50
+ v0.31.0
package/man/canon-init.1 CHANGED
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-init 1 "init 0.29.0"
3
+ .TH canon-init 1 "init 0.31.0"
4
4
  .SH NAME
5
5
  canon\-init \- Set up canon in a repo (canon.yaml, a starter policy, the AGENTS.md block, a plans home)
6
6
  .SH SYNOPSIS
@@ -95,4 +95,4 @@ it installs nothing and says how to choose. The answer is recorded as
95
95
  Rerunning in a repo that has canon.yaml leaves canon.yaml and .canon/policy.yaml
96
96
  alone and only refreshes the canon block in AGENTS.md.
97
97
  .SH VERSION
98
- v0.29.0
98
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-inventory-sync 1 "sync 0.29.0"
3
+ .TH canon-inventory-sync 1 "sync 0.31.0"
4
4
  .SH NAME
5
5
  canon\-inventory\-sync \- Validate each spec root, then materialize scenario index records
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.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-inventory 1 "inventory 0.29.0"
3
+ .TH canon-inventory 1 "inventory 0.31.0"
4
4
  .SH NAME
5
5
  canon\-inventory \- Index a validated .feature corpus into the scenario ledger
6
6
  .SH SYNOPSIS
@@ -36,4 +36,4 @@ Print version
36
36
  canon\-inventory\-sync(1)
37
37
  Validate each spec root, then materialize scenario index records
38
38
  .SH VERSION
39
- v0.29.0
39
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-ledger-compact 1 "compact 0.29.0"
3
+ .TH canon-ledger-compact 1 "compact 0.31.0"
4
4
  .SH NAME
5
5
  canon\-ledger\-compact \- Move superseded versions of every record out of the ledger into the archive
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.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-ledger 1 "ledger 0.29.0"
3
+ .TH canon-ledger 1 "ledger 0.31.0"
4
4
  .SH NAME
5
5
  canon\-ledger \- Keep the ledger to the current version of each record
6
6
  .SH SYNOPSIS
@@ -51,4 +51,4 @@ this is for a ledger written before 0.23, or after an interrupted move. Idempote
51
51
  `canon migrate` runs it. A record that carries a standing claim (a flagged overlay, a
52
52
  brief override, an approval at the current evidence) stays in the ledger.
53
53
  .SH VERSION
54
- v0.29.0
54
+ v0.31.0
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-migrate 1 "migrate 0.29.0"
3
+ .TH canon-migrate 1 "migrate 0.31.0"
4
4
  .SH NAME
5
5
  canon\-migrate \- Bring a repo from an earlier canon up to date: the 0.17 layout (specs, changes, approvals, skills, .gitignore), the 0.28 hooks, scripts and skill stub (backed up under .canon/migrate\-backup/), the 0.23 latest\-only ledger (superseded versions to .canon/archive) and 0.23 review pins
6
6
  .SH SYNOPSIS
7
- \fBcanon migrate\fR [\fB\-\-as\fR] [\fB\-\-repo\fR] [\fB\-\-commit\fR] [\fB\-\-plan\-digest\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
7
+ \fBcanon migrate\fR [\fB\-\-as\fR] [\fB\-\-repo\fR] [\fB\-\-commit\fR] [\fB\-\-plan\-digest\fR] [\fB\-\-revert\fR] [\fB\-\-backup\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
8
8
  .SH DESCRIPTION
9
9
  Bring a repo from an earlier canon up to date: the 0.17 layout (specs, changes, approvals, skills, .gitignore), the 0.28 hooks, scripts and skill stub (backed up under .canon/migrate\-backup/), the 0.23 latest\-only ledger (superseded versions to .canon/archive) and 0.23 review pins
10
10
  .SH OPTIONS
@@ -35,6 +35,12 @@ Act on the previewed plan; needs \-\-plan\-digest
35
35
  \fB\-\-plan\-digest\fR \fI<DIGEST>\fR
36
36
  The `planDigest` the preview printed; the run acts only if the plan recomputed now has this digest
37
37
  .TP
38
+ \fB\-\-revert\fR
39
+ Undo the last committed migrate (restores what it backed up, undoes its moves and its Postgres and R2 re\-keying); previews first, `\-\-commit \-\-plan\-digest` acts
40
+ .TP
41
+ \fB\-\-backup\fR \fI<DIR>\fR
42
+ With \-\-revert, the backup directory to restore (default: the newest under .canon/migrate\-backup/)
43
+ .TP
38
44
  \fB\-\-json\fR
39
45
  Output JSON instead of the human\-readable form
40
46
  .TP
@@ -50,6 +56,8 @@ Print version
50
56
  Examples:
51
57
  canon migrate
52
58
  canon migrate \-\-commit \-\-plan\-digest <DIGEST>
59
+ canon migrate \-\-revert
60
+ canon migrate \-\-revert \-\-commit \-\-plan\-digest <DIGEST>
53
61
 
54
62
  The bare run prints the plan and its planDigest and writes nothing; \-\-commit \-\-plan\-digest applies exactly that plan. Idempotent:
55
63
  a second run finds nothing to move, and a run that stopped partway is finished
@@ -81,9 +89,23 @@ by the next one.
81
89
  \- Reviews written before 0.23 are re\-pinned to what their evidence says: a
82
90
  review current under the old rule stays current, a stale one stays stale.
83
91
 
92
+ \-\-revert undoes a committed run: before it acts, \-\-commit copies everything it may touch
93
+ (canon.yaml, .gitignore, .canon/ with hot.db, the spec roots, openspec changes, hooks and
94
+ skill) and the git index entries of those paths under .canon/migrate\-backup/<timestamp>/.
95
+ \-\-revert restores that state (files moved back, files it wrote removed, the git mv\*(Aqs undone,
96
+ hot.db restored) and gives Postgres rows and R2 objects their old keys from the plan\*(Aqs
97
+ recorded ones (set the DSN variable the canon.yaml names). It restores the newest backup, or
98
+ the one \-\-backup names, previews first like the migrate, and discards anything written
99
+ under those paths since the migrate.
100
+
84
101
  Refuses (exit 2, nothing written) on uncommitted changes under a path it
85
102
  moves, on a destination that already exists, on a change directory that could
86
103
  stop halfway, and on a canon.yaml edit it cannot make with every other byte
87
104
  kept. canon.yaml is written atomically.
105
+ \- Change briefs in the 0.30 format (`canon:` comments, Korean headings) are rewritten to the 0.31
106
+ format: comments gone, waivers in the frontmatter, headings in English. The plan says first whether it
107
+ re\-binds an `Approved:` digest or a chore review pin; then `\-\-commit` is the human\*(Aqs (HUMAN_ONLY for
108
+ every agent role). `\-\-revert` restores them byte for byte and refuses, naming the file, when one changed
109
+ since the migrate.
88
110
  .SH VERSION
89
- v0.29.0
111
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-plugin-sync 1 "sync 0.29.0"
3
+ .TH canon-plugin-sync 1 "sync 0.31.0"
4
4
  .SH NAME
5
5
  canon\-plugin\-sync \- Validate and write a plugin\*(Aqs overlay records
6
6
  .SH SYNOPSIS
@@ -50,4 +50,4 @@ Print version
50
50
  <\fIPLUGIN_ID\fR>
51
51
  A .canon/plugins/<id>/plugin.yaml manifest id (e.g. porting)
52
52
  .SH VERSION
53
- v0.29.0
53
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-plugin 1 "plugin 0.29.0"
3
+ .TH canon-plugin 1 "plugin 0.31.0"
4
4
  .SH NAME
5
5
  canon\-plugin \- Sync plugin overlay records onto the ledger
6
6
  .SH SYNOPSIS
@@ -36,4 +36,4 @@ Print version
36
36
  canon\-plugin\-sync(1)
37
37
  Validate and write a plugin\*(Aqs overlay records
38
38
  .SH VERSION
39
- v0.29.0
39
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-policy-approve 1 "approve 0.29.0"
3
+ .TH canon-policy-approve 1 "approve 0.31.0"
4
4
  .SH NAME
5
5
  canon\-policy\-approve \- Approve the current .canon/policy.yaml (written directly; nothing to promote)
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.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-policy-show 1 "show 0.29.0"
3
+ .TH canon-policy-show 1 "show 0.31.0"
4
4
  .SH NAME
5
5
  canon\-policy\-show \- Show the policy\*(Aqs digest and its approval (who, when, which bytes)
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.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-policy 1 "policy 0.29.0"
3
+ .TH canon-policy 1 "policy 0.31.0"
4
4
  .SH NAME
5
5
  canon\-policy \- Record who approved the gate\*(Aqs policy (.canon/policy.yaml) and which bytes
6
6
  .SH SYNOPSIS
@@ -49,4 +49,4 @@ approval (or whose approval cannot be read) fails closed: `gate check` exits 1
49
49
  and `subject move` refuses to ship or reopen; `\-\-override\-reason` does not
50
50
  waive it. `canon policy show` reads the approval back.
51
51
  .SH VERSION
52
- v0.29.0
52
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-prompt-add 1 "add 0.29.0"
3
+ .TH canon-prompt-add 1 "add 0.31.0"
4
4
  .SH NAME
5
5
  canon\-prompt\-add \- Add a prompt bundle from a repository\-local JSON manifest
6
6
  .SH SYNOPSIS
@@ -44,4 +44,4 @@ Print help
44
44
  <\fINAME@VERSION\fR>
45
45
  The bundle to register, `NAME@VERSION`
46
46
  .SH VERSION
47
- v0.29.0
47
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-prompt-show 1 "show 0.29.0"
3
+ .TH canon-prompt-show 1 "show 0.31.0"
4
4
  .SH NAME
5
5
  canon\-prompt\-show \- Select a registered prompt bundle version
6
6
  .SH SYNOPSIS
@@ -38,4 +38,4 @@ Print help
38
38
  <\fINAME@VERSION\fR>
39
39
  The bundle to show, `NAME@VERSION`
40
40
  .SH VERSION
41
- v0.29.0
41
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-prompt 1 "prompt 0.29.0"
3
+ .TH canon-prompt 1 "prompt 0.31.0"
4
4
  .SH NAME
5
5
  canon\-prompt \- Register and select versioned prompt bundles
6
6
  .SH SYNOPSIS
@@ -40,4 +40,4 @@ Examples:
40
40
  canon prompt add reviewer@v1 \-\-manifest .canon/reviewer.json
41
41
  canon prompt show reviewer@v1 \-\-json
42
42
  .SH VERSION
43
- v0.29.0
43
+ v0.31.0
package/man/canon-purge.1 CHANGED
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-purge 1 "purge 0.29.0"
3
+ .TH canon-purge 1 "purge 0.31.0"
4
4
  .SH NAME
5
5
  canon\-purge \- Remove allowlisted records older than a cutoff: the bare run previews the removal set and its planDigest, `\-\-commit \-\-plan\-digest <DIGEST>` deletes it
6
6
  .SH SYNOPSIS
@@ -67,4 +67,4 @@ Print help
67
67
  \fB\-V\fR, \fB\-\-version\fR
68
68
  Print version
69
69
  .SH VERSION
70
- v0.29.0
70
+ v0.31.0
package/man/canon-query.1 CHANGED
@@ -1,10 +1,10 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-query 1 "query 0.29.0"
3
+ .TH canon-query 1 "query 0.31.0"
4
4
  .SH NAME
5
5
  canon\-query \- Read stored records across every storage tier
6
6
  .SH SYNOPSIS
7
- \fBcanon query\fR [\fB\-\-as\fR] <\fB\-\-kind\fR> [\fB\-\-since\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-plugin\-id\fR] [\fB\-\-history\fR] [\fB\-\-change\-id\fR] [\fB\-\-status\fR] [\fB\-\-domain\fR] [\fB\-\-include\-sensitive\fR] [\fB\-\-limit\fR] [\fB\-\-cursor\fR] [\fB\-\-all\fR] [\fB\-\-fields\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
7
+ \fBcanon query\fR [\fB\-\-as\fR] <\fB\-\-kind\fR> [\fB\-\-since\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-plugin\fR] [\fB\-\-history\fR] [\fB\-\-change\fR] [\fB\-\-status\fR] [\fB\-\-domain\fR] [\fB\-\-include\-sensitive\fR] [\fB\-\-limit\fR] [\fB\-\-cursor\fR] [\fB\-\-all\fR] [\fB\-\-fields\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
8
8
  .SH DESCRIPTION
9
9
  Read stored records across every storage tier
10
10
  .SH OPTIONS
@@ -72,13 +72,13 @@ The repo to act on (default: the nearest ancestor directory holding a canon.yaml
72
72
  \fB\-\-json\fR
73
73
  Output JSON instead of the human\-readable form
74
74
  .TP
75
- \fB\-\-plugin\-id\fR \fI<PLUGIN_ID>\fR
75
+ \fB\-\-plugin\fR \fI<PLUGIN_ID>\fR
76
76
  Project a plugin\*(Aqs overlay fields onto each record (fail\-soft)
77
77
  .TP
78
78
  \fB\-\-history\fR
79
79
  Every version of the kind, the ledger\*(Aqs and the archive\*(Aqs, oldest first, instead of the current records
80
80
  .TP
81
- \fB\-\-change\-id\fR \fI<CHANGE_ID>\fR
81
+ \fB\-\-change\fR \fI<CHANGE_ID>\fR
82
82
  Scope \-\-kind change/task to one ChangeId (other kinds exit 2)
83
83
  .TP
84
84
  \fB\-\-status\fR \fI<STATUS>\fR
@@ -108,4 +108,4 @@ Print help
108
108
  \fB\-V\fR, \fB\-\-version\fR
109
109
  Print version
110
110
  .SH VERSION
111
- v0.29.0
111
+ v0.31.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-regime-show 1 "show 0.29.0"
3
+ .TH canon-regime-show 1 "show 0.31.0"
4
4
  .SH NAME
5
5
  canon\-regime\-show \- Build a canonical regime key for hook scripts
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.31.0