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

75 lines
4.1 KiB
Markdown

# 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-015`~`REQ-018` / `BAT-011`~`BAT-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.