Uh oh!
There was an error while loading. Please reload this page.
feat: sync-conflict guard + files copy-model visibility + rancher honesty (CLEAN-50) - #45
Merged
Merged
Conversation
…LEAN-50) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…CLEAN-50) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…honesty (CLEAN-50) Sync could silently overwrite S3 files edited after the pod's boot pull (delta push never checks S3 freshness). The API now records lastPullAt / lastSyncAt markers and answers 409 with an at-risk file list unless the operator confirms; the Files tab explains the S3-vs-pod copy model and surfaces per-file freshness; rancher's SOUL.md gets exact create/bind recipes and write_agent_file результат reminds about the required restart. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…nse (CLEAN-50) The generated client is the axios variant — the success member of its result union is a bare AxiosResponse without a `.response` field, so the conflict check must first narrow on `error !== undefined`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3 tasks
Uh oh!
There was an error while loading. Please reload this page.
maksymhryzodub-prog
deleted the
feat/CLEAN-50-agent-files-sync-safety
branch
September 7, 2026 12:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
CLEAN-50 — Mazda user report: SOUL.md edits "disappear" because the S3-vs-pod copy model is invisible and Sync pushes the pod's delta over S3 without ever checking S3 freshness (verified in runtime: mtime+size manifest push + orphan delete, no LastModified comparison).
Agent.lastPullAt(set on genuine boot: bridle-driven running transition, drift resurrect uses podstartedAt) +Agent.lastSyncAt(set after successful sync).POST /agents/:id/files/synccomputes at-risk S3 files (LastModified > max(lastSyncAt, lastPullAt − 60s)) and answers 409 + file list without syncing unlessconfirm: true. Legacy agents (null markers) keep pre-feature behavior. Admin UI shows a confirm dialog with the at-risk list; cancel leaves S3 untouched.httprecipes for agent creation and knowledge binding (both were always possible viaPOST /agents/PUT /agents/{id}— the narration-without-calls gap was missing recipes), a "two copies" section, andwrite_agent_fileresult now carries an explicit restart-required notice. Propagation rides existing infra: template reseed by source hash on API boot + template-file resync on agent restart.Design artifacts:
specs/008-agent-files-sync-safety/(spec, research, data-model, contracts, quickstart, tasks). Follow-up: CLEAN-51 (dedicated create/bind MCP tools).Test plan
api: jest 190/190 (incl. newsyncGuard.service.spec.ts— baseline math, null markers, margin, pass-through)apibuild + swagger regen;adminbuild + client regen🤖 Generated with Claude Code