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.

  • Bound and ApplyHistoryEdit are called only from historypolicy_test.go and example_history_test.go.
  • chat-anthropic, chat-openai and chat-gemini — all current at v0.9.1, checkouts level with origin — contain no occurrence of HistoryPolicy, ApplyHistoryEdit or TurnInfo in any file.
  • chat-platform and chat-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.