COCO strikes. Again.

We should probably stop giving COCO ideas.
The previous experiment was supposed to be enough.
A real application.
Real navigation.
Users.
Roles.
Databases.
Languages.
Evidence.

A respectable case study.
A clean conclusion.
Then somebody showed it: Logistics in Motion.
That was probably the mistake.


It started with three warehouses
Nothing particularly exciting.
Three DEMO warehouses.
  • Kalsdorf bei Graz.
  • Wiener Neustadt.
  • Klagenfurt.
Synthetic data.
No customer information.
No production inventory.

Exactly the kind of environment where nothing important is supposed to happen.
Then the first warehouse was selected.
And the application acquired context.
From that moment, every screen had another question attached to it.

Does this still belong to the same warehouse?
Does the language change only the interface?
Does the process remain at the same step?
Does the inventory still agree?
Does the document reference still point to the right event?
Does the operator see exactly what is needed for the next action?


Suddenly, the interesting part was no longer the screen.
It was the continuity between screens.

COCO tends to do that.

Logistics is not a collection of screens
From the outside, warehouse software can look deceptively simple.
Goods arrive.
Store them.
Someone orders them.
Pick them.
Ship them.
Done.

Except there is an entire operational world hiding between arrived and shipped.
Expected.
Received.
Checked.
Available.
Reserved.
Moved.
Picked.
Blocked.
Corrected.
Dispatched.
Audited.


The physical movement matters.
But the state transition is what makes that movement understandable to software.
And when those two realities stop matching, somebody eventually has a bad day.

Flow.

A warehouse is easier to understand when movement is visible, not merely recorded.
That is why our logistics work has never really started with menus, dashboards or technology.
It starts with the material Flow.

Where does information enter?
Where does it change?
Where can it be lost?

Where is somebody forced to ask another person what happened?
Where does a manual step quietly become the weakest part of an otherwise automated process?
Sometimes the answer is a new interface.
Sometimes an integration.
Sometimes a scanner.
Sometimes simply a better state model.

More software is not automatically better software.
The goal is not automation for its own sake.
The goal is a process that remains understandable.

Control. Clarity. Flow.

The process begins before the first booking.
Before goods receipt.
Before picking.
Before inventory movement.
Before the first transaction.
Flow asks a very basic question:
Which warehouse are we working in?
It sounds almost trivial.
It is not.
Warehouse context belongs to everything that follows.
Inventory.
Documents.
Locations.
Picking.
Relocations.
Audit history.
Exceptions.

The process may look perfectly healthy while operating in the wrong context.
That is exactly the kind of problem a screenshot rarely reveals.
And exactly the kind of boundary COCO likes to question.

Language is easy until it is not
German.
English.
Croatian.
Norwegian.
And others.

A user profile defines the available languages.
The operator switches language while the application is alive.
The interface changes immediately.
The business process must not.
That distinction matters.
The warehouse does not move because the word for warehouse changed.
The picking order does not restart because the user selected another language.
A reservation does not disappear.
An exception does not suddenly belong to another transaction.
The process stays where it is.
Only its representation changes.
That sounds obvious.

Until you realise how many applications treat a language switch almost like a new session.

A multilingual business application should not.
Presentation state may change.
Business state must remain stable.
That makes language switching a surprisingly useful regression test.
A small feature.
A very good fault line.
COCO likes fault lines.

Step by step, the application starts accumulating history
Goods arrive.
The process advances.
Goods receipt is booked.
Inventory changes.
The warehouse state reflects the new reality.
Picking begins.
Stock becomes reserved.
The operator receives a task.

A mobile view reduces the entire process to what matters at that exact moment:
Position.
Storage location.
Quantity.
SSCC.
Operator.
Nothing more.
Nothing less.
That is important.
The mobile interface is not a second business process.
It is another view of the same one.
The warehouse application may know everything.
The picker should not have to.
Clarity does not always mean showing more information.
Sometimes clarity means having the discipline to hide almost everything.

Then somebody scans the wrong location
This is where a logistics workflow becomes more interesting than a feature list.
The expected location is one thing.
The scanned location is another.
Flow stops.
Not crashes.
Stops.
There is a difference.
The process state remains visible.
The affected stock remains understandable.
The exception becomes explicit.

Contextual Help explains what is relevant to the current situation.
The user resolves the discrepancy.
The process continues.
This moment says more about operational software than several pages of happy-path screenshots.
Real logistics is not difficult when everything is correct.
Real logistics becomes difficult when something is almost correct.
A useful system does not hide that behind a green dashboard.
It gives the exception a state.

A reason.
A history.
And a way forward.


Documents remember what people forget

As the workflow progresses, references begin to accumulate.
ASN.
Goods receipt.
Warehouse movement.
Pick.
Dispatch.
Flow.
The interesting part is not that documents exist.
The interesting part is that they tell the same story as the process.
Why is this stock here?
Which receipt introduced it?
Which operation reserved it?
Which pick consumed it?
Which shipment moved it out?
Was an exception resolved before the next step?
What was the active warehouse?
What happened before the current state?
When state and documentation are produced by the same process, traceability becomes easier to trust.
When they are not, people eventually start reconstructing history.
Usually in Excel.
Usually under pressure.
Usually after something has already gone wrong.
COCO prefers evidence before that moment.
Apparently, COCO also travels
There was another small change between runs.
Ubuntu had its run.
Red Hat Enterprise Linux 10 took the next one.
COCO continued.
No ceremony.
No special “Red Hat mode”.
No rewritten workflow.
No conveniently simplified test.
Same Flow.
Different ground underneath it.
An earlier COCO run had already exercised the application on Ubuntu Linux.
The current one moved to Red Hat Enterprise Linux 10.
Different desktop environment.
Different system libraries.
Different packaging.
Different operating environment.
Same warehouse.
Same business states.
Same inventory transitions.
Same language changes.
Same exception logic.
Same evidence.
That is a rather nice way to test cross-platform software.

