Skip to content

Make templates fully harness-agnostic: move image/model/auth to harness-config #98

Description

@scion-gteam

Summary

Templates should be strictly harness-agnostic — they define the agent's role (instructions, prompts, env vars, resources), not its execution mechanics. However, several harness-specific fields still leak into the template layer:

  1. image — container image belongs to the harness-config, not the template
  2. model — LLM model identifier is harness-specific; templates should use size aliases instead
  3. auth_selectedType — authentication mechanism is a harness concern

These fields are currently accepted in scion-agent.yaml (the template config) and documented in templates.md, blurring the template/harness-config boundary.

Related Issues

Proposed Changes

1. Deprecate harness-specific fields in scion-agent.yaml

Mark image, model (when set to a concrete model name), and auth_selectedType as deprecated in the agent schema (agent-v1.schema.json). They continue to work for backward compatibility as override values, but emit deprecation warnings during template validation.

2. Implement model size aliases

Add model_aliases map to HarnessConfigEntry so harness-configs can define:

# harness-configs/claude/config.yaml
model_aliases:
  small: haiku
  medium: sonnet
  large: opus

Templates then use the abstract alias:

# templates/code-reviewer/scion-agent.yaml
model: large    # resolved to "opus" when using claude harness-config

Concrete model names pass through unchanged for backward compatibility.

3. Update documentation

Update templates.md to:

  • Remove image/model/auth from template config examples
  • Document model size aliases as the recommended approach
  • Clarify that harness-specific overrides in templates are deprecated

4. Add deprecation warnings

ValidateAgnosticTemplate warns when a template uses image, auth_selectedType, or a concrete (non-alias) model value, guiding users to move these to harness-configs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions