PR #37 · pramaan-io/pramaan-agents · merged 2026-06-10
Your traces lie. Your logs leak. Your correlation bleeds.
Three quiet failures inside the consumer
Record two inherits record one's ID. Timeline merges. Root cause lost.
The fix — One record, one span, one case file — and never let secrets leak.
sequenceDiagram autonumber participant Q as Queue participant H as Handler / Clerk participant S as Span / Hearing participant L as Logger / Transcript Q->>H: deliver record H->>H: open case file: set corr_id (token) H->>S: open hearing S->>L: log corr-id + redact secrets S->>S: on failure: status=ERROR + exception H->>H: close: reset token Q-->>H: next record (fresh case)
| Method | in → out | what it does |
|---|---|---|
set_correlation_id | (value) → Token[str | None] | writes corr id into ContextVar and returns a token for later reset |
reset_correlation_id | (token) → None | restores the previous corr id via the token so records never bleed |
_envelope_correlation_id | (raw_body) → str | None | pulls the corr id out of the raw envelope so logs stay inside record scope |
Extracts correlation id from the raw envelope via _envelope_correlation_id, so handler logs no longer mint correlation outside record scope (claims 3, 4).
| new method | signature |
|---|---|
_envelope_correlation_id | (raw_body) → str | None |
Adds token-based set and reset helpers for the correlation ContextVar, preventing cross-record bleed between consumer invocations (claim 3).
| new method | signature |
|---|---|
set_correlation_id | (value) → Token[str | None] |
reset_correlation_id | (token) → None |