Skip to content

feat: WINGMAN_MODE — review intensity staged by project maturity - #18

Merged
ashbrener merged 1 commit into
mainfrom
feat/maturity-staged-intensity
Aug 4, 2026
Merged

feat: WINGMAN_MODE — review intensity staged by project maturity#18
ashbrener merged 1 commit into
mainfrom
feat/maturity-staged-intensity

Conversation

@ashbrener

Copy link
Copy Markdown
Owner

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-mode repo file → default advisory:

Mode When Behavior
off Early — pre-users, iterating fast Skip review entirely. Say so once per session, never nag.
advisory (default) Maturing — real consumers, shipping One round per PR. Fix what's cheap and obviously right, record the rest, move on.
strict Mature — artifacts that propagate to other repos, destructive paths, security surfaces Round per push, converging while findings keep landing. Still advisory.

What this makes explicit

  • Review never blocks a merge and never blocks a push. What blocks is the project's own lint/typecheck/test gate — fast, deterministic, about things that actually break.
  • Findings not fixed are recorded, not owed. A deferral is an audit trail with a one-line rationale; follow-ups land in follow-up PRs, not before the merge.
  • Three classes still deserve a look in any mode: destructive paths, artifacts the repo stamps into other repos (a defect there propagates and needs a re-stamp to retract), and credential/.env handling.

Docs-and-skill scope: the hook already runs in the background and already never blocks. off short-circuits the auto-surface protocol; the deeper plumbing (hook honoring off before invoking the reviewer) is a natural follow-up.

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
ashbrener marked this pull request as ready for review August 4, 2026 18:28
@ashbrener
ashbrener merged commit a27b1ce into main Aug 4, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant