fix(p16): the pre-call announcement must state the cap the run will use, not the constants

announce() read _DEFAULT_MAX_ROUNDS/_DEFAULT_MAX_TOKENS directly, which was correct only while
main() could not do otherwise. MEASURED on the first free drill after --max-rounds landed: the same
stdout said "Stops at: 3 rounds / 100000 tokens" two lines above "max_rounds=8, max_tokens=120000".
The announcement is the ONE thing printed before the first paid call and its whole job is to say
what the run will do -- the Fase-3 class, introduced by the very flag being announced.

Load-bearing MEASURED: arm (f) red before the fix; M16 (read the constants again) -> 1 red, that
arm ALONE. Green control 1670/5, golden BYTE-UNCHANGED (ea8c534...).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-09-14 12:21:29 +02:00
commit a61a3ccda7
3 changed files with 55 additions and 2 deletions

View file

@ -3726,8 +3726,15 @@ def main(argv: list[str] | None = None) -> int:
announce(
mandate,
project_id=args.project_id or "the portfolio",
max_rounds=_DEFAULT_MAX_ROUNDS,
max_tokens=_DEFAULT_MAX_TOKENS,
# From ARGV, never the constants (P16 B2). The announcement is the one thing
# printed BEFORE the first paid call, and its whole job is to say what this run
# will do; reading the defaults was correct only while main() could not do
# otherwise. MEASURED on the first free drill after --max-rounds landed: the same
# stdout said "Stops at: 3 rounds / 100000 tokens" two lines above
# "max_rounds=8, max_tokens=120000" -- the Fase-3 class, introduced by the very
# flag being announced.
max_rounds=args.max_rounds,
max_tokens=args.max_tokens,
dimension_label=dimension_label,
external_services=service_labels(mcp_servers),
)