fix(open-swe): correct Fable copy to describe provider data sharing, not ZDR

The ported admin toggle description and code comments described Fable 5 as
incompatible with Zero Data Retention. That is backwards: Fable 5 requires
the account to opt into Bedrock provider_data_share — prompts/completions are
retained and shared with Anthropic (up to 30 days, incl. human review). The
old UI copy would lead an admin to believe the opposite of what enabling the
toggle does. Reword the toggle description and the gate_fable_model /
team_settings comments accordingly. Still off by default. Refs #171.
This commit is contained in:
Adam Moussa 2026-07-10 13:52:10 -04:00
parent 17a9a25160
commit 733e3fde4a
No known key found for this signature in database
3 changed files with 9 additions and 6 deletions

View file

@ -101,10 +101,13 @@ def fable_disabled_fallback(effort: object = None) -> tuple[str, str]:
def gate_fable_model(
model_id: str, effort: str | None, *, fable_enabled: bool
) -> tuple[str, str | None]:
"""ZDR guard: if Fable is disabled but a Fable id was resolved, swap in a
safe non-Fable model. Non-Fable selections pass through unchanged. Applied
at every model-construction entrypoint so a disabled Fable model can never
reach ``make_model``, no matter which layer selected it."""
"""Provider-data-share gate: if Fable is disabled but a Fable id was
resolved, swap in a safe non-Fable model. Fable requires the account to opt
into Bedrock ``provider_data_share`` (prompts/completions shared with the
provider), so it is gated off by default. Non-Fable selections pass through
unchanged. Applied at every model-construction entrypoint so a disabled
Fable model can never reach ``make_model``, no matter which layer selected
it."""
if not fable_enabled and isinstance(model_id, str) and model_id in FABLE_MODEL_IDS:
return fable_disabled_fallback(effort)
return model_id, effort

View file

@ -135,7 +135,7 @@ class TeamSettingsUpdate(BaseModel):
self.default_chat_model, self.default_chat_reasoning_effort, "review chat"
)
if not self.fable_enabled:
# Disabling Fable is the ZDR kill switch and must always succeed: rather
# Disabling Fable is the provider-data-share kill switch and must always succeed: rather
# than reject a payload that still carries a Fable default, swap each
# Fable default to its safe non-Fable fallback (mirrors the runtime
# gate_fable_model guard) so the stored record can't advertise Fable.

View file

@ -713,7 +713,7 @@ function FableSection() {
return (
<SettingsSection
title="Fable"
description="Claude Fable 5 runs safety classifiers that inspect and may retain requests, so it is not compatible with Zero Data Retention (ZDR). Off by default; enable only if your workspace does not require ZDR."
description="Claude Fable 5 requires opting into Bedrock provider data sharing: prompts and completions are retained and shared with Anthropic (up to 30 days, including human review). Off by default; enable only if your workspace accepts provider data sharing for this model."
>
<div className="divide-y divide-border">
<SettingsRow