@journeykit/canon 0.35.0 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/skills/SKILL.src.md +29 -19
  2. package/dist/skills/reference/canon-authoring.md +3 -2
  3. package/dist/skills/reference/canon-gate.md +18 -14
  4. package/dist/skills/reference/canon-inventory.md +3 -1
  5. package/dist/skills/reference/canon-policy.md +3 -3
  6. package/dist/skills/reference/canon-report-dashboard.md +5 -5
  7. package/dist/skills/reference/canon-review.md +7 -6
  8. package/dist/skills/reference/canon-storage.md +2 -2
  9. package/dist/skills/reference/canon-subject.md +20 -19
  10. package/dist/skills/reference/role-implementer.md +5 -5
  11. package/dist/skills/reference/role-orchestrator.md +22 -21
  12. package/dist/skills/reference/role-planner.md +7 -7
  13. package/dist/skills/reference/role-reviewer.md +7 -7
  14. package/man/canon-adapter-authorize.1 +2 -2
  15. package/man/canon-adapter-validate.1 +2 -2
  16. package/man/canon-adapter.1 +2 -2
  17. package/man/canon-artifacts-move.1 +6 -6
  18. package/man/canon-artifacts-store.1 +2 -2
  19. package/man/canon-artifacts-verify.1 +2 -2
  20. package/man/canon-artifacts.1 +2 -2
  21. package/man/canon-brief-approve.1 +5 -4
  22. package/man/canon-brief-check.1 +2 -2
  23. package/man/canon-brief-show.1 +2 -2
  24. package/man/canon-brief.1 +2 -2
  25. package/man/canon-change-new.1 +2 -2
  26. package/man/canon-change.1 +2 -2
  27. package/man/canon-completion.1 +2 -2
  28. package/man/canon-context-pack-add.1 +2 -2
  29. package/man/canon-context-pack-show.1 +2 -2
  30. package/man/canon-context-pack-verify.1 +2 -2
  31. package/man/canon-context-pack.1 +2 -2
  32. package/man/canon-context.1 +2 -2
  33. package/man/canon-dashboard.1 +2 -2
  34. package/man/canon-demo-init.1 +2 -2
  35. package/man/canon-demo-review.1 +2 -2
  36. package/man/canon-demo.1 +2 -2
  37. package/man/canon-dispatch-begin.1 +2 -2
  38. package/man/canon-dispatch-diff.1 +2 -2
  39. package/man/canon-dispatch-end.1 +2 -2
  40. package/man/canon-dispatch.1 +2 -2
  41. package/man/canon-divergence-accept.1 +2 -2
  42. package/man/canon-divergence-add.1 +3 -3
  43. package/man/canon-divergence-defer.1 +3 -3
  44. package/man/canon-divergence-list.1 +2 -2
  45. package/man/canon-divergence-resolve.1 +3 -3
  46. package/man/canon-divergence.1 +2 -2
  47. package/man/canon-evidence-add.1 +5 -5
  48. package/man/canon-evidence-approval-payload.1 +3 -3
  49. package/man/canon-evidence-audit.1 +4 -4
  50. package/man/canon-evidence.1 +2 -2
  51. package/man/canon-export.1 +2 -2
  52. package/man/canon-feature-new.1 +2 -2
  53. package/man/canon-feature.1 +2 -2
  54. package/man/canon-finding-add.1 +3 -3
  55. package/man/canon-finding-close.1 +2 -2
  56. package/man/canon-finding-list.1 +2 -2
  57. package/man/canon-finding.1 +2 -2
  58. package/man/canon-format.1 +2 -2
  59. package/man/canon-gate-check.1 +2 -2
  60. package/man/canon-gate-install-hooks.1 +2 -2
  61. package/man/canon-gate-promote.1 +2 -2
  62. package/man/canon-gate.1 +2 -2
  63. package/man/canon-ingest-plans.1 +2 -2
  64. package/man/canon-ingest-records.1 +2 -2
  65. package/man/canon-ingest-sessions.1 +2 -2
  66. package/man/canon-ingest.1 +2 -2
  67. package/man/canon-init.1 +2 -2
  68. package/man/canon-inventory-sync.1 +2 -2
  69. package/man/canon-inventory.1 +2 -2
  70. package/man/canon-ledger-compact.1 +5 -5
  71. package/man/canon-ledger.1 +3 -3
  72. package/man/canon-migrate.1 +8 -8
  73. package/man/canon-plugin-sync.1 +2 -2
  74. package/man/canon-plugin.1 +2 -2
  75. package/man/canon-policy-approve.1 +2 -2
  76. package/man/canon-policy-show.1 +2 -2
  77. package/man/canon-policy.1 +2 -2
  78. package/man/canon-prompt-add.1 +2 -2
  79. package/man/canon-prompt-show.1 +2 -2
  80. package/man/canon-prompt.1 +2 -2
  81. package/man/canon-purge.1 +7 -7
  82. package/man/canon-query.1 +2 -2
  83. package/man/canon-regime-show.1 +2 -2
  84. package/man/canon-regime.1 +2 -2
  85. package/man/canon-report-build.1 +2 -2
  86. package/man/canon-report-check.1 +2 -2
  87. package/man/canon-report-snapshot.1 +2 -2
  88. package/man/canon-report.1 +2 -2
  89. package/man/canon-retrieve.1 +2 -2
  90. package/man/canon-review-change.1 +3 -3
  91. package/man/canon-review-scenario.1 +3 -3
  92. package/man/canon-review.1 +2 -2
  93. package/man/canon-scenario-new.1 +2 -2
  94. package/man/canon-scenario.1 +2 -2
  95. package/man/canon-schema.1 +10 -4
  96. package/man/canon-search.1 +2 -2
  97. package/man/canon-selftest.1 +2 -2
  98. package/man/canon-skills-check.1 +2 -2
  99. package/man/canon-skills-doctor.1 +2 -2
  100. package/man/canon-skills-install.1 +2 -2
  101. package/man/canon-skills-show.1 +2 -2
  102. package/man/canon-skills.1 +2 -2
  103. package/man/canon-status.1 +2 -2
  104. package/man/canon-strategy-approval-payload.1 +2 -2
  105. package/man/canon-strategy-promote.1 +2 -2
  106. package/man/canon-strategy-rollback.1 +2 -2
  107. package/man/canon-strategy.1 +2 -2
  108. package/man/canon-subject-adopt.1 +2 -2
  109. package/man/canon-subject-move.1 +2 -2
  110. package/man/canon-subject-new.1 +2 -2
  111. package/man/canon-subject-show.1 +2 -2
  112. package/man/canon-subject-unadopt.1 +3 -3
  113. package/man/canon-subject.1 +2 -2
  114. package/man/canon-task-done.1 +2 -2
  115. package/man/canon-task.1 +2 -2
  116. package/man/canon-tier-age.1 +5 -5
  117. package/man/canon-tier.1 +2 -2
  118. package/man/canon-trace.1 +2 -2
  119. package/man/canon.1 +3 -3
  120. package/package.json +4 -4
