mirror of
https://relay.ngit.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp.git
synced 2026-10-05 15:08:24 +00:00
The stabilization acceptance criteria require sustained CPU and memory evidence, but ngit-grasp currently exposes neither through its Prometheus endpoint. Manual systemd sampling is service-specific but does not provide a durable application time series. Enable rust-prometheus's Linux process collector and explicitly register it with ngit-grasp's private registry. Also read the service's cgroup v2 CPU and memory counters so the headline metrics include every child Git process. The process-only metrics remain available to distinguish daemon cost from Git work. Document both levels and the PromQL rate used to derive CPU use. The cgroup metrics are omitted gracefully when the binary is not running in a readable Linux cgroup v2 hierarchy. They follow the existing global metrics switch: no separate configuration surface is added. Host-wide contention and unrelated services remain deliberately excluded. Validated with: - git diff --check - nix develop -c cargo test --lib metrics::tests::test_metrics_with_repository_counting The repository-wide cargo fmt check still reports pre-existing formatting in unrelated sync modules and tests; src/metrics/mod.rs was formatted directly.
158 lines
3.7 KiB
TOML
158 lines
3.7 KiB
TOML
[package]
|
|
name = "ngit-grasp"
|
|
version = "2.1.1"
|
|
edition = "2021"
|
|
authors = ["ngit-grasp contributors"]
|
|
license = "MIT"
|
|
description = "A GRASP (Git Relays Authorized via Signed-Nostr Proofs) implementation in Rust"
|
|
repository = "https://gitworkshop.dev/danconwaydev.com/ngit-grasp"
|
|
|
|
[dependencies]
|
|
# Async runtime
|
|
tokio = { version = "1.35", features = ["full"] }
|
|
|
|
# HTTP server (hyper for relay integration)
|
|
hyper = { version = "1.4", features = ["full"] }
|
|
hyper-util = { version = "0.1", features = ["tokio", "server", "http1", "http2"] }
|
|
http-body-util = "0.1"
|
|
|
|
# Nostr
|
|
#
|
|
# The stable 0.45 series contains the upstream NEG-OPEN handling fix used by
|
|
# the embedded relay. Caret requirements accept compatible patch releases.
|
|
nostr = "0.45.0"
|
|
# `local-relay` carries the embedded relay implementation, previously the
|
|
# separate `nostr-relay-builder` crate.
|
|
nostr-sdk = { version = "0.45.0", features = ["local-relay"] }
|
|
nostr-lmdb = "0.45.0"
|
|
nostr-memory = "0.45.0"
|
|
|
|
# Utilities
|
|
# SHA-1 for the `Sec-WebSocket-Accept` handshake. `nostr` uses this same crate
|
|
# internally but stopped re-exporting it as `nostr::hashes` in 0.45,
|
|
# so depend on it directly rather than pulling in a second hash implementation.
|
|
bitcoin_hashes = "0.14"
|
|
futures-util = "0.3"
|
|
base64 = "0.22"
|
|
flate2 = "1.0"
|
|
tar = "0.4"
|
|
fs2 = "0.4"
|
|
|
|
# Metrics
|
|
prometheus = { version = "0.14", features = ["process"] }
|
|
dashmap = "6"
|
|
lazy_static = "1.4"
|
|
|
|
# Data structures
|
|
indexmap = "2"
|
|
|
|
# Random (for startup jitter)
|
|
rand = "0.10"
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Configuration
|
|
dotenvy = "0.15"
|
|
clap = { version = "4.5", features = ["derive", "env"] }
|
|
|
|
# Error handling
|
|
anyhow = "1.0"
|
|
|
|
# Async traits
|
|
async-trait = "0.1"
|
|
|
|
# Temporary directories (used for GRASP-06 empty-repo synthesis)
|
|
tempfile = "3"
|
|
reqwest = { version = "0.13", default-features = false, features = ["native-tls"] }
|
|
|
|
# Git (for future use)
|
|
# git-http-backend = "0.3"
|
|
|
|
[dev-dependencies]
|
|
# Testing
|
|
grasp-audit = { path = "grasp-audit", version = "0.2.0" }
|
|
tempfile = "3"
|
|
tokio = { version = "1.35", features = ["full", "test-util"] }
|
|
tokio-tungstenite = "0.28.0"
|
|
|
|
[lib]
|
|
name = "ngit_grasp"
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "ngit-grasp"
|
|
path = "src/main.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_announcement_cascade"
|
|
path = "tests/lifecycle/nip09_announcement_cascade.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_blacklist_ops"
|
|
path = "tests/lifecycle/nip09_blacklist_ops.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_cascade_event_types"
|
|
path = "tests/lifecycle/nip09_cascade_event_types.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_disrespector"
|
|
path = "tests/lifecycle/nip09_disrespector.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_git_archive_cleanup"
|
|
path = "tests/lifecycle/nip09_git_archive_cleanup.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_holding_cleanup"
|
|
path = "tests/lifecycle/nip09_holding_cleanup.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_holding_db"
|
|
path = "tests/lifecycle/nip09_holding_db.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_multi_maintainer"
|
|
path = "tests/lifecycle/nip09_multi_maintainer.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_recovery"
|
|
path = "tests/lifecycle/nip09_recovery.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_state_cascade"
|
|
path = "tests/lifecycle/nip09_state_cascade.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_state_multi_maintainer"
|
|
path = "tests/lifecycle/nip09_state_multi_maintainer.rs"
|
|
|
|
[[test]]
|
|
name = "nip09_validation"
|
|
path = "tests/lifecycle/nip09_validation.rs"
|
|
|
|
[[test]]
|
|
name = "deletion_request_retention"
|
|
path = "tests/lifecycle/deletion_request_retention.rs"
|
|
|
|
[[test]]
|
|
name = "nip62_lifecycle"
|
|
path = "tests/lifecycle/nip62_lifecycle.rs"
|
|
|
|
[[test]]
|
|
name = "nip62_validation"
|
|
path = "tests/lifecycle/nip62_validation.rs"
|
|
|
|
[[test]]
|
|
name = "replaceable_history"
|
|
path = "tests/lifecycle/replaceable_history.rs"
|
|
|
|
[workspace]
|
|
members = [".", "grasp-audit"]
|