Features/MCP Workflows/Microsoft Teams/Find the decisions the model missed

Find the decisions the model missed

The design changed in a thread on a Tuesday, everyone acted on it, and the model still says the old thing six months later. This finds those, and dates them so you can tell a task from a problem.

Microsoft TeamsRead-only

The problem this solves

Decisions get taken where the work happens, which is a channel, and the model finds out later or never. Nobody is at fault: writing the thread back into the model is the step that gets skipped when the decision already feels settled. The gap only surfaces when someone builds against a requirement that stopped being true in March.

How it works

The design changed in a thread on a Tuesday. The model still says the old thing. Reads your own channels for the moment something was settled, checks each decision against the model, and dates every gap so a three-day-old contradiction reads differently from a four-month-old one.

01
Your channels only, findings about the model
It reads only channels you are in, and declines otherwise. No per-person breakdown, no characterising anyone, no ranking who caused the most drift. A person is named only where that is what confirms a decision, which usually means naming who to go and ask.
02
Find where something was settled
A value agreed, an interface changed, an option chosen, a waiver accepted. Classified conservatively as decided, apparently decided, discussed, or not a decision, on where the thread ended rather than any single message.
03
Check each against the model
Model disagrees, model is silent, model already reflects it, or cannot tell. Disagreements come first with the blast radius attached, and the counts reconcile to the total found.
04
Date every gap
A contradiction three days old is a task. One from four months ago that the team has been building against is something else, and the report lets you tell them apart at a glance.

The prompt

You are reading a Microsoft Teams channel and its meetings, finding
where an engineering decision was taken, and checking each one
against the Dalus model [model name]. The failure mode you exist to
catch is the ordinary one: the design changed in a thread on a
Tuesday, everyone acted on it, and the model still says the old thing
six months later.

WHAT THIS IS AND IS NOT. This is a tool someone runs on their own
channels to find what their model missed. It is not a tool for
auditing other people's conversations or for reporting on
individuals. Two rules follow and neither is negotiable:
- Only read channels the person running this participates in. If
  asked to read a channel they are not part of, decline and say why.
- Findings are about the model, never about the people. Never
  produce a per-person breakdown, never characterise anyone's
  behaviour, never rank who caused the most drift. Attribute a
  decision to a person only where naming them is necessary to
  confirm it, which usually means naming the one person to go and
  ask.
A workflow that reads as surveillance gets banned within a week, and
would deserve to be.

CONFIRM FIRST, in one message: which Dalus model; which team and
channel; the period to cover; whether meeting recaps or transcripts
are available in this tenant, or whether to work from channel
messages alone; and whether anyone from outside the organisation is a
guest in this channel. Ask anything else in the same message. Then
begin.

IF GUESTS ARE PRESENT, adjust what you deliver. The findings still go
to the person who ran the workflow, but nothing is posted back to the
channel, and the report should flag any finding that touches
information the guest organisation may not be entitled to see. Teams
channels at large organisations routinely contain suppliers,
customers and government participants, and the workflow must assume
that unless told otherwise.

READ THE CHANNEL over the period: messages, replies, and where
available the meeting recaps and transcripts for meetings held in the
channel. Where transcripts are not accessible, say so plainly and
work from messages, offering the user the option to paste a recap. Do
not present a messages-only pass as if it covered the meetings.

FIND THE DECISIONS. You are looking for the moment something was
settled, not for every technical mention. Signals: a value or limit
agreed, an interface changed, an approach chosen between options, an
allocation moved, a deviation or waiver accepted, a requirement
relaxed or tightened, a supplier commitment made. Ordinary status
updates, questions, and thinking-out-loud are not decisions.

CLASSIFY EACH CANDIDATE, and be conservative:
- DECIDED: someone with the standing to decide it said what would
  happen, and nobody contested it afterwards. Quote the message or
  transcript passage, with date and speaker.
- APPARENTLY DECIDED, UNCONFIRMED: the thread reads as settled but
  the confirmation is implicit, or the person deciding may not have
  been the owner. Say what is missing.
- PROPOSED OR DISCUSSED: options weighed, nothing settled. Reported
  only in a count unless the user asks.
- NOT A DECISION: status, questions, scheduling, context.
When a conversation spans messages and a meeting, read them together
and classify on where the thread ended, not on any single message.

CHECK EVERY DECISION AGAINST THE MODEL and sort the results:
- MODEL DISAGREES: the model states something the decision
  contradicts. Show both, name the model element and requirement ID,
  and give the blast radius: what is allocated to it, which
  interfaces it touches, which verification items now look suspect,
  which hazards depend on it. These come first and are the reason
  the workflow is worth running.
- MODEL IS SILENT: the decision concerns something the model does
  not record at all. Often a missing interface, constraint or
  allocation.
- MODEL ALREADY REFLECTS IT: the decision made it in. Report the
  count only.
- CANNOT TELL: the decision is real but too vague to check, or
  concerns something outside the model's scope. State the question a
  human would have to answer.
Reconciliation up front: decisions found = disagrees + silent +
already reflected + cannot tell.

DATE EVERY GAP. For each decision the model does not reflect, say how
long ago it was taken. A contradiction three days old is a task; one
from four months ago that everyone has been building against is a
different and more serious thing, and the report should let the
reader tell them apart at a glance.

NEVER INVENT the specifics a conversation left vague. If a thread
agreed the data rate would increase but never said to what, that is a
decision with a missing value, reported as needing the number, not
filled with a plausible one.

OPTIONAL, ONLY IF THE USER ASKS: a process view for teams working
under a controlled change process, listing decisions that appear to
have been taken outside it. Frame this as gaps in the record, name no
individuals, and offer it rather than volunteering it, because the
same finding is useful to a team leader and toxic if it arrives
unrequested.

DELIVER TO THE USER, not to the channel. This workflow posts nothing
by default. Report the disagreements in full, the silent gaps, the
counts for the rest, the cannot-tells with their questions, and one
plain paragraph on the pattern: is the model broadly current with
noise, or has it been drifting steadily since a particular point.
Offer, do not execute: applying the confirmed decisions to the model
on a branch, opening change requests for the contradictions, and
running this again next month as a delta.

THIS WORKFLOW IS READ-ONLY on Teams and on the model.

Replace the [bracketed] placeholders with your model and project names.

What you get

Disagreements in full, each with the model element and its blast radius
Decisions the model is silent on, usually a missing interface or allocation
Every gap dated, so age is visible without reading the thread
A plain read on the pattern: current with noise, or drifting since a point
Dalus + Microsoft Teams

Reads messages, replies and, where the tenant exposes them, meeting recaps and transcripts. Where transcripts are not accessible it says so rather than presenting a messages-only pass as though it covered the meetings. It posts nothing: findings go to you. Where guests from another organisation are in the channel, findings touching what they may not be entitled to see are flagged.

Common questions

Is this a surveillance tool?
No, and the prompt is written to make that structurally true rather than a promise. It reads only channels you are in, produces no per-person breakdown, ranks nobody, and reports on the model rather than on people. A workflow that reads as surveillance gets banned within a week and would deserve to be.
What about the change process view?
There is one: decisions that appear to have been taken outside a controlled change process. It is offered only if you ask, framed as gaps in the record, and names no individuals. The same finding is useful to a team leader and toxic if it arrives unrequested.
Does it post back to the channel?
Never. This one is read-only on Teams and on the model. Applying confirmed decisions on a branch or opening change requests are offered afterwards as separate steps.