Month-End Close — Instrumented

Six closes, 13 tasks with real dependencies, sign-off states, and a flux review with materiality thresholds. The close is a process with a critical path, not a heroic sprint — and this page names the current bottleneck. Synthetic, seeded data.

6.9 days
December close — down from 8.9 in July
2.5d
Longest task on the critical path — Revenue cut-off review — this is what to attack next
1
Flux breach missing commentary (Nov) — close held until resolved
78
Task-instances with prepare → review → approve ordering proven
max($50K, 5%)
Flux materiality — every breach explained or the close doesn't certify

Days to close — before and after attacking the path

11d7d4d0d8.9079.5089.2096.9106.7116.912

Bank reconciliation was automated in October (blue → green). July's critical path ran subledger → bank_rec → rev_cutoff → flux → reporting; December's runs rev_data → rev_rec → rev_cutoff → flux → reporting. The improvement did not come from anyone working faster on average — it came from removing 2.7 days from the one chain that gates everything. The next day of improvement lives in the path's longest task — currently revenue cut-off review — and the dashboard will keep saying so until it moves.

December close checklist

TaskOwnerStart (day)Duration Finish
Close AP / AR subledgersAP accountant0.01.41.4
Payroll & benefits accrualPayroll lead0.01.01.0
Usage & billing data cutRevOps0.00.90.9● critical path
Stock comp expenseSenior accountant0.00.80.8
Revenue recognition runRevenue accountant0.91.32.3● critical path
Bank reconciliationsStaff accountant1.40.72.1
Opex accruals & prepaidsSenior accountant1.41.42.8
FX rates & remeasurementSenior accountant1.40.82.1
Intercompany reconciliationSenior accountant2.11.23.4
Revenue cut-off reviewController2.32.54.7● critical path
Consolidation & eliminationsController3.41.04.4
Balance-sheet flux reviewController4.71.36.0● critical path
Management reporting packageHead of Finance6.00.96.9● critical path

Highlighted rows form the critical path — recomputed from the dependency graph, not asserted. Validation requires the path's length to equal days-to-close exactly; a "critical path" that doesn't is a diagram, not a measurement.

Balance-sheet flux — breaches of max($50K, 5%)

CloseLineMove Commentary
2025-08Deferred revenue+$834KThree multi-year prepays billed annually in advance
2025-10Cash−$1,400KQ3 bonus payout plus annual insurance premium
2025-11Prepaid expenses+$294KCOMMENTARY MISSING — close not certified
2025-11Accrued liabilities+$343KLegal settlement accrual per outside counsel range
2025-12Lease liabilities+$620KGPU capacity agreement commenced (embedded lease, ASC 842)

November's prepaid-expenses move breached materiality with no commentary attached. The engine refuses to certify that close until the line is explained — the control catching the gap is the demonstration. (December's lease line, incidentally, is the GPU embedded lease from the ASC 842 register commencing.)

Validation — re-run before every publish

Synthetic, seeded data (random.seed(1231)). Generator, DAG, and checks: github.com/Lumimama/finance/month-end-close.