Skip to content

Settings: what the web costs, written down — Web Search + Research Mode (v0.21.267) - #70

Merged
QR-Madness merged 1 commit into
masterfrom
feat/settings-web-spend
Aug 7, 2026
Merged

Settings: what the web costs, written down — Web Search + Research Mode (v0.21.267)#70
QR-Madness merged 1 commit into
masterfrom
feat/settings-web-spend

Conversation

@QR-Madness

Copy link
Copy Markdown
Owner

Wave 3.3 of the settings campaign. 31 keys across two screens, written to the golden standard. 76 of 208 settings now documented, up from 45.

Both screens are about the same thing — how much of the web an agent may read and what that is allowed to cost — so they were written together and cross-reference each other.

The cost story, stated rather than gestured at

  • A budget window opens with your turn and closes with it. Call counts and dollar ceilings bind together: whichever runs out first ends that turn's spending.
  • Only interactive turns are metered. Work running under delegation or the planner is not inside a window at all. That isn't obvious from anywhere else and it matters if you are reasoning about spend.
  • Tavily credit arithmetic appears where it decides something: an advanced search bills 2 credits, so setting it as the default halves how far a call budget stretches in money while the count looks unchanged.
  • source_policy gets the asymmetry it turns on. Blocked is a hard floor the model cannot widen past. Preferred is a soft seed that a model's own explicit scope overrides — because silently over-narrowing is how a research turn comes back empty, and the agent reads that as "no such information exists".

A mis-section the refit caught

search.research_per_turn_limit claimed the Web Search screen — inherited from its config root — while it has always rendered on Research Mode, with the rest of that budget. Now declared onto the screen it actually appears on.

Same class of lie memory.project_channels told in Wave 3.1. Second one this cadence has caught, which is roughly the point of writing the help against the code.

Six keys had no control anywhere

Writable over the API, rendered nowhere. Rather than documenting them as unreachable:

  • brave_context_max_tokens_per_url — its sibling total budget was already on screen, and a total with no per-page share is half a control.
  • The deep-research tuning group — output floor, cache, poll bounds, and the budget weight that the search-budget help explicitly points the reader at. Writing "see the deep-research weight below" and then not showing it would have been worse than either option.

The Research Mode cost projection now reads the live budget weight instead of assuming 3.

Two fixes on the way

The generic round-trip test was shrinking. It skipped keys that declare constraints, so its coverage fell every time a section was refit — down to 43, tripping its own floor of 50. That is backwards: the test exists to catch a declared key that silently fails to persist, and a constrained key is no less prone to that. Constrained keys are now probed within their declared range; coverage is up and the floor rises with it.

Toggle labels wrapped to three lines. A toggle row lays out as [control + label + chrome] [hint] and the hint was winning the width fight — which got worse once labels gained a help affordance beside them. Secondary text wraps now. Verified live across Web Search, Recall and Conversation Context.

Also: advanced in the generated reference no longer claims to be "behind the disclosure in Settings". That was true of the one section this started with and is not a promise every screen keeps.

Verification

  • Backend suite green; task test:sterile 1243 OK
  • Client 493 tests (6 new, covering the source-policy single binding, the per-page budget, and API-key help); tsc clean
  • ruff check api/ clean; pyright baseline 0
  • task docs:check green, zero warnings; production build OK
  • Live walk, fresh tab, zero console errors: Web Search shows 19 anchors and 21 help popovers (the two API keys carry help despite having no other chrome — secrets have no default to compare or reset to); Research Mode shows 10 anchors including config:search.research_per_turn_limit on the screen it belongs to. Manifest confirms the section move, the constraints and the tiers. 375px pass, no horizontal overflow.

Assisted-by: Opus 5

Web Search and Research Mode, 31 keys, written to the golden standard. Both
screens are about the same thing — how much of the web an agent may read and
what that is allowed to cost — so they were written together and cross-
reference each other.

The help carries the cost story concretely rather than gesturing at it: a
budget window opens per turn and closes with it, call counts and dollar
ceilings bind together with whichever runs out first ending the spending, and
**only interactive turns are metered** — work running under delegation or the
planner is not inside a window at all, which is not obvious and matters. Tavily
credit arithmetic is stated where it decides something (an `advanced` search
bills 2 credits, so setting it halves how far a call budget stretches in
money). `source_policy` gets the asymmetry it turns on: blocked is a hard floor
the model cannot widen past, preferred is a soft seed that a model's own
explicit scope overrides — because silently over-narrowing is how a research
turn comes back empty.

**A mis-section the refit caught.** `search.research_per_turn_limit` claimed
the Web Search screen, inheriting it from its config root, while it has always
rendered on Research Mode with the rest of that budget. Declared onto the
screen it actually appears on — the same class of lie `memory.project_channels`
told, and the second time this cadence has caught one.

**Six keys were writable over the API with no control anywhere.** Rather than
document them as unreachable: `brave_context_max_tokens_per_url`, whose sibling
total budget was already on screen and made no sense alone, and the whole
deep-research tuning group — the output floor, cache, poll bounds, and the
budget weight that the search-budget help points the reader at. Writing help
that says "see the weight below" and then not showing it would have been worse
than either.

Two fixes on the way:

The generic round-trip test **skipped** constrained keys, so its coverage
shrank every time a section declared bounds — it fell to 43 and tripped its own
floor of 50. Backwards: it exists to catch a declared key that silently fails
to persist, and constrained keys are no less prone to that. Constrained keys
are now probed within their declared range, coverage is up, and the floor rises
with it.

A toggle row lays out as [control + label + chrome] [hint], and the hint was
winning the width fight — long labels wrapped to three lines, which got worse
once labels gained a help affordance. Secondary text wraps now.

`advanced` in the generated reference no longer claims to be "behind the
disclosure in Settings"; that was true of the one section this started with and
is not a promise every screen keeps.

76 of 208 settings now documented, up from 45.

Assisted-by: Opus 5
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agentx-docs-site Ready Ready Preview Aug 7, 2026 4:04pm

@QR-Madness
QR-Madness merged commit e85d239 into master Aug 7, 2026
4 checks passed
@QR-Madness
QR-Madness deleted the feat/settings-web-spend branch August 7, 2026 16:06
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