Skip to content

Author overrides can give an author longer sessions - #451

Merged
renmengye merged 3 commits into
mainfrom
feat/override-session-limits
Oct 1, 2026
Merged

renmengye merged 3 commits into
mainfrom
feat/override-session-limits

Conversation

@renmengye

Copy link
Copy Markdown
Member

Authors on slower self-hosted models can need more time and turns than an API model for the same work, but every author session is capped at the code defaults (90 minutes, 120 turns, in a 120-minute job), and a contract can only lower them.

  • OUTERLOOP_AUTHOR_OVERRIDES entries (object and list forms) accept optional session_minutes (10–240) and session_max_turns (10–300). Operator-only: a contract can still lower them (effective = the smaller of the two), never raise them. Out-of-range values fail validation.
  • The limits bind at claim into the run record (author_limits), so a later settings change does not alter a running run. Every session path of the run uses them: fresh climb from the tick, direct climb (re-clamped against the cloned contract), wakes, author-sleep wakes, review replies and panel revisions.
  • The attempt job walltime follows: session + 20 minutes of overhead, plus the panel allowance, within OUTERLOOP_MAX_JOB_MINUTES. At the cap the session is kept and the panel allowance is cut. An explicit --job-minutes 0 still turns the self-deadline off.
  • Stored limits are read tolerantly. A damaged or partial record falls back to the defaults, and values are clamped to the floors and the override ceilings, so a wake never crashes on them. A malformed --author-limits is an argument error.
  • Judges are unchanged. Settings without the new fields produce the same argv and the same record bytes as before.

Compatibility: run records gain an optional author_limits field, written only for runs bound to an override that sets the new fields. Legacy records and settings are unchanged (wire-shape test test_no_override_record_keeps_wire_bytes); no backfill. Older kernels drop the unknown field on load, so a rolled-back kernel runs such a run with the default limits. The Upgrading: line is in the CHANGELOG.

Review: built by Codex (its own gate green). I reviewed it, checking the job ceiling (the 6-hour default cap fits a 240-minute session) and adding the tolerant reader. GLM-5.3 cross-reviewed it: no medium or higher findings; the three low ones (ceilings on stored limits, --author-limits validation, --job-minutes 0) are fixed here. Gate: pytest, ruff check, ruff format --check, mypy.

Optional session_minutes (10-240) and session_max_turns (10-300) on an
OUTERLOOP_AUTHOR_OVERRIDES entry, for authors on slower self-hosted
models. Operator-only: a contract can still lower them. The limits bind at
claim into the run record, every session path of the run uses them, and the
job walltime follows the session within the operator job cap. Judges are
unchanged, and settings without the fields behave as before.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 1 — reviewed head 5f7b033d — 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: nothing blocking — 4 advisory notes.

3 findings attached to the lines below.

Advisory (non-blocking):

  • Suggestion: The minutes ceiling test leaves values 241 through 300 untested. [coverage] Both parameter sets use 301 as the invalid value, so an implementation that accepts session_minutes 241 through 300 would still pass despite the documented 240-minute cap. (tests/test_author_overrides.py:715; high confidence)

Four findings recorded. Rejected: none; the deployment, general, and prose reports about malformed author-limit input were merged because they identify the same bound_limits coercion defect, with the combined finding retaining each distinct consequence.

Comment thread src/outerloop/attempt.py
Comment thread src/outerloop/limits.py Outdated
Comment thread docs/install.md
…-limits

# Conflicts:
#	CHANGELOG.md
#	tests/test_author_overrides.py
@renmengye renmengye added the autoresearch:review Request a fresh advisory review of this PR's current state label Oct 1, 2026

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 1 — reviewed head 7450cd1e — reviewer hermes/gpt-5.6-terra.

terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.

Verdict: no defects found.

@renmengye
renmengye merged commit 1312453 into main Oct 1, 2026
5 checks passed
@renmengye
renmengye deleted the feat/override-session-limits branch October 1, 2026 04:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autoresearch:review Request a fresh advisory review of this PR's current state

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant