# Phase 2C manual test script: proof suite and Phase 2 sign-off

For whoever signs off Phase 2 (HQ Finance, ideally with the auditor). About 15 minutes. 2C adds no new
screens: it proves the accounting engine and fixes what the proof found. Most of the proof is automated;
this script checks the evidence and the one fix people can see.

**Staff app:** http://localhost/church_acct_app/public/app
**Logins** (top of `database/seeders/TobasSeeder.php`): **hq.finance@toprc.test** (two-factor),
**hq.admin@toprc.test** (two-factor), **ikeja.pastor@toprc.test**.

Before starting, the local database must hold the demo church again (see the 2C hand-over note).

## A. The evidence

1. [ ] Open `docs/phases/phase-2-exit-evidence.md`. Each Phase 2 exit criterion (unbalanced entries
   impossible, closed periods reject postings, append-only ledger) and each section 14 invariant names the
   rule that enforces it and the test that proves it.
2. [ ] Optional, for a technical reviewer: run `php artisan test`. All 181 tests pass, including
   **WholeLedgerProofTest** ("every module posts a ledger that passes every invariant").

## B. The nightly ledger check

3. [ ] In a terminal, run `php artisan ledger:verify`. Every church reports **passed**.
4. [ ] As hq.finance, open the **Dashboard**: no red ledger notice.

## C. Member portal codes (the fault MariaDB found)

5. [ ] Open the member portal sign-in (http://localhost/church_acct_app/public/portal/{church slug}; the
   portal must be switched on under Setup), enter a member's email or phone and ask for a code.
6. [ ] Type a **wrong** code once: refused.
7. [ ] Type the **right** code: you are signed in. (Before the fix, the wrong attempt made the code expire
   at once, so the right one was refused too.)

## D. Sign-off

8. [ ] Phase 2 exit criteria accepted: ______________________ (name, date)
9. [ ] Reporting framework IFRS for SMEs confirmed with the auditor (D-033): ______________________
