feat(people): add reversible profile merges - #655
Conversation
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
|
@wesm ready for you |
|
roger |
c8d91db to
4baa6b0
Compare
roborev: Combined Review (
|
4baa6b0 to
906aa6b
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
Curated profiles need a safe way to consolidate duplicate people without losing their original lineage. Add atomic merge and split records that support exact and partial restoration across SQLite and PostgreSQL, and preserve the history in complete subset exports. Follow-up fixes included in this squash: - fix(people): close fully split merge lineage - fix(people): close chained split lineage - fix(people): prune incomplete split packet chains - fix(people): preserve chained split profile data - chore(api): refresh web conflict schema - chore(store): share friend relationship literal - fix(people): restore split and conflict state - fix(people): preserve decisions and closed merge history Generated with Codex Co-authored-by: Wes McKinney <wesmckinn+git@gmail.com> Co-authored-by: Codex <codex@openai.com>
ea5b3eb to
e78e5bb
Compare
roborev: Combined Review (
|
What changed
Why
Two profiles for the same human could not be joined once both had been promoted without deleting one side and losing curated data. There was also no reliable way to undo a mistaken join. This adds a human-controlled, auditable path in both directions without reusing IDs or published UIDs.
Usage
Repeat
--participantwhen splitting more than one absorbed lineage.Closes #638