refactor(world-lab): remove legacy agent controls - #68
Merged
christopherjnelson merged 1 commit intoSep 22, 2026
Merged
Conversation
World Lab still carried a `swarmMode = true` constant in four places with permanently-dead `!swarmMode` branches behind it. The zero swarm is the only cognition architecture, so the two-mode abstraction was fiction. Delete the constants, the ModelConsole `swarmMode` prop, and every dead branch, removing the containers that were left empty. Removed dead surfaces: the "Retained turns", "Patient Zero" and "Tokens" experiment-detail entries; the providerMode model-assignment summary; the `!providerConfigured` and `reasoningUnavailable` alerts; the "Apply global model to all agents" button; the per-agent model override block; the roster controlled-cell line; and the whole export filter UI (agent checkboxes, export level, turn range, outcome and action filters, custom switches) along with `defaultCustomOptions`, `FilterChecks` and `customOptionLabel`. Model configuration now reads as "Agent Zero model" rather than a global agent model, and the trigger reports planner readiness instead of an "N of M agents ready" count that could only ever be one of one. The `ExperimentModelConfiguration` schema fields are unchanged; only the presentation moves, and the UI now always submits an empty override list. Keep and improve the swarm-native surfaces: the JSON serialization control was stranded inside the dead branch despite feeding the live request, so it is now reachable; the export intro and preview no longer explain themselves in terms of migration history. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
christopherjnelson
marked this pull request as ready for review
September 22, 2026 11:57
christopherjnelson
deleted the
refactor/world-lab-swarm-native-controls
branch
September 22, 2026 11:57
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.
PR 4 of the zero-swarm migration. Follows #67.
What
apps/world-lab/src/components/world-lab.tsxstill declaredconst swarmMode = truein four places — theWorldLabbody, aModelConsoledefault prop no caller ever passed,AgentRoster, andExperimentExportPanel— with roughly 44 references and permanently-dead!swarmModebranches behind them. The zero swarm is the only cognition architecture, so this was a fake two-mode abstraction. It is gone:grep -rn "swarmMode" apps packagesreturns zero hits, and nomodeprop, ternary, or commented-out branch replaces it. Containers left empty by a removal were removed too.Removed
!providerConfiguredblock and thereasoningUnavailablepath.providerModeactive-model-assignment-count branch.agent-model-overridesblock (per-agent model overrides for independent generative workers), and the orphanedbehaviortab value.controlledCellCountline. Territory remains in the inspector.FilterChecks, and the custom-switches fieldset — plus module-leveldefaultCustomOptions,FilterChecks, andcustomOptionLabel.Relabelled
Model configuration reads as "Agent Zero model", not a global agent model, across the trigger, dialog, headings, and aria-labels. The trigger reports planner readiness rather than an "N of M agents ready" count that could only ever be one of one.
AgentsWorkspaceno longer describes "global assignments and explicit overrides".The
ExperimentModelConfigurationschema fields (globalModelId,globalReasoningProfile,overrides) are deliberately unchanged — they live inpackages/sharedand feed the v12 export, so renaming them belongs in its own PR. Only the presentation moves; the UI now always submits an empty override list, since nothing can create one.Kept and improved
The JSON serialization control was stranded inside the dead branch even though
serializationfeeds the live swarm request, so pretty output was unreachable — it now renders in the swarm path. The export intro and the preview's cost label no longer explain themselves in terms of migration history, per the acceptance bar that a first-time reader should understand the architecture without it.Also removed an unused
snapshotprop on the export panel and a deaduseLayoutEffectimport;apps/world-lablint is now at zero warnings, down from one onmain.Tests
swarm-view.test.tsx:150is untouched — thequeryByText(/alliance|chat|personality|memory/i)negative assertion still proves those surfaces are absent. Two component tests added: the model console exposes exactly one planner row with no worker-named controls, and the export dialog offers no agent/turn/level/outcome/action filters while keeping Preview, Generate export, and serialization.Validation was run locally by the repository owner and reported green:
Scope
Carried forward to PR 5, untouched here: the stale command list and storage-schema prose in
docs/EXPERIMENT_ARCHIVE.md;simulation-service.tspassing[]tocalculateExperimentMetrics, so live metrics read zero; andmovementDirectionDistribution,longestRepeatedDirectionStreakandrecentCellRevisitsalways reading zero for want of afromCell→toCellhelper.🤖 Generated with Claude Code