# Git Diff for Human Reasoning

> Source: <https://dev.to/gnomeman4201/-git-diff-for-human-reasoning-c17>
> Published: 2026-08-04 22:23:27+00:00

Every investigation eventually reaches the same moment.

Two competent people look at the same evidence and walk away believing different things.

That isn't unusual. What's unusual is what happens next. We compare their conclusions. Not their reasoning. We argue over who is right. We almost never ask where they first began thinking differently.

That struck me as backwards.

Every investigation leaves behind artifacts. Logs. Disk images. Photographs. Witness statements. Source code. Those artifacts become part of the permanent record, indexed, hashed, preserved for years.

Ironically, the reasoning that connected them usually disappears. The assumptions made along the way. The alternative explanations that were considered and rejected. The moment someone's confidence changed. Those things typically survive only in memory, in scattered notes, or in a conversation that was never written down at all.

Weeks later, someone reviewing the investigation may have every piece of evidence the original investigator had — and almost none of the analytical path that made those pieces meaningful. When disagreement shows up, we reconstruct the reasoning after the fact instead of inspecting reasoning that was recorded as it happened.

I began wondering whether that missing artifact — the reasoning itself was worth preserving. Not because it determines the truth. Because it explains how the truth was pursued.

We preserve evidence remarkably well. We preserve reasoning remarkably poorly.

Every investigator develops habits. Not bad habits, thinking habits.

Some build a timeline first, before anything else. Some distrust timelines on instinct, because clocks drift and nobody double-checks them. Some constantly ask, "what evidence would change my mind?" Others ask, "what explains the most observations?" Some investigators are naturally skeptical of a source until it survives repeated scrutiny. Others are naturally generative — they build a hypothesis fast and spend the rest of the investigation trying to break it.

Neither approach is wrong. They're different. And that's exactly why an investigation benefits from more than one independent person working it. If everyone followed the exact same process, they'd likely miss the exact same blind spots. Independent thinking isn't noise to eliminate. It's information to preserve.

The problem was never that investigators think differently. The problem is that we usually throw away the record of *how* they thought differently. By the time an investigation is written up, most of that path has disappeared into a polished narrative. The report tells you where they arrived. It rarely tells you the route they took.

I started wondering if the route was actually the interesting part.

Nobody reviews two versions of a file by reading each one top to bottom and holding the difference in their head. A diff tool does that reconstruction for you, it doesn't tell you which version is better, it just shows you exactly where and how they parted ways.

When two investigators disagree, we still tend to do it the old way: put both reports side by side and ask a third person to reconstruct where the thinking diverged. That reconstruction is slow, it's subjective, and it's usually incomplete, because neither analyst ever recorded their reasoning in a form that could actually be compared.

This does not mean nobody has tried to structure or preserve reasoning before. Structured analytic techniques, argument-mapping systems, and analytic-provenance tools have been doing parts of this work for years. I could not find a practical workflow centered specifically on freezing two independently authored reasoning paths, asking a separate reviewer to align them, and preserving those alignment decisions as part of the resulting diff. That narrower combination is what Reasoning Diff Lab is testing. A full treatment of the prior art, SEAS, CISpaces, W3C PROV, argument mapping, and the analytic-provenance literature is in the research assessment linked at the end.

So I built enough of an answer to find out whether the question was worth asking. I called it **Reasoning Diff Lab**.

*Status: pilot-ready, empirically unvalidated. The current v2.0.0 release includes the analyst-entry workflow, frozen path snapshots, reviewer alignment, deterministic comparison reports, and three synthetic cases. It passes 58 tests with 0 failures, and a full build produces 22 divergence events across those cases. That proves the instrument runs as designed. It does not prove that investigators will find it useful that is exactly what the pilot below is designed to determine.*

It's a local-first research prototype that compares two independently produced reasoning paths against the same evidence set.

I want to be just as clear about what it doesn't do, because this is the part that matters most. It does not determine truth, rank investigators, or declare one analyst better than the other. It does not infer a contradiction from wording a contradiction only exists in its output if a human reviewer explicitly confirms one. It does not replace human review; it tries to make that review faster to start, and harder to skip a step in.

