Give Reflection an evidence-led learning loop - #47
Conversation
Co-authored-by: Möbius Agent <mobius-agent@users.noreply.github.com>
|
Review completed against exact merged head I reviewed the unattended-run lifecycle, overlap lock placement, evidence staging and freshness manifest, experiment/learning ledgers, question handoff, privacy-safe tool-friction aggregation, model-usage receipts, and report contract. The no-overlap lock is acquired before mutable run inputs are cleared, the evidence bundle fails closed on stale sources, questions remain declarative/non-blocking, and retained diagnostics avoid raw command/transcript content. One blocker was repaired before merge: missing provider cost was being coerced to zero in the friction report, which mislabeled unreported cost as free. Cost totals and per-run values now remain explicitly unknown unless a provider reported them, with a reported-run count and regression coverage. Full app suite: 41 Node tests + 101 Python tests passing, plus shell/Python syntax gates. |
Summary
Why
Reflection needs enough scaffolding to work like a thoughtful maintainer: inspect recurring failures, interview the agents that did the work, choose the smallest owning fix, record a hypothesis, and revisit the result later. The ledgers are evidence and continuity for intelligent judgment—not a metric optimizer or a new dashboard.
This is a distinct follow-up to #46. That change correctly removed effort controls and persistent run telemetry from the user interface; this one builds the private learning machinery behind the simpler surface and preserves provider-default effort.
Validation
npm test— 41 JavaScript tests and 100 Python tests passed, including shell and Python syntax checks