Skip to content

feat(chat-swarm): add durable worker continuity and conversation rollover #51

Description

@James3014

Owner scope amendment — macOS only (2026-09-11)

依 Owner 最新裁決,本工作線相關功能設計、實作、交付與驗收 只處理 macOS。本裁決取代下文較早的跨平台/三平台要求。

  • Windows、Linux 支援、移植、修復與平台驗證不在本次工作範圍;不再以三平台全綠作為本工作線的 acceptance criterion。
  • 驗收保留 macOS 上必要的 source tests、獨立 package/install、真實呼叫入口、operation/副作用/讀回及適用的恢復與終態證據;ownership、lease、CAS、安全與獨立審查要求保持有效。
  • 下方歷史測試、PR、平台結果與問題紀錄保留作為歷史證據,不代表目前仍有跨平台交付承諾。後續設計及驗收計畫以此 macOS-only 範圍為準。
  • 本次更新僅修正 Issue 與規劃範圍;實作、部署與重啟仍依 Owner 的暫停指令保持暫停。
  • 此文字更新不會自行修改 GitHub CI 設定或 branch protection;既有檢查設定如與新範圍不符,須另行明確調整,不得假稱已通過或繞過保護。

Status

BLOCKED_BY #49

Purpose

Add durable logical worker continuity so a ChatGPT Swarm worker can survive ordinary conversation replacement/context rollover without changing worker identity or losing task/reconciliation lineage.

This is the continuity layer after the basic MCP peer Swarm has passed live canary. It is not required for V0.1.

Hard prerequisite

OpenCLI #50 is optional and not a hard prerequisite. Continuity must be defined at the Swarm/Core level so multiple runtime carriers can use it.

Core principle

workerId != conversationId

A worker is durable logical execution identity. A ChatGPT conversation is a replaceable carrier.

Expected model:

worker-01
  continuationEpoch: 4
  currentCarrier: conversation-B

history:
  epoch 3 -> conversation-A -> closed/rolled over
  epoch 4 -> conversation-B -> active

Objective

Implement explicit, auditable continuation/rollover semantics with one-time binding material and fail-closed recovery.

Required behavior

Worker continuity state

Represent at least:

  • stable worker ID
  • current continuation epoch
  • current carrier identity fingerprint
  • prior carrier/epoch lineage sufficient for audit/reconciliation
  • last acknowledged checkpoint
  • current task binding
  • rollover/continuation state

Continuation ticket

If a ticket/token is used to bind a replacement conversation:

  • short-lived
  • single-use
  • scoped to one exact worker + swarm + next epoch
  • stored as hash only
  • invalid after successful consumption
  • cannot be replayed by the old carrier
  • cannot bind a different worker
  • must not upgrade task/controller authority

Rollover safety

  • do not roll over while an effect is ambiguous without a checkpoint/reconciliation rule;
  • if a worker has an active task, continuation must preserve exact task/attempt identity;
  • if old and new carriers both appear active, fail closed until ownership is resolved;
  • loss of old conversation must not silently mark task complete/failed/retryable;
  • controller must be able to distinguish carrier_lost, continuation_pending, continuation_bound, and reconcile_required.

Context/checkpoint capsule

Define a bounded continuation capsule sufficient to resume worker role without copying full conversation history.

Expected contents may include:

  • worker/swarm identity
  • continuation epoch
  • current/last task IDs
  • stable worker role instructions
  • bounded task/result summaries
  • unresolved unknowns/blockers
  • explicit authority/claim ceiling
  • checksum/schema version

Do not treat model-generated narrative as authoritative task state; canonical state remains in Swarm storage.

Context pressure

Do not claim exact ChatGPT token telemetry unless a supported host/runtime signal exists.

If context pressure is estimated:

  • label it estimated
  • use conservative thresholds
  • keep estimate separate from hard model context facts
  • rollover decision must remain observable

Automatic context compaction/rollover may be added only after deterministic continuity semantics work without it.

Ultra reference boundary

The Ultra project may be used as a reference for:

  • stable worker identity across conversation replacement
  • continuation epochs/tickets
  • checkpoint capsule concept
  • idle-boundary rollover

Do not copy:

  • assumptions tied to Windows AppX cloned runtimes
  • session/cookie seeding
  • context estimates presented as exact native token telemetry
  • automatic authority transfer from browser/session state

Required tests

  • one-time continuation ticket success
  • ticket replay rejected
  • wrong-worker ticket rejected
  • expired ticket rejected
  • old carrier cannot submit after new carrier binding
  • ambiguous dual-carrier state fails closed
  • active task/attempt identity survives rollover
  • restart during continuation does not duplicate worker or task execution
  • checkpoint capsule corruption/version mismatch fails closed
  • controller sees stable worker ID before/after carrier replacement

Live acceptance

After deterministic tests, run a bounded worker rollover witness:

  1. worker joins and completes at least one task;
  2. worker starts/holds a second bounded task or checkpoint;
  3. create replacement ChatGPT conversation;
  4. bind it through the continuation protocol;
  5. prove stable worker ID and incremented epoch;
  6. prove targeted follow-up routes to replacement carrier;
  7. prove old carrier can no longer submit as the worker;
  8. prove no duplicate task execution occurred.

Non-goals

  • automatic browser spawning
  • OpenCLI requirement
  • unlimited persistent conversations
  • mutation grants
  • coding-agent delegation policy
  • automatic model selection
  • account/quota bypass

Claim ceiling

DURABLE_WORKER_CONTINUITY_CANARY_PASS only after exact source + live rollover evidence passes.

Do not claim infinite context, exact token awareness, production autoscaling, or autonomous coding readiness.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions