mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-10-26 05:30:18 +00:00
d4ef263d6e
* feat(gitops): retry resumes at the failed stage An operator retry previously always re-issued a fetch, even when the source had already accepted a generation whose dispatch never landed. retry() now reads the live pointer evidence (accepted generation, active direct target, applied pointer not yet caught up) and routes the request to the stage the evidence actually stopped at: a persisted source-stage failure or nothing pending goes to the fetch arm, an undelivered accepted generation goes straight through the shared dispatch boundary, and suspended/in-flight/recovering rows defer to the projection instead of starting work beside it. Blocked dispatch refusals come back as blocked outcomes with per-refusal advice; a refused dispatch reserves nothing. * feat(gitops): resume triggers immediate source re-evaluation Clearing a suspension previously left the source idle until its next poll or retry cursor. The resume route now fires SourceController.evaluateNow() fire-and-forget after the service returns: the woken source is re-evaluated immediately through the same eligibility guards the due-scan applies (manual, suspended, missing, or in-flight rows are skipped, and a tick that already owns the application is never queued behind itself). The response still reports that suspension was cleared, not the outcome of a reconcile that has not finished yet. evaluateNow absorbs evaluation failures by design and logs them; the route's catch covers only a store error before any evaluation could start. * test(gitops): cover suspension semantics across resume and dispatch Pins the three coexistence rules the stage-aware retry and resume wake rely on: a rollout pause survives the whole suspend/resume cycle on both application and target rows (suspension is a decision about source work, not a rollout pause); an interrupted apply's terminal still lands after suspension (suspension gates new work, never the accounting of work that already committed); and in-flight deploy transitions, tracked on the target row alone, stay admissible while the source is suspended. * test(e2e): suspend and resume a Git source over the API Drives the full journey against a local git server: a configured automatic source pulls, suspension stops reconciliation (a pull while suspended is refused outright), and resume is re-evaluated within seconds rather than at the next scheduled cursor. Polling is parked at the slowest floor the settings allow and restored afterwards.