Skip to content

feat(observability): add structured lifecycle receipts - #23

Merged
offendingcommit merged 1 commit into
mainfrom
feat/structured-observability
Aug 14, 2026
Merged

feat(observability): add structured lifecycle receipts#23
offendingcommit merged 1 commit into
mainfrom
feat/structured-observability

Conversation

@offendingcommit

Copy link
Copy Markdown
Owner

Summary

This is the shared-contract part of the video observability work. Hermes core now distinguishes tool failures from failed operations; this PR gives plugins a common local event format; Sirens can then emit comparable Daphne and DJ Doot generation lifecycles without inventing its own logging contract.

Plugins can correlate multi-stage work through ObservabilityEvent and log_observability_event. The v1 schema carries request, persona, provider, credential-identity, stage, retry, error, timing, and artifact metadata while omitting null fields.

The logger has no exporter or outbound telemetry. It bounds payloads, recursively redacts secret-looking attributes, scrubs common inline credentials, escapes control characters, and offers a domain-separated credential identity hash so operators can compare wiring without exposing keys.

Validation

  • make test — 111 passed, 10 expected Hermes contract skips
  • make build — source distribution and wheel built; the wheel includes observability.py
  • uv run python -m compileall -q hermes_plugin_kit tests
  • git diff --check

Related

The Sirens consumer PR is being developed in parallel and will pin this package to an immutable merge commit before deployment.

@offendingcommit
offendingcommit merged commit b8398e0 into main Aug 14, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant