Skip to content

feat: add catalog-aware Codex max effort support - #20

Merged
BohnBawerick merged 21 commits into
mainfrom
fm/fm-codex-max-effort
Oct 4, 2026
Merged

BohnBawerick merged 21 commits into
mainfrom
fm/fm-codex-max-effort

Conversation

@BohnBawerick

@BohnBawerick BohnBawerick commented Aug 29, 2026 •

Copy link
Copy Markdown
Owner

Intent

Update Codex max-effort handling so supported models such as gpt-6-astra receive model_reasoning_effort="max", unsupported catalog cases warn instead of silently downgrading, and spawn, relaunch, documentation, bootstrap validation, dispatch validation, and regression tests are covered. Use the installed Codex catalog at ${CODEX_HOME:-~/.codex}/models_cache.json. Do not support Codex ultra or alter other harnesses. Finish with a non-draft PR and green CI.

What Changed

  • Read the installed Codex model catalog to validate max effort during bootstrap and typed dispatch, pass model_reasoning_effort="max" for supported models, and warn when launch or recovery omits unsupported max settings.
  • Parse both table and list-form Lavish feedback while preserving UTF-8 text, nested target data, attachments, and rows beyond declared counts. Malformed or incomplete captures now return a nonzero result.
  • Update Pi branch outcome and Calm-mode handling for current argument rendering, preview, TUI, and export contracts, with regression coverage across spawn, relaunch, dispatch, bootstrap, and process-event paths.

Risk Assessment

✅ Low: Captain, the catalog validation now rejects malformed containers and multiple documents while preserving supported max-effort handling and warning-based fallback.

Testing

Inspected the target diff and runbook, drove isolated real Herdr and Codex sessions for supported max, missing-catalog spawn and relaunch, malformed catalogs, and forbidden ultra, then ran seven focused behavior suites. Every driven scenario passed. The terminal-facing path has pane transcripts and generated launch-command evidence; it has no browser or graphical UI to screenshot.

  • Live validation: ✅ go - 5 of 6 scenarios driven live against the product
Scenario Result Live Evidence
A user spawns Codex gpt-6-astra at max and the running Codex status bar reports GPT-6-Astra max ✅ pass live Running Codex max TUI shows GPT-6-Astra max; Supported max launch command contains model_reasoning_effort="max".
A user requests Codex max without a catalog and sees a warning instead of a silent downgrade ✅ pass live Missing catalog warning and downgrade shows the warning, an omitted effort setting, and GPT-6-Astra default.
A user relaunches an existing Codex task at max without a catalog and receives the same warning ✅ pass live Missing catalog relaunch warning shows the relaunch warning, successful replacement, omitted effort setting, and default-effort TUI.
A malformed object-shaped catalog cannot authorize Codex max during bootstrap or dispatch resolution ✅ pass live Malformed catalog rejection shows bootstrap rejecting codex:max and dispatch resolution exiting 2 before selection.
A catalog entry advertising ultra does not enable forbidden Codex ultra support ✅ pass live Codex ultra remains unsupported shows the installed catalog advertises ultra while bootstrap still rejects codex:ultra.
An operator reads the documentation and finds the catalog-backed Codex max rule ⏸️ untested no The repository defines no documentation server or renderer to exercise as a running product. Provide a supported documentation preview command to make this scenario live. The target documentation diff…
Evidence: Supported max launch command

Source: Supported max launch command

$ FM_HOME="~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home" FM_BACKEND=herdr HERDR_SESSION="fm-lab-codexmaxok-1588139-12698" FM_SPAWN_NO_GUARD=1 FM_GATE_REFUSE_BYPASS=1 bin/fm-spawn.sh codex-max-live-s3 "~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project" --scout --harness codex --model gpt-6-astra --effort max --backend herdr
Terminated                 env FM_ROOT_OVERRIDE="$FM_ROOT" FM_HOME="$FM_HOME" FM_STATE_OVERRIDE="$STATE" FM_DATA_OVERRIDE="$DATA" FM_CONFIG_OVERRIDE="$CONFIG" FM_PROJECTS_OVERRIDE="$PROJECTS" "$SCRIPT_DIR/fm-fleet-snapshot.sh" --secondmate-home-summary > "$HOME_SUMMARY_TMP" 2> "$HOME_SUMMARY_ERR_TMP"
spawned codex-max-live-s3 harness=codex kind=scout window=fm-lab-codexmaxok-1588139-12698:w1:p2 worktree=~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree

