Synthetic Industry

Troubleshooting guide · updated 2026-10-11

Blank supplier price clears a good value: distinguish unchanged, empty and explicit removal

Give missing fields and blank cells different update meanings before a partial supplier feed erases a price or silently substitutes zero.

Write a presence contract

For the worked example, an intentionally omitted optional price field means unchanged, a present blank price is an exception, numeric zero is a submitted value requiring the declared zero-price policy, and removal requires a separate explicit operation. Your supplier may specify different meanings. Get those meanings approved rather than treating every falsy value as missing.

  • Distinguish a deliberately absent column from a row shorter than the declared header.
  • Do not substitute zero to make a missing required price parse.
  • A clear-price operation must be permitted explicitly; it is not implied by a blank cell.

Parsing does not preserve every distinction

Python DictReader fills short rows with a configurable restval, defaulting to None. Its writer can convert None to an empty string, losing the distinction on a round trip. A malformed short row is therefore not evidence of an intentional no-change instruction. PostgreSQL preserves columns omitted from SET; assigning NULL is a different action and remains subject to constraints.

  • Validate row width before interpreting business fields.
  • Keep field presence separate from its parsed value.
  • Do not assume quoting an empty CSV field defines a clear instruction.

Acceptance inspects the previous value

Start with an invented stored price of 12.50. The deliberately omitted-price case must retain 12.50; a present blank must report an exception and retain it under this example policy. A present zero and an explicit removal are separate cases, not variations of absence. Inspect resulting value and disposition, not just an imported-row count.

  • No real prices were changed; the supplied matrix is synthetic.
  • Historical data loss requires separate recovery evidence and authorised reconciliation.

Priced enquiry and non-fit

A deterministic existing-code mistake in presence handling may fit fix-one-bug-with-regression-test, from £295 after bounded synthetic reproduction and a fixed quote. Policy invention, correcting real price lists, tax advice and schema migration are outside that repair. Send the synthetic prior value, submitted field state and expected disposition, not client files or source code. If the supplier cannot define blank semantics, hold automatic updates and ask its authorised operator; do not guess. Price is an untested proposal and payment follows agreed passing checks and sign-off.

Sources and limits