Each analyst breaks their reasoning into small typed pieces an observation, an assumption, an inference, a claim, an explicit unknown and tags which evidence and which earlier piece each one depends on, with a confidence level attached. A reviewer who authored neither path matches the two sets: same position, related but distinct, or unrelated. Contradiction is separate it must be declared by the reviewer and is never guessed by the system. From there, everything is mechanical: the tool walks the matched and unmatched pieces and reports what it finds. If the report says two analysts diverged, you can trace that line back to the exact evidence, the exact dependency chain, and the exact reviewer decision whose call it was, and what they chose that produced it.

What it surfaces in practice:

So the comparison engine isn't trying to reconcile two investigators into a single answer. It's trying to make the relationship between their reasoning inspectable. It just asks smaller, more answerable questions: which evidence did only one analyst use? Where did confidence start to pull apart? Did two people reach the same conclusion by entirely different paths?

Those aren't answers. They're questions worth asking before a conclusion gets accepted as final. The goal isn't a verdict it's a shared language for disagreement, so it stops getting quietly absorbed into "well, we wrote two different reports."

Some of this is a real limitation I haven't solved; some of it is a boundary I drew on purpose and intend to keep. Match suggestions are lexical keyword overlap, nothing smarter a human reviewer has to confirm or reject every one. Structured entry is a genuine cost: breaking your own reasoning into typed pieces takes more effort than writing a paragraph, and I don't yet know if what it buys is worth what it costs. The five-part taxonomy might not fit how every investigator actually thinks.

The first draft of this, in my head, was much bigger — a graph canvas, real-time collaboration, permission tiers, an API, a database, export pipelines, dashboards. None of that answers the only question that matters right now: does comparing reasoning paths reveal useful differences a normal review misses? So I cut it down to exactly what's needed to test that, and nothing else.

A more detailed treatment covering prior art (SEAS, CISpaces, W3C PROV, argument mapping, structured analytic techniques), specific failure modes, the full data model, and the pilot protocol with predefined continuation and failure thresholds is in the repository under `docs/research-assessment-v0.1.md`

.

The next step is small on purpose: two analysts, one reviewer, three cases, one straightforward, one genuinely ambiguous with no single correct answer, one noisy and incomplete on purpose. Each case also gets reviewed the ordinary way, prose only, no structure, as the baseline this has to beat.

What gets measured: how long structured entry takes, how long review takes with the tool versus without it, how many reported differences a reviewer judges genuinely useful and non-obvious rather than just accurate, how many are misleading or simply wrong, what important differences the reviewer finds that the tool never surfaced at all, and whether anyone involved would choose to use it again.

None of those numbers exist yet. That's the entire point of running the test instead of writing more code.

The project is not intended to automate judgment or evaluate investigators. The most valuable part of an investigation is still the investigator: curiosity, experience, skepticism, pattern recognition, and the willingness to change direction when new evidence appears. A comparison engine cannot supply those things. If Reasoning Diff Lab succeeds, it will be because it made that judgment easier to inspect, discuss, and learn from not because it replaced it.

Seriously. It might be. The reports may surface differences nobody actually cares about. The pilot may tell me I've spent months building an elegant answer to a question nobody was asking.

That's a real possibility.

But there's another one. Maybe disagreement isn't something to eliminate maybe it's something to inspect. Maybe the interesting artifact was never the final conclusion. Maybe it's the moment two careful people quietly stopped thinking the same way.

I don't know. That's why this exists. Not to prove the idea. To test it.

If it fails, I want to know why. If it succeeds, I want to know why. Either result is worth more than convincing myself it works from the inside.

I'm looking for pilot participants. If you investigate things for a living—incident response, intelligence, digital forensics, journalism, medicine, security research, or even debugging—and you're willing to run the included synthetic cases through this and tell me exactly where the workflow broke, wasted your time, or showed you something you would otherwise have missed, I want to hear from you.

The initial pilot requires two independent analysts and one reviewer, takes approximately 90 minutes, runs locally, and does not require participants to submit real investigative evidence.

Everything needed to inspect or run the pilot is available here:

Comment below, open a GitHub issue, or reach out through my DEV profile. The next meaningful edit to this project should happen after real participants break, validate, or complicate the hypothesis—not before.

Evidence tells us what happened. Reasoning tells us why we believed it. We preserve the first remarkably well. I'm interested in whether we should start preserving the second.
