Skip to content

Make templates fully harness-agnostic: model aliases, deprecate image/auth#106

Closed
scion-gteam[bot] wants to merge 4 commits into
mainfrom
cleanup/templates-harness-agnostic
Closed

Make templates fully harness-agnostic: model aliases, deprecate image/auth#106
scion-gteam[bot] wants to merge 4 commits into
mainfrom
cleanup/templates-harness-agnostic

Conversation

@scion-gteam
Copy link
Copy Markdown

@scion-gteam scion-gteam Bot commented May 31, 2026

Summary

Templates should be strictly harness-agnostic — they define the agent's role, not its execution mechanics. This PR:

  • Adds model size aliases (small, medium, large) to harness-configs, resolved to concrete model names at provision time. Templates can use model: large instead of model: opus, making them portable across Claude, Gemini, and other backends.
  • Deprecates harness-specific fields (image, auth_selectedType, concrete model names) in scion-agent.yaml with warnings, guiding users to move these to harness-config config.yaml.
  • Updates documentation (templates.md) to clarify the template/harness-config boundary and document model aliases.

Closes #98. Implements the model alias portion of #42.

Changes

  • pkg/config/settings_v1.go: Add ModelAliases to HarnessConfigEntry
  • pkg/config/templates.go: Add ResolveModelAlias(), WarnDeprecatedTemplateFields(), KnownModelAliases
  • pkg/agent/provision.go: Wire alias resolution and deprecation warnings into provisioning flow
  • pkg/config/schemas/agent-v1.schema.json: Mark image, auth_selectedType as deprecated; update model description
  • pkg/config/schemas/settings-v1.schema.json: Add model_aliases property to harness config schema
  • pkg/hubclient/types.go, pkg/store/models.go: Add ModelAliases to HarnessConfigData
  • pkg/harness/*/embeds/config.yaml: Seed default model aliases for all harnesses
  • docs-site/src/content/docs/advanced-local/templates.md: Document model aliases, clarify harness-agnostic boundary

Backward Compatibility

  • Concrete model names in templates pass through unchanged
  • image and auth_selectedType still work as override values
  • No breaking changes to API types or persisted config

Test plan

  • Unit tests for ResolveModelAlias() — alias resolution, concrete passthrough, nil/empty handling
  • Unit tests for WarnDeprecatedTemplateFields() — all deprecated field combinations
  • Unit tests for KnownModelAliases — canonical alias set validation
  • Existing template and merge tests pass
  • go vet and go build pass

ptone added 4 commits May 31, 2026 16:34
Templates should be strictly harness-agnostic. This change:

- Adds ModelAliases (small/medium/large) to HarnessConfigEntry so each
  harness-config can map abstract sizes to concrete model names
- Adds ResolveModelAlias() to resolve aliases at provision time
- Adds WarnDeprecatedTemplateFields() to warn when templates use
  image, auth_selectedType, or concrete model names
- Marks image and auth_selectedType as deprecated in agent-v1 schema
- Updates model field description to recommend size aliases
- Adds model_aliases to settings-v1 schema
- Seeds default model_aliases in all harness embeds (claude, gemini,
  opencode, codex)
- Wires alias resolution and deprecation warnings into ProvisionAgent

Concrete model names in templates still work (pass-through) for
backward compatibility. Refs #98, relates to #42.
… boundary

- Add note that image/model/auth belong in harness-config, not templates
- Add "Model Size Aliases" section explaining small/medium/large aliases
- Update harness-config customization example to show alias mapping

Refs #98
Tests cover:
- ResolveModelAlias: alias resolution, concrete passthrough, nil/empty
  handling, unmapped aliases
- WarnDeprecatedTemplateFields: clean templates, size alias models,
  deprecated image/auth/concrete-model fields
- KnownModelAliases: validates the canonical alias set

Refs #98
@ptone ptone closed this May 31, 2026
@ptone
Copy link
Copy Markdown
Owner

ptone commented May 31, 2026

This pull request has been recreated on the target repository as GoogleCloudPlatform#276.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

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

1 participant