The runbook told you a flag would appear in the Unleash UI on its own. It will not.
Unleash SDKs read flag definitions from the server and never register anything; metrics for a flag the server has not heard of are discarded. A flag declared in backend/flags.py is therefore evaluated on every request, stays False forever, and never shows up in the UI until someone creates it by hand.
Found the way these things usually are — staging had been running the flag code for a while and the UI was still empty.
Adds an Adding a flag to Unleash section covering the name having to match backend/flags.py character for character, and Release type with no strategies.
Also names the environment trap while here: each stack token is scoped to one environment, so toggling production while looking at staging does nothing visible and reads as a broken flag.
Docs only.
The runbook told you a flag would appear in the Unleash UI on its own. It will not.
Unleash SDKs read flag definitions from the server and never register anything; metrics for a flag the server has not heard of are discarded. A flag declared in `backend/flags.py` is therefore evaluated on every request, stays `False` forever, and never shows up in the UI until someone creates it by hand.
Found the way these things usually are — staging had been running the flag code for a while and the UI was still empty.
Adds an **Adding a flag to Unleash** section covering the name having to match `backend/flags.py` character for character, and Release type with no strategies.
Also names the environment trap while here: each stack token is scoped to one environment, so toggling `production` while looking at staging does nothing visible and reads as a broken flag.
Docs only.
The runbook said a flag 'appears in the Unleash UI after the backend has
evaluated it once'. That is wrong. SDKs read definitions from the server
and never register anything, and metrics for an unknown flag are
discarded — so a declared flag is evaluated on every request, stays
False forever, and never shows up until someone creates it by hand.
Found the way these things usually are: staging had been running the
flag code for a while and the UI was still empty.
Also names the environment trap while here — each stack's token is
scoped to one environment, so toggling the other does nothing visible
and looks like the flag is broken.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015mWQnpye9F299NVRCCSRvj
This PR only edits docs/DEPLOY.md, adding an 'Adding a flag to Unleash' section and correcting the 'Turning a feature on' section to state that Unleash does not auto-create flags. The technical claims (15s SDK refresh interval, snake_case flag naming, fail-closed behavior for undeclared/unreachable flags) match the actual implementation in backend/flags.py, and the change is an accurate, internally consistent documentation fix with no code or CI/deploy config touched.
✅ No issues found.
## 🤖 AI Code Review (Claude Code)
This PR only edits docs/DEPLOY.md, adding an 'Adding a flag to Unleash' section and correcting the 'Turning a feature on' section to state that Unleash does not auto-create flags. The technical claims (15s SDK refresh interval, snake_case flag naming, fail-closed behavior for undeclared/unreachable flags) match the actual implementation in backend/flags.py, and the change is an accurate, internally consistent documentation fix with no code or CI/deploy config touched.
✅ No issues found.
tudor
merged commit c3f044bd65 into main2026-08-26 19:48:58 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The runbook told you a flag would appear in the Unleash UI on its own. It will not.
Unleash SDKs read flag definitions from the server and never register anything; metrics for a flag the server has not heard of are discarded. A flag declared in
backend/flags.pyis therefore evaluated on every request, staysFalseforever, and never shows up in the UI until someone creates it by hand.Found the way these things usually are — staging had been running the flag code for a while and the UI was still empty.
Adds an Adding a flag to Unleash section covering the name having to match
backend/flags.pycharacter for character, and Release type with no strategies.Also names the environment trap while here: each stack token is scoped to one environment, so toggling
productionwhile looking at staging does nothing visible and reads as a broken flag.Docs only.
🤖 AI Code Review (Claude Code)
This PR only edits docs/DEPLOY.md, adding an 'Adding a flag to Unleash' section and correcting the 'Turning a feature on' section to state that Unleash does not auto-create flags. The technical claims (15s SDK refresh interval, snake_case flag naming, fail-closed behavior for undeclared/unreachable flags) match the actual implementation in backend/flags.py, and the change is an accurate, internally consistent documentation fix with no code or CI/deploy config touched.
✅ No issues found.