From ba14d9a343d08e14b3abbb5e22fe65239afce410 Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 08:18:13 -0600 Subject: [PATCH 1/7] feat(opencode): add Terra coding subagent --- opencode-server/Chart.yaml | 2 +- opencode-server/README.md | 2 +- opencode-server/docs/agent-instruction-architecture.md | 8 ++++++++ opencode-server/files/agents/terra.md | 6 ++++++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 opencode-server/files/agents/terra.md diff --git a/opencode-server/Chart.yaml b/opencode-server/Chart.yaml index 3968e7c..96fe895 100644 --- a/opencode-server/Chart.yaml +++ b/opencode-server/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: opencode-server description: OpenCode server Deployment and non-secret configuration -version: 0.1.78 +version: 0.1.79 appVersion: "1.18.29" type: application diff --git a/opencode-server/README.md b/opencode-server/README.md index d423cdf..9ddc1d4 100644 --- a/opencode-server/README.md +++ b/opencode-server/README.md @@ -14,7 +14,7 @@ The chart copies these immutable package inputs into `/home/opencode/.config/ope - `files/opencode.json` — providers, enabled MCP integrations, default agent, and global OpenCode configuration - `files/AGENTS.md` — shared instructions loaded by every agent -- `files/agents/*.md` — owner-specific primary agents, model-backed subagents for delegated passes, and specialized read-only SDLC subagents (adversarial code review, QA coverage and documentation adequacy, release readiness, infrastructure security, documentation drafting) +- `files/agents/*.md` — owner-specific primary agents, the generic `terra` execution subagent, model-backed subagents for delegated passes, and specialized read-only SDLC subagents (adversarial code review, QA coverage and documentation adequacy, release readiness, infrastructure security, documentation drafting) - `files/skills/*/SKILL.md` — specialized operational workflows A change to any packaged file is chart content and requires a new `Chart.yaml` version. See [Agent instruction architecture](docs/agent-instruction-architecture.md) for the primary-agent, subagent, and shared-instruction design. diff --git a/opencode-server/docs/agent-instruction-architecture.md b/opencode-server/docs/agent-instruction-architecture.md index 232afa0..417cace 100644 --- a/opencode-server/docs/agent-instruction-architecture.md +++ b/opencode-server/docs/agent-instruction-architecture.md @@ -85,6 +85,14 @@ interpretation, architecture, safety, cross-repository impact, mutation authorization, and final synthesis; it verifies material findings. Independent scopes may run in parallel. +[`files/agents/terra.md`](../files/agents/terra.md) defines `terra`, a +full-capability, generic execution subagent using `openai/gpt-5.6-terra` with +the default variant. A primary may select it for bounded coding, debugging, or +repository tasks when it needs execution capacity. It does not change the +`default` primary-agent selection or delegate primary ownership; the assigning +primary must supply authority, scope, safety constraints, and completion +criteria in the task prompt. + The repository-capable `kimi` and `kimi-256k` subagents include a compact, self-contained `codebase-memory` and GitHub routing rule because they may perform bounded repository passes. Other subagents receive their authoritative sources, diff --git a/opencode-server/files/agents/terra.md b/opencode-server/files/agents/terra.md new file mode 100644 index 0000000..8bca256 --- /dev/null +++ b/opencode-server/files/agents/terra.md @@ -0,0 +1,6 @@ +--- +description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis +mode: subagent +model: openai/gpt-5.6-terra +variant: default +--- From 2f022b3c713b58bc7f9afa36c3ce79ef3ea54fce Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 08:33:46 -0600 Subject: [PATCH 2/7] fix(opencode): use minor version for Terra feature --- opencode-server/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencode-server/Chart.yaml b/opencode-server/Chart.yaml index 96fe895..0d7387f 100644 --- a/opencode-server/Chart.yaml +++ b/opencode-server/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: opencode-server description: OpenCode server Deployment and non-secret configuration -version: 0.1.79 +version: 0.2.0 appVersion: "1.18.29" type: application From 69eba5592173b73c9b192476d5ec738e79b40209 Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 08:42:00 -0600 Subject: [PATCH 3/7] test(opencode): verify Terra agent packaging --- Makefile | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 861f424..e1a6840 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: changed-charts list-charts list-charts-json package-chart test +.PHONY: changed-charts list-charts list-charts-json package-chart test test-opencode-server-agents SHELL := /bin/bash CHARTS := $(shell find . -maxdepth 2 -name Chart.yaml -printf '%h\n' | cut -d'/' -f2 | sort -u) @@ -19,3 +19,17 @@ package-chart: test: @for chart in $(CHARTS); do helm lint --strict "$$chart" && helm template test "$$chart" > /dev/null; done + @$(MAKE) test-opencode-server-agents + +test-opencode-server-agents: + @rendered="$$(helm template test opencode-server)"; \ + echo "$$rendered" | grep -Fqx ' terra.md: |-'; \ + echo "$$rendered" | grep -Fqx ' mode: subagent'; \ + echo "$$rendered" | grep -Fqx ' model: openai/gpt-5.6-terra'; \ + echo "$$rendered" | grep -Fqx ' variant: default'; \ + echo "$$rendered" | grep -Fqx ' - key: terra.md'; \ + echo "$$rendered" | grep -Fqx ' path: agents/terra.md'; \ + archive_dir="$$(mktemp -d)"; \ + trap 'rm -rf "$$archive_dir"' EXIT; \ + helm package opencode-server --destination "$$archive_dir" > /dev/null; \ + tar -tzf "$$archive_dir/opencode-server-0.2.0.tgz" | grep -Fqx 'opencode-server/files/agents/terra.md' From 09f88870cfcfc3861ad82b0664b7530db793e038 Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 08:49:05 -0600 Subject: [PATCH 4/7] fix(test): fail fast on Terra packaging assertions --- Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e1a6840..668ecde 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,8 @@ test: @$(MAKE) test-opencode-server-agents test-opencode-server-agents: - @rendered="$$(helm template test opencode-server)"; \ + @set -euo pipefail; \ + rendered="$$(helm template test opencode-server)"; \ echo "$$rendered" | grep -Fqx ' terra.md: |-'; \ echo "$$rendered" | grep -Fqx ' mode: subagent'; \ echo "$$rendered" | grep -Fqx ' model: openai/gpt-5.6-terra'; \ @@ -32,4 +33,6 @@ test-opencode-server-agents: archive_dir="$$(mktemp -d)"; \ trap 'rm -rf "$$archive_dir"' EXIT; \ helm package opencode-server --destination "$$archive_dir" > /dev/null; \ - tar -tzf "$$archive_dir/opencode-server-0.2.0.tgz" | grep -Fqx 'opencode-server/files/agents/terra.md' + archive="$$(find "$$archive_dir" -maxdepth 1 -type f -name 'opencode-server-*.tgz' -print -quit)"; \ + test -n "$$archive"; \ + tar -tzf "$$archive" | grep -Fqx 'opencode-server/files/agents/terra.md' From 552a74c1a83b2f2c5697fe32b1e702c0063bd45e Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 08:51:57 -0600 Subject: [PATCH 5/7] test(opencode): assert Terra agent contract --- Makefile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 668ecde..de4abd7 100644 --- a/Makefile +++ b/Makefile @@ -23,8 +23,13 @@ test: test-opencode-server-agents: @set -euo pipefail; \ + expected="$$(printf '%s\n' '---' 'description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis' 'mode: subagent' 'model: openai/gpt-5.6-terra' 'variant: default' '---')"; \ + test "$$(cat opencode-server/files/agents/terra.md)" = "$$expected"; \ + grep -Fqx 'version: 0.2.0' opencode-server/Chart.yaml; \ + grep -Fqx ' "default_agent": "default",' opencode-server/files/opencode.json; \ rendered="$$(helm template test opencode-server)"; \ echo "$$rendered" | grep -Fqx ' terra.md: |-'; \ + echo "$$rendered" | grep -Fqx ' description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis'; \ echo "$$rendered" | grep -Fqx ' mode: subagent'; \ echo "$$rendered" | grep -Fqx ' model: openai/gpt-5.6-terra'; \ echo "$$rendered" | grep -Fqx ' variant: default'; \ @@ -33,6 +38,6 @@ test-opencode-server-agents: archive_dir="$$(mktemp -d)"; \ trap 'rm -rf "$$archive_dir"' EXIT; \ helm package opencode-server --destination "$$archive_dir" > /dev/null; \ - archive="$$(find "$$archive_dir" -maxdepth 1 -type f -name 'opencode-server-*.tgz' -print -quit)"; \ + archive="$$(find "$$archive_dir" -maxdepth 1 -type f -name 'opencode-server-0.2.0.tgz' -print -quit)"; \ test -n "$$archive"; \ tar -tzf "$$archive" | grep -Fqx 'opencode-server/files/agents/terra.md' From 3e323aaf554d7aafc9464eaeb93e2e5c1ce6b950 Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 09:00:37 -0600 Subject: [PATCH 6/7] feat(opencode): clarify Terra routing cue --- opencode-server/files/agents/terra.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opencode-server/files/agents/terra.md b/opencode-server/files/agents/terra.md index 8bca256..649a83f 100644 --- a/opencode-server/files/agents/terra.md +++ b/opencode-server/files/agents/terra.md @@ -1,5 +1,5 @@ --- -description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis +description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent's execution budget is nearing completion or it otherwise needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis mode: subagent model: openai/gpt-5.6-terra variant: default From 6a1d1504eab8b3b2cea697c28f788058f0702c68 Mon Sep 17 00:00:00 2001 From: Steven Welch Date: Mon, 14 Sep 2026 09:01:02 -0600 Subject: [PATCH 7/7] test(opencode): cover Terra routing cue --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index de4abd7..130951d 100644 --- a/Makefile +++ b/Makefile @@ -23,13 +23,13 @@ test: test-opencode-server-agents: @set -euo pipefail; \ - expected="$$(printf '%s\n' '---' 'description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis' 'mode: subagent' 'model: openai/gpt-5.6-terra' 'variant: default' '---')"; \ + expected="$$(printf '%s\n' '---' "description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent's execution budget is nearing completion or it otherwise needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis" 'mode: subagent' 'model: openai/gpt-5.6-terra' 'variant: default' '---')"; \ test "$$(cat opencode-server/files/agents/terra.md)" = "$$expected"; \ grep -Fqx 'version: 0.2.0' opencode-server/Chart.yaml; \ grep -Fqx ' "default_agent": "default",' opencode-server/files/opencode.json; \ rendered="$$(helm template test opencode-server)"; \ echo "$$rendered" | grep -Fqx ' terra.md: |-'; \ - echo "$$rendered" | grep -Fqx ' description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis'; \ + echo "$$rendered" | grep -Fqx " description: Use for bounded generic coding, debugging, or repository tasks when the assigning primary agent's execution budget is nearing completion or it otherwise needs execution capacity; the primary retains task interpretation, safety, delivery decisions, and final synthesis"; \ echo "$$rendered" | grep -Fqx ' mode: subagent'; \ echo "$$rendered" | grep -Fqx ' model: openai/gpt-5.6-terra'; \ echo "$$rendered" | grep -Fqx ' variant: default'; \