Config.HistoryPolicy is never applied by any provider
What
Config.HistoryPolicy has no effect. A caller who sets
chat.TruncateOldest(40) gets a conversation that grows without bound, exactly
as if they had set nothing.
The core half of spec 0011's D7/D8/D9 shipped and is tested. The provider half
was never built: nothing calls HistoryPolicy.Bound, and nothing calls
ApplyHistoryEdit.
Evidence
Searched all six modules of the family. Outside Config plumbing and the
fallback pass-through, the only reference to cfg.HistoryPolicy in product code
is the construction warning at historypolicy.go:269.
BoundandApplyHistoryEditare called only fromhistorypolicy_test.goandexample_history_test.go.chat-anthropic,chat-openaiandchat-gemini— all current at v0.9.1, checkouts level with origin — contain no occurrence ofHistoryPolicy,ApplyHistoryEditorTurnInfoin any file.chat-platformandchat-platform-discord: likewise none.
Spec 0011 states the intended call site plainly: ApplyHistoryEdit is what
"a provider calls between asking its policy and rewriting its transcript".
No provider does.
Why it matters
docs/how-to/bound-conversation-history.md documents the feature as working,
and the release notes for v0.10.0 shipped it. A caller reaching for it is
solving the exact problem it was built for — a long-running agent loop that
overflows its context window — and gets silence rather than an error.
The construction warning makes it worse rather than better: it cautions that pinned turns will eat the truncation budget, which reads as confirmation that truncation is running.
Why it was not caught
The conformance suite has history_observable, which asserts History()
reports growth. There is no case asserting that a configured policy bounds a
conversation. The suite built to catch cross-provider divergence has no case for
the feature that shipped beside it — so every provider agreed, by doing nothing.
Scope
The fix is the provider application path, plus a conformance case that fails for any provider not applying a policy. Compaction (#12 (closed)) depends on this: a compacting policy written today would be a second policy that also does nothing.