Files
jarca-ledger-mcp/docs/batches/bat-014_20260703_adapter-surface-narrowing-baseline-refresh/verification.md
T

4.1 KiB

BAT-014 Verification

Verification summary

Status: PASS

All required code-path checks for BAT-014 passed, and local browser-level screenshot/DOM evidence was successfully captured against a synthetic fixture DB. No production ledger DB, real financial statement files, passwords, or raw financial payloads were used.

Acceptance criteria evidence

AC-1. MCP contract/helper seam and Streamlit page/domain gateways exist

  • Evidence:
    • jarca_ledger_mcp/adapters/mcp/tool_contracts.py added and adapters/mcp/server.py now calls contracts.*.
    • search_files('*_gateway.py') under adapters/streamlit returned 9 gateway/aggregator files.

AC-2. dashboard/app.py no longer uses a flat broad gateway surface

  • Evidence:
    • search_files(pattern='service\\.', path='dashboard', file_glob='app.py') returned 0 matches after rewiring.
    • Dynamic hot-reload lookup now targets passed gateway modules (categorization_gateway, transfers_gateway) instead of a flat service binding.

AC-3. Regression, adapter verification, and browser smoke pass

  • python3 -m py_compile jarca_ledger_mcp/adapters/mcp/*.py jarca_ledger_mcp/adapters/streamlit/*.py dashboard/app.py → PASS
  • pytest -q tests/test_dashboard_app.py → PASS (....)
  • pytest -q → PASS (........................ss...............ss...)
  • hermes mcp test jarca-ledger → PASS, 56 tools discovered
  • .venv/bin/python scripts/streamlit_browser_evidence.py → PASS
    • Output dir: docs/batches/bat-014_20260703_adapter-surface-narrowing-baseline-refresh/evidence/run-20260703-100358/
    • Artifacts: overview.png, rules.png, transfer-review.png, import.png plus matching *.dom.html and manifest.json
    • Cleanup check: search_files('chrome-profile-*') under the run dir returned 0 results after the retry-cleanup fix

AC-4. Baseline docs, discovery metadata, and BAT-local evidence tooling reflect completion

  • Evidence:
    • docs/project-structure.md updated with new owning services, parser seam, MCP contract helper, and Streamlit page/domain gateways.
    • docs/runtime-flows.md updated with import/parser seam, MCP contract routing, and dashboard gateway flow.
    • docs/runbooks/streamlit-browser-evidence.md now points at the BAT-014 evidence root and includes 요약 in the default capture set.
    • dcy-011 metadata and close-out notes updated to reference REQ-015REQ-018 / BAT-011BAT-014 completion.

Browser evidence details

Evidence source: docs/batches/bat-014_20260703_adapter-surface-narrowing-baseline-refresh/evidence/run-20260703-100358/manifest.json

Captured pages

  • 요약
    • Screenshot: overview.png
    • DOM: overview.dom.html
    • Evidence text included 📊 요약, 가계부 운영 대시보드, and the synthetic fixture DB path under the BAT-014 evidence directory.
  • 분류 규칙
    • Screenshot: rules.png
    • DOM: rules.dom.html
    • Evidence text included ⚙️ Rule Engine, 분류 규칙, and seeded default categorization rules.
  • 확인필요 큐
    • Screenshot: transfer-review.png
    • DOM: transfer-review.dom.html
    • Evidence text included 🔁 Transfer Review, KB↔토스뱅크 확인필요 큐, and a synthetic transfer-review row for 2026-06-29 / SYNTHETIC_TRANSFER / 120,000원 / 이체 / 확인필요.
  • Import
    • Screenshot: import.png
    • DOM: import.dom.html
    • Evidence text included 📥 Statement Import, Toss Securities import copy, and Toss Bank import copy.

Automation script close-out

  • Script: scripts/streamlit_browser_evidence.py
  • Behavior:
    • Generates a synthetic fixture DB under the BAT-014 evidence run directory.
    • Starts Streamlit against that fixture DB only.
    • Uses local Chrome DevTools Protocol to capture screenshots and DOM snapshots.
    • Writes manifest.json with page/url/path/byte-size evidence.
    • Retries Chrome profile cleanup and leaves only the intended evidence artifacts in the final run directory.

Safety boundary

  • Synthetic/temp DBs only.
  • No destructive migration.
  • No production ledger DB mutation.
  • No real statement files, passwords, or raw payloads in screenshots, DOM snapshots, or manifest output.