What really gets lost in a shift handover note is not the item somebody forgot.
Forgetting shows. The problem recurs, and it comes out that nobody wrote it down.
The real problem is this — the item that gets written at every handover all week and that nobody touches. Night writes it, morning copies it forward, afternoon copies it forward, night copies it forward again. It is written every time, so nobody forgot it. And nobody did it.
It happens because it gets retyped
The act of copying forward is the cause. The moment it is rewritten, the item looks like a new item. Nowhere in the note does it say "this is the fourth time."
So this sample does not copy anything forward.
// Nothing is copied forward and nothing is cleared. The next shift
// opens the same list. Carrying is the default; closing is the act.
_shift = (_shift + 1) % _crew.length;
Carrying is the default; closing is the act. And once it works that way, the counting comes free.
// The number that matters. Not stored on the item — an item does not know
// how many shifts have passed, the shift counter does.
int carried(Item i) => _shift - i.raisedOnShift;
Night raises three

night raised 3, open=3
All three say "this shift." Nothing has crossed anywhere yet.
Three handovers pass

handover -> MORNING, open=3
morning closed #3, open=2 morning handled the bread delivery
afternoon closed #2, open=1 afternoon swapped the card reader
And nobody touched the chiller.

carried 3 shifts stands in the warning colour and the summary says "something has crossed 3 handovers — nobody is deciding it"open #1 "Chiller 2 running warm" — carried 3 shifts (stale=true)
board says: something has crossed 3 handovers — nobody is deciding it
It is red not because the chiller is dangerous. It is red because it has crossed three times.
That distinction is the whole of this piece. This tool does not know how severe an item is — a person judges that. What this tool knows is that nobody has judged it, and that falls out of counting.
// Anything that has crossed three handovers is not an open
// item any more, it is a decision nobody is making.
'stale': carried(i) >= 3,
This content requires Developer or above
Sign in and upgrade your plan to continue reading.
View Plans