You cannot disable a product on one website
A request to hide a product on one of several websites turned out to be unstorable. status and visibility had been changed to global scope, and the import deletes store-scoped values anyway.
The request was ordinary: this product should be visible on one website and not the other. Same catalog, several storefronts, disable it on one of them.
It could not be stored. Not "it was overwritten later" or "the import undid it". There was nowhere to put the value.
status had been made global
Stock Magento ships status as website-scoped, which is what makes the usual answer work. On this install both status and visibility had is_global = 1. Nothing in the project code did that, so it was changed at some point years ago and nobody recorded why.
A global attribute stores one value on store 0. Setting a different value for store 3 has nowhere to live, so the admin appears to accept the change and the value is simply not persisted anywhere it can be read back.
The import enforces it too
Reading the connector made it worse in an interesting way. Because status is global, the import takes a branch that reads only the unscoped column. And it calls a cleanup routine that deletes every status row with a non-zero store id for imported products. So even if you did get a store-scoped value in there, the next import would remove it deliberately.
On the install I checked, every one of the roughly 190,000 status rows sat on store 0 and there were zero store-scoped rows. Not "few". Zero. Which is at least consistent.
What this changes about the estimate
This is the part worth generalising. The request sounded like a content task. Somebody toggles a switch on a product. It was actually a schema change: convert the attribute to website scope, verify the import does not fight it, and confirm nothing downstream assumes a single global value.
The saving grace was that there was nothing to migrate. With only store 0 rows in existence, changing the scope does not have to reconcile conflicting values, because none exist.
Before promising a per-website behaviour on any attribute, check is_global in catalog_eav_attribute. It takes one query, and it is the difference between a config change and a data migration.
