Demanufacturing: When the Whole Is Worth Less Than the Parts
Component-batch creation, harvest metadata, and the sellable-quality gate that decides what makes it back to market.
Some devices are worth more taken apart than sold whole. A laptop with a cracked screen and a perfect motherboard is worth more as a motherboard plus a chassis-as-spares than as a Grade D laptop. A server with one failed drive and seven good ones is worth more as seven drives than as a server. The math is obvious. The problem was that the warehouse didn't have a workflow for it — so the device sat on the rack until somebody decided to retire it, and the parts went to recycling instead of resale.
The job entity
Demanufacturing is its own job. Open one against a source asset (or a batch of source assets), assign an operator, define the BOM (the list of components you expect to harvest), and walk the operator through the disassembly. Each harvested part lands as a row in the harvested_parts table with type, condition, specification, estimated value, and a link back to the source asset. Provenance is preserved: every part can be traced to the laptop it came out of.
The sellable-quality gate
Not every harvested part is worth selling. A motherboard with bulged capacitors goes to recycling. A chassis with a snapped hinge goes to spares-for-internal-repair. A drive that failed SMART checks gets shredded. The sellable-quality gate is tenant-configurable — set the threshold, and parts below it are flagged "not sellable" with a reason code. The market never sees them. The tester doesn't second-guess the call. The threshold is one place.
Where the parts go
Sellable parts inherit the platform's sellable layer — the same one Core uses for assets that are ready for market, with a quality score, photos, documents, and the same stale-threshold cron that quietly unpublishes parts sitting too long. Selling a refurbished motherboard works the same as selling a refurbished laptop. The buyer doesn't care about the workflow. The platform does, and that's the whole point.