Engineers say "the data is biased" and reach for more logging. A Haitian historian's map of four silences tells you which of four moments produced your blind spot, and which is not a logging problem at all.
The most successful slave revolt in human history happened in plain sight, was reported in newspapers across two continents, and was witnessed by thousands of people who wrote it all down, and the world's leading thinkers still could not see it.
Between 1791 and 1804, the enslaved people of Saint-Domingue, France's richest colony, rose up, defeated the armies of France, Spain, and Britain in turn, and founded Haiti, the first independent Black state in the Americas. There was no shortage of documents. There were dispatches, depositions, eyewitness accounts, military correspondence. And yet, as the Haitian anthropologist Michel-Rolph Trouillot showed in his 1995 book Silencing the Past, the revolution entered the historical record as a kind of blank. Contemporaries found it, in his word, unthinkable, because the conceptual frame of the Enlightenment had no slot for "enslaved Africans defeat Europe and govern themselves." The facts were all there. The frame rejected them. People literally looked at the evidence and concluded it could not mean what it plainly meant.
I open with this because it is the most precise diagnosis I know of the single most maddening line in any engineering postmortem: "We had the data the whole time." The signal was on the dashboard. The anomaly was in the logs. And the team looked right at it and dismissed it, not because they were careless, but because their frame couldn't register it as signal. That is not a missing-data problem. It is a Trouillot problem, and Trouillot gives you the tool to tell exactly which kind you have.
The thing engineers say when a pipeline lets them down is "the data is biased," and that phrase is a category error, because it collapses four completely different failures, with four completely different fixes, into one helpless shrug.
Trouillot's central insight is that silences don't enter a record at one point; they enter at four. From Silencing the Past (p. 26): "Silences enter the process of historical production at four crucial moments: the moment of fact creation (the making of sources); the moment of fact assembly (the making of archives); the moment of fact retrieval (the making of narratives); and the moment of retrospective significance (the making of history in the final instance)." Each is a separate transaction. A fact can be created and then dropped from the archive; archived and then never retrieved; retrieved and then framed as trivial. Silence, Trouillot insists, is "an active and transitive process": it is produced at a locatable moment by a locatable decision, not a passive absence that just happens.
And here is the line that makes this an engineering tool rather than a seminar: these four moments, he writes, exist precisely to help us understand "why not all silences are equal and why they cannot be addressed — or redressed — in the same manner." That is the whole essay in one sentence. A blind spot introduced when you decided not to log an event is a different animal from one introduced when your dashboard's framing dismissed the event you logged, and a fix aimed at the wrong moment is wasted motion.
I should say plainly that I am not the first to drag Trouillot into the data world. Michael Muller and Angelika Strohmayer did it rigorously at CHI 2022 in a paper called "Forgetting Practices in the Data Sciences," building a taxonomy of how data work forgets, erases, and unknows, grounded explicitly in this lineage of critical data studies, the field that taught us "raw data is an oxymoron." That work proved the silences are real. What it didn't do, what the on-call engineer actually needs at 3 a.m., is the operational version: the four moments mapped one-to-one onto the four stages of your pipeline, each with a stage-specific remedy. So here is the debugging map.
Moment 1, fact creation → instrumentation. Trouillot's "making of sources" is your instrumentation layer: the decision about what gets recorded at all. The silence here is the un-logged event. It is the cleanest of the four because it is the most honest, you genuinely do not have the data, because nobody wrote the line that would have captured it. The classic version is the failure mode you only discover during the incident: the retry that was never counted, the dropped request that returned 200 so it never tripped a log, the user segment whose actions were never tagged. You cannot analyze what you never recorded. The remedy is the obvious one: instrument it. And precisely because this remedy is obvious, engineers reach for it reflexively, "add more logging", even when the actual silence was produced three moments downstream, where more logging does nothing.
Moment 2, fact assembly → aggregation, ETL, sampling. Trouillot's "making of archives" is the stage where you decide what survives into the warehouse. The silence is the dropped-in-aggregation event: the fact was logged, but uniform sampling, roll-ups, and pre-aggregation averaged it out of existence on the way in. This is where the tail dies. A p99.9 latency spike vanishes into a healthy-looking p50; a rare error class gets sampled out at a flat 1% rate and is simply gone; an hourly roll-up smooths a thirty-second outage into nothing. The data was created and then un-made during assembly. The remedy is the one mature observability practice has converged on but most teams skip: sampling-aware assembly: keep a low, stable sample of the boring successes, but oversample the failures, the tail latencies, and the anomalies, so the rare event is over-represented in the archive rather than averaged away. You preserve the tail on the way in, on purpose, because that's where the incidents live.
Moment 3, fact retrieval → query, alerting, audit. Trouillot's "making of narratives" is retrieval: of everything safely in the archive, what does anyone actually pull? The silence is the un-queried event, the row is sitting in the warehouse, perfectly intact, and no human or alert ever reaches for it. This is the silence that gets exposed when an external auditor finds the biased predictions your own dashboards never surfaced, because comprehensive visibility was nobody's job. The data isn't missing and it isn't dropped; it's simply un-asked-about. The remedy is not more data, it is a query you don't yet have: the alert that fires on the un-watched dimension, the scheduled internal audit that pulls the slice nobody looks at, the retrieval written before the regulator writes theirs. This is the first of the two failures that live in human attention rather than in the pipeline, and it is systematically under-invested in, because "write a query" never feels as productive as "build a system."
Moment 4, retrospective significance → dashboard and postmortem framing. This is Trouillot's deepest moment, "the making of history in the final instance," and it is the one that should keep you up at night. The silence is the un-narrated event, the data was created, assembled, and retrieved; it was on the screen; and the team's frame refused to count it as meaningful. This is the engineering "unthinkable." It is the alert that fired and got acknowledged-and-ignored because "that metric is always noisy." It is the anomaly someone screenshotted in Slack with a "huh, that's weird" and no follow-up. It is the dashboard panel everyone's eyes slide past because the story of the system has no room for that number to matter. The remedy is the least technical and the hardest: reframe. Make the dismissed signal thinkable, change the narrative, not the instrumentation. And no amount of additional logging touches it, because the data was never the problem.
| Trouillot's moment | Pipeline stage | The silence | The fix |
|---|---|---|---|
| 1. Fact creation | Instrumentation | Un-logged event | Instrument it |
| 2. Fact assembly | Aggregation / ETL / sampling | Dropped in aggregation | Sampling-aware assembly; oversample failures, preserve the tail |
| 3. Fact retrieval | Query / alerting / audit | Un-queried event | The query you don't yet have; internal audit before the external one |
| 4. Significance | Dashboard / postmortem framing | Un-narrated event | Reframe; change the story, not the schema |
Notice the asymmetry. Engineers are excellent at moment 1 and pretty good at moment 2. We love instrumentation; we will happily add another hundred metrics. We are competent at sampling, given a nudge. But moments 3 and 4, the un-queried and the un-narrated, are the two failures that live not in the pipeline but in human attention, and they are exactly the ones we under-invest in, because the reflex when something goes wrong is to log more, and logging more is a moment-1 fix.
Trouillot's Haiti is the proof that the worst silence is the last one, not the first. The Haitian Revolution did not lack sources, it had abundant sources, retrieved and read by the most sophisticated minds of the age. It was silenced at the final moment, the moment of significance, by a frame that could not let the facts mean what they meant. The engineering translation is that your most dangerous blind spot is almost never the event you failed to log. It is the event you logged, archived, retrieved, displayed, and then narrated into irrelevance. "We had the data" is not an exoneration. It is a confession that the silence was manufactured at moment 4, the most expensive place to manufacture one, and the place more dashboards cannot reach.
If the fix isn't technical, what is it? It's cultural, and it's concrete. Add a standing question to every postmortem template, what did we see and dismiss, and why?, so the acknowledged-and-ignored has a box it must be written into. Give someone the explicit, rotating job of arguing that the weird number is real, a devil's advocate whose only mandate is to make the unthinkable a hypothesis instead of a shrug. And lean on the blameless frame for exactly this: it has to be safe to say "I saw it and I didn't believe it" without that being a confession of incompetence, because the engineer who dismissed the signal did so for the same reason the Enlightenment dismissed Haiti, the frame they were handed had no slot for it. You don't fix moment 4 with a tool. You engineer the conditions under which the dismissed becomes discussable.
There is something quietly empowering in this, though, and it is the real reason to carry Trouillot into your incident reviews. If silence is produced, an active transaction at a specific, locatable moment, then your blind spot is not bad luck. It was made by a decision: a sampling rule, a missing query, a dashboard default, a team belief about which metrics "always lie." A manufactured silence has an author and an address. That means it has a fix you can actually ship, once you know which of the four moments produced it.
So here is the thing to do, and it costs you one question. When you hit a blind spot, a missed outage, a biased model, a metric that lied, do not say "the data is biased." That sentence has no remedy attached because it points at no moment. Instead ask: at which of Trouillot's four moments was this silence produced?
Four moments, four silences, four remedies, and the entire value of the exercise is that they are different. Throwing more instrumentation at a framing problem is the engineering equivalent of handing a historian more documents about Haiti: the documents were never what was missing. The discipline Trouillot hands you is not "data is political," which the critical-data-studies field established a generation ago. It is sharper and more useful than that: every blind spot has a manufacturing address, there are exactly four of them, and naming the right one is most of the fix. The next time someone says "we had the data the whole time," you'll know they've just told you which moment failed, and which of the four tools to reach for.
A manufactured silence has an author and an address. So should every fact in an agent's memory.
Trouillot's point is that "raw data is an oxymoron": a fact carries the decisions that made it, and a blind spot is a decision you can locate. For agents, that locatability is provenance, knowing where each claim came from, what was kept, and what was silenced on the way in. Chain of Consciousness is that record, a tamper-evident lineage for an agent's data so a silence at any of the four moments has a name and an address you can audit, not a shrug.
pip install chain-of-consciousness · npm install chain-of-consciousness
Hosted Chain of Consciousness → · See it in action