Plan
docs/superpowers/specs/2026-08-19-locks-subsystem-design.md#L236-L238
New counters on the existing ktsu.GitLfsCache meter: lock list hits, lock list refreshes, refresh failures, admission probes, admission rejections, fan-out items attempted, fan-out items succeeded, fan-out throttle pauses, and snapshot size.
What exists today
GitLfsCache/Observability/CacheMetrics.cs:67-75 defines every counter in that list except snapshot size. There is no snapshot_size instrument anywhere under GitLfsCache/.
What's missing
Nothing records how many locks a published snapshot holds, so operators can't see:
Acceptance criteria
- A histogram (or an observable gauge per repository), e.g.
gitlfscache.lock_snapshot_size, tagged by upstream and recorded each time a snapshot is published.
- A walk rejected as
TooLarge records its count too, or through a companion counter, so the over-limit case is visible.
- A test asserts that the measurement is recorded on publish.
Dependencies
None.
Plan
docs/superpowers/specs/2026-08-19-locks-subsystem-design.md#L236-L238What exists today
GitLfsCache/Observability/CacheMetrics.cs:67-75defines every counter in that list except snapshot size. There is nosnapshot_sizeinstrument anywhere underGitLfsCache/.What's missing
Nothing records how many locks a published snapshot holds, so operators can't see:
Locks:MaxSnapshotLocks, the point where it silently stops being cached (see A repository with more locks than MaxSnapshotLocks is re-walked up to the ceiling on every GET locks, then relayed anyway #65);Acceptance criteria
gitlfscache.lock_snapshot_size, tagged by upstream and recorded each time a snapshot is published.TooLargerecords its count too, or through a companion counter, so the over-limit case is visible.Dependencies
None.