elastic / elastic/docs-content
Anomaly detection and data frame analytics pages are mistagged serverless: ga for project types where they're not available today
- Dominant language
- No language data
- Stars
- 47
- Forks
- 261
- Avg merge
- 3d 21h
- Merged PRs (30d)
- 141
Description
## Problem
Pages under `explore-analyze/machine-learning/anomaly-detection/` and `explore-analyze/machine-learning/data-frame-analytics/` all carry a flat, unscoped frontmatter tag:
```yaml
applies_to:
stack: ga
serverless: ga
```
This says the page fully applies to all three Serverless project types. That's not true today. Our own docs already say so, in prose, on the parent hub page [`explore-analyze/machine-learning.md`](https://www.elastic.co/docs/explore-analyze/machine-learning) under **Feature availability by project type**:
> * {{es-serverless}} projects have trained models.
> * {{observability}} projects have {{anomaly-jobs}}.
> * {{elastic-sec}} projects have {{anomaly-jobs}}, {{dfanalytics-jobs}}, and trained models.
So per our own stated availability:
- **Anomaly detection** is unavailable in Serverless Elasticsearch (Search) projects — only Observability and Security have it.
- **Data frame analytics** is unavailable in both Serverless Elasticsearch (Search) *and* Observability projects — only Security has it.
A reader who lands directly on an anomaly-detection or DFA page (very plausible — these are the actual overview/procedure pages, not the hub) sees `serverless: ga` and has no reason to know the feature doesn't exist for their project type. The hub-page prose caveat doesn't reach them.
## Why this isn't a version/lifecycle question
`applies_to.serverless` supports per-project-type subkeys with a real `unavailable` lifecycle value, precisely for this "GA in some serverless project types, not others" case:
```yaml
applies_to:
stack: ga
serverless:
elasticsearch: unavailable
observability: ga
security: ga
```
There's existing precedent for this shape in the corpus, e.g. `deploy-manage/manage-spaces.md`'s "Customize Kibana's home page" section (`elasticsearch: unavailable, security: unavailable, observability: ga`). See [cumulative docs guidance](https://www.elastic.co/docs/contribute-docs/how-to/cumulative-docs) and the [`applies_to` syntax reference](https://elastic.github.io/docs-builder/syntax/applies/#serverless).
## Suggested fix
**Anomaly detection pages** — add `serverless.elasticsearch: unavailable` (keep `observability: ga`, `security: ga`):
- `explore-analyze/machine-learning/anomaly-detection.md`
- `explore-analyze/machine-learning/anomaly-detection/anomaly-detection-scale.md`
- `explore-analyze/machine-learning/anomaly-detection/anomaly-how-tos.md`
- `explore-analyze/machine-learning/anomaly-detection/geographic-anomalies.md`
- `explore-analyze/machine-learning/anomaly-detection/mapping-anomalies.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-algorithms.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-concepts.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-dst-calendars.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-explain.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-finding-anomalies.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-forecast.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-plan.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-resources.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-run-jobs.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-troubleshooting.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-ad-view-results.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-anomaly-detection-job-types.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-api-quickref.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-aggregation.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-alerts.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-categories.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-detector-custom-rules.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-populations.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-transform.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-configuring-url.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-delayed-data-detection.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-functions.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-getting-started.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-jobs-from-lens.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-limitations.md`
- `explore-analyze/machine-learning/anomaly-detection/ml-reverting-model-snapshot.md`
- `explore-analyze/machine-learning/anomaly-detection/ootb-ml-jobs.md`
**Data frame analytics pages** — add `serverless.elasticsearch: unavailable` and `serverless.observability: unavailable` (keep `security: ga`):
- `explore-analyze/machine-learning/data-frame-analytics.md`
- `explore-analyze/machine-learning/data-frame-analytics/dfa-regression-lossfunction.md`
- `explore-analyze/machine-learning/data-frame-analytics/hyperparameters.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-classification.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-concepts.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-custom-urls.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-finding-outliers.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-limitations.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-overview.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-phases.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-regression.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-resources.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfa-scale.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-dfanalytics-apis.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-feature-encoding.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-feature-importance.md`
- `explore-analyze/machine-learning/data-frame-analytics/ml-feature-processors.md`
Not included: `data-frame-analytics/ml-trained-models.md` — trained models have a *different* availability matrix (GA in Elasticsearch and Security serverless, per the same hub-page prose) and need their own pass; bundling them here would conflate two different fixes.
## Out of scope for this issue
There's a separate product proposal to restore full anomaly detection/DFA support in Serverless Elasticsearch (Search) projects. This issue is **not** about that future state — it's about correcting the tags to match what's actually shipped today. If/when that proposal ships, the fix is a one-line flip per file (`elasticsearch: unavailable` → `ga`), tracked separately once there's a PR/issue to hang it on.
## Possible related follow-up (unverified, not part of this issue)
The same hub-page prose implies trained-model/NLP pages (ELSER, E5, rerank, etc.) may have an analogous gap for Observability serverless projects (trained models aren't listed as available there). Not verified against product source — flagging for separate investigation, not bundling into this fix.
Contributor guide
No contributing guide indexed for this repository
Research direction
Read the feature-availability section in explore-analyze/machine-learning.md and the applies_to serverless syntax reference, then inspect the frontmatter in the listed anomaly-detection and data-frame-analytics files. Update each named page's serverless matrix to match the documented availability, leaving ml-trained-models.md and the proposed future-state work unchanged; done means all listed pages accurately expose their project-type support.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- yaml
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100