A Constraint Map Is a Dependency, Not a Document
A protein processor had two versions of its own plant.
The numbers did not agree, and a spreadsheet was not going to settle it
A protein processor had two versions of its own plant. The plant leader had been telling corporate one story about throughput and labor. Our station-level read said something different, and had for weeks. That standoff is the most common one in this work, and the usual move is to escalate it in a deck: two columns, our number and theirs, and a polite request that someone adjudicate.
I did not send the deck. I put two of their executives on the floor with me for a day.
They watched the disconnect instead of reading about it. Within the week the posture had shifted from defending the reported number to pushing on it, and a second facility opened up to the same engagement. The judgment was not that our number was better. It was that a contested number gets settled by standing at the station, not by winning a formatting argument at 30,000 feet.
Then we went to draw the actual constraint map, and could not.
A map is a dependency chain wearing a document costume
The task was ordinary: map current-state process flow, station by station. It sat blocked. Its predecessor was re-baselining OEE on clean data. That predecessor was waiting on a finished-goods-by-week rollup for the year and a corrected long-term forecast, both owed by the plant. Three links in, the chain terminated where every constraint map's chain terminates, in data somebody else owns and nobody is chasing.
This is not a project management complaint. It is the mechanism. A constraint map presents as an artifact you produce once and then consult. It behaves as a live reference. Every zone, rate, and queue on it points at an upstream input, and the map's real timestamp is the timestamp of its oldest input, not the date in the file name.
The same shape shows up everywhere once you look for it. A preliminary zone map with constraint hypotheses for a second processor was explicitly contingent on the client sending a CAD layout before the working session. No layout, no map, and the session runs on recollection. On a molded products engagement, a supplier optimization roadmap sat blocked behind qualification and transition of the incoming supplier, while specifications from the two incumbents simply never arrived. Week over week the same question came up on the call, whether these were new vendors or the same ones, and the answer was the same ones. They had not pushed back. They had not refused. They had not supplied it either. That silence sat inside a resin market where two indices had already baked in a 15 cent per pound decline and another 10 cent drop was expected before Mideast escalation reversed the outlook.
Silence is the worst input state, because it does not look like a gap. A refusal creates a decision. A wrong number creates an argument. Silence creates a blank field, and blank fields get filled by whoever is downstream, usually with last quarter's value, quietly, in a model nobody reopens.
The map of the work goes stale the same way the map of the plant does. On that same engagement, the project board was still showing April and May dates on the packaging optimization section in the middle of July. Nobody had lied. The board had simply gone unrefreshed while everyone kept working from it.
Date every input, and make the gaps loud
Three changes, and they are cheap.
Stamp every input. Each rate, zone volume, and constraint hypothesis on the map carries the source it came from, the person who owns that source, and the date it was last refreshed. If your constraint map cannot answer "as of when" for any single number on it, it is not a map, it is a memory.
Render missing as missing. A blank input must display as blank all the way through to whatever consumes it. No defaults, no carried-forward values, no approximately. The labor work at that plant went forward as a constraint-led validation charter with two explicit paths precisely because we could name which numbers we held and which we were still owed. A validation trial with two honest paths beats a roadmap built on one confident wrong baseline.
Chase the chain, not the task. When a mapping task stalls, do not re-ask for the map. Walk the predecessor chain to its end and find the human at the bottom. On those incumbent specifications, the unlock was not another follow-up from us. It was routing the request through the client's own relationship with the supplier, because the silence was addressed to the wrong party. The request had been technically correct and structurally unanswerable for weeks.
What a well-mapped plant looks like
Every number on the constraint map names an owner and a refresh date. No input runs more than one operating cycle stale, so a plant that changes its schedule weekly refreshes inputs weekly, not quarterly. Missing inputs render blank and visibly block the conclusion that depends on them, and the count of blanks appears on the same page as the map. The project board's dates match the current week. When a supplier goes quiet, the clock on that silence is on someone's screen by day three rather than week five. Nobody has to ask whether the picture is current, because the picture says so.
The map is never wrong, only old
Old maps do not announce themselves. That is the whole problem: a constraint map fails silently, and it fails most confidently in exactly the zones nobody has looked at recently. Put a date on every input, and the map finally tells you the one thing it could never say before, which is which part of your plant you have stopped actually looking at.