Commit bfb5838
committed
observability: PR #19 round-5 review followups
Two Copilot findings addressed:
- **Log-bridge filter on the root logger** — ``install_log_bridge``
was attaching ``_CorrelationIdFilter`` to the OTel
``LoggingHandler`` only. Pre-existing stdout / file / third-party
handlers registered ahead of it on the root logger would see log
records WITHOUT ``openarmature.correlation_id``, violating spec
§7's "every log record emitted during an invocation MUST carry
the attribute." Moved the filter to ``root.addFilter(...)`` so
it runs at the LOGGER level, applying to every record regardless
of which handler processes it. Idempotency is now tracked
separately for handler vs filter installation.
- **Typed LLM event payload** — ``_make_llm_event`` previously
stuffed a plain dict into ``NodeEvent.pre_state`` with
``cast("Any", ...)``, violating the documented
``pre_state: State`` contract. Any observer calling
``event.pre_state.model_dump()`` on an LLM event would crash.
Wrapped the payload in a dedicated ``_LlmEventState(State)``
Pydantic subclass with the LLM fields (model, finish_reason,
prompt/completion/total tokens, optional error_type / message /
category). The OTel observer reads attributes directly via
``isinstance(event.pre_state, _LlmEventState)`` and attribute
access. Schema is honored.1 parent b060790 commit bfb5838
4 files changed
Lines changed: 117 additions & 75 deletions
File tree
- src/openarmature
- llm/providers
- observability/otel
- tests/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
48 | 49 | | |
49 | 50 | | |
50 | 51 | | |
| |||
524 | 525 | | |
525 | 526 | | |
526 | 527 | | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
527 | 558 | | |
528 | 559 | | |
529 | 560 | | |
| |||
537 | 568 | | |
538 | 569 | | |
539 | 570 | | |
540 | | - | |
541 | | - | |
542 | | - | |
543 | | - | |
544 | | - | |
545 | | - | |
546 | | - | |
547 | | - | |
| 571 | + | |
548 | 572 | | |
549 | | - | |
550 | | - | |
551 | | - | |
552 | | - | |
553 | | - | |
554 | | - | |
555 | | - | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
556 | 576 | | |
557 | | - | |
558 | | - | |
559 | | - | |
560 | | - | |
561 | | - | |
562 | | - | |
| 577 | + | |
| 578 | + | |
563 | 579 | | |
564 | 580 | | |
565 | | - | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
566 | 592 | | |
567 | 593 | | |
568 | 594 | | |
569 | 595 | | |
570 | 596 | | |
571 | | - | |
572 | | - | |
573 | | - | |
| 597 | + | |
574 | 598 | | |
575 | 599 | | |
576 | 600 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
57 | 69 | | |
58 | 70 | | |
59 | 71 | | |
| |||
63 | 75 | | |
64 | 76 | | |
65 | 77 | | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
77 | 95 | | |
78 | 96 | | |
79 | 97 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
341 | 341 | | |
342 | 342 | | |
343 | 343 | | |
344 | | - | |
345 | | - | |
346 | | - | |
347 | | - | |
348 | | - | |
349 | | - | |
350 | | - | |
351 | | - | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
352 | 359 | | |
353 | 360 | | |
354 | | - | |
| 361 | + | |
355 | 362 | | |
356 | 363 | | |
357 | 364 | | |
| |||
370 | 377 | | |
371 | 378 | | |
372 | 379 | | |
373 | | - | |
374 | | - | |
375 | | - | |
376 | | - | |
377 | | - | |
378 | | - | |
379 | | - | |
380 | | - | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
385 | | - | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
386 | 389 | | |
387 | 390 | | |
388 | 391 | | |
389 | | - | |
| 392 | + | |
390 | 393 | | |
391 | 394 | | |
392 | | - | |
393 | | - | |
| 395 | + | |
| 396 | + | |
394 | 397 | | |
395 | 398 | | |
396 | 399 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
262 | 262 | | |
263 | 263 | | |
264 | 264 | | |
| 265 | + | |
| 266 | + | |
265 | 267 | | |
266 | 268 | | |
267 | 269 | | |
| |||
272 | 274 | | |
273 | 275 | | |
274 | 276 | | |
275 | | - | |
| 277 | + | |
276 | 278 | | |
277 | 279 | | |
278 | 280 | | |
| |||
282 | 284 | | |
283 | 285 | | |
284 | 286 | | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | | - | |
| 287 | + | |
291 | 288 | | |
292 | 289 | | |
293 | 290 | | |
| |||
0 commit comments