Task · TSO-0188

Document and prove optional single-tailnet profile selector behavior

Description

Guarded dashboard review found that profiles are process-global by default and in multi-tailnet mode, but optional single-tailnet name and hashed label modes emit different ownership labels. Four profile panels select service_name only. A blanket no-tailnet-label exemption is unsupported; a universal raw-name matcher would also erase default or hashed profiles. This is a contract gap, not proven live disclosure. Found during TSO-0172 (comprehensive audit of both Grafana dashboards against the live stack); not admitted into loop26.

Acceptance Criteria

Definition of Done

Implementation Plan

Capture actual SDK uploads for off/name/hashed/multi modes, prove reserved-label precedence, and clarify service-scoped whole-process profile panels without adding a tailnet matcher.

Implementation Notes

Owner commissioned ordinary work on main on 2026-10-13. Root owns integration, delivery and final proof; bounded workers own disjoint source/evidence paths. Replay remains blocked.

Five-mode actual SDK captures and reserved-tag negative test pass; 25 multipart uploads replayed into real Pyroscope with name/hash/absent ownership verified. AC3 is conditional: no new profile selector behavior was introduced; service-scoped queries retained. Evidence: /Users/rob/repos/tailscale2otel/codex/dashboard-closeout/profiles/captured-manifest.json and /Users/rob/repos/tailscale2otel/codex/dashboard-closeout/browser/closeout.md. Full just check passed on final source; generation clean; justfile formatting gate passed, no new recipes. Source commit 760fda5e7c725ae2e1f6499a77bf681bfcd49585; exact-source CI and GitSync succeeded. CodeRabbit Go shard completed with zero findings; Python shard failed No files to review and is not claimed clean.

Final Summary

Documented and proved optional single-tailnet profile ownership while preserving default, hashed and multi-tailnet profile visibility.

References

View the source file on GitHub