Relationships
#3330 Build each swamp model command from a factory so behavior can share it (no visible change)
Opened by stack72 · 10/12/2026· Shipped 10/13/2026
Summary
Prepare the swamp model command tree so a second, independent copy of each command can be built for swamp behavior, without changing anything a user can see.
Scope
- Turn each
modelleaf and sub-group (create, get, edit, delete, validate, evaluate, search/list, cancel, type describe/search, method describe, method history get/search/logs, output get/search/logs/data, and thehistory/output/typegroups with their shorthand positionals) into a factory parameterised by per-surface text, the same waycreateModelMethodRunCommand(syntax)already works. Cliffy reparents shared instances, so each surface needs its own instance. - Action bodies, libswamp calls, audit actions, telemetry and output stay shared and unchanged.
Acceptance
swamp helpJSON and generated shell completions for the wholemodeltree are byte-identical between main and the branch.- Released-vs-branch binary output matrix for every legacy leaf (log and JSON) is identical.
Direction
behavior replaces model as the product term wherever people or agents read it. swamp-club#3265 shipped swamp behavior run (alias behaviour) as a CLI word only; this series takes the term product-wide.
Glossary: model → behavior, model definition → behavior definition, model type → behavior type, model output → behavior output. "method" stays: swamp behavior run <behavior> <method>.
Compatibility rule (applies to every issue in the series)
The existing system MUST NOT regress. Every change is additive: behavior is the preferred spelling, and every model spelling and stored format keeps working exactly as today.
Unchanged: the models/ directory and .swamp/ layout, JSON output keys and error codes (model_not_found, model_id, ...), audit action names as stored (model.method.run, ...), serve protocol, CEL model.*, libswamp and domain class names, log categories. Writers keep emitting the old form of any stored format.
No-regress gates: swamp-uat passes unchanged (new UAT tests are only added, tracked separately); legacy commands give byte-identical output and exit codes on the released binary vs the branch binary in log and JSON mode; every new test is red-checked against main.
Series
- Design record — the glossary and compatibility rules in design/
2a. Factory refactor of the
modelcommand tree, no visible change 2b. The fullswamp behaviorcommand tree and behavior wording - Skills and generated agent guidance
- Serve dashboard wording
- Stored formats accept the behavior spellings alongside model ones
Shipped
Click a lifecycle step above to view its details.
Sign in to post a ripple.