- Permission routing — teammate ask-mode → lead inbox → poll → reply
- Coordinator mode — slim tools + orchestrator prompt
- Fork mode — task with no subagent_type forks session
- Team memory — shared knowledge store per project
- Verification nudge — suggests verifier when all tasks complete
- TUI team actions — k/s/d keybindings in DialogTeam
- Deterministic permission routing eval (5 scenarios)
- LLM redteam eval (8 adversarial tests)
bun run test/promptfoo/run-permission-routing-eval.tsbun run test/promptfoo/run-redteam-eval.ts
- ~400 commits from
upstream/devmerged - Full Effect service migration (Session, Provider, Bus, Permission, ToolRegistry, etc.)
- All merge conflicts resolved
- Server.App() compat, TeamRoutes mounting
- initProjectors() for SyncEvent in tests
- InstructionPrompt, Session.findDirectory, Config.invalidate compat
- session.sql.ts team columns + SessionCronTable restored
- Session.Info teammate field restored
- Provider.resolveModel → parseModel
- SessionID.make() at 20+ DB boundaries
- Team.cleanup() fast-path for loopless members
- OPENCODE_DISABLE_TEAM_AUTOWAKE for tests
- Logger re-init race fix
- Global.Path.* dynamic getters
- SessionStatus.get() await fixes (8 sites)
- SessionPrompt.loop mocking in test suites
- Bus.publish() async settle waits
All pass individually but fail when run with the full 23-file suite due to bun test runner's shared-process env var contamination. NOT code bugs.
git checkout dev
git merge integration/upstream-dev-20260405cd packages/opencode
bun test test/team test/server/team-routes.test.ts test/cli/tui/dialog-team-actions.test.ts