ref:32f9f47b4a4363d75b0ffbdbf5d16f965b792b09

Add telemetry events for core operations (#6)

## Summary - Add `:telemetry` as a direct dependency - Instrument object read/write, ref updates, and receive-pack with `:telemetry.span/3` - All events documented in `ExGitObjectstore.Telemetry` moduledoc Closes #10 ## Events emitted | Event prefix | Metadata | |---|---| | `[:ex_git_objectstore, :object, :read]` | sha, repo_id | | `[:ex_git_objectstore, :object, :write]` | object_type, repo_id, sha | | `[:ex_git_objectstore, :ref, :update]` | ref_path, repo_id, new_sha, old_sha | | `[:ex_git_objectstore, :protocol, :receive_pack]` | repo_id, command_count | Each emits `:start`, `:stop`, and `:exception` suffixed events via `:telemetry.span/3`. ## Test plan - [x] Object write emits start/stop with object_type and sha - [x] Object read emits start/stop with sha - [x] Ref update emits start/stop with ref_path - [x] Receive-pack emits start/stop with command_count - [x] 560 tests pass, dialyzer clean
SHA: 32f9f47b4a4363d75b0ffbdbf5d16f965b792b09
Author: Anvil <noreply@anvil.fangorn.io>
Date: 2026-04-09 20:34
Parents: 3be1166
7 files changed +291 -28
Type
CHANGELOG.md +1 −0
@@ -16,5 +16,6 @@
- `update_hook` and `post_receive_hook` for ReceivePack (per-ref gating, post-push notifications)
- Configurable per-repo `max_object_size` via `Repo.new/2` (default 128MB unchanged)
- CalVer release automation via CI (`ci/release.sh`, `.anvil.yml` release step)
- Telemetry events for object read/write, ref updates, and receive-pack protocol
### Fixed
mix.exs +1 −0
@@ -96,6 +96,7 @@
{:sweet_xml, "~> 0.7"},
{:hackney, "~> 1.18"},
{:jason, "~> 1.4"},
{:telemetry, "~> 1.0"},
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false}