From 80664936250a87354c2904bde5a5f28667b91d83 Mon Sep 17 00:00:00 2001 From: Drswith <49299002+Drswith@users.noreply.github.com> Date: Sun, 28 Jun 2026 16:31:43 +0800 Subject: [PATCH] docs(openspec): archive update cancellation state fix --- .../.openspec.yaml | 0 .../2026-06-28-fix-update-cancel-state-loss}/design.md | 0 .../2026-06-28-fix-update-cancel-state-loss}/proposal.md | 0 .../specs/agent-update/spec.md | 0 .../2026-06-28-fix-update-cancel-state-loss}/tasks.md | 0 openspec/specs/agent-update/spec.md | 9 ++++++++- 6 files changed, 8 insertions(+), 1 deletion(-) rename openspec/changes/{fix-update-cancel-state-loss => archive/2026-06-28-fix-update-cancel-state-loss}/.openspec.yaml (100%) rename openspec/changes/{fix-update-cancel-state-loss => archive/2026-06-28-fix-update-cancel-state-loss}/design.md (100%) rename openspec/changes/{fix-update-cancel-state-loss => archive/2026-06-28-fix-update-cancel-state-loss}/proposal.md (100%) rename openspec/changes/{fix-update-cancel-state-loss => archive/2026-06-28-fix-update-cancel-state-loss}/specs/agent-update/spec.md (100%) rename openspec/changes/{fix-update-cancel-state-loss => archive/2026-06-28-fix-update-cancel-state-loss}/tasks.md (100%) diff --git a/openspec/changes/fix-update-cancel-state-loss/.openspec.yaml b/openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/.openspec.yaml similarity index 100% rename from openspec/changes/fix-update-cancel-state-loss/.openspec.yaml rename to openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/.openspec.yaml diff --git a/openspec/changes/fix-update-cancel-state-loss/design.md b/openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/design.md similarity index 100% rename from openspec/changes/fix-update-cancel-state-loss/design.md rename to openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/design.md diff --git a/openspec/changes/fix-update-cancel-state-loss/proposal.md b/openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/proposal.md similarity index 100% rename from openspec/changes/fix-update-cancel-state-loss/proposal.md rename to openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/proposal.md diff --git a/openspec/changes/fix-update-cancel-state-loss/specs/agent-update/spec.md b/openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/specs/agent-update/spec.md similarity index 100% rename from openspec/changes/fix-update-cancel-state-loss/specs/agent-update/spec.md rename to openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/specs/agent-update/spec.md diff --git a/openspec/changes/fix-update-cancel-state-loss/tasks.md b/openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/tasks.md similarity index 100% rename from openspec/changes/fix-update-cancel-state-loss/tasks.md rename to openspec/changes/archive/2026-06-28-fix-update-cancel-state-loss/tasks.md diff --git a/openspec/specs/agent-update/spec.md b/openspec/specs/agent-update/spec.md index 9f5b61f..6b7cd10 100644 --- a/openspec/specs/agent-update/spec.md +++ b/openspec/specs/agent-update/spec.md @@ -56,6 +56,14 @@ The agent update system SHALL choose the best available update strategy for a si - THEN Quantex attempts to roll back the managed install - AND the install operation surfaces the state persistence failure +#### Scenario: Managed update keeps tracked state when cancellation follows a successful recorded update + +- GIVEN an agent has recorded managed install state +- AND a managed update command succeeds for that recorded source +- WHEN Quantex observes cancellation after re-persisting the recorded install state +- THEN Quantex reports update failure to callers +- AND it does not remove the agent's installed-agent state entry + #### Scenario: Self-update only reports an upgrade when the installed version changes - GIVEN an installed agent is updated through a self-update command @@ -457,4 +465,3 @@ When `quantex exec` or shortcut `quantex ` runs with `--timeout` and laun - **WHEN** the spawned agent process exits successfully within the late-completion grace window after the timeout deadline fired - **THEN** Quantex returns the agent process exit code - **AND** it does not cancel the spawned agent process before the grace window ends -