Skip to main content
← Back to list
01Issue
FeatureShippedSwamp CLIPublic
Assigneesstack72

Relationships

#3338 Extensions accept export const behavior, extensions/behaviors/ and a behaviors: manifest key alongside model

Opened by stack72 · 10/12/2026· Shipped 10/13/2026

Summary

Let extension authors use the behavior spelling, while the model spelling stays accepted and is still what swamp writes. Split out of swamp-club#3334, which keeps workflow steps, serve grants and audit filters.

Scope

  • export const behavior = {...} accepted wherever export const model is: export detection, the model kind adapter, the extension loader (both exports in one file is an error), the remote worker bundle cache, content extractor and catalog-gap checks, push messages. packages/testing exports defineBehavior as an alias of defineModel.
  • An extensions/behaviors/ directory loaded alongside extensions/models/ (CLI, serve reload and watcher, source repos, auto-discovery). The same type in both directories is a duplicate-type error.
  • The extension manifest accepts a behaviors: key merged into models: (both keys together is an error). Push re-emits models: and keeps the archive's models/ layout, so pull and the registry are unchanged.

Acceptance

  • Extensions built with the last release load, push and pull identically.
  • Swapping export const model for export const behavior gives identical extractor metadata, catalog results and runtime behaviour, locally and on a remote worker.
  • A pushed archive from a behaviors: manifest parses with the last release.
  • Minimum worker and client version for behavior-spelled extensions is documented.

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

  1. Design record — the glossary and compatibility rules in design/ 2a. Factory refactor of the model command tree, no visible change 2b. The full swamp behavior command tree and behavior wording
  2. Skills and generated agent guidance
  3. Serve dashboard wording
  4. Stored formats accept the behavior spellings alongside model ones
02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 16 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/13/2026, 7:04:50 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack7210/12/2026, 11:21:06 PM

Sign in to post a ripple.