Make ottyl_seq/ottyl_ts usable in dashboard PromQL queries (ticket 055)
evaluate_promql previously resolved every metric name through bucket_values, which only returns data for a real MetricDeclaration — so a dashboard panel querying ottyl_seq/ottyl_ts/ottyl_fmt (already supported in the filter bar and alert conditions) silently returned an empty series. ottyl_seq/ottyl_ts are now synthesized directly from the ingested-log index instead of requiring a declaration; ottyl_fmt is categorical (json/logfmt/none) with no sensible numeric reading, so it's rejected up front with a clear error pointing back at the filter bar rather than returning nothing. GET /api/params now also lists the three reserved names (marked `reserved: true`, distinct from `auto_derived`) purely for discoverability — merged in at the API layer only, not the engine's internal ParamDeclarations query, so profile-switch removal and metric-param-promotion logic are unaffected. declare_param also now rejects declaring a param under one of these names. Docs.tsx and the Params panel are updated to reflect the new dashboard support and the reserved/non-editable listing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XFUNZwCvz3kcod3352ZR2o
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
d17cfe9b83
commit
ff56558b2e
@@ -28,6 +28,14 @@ pub struct ParamDeclarationDto {
|
||||
/// See `crate::data_value::ParamDeclaration::auto_derived`. The frontend uses this to disable
|
||||
/// editing — `POST /api/params` also rejects a request naming an auto-derived param.
|
||||
pub auto_derived: bool,
|
||||
/// Set only for the built-in `ottyl_seq`/`ottyl_ts`/`ottyl_fmt` names
|
||||
/// (`crate::engine::OTTYL_RESERVED_PARAM_NAMES`), synthesized into the `GET /api/params`
|
||||
/// response by `crate::api::list_params` rather than backed by any index entry — distinct from
|
||||
/// `auto_derived` (which *is* a real, if machine-discovered, `ParamDeclaration`). Always
|
||||
/// `false` for every other entry. There is no removal path for these at all (not just a
|
||||
/// disabled one), so the frontend should treat `reserved` as non-deletable/non-editable.
|
||||
#[serde(default)]
|
||||
pub reserved: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize)]
|
||||
|
||||
Reference in New Issue
Block a user