Workspaces: add version history and exact restore#101900
Conversation
|
On |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Dependency graph guard clearedThis PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh
|
|
Codex review: needs real behavior proof before merge. Reviewed July 13, 2026, 5:51 AM ET / 09:51 UTC. Summary PR surface: Source +1140, Tests +649, Docs +17, Generated 0, Other -1. Total +1805 across 23 files. Reproducibility: not applicable. This PR adds a new Workspaces capability rather than repairing an established failing behavior. Source and tests provide a clear validation model, but they are not a current-main bug reproduction. Review metrics: 3 noteworthy metrics.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Keep exact-version restore transactional and approval-preserving, but land it only with redacted browser proof, an explicit authorization test for the Teams composition, and a maintainer-approved narrow SDK contract—keeping the Kysely helpers internal or purpose-specific if general public exports are not intended. Do we have a high-confidence way to reproduce the issue? Not applicable: this PR adds a new Workspaces capability rather than repairing an established failing behavior. Source and tests provide a clear validation model, but they are not a current-main bug reproduction. Is this the best way to solve the issue? Unclear: transactional exact-version restore is a strong implementation shape, but the general public SDK expansion is not proven to be the narrowest maintainable owner boundary and still needs maintainer approval. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 9ea4b167fad2. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +1140, Tests +649, Docs +17, Generated 0, Other -1. Total +1805 across 23 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (12 earlier review cycles; latest 8 shown)
|
|
Security (cross-PR, surfaced by the downstream Boardstate extraction's audit — SPEC invariant I6): private-tab leak via workspace history, emergent when this PR and #101913 both land.
Neither branch has the hole in isolation (this one has no private tabs yet; that one has no history endpoint). But once both are on Fix at integration: route the Flagging on both PRs so it isn't lost at merge. (The other two audit findings — approval-elevation via |
447b2c4 to
b27f4fc
Compare
68dea4c to
f02040f
Compare
f02040f to
53be35a
Compare
53be35a to
e9fc1b6
Compare
|
@100yenadmin thanks for the PR. ClawSweeper is still waiting on real behavior proof before this can move forward. Useful proof can be a screenshot, short video, terminal output, copied live output, linked artifact, or redacted logs that show the changed behavior after the fix. Please redact private tokens, phone numbers, private endpoints, customer data, and anything else sensitive. Once proof is added to the PR body or a comment, ClawSweeper or a maintainer can re-check it. |
What Problem This Solves
Workspace operators had undo but no inspectable version history: they could not preview an older snapshot, understand structural changes, or restore the exact version they reviewed. The original #101900 implementation was built on the superseded Dashboard stack and retained race, corruption, attribution, and sparse-history correctness issues.
Why This Change Was Made
This rebuild adds SQLite-backed history list/get/restore methods to the current Workspaces store and a history panel in the Workspaces UI. Restore is bound to the exact snapshot version the operator confirmed and executes inside the synchronous write transaction; the pre-restore workspace remains undoable and the resulting workspace version remains monotonic.
Corrupt rows are isolated instead of blocking valid older history. Change summaries use accurate creator/provenance terminology, distinguish move from resize, and report first-seen evidence as exact, bounded, or unknown when coverage is sparse. The UI documents the structural diff surface rather than claiming exhaustive content diffs.
The recovery also moves extension-owned synchronous SQLite queries through typed Kysely helpers exposed on the focused plugin-state SDK subpath.
User Impact
Evidence
7da28f370476ef53c025f37339c1b128f6ed3933, captured2026-07-13T09:16:13Z; conflicts preserve current main's private store-helper types and reconcile the SDK/API baselines to the feature's exact three intentional callable exports. A stale moving-main budget-only commit was dropped.git diff --checkpassed on the feature bundle.Closes #101822.