Five of the 20 December recs aren't ready to sign. The other 15 are clean, and every rec ties internally. The unexplained difference across all recs nets to ($68K), almost all of it in sales tax payable.

In order of severity:

1. **Accrued payroll, 2120 (bookkeeping gap):** The rec uses a GL balance of ($58K), but the trial balance shows ($72K). It was prepared against the wrong balance, so it proves nothing about the current one. Marcus Oyelaran needs to re-run it.
2. **Sales tax payable, 2150 (bookkeeping gap):** The GL is ($92K) and the subledger is ($23K). There are no reconciling items, which leaves ($69K) unexplained against a $5K threshold. Marcus Oyelaran needs to find the cause and either list the missing item or post a correcting entry. This one blocks sign-off.
3. **Vendor rebates receivable, 1150 (policy breach):** Marcus Oyelaran both prepared and reviewed it. Dana Whitfield needs to assign a second reviewer.
4. **Inventory, 1200 (policy breach):** The rec is still at Prepared and has not been reviewed. Dana Whitfield needs to complete the review.
5. **Accounts receivable - trade, 1100 (bookkeeping gap):** RI-05, ($14K), is an unapplied Lumen Retail receipt with no remittance advice, and it is 127 days old. Priya Raman needs to apply or book it and record why. The data doesn't say who at Lumen Retail can supply the remittance.

The full note is in `output/recs-note.md`. The script's figures are in `output/recs.json`.