@journeykit/canon 0.27.0 → 0.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/skills/SKILL.src.md +245 -89
- package/dist/skills/reference/brief-align.md +4 -2
- package/dist/skills/reference/brief-clarify.md +7 -5
- package/dist/skills/reference/brief-harden.md +4 -2
- package/dist/skills/reference/brief-polish.md +7 -5
- package/dist/skills/reference/brief-shape.md +4 -2
- package/dist/skills/reference/canon-artifact-ingest.md +11 -7
- package/dist/skills/reference/canon-authoring.md +16 -2
- package/dist/skills/reference/canon-context.md +21 -11
- package/dist/skills/reference/canon-fmt.md +10 -2
- package/dist/skills/reference/canon-gate.md +107 -69
- package/dist/skills/reference/canon-inventory.md +23 -15
- package/dist/skills/reference/canon-learn.md +23 -19
- package/dist/skills/reference/canon-plan-import.md +10 -7
- package/dist/skills/reference/canon-plugins.md +15 -8
- package/dist/skills/reference/canon-policy.md +20 -16
- package/dist/skills/reference/canon-report-dashboard.md +30 -19
- package/dist/skills/reference/canon-retrieve.md +13 -10
- package/dist/skills/reference/canon-review.md +96 -68
- package/dist/skills/reference/canon-session-ingest.md +7 -3
- package/dist/skills/reference/canon-storage.md +65 -39
- package/dist/skills/reference/canon-subject.md +116 -79
- package/dist/skills/reference/canon-vocab.md +1 -1
- package/dist/skills/reference/role-implementer.md +295 -64
- package/dist/skills/reference/role-orchestrator.md +547 -55
- package/dist/skills/reference/role-planner.md +189 -32
- package/dist/skills/reference/role-reviewer.md +257 -58
- package/dist/skills/scripts/canon-retrieve-pre-dispatch.sh +10 -5
- package/man/canon-adapter-authorize.1 +44 -0
- package/man/canon-adapter-validate.1 +44 -0
- package/man/canon-adapter.1 +46 -0
- package/man/canon-artifacts-move.1 +63 -0
- package/man/canon-artifacts-store.1 +54 -0
- package/man/canon-artifacts-verify.1 +48 -0
- package/man/canon-artifacts.1 +45 -0
- package/man/canon-brief-approve.1 +62 -0
- package/man/canon-brief-check.1 +44 -0
- package/man/canon-brief-show.1 +50 -0
- package/man/canon-brief.1 +63 -0
- package/man/canon-change-new.1 +66 -0
- package/man/canon-change.1 +42 -0
- package/man/canon-completion.1 +60 -0
- package/man/canon-context-pack-add.1 +47 -0
- package/man/canon-context-pack-show.1 +44 -0
- package/man/canon-context-pack-verify.1 +44 -0
- package/man/canon-context-pack.1 +50 -0
- package/man/canon-context.1 +44 -0
- package/man/canon-dashboard.1 +50 -0
- package/man/canon-demo-init.1 +44 -0
- package/man/canon-demo-review.1 +44 -0
- package/man/canon-demo.1 +47 -0
- package/man/canon-dispatch-begin.1 +80 -0
- package/man/canon-dispatch-diff.1 +41 -0
- package/man/canon-dispatch-end.1 +60 -0
- package/man/canon-dispatch.1 +45 -0
- package/man/canon-divergence-accept.1 +68 -0
- package/man/canon-divergence-add.1 +97 -0
- package/man/canon-divergence-defer.1 +71 -0
- package/man/canon-divergence-list.1 +56 -0
- package/man/canon-divergence-resolve.1 +68 -0
- package/man/canon-divergence.1 +51 -0
- package/man/canon-evidence-add.1 +168 -0
- package/man/canon-evidence-approval-payload.1 +65 -0
- package/man/canon-evidence-audit.1 +121 -0
- package/man/canon-evidence.1 +57 -0
- package/man/canon-export.1 +108 -0
- package/man/canon-feature-new.1 +62 -0
- package/man/canon-feature.1 +39 -0
- package/man/canon-finding-add.1 +196 -0
- package/man/canon-finding-close.1 +117 -0
- package/man/canon-finding-list.1 +59 -0
- package/man/canon-finding.1 +67 -0
- package/man/canon-format.1 +49 -0
- package/man/canon-gate-check.1 +44 -0
- package/man/canon-gate-install-hooks.1 +59 -0
- package/man/canon-gate-promote.1 +62 -0
- package/man/canon-gate.1 +50 -0
- package/man/canon-ingest-plans.1 +53 -0
- package/man/canon-ingest-records.1 +56 -0
- package/man/canon-ingest-sessions.1 +62 -0
- package/man/canon-ingest.1 +50 -0
- package/man/canon-init.1 +98 -0
- package/man/canon-inventory-sync.1 +50 -0
- package/man/canon-inventory.1 +39 -0
- package/man/canon-ledger-compact.1 +50 -0
- package/man/canon-ledger.1 +54 -0
- package/man/canon-migrate.1 +89 -0
- package/man/canon-plugin-sync.1 +53 -0
- package/man/canon-plugin.1 +39 -0
- package/man/canon-policy-approve.1 +50 -0
- package/man/canon-policy-show.1 +41 -0
- package/man/canon-policy.1 +52 -0
- package/man/canon-prompt-add.1 +47 -0
- package/man/canon-prompt-show.1 +41 -0
- package/man/canon-prompt.1 +43 -0
- package/man/canon-purge.1 +70 -0
- package/man/canon-query.1 +111 -0
- package/man/canon-regime-show.1 +50 -0
- package/man/canon-regime.1 +39 -0
- package/man/canon-report-build.1 +44 -0
- package/man/canon-report-check.1 +41 -0
- package/man/canon-report-snapshot.1 +47 -0
- package/man/canon-report.1 +45 -0
- package/man/canon-retrieve.1 +56 -0
- package/man/canon-review-change.1 +98 -0
- package/man/canon-review-scenario.1 +98 -0
- package/man/canon-review.1 +42 -0
- package/man/canon-scenario-new.1 +80 -0
- package/man/canon-scenario.1 +39 -0
- package/man/canon-schema.1 +63 -0
- package/man/canon-selftest.1 +69 -0
- package/man/canon-skills-check.1 +47 -0
- package/man/canon-skills-doctor.1 +47 -0
- package/man/canon-skills-install.1 +53 -0
- package/man/canon-skills-show.1 +104 -0
- package/man/canon-skills.1 +48 -0
- package/man/canon-status.1 +51 -0
- package/man/canon-strategy-approval-payload.1 +53 -0
- package/man/canon-strategy-promote.1 +59 -0
- package/man/canon-strategy-rollback.1 +62 -0
- package/man/canon-strategy.1 +45 -0
- package/man/canon-subject-adopt.1 +53 -0
- package/man/canon-subject-move.1 +80 -0
- package/man/canon-subject-new.1 +65 -0
- package/man/canon-subject-show.1 +44 -0
- package/man/canon-subject-unadopt.1 +63 -0
- package/man/canon-subject.1 +51 -0
- package/man/canon-task-done.1 +47 -0
- package/man/canon-task.1 +42 -0
- package/man/canon-tier-age.1 +50 -0
- package/man/canon-tier.1 +39 -0
- package/man/canon.1 +169 -0
- package/package.json +9 -5
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-divergence-defer 1 "defer 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-divergence\-defer \- Directly record a deferred divergence (requires \-\-reason/\-\-expiry)
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon divergence defer\fR [\fB\-\-as\fR] [\fB\-\-project\-id\fR] [\fB\-\-rev\fR] [\fB\-\-round\fR] <\fB\-\-actor\-id\fR> [\fB\-\-session\-id\fR] <\fB\-\-reason\fR> <\fB\-\-expiry\fR> [\fB\-\-role\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fISCENARIO_ID\fR>
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
Directly record a deferred divergence (requires \-\-reason/\-\-expiry)
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-\-project\-id\fR \fI<PROJECT_ID>\fR
|
|
30
|
+
Spec corpus id of the scenario. Required only when canon.yaml configures more than one spec root
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-\-rev\fR \fI<REV>\fR [default: HEAD]
|
|
33
|
+
The commit this record is about: any git revision (`HEAD~1`, a branch, a tag, a short sha); the full sha is recorded with the code tree it saw. The default HEAD records the working tree as it stands (uncommitted code included), and a commit made from it has the same code tree. Outside git, or with no commit, the command refuses (NO_COMMIT)
|
|
34
|
+
.TP
|
|
35
|
+
\fB\-\-round\fR \fI<N>\fR [default: 1]
|
|
36
|
+
The review round this version belongs to (1\-based)
|
|
37
|
+
.TP
|
|
38
|
+
\fB\-\-actor\-id\fR \fI<ACTOR_ID>\fR
|
|
39
|
+
The reviewer recording this (recorded as the divergence\*(Aqs reviewer and actor)
|
|
40
|
+
.TP
|
|
41
|
+
\fB\-\-session\-id\fR \fI<SESSION_ID>\fR
|
|
42
|
+
The acting session (recorded as actor.session_id); optional
|
|
43
|
+
.TP
|
|
44
|
+
\fB\-\-reason\fR \fI<TEXT>\fR
|
|
45
|
+
Why the divergence is deferred
|
|
46
|
+
.TP
|
|
47
|
+
\fB\-\-expiry\fR \fI<TIMESTAMP>\fR
|
|
48
|
+
When the deferral lapses (RFC3339 or YYYY\-MM\-DD, UTC)
|
|
49
|
+
.TP
|
|
50
|
+
\fB\-\-role\fR \fI<ROLE>\fR
|
|
51
|
+
The role this record is attributed to (default: the role declared with \-\-as / CANON_ROLE)
|
|
52
|
+
.TP
|
|
53
|
+
\fB\-\-repo\fR \fI<DIR>\fR
|
|
54
|
+
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
55
|
+
.TP
|
|
56
|
+
\fB\-\-json\fR
|
|
57
|
+
Output JSON instead of the human\-readable form
|
|
58
|
+
.TP
|
|
59
|
+
\fB\-\-input\fR \fI<JSON|FILE|\->\fR
|
|
60
|
+
The arguments as JSON: an object (one run) or an array / NDJSON file or `\-` (a batch); keys are the option names in camelCase, `operands` an array
|
|
61
|
+
.TP
|
|
62
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
63
|
+
Print help
|
|
64
|
+
.TP
|
|
65
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
66
|
+
Print version
|
|
67
|
+
.TP
|
|
68
|
+
<\fISCENARIO_ID\fR>
|
|
69
|
+
The scenario (`<area>.<surface>.<nn>`)
|
|
70
|
+
.SH VERSION
|
|
71
|
+
v0.29.0
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-divergence-list 1 "list 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-divergence\-list \- List the current divergence burn\-down state
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon divergence list\fR [\fB\-\-as\fR] [\fB\-\-repo\fR] [\fB\-\-as\-of\fR] [\fB\-\-json\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
|
+
.SH DESCRIPTION
|
|
9
|
+
List the current divergence burn\-down state
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-\-repo\fR \fI<DIR>\fR
|
|
30
|
+
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-\-as\-of\fR \fI<TIMESTAMP>\fR
|
|
33
|
+
Governs Deferred expiry; defaults to now
|
|
34
|
+
.TP
|
|
35
|
+
\fB\-\-json\fR
|
|
36
|
+
Print `{data, meta}` as JSON
|
|
37
|
+
.TP
|
|
38
|
+
\fB\-\-limit\fR \fI<N>\fR
|
|
39
|
+
Return at most this many records (default 100)
|
|
40
|
+
.TP
|
|
41
|
+
\fB\-\-cursor\fR \fI<CURSOR>\fR
|
|
42
|
+
Resume after the last record of the previous page (the `nextCursor` it reported)
|
|
43
|
+
.TP
|
|
44
|
+
\fB\-\-all\fR
|
|
45
|
+
Return every record from the cursor on, not one page
|
|
46
|
+
.TP
|
|
47
|
+
\fB\-\-fields\fR \fI<FIELDS>\fR
|
|
48
|
+
With \-\-json, keep only these scenario fields (comma\-separated): project_id, scenario_id, state, reason, expiry, tracking; an unknown field is refused (camelCase and snake_case both match)
|
|
49
|
+
.TP
|
|
50
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
51
|
+
Print help
|
|
52
|
+
.TP
|
|
53
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
54
|
+
Print version
|
|
55
|
+
.SH VERSION
|
|
56
|
+
v0.29.0
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-divergence-resolve 1 "resolve 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-divergence\-resolve \- Directly record a resolved divergence
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon divergence resolve\fR [\fB\-\-as\fR] [\fB\-\-project\-id\fR] [\fB\-\-rev\fR] [\fB\-\-round\fR] <\fB\-\-actor\-id\fR> [\fB\-\-session\-id\fR] [\fB\-\-detail\fR] [\fB\-\-role\fR] [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-\-input\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fISCENARIO_ID\fR>
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
Directly record a resolved divergence
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-\-project\-id\fR \fI<PROJECT_ID>\fR
|
|
30
|
+
Spec corpus id of the scenario. Required only when canon.yaml configures more than one spec root
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-\-rev\fR \fI<REV>\fR [default: HEAD]
|
|
33
|
+
The commit this record is about: any git revision (`HEAD~1`, a branch, a tag, a short sha); the full sha is recorded with the code tree it saw. The default HEAD records the working tree as it stands (uncommitted code included), and a commit made from it has the same code tree. Outside git, or with no commit, the command refuses (NO_COMMIT)
|
|
34
|
+
.TP
|
|
35
|
+
\fB\-\-round\fR \fI<N>\fR [default: 1]
|
|
36
|
+
The review round this version belongs to (1\-based)
|
|
37
|
+
.TP
|
|
38
|
+
\fB\-\-actor\-id\fR \fI<ACTOR_ID>\fR
|
|
39
|
+
The reviewer recording this (recorded as the divergence\*(Aqs reviewer and actor)
|
|
40
|
+
.TP
|
|
41
|
+
\fB\-\-session\-id\fR \fI<SESSION_ID>\fR
|
|
42
|
+
The acting session (recorded as actor.session_id); optional
|
|
43
|
+
.TP
|
|
44
|
+
\fB\-\-detail\fR \fI<TEXT>\fR
|
|
45
|
+
Free\-text detail recorded on the version (optional)
|
|
46
|
+
.TP
|
|
47
|
+
\fB\-\-role\fR \fI<ROLE>\fR
|
|
48
|
+
The role this record is attributed to (default: the role declared with \-\-as / CANON_ROLE)
|
|
49
|
+
.TP
|
|
50
|
+
\fB\-\-repo\fR \fI<DIR>\fR
|
|
51
|
+
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
52
|
+
.TP
|
|
53
|
+
\fB\-\-json\fR
|
|
54
|
+
Output JSON instead of the human\-readable form
|
|
55
|
+
.TP
|
|
56
|
+
\fB\-\-input\fR \fI<JSON|FILE|\->\fR
|
|
57
|
+
The arguments as JSON: an object (one run) or an array / NDJSON file or `\-` (a batch); keys are the option names in camelCase, `operands` an array
|
|
58
|
+
.TP
|
|
59
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
60
|
+
Print help
|
|
61
|
+
.TP
|
|
62
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
63
|
+
Print version
|
|
64
|
+
.TP
|
|
65
|
+
<\fISCENARIO_ID\fR>
|
|
66
|
+
The scenario (`<area>.<surface>.<nn>`)
|
|
67
|
+
.SH VERSION
|
|
68
|
+
v0.29.0
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-divergence 1 "divergence 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-divergence \- Stage, promote, resolve, and inspect spec divergences
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon divergence\fR [\fB\-\-as\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR>
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
Stage, promote, resolve, and inspect spec divergences
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
30
|
+
Print help
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
33
|
+
Print version
|
|
34
|
+
.SH SUBCOMMANDS
|
|
35
|
+
.TP
|
|
36
|
+
canon\-divergence\-add(1)
|
|
37
|
+
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 }`)
|
|
38
|
+
.TP
|
|
39
|
+
canon\-divergence\-resolve(1)
|
|
40
|
+
Directly record a resolved divergence
|
|
41
|
+
.TP
|
|
42
|
+
canon\-divergence\-defer(1)
|
|
43
|
+
Directly record a deferred divergence (requires \-\-reason/\-\-expiry)
|
|
44
|
+
.TP
|
|
45
|
+
canon\-divergence\-accept(1)
|
|
46
|
+
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`
|
|
47
|
+
.TP
|
|
48
|
+
canon\-divergence\-list(1)
|
|
49
|
+
List the current divergence burn\-down state
|
|
50
|
+
.SH VERSION
|
|
51
|
+
v0.29.0
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-evidence-add 1 "add 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-evidence\-add \- Record one attributed EvidenceRecord for a task or scenario (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon evidence add\fR [\fB\-\-as\fR] [\fB\-\-task\-id\fR] [\fB\-\-project\-id\fR] [\fB\-\-class\fR] [\fB\-\-ref\fR] [\fB\-\-verdict\fR] [\fB\-\-summary\fR] [\fB\-\-command\-result\fR] [\fB\-\-scenario\-id\fR] [\fB\-\-run\-id\fR] [\fB\-\-surface\-ref\fR] [\fB\-\-actor\-id\fR] [\fB\-\-role\fR] [\fB\-\-session\-id\fR] [\fB\-\-approver\fR] [\fB\-\-approval\-role\fR] [\fB\-\-signature\-file\fR] [\fB\-\-approval\-at\fR] [\fB\-\-rev\fR] [\fB\-\-artifact\fR] [\fB\-\-report\fR] [\fB\-\-report\-case\fR] [\fB\-\-all\-scenarios\fR] [\fB\-\-max\-artifact\-mib\fR] [\fB\-\-override\-reason\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
|
+
.SH DESCRIPTION
|
|
9
|
+
Record one attributed EvidenceRecord for a task or scenario (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-\-task\-id\fR \fI<TASK_ID>\fR
|
|
30
|
+
Plan task this evidence attests to (<change_id>#<n>); required unless \-\-scenario\-id is given
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-\-project\-id\fR \fI<PROJECT_ID>\fR
|
|
33
|
+
Spec corpus id for \-\-scenario\-id (canon keys a scenario by the composite (project_id, scenario_id)). Must name a spec root configured in canon.yaml, or the add is refused (UNKNOWN_SPEC_ROOT) before anything is written
|
|
34
|
+
.TP
|
|
35
|
+
\fB\-\-class\fR \fI<CLASS>\fR
|
|
36
|
+
What CLASS of evidence is attested to (test\-run, review, ...); default `test\-run` when a \-\-report is given. `audit` is refused: an external evaluator\*(Aqs re\-audit is `canon evidence audit`
|
|
37
|
+
.TP
|
|
38
|
+
\fB\-\-ref\fR \fI<TEXT>\fR
|
|
39
|
+
The reference a reader can resolve: a command line, commit sha, or report path (default: the \-\-report paths, comma\-separated, when one is given). NEVER run or resolved by canon
|
|
40
|
+
.TP
|
|
41
|
+
\fB\-\-verdict\fR \fI<VERDICT>\fR
|
|
42
|
+
faithful / not\-applicable / divergent. Given a \-\-report and no \-\-verdict, the verdict is derived from the bound cases (any failed: divergent; a skipped case and none failed: not\-applicable; else faithful), one record at a time with \-\-all\-scenarios; with no report the default is faithful. An explicit faithful over a failed or skipped case is refused
|
|
43
|
+
.br
|
|
44
|
+
|
|
45
|
+
.br
|
|
46
|
+
\fIPossible values:\fR
|
|
47
|
+
.RS 14
|
|
48
|
+
.IP \(bu 2
|
|
49
|
+
faithful
|
|
50
|
+
.IP \(bu 2
|
|
51
|
+
not\-applicable
|
|
52
|
+
.IP \(bu 2
|
|
53
|
+
divergent
|
|
54
|
+
.RE
|
|
55
|
+
.TP
|
|
56
|
+
\fB\-\-summary\fR \fI<TEXT>\fR
|
|
57
|
+
One\-line note, with or without \-\-task; a task\*(Aqs flipped row shows it as the latest summary (scanned for fabrication markers; line breaks refused)
|
|
58
|
+
.TP
|
|
59
|
+
\fB\-\-command\-result\fR \fI<TEXT>\fR
|
|
60
|
+
The real captured output backing \-\-summary (requires \-\-summary; scanned for fabrication markers)
|
|
61
|
+
.TP
|
|
62
|
+
\fB\-\-scenario\-id\fR \fI<SCENARIO_ID>\fR
|
|
63
|
+
Scenario this evidence also joins to
|
|
64
|
+
.TP
|
|
65
|
+
\fB\-\-run\-id\fR \fI<RUN_ID>\fR
|
|
66
|
+
RunId (ULID) of the run that produced this evidence
|
|
67
|
+
.TP
|
|
68
|
+
\fB\-\-surface\-ref\fR \fI<PATH_OR_EFFECT>\fR
|
|
69
|
+
Explicit risk binding: repository\-relative path or effect:<kebab\-slug>; persisted as surface_ref
|
|
70
|
+
.TP
|
|
71
|
+
\fB\-\-actor\-id\fR \fI<ACTOR_ID>\fR [default: canon]
|
|
72
|
+
The attesting actor\*(Aqs id (recorded as the attestation\*(Aqs author; line breaks refused)
|
|
73
|
+
.TP
|
|
74
|
+
\fB\-\-role\fR \fI<ROLE>\fR
|
|
75
|
+
The attesting role; `canon gate promote` derives its run_seq partition key from it. Default: the declared role (\-\-as / CANON_ROLE); required when none is declared
|
|
76
|
+
.TP
|
|
77
|
+
\fB\-\-session\-id\fR \fI<SESSION_ID>\fR
|
|
78
|
+
The attesting session (recorded as actor.session_id). Under require_review.distinct_actor a review from this session does not count
|
|
79
|
+
.TP
|
|
80
|
+
\fB\-\-approver\fR \fI<NAME>\fR
|
|
81
|
+
Human approval identity; authentication comes only from the detached signature
|
|
82
|
+
.TP
|
|
83
|
+
\fB\-\-approval\-role\fR \fI<ROLE>\fR
|
|
84
|
+
Approval role; only human is eligible for risk approval
|
|
85
|
+
.br
|
|
86
|
+
|
|
87
|
+
.br
|
|
88
|
+
\fIPossible values:\fR
|
|
89
|
+
.RS 14
|
|
90
|
+
.IP \(bu 2
|
|
91
|
+
human
|
|
92
|
+
.RE
|
|
93
|
+
.TP
|
|
94
|
+
\fB\-\-signature\-file\fR \fI<FILE>\fR
|
|
95
|
+
Armored SSH detached signature file. Canon never signs on the user\*(Aqs behalf
|
|
96
|
+
.TP
|
|
97
|
+
\fB\-\-approval\-at\fR \fI<TIMESTAMP>\fR
|
|
98
|
+
Timestamp (RFC3339 or YYYY\-MM\-DD) included in the signed approval payload
|
|
99
|
+
.TP
|
|
100
|
+
\fB\-\-rev\fR \fI<REV>\fR [default: HEAD]
|
|
101
|
+
The commit this record is about: any git revision (`HEAD~1`, a branch, a tag, a short sha); the full sha is recorded with the code tree it saw. The default HEAD records the working tree as it stands (uncommitted code included), and a commit made from it has the same code tree. Outside git, or with no commit, the command refuses (NO_COMMIT)
|
|
102
|
+
.TP
|
|
103
|
+
\fB\-\-artifact\fR \fI<PATH>\fR
|
|
104
|
+
EXPERIMENTAL: bind any file (trace, screenshots, agent QA log, report) by sha256; repeatable; must be inside the repo; with \-\-all\-scenarios only as <scenario\-id>=<path>, bound to that scenario\*(Aqs record alone
|
|
105
|
+
.TP
|
|
106
|
+
\fB\-\-report\fR \fI<FORMAT:PATH>\fR
|
|
107
|
+
EXPERIMENTAL: bind and parse a test report, `junit:<path>`, `cucumber:<path>` or `swift\-testing:<path>`; repeatable
|
|
108
|
+
.TP
|
|
109
|
+
\fB\-\-report\-case\fR \fI<NAME>\fR
|
|
110
|
+
EXPERIMENTAL: also bind this report case (a Rust test: its function name); repeatable. Cases whose own scenario id is this one are always bound
|
|
111
|
+
.TP
|
|
112
|
+
\fB\-\-all\-scenarios\fR
|
|
113
|
+
One record per indexed scenario of \-\-project\-id that owns a case in the \-\-report(s), all or nothing (see below)
|
|
114
|
+
.TP
|
|
115
|
+
\fB\-\-max\-artifact\-mib\fR \fI<N>\fR [default: 25]
|
|
116
|
+
Per\-file size limit for the artifact store (.canon/artifacts/sha256/), in MiB; a larger bound file is refused
|
|
117
|
+
.TP
|
|
118
|
+
\fB\-\-override\-reason\fR \fI<TEXT>\fR
|
|
119
|
+
Attest anyway while a subject this record attests for has a brief awaiting the human\*(Aqs answer (one line, recorded on the record with \-\-actor\-id)
|
|
120
|
+
.TP
|
|
121
|
+
\fB\-\-promote\fR
|
|
122
|
+
Promote the record this run staged, in the same run; records others staged stay staged (the default under canon.yaml `write: { promote: auto }`)
|
|
123
|
+
.TP
|
|
124
|
+
\fB\-\-no\-promote\fR
|
|
125
|
+
Keep this write staged even under canon.yaml `write: { promote: auto }`
|
|
126
|
+
.TP
|
|
127
|
+
\fB\-\-repo\fR \fI<DIR>\fR
|
|
128
|
+
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
129
|
+
.TP
|
|
130
|
+
\fB\-\-json\fR
|
|
131
|
+
Output JSON instead of the human\-readable form
|
|
132
|
+
.TP
|
|
133
|
+
\fB\-\-input\fR \fI<JSON|FILE|\->\fR
|
|
134
|
+
The arguments as JSON: an object (one run) or an array / NDJSON file or `\-` (a batch); keys are the option names in camelCase, `operands` an array
|
|
135
|
+
.TP
|
|
136
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
137
|
+
Print help
|
|
138
|
+
.TP
|
|
139
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
140
|
+
Print version
|
|
141
|
+
.SH EXTRA
|
|
142
|
+
ATTESTATION, NOT PROOF.
|
|
143
|
+
The evidence command never runs, resolves, or checks \-\-ref. The attestor can authorize its own checkbox; this is an attestation, not independent approval.
|
|
144
|
+
The gate skips the staleness, trust\-ladder, release\-trust, and divergence dimensions.
|
|
145
|
+
Detached approvals require an external signature; canon never signs on the user\*(Aqs behalf.
|
|
146
|
+
|
|
147
|
+
EXPERIMENTAL BINDING (\-\-artifact, \-\-report).
|
|
148
|
+
Canon reads files your runner or agent already wrote; it never runs a test. \-\-artifact binds any file by sha256; \-\-report junit:<path>, cucumber:<path> or swift\-testing:<path> (the JSON\-lines event stream of `swift test \-\-experimental\-event\-stream\-output`) also records the matched case and its outcome (a faithful verdict needs every bound case to pass). Every case whose own scenario id (the first id in its classname, then name, a Swift Testing display name, then function name, or a Cucumber tag) is this one is bound; a case that only mentions it is not; \-\-report\-case adds more. With \-\-task and no \-\-scenario\-id, every case in the report is bound. Bound files are copied into .canon/artifacts/sha256/<hex> (commit them with the ledger; per\-file limit \-\-max\-artifact\-mib, default 25), and canon gate check re\-hashes them: a bound file whose bytes are gone is stale\-evidence. Strength requirements are opt\-in via policy experimental.evidence_binding (off by default).
|
|
149
|
+
|
|
150
|
+
ONE REPORT, MANY SCENARIOS (\-\-all\-scenarios).
|
|
151
|
+
With \-\-report, writes one record per indexed scenario that owns a case in the report, each with its own cases and its own verdict: \-\-verdict when given, else derived (faithful when every case passed, divergent when one failed, not\-applicable when one was skipped). A case whose id is not indexed is named and skipped. All or nothing: any refusal (a claimed faithful verdict over a failed case, a fabrication marker, an unapproved brief, a dropped binding) writes no record. The records share the stored report file.
|
|
152
|
+
|
|
153
|
+
FILES BELONG TO TESTS (\-\-artifact).
|
|
154
|
+
A record binds the attachments of the cases it owns: JUnit `[[ATTACHMENT|<path>]]` lines in a test\*(Aqs <system\-out> (Playwright\*(Aqs reporter; the path is relative to the report\*(Aqs directory) and Cucumber JSON embeddings, in a batch and with \-\-scenario\-id alike. A missing, out\-of\-repo or oversized attachment is refused naming the case and the path. With \-\-all\-scenarios a bare \-\-artifact <path> is refused (it would bind to every record); bind a file to one scenario with \-\-artifact <scenario\-id>=<path> (the part before the first `=` counts only when shaped like a scenario id; write ./<path> for a file named otherwise).
|
|
155
|
+
|
|
156
|
+
A WRITE THAT BREAKS A REVIEW PIN SAYS SO.
|
|
157
|
+
When the new record supersedes evidence a current pinned review saw, one line per review now stale names the reviewer, the scenario and the `canon review scenario` command that re\-pins it (`\-\-rev` names the commit).
|
|
158
|
+
|
|
159
|
+
RE\-ATTESTING NEVER DROPS A BINDING SILENTLY (\-\-drop\-attachment).
|
|
160
|
+
For a scenario, a record that leaves out a file the scenario\*(Aqs latest record binds is refused (exit 2) until it re\-binds the file (new bytes at the same path are fine) or names it with \-\-drop\-attachment <path> (repeatable) \-\-drop\-reason <text>. The drop is recorded on the record and listed by canon status. Task\-only evidence has no drop guard.
|
|
161
|
+
|
|
162
|
+
NOTHING IS ATTESTED BEFORE THE BRIEF IS APPROVED (\-\-override\-reason).
|
|
163
|
+
While a subject this record attests for (the scenario\*(Aqs @subject owner, or any subject adopting the task\*(Aqs change) has a newest change whose proposal.md has no `Approved:` line, the add is refused (exit 1, nothing staged): stop, report the brief and wait for the human\*(Aqs answer. \-\-override\-reason <text> attests anyway; the reason, the waived subjects and \-\-actor\-id are recorded on the record and listed by canon status and canon gate check. A subject with no proposal.md to answer is unaffected; review scenario and finding add are never refused.
|
|
164
|
+
|
|
165
|
+
AUDITS.
|
|
166
|
+
An external evaluator\*(Aqs re\-audit is `canon evidence audit <SCENARIO_ID>`, not `\-\-kind audit`.
|
|
167
|
+
.SH VERSION
|
|
168
|
+
v0.29.0
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-evidence-approval-payload 1 "approval-payload 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-evidence\-approval\-payload \- Emit exact bytes for external `ssh\-keygen \-Y sign \-n canon\-approval\-v1`
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon evidence approval\-payload\fR [\fB\-\-as\fR] [\fB\-\-task\-id\fR] [\fB\-\-project\-id\fR] [\fB\-\-scenario\-id\fR] [\fB\-\-run\-id\fR] [\fB\-\-rev\fR] [\fB\-\-surface\-ref\fR] <\fB\-\-approver\fR> <\fB\-\-approval\-at\fR> [\fB\-\-repo\fR] [\fB\-\-json\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR]
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
Emit exact bytes for external `ssh\-keygen \-Y sign \-n canon\-approval\-v1`
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-\-task\-id\fR \fI<TASK_ID>\fR
|
|
30
|
+
The plan task the approval is for (<change_id>#<n>); give this or \-\-scenario\-id
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-\-project\-id\fR \fI<PROJECT_ID>\fR
|
|
33
|
+
Spec corpus id for \-\-scenario\-id. Required only when canon.yaml configures more than one spec root
|
|
34
|
+
.TP
|
|
35
|
+
\fB\-\-scenario\-id\fR \fI<SCENARIO_ID>\fR
|
|
36
|
+
The scenario the approval is for; give this or \-\-task\-id
|
|
37
|
+
.TP
|
|
38
|
+
\fB\-\-run\-id\fR \fI<RUN_ID>\fR
|
|
39
|
+
The dispatch run the approved work belongs to
|
|
40
|
+
.TP
|
|
41
|
+
\fB\-\-rev\fR \fI<REV>\fR [default: HEAD]
|
|
42
|
+
The commit this record is about: any git revision (`HEAD~1`, a branch, a tag, a short sha); the full sha is recorded with the code tree it saw. The default HEAD records the working tree as it stands (uncommitted code included), and a commit made from it has the same code tree. Outside git, or with no commit, the command refuses (NO_COMMIT)
|
|
43
|
+
.TP
|
|
44
|
+
\fB\-\-surface\-ref\fR \fI<PATH_OR_EFFECT>\fR
|
|
45
|
+
The risk surface being approved: a repository\-relative path or `effect:<kebab\-slug>` (repeatable)
|
|
46
|
+
.TP
|
|
47
|
+
\fB\-\-approver\fR \fI<NAME>\fR
|
|
48
|
+
Who approved (the human whose detached signature the payload is for)
|
|
49
|
+
.TP
|
|
50
|
+
\fB\-\-approval\-at\fR \fI<TIMESTAMP>\fR
|
|
51
|
+
The approval time that is signed into the payload: RFC3339, or YYYY\-MM\-DD (UTC midnight)
|
|
52
|
+
.TP
|
|
53
|
+
\fB\-\-repo\fR \fI<DIR>\fR
|
|
54
|
+
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
55
|
+
.TP
|
|
56
|
+
\fB\-\-json\fR
|
|
57
|
+
Output JSON instead of the human\-readable form
|
|
58
|
+
.TP
|
|
59
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
60
|
+
Print help
|
|
61
|
+
.TP
|
|
62
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
63
|
+
Print version
|
|
64
|
+
.SH VERSION
|
|
65
|
+
v0.29.0
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-evidence-audit 1 "audit 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-evidence\-audit \- Record an external evaluator\*(Aqs re\-audit of one scenario (class `audit`; the verdict follows \-\-audit\-result; canon never runs the evaluator)
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon evidence audit\fR [\fB\-\-as\fR] [\fB\-\-project\-id\fR] <\fB\-\-ref\fR> [\fB\-\-summary\fR] [\fB\-\-command\-result\fR] [\fB\-\-run\-id\fR] [\fB\-\-actor\-id\fR] [\fB\-\-role\fR] [\fB\-\-session\-id\fR] [\fB\-\-rev\fR] [\fB\-\-artifact\fR] [\fB\-\-report\fR] [\fB\-\-report\-case\fR] [\fB\-\-max\-artifact\-mib\fR] <\fB\-\-evaluator\-id\fR> <\fB\-\-evaluator\-version\fR> <\fB\-\-evaluator\-digest\fR> <\fB\-\-audit\-result\fR> [\fB\-\-override\-reason\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] <\fISCENARIO_ID\fR>
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
Record an external evaluator\*(Aqs re\-audit of one scenario (class `audit`; the verdict follows \-\-audit\-result; canon never runs the evaluator)
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-\-project\-id\fR \fI<PROJECT_ID>\fR
|
|
30
|
+
Spec corpus id of the scenario. Required only when canon.yaml configures more than one spec root; refused (UNKNOWN_SPEC_ROOT) when it names none
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-\-ref\fR \fI<TEXT>\fR
|
|
33
|
+
The reference a reader can resolve: a command line, commit sha, or report path. NEVER run or resolved by canon
|
|
34
|
+
.TP
|
|
35
|
+
\fB\-\-summary\fR \fI<TEXT>\fR
|
|
36
|
+
One\-line note (scanned for fabrication markers; line breaks refused)
|
|
37
|
+
.TP
|
|
38
|
+
\fB\-\-command\-result\fR \fI<TEXT>\fR
|
|
39
|
+
The real captured output backing \-\-summary (requires \-\-summary; scanned for fabrication markers)
|
|
40
|
+
.TP
|
|
41
|
+
\fB\-\-run\-id\fR \fI<RUN_ID>\fR
|
|
42
|
+
RunId (ULID) of the run that produced this evidence
|
|
43
|
+
.TP
|
|
44
|
+
\fB\-\-actor\-id\fR \fI<ACTOR_ID>\fR [default: canon]
|
|
45
|
+
The attesting actor\*(Aqs id (recorded as the attestation\*(Aqs author; line breaks refused)
|
|
46
|
+
.TP
|
|
47
|
+
\fB\-\-role\fR \fI<ROLE>\fR
|
|
48
|
+
The attesting role; `canon gate promote` derives its run_seq partition key from it. Default: the declared role (\-\-as / CANON_ROLE); required when none is declared
|
|
49
|
+
.TP
|
|
50
|
+
\fB\-\-session\-id\fR \fI<SESSION_ID>\fR
|
|
51
|
+
The attesting session (recorded as actor.session_id)
|
|
52
|
+
.TP
|
|
53
|
+
\fB\-\-rev\fR \fI<REV>\fR [default: HEAD]
|
|
54
|
+
The commit this record is about: any git revision (`HEAD~1`, a branch, a tag, a short sha); the full sha is recorded with the code tree it saw. The default HEAD records the working tree as it stands (uncommitted code included), and a commit made from it has the same code tree. Outside git, or with no commit, the command refuses (NO_COMMIT)
|
|
55
|
+
.TP
|
|
56
|
+
\fB\-\-artifact\fR \fI<PATH>\fR
|
|
57
|
+
EXPERIMENTAL: bind any file (trace, log, report) by sha256; repeatable; must be inside the repo
|
|
58
|
+
.TP
|
|
59
|
+
\fB\-\-report\fR \fI<FORMAT:PATH>\fR
|
|
60
|
+
EXPERIMENTAL: bind and parse a test report, `junit:<path>`, `cucumber:<path>` or `swift\-testing:<path>`; repeatable
|
|
61
|
+
.TP
|
|
62
|
+
\fB\-\-report\-case\fR \fI<NAME>\fR
|
|
63
|
+
EXPERIMENTAL: also bind this report case (a Rust test: its function name); repeatable
|
|
64
|
+
.TP
|
|
65
|
+
\fB\-\-max\-artifact\-mib\fR \fI<N>\fR [default: 25]
|
|
66
|
+
Per\-file size limit for the artifact store (.canon/artifacts/sha256/), in MiB; a larger bound file is refused
|
|
67
|
+
.TP
|
|
68
|
+
\fB\-\-evaluator\-id\fR \fI<ID>\fR
|
|
69
|
+
The external evaluator that re\-audited the scenario (canon never runs it)
|
|
70
|
+
.TP
|
|
71
|
+
\fB\-\-evaluator\-version\fR \fI<TEXT>\fR
|
|
72
|
+
The evaluator\*(Aqs version
|
|
73
|
+
.TP
|
|
74
|
+
\fB\-\-evaluator\-digest\fR \fI<DIGEST>\fR
|
|
75
|
+
sha256 of the evaluator (64 lowercase hex)
|
|
76
|
+
.TP
|
|
77
|
+
\fB\-\-audit\-result\fR \fI<RESULT>\fR
|
|
78
|
+
confirmed / refuted / indeterminate; the record\*(Aqs verdict follows it (confirmed → faithful, refuted → divergent, indeterminate → not\-applicable)
|
|
79
|
+
.br
|
|
80
|
+
|
|
81
|
+
.br
|
|
82
|
+
\fIPossible values:\fR
|
|
83
|
+
.RS 14
|
|
84
|
+
.IP \(bu 2
|
|
85
|
+
confirmed
|
|
86
|
+
.IP \(bu 2
|
|
87
|
+
refuted
|
|
88
|
+
.IP \(bu 2
|
|
89
|
+
indeterminate
|
|
90
|
+
.RE
|
|
91
|
+
.TP
|
|
92
|
+
\fB\-\-override\-reason\fR \fI<TEXT>\fR
|
|
93
|
+
Attest anyway while a subject this record attests for has a brief awaiting the human\*(Aqs answer (one line, recorded on the record with \-\-actor\-id)
|
|
94
|
+
.TP
|
|
95
|
+
\fB\-\-promote\fR
|
|
96
|
+
Promote the record this run staged, in the same run; records others staged stay staged (the default under canon.yaml `write: { promote: auto }`)
|
|
97
|
+
.TP
|
|
98
|
+
\fB\-\-no\-promote\fR
|
|
99
|
+
Keep this write staged even under canon.yaml `write: { promote: auto }`
|
|
100
|
+
.TP
|
|
101
|
+
\fB\-\-repo\fR \fI<DIR>\fR
|
|
102
|
+
The repo to act on (default: the nearest ancestor directory holding a canon.yaml)
|
|
103
|
+
.TP
|
|
104
|
+
\fB\-\-json\fR
|
|
105
|
+
Output JSON instead of the human\-readable form
|
|
106
|
+
.TP
|
|
107
|
+
\fB\-\-input\fR \fI<JSON|FILE|\->\fR
|
|
108
|
+
The arguments as JSON: an object (one run) or an array / NDJSON file or `\-` (a batch); keys are the option names in camelCase, `operands` an array
|
|
109
|
+
.TP
|
|
110
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
111
|
+
Print help
|
|
112
|
+
.TP
|
|
113
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
114
|
+
Print version
|
|
115
|
+
.TP
|
|
116
|
+
<\fISCENARIO_ID\fR>
|
|
117
|
+
The re\-audited scenario (`<area>.<surface>.<nn>`)
|
|
118
|
+
.SH EXTRA
|
|
119
|
+
Records an external evaluator\*(Aqs re\-audit of one scenario: \-\-evaluator\-id, \-\-evaluator\-version, \-\-evaluator\-digest <sha256>, \-\-audit\-result confirmed|refuted|indeterminate, and optional \-\-report/\-\-artifact counterexamples, bound and stored like any report. canon never generates or runs the audit. An audit never becomes the scenario\*(Aqs declared verdict; a refuted latest audit is false\-success in canon gate check, whatever the declared verdict says.
|
|
120
|
+
.SH VERSION
|
|
121
|
+
v0.29.0
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
.ie \n(.g .ds Aq \(aq
|
|
2
|
+
.el .ds Aq '
|
|
3
|
+
.TH canon-evidence 1 "evidence 0.29.0"
|
|
4
|
+
.SH NAME
|
|
5
|
+
canon\-evidence \- Author a staged, attributed evidence attestation for a plan task
|
|
6
|
+
.SH SYNOPSIS
|
|
7
|
+
\fBcanon evidence\fR [\fB\-\-as\fR] [\fB\-h\fR|\fB\-\-help\fR] [\fB\-V\fR|\fB\-\-version\fR] <\fIsubcommands\fR>
|
|
8
|
+
.SH DESCRIPTION
|
|
9
|
+
Author a staged, attributed evidence attestation for a plan task
|
|
10
|
+
.SH OPTIONS
|
|
11
|
+
.TP
|
|
12
|
+
\fB\-\-as\fR \fI<ROLE>\fR
|
|
13
|
+
The role you act as: planner, implementer, reviewer or orchestrator. Overrides `CANON_ROLE`. `schema` and `context` list only the role\*(Aqs commands, `status` keeps its steps, and `\-\-role` on `evidence add` / `evidence audit` / `review scenario` / `review change` defaults to it
|
|
14
|
+
.br
|
|
15
|
+
|
|
16
|
+
.br
|
|
17
|
+
\fIPossible values:\fR
|
|
18
|
+
.RS 14
|
|
19
|
+
.IP \(bu 2
|
|
20
|
+
planner
|
|
21
|
+
.IP \(bu 2
|
|
22
|
+
implementer
|
|
23
|
+
.IP \(bu 2
|
|
24
|
+
reviewer
|
|
25
|
+
.IP \(bu 2
|
|
26
|
+
orchestrator
|
|
27
|
+
.RE
|
|
28
|
+
.TP
|
|
29
|
+
\fB\-h\fR, \fB\-\-help\fR
|
|
30
|
+
Print help
|
|
31
|
+
.TP
|
|
32
|
+
\fB\-V\fR, \fB\-\-version\fR
|
|
33
|
+
Print version
|
|
34
|
+
.SH SUBCOMMANDS
|
|
35
|
+
.TP
|
|
36
|
+
canon\-evidence\-approval\-payload(1)
|
|
37
|
+
Emit exact bytes for external `ssh\-keygen \-Y sign \-n canon\-approval\-v1`
|
|
38
|
+
.TP
|
|
39
|
+
canon\-evidence\-add(1)
|
|
40
|
+
Record one attributed EvidenceRecord for a task or scenario (promoted in the same run under `write: { promote: auto }` or with \-\-promote; under `write.promote: manual`, commit it with `canon gate promote`)
|
|
41
|
+
.TP
|
|
42
|
+
canon\-evidence\-audit(1)
|
|
43
|
+
Record an external evaluator\*(Aqs re\-audit of one scenario (class `audit`; the verdict follows \-\-audit\-result; canon never runs the evaluator)
|
|
44
|
+
.SH EXTRA
|
|
45
|
+
Examples:
|
|
46
|
+
canon evidence add \-\-task\-id my\-change#3.1 \-\-class test\-run \-\-ref \*(Aqcargo test \-p canon\-cli\*(Aq \-\-role implementer
|
|
47
|
+
|
|
48
|
+
The loop:
|
|
49
|
+
canon evidence add ... Record an EvidenceRecord (promoted in the same run under
|
|
50
|
+
`write: { promote: auto }`, which `canon init` writes)
|
|
51
|
+
canon task done <id> Flip the checkbox on it
|
|
52
|
+
Under `write.promote: manual` (no `write:` key), run `canon gate promote` after
|
|
53
|
+
each add to commit it (assigns run_seq).
|
|
54
|
+
|
|
55
|
+
See `canon evidence add \-\-help` for exactly what the gate does and does not check.
|
|
56
|
+
.SH VERSION
|
|
57
|
+
v0.29.0
|