Skip to content

058: GO decision — read-only recovery diagnostics (design spike) - #672

Closed
andyrewlee wants to merge 1 commit into
advisor/057-spike-output-searchfrom
advisor/058-recovery-diagnostics-spike
Closed

andyrewlee wants to merge 1 commit into
advisor/057-spike-output-searchfrom
advisor/058-recovery-diagnostics-spike

Conversation

@andyrewlee

Copy link
Copy Markdown
Owner

Summary

Design spike for plan 058 — plans-only artifacts, no production changes. Decision: GO for a read-only diagnostic increment; the retry action is deferred.

  • plans/spikes/058/decision.md — evidence table of every recovery state the code can distinguish, honest state model (the .deleting tombstone is a boolean marker: two derivable states, never fabricated stage/error text), presentation mockups, retry-safety boundary, alternatives, verdict
  • plans/spikes/058/recovery-cases.json — 14 cases; every diagnostic-open asserts may_mutate=false; includes alias-ID, stale-token, root-reappears, and suppressed-row edges
  • plans/spikes/058/implementation.md — self-contained handoff: WorkspaceCleanupSnapshot (stat-only, off-loop via the existing workspaceStatusReadyMsg fence), conditional cleanup: section, test→case map, STOP conditions

Rejected: a structured delete journal (new durable schema to answer what auto-retry already answers) and an in-dialog retry (v1 keeps i read-only; auto-retry at load already covers every reachable pending state).

Test plan

  • Both plan validation commands pass (JSON schema + artifact headings)
  • git diff --check clean
  • No production files touched

Design spike only — no production changes. The artifacts under
plans/spikes/058/ resolve the honest state model: the .deleting
tombstone is a boolean marker, so the status dialog can truthfully
derive only two states (interrupted-with-live-root vs
pending-with-root-gone) plus a log pointer — no stage/error text is
fabricated. The durable journal and in-dialog retry are rejected and
deferred respectively; the live-root pin and alias-ID fencing belong to
finishInterruptedDelete and stay untouched. 14 executable cases pin
read-only behavior (every diagnostic case asserts may_mutate=false);
implementation.md is the self-contained handoff for a two-bit
cleanupPending/cleanupRootPresent probe on the existing off-loop path.
andyrewlee added a commit that referenced this pull request Sep 28, 2026
Lands the full advisor implementation stack: workspace transactions and
lifecycle teardown, git cancellation bounds, durable port reservations
with degrade-not-block migration, semantic activity transitions, atomic
self-update, visual-row diff scrolling, async project tree, e2e
workspace-root isolation, and the storeID-loss + lock-ENOENT regression
fix. The plans/ working artifacts are intentionally not committed —
they were scaffolding for the work, not product.

Supersedes PRs #646-#672.
@andyrewlee

Copy link
Copy Markdown
Owner Author

Superseded — content landed on main via merge 8580442 (plans/ scaffolding intentionally excluded).

@andyrewlee andyrewlee closed this Sep 28, 2026
@andyrewlee
andyrewlee deleted the advisor/058-recovery-diagnostics-spike branch September 28, 2026 07:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant