Repository navigation
feat(orchestrate): move the bundled fleet into fleet.json - #586
Merged
Merged
Conversation
The bundled collaboration and execution profiles, their guidance and the pre-discovery effort lists move from Rust constants into `assets/orchestrate/fleet.json`, parsed once in tcode-core. `astra.md` and `fable-5-1.md` are folded into it. Settings now store overrides only: an empty description means the bundled guidance for the row's role and model, resolved by `OrchestrateChildModel::guidance`, which prompt rendering and the settings UI share. An untouched row on the built-in endpoint carries the id of the bundled profile it tracks (`bundled`) and takes that profile's model on load, so a later bundle swap needs no text comparison. Normalization in core maintains the marker and turns text equal to the bundled guidance back into an empty description. Files from older versions migrate once, in `orchestrate_legacy`: rows holding any guidance text ever persisted as a bundled default (a frozen set of fingerprints, closed now that bundled text is never written) become tracking rows of the profile that superseded them. Two outcomes change: a changed enabled/fast switch no longer keeps such a row on its old model, and an untouched Opus 5 row merges into an existing Opus 5.5 row. Rendered prompts are unchanged for default settings. PROTOCOL_VERSION becomes 9: an older peer would read the empty descriptions as no guidance.
This was referenced Oct 6, 2026
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
Orchestrate's bundled fleet (which models, their role, their guidance, the pre-discovery effort lists) moves from Rust constants into one data file parsed once in
tcode-core. This is bundled data, not a plugin manifest: no loading, permission or host-API concepts.Settings store overrides only.
One last migration. Every guidance text that older versions persisted as a bundled default is recognized by a frozen fingerprint set and collapsed to empty. The set is closed.
Behaviour changes for existing users
enabled/fastswitch no longer pins an untouched row to its superseded model; it moves to the successor and keeps its switches.claude-opus-5row merges into an existingclaude-opus-5-5row instead of sitting beside it.claude-opus-5no longer has bundled guidance (main reused Opus 5.5's text for it).Evidence
render_orchestrate_configuration,compose_collaboration_briefandcompose_orchestrate_textare byte-identical to main (40,017 bytes compared withcmpvia a throwaway test, not committed).orchestrate_recognizes_every_persisted_bundled_text, which is driven by the 18 texts extracted from main intotests/fixtures/orchestrate/persisted_bundled_texts.json. Added: rows store bundled guidance by reference; tracking rows follow their bundled profile.orchestratesection disappears fromsettings.json, add/remove works, an old-format file migrates. Light theme, one width; layout unchanged.Not exercised: a live dispatch or collaboration against a provider.
Merge Danger
Door: one-way for settings on disk
Once a user's
settings.jsonis normalized (bundled text collapsed to empty,bundled:markers added), an older build reads those empty descriptions as "no guidance". The fingerprint set is frozen, so texts persisted by this build cannot be re-recognized later.Blast Radius: orchestrate-settings
PROTOCOL_VERSION8 → 9; an older peer would see empty guidance. The behaviour changes above alter which model an untouched row lands on after an upgrade.