@@ -4,7 +4,7 @@ You run the loop across agents and move the subject. You write no brief,
4
4
  code or review yourself. Declare the role with `CANON_ROLE=orchestrator` (or
5
5
  `--as orchestrator`); your `canon status` also lists the human's steps. The
6
6
  human's acts (`brief approve`, `policy approve`, `divergence accept`) refuse
7
- every agent role, you included (`HUMAN_ONLY`), unless you record the answer the
7
+ every agent role, you included (`ACTOR_DENIED`), unless you record the answer the
8
8
  human gave you in the conversation with `--relayed-via <tool>` (below). You never
9
9
  run them without that answer, and never remove or unset your role (`env -u CANON_ROLE`,
10
10
  dropping `--as`) to get past the refusal.
@@ -18,7 +18,7 @@ in your ids. Use only the options on a line; never guess one. Ask `canon schema
18
18
  <command> --json` only for a leaf this block does not list, or after a `USAGE` refusal.
19
19
 
20
20
  <!-- canon:generated commands-orchestrator begin -->
21
- Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `regime show`, `schema`, `selftest`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
21
+ Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `regime show`, `schema`, `selftest`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array; none is the key left out, `[]` is refused), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
22
22
  A `usage:` line shows the syntax and is not itself a command to run (the runnable example under it is): `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` exactly one is required, `[--x <V>]*` may repeat, `<X>+` is one or more, `[--a --b <V>]` go together. An option that is not on the line does not exist: it is refused (`USAGE`).
23
23
 
24
24
  ```text
@@ -37,8 +37,8 @@ canon adapter validate --response adapter-response.json --json
37
37
  ```
38
38
  ```text
39
39
  # Move the local artifact blobs to an object-store tier, verify them, and remove the local copies
40
- usage: canon artifacts move --tier <TIER> [--commit --plan-digest <DIGEST>] [--input]
41
- # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
40
+ usage: canon artifacts move --tier <TIER> [--commit --plan-digest <PLAN_DIGEST>] [--input]
41
+ # a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
42
42
  ```
43
43
  ```bash
44
44
  canon artifacts move --tier cold --json
@@ -220,16 +220,16 @@ canon inventory sync --json
220
220
  ```
221
221
  ```text
222
222
  # Move superseded versions of every record out of the ledger into the archive
223
- usage: canon ledger compact [--commit --plan-digest <DIGEST>] [--input]
224
- # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
223
+ usage: canon ledger compact [--commit --plan-digest <PLAN_DIGEST>] [--input]
224
+ # a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
225
225
  ```
226
226
  ```bash
227
227
  canon ledger compact --json
228
228
  ```
229
229
  ```text
230
230
  # Bring a repo from an earlier canon up to date
231
- usage: canon migrate [--commit --plan-digest <DIGEST>] [--revert | --relayed-via <NAME>] [--backup <DIR> (with --revert)] [--actor <ACTOR_ID> (with --relayed-via)] [--approver <NAME> (with --relayed-via)] [--note <TEXT> (with --relayed-via)] [--input]
232
- # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
231
+ usage: canon migrate [--commit --plan-digest <PLAN_DIGEST>] [--revert | --relayed-via <NAME>] [--backup <DIR> (with --revert)] [--actor <ACTOR_ID> (with --relayed-via)] [--approver <NAME> (with --relayed-via)] [--note <TEXT> (with --relayed-via)] [--input]
232
+ # a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
233
233
  ```
234
234
  ```bash
235
235
  canon migrate --json
@@ -264,8 +264,8 @@ canon prompt show reviewer@v1 --json
264
264
  ```
265
265
  ```text
266
266
  # Remove allowlisted records older than a cutoff
267
- usage: canon purge --kind <session|run|event|trajectory> --before <TIMESTAMP> [--commit --plan-digest <DIGEST>] [--input]
268
- # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
267
+ usage: canon purge --kind <session|run|event|trajectory> --before <TIMESTAMP> [--commit --plan-digest <PLAN_DIGEST>] [--input]
268
+ # a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
269
269
  ```
270
270
  ```bash
271
271
  canon purge --kind session --before 2020-01-01T00:00:00Z --json
@@ -314,7 +314,7 @@ canon retrieve --for-role reviewer --domain dev --limit 20 --json
314
314
  ```
315
315
  ```text
316
316
  # Describe canon's own commands
317
- usage: canon schema [<PATH>]* [--errors | --error <CODE> | --warning <CODE> | --warnings]
317
+ usage: canon schema [<PATH>]* [--schemas | --error <CODE> | --errors | --warning <CODE> | --warnings]
318
318
  ```
319
319
  ```bash
320
320
  canon schema evidence add --json
@@ -426,8 +426,8 @@ canon subject unadopt demo --change add-login --json
426
426
  ```
427
427
  ```text
428
428
  # Apply canon.yaml aging rules, moving old records to their destination tier
429
- usage: canon tier age [--commit --plan-digest <DIGEST>] [--input]
430
- # a bare run previews and prints planDigest; `--commit --plan-digest <DIGEST>` with that digest acts
429
+ usage: canon tier age [--commit --plan-digest <PLAN_DIGEST>] [--input]
430
+ # a bare run previews and prints planDigest; `--commit --plan-digest <PLAN_DIGEST>` with that digest acts
431
431
  ```
432
432
  ```bash
433
433
  canon tier age --json
@@ -527,16 +527,16 @@ Approve or fill the form. On their approval record it: `canon brief approve
527
527
  <ask|AskUserQuestion|chat> --actor <your actor id> --digest <slug>=<the digest
528
528
  shown>` (several slugs take one answer, each with its own `--digest`; nothing is written
529
529
  if one is refused). The record says you recorded it, with your role, actor and
530
- tool. `RELAY_DIGEST_MISMATCH` means the brief changed after they saw it: show it
530
+ tool. `RELAY_DIGEST_STALE` means the brief changed after they saw it: show it
531
531
  again. When `canon.yaml` has `approval: { relay: deny }` the call is refused
532
- (`HUMAN_ONLY`, naming the key): report the human's own call and wait for them to
532
+ (`ACTOR_DENIED`, naming the key): report the human's own call and wait for them to
533
533
  run it. Removing or unsetting your declared role (`env -u CANON_ROLE`,
534
534
  dropping `--as`) to get past a refusal is the same act under another label.
535
535
  `canon skills show role-planner` has the full procedure. Do not start the
536
536
  implementer before `canon brief show <slug>` reports `state: approved`.
537
537
  Never approve it yourself and never edit the policy to pass the gate. A
538
538
  policy that no longer matches the approval fails closed
539
- (`POLICY_CHANGED_SINCE_APPROVAL`, or `POLICY_APPROVAL_UNREADABLE`): the ship
539
+ (`POLICY_APPROVAL_STALE`, or `POLICY_APPROVAL_CORRUPT`): the ship
540
540
  guard and the reopen refuse, and `--override-reason` does not waive it. Run
541
541
  `canon policy show`, then show the policy to the human, ask them to re-approve
542
542
  and record their explicit answer (`canon policy approve --approver <their name>
@@ -576,7 +576,7 @@ its preview, never from an old digest.
576
576
 
577
577
  | The thought | The reality |
578
578
  |---|---|
579
- | "Edit the policy so the gate passes." | A changed policy fails closed (`POLICY_CHANGED_SINCE_APPROVAL`); ask the human to re-approve or restore it from git. |
579
+ | "Edit the policy so the gate passes." | A changed policy fails closed (`POLICY_APPROVAL_STALE`); ask the human to re-approve or restore it from git. |
580
580
  | "The reviewer can be me under another label." | The reviewer is a separate process with its own real session id (#39). |
581
581
  | "Approve the brief; the human said they are busy." | An answer they did not give is not recorded. Show the brief, ask, and record only an explicit approval with `--relayed-via`. |
582
582
  | "Override the refusal to ship." | Fix the gap the refusal names; `--override-reason` waives only the `require_review` gaps and the brief gap, is recorded on the subject, and is for the human's call, not a shortcut. |
@@ -591,7 +591,8 @@ directly (a transition is a state change, not a destructive act) and is not
591
591
  repeatable: a move to the state the subject is already in is refused
592
592
  (exit 2), so after a lost response read `subject show` before you retry.
593
593
  It refuses a move the policy does not allow (missing evidence or reviews,
594
- open blockers, an unapproved brief) with `SUBJECT_GATE_VIOLATION` and exit 1,
594
+ open blockers, an unapproved brief) with exit 2 and the code of the condition
595
+ (`SUBJECT_APPROVAL_REQUIRED` for a missing review, evidence or approval, `EVIDENCE_STALE`, `SUBJECT_INVALID` for the rest; several causes are `error.details[]`),
595
596
  the record unchanged; fix the gap rather than overriding. Move to `shipped`
596
597
  yourself once its guard passes, unless the brief says the human ships. A
597
598
  follow-up on a shipped subject goes back to `verifying` with `--reason`,
@@ -614,7 +615,7 @@ red. A bad `--to` fails with `error.field` `--to` and `error.expected`
614
615
  listing the states.
615
616
 
616
617
  **Done when:** `canon subject show demo` (the subject's id) reports the
617
- state you moved it to and `canon gate check` is clean; when the move exits 1,
618
+ state you moved it to and `canon gate check` is clean; when the move exits 2,
618
619
  read the refusal in `error` of `canon subject move demo --to shipped --json`.
619
620
 
620
621
  ## Destructive commands preview first
@@ -629,7 +630,7 @@ digits, over the effects and what the plan read, so a file or record the plan
629
630
  read that changed since is `PLAN_STALE` too, and `meta.next[0]` is the preview
630
631
  to run again. A commit holds the repository write lock for its whole run:
631
632
  another command that writes waits for it, and one that waited 30 seconds
632
- answers `REPO_WRITE_BUSY` (exit 2, retryable): run it again. A document passed
633
+ answers `REPO_LOCK_UNAVAILABLE` (exit 2, retryable): run it again. A document passed
633
634
  with `--input` never carries `--commit` or `--plan-digest`, and these five
634
635
  leaves take one object only (`INPUT_INVALID`).
635
636
 
@@ -675,7 +676,7 @@ canon skills install
675
676
  moves: commit first. In CI run it with full history (`fetch-depth: 0`).
676
677
  3. `canon skills install` refreshes the stub and the scripts for the selected
677
678
  harnesses; `canon skills check` reports a skill written by another canon
678
- version (exit 1, `SKILLS_DRIFT`), `canon skills doctor` explains it.
679
+ version (exit 1, `SKILLS_CHECK_FAILED`), `canon skills doctor` explains it.
679
680
 
680
681
  Commit what it changes, except the backup: `.canon/migrate-backup/` is local and
681
682
  git-ignored, and `canon migrate --revert` needs it (keep it until you are sure).
@@ -6,7 +6,7 @@ brief the human answers once. You build nothing. Declare the role with
6
6
  then show your steps and count the rest under `waitingOn`. The approvals are
7
7
  the human's: `brief approve`, `policy approve`, `divergence accept` and the
8
8
  `migrate --commit` that re-binds `Approved:` lines refuse every agent role
9
- (`HUMAN_ONLY`, `retryable: false`) unless you record the answer the human gave
9
+ (`ACTOR_DENIED`, `retryable: false`) unless you record the answer the human gave
10
10
  you in the conversation, with `--relayed-via <tool>` (step 4). Without a human's
11
11
  explicit answer you never run them, and you never remove or unset your role
12
12
  (`env -u CANON_ROLE`, dropping `--as`) to get past the refusal.
@@ -20,7 +20,7 @@ in your ids. Use only the options on a line; never guess one. Ask `canon schema
20
20
  <command> --json` only for a leaf this block does not list, or after a `USAGE` refusal.
21
21
 
22
22
  <!-- canon:generated commands-planner begin -->
23
- Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `schema`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
23
+ Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `schema`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array; none is the key left out, `[]` is refused), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
24
24
  A `usage:` line shows the syntax and is not itself a command to run (the runnable example under it is): `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` exactly one is required, `[--x <V>]*` may repeat, `<X>+` is one or more, `[--a --b <V>]` go together. An option that is not on the line does not exist: it is refused (`USAGE`).
