@rallycry/conveyor-agent 11.0.39 → 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.
- package/dist/{chunk-B4YQABDZ.js → chunk-CG7AHC25.js} +400 -368
- package/dist/{chunk-WQC2YQT4.js → chunk-G2CE3NFY.js} +1 -1
- package/dist/{chunk-735H53UF.js → chunk-SELXSOT7.js} +142 -56
- package/dist/cli.js +4 -4
- package/dist/index.js +2 -2
- package/dist/{serve-boot-KXWMUVAG.js → serve-boot-YARBQBSA.js} +2 -2
- package/package.json +2 -2
- package/skills/conveyor-build/SKILL.md +14 -5
- package/skills/conveyor-release-review/SKILL.md +372 -0
- package/skills/conveyor-release-review/references/dimensions.md +289 -0
- package/skills/conveyor-release-review/references/report-and-cards.md +183 -0
- package/skills/conveyor-workflows/SKILL.md +1 -0
|
@@ -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
|
|