[quality]

Quality-analysis configuration: AI scoring of needs against criteria (the [quality] table in ubproject.toml).

Guide: Quality Analysis.

quality.criteria_file
Type:
string

Path to the criteria file (relative to the ubproject.toml, or absolute). When unset, the built-in default criteria are used.

quality.enabled
Type:
boolean
Default:
false

Whether quality analysis is enabled for this project.

quality.llm
Type:
table

LLM-run hints for the two-phase editor bridge (agent.qa.brief / agent.qa.submitRaw).

ubcode never talks to an LLM provider itself for this bridge: the engine builds one prompt per batch of criteria (batch_size; unset means every axis in one prompt) and judges the replies, but the CLIENT (e.g. the VS Code extension, via vscode.lm) runs the actual generation. model is an advisory hint agent.qa.brief surfaces verbatim for the client to match against its own transport — which may ignore it.

quality.llm.batch_size
Type:
integer

How many scoring criteria to evaluate per language-model request.

When unset, every criterion for a need is scored in a single request. A larger batch sends the need’s content and context once instead of once per request, so it uses far fewer input tokens and fewer requests. A smaller batch produces shorter responses that are less likely to be cut off, and confines a failed response to that batch’s criteria instead of the whole need. Set it to 1 to score every criterion in its own request.

quality.llm.model
Type:
string

A preferred model NAME hint (e.g. "gpt-4o"), matched by the client against its own available models. None leaves the choice to the client’s own default.

quality.prompt_template_file
Type:
string

Path to the prompt-template file (relative to the ubproject.toml, or absolute). When unset, the built-in default prompt template is used.

quality.required
Type:
table of integers
Default:
{}

Per-axis minimum score floor (“gate policy”): an axis key (a criterion id, e.g. "K1") mapped to the minimum score a need must reach on that axis to pass.

Pass/fail is computed at READ time from this floor against a stored verdict’s score, so tuning a floor never invalidates an already-scored verdict. Unset (the default) applies no floor to any axis.

quality.type_configs
Type:
table of tables
Default:
{}

Per-need-type overrides of the criteria / prompt files, keyed by need type.

Each entry: Per-need-type override of the quality-analysis criteria / prompt files.

When a need’s type has an entry in [quality.type_configs], the paths here take precedence over the general criteria_file / prompt_template_file.

quality.type_configs.<name>.criteria_file
Type:
string

Path to a criteria file for needs of this type (relative to the ubproject.toml, or absolute), overriding the general criteria_file.

quality.type_configs.<name>.prompt_template_file
Type:
string

Path to a prompt-template file for needs of this type, overriding the general prompt_template_file.

quality.type_configs.<name>.required
Type:
table of integers
Default:
{}

Per-axis minimum score floor (“gate policy”) for needs of this type, keyed by axis id (a criterion id, e.g. "K1").

Overrides the general [quality.required] floor for the SAME axis key; an axis key not present here still falls back to the general floor.