25
25
 
26
26
  ```text
@@ -116,7 +116,7 @@ canon scenario new auth.login.02 --title "Sign out" --feature .canon/specs/kind=
116
116
  ```
117
117
  ```text
118
118
  # Describe canon's own commands
119
- usage: canon schema [<PATH>]* [--errors | --error <CODE> | --warning <CODE> | --warnings]
119
+ usage: canon schema [<PATH>]* [--schemas | --error <CODE> | --errors | --warning <CODE> | --warnings]
120
120
  ```
121
121
  ```bash
122
122
  canon schema evidence add --json
@@ -183,7 +183,7 @@ lists N blockers`); then, while prose advisories remain, to the polish pass
183
183
  (`polish the brief in <path> (canon skills show brief-polish), then run canon
184
184
  brief check <slug>`, with the advisory count and the top rule
185
185
  ids); the human step comes after it. A policy that no longer matches its approval fails closed
186
- (`POLICY_CHANGED_SINCE_APPROVAL`): never edit it; the human re-approves.
186
+ (`POLICY_APPROVAL_STALE`): never edit it; the human re-approves.
187
187
 
188
188
  ## Steps
189
189
 
@@ -286,9 +286,9 @@ ids); the human step comes after it. A policy that no longer matches its approva
286
286
  show` and the dashboard name it. Never approve in their name without their
287
287
  answer, never write the answer for them, and never edit the policy to make
288
288
  the gate pass. A digest that differs from the brief now
289
- (`RELAY_DIGEST_MISMATCH`) means the brief changed after they saw it: show
289
+ (`RELAY_DIGEST_STALE`) means the brief changed after they saw it: show
290
290
  it again and ask again; nothing was written. Without `--relayed-via` the call is
291
- `HUMAN_ONLY`; with it and no role declared, `USAGE`. When `canon.yaml`
291
+ `ACTOR_DENIED`; with it and no role declared, `USAGE`. When `canon.yaml`
292
292
  turns relaying off (`approval: { relay: deny }`), the refusal names that key:
293
293
  report the human's call (`canon brief approve add-login --approver <their
294
294
  name> --note "<their own words>"`) and wait for them to run it. Never
@@ -300,7 +300,7 @@ ids); the human step comes after it. A policy that no longer matches its approva
300
300
  evidence with its reason and tracking reference, the migrate plan), ask,
301
301
  count only an explicit approval, then record with the relay option.
302
302
  `canon brief show <slug>` then reports `state: approved`. A brief edited
303
- after its approval is not approved (`BRIEF_CHANGED_SINCE_APPROVAL`): it
303
+ after its approval is not approved (`BRIEF_APPROVAL_STALE`): it
304
304
  needs a new answer, shown and asked again, and a new `brief approve`. A follow-up that
305
305
  adds or changes a step of the brief is a scope change and needs a new
306
306
  answer.
@@ -3,7 +3,7 @@
3
3
  You are the independent second look. Declare the role with
4
4
  `CANON_ROLE=reviewer` (or `--as reviewer`); `--role` on `review scenario`,
5
5
  `review change` and `finding add` then defaults to `reviewer`. The human's
6
- acts refuse you (`HUMAN_ONLY`): `brief approve`, `policy approve` and
6
+ acts refuse you (`ACTOR_DENIED`): `brief approve`, `policy approve` and
7
7
  `divergence accept`, unless you record the answer the human gave you in the
8
8
  conversation with `--relayed-via <tool>` (the divergence acceptance below).
9
9
  Name what the human has to decide; never look for another flag that grants it.
@@ -19,7 +19,7 @@ in your ids. Use only the options on a line; never guess one. Ask `canon schema
19
19
  <command> --json` only for a leaf this block does not list, or after a `USAGE` refusal.
20
20
 
21
21
  <!-- canon:generated commands-reviewer begin -->
22
- Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `schema`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
22
+ Every leaf takes `--as <ROLE>` and `--json`; `--repo <DIR>` too, except `completion`, `schema`, `skills show`. `--input <JSON|FILE|->` runs a leaf from one JSON document (an array is a batch) and is only on the lines ending `[--input]`. Its document keys are the option names in camelCase, singular even when the option repeats (the value is then an array; none is the key left out, `[]` is refused), and `operands` holds the operands. `--fields <FIELDS>` is a comma list of the paths `canon schema <COMMAND> --json` declares under `outputs[].fields.paths`; a path is the record's own key, spelled as the answer spells it.
23
23
  A `usage:` line shows the syntax and is not itself a command to run (the runnable example under it is): `<X>` is a value, `[x]` optional, `a | b` a choice, `(a | b)` exactly one is required, `[--x <V>]*` may repeat, `<X>+` is one or more, `[--a --b <V>]` go together. An option that is not on the line does not exist: it is refused (`USAGE`).
24
24
 
25
25
  ```text
