mirror of
https://github.com/garrytan/gstack.git
synced 2026-10-03 01:46:55 +02:00
* feat: add surface-aware exploratory QA and ship documentation gates * test: preserve delegated QA setup authority after main integration * fix(qa): clarify exploration order and preserve report artifacts * test(qa): follow the shared setup reference directly * refactor(ship): make verification and recovery routes explicit * test(ship): align evidence and review guards with explicit routes * fix(workflows): clarify ship recovery and functional QA evidence * fix(workflows): clarify approval recovery and full QA coverage * refactor(workflows): order review transactions and clarify ship state * fix(ship): clarify final verification and fail closed at publication * fix(evals): attribute native atomic documentation writes * fix(ship): clarify recovery and documentation lifecycle guidance * fix(test): preserve observed native placeholder styling in CI * fix(codex): report watchdog timeouts without a process-exit race * Checkpoint functional QA implementation and workflow validation repairs * Fix documentation and shared-review fixture contracts * docs: clarify judge reuse and evaluation supervision * test: align review evidence and selected case contracts * test: verify append-only documentation checkpoints and recovery * fix: qualify QA workflows and CI validation repairs * fix: launch shared-libs fixture scripts on Windows * fix: qualify QA deadlines, fixture isolation, and shard cleanup * fix: preserve qualified QA and cancellation repairs * fix: enforce functional fixture authority and share strict event decoding * fix: retain free-test evidence and explain recovery * fix: reject malformed native evidence after decoder consolidation * test: use reliable capture for telemetry privacy filters * test: refresh measured quick coverage and document validation costs * Fix native fixture receipts and preserve VM validation evidence * Align negative judge controls with upstream clarity policy * Fix report-only QA preparation and public evidence handling * Clarify QA-only preparation and current-report preservation * Stream Ship quality judgments with an explicit 64k response contract * Validate compact judge reasoning locally with supported wire schema * Align functional QA fixture instructions with evidence acceptance * Bind native browser diagnostics to execution evidence and align review verdicts * Preserve native diagnostic line boundaries * Serialize functional QA evidence from native captures * Keep large QA evidence fixture payload out of Windows argv
66 lines
4.3 KiB
Cheetah
66 lines
4.3 KiB
Cheetah
## Step 10: Address Greptile review comments (if PR exists)
|
|
|
|
Dispatch a subagent through Agent with `subagent_type: "general-purpose"` and
|
|
`run_in_background: false`, using Step 7's shared foreground-dispatch rule.
|
|
It fetches and classifies all Greptile comments,
|
|
including escalation tiers; the parent handles decisions and queues approved fixes.
|
|
|
|
**Subagent prompt:**
|
|
|
|
> You are classifying Greptile review comments for a /ship workflow. Read `~/.claude/skills/gstack/review/greptile-triage.md` and follow the fetch, filter, classify, and **escalation detection** steps. Do NOT fix code, do NOT reply to comments, do NOT commit — report only.
|
|
>
|
|
> For each comment, assign: `classification` (`valid_actionable`, `already_fixed`, `false_positive`, `suppressed`), `escalation_tier` (1 or 2), the file:line or [top-level] tag, body summary, and permalink URL.
|
|
>
|
|
> Return one JSON object on the LAST LINE:
|
|
> `{"status":"complete|no_pr|unavailable","total":N,"comments":[{"classification":"...","escalation_tier":N,"ref":"file:line","summary":"...","permalink":"url"},...],"reason":"..."}`
|
|
> Use `complete` only after a successful fetch, including zero comments; `no_pr` only after confirming no PR exists; `unavailable` for `gh`/API errors or incomplete classification. The latter two return zero total and an empty array. State the failure reason for `unavailable`; otherwise use an empty reason.
|
|
|
|
**Parent processing:**
|
|
|
|
Parse the LAST line as JSON. Require the declared status, a nonnegative integer
|
|
total matching the comments array, and the status/reason invariants above. An
|
|
unknown or missing status is unavailable, never an empty successful review.
|
|
|
|
For `no_pr`, record "Greptile: no PR exists"; for `complete` with zero comments,
|
|
record "Greptile: fetched, zero comments". Both continue to Step 11.
|
|
|
|
**Unavailable triage:** A returned `unavailable`, failed dispatch, invalid result,
|
|
or missing completion after ~10 minutes takes this route. Stop a running child
|
|
and confirm it stopped before continuing. Print `Greptile triage did not complete — review the PR comments manually`.
|
|
Include `Greptile triage: UNAVAILABLE (dispatch failed)` and the actual reason in
|
|
Step 19's review results; Step 20 has no triage field. Continue to Step 11 without
|
|
claiming zero comments or completed triage. This optional triage does not block ship.
|
|
|
|
Otherwise, print: `+ {total} Greptile comments ({valid_actionable} valid, {already_fixed} already fixed, {false_positive} FP)`.
|
|
|
|
For each comment in `comments`:
|
|
|
|
**VALID & ACTIONABLE:** Use AskUserQuestion with:
|
|
- The comment (file:line or [top-level] + body summary + permalink URL)
|
|
- `RECOMMENDATION: Choose A because [one-line reason]`
|
|
- Options: A) Fix now, B) Acknowledge and ship anyway, C) It's a false positive
|
|
- If user chooses A: queue the approved fix without editing here. After that fix passes review and tests, use the **Fix reply template** from greptile-triage.md (inline diff + explanation) and save per-project/global greptile-history (type: fix).
|
|
- If user chooses C: reply using the **False Positive reply template** from greptile-triage.md (include evidence + suggested re-rank), save to both per-project and global greptile-history (type: fp).
|
|
|
|
**VALID BUT ALREADY FIXED:** Reply using the **Already Fixed reply template** from greptile-triage.md — no AskUserQuestion needed:
|
|
- Include what was done and the fixing commit SHA
|
|
- Save to both per-project and global greptile-history (type: already-fixed)
|
|
|
|
**FALSE POSITIVE:** Use AskUserQuestion:
|
|
- Show the comment and why you think it's wrong (file:line or [top-level] + body summary + permalink URL)
|
|
- Options:
|
|
- A) Reply to Greptile explaining the false positive (recommended if clearly wrong)
|
|
- B) Fix it anyway (if trivial)
|
|
- C) Ignore silently
|
|
- If user chooses A: reply using the **False Positive reply template** from greptile-triage.md (include evidence + suggested re-rank), save to both per-project and global greptile-history (type: fp)
|
|
- If user chooses B: queue the approved fix, as above.
|
|
|
|
**SUPPRESSED:** Skip silently — these are known false positives from previous triage.
|
|
|
|
**After triage:** If fixes were approved, save their approvals and comment references.
|
|
Run Step 9's full review/fix loop, then return here. Finish the saved replies
|
|
without asking again about completed fixes, and classify new comments.
|
|
With no queued fixes, continue to Step 11.
|
|
|
|
---
|