75 lines
2.9 KiB
Markdown
75 lines
2.9 KiB
Markdown
# BAT-016 Verification
|
|
|
|
## Status
|
|
- local-pass
|
|
- Verified At (KST): 2026-07-08 07:11 KST
|
|
|
|
## QC Owner
|
|
- 가웨인 direct recovery path; independent QC still recommended before merge because Kanban-based dev-reviewer was explicitly disabled by user instruction.
|
|
|
|
## Required Verification Mapping
|
|
| REQ-020 AC | Evidence |
|
|
|---|---|
|
|
| AC1 additive/idempotent persistence | `tests/test_review_decision_workbench.py::test_review_decision_and_reconciliation_schema_are_additive_idempotent`; DB safety smoke showed schema `11`, integrity `ok`. |
|
|
| AC2 review decision round-trip | `test_review_decision_round_trip_payload_sanitizes_sensitive_fields`. |
|
|
| AC3 reconciliation session round-trip/hub basis | `test_reconciliation_session_round_trip_and_report_integration`. |
|
|
| AC4 additive existing service payloads | Full pytest passed; report/workbench tests preserved; new fields are additive. |
|
|
| AC5 network MCP safe tools | MCP tool surface smoke found required review/session tools and no destructive delete/reset tools. |
|
|
| AC6 Streamlit workbench regression | Full pytest includes `tests/test_dashboard_app.py`; local pass. |
|
|
| AC7 operating indicators | `get_review_operating_indicators` included in MCP smoke and session test checks last reconciliation close time. |
|
|
| AC8 financial data safety | Payload sanitization test drops `raw_payload` and `file_path`; no real DB or raw evidence used. |
|
|
| AC9 regression gates | `ruff check .` and full pytest passed locally. CI/PR evidence pending. |
|
|
| AC10 baseline docs | `docs/data-model.md`, `docs/project-structure.md`, `docs/runtime-flows.md` updated. |
|
|
|
|
## Local Evidence
|
|
```text
|
|
python -m ruff check .
|
|
All checks passed!
|
|
|
|
python -m pytest tests/test_review_decision_workbench.py -q
|
|
.... [100%]
|
|
|
|
python -m pytest -q
|
|
........................ss......................ss... [100%]
|
|
|
|
python -m pytest tests/test_contract_regression.py -q
|
|
... [100%]
|
|
|
|
python -m pytest --ignore=tests/test_dashboard_app.py -q
|
|
....................ss......................ss... [100%]
|
|
|
|
python -m pytest tests/test_dashboard_app.py -q
|
|
.... [100%]
|
|
|
|
python scripts/ci_dashboard_http_smoke.py --host 127.0.0.1 --port 18501 --timeout 45
|
|
success=true, http_status=200, fixture=synthetic
|
|
|
|
python scripts/ci_db_safety_smoke.py --timeout 45
|
|
success=true, fixture_integrity=ok, restored_integrity=ok, operating_db_used=false
|
|
|
|
MCP surface smoke
|
|
close_reconciliation_session OK
|
|
get_review_operating_indicators OK
|
|
hold_review_decision OK
|
|
list_reconciliation_sessions OK
|
|
list_review_decisions OK
|
|
mark_review_recheck OK
|
|
release_review_decision OK
|
|
upsert_reconciliation_session OK
|
|
upsert_review_decision OK
|
|
tool_count 65
|
|
|
|
DB safety smoke
|
|
schema_version 11
|
|
integrity_check ok
|
|
review_decisions 0
|
|
reconciliation_sessions 0
|
|
```
|
|
|
|
## Residual Risk
|
|
- Independent dev-reviewer QC was not run because user prohibited Kanban. Treat PR review/CI as the next independent gate.
|
|
- Local verification passed, but GitHub Actions CI must still be checked after push.
|
|
|
|
## Verdict
|
|
- Local release-candidate.
|