Skip to content

Clarify which budget limit blocked a conversation - #1671

Merged
AbirAbbas merged 7 commits into
devfrom
zeropoint95/live-budget
Sep 29, 2026
Merged

AbirAbbas merged 7 commits into
devfrom
zeropoint95/live-budget

Conversation

@ZeroPoint95

@ZeroPoint95 ZeroPoint95 commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Changelog

  • Help unblock conversations after budget overruns: errors now name /budget conversation or /budget day. Previously, the generic hint could change the daily allowance while leaving the conversation blocked.
  • Clarify that the daily budget covers all conversations; add a separate /budget conversation tip. Each tip retires independently.
  • Explain that both limits apply, with examples and recovery steps. Test recovery in the same running conversation; budget enforcement is unchanged.

Related Notion issue

Validation: CI green; focused hint tests and local pr-ready gates for both follow-ups passed. The original full local gate had four session failures reproduced on clean dev.

@ZeroPoint95
ZeroPoint95 marked this pull request as ready for review September 29, 2026 00:49
ZeroPoint95 and others added 4 commits September 29, 2026 08:31
"my budget command doesn't work" and "why is my conversation blocked" are
how a person who raised the wrong limit asks, and neither reached the new
daily-versus-conversation section. The heading now carries those words,
and four probes keep them reaching models-and-cost.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Two pages still said a refused turn names bare /budget and that bare
/budget is the conversation limit; both now name /budget conversation and
/budget day. The daily limit counts every conversation and task on the
machine, not only conversations. And a refused message is not left in the
box, as the pages claimed: the box clears on enter and up-arrow brings the
text back, which the recovery steps now say. The change entry records the
corrected belief.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@AbirAbbas

Copy link
Copy Markdown
Collaborator

Taking over: I pushed two manual commits. Nothing blocks this PR.

I checked this by hand in the real binary against a dev build, with tiny limits: conversation limit hit, daily limit hit, both hit, and neither set. I ran every case on both the engine road and codeaf chat --no-host.

  • On dev, the refusal said /budget changes it. /budget 20 answered per day · $20, and the next send was refused again. That is the confusion you described.
  • On this branch, the refusals name /budget conversation or /budget day, and each one releases the same running conversation. Both roads show the same words, and the tips retire separately.

Pushed:

  • 03d5087aa manual: "my budget command doesn't work" and "why is my conversation blocked" reached no budget page. The section heading now uses those words, and chat_test.go has four new probes for them.
  • 02ca2065e manual: the Spending doors table and starting-codeaf.md still named bare /budget as the conversation limit. The daily limit counts tasks too, not only conversations. The pages also said a refused message stays in the box. It doesn't, on dev either, so they now say ↑ brings it back. The change entry records that correction.

Left for you, none blocking:

  • Should a limit refusal put the text back in the box? The comment in rail.go and the old manual both assumed it did.
  • With both limits reached, only the daily one is named, so the second only shows up on the next send. One line naming both would save a step.
  • The daily tip in notice.go says "across all conversations", but tasks count too.
  • The refusal is drawn as error: conversation limit reached …, while the manual quotes it without error:. That predates this PR.
  • Over --host, /budget day writes this machine's profile while the remote engine checks its own. I found this reading the code and didn't reproduce it; it predates this PR.
  • A project's own conversation limit still wins over the /budget conversation default for new conversations there.
  • compaction: summaries as the last step, recovery that fits, and a record that stays #1658 also appends a section at the end of models-and-cost.md, so one of the two will need a keep-both merge.

make pr-ready was green apart from internal/session task-timing tests at load 12–28. Different tests failed on each run, and all of them pass when re-run alone. The push is Markdown plus four manual probes.

# Conflicts:
#	internal/manual/chat/models-and-cost.md
@AbirAbbas

Copy link
Copy Markdown
Collaborator

Merged dev in (9e5564c28) after #1658 landed. Both PRs appended a section at the end of models-and-cost.md, so the merge keeps both, the budget section first. go test ./internal/manual/ and the four budget tests pass on the merged tree.

@AbirAbbas AbirAbbas left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed and hand-verified; see the comments above.

@AbirAbbas
AbirAbbas merged commit e7a2bef into dev Sep 29, 2026
4 checks passed
@AbirAbbas
AbirAbbas deleted the zeropoint95/live-budget branch September 29, 2026 16:30
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.

2 participants