fix(cli): block team workspace rclone sync - #855
Conversation
Signed-off-by: Drew Cain <groksrc@gmail.com>
Signed-off-by: Drew Cain <groksrc@gmail.com>
|
Claude finished @groksrc's task in 1m 17s —— View job PR Review: fix(cli): block team workspace rclone syncTasks
SummaryBoth blockers from the previous review have been addressed. The PR is ready to merge. Previous Blockers — Now Resolved1. Type annotations ✅ Both
2. Coverage gaps in All five previously-uncovered branches plus the exception path in
Team Checklist
Verdict: All blockers resolved. Architecture and guard logic are correct. LGTM. |
Signed-off-by: Drew Cain <groksrc@gmail.com>
|
Claude finished @groksrc's task in 1m 38s —— View job PR Review: fix(cli): block team workspace rclone syncTasks
SummaryThe third commit ( Both blockers from the first review were resolved in the second review cycle. This review confirms the final state is clean. Changes in Latest Commit
These are improvements: the new message is more accurate and the test is more resilient to terminal width variance. Team Checklist
Verdict: LGTM. No new issues introduced by the latest commit. Ready to merge. |
Signed-off-by: Drew Cain <groksrc@gmail.com>
|
Claude finished @groksrc's task in 2m 17s —— View job PR Review: fix(cli): block team workspace rclone syncTasks
SummaryThis review covers the final state of the PR after all 4 commits, including the most recent Previous blockers (type annotations, coverage gaps) were resolved in earlier commits and remain resolved in the current state. Guard Scope (4th Commit Change)The second review checked
The Minor Observation
The function is declared # bisync_project_command (line 210)
_require_personal_workspace(name, config) # WorkspaceInfo discarded
# bisync_reset (line 314)
_require_personal_workspace(name, config) # WorkspaceInfo discardedNot a bug — the function acts as a pure guard (exit on failure, return on success). But the return type slightly misleads: a reader might expect the workspace to be used downstream. The downstream code calls This is a nitpick, not a blocker. Team Checklist
Verdict: LGTM. The 4th commit correctly scopes the guard to the two dangerous bidirectional operations. All previous blockers remain resolved. Ready to merge. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad0b4031b7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Use the resolved workspace for rclone mount info
When a project is attached to a Personal workspace that is not the account/default workspace, this new guard correctly resolves and allows that workspace, but the result is discarded before the command fetches unqualified mount info and credentials. The following get_mount_info() call still has no X-Workspace-ID, so the rclone bucket can come from the default workspace while _get_cloud_project(name) is routed to the project workspace, causing bisync to read/write the wrong tenant bucket instead of the Personal workspace that was just approved.
Useful? React with 👍 / 👎.

Summary
Fixes #849.
Validation
uv run pytest tests/cli/cloud/test_project_sync_command.pyuv run ruff check src/basic_memory/cli/commands/cloud/project_sync.py tests/cli/cloud/test_project_sync_command.pyuv run ruff format --check src/basic_memory/cli/commands/cloud/project_sync.py tests/cli/cloud/test_project_sync_command.pyjust typecheck