Some checks failed
CI / lint (push) Successful in 51s
CI / test (push) Failing after 2m28s
CI / notebooks-smoke (push) Successful in 1m37s
Infra CI / zotero (push) Successful in 16s
Infra CI / mc (push) Failing after 32s
Infra CI / bcda (push) Successful in 1m31s
Infra CI / notebooks (push) Successful in 55s
Infra CI / docs (push) Successful in 1m40s
Infra CI / api (push) Successful in 1m4s
Infra CI / llm (push) Successful in 53s
CI / lint (pull_request) Successful in 45s
CI / test (pull_request) Failing after 2m33s
CI / notebooks-smoke (pull_request) Successful in 1m39s
Infra CI / notebooks (pull_request) Successful in 1m5s
Package Supply Chain / pkg-supply-chain (push) Successful in 1m30s
Infra CI / zotero (pull_request) Successful in 22s
Infra CI / llm (pull_request) Successful in 21s
Infra CI / mc (pull_request) Failing after 40s
Infra CI / docs (pull_request) Successful in 15s
Infra CI / api (pull_request) Successful in 15s
Infra CI / bcda (pull_request) Successful in 15s
bcda.ui.metrics follows the #579 convention: perf.meter hands back an OTel meter + PrometheusMetricReader when STACK_TELEMETRY is on and a no-op MockMeter otherwise. Streamlit cannot mount a route and only executes the app script when a browser session opens, so the registry is published from a second port (BCDA_METRICS_PORT, 8502) by a new `python -m bcda.ui` entrypoint that starts the metrics server first and then boots Streamlit's CLI in the same process; the image CMD and `stack bcda ui` use it. Prometheus scrapes bcda:8502/metrics directly (infra/prometheus/targets/services.yml) like api and llm. Instruments: stack_bcda_runs_total{kind,state}, stack_bcda_runs_inflight {kind}, stack_bcda_run_seconds{kind} (recorded by the runner, which now labels runs export / adopt / load / vendor_check / other), stack_bcda_page_views_total{page}, and two observable gauges read at scrape time, stack_bcda_store_jobs{status} and stack_bcda_store_bytes. Attribute values are closed sets. The image installs the perf extra; the compose service joins the observability network with OTEL_SERVICE_NAME=bcda. polars joins the bcda extra: the views import it, and it had only been a dev dependency, so the first metrics image crash-looped on `No module named polars` the moment the entrypoint imported the app at process start. Verified in the stack: bcda:8502/metrics serves stack_bcda_* series, the prometheus target is up and stack_bcda_store_jobs answers a query. refs #1139
4.8 KiB
4.8 KiB