Skip to content

Require explicit source scope and historical checks before no-change refreshes - #96

Merged
obsessixnv merged 2 commits into
mainfrom
fix/recurring-source-scope
Sep 16, 2026
Merged

obsessixnv merged 2 commits into
mainfrom
fix/recurring-source-scope

Conversation

@obsessixnv

@obsessixnv obsessixnv commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

What

Recurring refreshes could treat unconfigured source identifiers as exclusions and declare no change from matching dates or totals. Generated prompts now require explicit source scope, retain in-scope zero-metric rows, and check historical records or immutable provenance before recording source_not_updated. Ambiguous scope or an incomplete comparison blocks the refresh.

Existing saved prompts are unchanged. Regenerate the recurring prompt after deploying this change, with any intended exclusions stated in the source bindings.

Checklist

  • npm test passes, including regression coverage for scope and historical corrections before branch selection
  • bash test/run-integration.sh passes; browser tests were not run locally because this changes prompt generation and has no browser behavior change
  • Nothing renders agent HTML on the dashboard origin; iframe policies are unchanged
  • Data-update documentation updated
  • No new source files requiring SPDX headers
  • No secrets or customer data in the diff

@obsessixnv
obsessixnv merged commit 8a3d08c into main Sep 16, 2026
5 checks passed
@obsessixnv
obsessixnv deleted the fix/recurring-source-scope branch September 16, 2026 12:13
obsessixnv added a commit to ElcanoTek/fleet that referenced this pull request Sep 16, 2026
…#1518)

## What changed, and why

Scheduled runs could lose completion evidence because their durable tool
transcript contained the 4,000-byte UI preview. They could also report
success after ignoring verifier findings, or dead-letter after a
provider failure even though a preceding tool step had completed
successfully.

Record complete redacted tool results before display truncation and
project enclosing status/version fields before deep metric profiles.
Recheck verifier repairs, with at most three reviews; unresolved
findings and malformed or unavailable verification prevent success.

Resume retryable provider failures from a completed step's input,
retaining tool results and usage instead of restarting the original tool
sequence. Recovery remains suppressed if a tool started in the failed
step or an earlier tool result indicated failure. Preserve iteration
limits, remove provider-specific reasoning from replay, recover
structured SSE status codes, and retain bounded redacted diagnostics.
Authentication and validation errors stay terminal.

## How you verified it

- Regression tests pass for complete evidence through the
core/scheduled/verifier boundary, bounded repair reviews, malformed
verdicts, completed-write fallback without duplicate execution,
reasoning removal, preserved iteration limits, provider status
classification, and redaction.
- Release compilation, tagged vet, lint, the full Go suite, and the full
race suite pass against isolated local PostgreSQL databases. A verbose
database smoke test confirms PASS rather than SKIP. `make govulncheck`
reports no reachable vulnerabilities.
- `make ci-web` passes under Node 24: dependency audit, lint, typecheck,
1,639 tests across 153 files, and production build. Built-in guides and
web copies are synchronized.
- The live-browser CI failure was traced to the fake model replaying its
worker script for the independent verifier. A new regression first
reproduced invalid verdicts for all five scheduled/A2A completion
fixtures; it now passes after adding opt-in non-streaming fixture
responses. Both fake-model packages pass with `-race`; release
compilation and the full lint gate pass on the fixture patch.
- All CI checks pass on `51c930ba`, including the live scheduled-task
browser journey, mocked browser suite, full Go race lane, CodeQL,
Semgrep, and container vulnerability scan.
- Existing contained-panic coverage continues to require suppression of
uncertain tool replay.

## Scope and deviations

The runtime remains general purpose. Source-scope and
historical-correction rules live in the companion Pages and bundle
changes: ElcanoTek/pages#96 and ElcanoTek/elcano-config#145. No customer
schedules, source data, page schema, connector permissions, or network
policy are changed.

ADR-0065 narrows ADR-0035 only at a completed-step checkpoint.
Verification now fails closed when configured; this can make an
unavailable verifier fail a run that previously appeared successful.

---

- [x] Title and behavior description are written for release notes
- [x] Design note and operator guides updated
- [x] ADR added for the completed-step recovery invariant
- [x] Diff is scoped to reliable task completion and recovery
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant