Files
jarca-ledger-mcp/docs/batches/bat-008_20260630_asset-snapshots-manual-assets-read-mcp/verification.md
T

3.7 KiB

BAT-008 Verification

Verification summary

Status: PASS

Evidence collected against synthetic/temp data only. No production ledger DB mutation or real financial files were used.

Acceptance criteria mapping

REQ-009

  • AC-1: PASS
    • Evidence: tests/test_asset_snapshots.py::test_asset_snapshot_schema_is_additive_and_idempotent
    • db.py adds manual_assets and asset_snapshots via additive/idempotent schema + migration path.
  • AC-2: PASS
    • Evidence: create_manual_asset/list_manual_assets service path + synthetic probe output includes name, valuation_amount, valuation_date, liquidity_bucket, source_note.
  • AC-3: PASS
    • Evidence: create_asset_snapshot stores basis date/source target/amount/bucket/source note; test_snapshot_rows_are_append_only_and_timeseries_uses_same_formula proves append-only readback.
  • AC-4: PASS
    • Evidence: valuation_policy and authority_source fields distinguish accounts.last_balance, manual_assets, and asset_snapshots; docs updated in docs/data-model.md and docs/runtime-flows.md.
  • AC-5: PASS
    • Evidence: valuation helper formula is asset_buckets - loan; synthetic probe returned 303000000 - 120000000 = 183000000; unvalued items are excluded rather than inferred.
  • AC-6: PASS
    • Evidence: tests/test_asset_snapshots.py::test_asset_liquidity_report_empty_new_tables_preserves_req005_fallback confirms empty new tables preserve REQ-005 path with source='accounts.last_balance'.
  • AC-7: PASS
    • Evidence: docs/data-model.md, docs/runtime-flows.md, and docs/project-structure.md now document the new tables, authority-source rule, and month-end snapshot flow.

REQ-010

  • AC-1: PASS
    • Evidence: server.py exposes get_asset_snapshot_report; synthetic probe returned basis_date, per-bucket totals, liabilities, net worth, included/excluded items.
  • AC-2: PASS
    • Evidence: server.py exposes get_net_worth_timeseries; service/test coverage proves identical formula per basis date.
  • AC-3: PASS
    • Evidence: server.py exposes list_manual_assets; synthetic probe returned name/value/date/bucket/source note payloads.
  • AC-4: PASS
    • Evidence: dashboard/app.py caption explicitly states shared valuation helper; service.py centralizes calculation for dashboard + MCP.
  • AC-5: PASS
    • Evidence: same fallback regression test as REQ-009 AC-6 plus get_asset_liquidity_report preserves existing keys while adding optional explanatory fields.
  • AC-6: PASS
    • Evidence: docs/interface-contract.md, docs/runtime-flows.md, and docs/project-structure.md updated for read MCP contract and dashboard/MCP alignment.

Requirement state decision

  • REQ-009: Implemented promotion confirmed.
  • REQ-010: Implemented promotion confirmed.

Validation evidence

  1. python -m py_compile jarca_ledger_mcp/*.py dashboard/app.py → pass
  2. pytest tests/test_asset_snapshots.py tests/test_service.py tests/test_contract_regression.py -q → pass (................. [100%])
  3. hermes mcp test jarca-ledger → pass; stdio connected, 51 tools discovered, including the three new BAT-008 read tools
  4. synthetic service probe → pass; confirmed live-authority fallback, stored-snapshot read path, and net-worth timeseries output

Remaining issues

Hard blockers

  • None identified from the collected implementation evidence.

Non-blocking follow-up

  • jarcaledgerqc final re-check returned: PASS, REQ-009/REQ-010은 이제 Implemented로 전환해도 됩니다.
  • fresh Streamlit browser smoke on http://127.0.0.1:8511 rendered schema v9, 자산 유동성 현황, and produced no browser console JS errors.
  • Snapshot creation/manual-asset CRUD MCP mutations remain intentionally out of scope for BAT-008.