내부 filesystem observation/invalidation (MCP fs/watch 없음) - #60
Merged
Merged
Conversation
…ards. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
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 free
to 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
InProcessRunner)가 workspace root별 recursive watcher를 두고,read/find/version/apply_patch첫 호출에서 filesystem observation을 시작합니다. 이벤트는epoch/seq와Create/Modify/Remove/Rename/ResyncRequired무효화 힌트일 뿐이며 MCPfs/watch도구가 아닙니다.expected_versions/VERSION_CONFLICT입니다. watch를 구독하지 않거나 이벤트를 버려도 외부 수정 후apply_patch(expected=v1)는 conflict이고 디스크는 외부 수정본을 유지합니다.PathSandboxchecks remain authoritative for file access.STALE_READ, MCP 도구, UDS watch 이벤트,source원인 분류, 이벤트 원장, lossless history, watch로 권한 결정.Test plan
cargo test -p codespace-runner --test fs_watch— 외부 modify, create/remove/rename, coalesced write 후 현재 내용 read, overflow/Lagged→ResyncRequired, watcher 재시작 시 새 epoch, restart 실패 시 dead watcher 없음, 워크스페이스 밖 미방출, leaf symlink replacement가 이름을 invalidate하면서read는SYMLINK_REJECTED, discarded watch →VERSION_CONFLICTcargo test -p codespace-server --test security conflict— 기존version_conflict_and_context_mismatch_are_not_applied유지 + discarded watch 불변식crates/codex-runtime--lockedcheckcargo fmt,cargo check --offline --all-targets,cargo clippy --offline --all-targets -- -D warnings,./scripts/check-no-model-deps.sh,python3 -B scripts/check_docs.py check