Conflict Resolution
Applies to: Pro · Enterprise
Last updated: 17-Jul-2025
Overview
When multiple people edit the same schedule simultaneously, conflicting changes are inevitable. Kazinex handles conflicts automatically using last-write-wins (LWW) as the base strategy, supplemented by domain-specific rules that warn you about potentially impactful concurrent edits.
How Conflicts Are Detected
The conflict resolver maintains a sliding window of 50 recent local operations. When a remote change arrives from another peer, the resolver compares it against your recent local operations to check for overlap.
A conflict is detected when:
- Both you and a peer edited the same field on the same entity at roughly the same time.
- A remote change affects a critical-path field that may invalidate your current view.
- A remote change deletes an entity you're currently editing.
Conflict Rules
Kazinex applies five built-in conflict rules:
1. Same-Field Concurrent Edit
| Property | Value |
|---|---|
| Applies to | Activities |
| Condition | Both you and a peer changed the same field on the same activity |
| Severity | Info |
| Resolution | The remote value is accepted (last-write-wins) |
| Message | "Both you and a peer edited [field] on the same activity. The remote value was accepted (last-write-wins)." |
This is the most common conflict type. Yjs CRDTs guarantee that all peers converge on the same final value.
2. Critical-Path Field Changed
| Property | Value |
|---|---|
| Applies to | Activities |
| Condition | A peer changed a field that affects the critical path |
| Severity | Warning |
| Message | "A peer changed the critical-path field [field]. You may want to recalculate the schedule (F9)." |
Monitored fields: Early Start, Early Finish, Late Start, Late Finish, Total Float, Free Float, Driving Path Flag, Original Duration, Remaining Duration.
3. Relationship Deleted While Editing
| Property | Value |
|---|---|
| Applies to | Relationships |
| Condition | A peer deleted a relationship you were editing |
| Severity | Error |
| Message | "A relationship you were editing was deleted by another peer." |
4. WBS Node Moved Concurrently
| Property | Value |
|---|---|
| Applies to | WBS |
| Condition | Both you and a peer moved the same WBS node |
| Severity | Warning |
| Message | "Both you and a peer moved the same WBS node. The remote move was accepted." |
5. Calendar Concurrent Edit
| Property | Value |
|---|---|
| Applies to | Calendars |
| Condition | Both you and a peer edited the same calendar |
| Severity | Warning |
| Message | "Both you and a peer edited the same calendar. Please review the calendar settings." |
Severity Levels
| Severity | Meaning |
|---|---|
| Info | A merge occurred automatically. No action needed. |
| Warning | A merge occurred, but you should review the result or recalculate. |
| Error | Something unexpected happened — an entity you were working on no longer exists. |
Resolution Strategies
The resolver can apply four resolution strategies:
| Strategy | Description |
|---|---|
| Accept Remote | The remote peer's value wins (used in LWW merges) |
| Accept Local | Your local value wins (not used by default rules) |
| Merge | Both values are combined (used for compatible additions) |
| Warn | Both values are accepted via LWW, and you're notified about the conflict |
All five built-in rules use the Warn strategy — changes are merged via Yjs CRDTs, and you receive a notification explaining what happened.
How to Respond to Conflict Notifications
- Info notifications — no action needed. The merge was automatic and safe.
- Warning notifications — review the affected entity. For critical-path warnings, press F9 to recalculate the schedule.
- Error notifications — the entity you were editing was deleted. Check with the other peer before re-creating it.
Tips & Best Practices
- Divide work by WBS area to minimise same-field conflicts between peers.
- Recalculate after bulk changes — press F9 after a peer makes structural edits to refresh the critical path.
- Use permissions to prevent conflicts — if a peer only needs to update progress, set them to "Status Updater" so they can't change dates or logic.
- Communicate via the chat before making breaking changes like WBS moves or relationship deletions.