feat: P1 bugfixes, security hardening, and plan system improvements#44
Merged
feat: P1 bugfixes, security hardening, and plan system improvements#44
Conversation
…workflow tools Thread an optional baseBranch parameter through the entire job lifecycle so users can start work from feature/release branches instead of main. Closes #40
nigel-dev
added a commit
that referenced
this pull request
Feb 13, 2026
- README: document baseBranch param on launch, plan, pr, diff, sync, merge - README: document source param on mc_sync (local/origin) - README: document mode field on plan JobSpec - README: add slash commands /mc-capture, /mc-diff, /mc-plan, /mc-approve - README: add usage examples for baseBranch, plan targeting, and sync source - README: note command validation on worktreeSetup.commands - README: note plan-scoped branch naming and integration HEAD branching - Audit: update for Feb 13 GitHub issues sprint (8 issues resolved) - Audit: mark fixed items in technical debt and roadmap sections - Audit: add Phase 1.5 section documenting all shipped changes
nigel-dev
added a commit
that referenced
this pull request
Feb 13, 2026
- README: document baseBranch param on launch, plan, pr, diff, sync, merge - README: document source param on mc_sync (local/origin) - README: document mode field on plan JobSpec - README: add slash commands /mc-capture, /mc-diff, /mc-plan, /mc-approve - README: add usage examples for baseBranch, plan targeting, and sync source - README: note command validation on worktreeSetup.commands - README: note plan-scoped branch naming and integration HEAD branching - Audit: update for Feb 13 GitHub issues sprint (8 issues resolved) - Audit: mark fixed items in technical debt and roadmap sections - Audit: add Phase 1.5 section documenting all shipped changes
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
Batch of 8 issues covering the entire P1 bug/security tier plus high-impact plan system improvements. All changes target the orchestrator, tool layer, and core libraries — no breaking API changes.
Changes
feat:Custom base branch support formc_launch,mc_plan,mc_pr,mc_diff,mc_sync,mc_merge— threadbaseBranchend-to-end through the full job lifecyclefix(security):SanitizeworktreeSetup.commands— dangerous pattern detection (backticks,$(),eval,curl|sh, etc.) with warnings before execution;allowUnsafeCommandsconfig flag to suppressfix:isPaneRunningnow distinguishes dead panes from tmux infrastructure failures — retry with 500ms backoff,isTmuxHealthy()health check, monitor/orchestrator handle errors gracefully instead of cascade-failing plansfeat:Plan jobs withdependsOnnow branch from integration HEAD (not main), so downstream jobs can see upstream code changes — root jobs branch frombaseCommitfor consistencyfix:Plan job branches scoped tomc/plan/{shortPlanId}/{jobName}to prevent collisions with standalone jobsfix:Reconciler race condition — replaced booleanisReconcilingguard with dirty re-reconcile pattern (reconcilePendingflag + do/while loop) so state transitions are never silently droppedfix:mc_syncdefaults to local base branch viagetDefaultBranch()instead ofHEAD@{upstream}— addedsourceparameter (local/origin) for explicit control; fetch only runs when syncing from originfix:Plan jobs respectomo.defaultModeconfig — mode resolution priority: per-job override → config default → vanilla; includes OMO detection, plan copying, and prompt transformation for non-vanilla modesTesting
bun run buildpassesbun testpasses (600 tests, 0 failures)baseBranch, verifiedmc_diff,mc_mergetarget correct branch, cleanup worksNotes
mc_launchjobs targetingdevelopment, synced and squash-merged with conventional commitsorchestration integration suite > runs in an isolated subprocess) was confirmed flaky on the base branch — not introduced by these changes#33and#34interact inorchestrator.ts:launchJob()— both plan-scoped naming and integration branching are applied togetherCloses #40, closes #24, closes #12, closes #33, closes #34, closes #15, closes #32, closes #13