# Auditor Objections — forge-pm-work-order-sim

> FICTIONAL / SYNTHETIC DEPLOYMENT MODEL. Hostile objections, answered from evidence.

**Objection 1: "This is a fake customer dressed up as a real deployment."**
Answer: It is explicitly labeled a FICTIONAL / SYNTHETIC DEPLOYMENT MODEL in the
README, every report, the dataset card, the social copy, and the public page. The
customer-outcome seam is declared to the Proof Layer, which therefore withholds
`CERTIFIED`/`PRODUCTION_VALIDATED`. No real deployment is claimed anywhere.

**Objection 2: "The accuracy numbers are inflated by easy synthetic text."**
Answer: Agreed that synthetic text is cleaner than real intake — this is disclosed in
`LIMITATIONS.md` and the dataset card. The corpus deliberately injects hard cases
(ambiguous two-trade orders, duplicates, over-cost, missing-location, missing-field)
and the metrics are measured against a ground-truth key, not asserted. Real-text
accuracy is explicitly listed as unverified.

**Objection 3: "The ROI is just made-up savings."**
Answer: The ROI is a transparent model whose every input is a stated assumption in
`assumptions.json` and whose only measured input is the auto-action rate from the
simulation. The arithmetic is shown line-by-line in `evidence/roi.json` and the
impact study. It is presented as an illustrative model, not a realized result.

**Objection 4: "You didn't really run 100,000 — you extrapolated from a small run."**
Answer: `verify.mjs` processes the full corpus through the live ecosystem
(default 100,000), and a MUST_PASS check asserts the processed count equals the
target. Real DB row counts (`work_orders`, `audit_log`, `dispatch_records`) and the
execution log in `proof/evidence/verify.log` corroborate the full-scale run.

**Objection 5: "The infrastructure is fake."**
Answer: Persistence is a real PostgreSQL engine (PGlite) with real SQL/transactions,
and dispatch crosses a real gRPC/HTTP2 wire — verified by reachability, idempotency,
and malformed-rejection checks. What is a seam is that it runs **in-process** on
localhost rather than against an external Postgres/Go service; this is disclosed.

**Objection 6: "The classifier is not the LLM you'd ship."**
Answer: Correct and disclosed. The classifier is a deterministic lexicon engine
chosen for auditability; the LLM swap is a documented, unverified seam.

**Objection 7: "Numbers can't be independently reproduced."**
Answer: Everything is seeded (`20260625`); `REPRODUCE.md` lists exact commands; a
corpus-fingerprint check guarantees identical inputs; `CHECKSUMS.json` pins every
shipped file.
