# US 11,907,192 B1 · Systems and methods for artifact peering within a multi-master collaborative environment

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,192 B1
- Document ID: US11907192B1
- Status: Granted
- Kind: B1
- Application number: 18/070,909
- Filed: 2022-11-29
- Granted: 2024-02-20
- Earliest claimed: 2019-11-01
- Assignees: Palantir Technologies Inc.
- Applicants: Palantir Technologies Inc.
- Inventors: Allen Chang; John Carrino; David Xiao; Timothy Wilson
- Web page: https://patentgrep.com/patent/US11907192B1

## CPC

- G06F 16/2237: {Vectors, bitmaps or matrices}
- G06F 40/197: Version control (for software G06F8/71)
- G06F 1/04: Generating or distributing clock signals or signals derived directly therefrom
- G06F 16/1734: {Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs}
- G06F 16/182: Distributed file systems
- G06F 16/2322: {using timestamps}
- G06F 40/166: Editing, e.g. inserting or deleting
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods are provided for master-to-master OT-based artifact peering. A “master-to-master” architecture for artifacts is implemented in a network comprising a plurality of nodes and clients, where no node is designated a “master” or “primary” for a given artifact. A first node receives a subset of remote proposed operations from a second node and determines if a conflict exists between the received subset of remote proposed operations and at least one of a plurality of locally-proposed operations. The first node resolves the conflict based on a total-ordering agreed upon between the first node and the second node. The first node transforms at least one operation, either received or locally-proposed, based on the resolved conflict. The first node than updates a local log to include the transformed operation.

## Claims

### Claim 1

A system for artifact peering, comprising:
a first node storing a local log and a shadow log, wherein the local log stores a set of operations to be applied to an artifact, and the shadow log stores operations proposed from one or more different nodes, each branch of the shadow log storing operations from a particular client or a particular node;
wherein the first node comprises one or more processors and a memory storing instructions that, when executed by the one or more processors, cause the processors to:
maintain a local vector clock associated with the first node and a copy of a vector clock associated with a second node communicatively coupled to the first node;
receive a local proposed operation from the first node;
receive a remote proposed operation to the artifact from the second node;
determine a concurrency between the local proposed operation and the remote proposed operation;
add the local proposed operation to the local log;
add the remote proposed operation to a branch of the shadow log to represent the concurrency;
perform the local proposed operation;
perform a transformed version of the remote proposed operation in response to performing the local proposed operation; and
append the transformed version of the remote proposed operation to the local log following the local proposed operation.

### Claim 2 (depends on 1)

The system of claim 1, wherein the instructions, when executed by the one or more processors, further causes the processors to:
increment a logical timestamp associated with the first node for each local proposed operation;
increment a logical timestamp associated with the second node for each remote proposed operation, and
in response to determining that a vector clock associated with the first node is less than a vector clock associated with the second node, determining the transformed version of the remote proposed operation.

### Claim 3 (depends on 1)

The system of claim 1, wherein the local log comprises a first local log, and the remote proposed operation originates from a third node and was maintained in a second local log of the second node with respect to remote proposed operations originating from the second node or the first node.

### Claim 4 (depends on 3)

The system of claim 3, wherein the remote proposed operation is reflected at a third local log of the third node and was maintained in a third local log of the third node with respect to remote proposed operations originating from the second node or the first node.

### Claim 5 (depends on 1)

The system of claim 1, wherein the transformed version is based on respective physical timestamps associated with the remote proposed operation and the local proposed operation.

### Claim 6

A method comprising:
maintaining a local vector clock associated with a first node and a copy of a vector clock associated with a second node communicatively coupled to the first node;
receiving a local proposed operation from the first node;
receiving, from the second node, a remote proposed operation to the artifact to which a set of operations are applied;
determining a concurrency between the local proposed operation and the remote proposed operation;
adding the local proposed operation to a local log stored within the first node;
adding the remote proposed operation to a branch of a shadow log stored by the first node to represent the concurrency;
performing the local proposed operation;
performing a transformed version of the remote proposed operation in response to performing the local proposed operation; and
appending the transformed version of the remote proposed operation to the local log following the local proposed operation.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
incrementing a logical timestamp associated with the first node for each local proposed operation;
incrementing a logical timestamp associated with the second node for each remote proposed operation, and
in response to determining that a vector clock associated with the first node is less than a vector clock associated with the second node, determining the transformed version of the remote proposed operation.

### Claim 8 (depends on 6)

The method of claim 6, wherein the local log comprises a first local log, and the remote proposed operation originates from a third node and was maintained in a second local log of the second node with respect to remote proposed operations originating from the second node or the first node.

### Claim 9 (depends on 8)

The method of claim 8, wherein the remote proposed operation is reflected at a third local log of the third node and was maintained in a third local log of the third node with respect to remote proposed operations originating from the second node or the first node.

### Claim 10 (depends on 6)

The method of claim 6, wherein the transformed version is based on respective physical timestamps associated with the remote proposed operation and the local proposed operation.

### Claim 11

A non-transitory computer readable medium comprising instructions that, when executed, cause one or more processors to perform:
maintaining a local vector clock associated with a first node and a copy of a vector clock associated with a second node communicatively coupled to the first node;
receiving a local proposed operation from the first node;
receiving, from the second node, a remote proposed operation to the artifact to which a set of operations are applied;
determining a concurrency between the local proposed operation and the remote proposed operation;
adding the local proposed operation to a local log stored within the first node;
adding the remote proposed operation to a branch of a shadow log stored by the first node to represent the concurrency;
performing the local proposed operation;
performing a transformed version of the remote proposed operation in response to performing the local proposed operation; and
appending the transformed version of the remote proposed operation to the local log following the local proposed operation.

### Claim 12 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein the instructions further cause the one or more processors to perform:
incrementing a logical timestamp associated with the first node for each local proposed operation;
incrementing a logical timestamp associated with the second node for each remote proposed operation, and
in response to determining that a vector clock associated with the first node is less than a vector clock associated with the second node, determining the transformed version of the remote proposed operation.

### Claim 13 (depends on 11)

The non-transitory computer readable medium of claim 11, wherein the local log comprises a first local log, and the remote proposed operation originates from a third node and was maintained in a second local log of the second node with respect to remote proposed operations originating from the second node or the first node.

### Claim 14 (depends on 13)

The non-transitory computer readable medium of claim 13, wherein the remote proposed operation is reflected at a third local log of the third node and was maintained in a third local log of the third node with respect to remote proposed operations originating from the second node or the first node.
