Functions map
- accept_countersigning_preflight_request -> lock_chain
- SessionInfo -> Timeout and agents to sign
- PreflightRequest -> entry+session_info
- PreflightResponse -> PreflightRequest+Signature
## Bob accepts
```mermaid
sequenceDiagram
participant Alice
participant Bob
Alice-->>Alice: session_times_from_millis(session_ms) -> session_info
Alice-->>Alice: lock_chain(entry+session_info) -> entry+session_info+Signature
activate Alice
Alice->>Bob: request_countersign(entry+session_info+signature)
Bob-->>Bob: lock_chain(entry+session_info) -> entry+session_info+signature
activate Bob
Bob-->>Bob: create_countersigned(entry+session_info+signatureAlice+signatureBob)
deactivate Bob
Bob-->>Alice: signatureBob
Alice-->>Alice: create_countersigned(entry+session_info+signatureAlice+signatureBob)
deactivate Alice
```
---
## Bob rejects
```mermaid
sequenceDiagram
participant Alice
participant Bob
Alice-->>Alice: session_times_from_millis(session_ms) -> session_info
Alice-->>Alice: lock_chain(entry+session_info) -> entry+session_info+Signature
activate Alice
Alice->>Bob: request_countersign(entry+session_info+signature)
Bob-->>Alice: nope I'm mad at you
Alice-->>Alice: Wait for session_ms
Alice-->>Alice: Unlock*
deactivate Alice
```
\* for now, there is no manual unlock, you have to wait for the session_ms. If timeout is reached, there is automatic rollback