@@ -143,7 +143,7 @@ canon review scenario auth.login.01 --actor alice --role reviewer --original-spe
143
143
  ```
144
144
  ```text
145
145
  # Describe canon's own commands
146
- usage: canon schema [<PATH>]* [--errors | --error <CODE> | --warning <CODE> | --warnings]
146
+ usage: canon schema [<PATH>]* [--schemas | --error <CODE> | --errors | --warning <CODE> | --warnings]
147
147
  ```
148
148
  ```bash
149
149
  canon schema evidence add --json
@@ -288,7 +288,7 @@ sign.
288
288
  `divergence accept` is for a scenario whose honest evidence is `divergent`
289
289
  and whose gap is limited by something outside this change (an upstream
290
290
  limit, a platform bug) and is tracked there. It records a human's decision,
291
- so it refuses every agent role (`HUMAN_ONLY`), you included, unless it records
291
+ so it refuses every agent role (`ACTOR_DENIED`), you included, unless it records
292
292
  the answer the human gave you. What you do: confirm the evidence really is
293
293
  divergent and the limit is outside this change, then put to the human the
294
294
  scenario ids, the reason, the tracking reference and an expiry when the limit
@@ -297,11 +297,11 @@ Ask with the harness question tool (`ask` in omp, `AskUserQuestion` in Claude
297
297
  Code, otherwise in the chat): accept the gap, or not. Only an explicit
298
298
  approval counts; a question or a condition is not one, and no answer records
299
299
  nothing. Then record it from a session that did not attest the evidence
300
- (`DIVERGENCE_ACCEPT_REFUSED` otherwise): `canon divergence accept <ids> --actor
300
+ (`DIVERGENCE_DENIED` otherwise): `canon divergence accept <ids> --actor
301
301
  <your actor id> --reason "<why>" --tracking <ref> --approver <their name> --note
