Repository navigation
feat(contacts)!: contacts unlink needs --from, the person the identity leaves - #2848
Merged
Merged
Conversation
…y leaves Without it the command is refused (person.from-required) and the message names who holds the identity and the command to run; an identity on someone else is refused with identity.held-elsewhere, as memo's people unlink is. person:me names the owner. Also bumps mongoose in bench/stemming to 9.12.1 (Dependabot alert 29, SEC-183). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erson> The vocabulary now gives --from one meaning, a person, so the bot flag's option-role baseline entry goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…om to add, and from is required in the type - The missing --from refusal names `provider:id`, the person it sits on and `--from person:<uid>` to run it again with; a lone identity still answers "not linked to anyone" first. - `services.people.unlink` takes `from: string`, so a caller's typecheck catches the change; `person:me` goes through withOwner, which refuses an owner with no identity and says how to mark one. - The help example passes `--from person:me`; parity.json's `--from` says `<person>` and both meanings. - The changelog fragment is named after the branch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
leemour
force-pushed
the
fix/contacts-unlink-from
branch
from
November 11, 2026 00:07
3e6617a to
94f4c5a
Compare
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.
Why
memo people unlinktook a colleague's mailbox off the colleague instead of off the owner, because it never asked which person the identities leave (BUG-709). cli-core #2841 added the "from whom" check to the store, and memo #806 makes--fromrequired. tg, max and wacontacts unlinkstill took an identity off whoever held it. The owner approved the same check there (NEED-2525 A), with--fromrequired.What
contacts unlink <person> --from person:<uid>|person:me(andservices.people.unlink(person, { by, from })). Without--fromit is refused withvalidation_error, reasonperson.from-required. The message names who holds the identity and gives the command to run with their--from. An identity on someone else is refused withidentity.held-elsewhere, and nothing moves.--from <person>(cli-base chore: release 0.148.2 #563, NEED-2530 A).bot search messages --fromnow shows<person>, and itsoption-rolebaseline entry goes.parity.jsonlists--fromforcontacts unlink;docs/dev/STANDARD.mdis regenerated.bench/stemming/pnpm-lock.yamlonly, for Dependabot alert 29 (SEC-183, NEED-2527 A).Testing
vitest runon cli-base 0.96.0 (11179 passed, 16 skipped). This includes fix(permissions): deny contact-context body reads with messages #562's refusal of the owner's real home.ci:quick,lint,docs:check, and the command lint (0 new violations).--fromand names the holder and the command; it refuses a wrong--fromandperson:mewhen the identity sits elsewhere. The CLI test reads the--fromout of the refusal and unlinks with it.🤖 Generated with Claude Code