Course · Codex · Models & effort
Models & effort
The last chapter closed one gap: budgetcli’s conventions are written down, so Codex stops re-guessing them every session. That gap closed, a different one opens straight away. Knowing the rules doesn’t tell the agent how hard to think about the turn in front of it - that’s a knob the rules chapter never touched. Thinking is a cost, in tokens and in the time you wait for an answer, and only the task in front of you can say how much of it is earned.
Two tasks, one afternoon
Section titled “Two tasks, one afternoon”Two jobs sit at opposite ends of this chapter, and you’ll run both of them through every dial it has. One is src/budgetcli/routes/accounts.py - a plain CRUD endpoint that mirrors a pattern already sitting in src/budgetcli/routes/transactions.py, with one right answer and nothing to weigh. The other is src/budgetcli/categorise/rules.py, the categorisation rules engine - how a rule matches a transaction, how two rules that both claim it get resolved - a genuine fork with several defensible designs.
Size doesn’t tell them apart, which is worth sitting with before you touch a single dial. rules.py, once built, runs 512 lines - about 5,120 tokens estimated at ten per line - noticeably bigger than the accounts endpoint will be. Bigger isn’t harder, though. Ambiguity is what decides the dial, and the accounts endpoint has none. Run the same setting on both tasks and you find out fast whether it’s earning its keep.
The claim this chapter proves
Section titled “The claim this chapter proves”Here it is, before you’ve moved anything. Run the accounts endpoint through every effort level Codex has, on either model, and the code that comes back is the same four routes every time - the only thing that changes is how long you wait and how much you paid for the wait. Run the rules engine through the identical stops and the code stops being identical: most of them don’t even ask the question that decides it. Same stops, same two knobs, one task where the answer never moves and one where it moves every time you undershoot it.
The rest of this chapter proves that, stop by stop, on both tasks, and ends on one table that says which setting earns its keep on which shape of task:
- Move the effort dial through all five levels Codex exposes, on both tasks, holding the model fixed.
- Move the model instead - the other knob - holding effort fixed, to prove the two really are independent.
- Bundle both into a profile, the way you already bundled trust settings, so the right pairing comes back with one flag instead of two.
- Read the bill without ever seeing a price tag, and close the chapter on the decision matrix every earlier stop was building toward.
Start with the dial that moves first and costs the least to get wrong - the reasoning-effort levels, run against both tasks.