Running list of things to check or come back to on the CVR work. Newest at the top.
Open
Action: Add batched (matched-but-unposted) Purchase Ledger transactions as a Discussion Point on the Commitments Definition page (the Finance-facing page), alongside the GRN and no-PO points.
Hold until: UNBLOCKED 18 Sep 2026 — the investigation below is answered (batched invoices don't reach the actuals; both sides now follow posted-only, with a defensive filter on the view). Ready to write the Discussion Point: a matched-but-unposted invoice sits in neither commitment nor actuals until it posts (the "vanishing pound" window, currently £3.8M of batched PL invoices database-wide).
Question: Do batched (matched-but-unposted) Purchase Ledger invoices appear in the actual transactions the CVR reads (the Project Transactions feed, built on CST_DETAIL)? If the CVR takes its actuals from there, we may not be treating them correctly.
Why it matters: The commitment logic deliberately excludes batched invoices (the posted-only rule, DET_BATCH_FLAG = 0) — they are matched to a PO but not yet posted to the ledger (the "vanishing pound"). If the actuals side includes those same batched invoices, the two sides are inconsistent: a batched invoice would be missing from commitment and counted as an actual (or double-counted), distorting the CVR. Conversely if actuals also exclude them, the value sits in neither bucket until it posts.
To check: whether CST_DETAIL / the [BI].[ProjectTransactions_Base] view picks up batched PL invoices, and confirm the treatment lines up with the commitment posted-only rule so nothing falls between the two.
ANSWERED (18 Sep 2026): database-wide check: 816 batched PL invoices (£3.8M) and ~15k batched NL journal rows exist, but only 745 CST_DETAIL rows link to batched entries (740 NL journals £9,929 + 5 PL rows £88), almost all 2014 journals or overhead codes. Live batched invoices create no CST_DETAIL rows — cost rows are written at posting, so the actuals were already consistent with commitment's posted-only rule. Defence-in-depth filter added to [BI].[ProjectTransactions_Base]: WHERE ISNULL(gl.DET_BATCH_FLAG, 0) = 0 (ISNULL because timesheets/journals have no ledger link). Remaining sub-question if ever needed: whether batched invoices bump CST_COSTCENTRE.cc_actual_cost (the front sheet source) — not pursued, the front sheet agreed with CST_DETAIL on 446459.