Per-target author overrides and endpoint URL files - #441
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Round 1 — reviewed head 41ba327f — reviewer summarizer:hermes/gpt-5.6-terra over coverage+credentials+deployment+general+lifecycle+prose.
terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.
Verdict: 1 blocking, 0 advisory.
1 finding attached to the lines below.
Merged one blocking endpoint-validation finding supported by coverage, deployment, and prose. Rejected: none; the prose entry is duplicative rather than a rewrite, so it was merged as corroborating evidence instead of recorded separately as a suggestion.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Today the author backend and model are fleet-wide (
OUTERLOOP_AUTHOR_BACKEND/_MODEL/_ENDPOINT), so a deployment cannot trial a different author, such as a self-hosted model, on one target beside its usual authors. And a self-hosted server whose address changes on each restart cannot be used, because endpoint profiles take a fixed URL.What changes
OUTERLOOP_AUTHOR_OVERRIDES(optional deployment setting): JSON mapping a target to an author override, optionally narrowed to agent slots. Parsed and validated once at startup; a mistake is one clear error naming the setting.OUTERLOOP_ENDPOINT_<NAME>_URL_FILE(alternative to_URL): a file holding a bare URL or JSON with aurlkey, read at each session start and wake. Before a session on such an endpoint, one bounded health request (the key in a header) checks the server answers. A missing file or a dead address defers the run: fresh runs park instead of aborting, and wakes refund the retry.initprovisions every backend the fleet author and any override select before validating them.Compatibility (RELEASING.md)
Run records add optional
author_overridden(default false); backend, model, endpoint selector and credential path reuse existing fields. Status JSON adds author backend/model and override information. All records previously accepted byload_record, including records without author fields and ended records, remain readable without migration (legacy fixture exercised on first read, repeated save/read and interrupted-write retry). On the first tick, existing runs and PRs keep their established author routes and resume/panel behaviour.Fresh endpoint deferrals reuse author-sleep capacity parks without a session id; deferred wakes keep their state and refund the current delivery's retry. Rollback stays readable but loses fleet-only panel inheritance for overridden runs, and older kernels cannot resume fresh endpoint capacity parks: finish overridden runs and let endpoint parks resume before rolling back.
Upgrading:line in CHANGELOG.Tests
Parsing valid and invalid; slot matching; override at start, resume and wake; binding survives a setting change; an overridden run's panel equals a non-overridden run's; key separation with the override's credential; URL_FILE bare and JSON, re-read on wake; missing file and dead address defer without consuming a retry (fresh run and wake); fresh
initwith codex and hermes overrides; unchanged behaviour with no setting. Mutation-checked: panel independence and binding. Gate: 2495 passed, 2 skipped; ruff, format, mypy clean.Built by codex from my brief; codex self-review (2 findings) plus my cross-review (2 findings), all fixed before this PR.
🤖 Generated with Claude Code