Bug reports — intake diagnosed, never decidedOwner: ENGINE — wingman (bug-triage). MAV-OWNED map: Folo /admin/bug-reports converges with FG’s Tester feedback — one triage engine, every product mounts it. The boundary is the live page’s own line, kept verbatim: “AI does intake only — it diagnoses, never decides… every admin action below is confirmed + audited.” AI drafts confidence, severity hints and suggested fixes; a human owns every state change.
Scope (§17): intake per platform, triage in one queue. Reports arrive from each product’s own intake (the chips) and fuse into one wingman triage lane — the queue is a cross-platform fact and says so; each report keeps its intake platform. folo.link: this is the composed triage view; every state change writes via the wingman triage API, never a folo.link write of its own.
Scope (§17): intake per platform, triage in one queue. Reports arrive from each product’s own intake (the chips) and fuse into one wingman triage lane — the queue is a cross-platform fact and says so; each report keeps its intake platform. folo.link: this is the composed triage view; every state change writes via the wingman triage API, never a folo.link write of its own.
Wingman’s bug-triage lane — auto-grouped incidents, per-row AI confidence, human decisions.
Demo dataEngine live on Folo
Open
15 of 20
total reports on file
DEMO DATA · window: current · source: bug-triage-engineHigh priority
5
human-confirmed, not AI-assigned
DEMO DATA · window: current · source: bug-triage-engineActive incidents
2
auto-grouped from 3+ similar reports in 1h
DEMO DATA · window: current · source: incident grouperAI self-served
8
reporter unblocked by the intake answer
DEMO DATA · window: current · source: bug-triage-engineFixed · 7d
3
shipped + verified
DEMO DATA · window: 7d · source: bug-triage-engineMedian triage time
11m
report → owner assigned
DEMO DATA · window: 28d · source: bug-triage-engineActive incident · auto-grouped
14 reports in 60 min
Stripe 3DS challenge fails on checkout
3+ similar reports inside 1h fused into one incident — reporters get one status, engineers get one thread. First report 14:02 · payments surface · 3 platforms affected.
Incident openAI confidence 96%Owner: payments lane
Active incident · auto-grouped
5 reports in 40 min
Vault thumbnails 403 after signed-URL rotation
Grouped on matching error signature, not matching words — “broken images”, “vault empty” and “403 on media” are one incident.
MitigatingAI confidence 88%Owner: vault engine
Reports
| Report | AI confidence | Priority | Severity hint | Suggested fix · auto-drafted | Status |
|---|---|---|---|---|---|
| 3DS challenge modal never resolves BR-1041 · payments · 14 duplicates → incident | 96% | High | Checkout-blocking | Fix: retry the 3DS redirect with the fallback return-URL — the webhook signature rotated but the redirect allow-list did not. | Incident |
| Vault grid shows broken thumbnails BR-1038 · media · 5 duplicates → incident | 88% | High | Degraded UX | Fix: re-sign media URLs on 403 once before surfacing the error — rotation window overlaps cached pages. | Mitigating |
| Sign-in loop on expired SSO session BR-1032 · auth · single report | 74% | Medium | Session-loss | Fix: clear the stale `__clerk_synced` param before re-issuing the redirect (matches a known self-heal path). | Open |
| Dashboard chart clips on 1280px BR-1029 · UI · single report | 61% | Low | Cosmetic | Fix: likely a fixed-width legend — needs a human look; confidence below the auto-suggest bar. | Open |
| Payout CSV export drops header row BR-1024 · payments · single report | 92% | Medium | Data-quality | Fix: the streamed export skips the first chunk when the ledger page size divides evenly — pad the first chunk. | Fix verified |
◌
5 of 20 demo rows. Confidence, severity hint and suggested fix are AI-drafted intake artefacts — a human confirms every priority and every state change, and each is audited. High-confidence fixes still ship through the normal lane; the engine never merges anything. Write path: a status change writes via the wingman triage API — with a write-back to the intake platform’s thread, so the reporter’s own surface shows the new state. Effect: Open → In progress assigns an owner lane; Fixed notifies every reporter grouped under the incident and closes their threads at once.
⚡
Wingman linkage: unresolved incidents surface in the daily scan on system.html (self-heal low-level, report high-level) and file to Slack/Asana via Wingman. Tester feedback on FG joins this same intake.
AI dev pipeline — send to ClaudeThe self-managing loop, routed on the Wingman LADDER (§23c, founder-ruled 2026-08-11) — every item carries a MODE from the existing ordinal vocabulary safe / confirm / auto, judging reversibility of the EFFECT — no invented score: AUTO (‘auto’) (top band — fully reversible, Wingman self-heals, no code change, per-item PROVEN undo — the effect reverses, the audit record stays) · HUMAN + AI (‘confirm’) (middle band — published to the CLAUDE QUEUE on the platform’s Anthropic key, metered on the Wingman credit meter; a human reviews the results) · HUMAN FIRST (‘safe’ — the default, fails closed) (bottom band — irreversible/judgement-shaped; a human opens it before any AI acts). Claude’s output lands as RESULTS → REVIEW → approved work ships through the normal PR lane — most often executed by our own AI agent sessions, but the queue never merges anything itself. Ideas and named gaps are publishable to the same queue, not just bugs. ROLE GATE: “Escalate to Claude” is a role permission — without it the control is not rendered at all (fails closed), same matrix as everything else (roles.html). Every escalation, result and approval is audit-logged with who · role.
In Claude queue
3
2 bugs · 1 idea — published as work items
DEMO DATA · source: AI dev queue · key: platform Anthropic (Wingman credit meter)Results awaiting review
2
output ready — a human approves before anything ships
DEMO DATA · source: AI dev queueAuto-healed · 7d
11
Wingman AUTO lane — no code change, logged not silent
DEMO DATA · window: 7d · source: Wingman self-heal log✦
BR-1032 · SSO sign-in loopCLAUDE QUEUE · working · fix branch drafting against the known self-heal path
Claude · working✦
BR-1029 · chart clips at 1280pxRESULTS READY · patch + before/after screenshots attached → review
Needs review◇
IDEA-114 · bulk-retry button on failed payoutsan IDEA published to the queue — spec drafted by Claude, awaiting human shaping
Idea · queued♺
Signed-URL rotation overlapAUTO lane — Wingman re-signed and cleared the cache; logged, no code change
Self-healed24h self-check watchdogON · next run 04:00
Extends the Wingman daily scan: every 24h it sweeps for bugs, gaps and issues (broken flows, dead ends, named gaps going stale, error-rate drift) and files what it finds into THIS queue — triaged into the same three lanes. Optional per-platform toggle lives in Modules; findings route by role like Companies notifications (§20).
Reversibility dial shared with Support §23
Routing axis = Wingman’s ordinal ladder safe / confirm / auto, extended per-item (§23c — no 0–10 score; founder-ruled): ‘auto’ = AUTO (per-item proven undo — effect reverses, record stays) · ‘confirm’ = HUMAN + AI (Claude drafts, human approves) · ‘safe’ = HUMAN FIRST (AI attaches context only; the default). Mode assignment is role-gated; graduation past ‘safe’ is founder-gated, as the per-target column already works. One ladder routes every queue: bugs, support, watchdog findings.
Role gate
Escalate to Claude · Review results · Approve are separate permissions on the platform × function matrix — not selectable without the role; the buttons don’t render at all (fails closed). Spend rides the Anthropic API credit meter on Wingman — a runaway queue is a visible meter, never a surprise bill.