Skip to content

Delegated tasks run on a chosen model, never an accidental default (ERMAIN-1031) - #1407

Draft
bdart wants to merge 4 commits into
mainfrom
feature/ermain-1031-delegated-tasks-run-on-a-chosen-model-never-an-accidental
Draft

bdart wants to merge 4 commits into
mainfrom
feature/ermain-1031-delegated-tasks-run-on-a-chosen-model-never-an-accidental

Conversation

@bdart

@bdart bdart commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Delegated tasks now run on an explicitly resolved model instead of silently inheriting the origin assistant's default. The model is resolved at launch, stored on the task, reported on every task envelope and kept by retries. See ERMAIN-1031.

  • Config: new child_chat_provider on facets and child_chat_providers in the facet and action-facet delegation overrides, validated at load time.
  • delegate_task offers an optional model enum, filtered to the models the owner may use.
  • Resolution order: the parent's pick, then the first task facet's child_chat_provider (on the mention route, the mentioned assistant's default), then the parent turn's model. A configured model the user may not use falls back to the parent's model, and the result says so.
  • TaskSpec.model stores the resolved model (JSONB, no migration). Child turns use it when the request names no model.
  • Envelopes and delivered task results carry a model report. The task and result cards show "Model: ..." and a fallback notice.
  • Retry re-checks the recorded model and falls back to the origin turn's model or the user's default.
  • Docs and config_reference.json are updated.

Deviations:

  • Three commits (backend, card, docs) plus one review-fix commit, not a single commit.
  • Mention route: the mentioned assistant's default takes the configured-model slot. This needs an owner decision.
  • New card strings are untranslated in de/es/fr/pl, like the other missing strings there.

Pending:

  • Owner decision on the mention-route model.
  • Manual check of the task card's model and fallback lines in the running app, on a live turn and a reloaded chat.

bdart added 4 commits October 19, 2026 22:27
A task runs on the parent's pick from the coordinator facet's child_chat_providers, else on the child facet's child_chat_provider, else on the parent turn's model. A configured model the user may not use falls back to the parent turn's model and the result says so. The model is stored in TaskSpec at launch, reported on every envelope shape, and kept by retries.
…del (ERMAIN-1031)

- A retry falls back to the origin turn's model only while the owner may
  still use it, else to the owner's default model, instead of refusing.
  Errors reading the origin turn are logged and returned as 500s.
- Delivered task results carry the run's model, recorded with the
  delivery. The reaction turn is told about a fallback, and the result
  card shows the model and the fallback.
- Tests: parent turns on a non-default model, @-mention routes, retries
  after a lost stored or origin-turn model, and the async dispatch slot
  and delivered result.
- Docs: persona no longer claims the assistant's model settings.

This branch has not been deployed

No deployments
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