$ generated task metadata
window=fm-lab-codexmaxok-1588139-12698:w1:p2
endpoint_task_id=codex-max-live-s3
worktree=~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree
project=~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project
harness=codex
kind=scout
tasktmp=/tmp/fm-codex-max-live-s3
model=gpt-6-astra
effort=max
spawn_gen=s1790993643.1590352.24287
backend=herdr
herdr_session=fm-lab-codexmaxok-1588139-12698
herdr_workspace_id=w1
herdr_tab_id=w1:t2
herdr_pane_id=w1:p2

$ herdr pane get
{"id":"cli:pane:get","result":{"pane":{"agent":"codex","agent_status":"blocked","cwd":"~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project","focused":true,"foreground_cwd":"~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree","pane_id":"w1:p2","revision":0,"scroll":{"max_offset_from_bottom":0,"offset_from_bottom":0,"viewport_rows":40},"tab_id":"w1:t2","terminal_id":"term_65ce633c19ffa2","workspace_id":"w1"},"type":"pane_info"}}

$ herdr agent get
{"id":"cli:agent:get","result":{"agent":{"agent":"codex","agent_status":"blocked","cwd":"~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project","focused":true,"foreground_cwd":"~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree","pane_id":"w1:p2","revision":0,"state_change_seq":1,"tab_id":"w1:t2","terminal_id":"term_65ce633c19ffa2","workspace_id":"w1"},"type":"agent_info"}}

$ rendered Codex pane

  Folder access
  ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree

  Note: You’re in a subdirectory of a Git project. Trusting will apply to the repository root:
  ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project

  Trust this folder? Codex can read, edit, and run files here, subject to your permission settings. Folder settings
  can run code automatically, even without a model request. Continue only if you trust these files. Your trust
  decision will be saved.

› 1. Trust and continue
  2. Quit

  enter continue · esc quit

$ generated launch command
/tmp/fm-codex-max-live-s3+7f61ef7230097550a9da655070b0fcd327b273c802894f32725863fdccca7737/launch.s1790993643.1590352.24287.sh
export COMPACT_ADVISER_DISABLE=1; unset CLAUDE_PID CLAUDE_CODE_SESSION_ID; env -u CURSOR_AGENT -u CURSOR_INVOKED_AS -u GEMINI_CLI codex --model 'gpt-6-astra' -c 'model_reasoning_effort="max"' --dangerously-bypass-approvals-and-sandbox --disable hooks -c "notify=[\"bash\",\"-c\",\"touch '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/state/codex-max-live-s3.turn-ended'\"]" "$('~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/bin/fm-operational-input.sh' encode launch-brief < '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/data/codex-max-live-s3/launch-brief.md')"
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-upower.service-2ltG0D’: Permission denied
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-power-profiles-daemon.service-NSMN8h’: Permission denied
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-polkit.service-CM6hIi’: Permission denied
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-systemd-logind.service-hhfPnM’: Permission denied
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-bolt.service-FPPTx9’: Permission denied
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-bluetooth.service-d7U0bt’: Permission denied
find: ‘/tmp/systemd-private-339755de38d0494bad4cdbb02589ded9-NetworkManager.service-H1SQfo’: Permission denied
Evidence: Running Codex max TUI

Source: Running Codex max TUI

$ FM_HOME="~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home" FM_BACKEND=herdr HERDR_SESSION="fm-lab-codexmaxrun2-1655524-17845" FM_SPAWN_NO_GUARD=1 FM_GATE_REFUSE_BYPASS=1 FM_HOME_SUMMARY_TIMEOUT=2 bin/fm-spawn.sh codex-max-live-s6 "~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project" --scout --harness codex --model gpt-6-astra --effort max --backend herdr
Terminated                 env FM_ROOT_OVERRIDE="$FM_ROOT" FM_HOME="$FM_HOME" FM_STATE_OVERRIDE="$STATE" FM_DATA_OVERRIDE="$DATA" FM_CONFIG_OVERRIDE="$CONFIG" FM_PROJECTS_OVERRIDE="$PROJECTS" "$SCRIPT_DIR/fm-fleet-snapshot.sh" --secondmate-home-summary > "$HOME_SUMMARY_TMP" 2> "$HOME_SUMMARY_ERR_TMP"
spawned codex-max-live-s6 harness=codex kind=scout window=fm-lab-codexmaxrun2-1655524-17845:w1:p2 worktree=~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree4