302
302
  "<their answer>" --relayed-via <tool>`; the record carries the relay, the
303
303
  approver and their answer. When `canon.yaml` has `approval: { relay: deny }` the
304
- call is refused (`HUMAN_ONLY`, naming the key) and the human runs it themselves.
304
+ call is refused (`ACTOR_DENIED`, naming the key) and the human runs it themselves.
305
305
  You never unset your role to run it. Never suggest it to skip
306
306
  a fix the implementer can make in this change. The acceptance pins that
307
307
  evidence: new evidence for the scenario, or its expiry, ends it, and the
@@ -358,7 +358,7 @@ implementer owns. Your last write's `meta.next` names the next step.
358
358
  identical repeat is reported `unchanged` (`data.unchanged: true`, or the
359
359
  element's `status` in a batch), so after a timeout run the same command
360
360
  again. A different finding under an occupied round and seq is refused
361
- (`FINDING_SEQ_OCCUPIED`): take the next seq. `finding close` with the same
361
+ (`FINDING_EXISTS`): take the next seq. `finding close` with the same
362
362
  disposition is a no-op too.
363
363
 
364
364
  ## Excuses that fail
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-adapter-authorize 1 "authorize 0.35.0"
3
+ .TH canon-adapter-authorize 1 "authorize 0.36.0"
4
4
  .SH NAME
5
5
  canon\-adapter\-authorize \- Authorize declared capabilities against repository policy (preflight only)
6
6
  .SH SYNOPSIS
@@ -41,4 +41,4 @@ Print help
41
41
  \fB\-V\fR, \fB\-\-version\fR
42
42
  Print version
43
43
  .SH VERSION
44
- v0.35.0
44
+ v0.36.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-adapter-validate 1 "validate 0.35.0"
3
+ .TH canon-adapter-validate 1 "validate 0.36.0"
4
4
  .SH NAME
5
5
  canon\-adapter\-validate \- Read and validate one provider\-neutral response envelope
6
6
  .SH SYNOPSIS
@@ -41,4 +41,4 @@ Print help
41
41
  \fB\-V\fR, \fB\-\-version\fR
42
42
  Print version
43
43
  .SH VERSION
44
- v0.35.0
44
+ v0.36.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-adapter 1 "adapter 0.35.0"
3
+ .TH canon-adapter 1 "adapter 0.36.0"
4
4
  .SH NAME
5
5
  canon\-adapter \- Validate a provider\-neutral adapter response without executing a provider
6
6
  .SH SYNOPSIS
@@ -43,4 +43,4 @@ Examples:
43
43
  canon adapter validate \-\-response response.json
44
44
  canon adapter validate \-\-response response.json \-\-repo . \-\-json
45
45
  .SH VERSION
46
- v0.35.0
46
+ v0.36.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts-move 1 "move 0.35.0"
3
+ .TH canon-artifacts-move 1 "move 0.36.0"
4
4
  .SH NAME
5
5
  canon\-artifacts\-move \- Move the local artifact blobs to an object\-store tier, verify them, and remove the local copies
6
6
  .SH SYNOPSIS
@@ -30,10 +30,10 @@ orchestrator
30
30
  The tier to move to: the name of an `s3` tier in canon.yaml (for example `cold`)
31
31
  .TP
32
32
  \fB\-\-commit\fR
33
- Act on the previewed plan; needs \-\-plan\-digest
33
+ Make the change; without it the command only previews.
34
34
  .TP
35
- \fB\-\-plan\-digest\fR \fI<DIGEST>\fR
36
- The `planDigest` the preview printed; the run acts only if the plan recomputed now has this digest
35
+ \fB\-\-plan\-digest\fR \fI<PLAN_DIGEST>\fR
36
+ The digest of the preview this commit carries out.
37
37
  .TP
38
38
  \fB\-\-repo\fR \fI<DIR>\fR
39
39
  The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
@@ -52,7 +52,7 @@ Print version
52
52
  .SH EXTRA
53
53
  Examples:
54
54
  canon artifacts move \-\-tier cold
55
- canon artifacts move \-\-tier cold \-\-commit \-\-plan\-digest <DIGEST>
55
+ canon artifacts move \-\-tier cold \-\-commit \-\-plan\-digest <PLAN_DIGEST>
56
56
 
57
57
  The bare run previews: it lists every upload and removal and prints a planDigest, and writes nothing. \-\-commit \-\-plan\-digest acts on exactly that plan (PLAN_STALE, exit 2, when it changed since).
58
58
 
@@ -60,4 +60,4 @@ The bare run previews: it lists every upload and removal and prints a planDigest
60
60
 
61
61
  Idempotent and resumable: a run stopped anywhere leaves a repo the gate still passes, and the next run finishes; a second run finds nothing to do. A blob whose bytes do not match its name is never moved. Moving back to local is refused; `\-\-tier local` on a local repo is a no\-op.
62
62
  .SH VERSION
63
- v0.35.0
63
+ v0.36.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts-store 1 "store 0.35.0"
3
+ .TH canon-artifacts-store 1 "store 0.36.0"
4
4
  .SH NAME
5
5
  canon\-artifacts\-store \- Store the bound files of existing evidence records and current reviews in the artifact store (.canon/artifacts/sha256/)
6
6
  .SH SYNOPSIS
@@ -51,4 +51,4 @@ For records written before canon stored bound bytes (0.11\-0.13), and for any ev
51
51
 
52
52
  Exit 0 when the pass ran (the gate decides whether an unstored file matters), 2 when the ledger cannot be read or a write fails.
53
53
  .SH VERSION
54
- v0.35.0
54
+ v0.36.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-artifacts-verify 1 "verify 0.35.0"
3
+ .TH canon-artifacts-verify 1 "verify 0.36.0"
4
4
  .SH NAME
5
5
  canon\-artifacts\-verify \- Check that the artifact store holds every file the latest evidence and current reviews bind (\-\-full re\-hashes the stored bytes)
6
6
  .SH SYNOPSIS
@@ -45,4 +45,4 @@ Asks the store canon.yaml\*(Aqs `artifacts:` block selects (default: local, .can
45
45
 
46
46
  Exit 0 when every file is stored, 1 when one is missing or altered (data.problems names each), 2 when the store cannot be used or reached: an unreachable store is a refusal, never a pass.
47
47
  .SH VERSION
48
- v0.35.0
48
+ v0.36.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.35.0"
3
+ .TH canon-artifacts 1 "artifacts 0.36.0"
4
4
  .SH NAME
5
5
  canon\-artifacts \- Check or move the evidence artifact store (local, or an object\-store tier)
6
6
  .SH SYNOPSIS
@@ -42,4 +42,4 @@ Store the bound files of existing evidence records and current reviews in the ar
42
42
  canon\-artifacts\-move(1)
43
43
  Move the local artifact blobs to an object\-store tier, verify them, and remove the local copies
44
44
  .SH VERSION
45
- v0.35.0
45
+ v0.36.0
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief-approve 1 "approve 0.35.0"
3
+ .TH canon-brief-approve 1 "approve 0.36.0"
4
4
  .SH NAME
5
5
  canon\-brief\-approve \- Record the human\*(Aqs approval of the brief, bound to its text; refused while `brief check` has blockers
6
6
  .SH SYNOPSIS
@@ -64,11 +64,12 @@ Examples:
64
64
  canon brief approve add\-login add\-search fix\-sync \-\-approver Ana \-\-note \*(AqAll three, go.\*(Aq
65
65
 
66
66
  Several ids take one name, one answer and one timestamp. Every id is checked
67
- first; one refused id refuses the call (BRIEF_APPROVE_REFUSED) and nothing is
67
+ first; one refused id refuses the call (the first refused id\*(Aqs code, with a
68
+ detail for each) and nothing is
68
69
  written. Writes `Approved: <who> <when> — "<words>" (brief sha256:<digest>)` into the
69
70
  brief (the digest covers the brief without its `Approved:` lines) and records
70
71
  `canon policy approve` in the same call. Edit the brief afterwards and it reads as
71
- not approved (BRIEF_CHANGED_SINCE_APPROVAL) until a human answers again and this
72
+ not approved (BRIEF_APPROVAL_STALE) until a human answers again and this
72
73
  runs again. Run it only from the human\*(Aqs answer, with their words as \-\-note.
73
74
  .SH VERSION
74
- v0.35.0
75
+ v0.36.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.35.0"
3
+ .TH canon-brief-check 1 "check 0.36.0"
4
4
  .SH NAME
5
5
  canon\-brief\-check \- Read the brief against the rules: blocker and advisory findings (exit 0 clean, 1 blockers, 2 refused)
6
6
  .SH SYNOPSIS
@@ -41,4 +41,4 @@ Print version
41
41
  [\fICHANGE_ID\fR]
42
42
  The change to read (default: the repo\*(Aqs only live change)
43
43
  .SH VERSION
44
- v0.35.0
44
+ v0.36.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.35.0"
3
+ .TH canon-brief-show 1 "show 0.36.0"
4
4
  .SH NAME
5
5
  canon\-brief\-show \- Show where the change stands and the next one to three steps; never edits
6
6
  .SH SYNOPSIS
@@ -50,4 +50,4 @@ Examples:
50
50
 
51
51
  The operand names the change; without it the repo\*(Aqs only live change is read.
52
52
  .SH VERSION
53
- v0.35.0
53
+ v0.36.0
package/man/canon-brief.1 CHANGED
@@ -1,6 +1,6 @@
1
1
  .ie \n(.g .ds Aq \(aq
2
2
  .el .ds Aq '
3
- .TH canon-brief 1 "brief 0.35.0"
3
+ .TH canon-brief 1 "brief 0.36.0"
4
4
  .SH NAME
5
5
  canon\-brief \- Check a change\*(Aqs brief (PRD format) and see the next steps; never edits
6
6
  .SH SYNOPSIS
@@ -61,4 +61,4 @@ gets one blocker, `brief.old\-format`: `canon migrate` rewrites it. A brief
61
61
  with fewer than two known headings (written before 0.19) checks as `brief.legacy`, an
62
62
  advisory. Without \-\-change, the repo\*(Aqs only live change is checked.
63
63
  .SH VERSION
64
- v0.35.0
64
+ v0.36.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.35.0"
3
+ .TH canon-change-new 1 "new 0.36.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.35.0
66
+ v0.36.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.35.0"
3
+ .TH canon-change 1 "change 0.36.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 auth \-\-title \*(AqAdd login\*(Aq
41
41
  .SH VERSION
42
- v0.35.0
42
+ v0.36.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.35.0"
3
+ .TH canon-completion 1 "completion 0.36.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.35.0
60
+ v0.36.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.35.0"
3
+ .TH canon-context-pack-add 1 "add 0.36.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.35.0
47
+ v0.36.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.35.0"
3
+ .TH canon-context-pack-show 1 "show 0.36.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.35.0
44
+ v0.36.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.35.0"
3
+ .TH canon-context-pack-verify 1 "verify 0.36.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.35.0
44
+ v0.36.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.35.0"
3
+ .TH canon-context-pack 1 "context-pack 0.36.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.35.0
50
+ v0.36.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.35.0"
3
+ .TH canon-context 1 "context 0.36.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.35.0
44
+ v0.36.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.35.0"
3
+ .TH canon-dashboard 1 "dashboard 0.36.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.35.0
50
+ v0.36.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.35.0"
3
+ .TH canon-demo-init 1 "init 0.36.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.35.0
44
+ v0.36.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.35.0"
3
+ .TH canon-demo-review 1 "review 0.36.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.35.0
44
+ v0.36.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.35.0"
3
+ .TH canon-demo 1 "demo 0.36.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.35.0
47
+ v0.36.0