@@ -10,6 +10,25 @@ pyproject.toml for version info:
1010- Current supported range: $CURRENT_LOWER — $LAST_SUPPORTED
1111- Exclusive upper bound: $CURRENT_UPPER
1212
13+ The ` classify ` job (a separate Sonnet-driven stage that runs before this one) has already
14+ produced the async-need verdict — use it directly in Step 3, do NOT re-run the classifier:
15+
16+ - Verdict: $CLASSIFIER_VERDICT
17+ - One-line summary: $CLASSIFIER_SUMMARY
18+ - Per-function rationale (markdown table): $CLASSIFIER_RATIONALE
19+
20+ The classify job also pre-computed the list of aiobotocore source files whose botocore
21+ counterpart changed in the diff range — comma-separated, empty if none changed:
22+
23+ - Affected aiobotocore files: $AFFECTED_AIOBOTOCORE_FILES
24+
25+ Use this list as the starting point for Step 5 (port path) instead of re-running
26+ ` git diff --name-only ` and walking the mirror tree. The list excludes files without an
27+ existing aiobotocore mirror (those are out of scope per ` port-tests ` skill rules).
28+
29+ If ` $CLASSIFIER_VERDICT ` is empty (rare — only when the classify job failed entirely),
30+ re-run the classifier yourself in Step 3 as a fallback.
31+
1332## Configuration
1433
1534- ENABLE_BUMP: $ENABLE_BUMP (if false, bumps create a feedback issue instead of attempting code changes)
@@ -171,29 +190,37 @@ gh api repos/REPO/pulls/PR_NUM/reviews \
171190
172191** No PRs at all:** proceed to Step 3.
173192
174- ## Step 3: Classify the botocore diff
193+ ## Step 3: Use the pre-computed classifier verdict
175194
176195** The classifier is the authority, not the PR title.** Historical PRs have been
177196mislabeled (e.g. a "Bump" title on what was actually a no-port update). If you are
178197operating on an existing PR whose title contradicts the classifier's verdict, update the
179198PR title to match — don't preserve a wrong inherited label.
180199
181- Run the classifier:
200+ The ` classify ` job has already run ` /aiobotocore-bot:check-async-need ` for the target
201+ range. Use ` $CLASSIFIER_VERDICT ` directly — do NOT re-invoke the classifier (that
202+ duplicates work the cheap Sonnet stage already did). The per-function rationale in
203+ ` $CLASSIFIER_RATIONALE ` is also pre-formatted as a markdown table — pass it verbatim to
204+ ` /aiobotocore-bot:open-pr --classifier-verdicts=... ` in Step 7.
205+
206+ Branch on ` $CLASSIFIER_VERDICT ` :
207+
208+ - ` no-port ` → Go to Step 4 (no-port path). Quote ` $CLASSIFIER_SUMMARY ` in the PR body as
209+ the async-need justification. Do NOT justify a no-port verdict with "functions not
210+ overridden" — that is the wrong test.
211+ - ` port-required ` → Go to Step 5 (port path).
212+ - ` ambiguous ` → Escalate via Step 9 with the ambiguous verdicts as feedback questions.
213+ - ` error ` → The classifier itself failed. Treat as ` ambiguous ` : escalate via Step 9 with
214+ the error message (in ` $CLASSIFIER_SUMMARY ` ) as context. Never silently assume no-port.
215+
216+ ** Fallback:** if ` $CLASSIFIER_VERDICT ` is empty (the classify job failed before producing
217+ output), re-run the classifier yourself:
182218
183219``` text
184220/aiobotocore-bot:check-async-need --from=$LAST_SUPPORTED --to=$LATEST_BOTOCORE
185221```
186222
187- The skill diffs the two botocore versions, finds new/changed functions in overridden files, and returns one of:
188-
189- - ` no-port ` → no async-need signals found. Go to Step 4 (no-port path). Quote the skill's summary line in the
190- PR body as the async-need justification. Do NOT justify a no-port verdict with "functions not overridden" — that is the
191- wrong test.
192- - ` port-required ` → at least one new/changed function has async-need signals. Go to Step 5 (port path).
193- - ` ambiguous ` → the classifier could not rule out async-need for one or more functions. Escalate via Step 9 with
194- the ambiguous verdicts as feedback questions.
195- - ` error: <reason> ` → the classifier itself failed (e.g. ` /tmp/botocore ` missing, tag not fetched). Treat as
196- ` ambiguous ` : escalate via Step 9 with the error message as context. Never silently assume no-port.
223+ This should be rare; the classify job uses Sonnet and has its own retry policy.
197224
198225### Major bump detection
199226
0 commit comments