I usually find myself arguing against people with what O think is a bit of a blinkered faith in market forces solving all and regulation being the work of the devil. But in this case, unless there really is a demonstrable monopoly position that’s being abused, it should be up to customers to decide if after market parts availability is something they care about in their purchasing decision.
There would be a great incentive to warehouse and sell "spare parts". And they would have to be every individual discrete part, and every subassembly that can be handled as a unit. If you just sold engines, you might end up with an unusable nearly-engine because someone came along and picked just the parts they needed off of it. If you just sold engine parts, you might end up with an unusable nearly-car because someone picked a whole, assembled engine out of it.
So every type of screw, nut, bolt, and washer. Every type of transmission assembly and engine assembly. Every passenger seat. Every floor mat. Every light bulb and every plastic housing. Every wiring harness. Every radio and CD player.
This is itself a great incentive to use COTS parts, reduce number of unique parts, and adhere to standards. Maybe you use a #6 bolt somewhere instead of trimming weight and cost a tiny bit by using a #5 there. Maybe you standardize the dimensions and mount points of your engine compartments, so that 20 years from now, replacement engines can be diverted from the supply chain for newer cars rather than pulled from a warehouse stockpile that has been taking space and gathering dust that whole time. Or maybe you set up your spare parts facility to do on-demand manufacturing or assembly.
It is a big can of worms. But I'd argue that not opening it now would be allowing it to grow even bigger and wormier as time goes on.
If you have an internal ERP product code for the spare part in question, it is swappable.
If the repair shop asks for a single IC chip instead of a complete PCB or ECU, they obviously have the skills and need to replace it, making it a valid spare part request.
If you need software or specialized tools to configure or install a part, you obviously cannot withhold said tools from the repair shop.
These are actual examples from my business: I have part numbers for raw powders that I have not yet sintered into ceramics. I have part numbers for parts that go into a welded and inseparable sub-assemblies. I have part numbers for components that are bonded together with glass seals that cannot be repaired if separated.
It is easy to see how you cannot just use the BOM to determine the list of spare parts and it is easy to see how a manufacturer could simply pot their whole unit in epoxy for "structural" reasons and prevent any individual spare part or sub-assembly from being useful.
We have a lot of embedded systems written in assembly for an 8-bit CPU that is no longer made. The electronics are easy (I'm not an EE) but it will be years before we can replace the software that currently has been running in the field with zero known bugs - I'd love to get those CPUs that work perfectly made again. Instead we bought a warehouse worth, and we hope it is enough to satisfy all our warranty needs.
The important thing is that identical inputs yield identical outputs. The rest of the vehicle doesn't care what's in the black box.
Then you wouldn't have to warehouse old, obsolete parts. You just have to warehouse old, obsolete embedded-software developers. That's probably cheaper if you have enough volume.
Also, if your company is still programming in assembly instead of a higher-level language, such as C, which has been available for 45 years now, I can safely say you are all hoist on your own petard. If you really want reliability, there's always Ada. You can't expect the 80196 to stick around forever.
The vehicle does not care what is in the black box, but that is only true once input/outputs are actually identical. It is .01 volts different has killed us in random failures. It is 1ms faster, is that better or now - in some cases that 1ms slower was depended on and we didn't know it anymore.
We don't program anything new in assembly. However for a lot of old embedded controllers if it works don't break it. There are no known bugs with the old code. Suddenly the CPU isn't available and we have to create a new one. Marketing can't come up with any new feature that a new CPU would enable so it is strictly and engineering exercise.
If you don't maintain it, you are allowing it to break through neglect. That's like saying if the old oil works in an engine, you shouldn't bother changing it. It works great, right up until it doesn't, and then you have a bigger problem.
Software development is an incurable disease. Once you start, you can't ever stop.
The other aspect is, who decides what price components must be sold for?
"Fixing" lots of appliances means wholesale replacement of the entire "board" (i.e. component representing 90% of the total electronics) which likely never makes the device as good as new but costs almost as much as a replacement unit.
For smaller devices like cell phones it becomes much more difficult due to a combination of miniaturization, specialized parts not available on the general market, and secret schematics that can't easily be derived from the complex multilayer PCBs in use.