Skip to content

feat: pick a model by the type of work - #77

Merged
harsha09 merged 2 commits into
mainfrom
feat/issue-62-model-selection
Oct 23, 2026
Merged

harsha09 merged 2 commits into
mainfrom
feat/issue-62-model-selection

Conversation

@harsha09

Copy link
Copy Markdown
Owner

Summary

  • SDD picks a model from .sdd/models.yaml by the type of work. Route, classify, and check can use a local decider. Draft, design, code, and review stay on the strong model. A bot, a stage, or a role can override that pick.
  • sdd role route calls a decider only when the reason is exactly No rule matched. With no models.yaml, the command still asks the human, and a role run still uses SDD_ROLE_MODEL.
  • sdd models show, sdd models which, and sdd team check explain the pick and reject a literal secret in models.yaml without printing it.
  • Decision calls are recorded on a decisions array and printed as a second section of sdd report. The existing token header and cost rows stay.

Fixes #62
Part of #58

This does not close #58. Issues #63, #65, and #66 are not in this change. The reading in the change pack is a proposal. The person has not accepted the spec, and this PR does not record a QA sign-off.

The verify stamp records b11dfd5, the HEAD before this commit. sdd verify ran pnpm test on that working tree and exited 0.

Test plan

  • Core tests for model selection, the report section, metrics round-trip, the router, roles, and the team
  • CLI tests for sdd models which, sdd team check, sdd role route, and sdd role run
  • sdd verify workspace tests (pnpm test) exit 0
  • Person accepts the reading and records QA

Routing, classify, and check can use a local decider. Draft, design, code, and review stay on the strong model. Overrides live in .sdd/models.yaml. With no file, route still asks the human and a role run still uses SDD_ROLE_MODEL.

A decider runs only when no rule matched. Decision calls are a second section on the report. The existing cost rows stay.
A valid reply that omits model was recorded as the configured name. The response model now wins, and a named reply model still overrides it. The command spawn ignores stderr so a chatty decider cannot fill the pipe and hang.
@harsha09
harsha09 merged commit c691d4f into main Oct 23, 2026
10 checks passed
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.

[SDD] Model selection by type of work, overridable per role or stage [SDD] Epic: configurable team of role bots that work like real teammates

1 participant