corago/codex-keep
Repository files (latest commit first)
Filename Latest commit message Latest commit date
ms2k e4b84d9802 Add daemon-attached goal recovery operator
Resume goals after transient API failures with persisted exponential backoff while respecting pauses and interruptions.
2026-10-18 14:01:07 +09:00
..
.gitignore Set up repository and Go dependencies 2026-10-18 14:00:51 +09:00
go.mod Set up repository and Go dependencies 2026-10-18 14:00:51 +09:00
go.sum Set up repository and Go dependencies 2026-10-18 14:00:51 +09:00
main.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
operator.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
operator_test.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
policy.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
policy_test.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
protocol.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
README.md Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
rpc.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
run.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
run_test.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
store.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00
store_test.go Add daemon-attached goal recovery operator 2026-10-18 14:01:07 +09:00

stateDiagram-v2
    [*] --> Running
    Running --> [*]: operator stopped / close socket / retain checkpoint
    state Running {
        state Connection {
            [*] --> Connect
            Connect --> Reconcile: WebSocket over Unix socket / initialize
            Reconcile --> Listen: enumerate loaded threads / subscribe / read goal and latest turn
            Listen --> Reconcile: poll interval or retry deadline
            Reconcile --> Reconnect: connection failure
            Listen --> Reconnect: connection failure
            Connect --> Reconnect: connection failure
            Reconnect --> Connect: capped exponential backoff with jitter
        }
        --
        state "Per loaded thread; checkpointed across connections" as Recovery {
            [*] --> Observe
            Observe --> Armed: active goal and in-progress turn observed
            Armed --> Backoff: same goal blocked and same turn failed with transient API error
            Armed --> Observe: successful turn / reset failure count
            Armed --> Observe: human interrupt / pause / clear / replacement / limit / completion / non-transient error
            Backoff --> Check: persisted retry deadline reached
            Check --> Observe: goal changed / turn changed / thread active or unloaded
            Check --> Resume: same blocked goal / failed turn / thread idle or systemError
            Resume --> Armed: goal activated and new turn observed
            Resume --> Backoff: RPC failure / persist next retry
            Resume --> Observe: activation observed before next turn
            Backoff --> Observe: human pause / clear / replacement / limit / completion
            Observe --> Observe: existing blocked goal or non-transient failure
        }
    }