feat: WINGMAN_MODE — review intensity staged by project maturity - #18
Merged
Conversation
Wingman was already non-blocking at the hook level, but the loop it prescribes had one intensity for every project: gather, categorize, fix, converge. On young code that kills traction — an exhaustive tail buys correctness nobody depends on yet, at the cost of shipping. WINGMAN_MODE (env var -> .wingman-mode repo file -> advisory) stages it: off early, pre-users skip review entirely, say so once, never nag advisory maturing, shipping one round per PR; fix cheap, record the rest strict mature, propagating round per push, converging where it matters Made explicit in the skill: review never blocks a merge and never blocks a push. What blocks is the project's own lint/typecheck/test gate. Findings not fixed are RECORDED, not owed -- a deferral is an audit trail, and follow-ups land in follow-up PRs. Regardless of mode, findings in destructive paths, in artifacts the repo stamps into OTHER repos, and in credential/.env handling still deserve a look before shipping -- those are the ones that propagate or cannot be retracted.
ashbrener
marked this pull request as ready for review
August 4, 2026 18:28
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.
Why
Wingman is already non-blocking at the hook level — but the loop it prescribes has one intensity for every project: gather, categorize, fix, converge. Applied to a young codebase that kills traction. An exhaustive review tail buys correctness nobody depends on yet, at the cost of actually shipping.
Real data from a project dogfooding this pack: 14 review rounds on one spec, 2–3 on every routine version bump. The first round or two caught genuinely dangerous defects (arbitrary code execution on adopt, a repair that deleted operator content). Rounds 8–14 were refinements of refinements in an optional, default-disabled feature.
What this adds
WINGMAN_MODE— env var →.wingman-moderepo file → defaultadvisory:offadvisory(default)strictWhat this makes explicit
.envhandling.Docs-and-skill scope: the hook already runs in the background and already never blocks.
offshort-circuits the auto-surface protocol; the deeper plumbing (hook honoringoffbefore invoking the reviewer) is a natural follow-up.