feat(indexer): split benign code-pipeline file skips out of errors_total

Splits benign per-file skips out of gkg_indexer_code_errors_total into a new gkg_indexer_code_files_skipped_total{reason} counter so policy outcomes stop dominating the error rate.

In orbit-prd over 24h, errors_total{stage="parse"} showed 1111 events while real failures (repository_fetch) showed only 7. The parse bucket is filled by the JS pipeline emitting record_error after warning js: skipped file for files larger than 2 MiB or with lines longer than 5000 bytes. The per-file watchdog (Internal { context: "sentinel_timeout" }) also flowed through the same counter. None of these are failures.

What changed
Tests and checks
  • New unit tests in js/pipeline.rs write an oversize file and a line-too-long file and assert files_skipped increments while graph_errors stays empty.
  • Pipeline-level tests cover classify_skip_message and the record_file_skipped collection path used by the watchdog.
  • mise test:fast passes (1900/1900).
  • mise lint:code clean.
  • mise run metrics:catalog and mise run dashboards regenerated; pre-commit metrics-catalog-check and dashboards-check both green. The auto-generated reference panel for the new metric appears in orbit-gkg-indexer.dashboard.json and orbit-all-metrics.dashboard.json; no story-shaped panels were added.
  • docs/design-documents/observability.md lists the new metric and notes the rationale.

Closes #529 (closed) Refs &20992

Merge request reports

Loading