Configuration Manual

Purpose

This guide explains how StableSteering configuration works today, with a focus on the prompt-first session setup flow.

It is the reference document for:

For the shortest run path, see quick_start.md. For the code-level view, see developer_guide.md. For the user-facing workflow, see user_guide.md.

Where Configuration Lives

StableSteering currently uses configuration at two different levels.

1. Runtime Environment Configuration

This controls how the app process runs. Examples include:

These values are loaded from application settings in the backend and are not the same as per-session strategy choices.

Relevant code:

2. Per-Session Strategy Configuration

This controls how one user session behaves. Examples include:

These values are edited as YAML in the setup page and are parsed into StrategyConfig for each new session.

Relevant code:

Session Setup Flow

The current setup flow is:

  1. open /setup
  2. enter the user text prompt
  3. optionally edit the negative prompt
  4. edit the YAML strategy block
  5. submit the setup form
  6. backend validates the YAML and creates: - an experiment - a session linked to that experiment
  7. browser opens the new session view

The YAML block is reloaded fresh from the backend template when:

That makes each session configuration explicit and editable instead of being spread across several independent form controls.

Setup Endpoints

The setup page now uses these routes:

This means the YAML document is the source of truth for per-session strategy configuration.

YAML-to-runtime diagram

YAML Template

The setup page starts from a backend-generated YAML document similar to this:

sampler: exploit_orthogonal
updater: winner_average
feedback_mode: scalar_rating
seed_policy: fixed-per-candidate
steering_mode: low_dimensional
steering_dimension: 5
candidate_count: 5
image_size: 512x512
trust_radius: 0.55
anchor_strength: 0.7
guidance_scale: 7.5
num_inference_steps: 15
model_name: runwayml/stable-diffusion-v1-5

The exact default text is rendered by:

Parameter Reference

sampler

Controls how candidate steering vectors are proposed for a round.

Supported values:

Effect:

Related code:

updater

Controls how user feedback updates the incumbent steering state.

Supported values:

Effect:

Related code:

feedback_mode

Controls how the UI feedback payload is interpreted.

Supported values:

Effect:

Related code:

Feedback modes diagram

seed_policy

Controls how seeds are assigned across rounds.

Current value used by the MVP:

Effect:

Notes:

steering_mode

Describes the steering representation family.

Current value used by the MVP:

Effect:

steering_dimension

Controls the size of the low-dimensional steering vector for the session.

Typical values:

Effect:

Notes:

candidate_count

Controls how many candidates are shown per round.

Typical values:

Current round policy:

This means candidate_count is the total visible batch size, not the number of newly sampled alternatives.

image_size

Controls the rendered image size.

Format:

Examples:

Notes:

trust_radius

Controls how far the sampler is allowed to move from the current steering state.

Effect:

anchor_strength

Controls how strongly the latent steering vector perturbs the encoded prompt embedding.

Effect:

guidance_scale

Controls classifier-free guidance strength during image generation.

Effect:

num_inference_steps

Controls how many denoising steps the diffusion pipeline runs per image.

Effect:

model_name

Selects the model checkpoint for the session.

Current default:

Important note:

Validation Rules

The YAML editor is flexible, but it is not free-form. The backend validates the YAML against StrategyConfig.

Validation happens in:

Current validation behavior:

If validation fails, the setup request returns a structured API error.

Practical Editing Guidance

Good workflow:

  1. start from the default YAML
  2. change one or two parameters at a time
  3. create a session
  4. observe the session behavior
  5. compare the resulting trace report and replay

Recommended beginner changes:

Changes to make carefully:

Relationship To Runtime Settings

Per-session YAML does not override every backend runtime rule.

Examples of process-level rules that still apply:

So the session YAML controls the strategy of the run, while the app settings control the environment in which the run is executed.

Example Configurations

Conservative Comparison Session

sampler: random_local
updater: winner_average
feedback_mode: scalar_rating
seed_policy: fixed-per-round
steering_mode: low_dimensional
candidate_count: 5
image_size: 512x512
trust_radius: 0.25
anchor_strength: 0.35
guidance_scale: 7.0
num_inference_steps: 20
model_name: runwayml/stable-diffusion-v1-5

Use this when:

More Exploratory Session

sampler: uncertainty_guided
updater: linear_preference
feedback_mode: scalar_rating
seed_policy: fixed-per-round
steering_mode: low_dimensional
candidate_count: 5
image_size: 512x512
trust_radius: 0.4
anchor_strength: 0.45
guidance_scale: 7.5
num_inference_steps: 24
model_name: runwayml/stable-diffusion-v1-5

Use this when:

Pairwise Preference Session

sampler: exploit_orthogonal
updater: winner_copy
feedback_mode: pairwise
seed_policy: fixed-per-round
steering_mode: low_dimensional
candidate_count: 3
image_size: 512x512
trust_radius: 0.3
anchor_strength: 0.35
guidance_scale: 8.0
num_inference_steps: 20
model_name: runwayml/stable-diffusion-v1-5

Use this when:

Axis Sweep Ranking Session

sampler: axis_sweep
updater: linear_preference
feedback_mode: top_k
seed_policy: fixed-per-round
steering_mode: low_dimensional
candidate_count: 5
image_size: 512x512
trust_radius: 0.34
anchor_strength: 0.4
guidance_scale: 7.5
num_inference_steps: 22
model_name: runwayml/stable-diffusion-v1-5

Use this when:

Approve / Reject Session

sampler: incumbent_mix
updater: winner_average
feedback_mode: approve_reject
seed_policy: fixed-per-round
steering_mode: low_dimensional
candidate_count: 5
image_size: 512x512
trust_radius: 0.3
anchor_strength: 0.35
guidance_scale: 7.2
num_inference_steps: 18
model_name: runwayml/stable-diffusion-v1-5

Use this when:

Where To Learn More