Rewrite Ultimate roles for the WASI world and explicit repositories. Add approved proxy model families, ordered overlays, and executable parser and asset checks.
World agents and families
The built-in agent files live in /src/sausage/agents/ in the world.
models.json is the world family file. It contains a map from each family to model and thinking.
Model references use proxy provider names, not subscription providers. The host owns credentials and injects them outside the world.
| Family | Model | Thinking |
|---|---|---|
| default, fast | openai/gpt-6.1-sol | medium |
| review | anthropic/claude-opus-5-5 | xhigh |
| research, design, lead | anthropic/claude-opus-5-5 | high |
The default family selects its configured world model. It does not inherit a subscription model from the parent.
All independent reviewers use review. Architecture remains advisory. This choice follows D30 instead of Ultimate’s mixed-model defaults.
Scout uses research. Watcher uses fast. Worker and dream-pass retain fast: true.
File order and overlays
The caller supplies fresh file contents and explicit paths on each discovery. The parser performs no I/O.
It reads sorted immediate *.md children of the built-in agents/ directory, then <repo>/.sausage/agents/.
Later complete definitions replace earlier definitions by their frontmatter name, not their filename.
Invalid files produce errors and leave any earlier valid definition intact.
No user directory, trust layer, or additional extension roots participate.
An overlay has name and addTools. Use addTools: [] for settings only. An overlay cannot contain tools.
Its settings replace earlier settings. Its tools and denials accumulate without duplicates.
Its body appends under ## Project additions. The original definition retains its path and source.
A family overlay without a model removes an earlier model pin. Unknown families fall back to default.
A model pin overrides its family. Explicit thinking overrides a model suffix and family thinking.
Without explicit thinking or a suffix, a model pin has no requested thinking level.
The caller supplies the configured model catalog. Unknown model pins produce discovery errors.
sausage-coordinator.md ports Ultimate’s repo coordinator overlay. Its filename sorts after coordinator.md.
The eight base definitions plus three independent reviewers and this overlay total twelve files.
Do not rename the overlay before its base in lexical order.
Parser contract and tests
extensions/core/agents.ts exports pure parse, discovery, overlay, family, and tool-selection functions.
It supports scalar fields and flow lists. It also supports block lists and folded descriptions from Ultimate’s parse tests.
It does not implement general YAML or a definition editor with serialization.
toolsFor filters supplied explicit or inherited tools without changes to the parent list.
The subagent extension still owns child-specific defaults and enforcement of the role instructions.
Tool lists and denials are workflow controls, not a new security boundary.
Run the tiny runner from this repository root with Node 24 or newer:
nix develop -c node extensions/core/agents.test.ts
The test runner uses Node filesystem and assertion APIs. The parser imports no Node APIs or packages. Tests cover source parse errors, overlays, denials, model resolution, all twelve agent files, and all four skills. These files define P3 behavior. They do not install the later runtime extensions or load the live world.