@rallycry/conveyor-agent 11.0.40 → 11.0.41

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.
@@ -0,0 +1,183 @@
1
+ # Report and card templates
2
+
3
+ The shapes behind steps 6 and 7 of
4
+ [conveyor-release-review](../SKILL.md). Fill them in; do not pad them. A
5
+ section with nothing to say is written as one line saying so, never dropped,
6
+ because a missing section reads as a skipped check.
7
+
8
+ `<label>` is `Release <version>` when a release is cut, and
9
+ `Pre-release <YYYY-MM-DD>` otherwise.
10
+
11
+ ## The report
12
+
13
+ Posted to the conversation, and to the release card's chat when one exists.
14
+
15
+ ```markdown
16
+ **HOLD — <label> @ <tip sha, 7 chars>.** 2 High findings. Blockers: <pack link>
17
+
18
+ Reviewed `origin/<default>...<tip>`: 38 PRs, 214 files. Tip recorded
19
+ <timestamp>; <"unchanged at report time" | "moved to <sha>, N commits not reviewed">.
20
+
21
+ ### Findings
22
+
23
+ | Priority | Finding | Evidence | Introduced by | Card |
24
+ | --- | --- | --- | --- | --- |
25
+ | High | Unique index fails on 14 duplicate rows | Observed | #4712 | <link> |
26
+ | Medium | Board filter matches nothing after status rename | Proven | #4698 + #4705 | <link> |
27
+
28
+ Release blockers: <pack link> (2 cards, Open)
29
+ Release suggestions: <pack link> (3 cards, Planning)
30
+
31
+ ### Deploy checklist
32
+
33
+ - [ ] Set `<VARIABLE>` in production before the API deploys (#4720)
34
+ - [ ] Nothing else requires a human step.
35
+
36
+ ### Coverage
37
+
38
+ 38 of 38 PRs evaluated. 2 without a card, reviewed on the diff alone: #4701, #4733.
39
+
40
+ | Dimension | Result |
41
+ | --- | --- |
42
+ | Cross-PR interaction | 1 finding. 6 overlapping surfaces read as combined diffs. |
43
+ | Data and migrations | 1 finding. 4 migrations, none lock-heavy at production size. |
44
+ | Rollback and off-switches | Clean. |
45
+ | ... | ... |
46
+
47
+ ### Struck
48
+
49
+ | Candidate | Struck because |
50
+ | --- | --- |
51
+ | Add a retry to the export job | Redundant: the queue already retries 3 times (`jobs/queue.ts:88`) |
52
+ | Guard against a malformed legacy payload | Niche and graceful: 0 occurrences in 30 days, error already surfaces to the user |
53
+
54
+ ### Unverified
55
+
56
+ | Candidate | Would be | What would settle it |
57
+ | --- | --- | --- |
58
+ | Webhook handler may double-fire on redelivery | High | A redelivery against the dev environment, or the provider's delivery log |
59
+
60
+ ### Method
61
+
62
+ Evidence sources used: dev and prod logs, local stack, read-only production data.
63
+ Unavailable: <source>, so <which dimensions rest on static reading>.
64
+ Not reviewed: <anything skipped, and why>.
65
+ ```
66
+
67
+ Rules for the verdict line:
68
+
69
+ - It is the **first line**, in both destinations. Someone who reads nothing
70
+ else must still get the verdict.
71
+ - It names the SHA. A verdict without one cannot be checked against what
72
+ actually shipped.
73
+ - `SHIP WITH OPEN QUESTIONS` names each open question on that same line or the
74
+ next one. It is not a softer `SHIP`.
75
+
76
+ ## The hold notice
77
+
78
+ Posted to the release card when the verdict is `HOLD`. The first line carries
79
+ the whole message; the report follows beneath it.
80
+
81
+ ```markdown
82
+ **HOLD — do not ship <label> until the blockers merge.** 2 High findings: <pack link>
83
+ ```
84
+
85
+ ## The pack parent
86
+
87
+ ```markdown
88
+ ## Objective
89
+ Clear the findings that block <label>, found by the release review of
90
+ `<tip sha>` on <date>.
91
+
92
+ ## Approach
93
+ Each child is one finding with its own evidence and its own smallest fix.
94
+ They are independent unless a `dependsOn` edge says otherwise.
95
+
96
+ ## Implementation Steps
97
+ 1. <child title> — <one line>
98
+ 2. <child title> — <one line>
99
+
100
+ ## Testing
101
+ Each child carries its own gates and acceptance criteria.
102
+
103
+ ## Notes
104
+ - Release card: <link>. Reviewed SHA: `<tip sha>`.
105
+ - <One of:> This is a full release, so fixes merged to `<dev>` ship with it.
106
+ <or> This is a cherry-pick release: once these merge, a human adds them with
107
+ Add to Release.
108
+ - Priority is the urgency of the fix. Risk is set by identification and review.
109
+
110
+ ## Builder briefing
111
+ - **Start here:** the child with the earliest deploy-time consequence.
112
+ - **Already decided:** each fix is the smallest change that removes the
113
+ consequence. Do not widen it.
114
+ - **Traps:** <what looks right and is not>
115
+ - **Verify in this order:** re-run each child's evidence command first; a
116
+ finding that no longer reproduces is a finding someone already fixed.
117
+ ```
118
+
119
+ The suggestions pack uses the same shape. Its Objective says these are worth
120
+ doing and do not hold the release, and its Notes say the pack sits in Planning
121
+ until a human promotes it.
122
+
123
+ ## The finding card
124
+
125
+ One per finding, as a pack child or as a standalone card. It follows the
126
+ `/conveyor-plan` plan format
127
+ ([plan-format.md](../../conveyor-plan/references/plan-format.md)) with two
128
+ sections added at the top, because a builder who cannot re-run the evidence
129
+ cannot tell a fixed finding from a wrong one.
130
+
131
+ ```markdown
132
+ ## Finding
133
+ <What breaks, for whom, and when. One short paragraph.>
134
+
135
+ Priority: <level>. Found in <label> @ `<tip sha>`. Release card: <link>.
136
+ Introduced by: #<pr> (<card slug>), #<pr> (<card slug>).
137
+
138
+ ## Evidence
139
+ Grade: <Observed | Reproduced | Proven>
140
+
141
+ <the exact query or command>
142
+
143
+ Result: <what it returned, with the numbers>
144
+
145
+ ## Objective
146
+ <One sentence: the consequence this card removes.>
147
+
148
+ ## Approach
149
+ <The smallest change that removes it, and why nothing larger is needed.>
150
+
151
+ ## Implementation Steps
152
+ 1. `path/to/file.ts:120` — `symbolName`: <the change>
153
+ 2. ...
154
+
155
+ ## Testing
156
+ - Gates: <the repo's scoped commands for this diff>
157
+ - The evidence command above no longer shows the failure.
158
+ - Manual tests (0-3): <plain sentences, user path only>
159
+
160
+ ## Notes
161
+ - What the adversarial pass considered and rejected: <larger fixes, and why>
162
+ - Blast radius: <callers and consumers of what this touches>
163
+
164
+ ## Builder briefing
165
+ - **Start here:** <file>
166
+ - **Already decided:** <what not to reopen, and why>
167
+ - **Traps:** <what looks right and is not>
168
+ - **Verify in this order:** <cheapest disqualifying check first>
169
+ ```
170
+
171
+ Rules for the card:
172
+
173
+ - **The description is for a non-engineer**: one or two plain sentences on
174
+ what goes wrong and for whom. Technical detail goes in the plan.
175
+ - **The title names the consequence, not the dimension.** "Deploy fails on
176
+ duplicate slugs", not "Migration issue".
177
+ - **Evidence is reproducible or it is not evidence.** An exact command, not
178
+ "checked the logs".
179
+ - **Never paste a secret, a token or personal data** into a card. Quote the
180
+ shape of the log line, not the user's email in it.
181
+ - **The fix is the smallest one.** Anything larger that the adversarial pass
182
+ rejected is recorded under Notes, so the builder does not rediscover it and
183
+ build it anyway.
@@ -132,6 +132,7 @@ labels. Each tag carries a `description` (≤255 — the summary), an `overview`
132
132
  | Hand it to the cloud | `conveyor-start` → starts a pod and confirms it came up (local surface only — `start_task` does not exist in a pod) |
133
133
  | Do the work here | `conveyor-build` → follows the plan to a PR |
134
134
  | Judge the work | `conveyor-review` → one verdict, with risk |
135
+ | Audit a release before it ships | `conveyor-release-review` → evidence-backed findings, filed by priority as a blocker pack and a suggestions pack (local surface only — it needs `create_task`, `manage_priorities`, and `add_dependency` on another card) |
135
136
  | Work a whole queue locally | `conveyor-local-loop` → selection and pacing over the above |
136
137
  | Keep the board honest | `conveyor-prune` → one disposition per open card, applied only after confirmation (local surface only — it needs `set_task_parent`, `create_task`, and the on-hold flag) |
137
138