Bug reports — intake diagnosed, never decided
Owner: 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.

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-engine
High priority
5
human-confirmed, not AI-assigned
DEMO DATA · window: current · source: bug-triage-engine
Active incidents
2
auto-grouped from 3+ similar reports in 1h
DEMO DATA · window: current · source: incident grouper
AI self-served
8
reporter unblocked by the intake answer
DEMO DATA · window: current · source: bug-triage-engine
Fixed · 7d
3
shipped + verified
DEMO DATA · window: 7d · source: bug-triage-engine
Median triage time
11m
report → owner assigned
DEMO DATA · window: 28d · source: bug-triage-engine
Active 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

AllOpenIn progressFixedPaymentsMediaAuthUI
Intake: all productsFoloFanogramReceipt
ReportAI confidencePrioritySeverity hintSuggested fix · auto-draftedStatus
3DS challenge modal never resolves
BR-1041 · payments · 14 duplicates → incident
96%HighCheckout-blockingFix: 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%HighDegraded UXFix: 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%MediumSession-lossFix: 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%LowCosmeticFix: 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%MediumData-qualityFix: 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 Claude
The 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 queue
Auto-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-healed

24h 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.
WRITE PATH · Escalate publishes a work item to the AI dev queue (platform Anthropic key); results write back as review artefacts; Approve hands to the normal PR lane — CI, review and merge rules unchanged · EFFECT · the queue drafts and proposes; humans approve; nothing self-merges · every step audit-logged who · role