Do not announce that it is cross-platform. Move it. Then see what breaks.

Language state.
Warehouse context.
Dialog behaviour.
Timing.
Themes.
Process transitions.
Exception handling.
Evidence.
Operating systems have surprisingly creative ways of exposing assumptions.

Ubuntu exposed some.
Red Hat is exposing others.
That is useful.

Because multi-platform engineering is not the ability to start the executable twice.

It is the ability to change the environment without changing the meaning of the process.
A warehouse operator should not care whether the application is running on Ubuntu or Red Hat.
A picking order should not care either.
Neither should an audit trail.
If platform differences begin changing business behaviour, the software is not truly cross-platform.
It is merely portable.
COCO seems considerably more interested in the first definition.
So are we.

COCO does not decide what correct logistics means
This part matters.
COCO does not become a warehouse expert simply because it can follow a warehouse workflow.
Humans still define correctness.
Humans decide when inventory becomes available.
Humans define what a blocked delivery means.
Humans decide who may correct a quantity.
Humans define which movement requires an audit trail.
Humans decide what a valid exception resolution looks like.
Humans decide when a shipment is truly complete.
COCO's job is different.

Repeat.
Observe.
Compare.
Remember.
Leave evidence.


Then do it again after the software changes.
And again.
And again.
Without becoming bored.
Without deciding that last week's result is probably still valid.
Without skipping the annoying exception because lunch is in twelve minutes.
The glamorous future of AI testing contains a surprising amount of repetition.
We consider that a feature.

Evidence changes the conversation
Traditional testing often ends with a perfectly reasonable sentence:
“It worked when I tested it.”

COCO is interested in the next sentence.

What exactly worked?
Which warehouse?
Which user?
Which language?
Which process state?
Which sequence?
Which document?
Which inventory value?
What happened immediately before the test step?
What changed immediately afterwards?
Can another engineer understand the result without asking the person who performed the test?
That is where regression testing becomes more than repeated clicking.
One screen can be correct while the process is wrong.
A picking window can look perfect while inventory has already drifted.
A document can exist while the state that should have created it never occurred.
An application can display 100% while an audit trail quietly disagrees.
COCO follows the Flow because the Flow is where these contradictions become visible.

Somewhere between Control and Flow
There is an interesting symmetry here.
Good logistics software tries to reduce uncertainty inside an operation.
Good testing tries to reduce uncertainty about the software running it.
One asks:
Where is the item?
The other asks:
How do we know the software still knows?
One asks:
Was this movement completed?
The other asks:
What evidence proves that the state changed correctly?
One asks:
Can the next shift continue?
The other asks:
Can the next engineer understand what happened?
Different questions.
Same instinct.
Make the state visible.
Preserve the reasoning.
Reduce the amount of knowledge that exists only inside somebody's head.
Perhaps that is the connection we did not originally plan.

Engineering excellence without the banner
Nobody clicks an Engineering Excellence button.
There isn't one.
And there probably should not be.
Engineering excellence appears indirectly.
The warehouse context survives a language change.
The same process survives another Linux platform.
A stock movement remains traceable.
A mobile picker sees exactly what is needed and nothing else.
An exception interrupts the process without destroying its state.
The Help window explains the current context instead of displaying generic documentation.
The document chain agrees with the operational sequence.
The next engineer can understand what happened without asking the person who happened to be there.
There is plenty of theatre available in modern software.
AI can generate impressive demonstrations.
Dashboards can animate.
Numbers can move.
Videos can look very convincing.
None of that proves that two inventory operations cannot silently produce an incorrect result.
None of it proves that an exception can still be reconstructed weeks later.
None of it proves that the warehouse worker, dispatcher and developer are looking at the same operational truth.

Engineering excellence starts somewhere less photogenic.

With consistency.
With evidence.
With boundaries.


With the willingness to keep the boring parts boring.
Invisible reliability rarely produces the most dramatic screenshot.
Until you deliberately start looking for it.

Control. Clarity. Flow.
Control is knowing which warehouse, which process and which state are active.
Clarity is understanding what changed, when it changed and why.
Flow is allowing the operation to continue without losing the story behind it.
That works for logistics.
It works for software testing.
It works surprisingly well for engineering itself.
The first Flow experiment gave COCO Administration.
Users.
Roles.
Databases.
Languages.
Then somebody gave it a warehouse.
Then multiple languages.
Then mobile picking.
Then inventory.
Then relocations.
Then exceptions.
Then documents.
Then another operating system.
At this point, we should probably stop adding things.
We probably will not.

Control. Clarity. Flow.

Ubuntu had its turn.

Red Hat has the current one.

The Flow keeps moving.

COCO keeps watching.
And somewhere in the middle of the last run, it became obvious that there is another question waiting behind this one.

We know what it is.
COCO knows what it is.
You do not.
Yet.


We could tell you.

But then you might stop checking whether a new Insiders article appeared.
And that would ruin the experiment.

Published: 28.08.2026