fix: durable project disable (INT-2799) + commit preserved partial work (INT-2729)#301
Merged
Conversation
…t (INT-2799) Dashboard toggle-disable only cleared the in-memory enabled set + project- selection file; on daemon restart reconcileRepos re-enables from repos.json and config.yaml re-allows via allowedProjects, so a config-defined project (e.g. vega-agent) revived and resumed work. Add the path to removedConfigPaths — the hard R6 denylist applyReposConfig filters on — so a soft-disable survives restarts. Symmetric with enable, which already clears the denylist.
…g marker (INT-2729) preserveWorktree kept a failed session's worktree dir for resume but left the partial work UNCOMMITTED, so a manual cleanup of the dir lost it silently — even a substantial finished implementation (STO-1351: 700+ line service preserved 7 days, zero commits, nearly lost). Capture the dirty work as a best-effort WIP commit on the swarm branch so it survives dir removal as a recoverable git ref. Commit runs BEFORE the marker is written so git add -A never stages the internal .openswarm-preserved control file into user history. Never throws (INT-2521 ENOSPC discipline). Linear failure notification is already handled by syncFailureState, so no duplicate comment is added.
This was referenced Jul 16, 2026
Merged
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.
Two independent daemon-durability fixes surfaced from Todo triage.
INT-2799 — dashboard project disable doesn't survive a restart
/api/projects/toggledisable only cleared the in-memory enabled set + the project-selection file. On restartapplyReposConfigre-enables fromrepos.jsonandconfig.yamlre-allows viaallowedProjects, so a config-defined project (e.g. vega-agent) revived and resumed work. Fix: toggle-disable now adds the path toremovedConfigPaths— the hard R6 denylist reconcile filters on — symmetric with enable (which already clears it).src/support/web.ts: add to denylist on soft-disablesrc/support/web.reposReload.test.ts: regression — a denylisted config project stays out of enabled + allowedProjects across a reconcileINT-2729 — preserved partial work was never committed
preserveWorktreekept a failed session's worktree for resume but left the work uncommitted, so a manual dir cleanup lost it silently (STO-1351: a 700+ line finished service preserved 7 days with zero commits, nearly lost). Fix: best-effort WIP commit to the swarm branch before the marker is written (sogit add -Anever stages the internal.openswarm-preservedcontrol file).removeWorktreekeeps the branch, so the commit survives dir removal. Never throws (INT-2521 ENOSPC discipline). The Linear failure comment half of the ticket is already handled bysyncFailureState, so no duplicate comment was added.src/support/worktreeManager.ts: commit-before-marker inpreserveWorktreesrc/support/worktreeManager.test.ts: work recoverable from branch after dir removal; marker absent from the committed treeValidation
npx tsc --noEmit— cleanopenswarm review: first pass flagged the marker-in-commit side effect → fixed (commit reordered before marker) + asserted in test; re-review hit the harness 15-turn agentic-loop timeout without a concrete follow-up finding🤖 Generated with Claude Code