Skip to content

Harness: accept opencode2 as an alias of runner - #1364

Merged
ualtinok merged 1 commit into
mainfrom
land/harness-opencode2-alias
Nov 3, 2026
Merged

ualtinok merged 1 commit into
mainfrom
land/harness-opencode2-alias

Conversation

@aft-alfonso

@aft-alfonso aft-alfonso Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Thalamus's OpenCode 2 runner binds with harness opencode2 (live since 14:41Z), and AFT refused core's plan preflight for its first head: configure payload invalid field 'harness'.

THALAMUS confirmed what these sessions are: their AFT calls arrive over Thalamus's own scoped routes as tool-provider calls (call_key, schema pin), consent goes through core and Cingulate, and AFT's OpenCode plugin is never loaded on that server. So they are runner sessions.

  • Harness::from_str("opencode2") → Harness::Runner (storage namespace runner, consent through core, runner reply shape). Only the exact spelling is an alias. The route identity keeps the name the daemon sent, so wakes, pushes and catalog params still address opencode2.
  • (thalamus-harness, opencode2) joins (thalamus-harness, opencode) as a first-party pair; THALAMUS confirmed its routes bind as reserved:thalamus-harness. Any other module on opencode2 stays untrusted.

Tests: opencode2_parses_as_the_runner_harness, thalamus_harness_on_opencode2_is_first_party, and opencode2 (trailing space) added to the stays-untrusted list. Gate: 386 harness, subc trust, configure, subc_config, access-grant and semantic-admission tests, formatting and the Windows check.


Summary by cubic

Treats sessions Thalamus runs on an OpenCode 2 server as runner sessions so AFT's plan preflight no longer rejects them with configure payload invalid field 'harness'.

  • opencode2 now parses as Harness::Runner, keeping the runner storage namespace, consent route, and reply shape; only the exact spelling is aliased.
  • The route identity keeps the name the daemon sent, so wakes, pushes, and catalog params still address opencode2.
  • (thalamus-harness, opencode2) is now a first-party pair like the existing (thalamus-harness, opencode); any other module binding opencode2 stays untrusted.

Written for commit 4217402. Summary will update on new commits.

View guided diff Turn on auto-fix

Thalamus's OpenCode 2 runner binds with harness opencode2, and AFT refused
core's plan preflight for its first head ('configure payload invalid field
harness'). Those sessions' AFT calls arrive over Thalamus's scoped routes,
consent goes through core, and AFT's OpenCode plugin is never loaded on that
server, so they are runner sessions: opencode2 parses as Harness::Runner
(storage, consent route, reply shape). The route identity keeps the name the
daemon sent. thalamus-harness binding for opencode2 is first-party, like its
existing opencode pair.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
@ualtinok
ualtinok added this pull request to the merge queue Nov 3, 2026
Merged via the queue into main with commit 85abc84 Nov 3, 2026
84 of 85 checks passed
@ualtinok
ualtinok deleted the land/harness-opencode2-alias branch November 3, 2026 18:32
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.

1 participant