Relationships
#3334 Workflow YAML, extension exports and serve grants accept the behavior spelling alongside model
Opened by stack72 · 10/12/2026· Shipped 10/13/2026
Summary
Let users author with the behavior spelling in every stored format, while the model spelling stays accepted and is still what swamp writes.
Scope
- Workflow step YAML: also accept
type: behaviorwithbehavior/behaviorType/behaviorName, normalised by the existing compatibility preprocessing to the currentmodel_methodstep. Swamp keeps writing themodel_methodform so older binaries can still read repos. - Extension API: also accept
export const behavior = {...}and anextensions/behaviors/directory alongsideexport const modelandextensions/models/, in loading, bundling, the content extractor and push/pull. - Serve grants:
behavior:<type>is an exact synonym ofmodel:<type>, normalised the same way (swamp-club#3130: a misspelled deny must not silently match nothing). - Audit filters accept
behavior.*spellings; stored audit actions staymodel.*.
Out of scope: models/ directory, JSON keys, error codes, CEL model.*.
Acceptance
- Workflow YAML, extensions and serve grants created with the last release load and behave identically on the branch.
- Property test: old and new YAML spellings normalise to the same step.
- A
behavior:deny matches everything the equivalentmodel:deny matches. - A repo touched by the new binary still works with the previous release.
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.