2.0 KiB
Reflection: Remote Agent Success Is Not a Database Commit
Trigger
Two direct-MCP vertical-slice runs reached a remote SuperAgent success state without creating an MCP submission or committed Finance facts.
Expected Behavior
End-to-end acceptance should require all authoritative signals: an MCP committed/already_committed receipt, consumed one-time grant, accepted processing state, and matching Finance version/current/fact rows.
Actual Behavior
The remote orchestration platform considered the run complete even though its cached MCP tool state prevented the business submission. The local processing state also lacked an automatic database mapping for the runner's delivery_missing outcome.
Root Cause
- Weak gate
- Stale external tool discovery
- Missing terminal-state mapping
Evidence
- Files:
.project-docs/50-evidence/topics/2026-07-29-live-synthetic-xml-vertical-slice.md,arr_processing/runner.py,arr_processing/postgres.py - Session/thread: live no-PII upload test on 2026-07-29
- Command output: remote status
success; submission/version/current/record counts all zero; protected cleanup ended asPROCESSING_RESULT_MISSING - Docs involved: current state, evidence index, commitments, stale items
Lesson
Treat orchestration status as a progress signal, not the system-of-record outcome. Every live test must cross-check the one-time grant, MCP submission ledger, processing terminal state, Finance facts, and downstream current pointer before reporting success or enabling a mutation endpoint.
When remote completion lacks a business result, revoke any remaining grant and terminalize the exact run under identity locks; never leave a late submission path open.
Action
- Update docs
- Add check/eval
- Record the missing automatic terminal-state mapping for separate implementation.
Promotion
Promoted to the live E2E evidence record, current-state risk, future commitment, and stale-item tracking. No new product ADR is required.