feat(stokowski): make glean own the follow-up contract - #288
Merged
Merged
Conversation
EXT-68's approved follow-ups were never created, and the issue was marked Done with its PR unmerged. - glean.md: glean writes every proposed follow-up to the report's follow_ups list (G1..Gn, title, the complete issue body, priority, labels). Stokowski renders it for review and saves it for improvement. Its next step names the one approval format: "Approve follow-ups: G1". - improvement.md: a mechanical stage. It reads only that approval format, copies the approved items from .stokowski/follow-ups.json into Linear with `lc issue create --yes`, and skips ids it already created. With no approval it reports "No approved follow ups found". It then checks the PR and reports "blocked" unless mergeStateStatus is CLEAN. - merge.md: report "blocked" whenever the PR was not merged, instead of posting to Linear. - feature and bug-fix workflows: improvement and merge declare `blocked: merge-review`, a new gate whose approve runs merge and whose rework reruns improvement. Needs bougyman/stokowski#14 for blocked transitions, report follow-ups, and gate comments in the improvement prompt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The approval comment only carries ids. Any comment containing "Approve"
approves every G<number> after that word, e.g. "Approve G1, G3"; the
latest such comment wins. All issue data still comes from the glean
report's follow_ups.
When a proposed follow-up is not created, improvement now says so
plainly ("Not created: G2 - <title>") and ends with a note on filing it
by hand with `lc i create`.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When merge-review sends the issue back to improvement, the rerun's prompt shows only comments since that gate, so the approval written at the glean gate is gone. Improvement now records the approved ids in .stokowski/follow-ups-approved.json and reuses them when no newer approval is visible, so a follow-up that failed to create is retried instead of dropped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bougyman
approved these changes
Sep 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
EXT-68 finished its pipeline with two failures:
improvement.mdrequiredApprove follow-ups: G1, G3. The improvement agent never saw the approval comment (fixed in feat(orchestrator): blocked transitions, report follow-ups, gate comments in prompts bougyman/stokowski#14). With a short, partly blank prompt, it made an unrequested code change instead.mergereportedblocked, but nothing acted on it.Changes
glean.md: glean does all the thinking.follow_upslist. Each item hasid(G1,G2, … with no gaps),title, the complete Markdown issue body,priority, and optional existing labels..stokowski/follow-ups.json.Approveand the ids, for exampleApprove G1, G2. The comment holds only ids; all issue data comes fromfollow_ups.improvement.md: a mechanical stage.Approveapproves everyG<number>after that word..stokowski/follow-ups.jsonwithlc issue create --yes --no-take --team EXT --project "Linear CLI", and records what it created in.stokowski/follow-ups-created.jsonso a rerun can't duplicate issues.lc i create.blockedunlessmergeStateStatusisCLEAN. Spike and exploration workflows, which have noblockedtransition, skip the PR check.merge.md: reportblockedwhenever the PR was not merged, instead of posting to Linear. The blank{{ issue.* }}variables are fixed here and inglean.md.featureandbug-fixworkflows:improvementandmergedeclareblocked: merge-review. This new gate'sapproverunsmerge, and itsreworkrerunsimprovement.Deploy order
This depends on bougyman/stokowski#14. On the current pin,
blockedis ignored and.stokowski/follow-ups.jsonis never written. Merge #14 first, then bumpvendor/stokowskion this branch.Verification
validate_configreports no errors on the Support Ruby's short subcommand aliases (lc i dev CRY-37, etc.) #14 branch.improvementprompt rendered from the EXT-68 comment history showsApprove follow-ups: G1, G3under Recent Activity, and lists bothcompleteandblockedtransitions.🤖 Generated with Claude Code