PathixDataverse Forensics
One Question · Ep. 05 · AI narration

What does this plugin actually do?

ContosoCredit.PostUpdate.RecalcLimit

Rename an account, and sometimes its credit limit resets to exactly fifty thousand. The registration tells you when a plugin fires, not what it does, and the source for this one left with Dave.

One Question · Ep. 05
1 of 3

Without the source, Pathix reads when it fires and what it writes.

It reads your own compiled code. The step fires after an account is updated, in the background, only when the account's name changes, and it writes one column: credit limit. That part is deterministic, from the registration and from the code itself.

2 of 3

An AI narration explains the logic, labeled as AI.

The narration says the plugin sets credit limit to a fixed fifty thousand, but only when something upstream sets a flag, and nothing in this assembly sets it. That's your "sometimes." Narration is optional and off by default, and it runs on your own key, for the publishers you choose.

3 of 3

Where the AI is wrong, the registration wins.

The narration says the second update runs inside the same transaction, but the registration says the step is asynchronous, so it doesn't. That mistake is the narration's own, not staged. Pathix says so on every narration: treat it as a lead, not as proof.

Pathix MCP

Or, ask your agent.

One Pathix call returns the registration, and the narration, labeled AI-derived. With the Dataverse MCP alone, the assembly comes back as base64, and your agent would have to decompile it first.

How the Pathix MCP works →

Demo environment · illustrative
How Pathix knows

A read-only metadata scan of your environment that reads the logic inside the components: compiled plugins, flow definitions, workflow XAML and scripts.

How it works →
Follow the edge
Ep. 06 · Next questionWhat's already wrong in here?Before you change an inherited Dynamics environment, you'd like to know what's already wrong with it, preferably before the auditors do. In Dynamics 365, security risk hides in configuration.Next question →
Or branch from something in this answer
What writes to this column?account.creditlimitRecalcLimit is one of the writers of credit limit in Ep. 01.

All questions →

The long answer

The detail behind the answer, for the reader who needs it.

  1. 01What gets narrated
  2. 02Form scripts get edges, not narration
  3. 03Optional, on your key, never the source of truth
Read the long answerClose the long answer
What gets narrated

four component types, and a reason the list stops there.

These are the surfaces where the source is large, thrown away after parsing, and hard for a structural parser to read completely. That combination is the whole test. A surface earns narration only when it passes all three, which is why the list is short and stays short.

Plugin assemblies
Decompiled IL, walked instruction by instruction

The trigger it registers on, the branch logic in plain English, the exact columns it writes and reads, and how it handles its own exceptions.

Classic workflows
The workflow XAML

What starts it, the conditions that gate each step, and which columns each step sets, including the steps that never fire because an earlier condition rules them out.

Power Automate flows
The flow definition JSON

The trigger and its column filters, every Dataverse action in the run, the expressions that read columns without naming them in a column list, and the child flows it calls.

Custom APIs
Registration metadata plus the implementing assembly

What the operation actually does behind its contract, its request and response parameters, and the columns the implementation touches on the way through.

JavaScript and web resources

Form scripts get edges, not narration.

Script is the one place where the deterministic parser already gives the better answer, so narrating it would spend tokens to say something less precise. Pathix parses it properly instead, and those edges come out as Deterministic, on the same footing as anything read from XAML or flow JSON.

Form scripts

An Esprima AST walk with a dataflow tier: setValue and getValue calls, Xrm.WebApi calls, FetchXML string literals, four handle-shape variants, and conditional detection by brace depth.

HTML web resources

Embedded JavaScript is extracted and put through the same walk, plus a recognizer for jQuery AJAX calls against the Dataverse endpoints.

What AI does contribute on these surfaces is the second half of its job: candidate edges. Where the deterministic walk cannot prove a write, an optional sweep can propose one as AI-derived, attached to the evidence it read. Those edges are net-new and additive only. AI never produces a Deterministic edge, never overrides or alters a deterministic one, and never emits an edge without evidence behind it. In the list below, the form script resolved deterministically; the AI-derived row is a plugin the walker could not prove alone.

Pathix Touchpoints view of account.creditlimit with the AI-derived writer selected: plugin step ContosoLegacy.Sync.AccountBalanceShadow, a conditional AI-derived edge at salience 35. The detail pane shows its edge (writes account.creditlimit), source (PluginStep), confidence (AI-derived), validation (Needs review), and actions to Review AI Evidence and View AI narration. Other edges in the list carry Declared or Parsed confidence.

How the tiers work, and what an unresolved edge means, is on How it works.

The leash

Optional, on your key, never the source of truth.

Decompiling is opt-in

It's off by default. You confirm decompilation is permitted for your environment and exclude any publisher you don't want read. The raw bytes are discarded once the parse is done; only the structural rows and the narration are kept.

Your provider, your key

Anthropic, OpenAI, or Azure OpenAI, including Azure Government. You bring the key and the calls go out from your own tenant. Pathix does not resell tokens.

Turn it off and nothing breaks

With no AI configured at all, the deterministic side is untouched: parsing, the graph, findings, cascade, reports, export, and the MCP all work exactly the same.

Review is a separate axis

A person can validate or dismiss an AI-derived edge. That decision is recorded as an overlay and never rewrites where the edge came from, and it never deletes it.

A narration is written to be checked, which is why the model and its confidence sit at the bottom of every one. Treat it as a strong, sourced first draft of the documentation nobody wrote at the time, and confirm it before you act on it. The whole AI posture →

Bring the question you already have.

A 30-minute walkthrough on a pre-scanned demo environment. No access to your tenant, nothing to install.

Book a demoRead the sample report →
Pathix in two minutes
© 2026 Pathix L.L.C. · self-hosted · metadata-only
Not affiliated with Microsoft. Dynamics 365, Dataverse, and Power Platform are trademarks of Microsoft Corporation.π