Skip to content

docs: changelog entry for the daily spend rail (#1546) - #1744

Open
santoshkumarradha wants to merge 1 commit into
devfrom
docs/1546-spend-rail-changelog
Open

santoshkumarradha wants to merge 1 commit into
devfrom
docs/1546-spend-rail-changelog

Conversation

@santoshkumarradha

Copy link
Copy Markdown
Member

Closes #1546

What

The daily spend rail fix is already on dev via #1627 (commit ac84606f4): interactive turns enforce the day's budget, task workers and errands are exempt, and the tests are there too (TestSpendRailRefusesTurnWhenDailyBudgetExceeded, TestBudgetScopeAndLiveConversationRecovery). The takeover branch (fix/1546-daily-spend-rail) turned out to be a strict duplicate with older semantics — it was never pushed. The one piece that never landed is this changelog entry, which is all this PR adds.

The entry

  • kind: fixed, surfaces [chat, engine], pr: 1546.
  • States the old behavior (only per-conversation limits were checked), the new gate, and the exact door the refusal names — verified against the shipped string in internal/session/rail.go: daily limit reached · %s spent of %s · /budget day changes it.
  • Notes the task-worker/errand exemption with its rationale, and that the budget is read fresh each turn.

Gates

Docs-only diff: no video owed under the bar. No workloads ran locally (raw-ssh-Spark-only rule honored; none needed — GitHub CI validates). Three review passes are posted as separate comments. PR stays draft/[WIP] until CI is green; never merged by its author.

—
Drafted with CodeAF · reviewed and owned by the author

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Assisted-by: CodeAF (glm-5.3)
Co-Authored-By: CodeAF <267109073+agentfield-bot@users.noreply.github.com>
@santoshkumarradha santoshkumarradha added this to the Reliable agent milestone Oct 3, 2026
@santoshkumarradha santoshkumarradha added bug Something the code does that it should not area:session The engine — turns, tasks, the toolbelt, checkpoints sev:critical Data loss, money spent wrongly, a false done, or the merge queue blocked area:provider Routing, lanes, refusals, hedging, what a call costs labels Oct 3, 2026
@santoshkumarradha santoshkumarradha self-assigned this Oct 3, 2026
@santoshkumarradha santoshkumarradha added bug Something the code does that it should not area:session The engine — turns, tasks, the toolbelt, checkpoints sev:critical Data loss, money spent wrongly, a false done, or the merge queue blocked area:provider Routing, lanes, refusals, hedging, what a call costs labels Oct 3, 2026
@santoshkumarradha

Copy link
Copy Markdown
Member Author

Pass 1 — ARCHITECTURE

Checked: where the change sits and how it is shaped.

  • One new file, docs/changes/unreleased/1546-daily-spend-rail.md; no code, no wiring, no second convention introduced.
  • House changelog format followed exactly (front matter kind/title/pr/surface/invalidates, then prose), matching the sibling entries in the directory.
  • The pr: field matches the filename's number, as sibling entries do; surface: [chat, engine] matches where the behavior lives — the gate is engine-side (internal/session), the refusal is what a chat turn sees.
  • The change documents behavior merged via Consolidate verified CodeAF task, chat and runtime fixes #1627 rather than re-implementing it in the docs tree — the right layer for a paper-trail gap.

Found: nothing to change.

drafted with CodeAF

@santoshkumarradha

Copy link
Copy Markdown
Member Author

Pass 2 — SECURITY

Checked: what the entry exposes and what it touches.

  • Docs-only diff: no code paths, no secrets, env vars, credentials, endpoints or internal hosts named; nothing untrusted reaches anything.
  • The quoted refusal string contains no user data — it matches the shipped format string in internal/session/rail.go (daily limit reached · %s spent of %s · /budget day changes it), where the figures are filled at runtime and never persisted here.
  • The entry describes public behavior only; it reveals nothing about the machine, the ledger's storage, or configuration values.

Found: nothing to change.

drafted with CodeAF

@santoshkumarradha

Copy link
Copy Markdown
Member Author

Pass 3 — CODE EFFICIENCY & DESIGN

Checked: economy of the wording and truth of every claim.

  • The invalidates block carries the old behavior, the gate and the door in one sentence; the prose adds only the exemption rationale and the freshness note — no padding.
  • No duplication: no other docs/changes entry mentions the daily budget or spend rail (grep-verified against dev), so this is the single line of truth for the change.
  • Claims verified against the code on dev: the gate is >= ("reaches"), the spend is the larger of the ledger's day and the crew's held day (max), task workers and errands are exempt, and the refusal names /budget day exactly.

Found: nothing to change.

drafted with CodeAF

@santoshkumarradha santoshkumarradha changed the title [WIP] docs: changelog entry for the daily spend rail (#1546) docs: changelog entry for the daily spend rail (#1546) Oct 3, 2026
@santoshkumarradha
santoshkumarradha marked this pull request as ready for review October 3, 2026 19:30
@santoshkumarradha

Copy link
Copy Markdown
Member Author

@ZeroPoint95 ready for review: all three review passes completed with no actionable findings, and final-head CI is green. This is a docs-only changelog change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:provider Routing, lanes, refusals, hedging, what a call costs area:session The engine — turns, tasks, the toolbelt, checkpoints bug Something the code does that it should not sev:critical Data loss, money spent wrongly, a false done, or the merge queue blocked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

session: interactive chat bypasses daily spending limit

2 participants