Provide a clear, stable, and discoverable configuration schema. Apply the following rules to all TOML/environment configs:

1) Use self-documenting values

scorers = [ { plugin = “heretic.scorers.refusal_rate.RefusalRate”, direction = “MINIMIZE”, scale = 1.0 } ]

quantization_method = “bnb_4bit” # instead of load_in_4bit = true

2) Encode mutually exclusive or dependent options as a single enum

row_normalization = “none” “row_normalize” “row_normalize_and_restore_magnitudes”

3) Standardize plugin-scoped tables and plugin import paths

For scorer-wide settings

[scorer.RefusalRate]

For instance-specific settings (suffix with instance name)

[scorer.RefusalRate_instanceA]

tagger = “heretic.taggers.keyword.KeywordRefusalDetector”

4) Validate and warn on conflicts or removed/renamed keys

5) Maintain backward-compatibility with deprecation policy

How to apply in practice

Example (combined TOML):

Top-level list of scorers with explicit directions

scorers = [ { plugin = “heretic.scorers.refusal_rate.RefusalRate”, direction = “MINIMIZE”, scale = 1.0 } ]

Plugin path (importable module path)

tagger = “heretic.taggers.keyword.KeywordRefusalDetector”

Plugin-specific settings

[scorer.RefusalRate] good_evaluation_prompts = { dataset = “mlabonne/harmless_alpaca”, split = “test[:100]”, column = “text” }

Enum-valued options

quantization_method = “bnb_4bit” row_normalization = “row_normalize_and_restore_magnitudes”

References: discussions 0–7.