mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
## Summary - split Prometheus definitions into domain-owned modules backed by one registry - eagerly initialize every metric family and fail startup on invalid or duplicate definitions - add reusable RAII guards for gauges and relay durations across cancellation, panic, and retry paths - centralize HTTP, WebSocket, gRPC, and relay recording behind bounded-label helpers - enforce the 65-metric bilingual catalog from registered descriptors - persist completed explicit-message deletion and user-ban moderation steps - update the pinned Rust toolchain and CI jobs to `nightly-2026-08-25` - make the CI Clippy job fail on every Rust warning with `-D warnings` - keep Helm configuration-validation builds visible to avoid silent-run termination - separate Rust caches by artifact type and let Helm reuse codegen artifacts from the Build job - work around the nightly global next-solver memory regression and remove obsolete rustc recursion-limit overrides - preserve workspace Rust flags in Docker builds while applying linker flags to the final binary ## Compatibility - preserve all existing metric names, HELP text, label order, and histogram buckets - keep route-template and bounded status/error labels - return HTTP 500 when Prometheus exposition encoding fails - keep the latest nightly while restoring the previous coherence-only trait-solver behavior ## Nightly memory regression The failed CI jobs were terminated by the runner while compiling `synctv-api-http` (SIGTERM, exit 143). Local peak-RSS measurements for that crate were: | Configuration | Peak RSS | | --- | ---: | | `nightly-2026-08-21` | 6.62 GB | | `nightly-2026-08-25`, global next solver | 10.76 GB | | `nightly-2026-08-25`, `-Znext-solver=coherence` | 6.64 GB | Rust enabled `-Znext-solver=globally` by default on nightly in [rust-lang/rust#160619](https://github.com/rust-lang/rust/pull/160619). The same memory blow-up is tracked in [rust-lang/rust#161748](https://github.com/rust-lang/rust/issues/161748), and the official tracking issue documents `-Znext-solver=coherence` as the temporary opt-out. The workspace now applies that option in `.cargo/config.toml`. The Dockerfile previously set `RUSTFLAGS` for linker options, which overrode the workspace configuration and re-enabled the global solver inside image builds. It now uses `cargo rustc` to pass linker flags only to the final binary, preserving the workspace solver setting for every crate. All rustc `#![recursion_limit = "256"]` attributes were removed. The default limit passes with the coherence-only solver, confirming that a higher recursion limit was unrelated to the CI termination. ## Validation - `make build-workspace` - `make clippy-check` (`--workspace --all-targets -- -D warnings`) - `cargo check --locked -p synctv-api-http` - `cargo check --locked -p synctv-api-common -p synctv-api-grpc` - `cargo test -p synctv-api-common --lib` (655 passed, 165 Docker tests ignored) - `cargo test -p synctv-core metrics --lib` (9 passed) - `make fmt-check` - `docker build --check .` - `make validate-helm` - `actionlint .github/workflows/ci.yml .github/workflows/helm-ci.yml` - `npm run validate` in `docs` (124 pages, 353 links, Astro 0 errors/warnings) |
4 weeks ago | |
|---|---|---|
| .. | ||
| proto | 2 months ago | |
| src | 4 weeks ago | |
| tests | 1 month ago | |
| Cargo.toml | 2 months ago | |
| build.rs | 2 months ago | |