$ rendered prompt before acceptance

  Folder access
  ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree4

  Note: You’re in a subdirectory of a Git project. Trusting will apply to the repository root:
  ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project

  Trust this folder? Codex can read, edit, and run files here, subject to your permission settings. Folder settings
  can run code automatically, even without a model request. Continue only if you trust these files. Your trust
  decision will be saved.

› 1. Trust and continue
  2. Quit

  enter continue · esc quit

$ accept trust after prompt is visible

$ herdr agent get after trust acceptance
{"id":"cli:agent:get","result":{"agent":{"agent":"codex","agent_status":"working","cwd":"~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project","focused":true,"foreground_cwd":"~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree4","pane_id":"w1:p2","revision":61,"state_change_seq":2,"tab_id":"w1:t2","terminal_id":"term_65ce63b5447da2","terminal_title":"⠧ Follow worker role contract | worktree4","terminal_title_stripped":"Follow worker role contract | worktree4","workspace_id":"w1"},"type":"agent_info"}}

$ rendered Codex session after trust acceptance

  Welcome. There’s no dress code, just code.


› FIRSTMATE_OP: v1 launch-brief: # Current worker role contract
  You are a crewmate: an autonomous worker agent managed by firstmate.
  This section establishes your current identity before every project or task instruction below and supersedes any
  conflicting role identity in those instructions.
  Do the assigned work yourself and report only to firstmate; do not adopt a firstmate or secondmate supervisor
  identity, delegate the task, run fleet supervision, or address the captain.
  Your steering inbox is `~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/
  home/state/codex-max-live-s6.inbox`; this exact path belongs to your current task even when it is outside the
  worktree or under the supervising firstmate home, so read and acknowledge its messages and do not reject it as
  another home's state.
  Never inspect or change any other home's endpoint namespace; this authorization is limited to the exact task paths
  named by this brief.
  When this task works on Firstmate itself, the repository root `AGENTS.md` (also imported by `CLAUDE.md`) is project
  content and the supervisor contract for the firstmate managing you: follow this brief instead of that supervisor
  contract.
  Project instructions still govern the work wherever they do not conflict with this worker identity, including
  `CONTRIBUTING.md` and `firstmate-coding-guidelines` for Firstmate changes.

  # Task

  ## Captain's intent

  State the active model and reasoning effort in one sentence, then stop without changing files.

  ## Firstmate spec

  Use the supplied Codex profile and report its runtime configuration.


◦ Working (14s • esc to interrupt)


› Ask Codex to do anything

  GPT-6-Astra max · ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree4 · Fol…
  ? for shortcuts                                                                              ⚠ 1 warning · f2 to view
Evidence: Missing catalog warning and downgrade

Source: Missing catalog warning and downgrade

$ catalog path is absent
confirmed: ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/codex-home/models_cache.json is absent

$ FM_HOME="~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home" FM_BACKEND=herdr HERDR_SESSION="fm-lab-codexwarn-1676662-13177" FM_SPAWN_NO_GUARD=1 FM_GATE_REFUSE_BYPASS=1 FM_HOME_SUMMARY_TIMEOUT=2 bin/fm-spawn.sh codex-max-warn-s4 "~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/project" --scout --harness codex --model gpt-6-astra --effort max --backend herdr
Terminated                 env FM_ROOT_OVERRIDE="$FM_ROOT" FM_HOME="$FM_HOME" FM_STATE_OVERRIDE="$STATE" FM_DATA_OVERRIDE="$DATA" FM_CONFIG_OVERRIDE="$CONFIG" FM_PROJECTS_OVERRIDE="$PROJECTS" "$SCRIPT_DIR/fm-fleet-snapshot.sh" --secondmate-home-summary > "$HOME_SUMMARY_TMP" 2> "$HOME_SUMMARY_ERR_TMP"
warning: dropped codex effort max for model gpt-6-astra; catalog does not advertise it
spawned codex-max-warn-s4 harness=codex kind=scout window=fm-lab-codexwarn-1676662-13177:w1:p2 worktree=~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree2

$ generated launch command
/tmp/fm-codex-max-warn-s4+7f61ef7230097550a9da655070b0fcd327b273c802894f32725863fdccca7737/launch.s1790993811.1680971.9418.sh
export COMPACT_ADVISER_DISABLE=1; unset CLAUDE_PID CLAUDE_CODE_SESSION_ID; env -u CURSOR_AGENT -u CURSOR_INVOKED_AS -u GEMINI_CLI codex --model 'gpt-6-astra' --dangerously-bypass-approvals-and-sandbox --disable hooks -c "notify=[\"bash\",\"-c\",\"touch '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/state/codex-max-warn-s4.turn-ended'\"]" "$('~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/bin/fm-operational-input.sh' encode launch-brief < '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/data/codex-max-warn-s4/launch-brief.md')"

