docs: record staged readiness follow-up

This commit is contained in:
DEls 2026-09-19 19:23:40 +02:00
parent 199dfba195
commit 9fafec64b1
2 changed files with 13 additions and 0 deletions

View file

@ -31,3 +31,11 @@ git diff --check
## Residual risk
The migration remains unapplied and `DN_STAGED_INGESTION_ENABLED` remains unchanged. Existing rows without `global_page` and with a source-page gap require manual repair/re-extraction; the posting path intentionally refuses to infer their identity.
## Follow-up P1 fixes
- Exported `evaluateRequiredChecks`; the staged runner and posting readiness gate now share the exact required/optional policy. A null `product_matched`, `units_convertible`, or `qty_plausible` result cannot produce `ready_to_post`.
- Staged checks now load cumulative `delivery_note_items.qty_received` totals once per run and pass them to `qty_plausible`. Missing schema, failed reads, or invalid quantities persist a failed `delivered_totals_available` gate and fail closed. A sequential over-delivery regression proves the current candidate remains review-only.
Follow-up code commit: `199dfba`
Follow-up focused verification: 4 files, 92 tests passed; `npm run typecheck`; `git diff --check`.

View file

@ -174,3 +174,8 @@ Final cross-feature fix wave: focused verification passed — 8 files, 89 tests;
Ruling: staged candidates must persist the aggregate page evidence, line links, and complete canonical checks before they can be ready_to_post — cost if wrong: more candidates enter review, but no incomplete candidate can pass the posting gate.
Ruling: global_page is an additive stable identity and legacy page remapping is allowed only when source ordinals/pages are contiguous and unambiguous — cost if wrong: old ambiguous rows require manual repair instead of risking the wrong scan page.
Ruling: manual split/join invalidates all derived candidate commercial/entity/match/check fields and requires recomputation — cost if wrong: an operator must wait for the staged runner, but stale PO links cannot be posted after page reassignment.
Final fix follow-up: dispatched at base 0f910c1
Final fix follow-up: code complete (shared required-check policy and strict cumulative ledger totals; commit 199dfba)
Final fix follow-up: focused verification passed — 4 files, 92 tests; npm run typecheck; git diff --check
Ruling: staged readiness and posting use the same exported required-check helper; required checks must be true and only explicitly optional checks may be null — cost if wrong: a document remains in review until all financial gates are proven.
Ruling: delivery-note item totals are loaded once per staged run and any read/schema/quantity error adds a failed persisted gate — cost if wrong: the batch pauses for operator repair instead of comparing against an unsafe zero baseline.