RFD for symposium uninstall - #278
Conversation
Define receipt-backed ownership, guarded hooks, bounded cleanup, legacy migration, reporting, and the implementation plan. Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
Co-authored-by: Codex <codex@openai.com>
| POSIX portable project: | ||
|
|
||
| ```sh | ||
| if [ -x ${CARGO_HOME:-$HOME/.cargo}/bin/cargo-agents ]; then exec ${CARGO_HOME:-$HOME/.cargo}/bin/cargo-agents hook <AGENT> <EVENT> --managed-id <UUID>; elif command -v cargo-agents >/dev/null 2>&1; then exec cargo-agents hook <AGENT> <EVENT> --managed-id <UUID>; else exit 0; fi |
There was a problem hiding this comment.
careful here, a path with spaces will break, say the username is "John Doe" instead of a more classical "johndoe"
|
|
||
| Implementation has not begun. The steps are dependency-ordered. | ||
|
|
||
| ### Step 1: Establish ownership primitives |
There was a problem hiding this comment.
This step won't ship anything and seems huge, so feels a bit untestable. What about shipping an e2e solution for one specific agent, say Claude?
| - unavailable or indeterminate Git tracking preserves the file as a blocker; and | ||
| - reports identify the file and structural locator without secrets. | ||
|
|
||
| Acknowledgement may transfer an entry to the user. It cannot make a live unguarded `cargo-agents` hook or MCP invocation safe for package removal. That reference must be removed manually or with `--include-tracked`. |
There was a problem hiding this comment.
Hooks are saved as a shell command, so the guard fits around them. MCP entries are saved as command plus args and run directly, so there is no place for a guard. After cargo uninstall symposium, every stale MCP entry fails to start in every agent, which is the error the Motivation section opens with.
The plan is "run cargo agents uninstall first", but Motivation says people go straight to cargo uninstall symposium today. Once that's done the cleanup tool is gone and it's not clear to me what to do next.
Can we get the recovery steps written down, and a line on why MCP entries do not get a guard? Also I feel worth moving into Drawbacks, since Scope lists hooks and MCP together and reads like both are covered.
| ## Acknowledging a blocker | ||
|
|
||
| `--acknowledge <BLOCKER-ID>` preserves an artifact and transfers responsibility to you. The report gives its location and a redacted manual edit. This is not `--force` and never weakens ownership checks. | ||
|
|
||
| The ID stays stable for the same artifact kind, adapter, normalized target, and structural location. Changing the artifact invalidates the acknowledgement. | ||
|
|
||
| An unguarded hook or MCP server that still launches `cargo-agents` cannot be acknowledged into a ready result. Remove that live reference before uninstalling the package. |
There was a problem hiding this comment.
I'm not sure this is super useful. I think it should just be --force.
| ## Blockers and acknowledgements | ||
|
|
||
| A blocker ID is stable over: | ||
|
|
||
| ```text | ||
| artifact type + adapter + normalized target + structural locator | ||
| ``` | ||
|
|
||
| The acknowledgement stores that locator and the artifact's current identity, not only its display ID. Moving the locator creates a new blocker; changing the artifact invalidates acknowledgement. | ||
|
|
||
| Acknowledgement preserves the artifact, records user responsibility, retires Symposium's claim, prints a redacted manual edit, and makes later installation treat the occupied slot as a structural collision. | ||
|
|
||
| Successful finalization may delete acknowledgements because collision detection inspects the occupied entry. There is no `--force`: bypassing identity checks could delete user or third-party state. |
There was a problem hiding this comment.
I think we should just not do this. If uninstall isn't possible "safely", then the user should pass --force. I don't think it makes a lot of sense to not have an "all or nothing"
What does this PR do?
Proposes
cargo agents uninstallfor removing Symposium-managed integrations beforecargo uninstall symposium.Design covers:
RFD split into focused ownership, hook activation, cleanup engine, command references, and managed integrations chapters.
Disclosure questions
AI disclosure.
Questions for reviewers.