$ rendered Codex session

  What’s the latest from your side of the keyboard?


› FIRSTMATE_OP: v1 launch-brief: # Current worker role contract
  You are a crewmate: an autonomous worker agent managed by firstmate.
  This section establishes your current identity before every project or task instruction below and supersedes any
  conflicting role identity in those instructions.
  Do the assigned work yourself and report only to firstmate; do not adopt a firstmate or secondmate supervisor
  identity, delegate the task, run fleet supervision, or address the captain.
  Your steering inbox is `~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/
  home/state/codex-max-warn-s4.inbox`; this exact path belongs to your current task even when it is outside the
  worktree or under the supervising firstmate home, so read and acknowledge its messages and do not reject it as
  another home's state.
  Never inspect or change any other home's endpoint namespace; this authorization is limited to the exact task paths
  named by this brief.
  When this task works on Firstmate itself, the repository root `AGENTS.md` (also imported by `CLAUDE.md`) is project
  content and the supervisor contract for the firstmate managing you: follow this brief instead of that supervisor
  contract.
  Project instructions still govern the work wherever they do not conflict with this worker identity, including
  `CONTRIBUTING.md` and `firstmate-coding-guidelines` for Firstmate changes.

  # Task

  ## Captain's intent

  Report the active model and reasoning effort, then stop without changing files.

  ## Firstmate spec

  Use the supplied Codex profile and report its runtime configuration.


◦ Working (5s • esc to interrupt)


› Ask Codex to do anything

  GPT-6-Astra default · ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree2 ·…
  ? for shortcuts                                                                              ⚠ 1 warning · f2 to view
Evidence: Missing catalog relaunch warning

Source: Missing catalog relaunch warning

$ re-provision the recorded empty lab session

$ relaunch the existing Codex task with max while the catalog is absent
Terminated                 env FM_ROOT_OVERRIDE="$FM_ROOT" FM_HOME="$FM_HOME" FM_STATE_OVERRIDE="$STATE" FM_DATA_OVERRIDE="$DATA" FM_CONFIG_OVERRIDE="$CONFIG" FM_PROJECTS_OVERRIDE="$PROJECTS" "$SCRIPT_DIR/fm-fleet-snapshot.sh" --secondmate-home-summary > "$HOME_SUMMARY_TMP" 2> "$HOME_SUMMARY_ERR_TMP"
warning: dropped codex effort max for model gpt-6-astra; catalog does not advertise it
relaunched codex-max-warn-s4 harness=codex from=codex model=gpt-6-astra effort=max backend=herdr endpoint=fm-lab-codexwarn-1676662-13177:w1:p2 worktree=~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree2

$ generated relaunch command
/tmp/fm-codex-max-warn-s4+7f61ef7230097550a9da655070b0fcd327b273c802894f32725863fdccca7737/launch.s1790993811.1680971.9418.sh
/tmp/fm-codex-max-warn-s4+7f61ef7230097550a9da655070b0fcd327b273c802894f32725863fdccca7737/launch.s1790993896.1725437.25324.sh
export COMPACT_ADVISER_DISABLE=1; unset CLAUDE_PID CLAUDE_CODE_SESSION_ID; env -u CURSOR_AGENT -u CURSOR_INVOKED_AS -u GEMINI_CLI codex --model 'gpt-6-astra' --dangerously-bypass-approvals-and-sandbox --disable hooks -c "notify=[\"bash\",\"-c\",\"touch '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/state/codex-max-warn-s4.turn-ended'\"]" "$('~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/bin/fm-operational-input.sh' encode launch-brief < '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/data/codex-max-warn-s4/launch-brief.md')"
unset TRACEPARENT; export COMPACT_ADVISER_DISABLE=1; unset CLAUDE_PID CLAUDE_CODE_SESSION_ID; env -u CURSOR_AGENT -u CURSOR_INVOKED_AS -u GEMINI_CLI codex --model 'gpt-6-astra' --dangerously-bypass-approvals-and-sandbox --disable hooks -c "notify=[\"bash\",\"-c\",\"touch '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/state/codex-max-warn-s4.turn-ended'\"]" "$('~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/bin/fm-operational-input.sh' encode launch-brief < '~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/data/codex-max-warn-s4/launch-brief.md')"

