Skip to content

[Feat] Make plan mode always on and introduce the Advisor model role with a coding-advisor subagent - #193

Merged
mrubens merged 3 commits into
developfrom
feature/advisor-model-plan-mode-default-3rx2o4qthw03p
Jul 11, 2026
Merged

[Feat] Make plan mode always on and introduce the Advisor model role with a coding-advisor subagent#193
mrubens merged 3 commits into
developfrom
feature/advisor-model-plan-mode-default-3rx2o4qthw03p

Conversation

@roomote-roomote

@roomote-roomote roomote-roomote Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Opened on behalf of Matt Rubens. Follow up by mentioning @openmote, in the web UI, or in Slack.

What changed

  • Plan mode is now always on. The PlanMode feature flag has been removed entirely (enum entry, config registry, metadata typing, worker flag evaluation, the ROOMOTE_PLAN_MODE env plumbing, and the harness gating), following the same graduation pattern as PrReviewNotifications. Plan-mode turns now switch onto the read-mostly architect agent whenever the planning workflow skill is active, with no per-deployment toggle.
  • The planning model role is now called "Advisor" in the UI. The Settings > Models role label, placeholder, aria labels, validation error, and the public docs (models.mdx, environment-variables.mdx) all use "Advisor model" now. Internal identifiers and the R_PLANNING_MODEL / R_PLANNING_MODEL_REASONING_EFFORT env vars are intentionally unchanged, so existing configuration keeps working and the planning workflow (architect agent) keeps using the same model wiring.
  • New advisor subagent for coding tasks. Every generated OpenCode config now registers a visible (non-hidden) advisor subagent, and the parent coding agent gets instructions to consult it when it is stuck: repeated failed attempts, confusing bugs, or uncertain approach/design decisions. The advisor uses the configured Advisor model when one is set, and otherwise defaults to the active coding model running at the advisor reasoning level (which defaults to high, vs. medium for ordinary coding turns). It is read-only (no edit/bash/task) with webfetch allowed, and excludes Slack-posting tools like the other subagents.

A changeset is included since this is user-facing.

How it was tested

  • Added two bootstrap tests covering the advisor subagent: one with a dedicated planning/advisor model configured (agent-level model + reasoning options) and one proving the coding-model fallback with the advisor reasoning level applied.
  • Updated the harness tests for always-on plan mode (removed the plan-mode-disabled cases), removed the flag-evaluation run-task tests, and updated the feature-flag config and ModelSettingsSection tests for the removed flag and new labels.
  • pnpm lint, pnpm check-types, and pnpm --filter @roomote/docs check pass; feature-flags, SDK feature-flag router, worker bootstrap/harness/run-task suites (133 tests), and the affected web test suites all pass.

Screenshots

The Models settings page shows the role labeled "Advisor model" with the advisor description, replacing the old "Planning model" label

The Experimental settings page lists the remaining feature flags with no Plan Mode entry, showing the flag was removed

The public docs model-roles table lists "Advisor model" with the updated planning-and-advisor description

Checklist

  • The PR title follows the repo convention: [Fix], [Feat], [Improve], [Refactor], [Docs], or [Chore] followed by a user-facing description
  • This PR is small and scoped to one change
  • pnpm lint and pnpm check-types pass locally
  • I added tests or included a clear manual validation note above
  • I removed secrets, tokens, private keys, and customer data from code, logs, and screenshots
  • If this change should appear in the changelog, I ran pnpm changeset

@roomote-roomote

roomote-roomote Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor Author

No new code issues found. See task

Re-reviewed the latest update, which removes the PlanMode feature flag entirely and makes plan mode always-on (the flag is no longer an opt-out). The delta is clean and internally consistent:

  • Flag fully removed. FeatureFlag.PlanMode, the plan_mode config entry, MetadataRecord.plan_mode, the mockFeatureFlags entry, and the runTask flag evaluation are all gone. A repo-wide search finds no remaining PlanMode / plan_mode / ROOMOTE_PLAN_MODE code references — only the changeset prose mentions it. @roomote/feature-flags and @roomote/worker both type-check clean.
  • Harness gating simplified correctly. isPlanModeEnabled() was removed, and both resolvePromptAgent() and the plan-exit continuation now key only on the active workflow skill. This is safe because resolveWorkflowSkillTransition already scopes queueContinuation to the real plan→implement exit case (inFlight && previousSkill === PLAN_WORKFLOW_SKILL && loadedSkill !== PLAN_WORKFLOW_SKILL), so behavior matches "plan mode always on."
  • Advisor subagent unhidden. Dropping hidden: true and the matching "A hidden" wording in the advisor instructions is consistent across config, instruction text, and the bootstrap tests.
  • Tests updated in lockstep. The obsolete plan-mode-flag runTask tests and the plan-mode-disabled harness tests were removed, the enabled-path harness test was renamed to the unconditional behavior, and the feature-flag config test for the old default was dropped. The changeset note now accurately describes the flag's full removal.

@roomote-roomote roomote-roomote Bot changed the title [Feat] Enable plan mode by default and introduce the Advisor model role with a coding-advisor subagent [Feat] Make plan mode always on and introduce the Advisor model role with a coding-advisor subagent Jul 11, 2026
@mrubens
mrubens marked this pull request as ready for review July 11, 2026 16:10
@mrubens
mrubens merged commit bafabdf into develop Jul 11, 2026
1 check passed
@mrubens
mrubens deleted the feature/advisor-model-plan-mode-default-3rx2o4qthw03p branch July 12, 2026 04:19
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