feat!: implement the v2 observability contract - #24
Merged
Conversation
BREAKING CHANGE: Align privacy defaults, correlation, lifecycle behavior, and portable route identity with the shared observability specification.
BREAKING CHANGE: module imports now use github.com/janisto/echo-observability/v2.
BREAKING CHANGE: v2 removes legacy compatibility and adopts the documented request, trace, privacy, lifecycle, and provider-profile APIs.
BREAKING CHANGE: v2 uses the aligned configuration, correlation, lifecycle, provider-profile, and NDJSON behavior without v1 compatibility shims.
BREAKING CHANGE: v2 preserves framework-native routes and selected-profile field ownership without v1 compatibility behavior.
janisto
marked this pull request as ready for review
July 22, 2026 17:25
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Why
Prepare the next major version as an intentionally breaking, privacy-first
observability API. The existing v1 module remains available at the unsuffixed
path; this branch establishes the
/v2module and behavior.What changed
/v2and remove v1 compatibilityshims.
rename the portable field from
remote_iptopeer_ip.IDs, provider presets, status and panic handling, NDJSON framing, and field
ownership.
expanding adversarial regression coverage.
diagnostic with Podman-first local tooling.
Validation
just qa: passedgit diff --check: passedjust mutationpassed with 98.85% efficacy; the consumerimage built and ran with Podman
Compatibility and risk
the
/v2import path, explicitly enable privacy-sensitive fields, migrateremote_ipqueries topeer_ip, and adopt the documented v2 configuration.omitted by default; input and field-ownership checks reject ambiguous or
spoofed metadata.
observe intentionally omitted or renamed fields. Applications must preserve
the documented middleware order. No module is published by this pull request.
Documentation and changelog
Updated README, examples, maintainer guidance, release and security
documentation, issue forms, consumer image documentation, and
CHANGELOG.md.All v2 entries remain under
## [Unreleased].