Duet Machines
Review · Issues lifecycle

Review

Issues lifecycle

An issue is one rule break the judge proved and every conversation that repeated it, in production and in simulation. Only evidence moves it along its lifecycle.

#Review

The agent's Review lists every issue with its rule clause, owner, production occurrences in the last 7 days next to the judged conversations in them, affected users, versions and first and last seen. Accept the real ones and dismiss the rest with a reason (A and D on the open issue); selected rows are accepted, dismissed with one reason or assigned to a member together. Filters (agent, status, review, severity, owner, assignee, source, version, text, reproduction, suppressed repeats) and sort stay in the URL.

Nothing is deleted when you dismiss. A later finding that repeats a dismissed issue is stored as suppressed: a repeat of that issue, out of the inbox and of every rate, coverage count, alert and report failure, as the dismissed issue is. The issue says how often it was seen since ("Dismissed · seen 3 times since") and its Evidence lists those repeats under Suppressed; the stress test page and the conversation mark them. Accept instead on a dismissed issue brings them back as ordinary occurrences. Repeats deleted before 2026-10-12, when they were dropped, cannot be recovered.

An issue is what the agent did, not the sentence the judge quoted. The judge names each finding's act (the reply or call that is the failure) and, when a call sent a wrong value, that argument. A repeat shares the signature, matched in code: the owner, the kind of act (a reply, a failed turn, or a call by tool; for a platform defect, the call with the system's decision), then the argument when named (a link texted to a ZIP code is one issue whichever rule a conversation cited), else the rule, where the instructions audit's act groups join the directives that one mistake breaks. A reply that reads back or announces a call's value is that call's act, so a wrong due date read back in one conversation and sent in another is one issue. The detail lists every rule the issue breaks. If Duet Machines still groups wrong, mark an issue Duplicate of another (or Merge into… for selected issues) or Split off an occurrence: later repeats follow your decision until you undo it, and each decision is in the audit log. For instruction defects, the same directive, requiring clause and kind. A rule is compared as written, so send lead data as {{placeholders}} with variables in the config snapshot, or each customer's name splits the rule. The issue's detail quotes the act, browses its occurrences, each opening its conversation at the act it cites, and lists the versions, models and tools more common among its conversations than among all the agent's judged ones. An issue seen only in tests that withheld lead data (a stress test withholds it in at most one test) is marked Withheld data with the test's reason: your integration usually sends that data, so check it can occur.

#Lifecycle

Open
Proven, not yet reproduced. Review shows as New, Accepted or Dismissed.
Reproduced
A reproduction's replay recurred, and its test was built.
Fix proven
A fix proof's proven cause cites it.
Verified
Production failed significantly less after the fix.
Regressed
A fixed issue recurred in production on a version first seen after its fix was proven.
Dismissed
A member dismissed it, with the reason.

#Reproduce to test

Reproduce turns a production issue into a simulated scenario built from its earliest conversation: the customer's persona and pressure from their turns, a world from every recorded tool result, and synthetic values for every name and identifier of the customer, so your tests hold no customer value. Before the planner reads the conversation, code replaces the snapshot's identity variables (all but non_identifying) and redacted values with synthetic ones everywhere they appear, so it never sees a real one. A hosted agent's scenario takes its lead data from those variables, so the test fills the live prompt's {{placeholders}}; a reproduction whose conversation sent none for a placeholder of the live prompt builds no test and names the missing ones. The scenario replays 5 times on the conversation's config snapshot (endpoint agents as deployed). It is reproduced when 1 of 5 or more recur, which builds its regression test; otherwise not reproduced, or not reached when no replay got to the point it checks. A reproduction reserves 7 simulated conversations: its replays and the test build.

Failures the replays show that are not the reproduced one (another signature) never become issues on their own: production did not show them there. The reproduction lists them as other failures seen during replay, each linking its replay, and a member can file one as an issue (a new one, or a repeat of the issue of its signature); filing is audited.

Automatic reproduction is a per-agent setting in its Tests, owners and admins only: off, critical issues, or critical and high issues, with a monthly budget of simulated conversations (at least 7). When on, the production watch reproduces each new production issue of those severities whose earliest conversation started in the last day, once, while that month's automatic reproductions and their test builds have reserved less than the budget allows and the plan has simulated conversations left. New agents start off; an issue of a severity it does not cover offers to turn it on in one click with a budget of 35 a month. Reproduce on an issue always works.

#After deploy

Once a fix is proven, the issue's test verifier rules on the agent's ended production conversations before the fix and on versions first seen after it. It decides once, when 20 conversations on each side reached the point it checks (or all there are within 200 checked per side): verified when the failure rate after is lower with a one-sided Fisher exact p < 0.05, otherwise it stays fix proven with the counts and p.

#Hand it to a person or a coding agent

Assign an issue to a member, or copy its coding-agent prompt: a self-contained brief with the rule clause, the quoted act, the turns around it, the reproduction and test ids, the latest fix report's cause and edits, and the tests that prove the change. Propose a fix runs a fix proof on the tests built from its findings.

The inbox and the conversations list export what they show under their current filters as CSV or JSON lines. Text is exported as stored, so it is redacted, and CSV cells that start like a formula are prefixed so a spreadsheet shows them instead of running them.