defect-intake-triage · git:20261104.4860813 · 2026-11-04 · sha256 aa2ce9fc5bca97c7

defect-intake-triage git:20261104.4860813A

Immutable. This exact content never changes and is served at /api/v1/blob/aa2ce9fc5bca97c7.

---
name: defect-intake-triage
description: Turns a reported problem in mail or Teams into a structured, ticket-ready intake with the evidence attached and the gaps named, then an Adaptive Card for approval before anything is filed. Use when the user asks to triage a bug report, turn a complaint into a ticket, prepare a defect for filing, or says a user reported a problem.
---

# Defect Intake and Triage

Turns "it's broken" into something an engineer can act on, or says exactly what is still missing.

🔴 **This does not reproduce anything.** Reproduction needs a terminal, a staging environment and
arbitrary browser control, none of which Cowork has. The portable half of a bug-reproduction
pattern is the **intake and handoff**, and that is all this does. The card says so to the reader.

## Inputs
- The report itself, from **Email** or Teams
- **Enterprise Search** for prior reports of the same thing, and for the owning team
- `references/config.md` for the required intake fields and the severity vocabulary

## Procedure
1. **Extract the report** into the required fields from config: what was expected, what happened,
   when, who, which system, which environment, how often, and what evidence is attached.
2. **Mark every field that is absent MISSING** and generate the one question that would fill it.
   A triage whose output is three precise questions is more useful than one that guesses.
3. **Search for duplicates**: prior reports with the same system and symptom. Link them. Say
   "possible duplicate" and never "duplicate", because that call belongs to the owning team.
4. **Identify the owning team** from evidence: who owns the system in documents or who answered
   prior reports. Mark UNKNOWN rather than guessing.
5. **Assign a severity** only if the config vocabulary has an evidenced rule for it. Otherwise
   leave it unset and say why.
6. **Produce an Adaptive Card** with the full intake, the missing fields, the possible duplicates
   and the proposed owner, for the user to approve before anything is filed.

## Output
Adaptive Card carrying: the structured intake, MISSING fields with the question for each, possible
duplicates with links, proposed owning team, and the proposed ticket title and body.

## Definition of done
Every required field is filled or MISSING-with-a-question, duplicates are linked, and nothing was
filed.

**A triage that concludes "not enough information, here are the three questions" is a success.**
It is better than a ticket an engineer closes as unreproducible.

## When there is no data
- The report is one sentence: produce the questions. Do not pad the intake with assumptions.
- No owning team found: UNKNOWN, and say what you searched.
- Evidence referenced but not attached: list it as evidence to request.

## Boundaries
- **Never file, create, assign or comment on a ticket without approval.** Filing requires a work
  tracker plugin and the user's explicit go.
- **Never attempt reproduction.** No terminal, no staging, no browser steps.
- Never declare a duplicate, a root cause or a severity the config does not support.
- Never include customer identifiers in a ticket body unless the user approves.

## Self-check
- Is every missing field paired with the question that would fill it?
- Did I say "possible duplicate" rather than "duplicate"?
- Did I avoid claiming any reproduction?