A client-trust review period asks two separate questions: did the declared trust balances reconcile, and are the matter's dated obligations still open. This pack answers both as evidence instead of as two spreadsheets nobody cross-checks. Stage 1 recomputes a three-way trust reconciliation from a declared bank balance, trust-ledger balance, and per-client ledger total, and gives the period exactly one verdict. Stage 2 sweeps the declared docket against caller-declared roll rules and gives every record exactly one status, so a period that reconciles cleanly but leaves a filing deadline open stays visible rather than getting lost between two unrelated checks. Stage 3 wraps the receipt trail in a shareable evidence bundle stamped with the tier label the caller's declared gate results qualify it for. Every input is declared: the pack reads no bank feed, no accounting system, and no court docket, so it evidences whether the declared figures reconcile and whether the declared deadlines are met, never that the declared balances or filings are real.
check_iolta_three_way_reconciliation{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "check_iolta_three_way_reconciliation",
"arguments": {
"reconciliation_tolerance_minor": 100,
"statement_period": {"start_date": "2026-06-01", "end_date": "2026-06-30"},
"bank": {"ending_balance_minor": 5000000, "statement_date": "2026-06-30"},
"trust_ledger": {"ending_balance_minor": 5050000, "as_of": "2026-06-30"},
"client_ledgers": [
{"client_id": "client-A", "ending_balance_minor": 3000000, "as_of": "2026-06-30", "entries": [
{"date": "2026-06-05", "amount_minor": 200000, "description": "Retainer deposit"},
{"date": "2026-06-20", "amount_minor": 100000, "description": "Additional retainer"}
]},
{"client_id": "client-B", "ending_balance_minor": 2050000, "as_of": "2026-06-30", "entries": []}
],
"outstanding_items": [
{"type": "deposit_in_transit", "date": "2026-06-29", "amount_minor": 100000, "description": "Client A retainer deposited 6/29"},
{"type": "uncleared_check", "date": "2026-06-15", "amount_minor": 50000, "description": "Disbursement check #1042"}
]
}
},
"id": 1
}
sweep_docket_deadlines{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "sweep_docket_deadlines",
"arguments": {
"as_of_date": "2026-08-08",
"due_soon_days_threshold": 7,
"roll_rule": {"roll_weekends": true, "roll_direction": "forward", "holiday_dates": ["2026-08-10"]},
"records": [
{"date": "2026-08-08", "action": "File answer", "type": "filing", "source": "court order", "done": false},
{"date": "2026-08-09", "action": "Serve discovery responses", "type": "discovery", "source": "FRCP 26", "done": false},
{"date": "2026-07-01", "action": "Initial disclosures", "type": "discovery", "source": "FRCP 26(a)", "done": true},
{"date": "2026-09-15", "action": "Pretrial conference", "type": "hearing", "source": "scheduling order", "done": false}
]
}
},
"id": 2
}
chain.parent_hashes already carries the Stage 1 receipt's hash under the standard's linear parent-threading, wrapped in one shareable bundle stamped with the SPEC.md §SIDECAR.1 tier label the caller's declared gate results qualify it for. The label re-expresses declared gate outcomes and mints no new trust claim. Final stage.assemble_ocg_evidence_bundle{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "assemble_ocg_evidence_bundle",
"arguments": {
"artifact_tool_id": "art-588-docket-deadline-sweep",
"artifact_execution_hash": "<execution_hash from Stage 2>",
"gate_results": {
"envelope_well_formed": true,
"execution_hash_recomputes": true,
"chain_execution_valid": true,
"mandate_gates_valid": true,
"compute_integrity_proof_valid": false
},
"proof_refs": []
}
},
"id": 3
}
INCOMPLETE is never treated as a pass.
INCOMPLETE, which is about missing top-level inputs rather than one bad record.