Repository navigation
feat: establish workspace v2 ownership - #1945
Merged
Merged
Conversation
| ); | ||
| if (resumed.status !== 0) throw new Error(`migration resume failed: ${resumed.stderr.slice(-2000)}`); | ||
| expect(JSON.parse(resumed.stdout)).toMatchObject({ status: "completed", destination }); | ||
| if (interruptedTemporaryPath === undefined) throw new Error("migration temporary path was not captured"); |
Assisted-by: Hermes Agent
Assisted-by: Hermes-Agent:gpt-5.6-luna
- db-owner close(): beginDrain then tear down immediately; shutdown must not wait on the in-flight job deadline (restores the shutdown-drain and IPC-clean test contracts) - cli health: restore the v2 workspace database fallback (schema and memory counts read from the canonical layout) beneath the daemon-owned workspaceStats path
NicholaiVogel
force-pushed
the
feat/1935-workspace-refresh
branch
from
September 25, 2026 23:45
6565afd to
3c53c11
Compare
- event-loop + legacy-sync-db baselines regenerated against the rebased tree (main retired ledger sites; counts 152->149, 788-site inventory) - audit test expectations updated to the regenerated counts - strip remaining explanatory comments in migration sources per comments:check
The rebased tree kept an older pre-commit variant; main's version scopes Biome/typechecks to affected workspaces and supersedes the local --no-errors-on-unmatched tweak (the ignore behavior it worked around is now handled by isBiomeCandidate exclusions).
node:sqlite is restricted to exact database-owner modules; route the backupTo snapshot through the workspace sqlite wrapper (VACUUM INTO), matching workspace-protection's snapshot path.
This was referenced Sep 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Establishes the versioned workspace v2 ownership model from #1935 while preserving explicit v1 compatibility. Fresh workspaces separate durable data, canonical transcripts, runtime state, rebuildable cache, the manual import inbox, managed import originals, and secrets. Existing workspaces gain a stopped, resumable, preservation-first migration instead of a reset or parallel memory lifecycle.
This is one integrated implementation across the resolver, migration engine, import pipeline, transcript authority, Git preservation, protection reporting, CLI/API/dashboard surfaces, and documentation.
Closes #1935
Changes
data/signet.dbdata/imports/transcripts/runtime/cache/files/files/as a bounded durable import inbox, not a configured or continuously watched Source..gitignoreownership, and.sigignorebehavior without turning Git into universal protection.Type
feat— new user-facing feature (bumps minor)fix— bug fixrefactor— restructure without behavior changechore— build, deps, config, docsperf— performance improvementtest— test coveragePackages affected
@signet/core@signet/daemon@signet/cli/ dashboard@signet/sdk@signet/connector-*@signet/webpredictorScreenshots
Captured from the candidate dashboard build in an isolated local fixture. Dashboard API responses and interrupted-migration status are synthetic; the status is supplied through a renderer-only Desktop bridge fixture. No migration or rollback was started.
Migration Notes (if applicable)
Migration acquires an OS-backed lease, drains registered writers, snapshots SQLite consistently, copies and verifies destination state, then advances the layout pointer. Before the destination accepts durable writes, rollback restores the prior pointer and untouched source. After destination writes begin, automatic rollback is fenced and requires explicit forward reconciliation. Legacy data and Git state remain preserved until explicit cleanup acceptance.
Testing
bun testbun run typecheckbun run test:hermetic --timeout=20000 --max-concurrency=4 platform/core surfaces/cli surfaces/dashboard surfaces/desktop— 1,270 passed; 2 failures are pre-existing and reproduce on the PR base6496e141(stale connector SVG selector and onboarding import-route assertion)bun run lint— not cleanly verified; changed-file Biome check passes without errors3533c0363and UX follow-up6a43559b9— ship verdicts, no actionable findingsStill underway before merge:
mainbefore mergeBehavior and safety notes
files/or managed import storage.AI disclosure
Notes
This PR is open now to keep the complete #1935 implementation visible as one review surface. The remaining verification items above are blockers for merge, not deferred implementation PRs.