iBilik Capital Project 06 - Disbursement & Collection Full v1.0

SCHEMA FREEZE
-------------
No new tables. No new columns. No migration SQL.

Complete lifecycle delivered
----------------------------
APPROVED Deal
 -> Disbursement Request
 -> Approval Authorities / Maker-Checker
 -> Actual Disbursement
 -> capital_deployments
 -> source_use_allocations (Investor Subscription source)
 -> Deal becomes ACTIVE on first posted disbursement
 -> Actual Collection
 -> Principal / Interest / Fee / Tax / Arrears / Unidentified allocation
 -> Waterfall line mapping
 -> arrears_ledger refresh
 -> Pool Eligibility handoff
 -> Accounting automatic-posting handoff

New pages
---------
/deal/funding-center.php
/deal/funding.php?id=...
/deal/disbursement-request.php?deal_id=...
/deal/disbursement.php?request_id=...
/deal/collection.php?deal_id=...
/deal/funding-health.php

New service
-----------
/src/Funding/DealFundingService.php

Controls
--------
- Disbursement request cannot exceed remaining approved principal.
- Approval Authorities generate sequential approval steps.
- DISBURSEMENT_REQUEST / DISBURSEMENT_APPROVE / COLLECTION_POST permissions enforced.
- Maker cannot approve or post own disbursement (Super Admin override).
- Actual disbursement requires a Legal Entity bank account with GL mapping.
- Source-to-use allocations must exactly equal the disbursement amount.
- Project 06 allows INVESTOR_SUBSCRIPTION as original capital source. FUNDER_DRAWDOWN is intentionally Project 08.
- Recovered principal is NOT restored directly to original subscription availability; recycling remains under Pool lineage.
- Collection allocations must equal cash received.
- Principal collection cannot exceed outstanding Deal principal.
- Waterfall mapping drives arrears.
- capital_ledger is written for both disbursement and collection.
- Existing Accounting scanner will pick up capital_deployments and collections for automatic journals.

Deploy
------
Copy files by path. No MySQL required.
Test /deal/funding-health.php first.