$ rendered relaunched Codex session
  When this task works on Firstmate itself, the repository root `AGENTS.md` (also imported by `CLAUDE.md`) is project
  content and the supervisor contract for the firstmate managing you: follow this brief instead of that supervisor
  contract.
  Project instructions still govern the work wherever they do not conflict with this worker identity, including
  `CONTRIBUTING.md` and `firstmate-coding-guidelines` for Firstmate changes.

  # Task

  ## Captain's intent

  Report the active model and reasoning effort, then stop without changing files.

  ## Firstmate spec

  Use the supplied Codex profile and report its runtime configuration.

  ## Progress note (2026-10-03T02:18:14Z)

  This task was relaunched. Continue from here; the local copy and every
  uncommitted change are exactly as the previous worker left them.

  First, check your instruction inbox: list ~/.no-mistakes/
  worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/state/codex-max-warn-s4.inbox/*.msg, act on
  each message in numeric order, then mv each handled file into
  ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/home/state/codex-max-
  warn-s4.inbox/handled/. A steer sent before the relaunch survives there.

  Live validation of the max-effort relaunch path.


• I’ll check the assigned inbox and runtime profile, then report the model and reasoning effort without editing project
  files.

• Working (7s • esc to interrupt)


› Ask Codex to do anything

  GPT-6-Astra default · ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/worktree2 ·…
  ? for shortcuts                                                                              ⚠ 1 warning · f2 to view
Evidence: Malformed catalog rejection

Source: Malformed catalog rejection

$ bootstrap detects malformed catalog-backed max profile
CREW_DISPATCH: invalid config/crew-dispatch.json - invalid effort: codex:max
bootstrap exit: 0

$ dispatch resolver refuses malformed catalog before selection
error: malformed rules file: ~/.no-mistakes/worktrees/842a31c92d33/01M3ZQ2NC62PJV9TSKWHZ49EYQ/.nm-live-codex-max/validation-home/config/crew-dispatch.json - each use profile effort must be supported by its harness and model
dispatch exit: 2
Evidence: Codex ultra remains unsupported

Source: Codex ultra remains unsupported

$ installed catalog entry for gpt-6-astra
{"slug":"gpt-6-astra","supported_reasoning_levels":["low","medium","high","xhigh","max","ultra"]}

$ bootstrap rejects Codex ultra even when the catalog advertises it
CREW_DISPATCH: invalid config/crew-dispatch.json - invalid effort: codex:ultra
bootstrap exit: 0

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

⚠️ **Rebase** - 1 warning
  • ⚠️ .agents/skills/harness-adapters/references/harness/codex.md - branch carries 6 commit(s) that exist on your local main branch but were never pushed to origin/main; these may be unintended bundled work (proposed PR changes 24 file(s)):
  • 8a87193 no-mistakes(document): Document Lavish result decoding guarantees
  • 2a37594 Preserve Lavish UTF-8 feedback
  • e66a604 no-mistakes(ci): Updated the malformed-capture regression to require read's nonzero incomplete verdict while retaining output assertions. tests/fm-procevent.test.sh, tests/fm-bearings-board-render.test.sh, bin/fm-lint.sh, and git diff --check pass. Serial 8 was a transient runner failure and passed six local runs
  • c1e01b4 no-mistakes(document): Document Lavish list-form feedback parsing
  • 9147025 no-mistakes(review): Parse table rows beyond declared counts
  • e9d8cc2 Handle Lavish list-form feedback

Confirm these commits belong in this PR before approving, or manually separate the intended work onto origin/main before gating.

🔧 **Review** - 1 issue found → auto-fixed ✅
  • 🚨 bin/fm-codex-catalog-lib.sh:13 - The parser does not validate the catalog container types or require one top-level JSON document. For example, {&#34;models&#34;:{&#34;entry&#34;:{&#34;slug&#34;:&#34;gpt-5&#34;,&#34;supported_reasoning_levels&#34;:{&#34;level&#34;:{&#34;effort&#34;:&#34;max&#34;}}}}} is accepted because both []? operators iterate object values. Multiple complete JSON documents are also treated as a stream. Bootstrap and dispatch can therefore approve Codex max, and spawn can pass it without warning, from a malformed cache. Require exactly one object with a models array and supported_reasoning_levels arrays before extracting capabilities.

🔧 Fix applied.
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • Live validation: ✅ go - 5 of 6 scenarios driven live against the product
Scenario Result Live Evidence
A user spawns Codex gpt-6-astra at max and the running Codex status bar reports GPT-6-Astra max ✅ pass live Running Codex max TUI shows GPT-6-Astra max; Supported max launch command contains model_reasoning_effort=&#34;max&#34;.
A user requests Codex max without a catalog and sees a warning instead of a silent downgrade ✅ pass live Missing catalog warning and downgrade shows the warning, an omitted effort setting, and GPT-6-Astra default.
A user relaunches an existing Codex task at max without a catalog and receives the same warning ✅ pass live Missing catalog relaunch warning shows the relaunch warning, successful replacement, omitted effort setting, and default-effort TUI.
A malformed object-shaped catalog cannot authorize Codex max during bootstrap or dispatch resolution ✅ pass live Malformed catalog rejection shows bootstrap rejecting codex:max and dispatch resolution exiting 2 before selection.
A catalog entry advertising ultra does not enable forbidden Codex ultra support ✅ pass live Codex ultra remains unsupported shows the installed catalog advertises ultra while bootstrap still rejects codex:ultra.
An operator reads the documentation and finds the catalog-backed Codex max rule ⏸️ untested no The repository defines no documentation server or renderer to exercise as a running product. Provide a supported documentation preview command to make this scenario live. The target documentation diff…
  • Inspected git diff 71bd89cd2ba7819d71e647849c163e695371106b..68b48e7a8896b5f25b051af32c383aa28a054ffa and read the Herdr lab runbook.
  • Live bin/fm-spawn.sh codex-max-live-s6 &lt;project&gt; --scout --harness codex --model gpt-6-astra --effort max --backend herdr in fm-lab-codexmaxrun2-1655524-17845.
  • Live missing-catalog spawn through fm-lab-codexwarn-1676662-13177.
  • Live bin/fm-control.sh codex-max-warn-s4 relaunch --effort max --note ... against the recorded Herdr session.
  • Detect-only bin/fm-bootstrap.sh against malformed max and forbidden ultra profiles.
  • bin/fm-dispatch-resolve.sh &lt;brief&gt; --project validation against an object-shaped malformed catalog.
  • tests/fm-spawn-dispatch-profile.test.sh
  • tests/fm-dispatch-resolve.test.sh
  • tests/fm-bootstrap.test.sh
  • tests/fm-secondmate-restart.test.sh
  • tests/fm-secondmate-liveness.test.sh
  • tests/fm-secondmate-sync.test.sh
  • tests/fm-secondmate-harness.test.sh
  • Confirmed all named Herdr lab sessions were removed and git status --short was empty.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@BohnBawerick
BohnBawerick force-pushed the fm/fm-codex-max-effort branch from b62b515 to f846341 Compare August 30, 2026 01:56
@BohnBawerick BohnBawerick changed the title feat(bin): add the hardened quality loop and fix agent launch defects feat(bin): add upstream fleet subsystems and Codex max reasoning effort Aug 30, 2026
@BohnBawerick BohnBawerick changed the title feat(bin): add upstream fleet subsystems and Codex max reasoning effort feat(bin): land upstream fleet subsystems and Codex max reasoning effort Aug 30, 2026
@BohnBawerick
BohnBawerick force-pushed the fm/fm-codex-max-effort branch from 0a42bec to 48b50ae Compare October 2, 2026 19:28
@BohnBawerick BohnBawerick changed the title feat(bin): land upstream fleet subsystems and Codex max reasoning effort fix: parse Lavish feedback and honor Codex max effort Oct 2, 2026
@BohnBawerick BohnBawerick changed the title fix: parse Lavish feedback and honor Codex max effort fix: validate Codex max effort and preserve Lavish feedback Oct 2, 2026
@BohnBawerick BohnBawerick changed the title fix: validate Codex max effort and preserve Lavish feedback feat: add catalog-aware Codex max effort support Oct 3, 2026
…e assertion to match nested path metadata output and added fm-codex-catalog-lib.sh to the synthetic remote-root fixture. Both affected test files pass locally. Bash syntax and git diff checks also pass
@BohnBawerick
BohnBawerick merged commit 72dbec0 into main Oct 4, 2026
19 checks passed
@BohnBawerick
BohnBawerick deleted the fm/fm-codex-max-effort branch October 4, 2026 02:01
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