Format for navigating difficult conversations by explaining perception, reflecting, identifying needs, and clarifying.
Steps
| # | Action | Actor | Description |
| 1 | — | user | User selects Conflict Resolution format. |
| 2 | start-session | user | App begins session. |
| if session-ready |
| success | | Session begins and recording starts. |
| 3 | — | user | Misunderstandings are clarified. |
| 4 | — | user | Conversation moves toward resolution. |
| 5 | end-session | user | Session concludes. |
| if session-active |
| active | | Session still active |
| ended | | Session ended and recording finalised. |
Diagram
flow Conflict Resolution Flow flow flowchart TD;
classDef eventNode fill:#e8f5e9,stroke:#4caf50,color:#1b5e20;
classDef errorNode fill:#ffebee,stroke:#ef5350,color:#b71c1c;
classDef policyNode fill:#f3f0ff,stroke:#7c3aed,color:#4c1d95,stroke-dasharray:4 4;
initial["User selects Conflict Resolution format. (user)"];
s2["start-session (user)"];
initial --> s2;
click s2 href "/domains/conversation#start-session" _self;
b2{"session-ready?"};
s2 --> b2;
p2_0["Session begins and recording starts."];
b2 -- "success" --> p2_0;
emit2_0(["⚡ session-started"])
p2_0 -- emit --> emit2_0;
class emit2_0 eventNode;
click emit2_0 href "/domains/conversation#session-started" _self;
pol2_0_0["⟳ start-recording"]
emit2_0 -.-> pol2_0_0;
class pol2_0_0 policyNode;
s3["Explains (user)"];
emit2_0 --> s3;
s4["User triggers transition (manual or via (user)"];
s3 --> s4;
s5["Each partner reflects back what they hea (user)"];
s4 --> s5;
s6["User triggers transition. (user)"];
s5 --> s6;
s7["Both identify needs. (user)"];
s6 --> s7;
s8["User triggers transition. (user)"];
s7 --> s8;
s9["Misunderstandings are clarified. (user)"];
s8 --> s9;
s10["Conversation moves toward resolution. (user)"];
s9 --> s10;
s11["end-session (user)"];
s10 --> s11;
click s11 href "/domains/conversation#end-session" _self;
b11{"session-active?"};
s11 --> b11;
p11_0["Session still active"];
b11 -- "active" --> p11_0;
emit11_0(["⚡ session-ended"])
p11_0 -- emit --> emit11_0;
class emit11_0 eventNode;
click emit11_0 href "/domains/conversation#session-ended" _self;
pol11_0_0["⟳ request-transcription"]
emit11_0 -.-> pol11_0_0;
class pol11_0_0 policyNode;
p11_0 -- "active" --> initial;
s12["Show counter (user)"];
emit11_0 --> s12;
p11_1["Session ended and recording finalised."];
b11 -- "ended" --> p11_1;
emit11_1(["⚡ session-ended"])
p11_1 -- emit --> emit11_1;
class emit11_1 eventNode;
click emit11_1 href "/domains/conversation#session-ended" _self;
pol11_1_0["⟳ request-transcription"]
emit11_1 -.-> pol11_1_0;
class pol11_1_0 policyNode;
p11_1 -- "ended" --> initial;