Skip to content

Feature Flag Rollout & Rollback Guide ​

This document covers the routing_feedback and skill_synthesis_drafts feature flags: what states they accept, their shipped defaults, and the rollback procedure if problems arise.

History: these two flags previously shipped as "opt-in" behind a quantitative graduation gate (LemonRouter.RolloutGate). Both features were promoted to "default-on" by decision on 2026-08-14 and the gate machinery was removed; this guide now documents only states and rollback.


Feature States ​

The promotion lifecycle is:

off ↔ default-on
StateMeaning
"off"Feature is disabled. Code is a no-op.
"opt-in"Legacy state: behaves like "off" unless the caller explicitly opts in. Still parsed for configs written before the 2026-08-14 promotion.
"default-on"Feature is enabled unless the operator disables it. "on" is accepted as an alias.

Shipped defaults:

toml
[features]
session_search         = "default-on"  # durable memory ingest/search kill switch
routing_feedback       = "default-on"  # task fingerprinting + routing feedback recording
skill_synthesis_drafts = "default-on"  # scheduled skill-draft generation

All three are on out of the box; each exists as an operator kill switch.


Disabling a Feature (Operator) ​

  1. Turn the feature off in config.toml:
toml
[features]
routing_feedback       = "off"
skill_synthesis_drafts = "off"

or set the environment variable for the Lemon process (the environment overrides TOML):

bash
export LEMON_FEATURE_ROUTING_FEEDBACK=off
export LEMON_FEATURE_SKILL_SYNTHESIS_DRAFTS=off
  1. Restart Lemon (lemon restart) so the running process picks it up.

  2. Confirm the feature is inactive:

bash
lemon doctor

With skill_synthesis_drafts = "off", the automation.skill_synthesis check reports that the synthesis runner is inactive.

  1. Before re-enabling, file an issue with: what the problem was, any logs, and what action triggered it.

Observing the Learning Loop ​

There is no gate to evaluate anymore — the flags are on. To inspect what the loop is actually doing:

  • mix lemon.feedback stats / list / inspect KEY — routing feedback store totals, per-fingerprint success rates, and confidence annotations.
  • mix lemon.doctor — the automation.skill_synthesis check reports synthesis pass counts (candidates=… generated=… blocked=…) and warns when the scheduled runner looks stalled (no pass for 3× its interval).
  • Generated drafts are inert until promoted: review with mix lemon.skill draft review <key>, promote with mix lemon.skill draft publish <key> (or lemon skill draft ...).

See Also ​

Last reviewed: 2026-10-15

Released under the MIT License.