feat: persist review workbench decisions (#1)
Merge dcy-012 / REQ-020 / BAT-016 implementation after green CI.
This commit is contained in:
+66
-14
@@ -1,22 +1,74 @@
|
||||
# BAT-016 Verification
|
||||
|
||||
## Status
|
||||
- Not started.
|
||||
- local-pass
|
||||
- Verified At (KST): 2026-07-08 07:11 KST
|
||||
|
||||
## QC Owner
|
||||
- dev-reviewer / dev-qc under delivery-runner orchestration.
|
||||
- 가웨인 direct recovery path; independent QC still recommended before merge because Kanban-based dev-reviewer was explicitly disabled by user instruction.
|
||||
|
||||
## Required Verification
|
||||
- REQ-020 AC 1-10 must be verified with direct evidence.
|
||||
- `ruff check .` must pass.
|
||||
- Full pytest must pass.
|
||||
- MCP contract/regression and network MCP representative smoke must pass.
|
||||
- Streamlit AppTest and HTTP smoke must pass.
|
||||
- DB safety/migration regression must pass.
|
||||
- Baseline document updates must be inspected.
|
||||
## 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
|
||||
- Pending.
|
||||
|
||||
## Evidence
|
||||
- None yet.
|
||||
- Local release-candidate.
|
||||
|
||||
Reference in New Issue
Block a user