Tom Boucher
5f3eb42864
feat(observability): propagate parentTraceId on DispatchEvent — ADR-0174 SDK retirement Phase 1.4 ( #178 ) ( #225 )
...
* test(#178 ): update DispatchEvent factory tests to propagate parentTraceId
P1.3 test 'parentTraceId is always undefined' replaced with four P1.4
contracts: absent → undefined, string → propagated, null → undefined,
non-string → undefined (defensive normalization policy).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* feat(#178 ): propagate parentTraceId through DispatchEvent factory
Stop ignoring the parentTraceId parameter added as a forward-compat hook
in P1.3. Defensive normalization: only non-null strings are propagated;
null, non-string values, and absent callers all yield undefined, keeping
P1.3 behavior intact for all existing dispatch call sites.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* test(#178 ): add Hub-level parentTraceId propagation tests
Four new assertions: req.parentTraceId propagates to event, absent →
undefined (P1.3 regression), shared parentTraceId across multiple
dispatches, and unique traceId invariant despite shared parentTraceId.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* feat(#178 ): plumb parentTraceId through Hub dispatch and _notifyLogger
dispatch() now reads req.parentTraceId and passes it to _notifyLogger,
which forwards it to makeDispatchEvent. Backward-compatible: callers
that omit parentTraceId emit events with parentTraceId: undefined,
identical to P1.3 behavior.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* test(#178 ): add trace correlation end-to-end test
Dispatches a root command then 3 children with parentTraceId=rootTraceId.
Reads the real .gsd-trace.jsonl audit file and verifies: 4 events total,
root has no parentTraceId, all children carry rootTraceId, all traceIds
unique, JS filter returns exactly the 3 children given the root's traceId.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* docs(#178 ): document traceId/parentTraceId in audit file
Update Observability section to note that audit events now carry both
traceId and parentTraceId, and explain the correlation filter pattern.
Note that leaf dispatches emit parentTraceId: undefined until the Phase 2
composer wires it automatically.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* chore(#178 ): add changeset for trace correlation seam
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* test(#178 ): cover invalid parentTraceId values in DispatchEvent factory
Adds 9 new test cases for UUID v4 validation of parentTraceId:
empty string, whitespace, non-UUID, oversized, UUID v1, missing-hyphen,
extra-char (all dropped to undefined), plus UPPERCASE and lowercase v4
(both propagated). Tests are intentionally red until the implementation
commit that follows.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* feat(#178 ): validate parentTraceId against UUID v4 before propagation
Adds UUID_V4_REGEX constant and isValidParentTraceId() helper to
event.cjs. makeDispatchEvent now silently coerces any parentTraceId that
fails the UUID v4 check (wrong version nibble, wrong variant, missing
hyphens, oversized, empty, etc.) to undefined. No stderr warn is emitted
— the factory remains pure and side-effect-free. Closes the correlation-
poisoning vector identified in the Codex adversarial review of PR #225 .
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* test(#178 ): assert Hub silently drops invalid parentTraceId at the seam
Adds two tests to hub-logger-integration.test.cjs:
1. dispatch with 'junk' parentTraceId emits event with parentTraceId===undefined.
2. The logger-failure warn path is NOT triggered — the factory coerces the bad
value before onEvent is called, confirmed by zero stderr output even when a
logger that would throw on non-undefined parentTraceId is installed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* test(#178 ): assert invalid parentTraceId does not poison correlation siblings
Adds one test to trace-correlation.test.cjs: dispatches a root, a valid
child (parentTraceId = rootTraceId), and an invalid child (parentTraceId =
'junk'). Asserts: valid child carries correct parentTraceId, invalid child
has parentTraceId dropped to undefined, filtering by rootTraceId yields
exactly 1 event (the valid child only), and all 3 events have unique
traceIds. Uses an isolated Hub + tmpdir to avoid shared fixture interference.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
* docs(#178 ): document UUID v4 contract for parentTraceId
Appends one sentence to the Observability audit-trail paragraph in
CONFIGURATION.md: parentTraceId must be canonical UUID v4 (RFC 4122);
values that don't match are silently dropped from audit output. No section
restructuring — single sentence addition only.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
---------
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-24 16:32:28 -04:00
..
2026-05-24 16:32:28 -04:00
2026-05-23 18:38:49 -04:00
2026-05-20 20:39:17 -04:00
2026-05-24 16:32:28 -04:00
2026-05-23 21:47:11 -04:00
2026-05-23 15:51:34 -04:00
2026-05-23 15:57:33 -04:00
2026-05-09 00:15:04 -04:00
2026-05-11 23:01:34 -04:00
2026-04-25 10:50:54 -04:00
2026-05-16 13:14:24 -04:00
2026-05-22 12:28:16 -04:00
2026-05-22 12:28:16 -04:00
2026-04-25 10:50:54 -04:00
2026-04-11 03:39:29 -07:00
2026-04-20 09:31:34 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-13 19:34:23 -04:00
2026-05-01 19:50:10 -04:00
2026-04-04 14:29:03 -04:00
2026-04-25 10:50:54 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-20 23:08:56 -04:00
2026-05-23 18:10:19 -04:00
2026-05-23 14:56:35 -04:00
2026-05-24 13:30:00 -04:00
2026-05-23 00:24:32 -04:00
2026-05-24 14:37:10 -04:00
2026-05-24 14:16:30 -04:00
2026-05-17 12:00:59 -04:00
2026-04-07 08:13:52 -04:00
2026-04-05 17:49:20 -04:00
2026-05-02 11:45:33 -04:00
2026-04-05 18:05:32 -04:00
2026-05-08 21:25:37 -04:00
2026-04-19 16:35:32 -05:00
2026-04-25 11:34:55 -04:00
2026-05-12 19:02:18 -04:00
2026-04-07 17:19:10 -04:00
2026-05-17 12:00:59 -04:00
2026-05-01 19:50:10 -04:00
2026-05-23 18:39:02 -04:00
2026-04-10 11:19:32 -04:00
2026-04-10 11:25:55 -04:00
2026-05-16 12:16:20 -04:00
2026-05-16 12:39:02 -04:00
2026-05-16 12:52:46 -04:00
2026-04-17 09:20:26 -04:00
2026-05-22 16:22:41 -04:00
2026-04-22 10:41:58 -04:00
2026-04-25 12:02:58 -04:00
2026-04-17 09:20:42 -04:00
2026-04-29 07:56:51 -04:00
2026-05-22 14:54:20 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-04-20 10:09:33 -04:00
2026-05-11 15:27:35 -04:00
2026-05-01 19:50:10 -04:00
2026-04-30 00:43:47 -04:00
2026-04-20 10:11:00 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-04-20 10:08:46 -04:00
2026-05-01 19:50:10 -04:00
2026-05-15 00:02:56 -04:00
2026-05-22 14:54:20 -04:00
2026-05-01 19:50:10 -04:00
2026-04-21 21:20:27 -04:00
2026-04-21 10:10:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-22 16:22:41 -04:00
2026-04-22 10:41:58 -04:00
2026-04-21 20:33:43 -04:00
2026-05-03 16:31:48 -04:00
2026-05-06 15:19:34 -04:00
2026-05-23 18:42:47 -04:00
2026-04-22 12:04:17 -04:00
2026-05-01 19:50:10 -04:00
2026-04-22 12:03:56 -04:00
2026-05-12 19:02:18 -04:00
2026-05-01 19:50:10 -04:00
2026-04-25 12:09:27 -04:00
2026-04-24 18:05:10 -04:00
2026-05-22 16:22:41 -04:00
2026-04-24 18:05:33 -04:00
2026-04-29 22:56:59 -04:00
2026-05-22 16:22:41 -04:00
2026-05-22 16:22:41 -04:00
2026-04-24 20:22:17 -04:00
2026-04-24 20:22:29 -04:00
2026-05-22 14:54:20 -04:00
2026-04-25 12:10:01 -04:00
2026-04-25 12:16:04 -04:00
2026-04-25 12:15:39 -04:00
2026-05-02 09:27:23 -04:00
2026-05-16 12:39:02 -04:00
2026-05-20 23:13:50 -04:00
2026-05-20 23:11:33 -04:00
2026-04-27 12:31:49 -04:00
2026-05-01 19:50:10 -04:00
2026-05-11 14:36:14 -04:00
2026-05-01 19:50:10 -04:00
2026-05-22 16:22:41 -04:00
2026-05-16 12:39:02 -04:00
2026-04-28 20:22:59 -04:00
2026-04-28 20:23:32 -04:00
2026-05-16 12:52:46 -04:00
2026-05-02 09:27:23 -04:00
2026-05-20 22:39:34 -04:00
2026-05-16 11:55:55 -04:00
2026-04-28 20:21:48 -04:00
2026-04-28 20:23:29 -04:00
2026-05-17 12:00:59 -04:00
2026-05-22 16:22:41 -04:00
2026-05-01 19:50:10 -04:00
2026-05-15 22:02:55 -04:00
2026-05-22 14:54:20 -04:00
2026-05-16 11:49:26 -04:00
2026-04-29 21:52:20 -04:00
2026-05-22 08:27:07 -04:00
2026-05-22 08:27:07 -04:00
2026-04-30 17:30:19 -04:00
2026-04-30 21:08:26 -04:00
2026-04-30 21:57:27 -04:00
2026-05-01 09:22:13 -04:00
2026-05-20 20:38:53 -04:00
2026-05-12 21:53:24 -04:00
2026-05-12 21:53:24 -04:00
2026-05-15 22:02:55 -04:00
2026-05-15 22:02:55 -04:00
2026-05-16 12:03:44 -04:00
2026-05-01 16:10:30 -04:00
2026-05-01 17:25:20 -04:00
2026-05-16 12:39:02 -04:00
2026-05-01 15:15:20 -04:00
2026-05-20 23:13:25 -04:00
2026-05-17 12:00:59 -04:00
2026-05-24 14:16:16 -04:00
2026-05-15 22:43:21 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 17:25:20 -04:00
2026-05-01 21:13:25 -04:00
2026-05-01 17:39:35 -04:00
2026-05-02 00:29:43 -04:00
2026-05-22 16:22:41 -04:00
2026-05-02 00:29:34 -04:00
2026-05-02 00:29:34 -04:00
2026-05-01 21:14:14 -04:00
2026-05-22 16:22:41 -04:00
2026-05-16 12:16:20 -04:00
2026-05-02 11:45:36 -04:00
2026-05-02 11:45:33 -04:00
2026-05-02 11:45:39 -04:00
2026-05-22 16:22:41 -04:00
2026-05-02 17:44:52 -04:00
2026-05-04 23:34:57 -04:00
2026-05-04 23:30:35 -04:00
2026-05-16 11:55:55 -04:00
2026-05-04 22:52:30 -04:00
2026-05-14 12:06:36 -04:00
2026-05-05 15:02:03 -04:00
2026-05-22 16:22:41 -04:00
2026-05-05 15:02:23 -04:00
2026-05-05 15:02:26 -04:00
2026-05-05 15:02:19 -04:00
2026-05-24 14:17:03 -04:00
2026-05-05 15:02:30 -04:00
2026-05-09 11:39:31 -04:00
2026-05-05 15:02:15 -04:00
2026-05-22 16:22:41 -04:00
2026-05-05 15:02:38 -04:00
2026-05-05 18:53:35 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 15:00:08 -04:00
2026-05-06 22:06:56 -04:00
2026-05-22 14:54:20 -04:00
2026-05-06 21:51:42 -04:00
2026-05-22 16:22:41 -04:00
2026-05-15 00:02:56 -04:00
2026-05-08 08:40:53 -04:00
2026-05-22 16:22:41 -04:00
2026-05-08 08:40:41 -04:00
2026-05-09 14:21:42 -04:00
2026-05-08 08:40:36 -04:00
2026-05-08 10:25:59 -04:00
2026-05-08 09:26:35 -04:00
2026-05-08 09:06:37 -04:00
2026-05-08 23:53:21 -04:00
2026-05-09 07:42:22 -04:00
2026-05-09 07:40:56 -04:00
2026-05-16 12:52:46 -04:00
2026-05-22 16:22:41 -04:00
2026-05-09 19:27:36 -04:00
2026-05-16 11:55:55 -04:00
2026-05-14 12:59:38 -04:00
2026-05-20 23:13:50 -04:00
2026-05-22 16:22:41 -04:00
2026-05-22 14:54:20 -04:00
2026-05-22 14:54:20 -04:00
2026-05-10 19:48:28 -04:00
2026-05-22 16:22:41 -04:00
2026-05-22 11:24:14 -04:00
2026-05-12 20:15:43 -04:00
2026-05-11 22:09:59 -04:00
2026-05-20 23:13:50 -04:00
2026-05-20 23:13:50 -04:00
2026-05-12 18:50:35 -04:00
2026-05-12 18:50:19 -04:00
2026-05-12 19:19:04 -04:00
2026-05-12 20:15:43 -04:00
2026-05-12 20:49:43 -04:00
2026-05-18 12:42:43 -04:00
2026-05-13 13:54:30 -04:00
2026-05-14 07:47:18 -04:00
2026-05-16 12:52:46 -04:00
2026-05-14 12:49:48 -04:00
2026-05-14 19:00:32 -04:00
2026-05-22 14:54:20 -04:00
2026-05-14 19:47:48 -04:00
2026-05-14 23:17:38 -04:00
2026-05-15 09:16:41 -04:00
2026-05-16 12:16:20 -04:00
2026-05-22 16:22:41 -04:00
2026-05-15 14:54:58 -04:00
2026-05-16 12:52:46 -04:00
2026-05-15 22:56:32 -04:00
2026-05-23 18:39:02 -04:00
2026-05-23 18:39:02 -04:00
2026-05-16 14:00:34 -04:00
2026-05-15 22:08:28 -04:00
2026-05-15 21:54:03 -04:00
2026-05-24 14:17:03 -04:00
2026-05-22 16:22:41 -04:00
2026-05-15 22:43:21 -04:00
2026-05-16 00:07:59 -04:00
2026-05-16 13:14:24 -04:00
2026-05-20 23:13:25 -04:00
2026-05-20 23:12:44 -04:00
2026-05-22 14:54:20 -04:00
2026-05-22 12:28:16 -04:00
2026-05-17 19:31:31 -04:00
2026-05-18 00:14:03 -04:00
2026-05-18 00:13:59 -04:00
2026-05-18 00:13:59 -04:00
2026-05-21 23:19:52 -04:00
2026-05-18 12:42:43 -04:00
2026-05-22 11:53:40 -04:00
2026-05-20 23:08:56 -04:00
2026-05-20 15:22:12 -04:00
2026-05-20 23:09:42 -04:00
2026-05-20 23:10:09 -04:00
2026-05-20 22:39:34 -04:00
2026-05-20 23:11:33 -04:00
2026-05-20 23:11:33 -04:00
2026-05-24 14:37:10 -04:00
2026-05-22 11:39:57 -04:00
2026-05-22 11:39:51 -04:00
2026-05-22 11:23:58 -04:00
2026-05-01 19:50:10 -04:00
2026-05-22 16:22:41 -04:00
2026-05-01 19:50:10 -04:00
2026-05-22 11:51:37 -04:00
2026-05-22 16:22:41 -04:00
2026-05-01 18:12:20 -04:00
2026-05-16 13:09:54 -04:00
2026-05-16 13:09:54 -04:00
2026-05-01 18:12:20 -04:00
2026-05-22 11:51:37 -04:00
2026-05-23 18:38:49 -04:00
2026-05-01 19:50:10 -04:00
2026-05-24 14:16:16 -04:00
2026-05-20 20:57:06 -04:00
2026-04-11 09:15:36 -04:00
2026-05-15 19:32:02 -04:00
2026-05-17 12:00:59 -04:00
2026-04-20 09:31:34 -04:00
2026-05-22 16:22:41 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-08 23:53:32 -04:00
2026-04-12 08:10:30 -04:00
2026-05-01 19:50:10 -04:00
2026-05-17 12:00:59 -04:00
2026-05-20 23:13:50 -04:00
2026-05-05 16:06:29 -04:00
2026-05-24 14:20:28 -04:00
2026-05-09 02:49:19 -04:00
2026-05-14 20:01:32 -04:00
2026-04-05 17:02:20 -04:00
2026-04-10 10:56:09 -04:00
2026-05-23 16:22:31 -04:00
2026-04-25 11:34:55 -04:00
2026-04-07 17:25:11 -04:00
2026-05-01 19:50:10 -04:00
2026-05-18 23:13:09 -04:00
2026-05-23 18:39:02 -04:00
2026-05-15 00:02:56 -04:00
2026-05-15 00:02:56 -04:00
2026-05-01 19:50:10 -04:00
2026-04-30 01:04:41 -04:00
2026-05-09 11:39:24 -04:00
2026-05-17 12:00:59 -04:00
2026-05-13 20:46:02 -04:00
2026-04-11 09:20:27 -04:00
2026-04-04 14:29:03 -04:00
2026-05-15 22:02:55 -04:00
2026-05-13 14:11:02 -04:00
2026-05-16 13:14:24 -04:00
2026-04-05 09:15:41 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-04-25 11:34:55 -04:00
2026-05-01 19:50:10 -04:00
2026-05-14 12:43:48 -04:00
2026-05-23 18:38:49 -04:00
2026-04-01 08:47:31 -06:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-04-25 16:26:15 -04:00
2026-05-05 15:44:59 -04:00
2026-05-22 14:54:20 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 21:51:29 -04:00
2026-05-16 12:39:02 -04:00
2026-04-22 12:04:21 -04:00
2026-04-29 08:14:11 -04:00
2026-05-16 12:39:02 -04:00
2026-05-22 14:54:20 -04:00
2026-04-30 00:48:49 -04:00
2026-05-14 16:38:05 -04:00
2026-05-11 23:01:34 -04:00
2026-05-16 12:03:44 -04:00
2026-05-06 21:51:38 -04:00
2026-05-01 19:50:10 -04:00
2026-05-10 19:48:28 -04:00
2026-05-15 22:02:55 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 21:51:38 -04:00
2026-05-01 19:50:10 -04:00
2026-05-05 16:06:29 -04:00
2026-04-22 20:49:52 -04:00
2026-05-12 21:53:24 -04:00
2026-05-02 23:12:50 -04:00
2026-05-20 20:57:06 -04:00
2026-05-16 12:52:46 -04:00
2026-05-02 15:24:26 -04:00
2026-05-15 22:02:55 -04:00
2026-05-11 15:27:40 -04:00
2026-05-15 00:02:56 -04:00
2026-05-13 21:19:47 -04:00
2026-05-15 20:22:11 -04:00
2026-05-09 11:46:34 -04:00
2026-05-09 11:39:31 -04:00
2026-05-09 23:29:11 -04:00
2026-05-09 13:54:06 -04:00
2026-05-15 23:57:38 -04:00
2026-05-15 23:57:38 -04:00
2026-05-15 23:57:38 -04:00
2026-05-16 00:23:27 -04:00
2026-05-16 00:23:27 -04:00
2026-05-16 00:23:27 -04:00
2026-05-16 12:52:46 -04:00
2026-05-17 00:56:14 -04:00
2026-05-16 12:39:02 -04:00
2026-05-22 13:16:47 -04:00
2026-05-14 12:43:48 -04:00
2026-04-26 21:40:38 -04:00
2026-05-01 19:50:10 -04:00
2026-05-10 17:39:06 -04:00
2026-05-23 19:33:54 -04:00
2026-05-22 11:24:06 -04:00
2026-05-20 20:39:17 -04:00
2026-05-20 20:39:17 -04:00
2026-05-20 20:39:17 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 21:01:25 -04:00
2026-05-20 20:57:06 -04:00
2026-05-20 20:57:06 -04:00
2026-05-06 21:51:38 -04:00
2026-05-16 12:39:02 -04:00
2026-05-05 18:34:42 -04:00
2026-04-15 22:46:31 -04:00
2026-04-04 14:37:54 -04:00
2026-04-04 14:29:03 -04:00
2026-05-23 23:10:06 -04:00
2026-05-17 12:00:59 -04:00
2026-04-04 14:29:03 -04:00
2026-04-20 09:31:34 -04:00
2026-05-02 09:27:23 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 20:27:33 -04:00
2026-05-20 20:39:01 -04:00
2026-04-27 12:31:49 -04:00
2026-05-01 19:50:10 -04:00
2026-05-20 23:10:09 -04:00
2026-05-16 12:16:20 -04:00
2026-05-20 20:38:30 -04:00
2026-05-20 20:38:30 -04:00
2026-05-13 12:45:16 -04:00
2026-05-24 14:17:03 -04:00
2026-05-11 14:36:14 -04:00
2026-05-17 12:00:59 -04:00
2026-05-15 08:16:28 -04:00
2026-05-20 23:12:08 -04:00
2026-04-15 14:59:24 -04:00
2026-05-01 19:50:10 -04:00
2026-04-20 09:39:05 -04:00
2026-04-20 09:39:05 -04:00
2026-05-01 19:50:10 -04:00
2026-04-26 13:33:54 -04:00
2026-05-01 19:50:10 -04:00
2026-04-05 19:09:14 -04:00
2026-05-16 13:33:24 -04:00
2026-05-16 13:33:24 -04:00
2026-05-16 13:14:24 -04:00
2026-05-13 12:45:16 -04:00
2026-05-20 20:37:07 -04:00
2026-05-22 11:51:37 -04:00
2026-04-14 17:57:38 -04:00
2026-05-01 19:50:10 -04:00
2026-04-04 14:29:03 -04:00
2026-05-20 20:38:53 -04:00
2026-05-20 20:38:53 -04:00
2026-05-20 20:38:53 -04:00
2026-04-26 11:48:47 -04:00
2026-05-09 00:15:04 -04:00
2026-05-08 21:25:37 -04:00
2026-04-30 22:48:08 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-04-05 18:05:32 -04:00
2026-05-06 21:51:38 -04:00
2026-04-07 08:13:46 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 16:10:30 -04:00
2026-05-23 15:50:17 -04:00
2026-05-01 19:50:10 -04:00
2026-05-09 00:15:04 -04:00
2026-05-01 19:50:10 -04:00
2026-05-08 09:08:06 -04:00
2026-04-06 15:13:23 -04:00
2026-05-01 19:50:10 -04:00
2026-05-14 10:21:11 -04:00
2026-04-16 17:15:29 -04:00
2026-04-04 14:29:03 -04:00
2026-05-21 23:32:10 -04:00
2026-05-22 16:54:10 -04:00
2026-05-16 13:14:24 -04:00
2026-04-04 14:29:03 -04:00
2026-04-25 12:02:58 -04:00
2026-05-06 21:51:38 -04:00
2026-05-01 19:50:10 -04:00
2026-05-15 00:02:56 -04:00
2026-05-16 13:14:24 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 21:51:38 -04:00
2026-04-30 11:38:13 -04:00
2026-05-01 19:50:10 -04:00
2026-04-30 12:13:55 -04:00
2026-05-18 12:06:46 -04:00
2026-04-30 14:19:46 -04:00
2026-04-30 14:19:46 -04:00
2026-05-01 19:50:10 -04:00
2026-05-09 14:21:42 -04:00
2026-05-14 12:43:48 -04:00
2026-05-01 19:50:10 -04:00
2026-05-06 21:51:38 -04:00
2026-05-16 12:52:46 -04:00
2026-05-18 23:13:09 -04:00
2026-05-18 23:13:09 -04:00
2026-05-18 23:13:09 -04:00
2026-05-16 12:39:02 -04:00
2026-05-01 19:50:10 -04:00
2026-05-16 12:39:02 -04:00
2026-04-30 21:57:27 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 10:23:41 -04:00
2026-05-01 19:50:10 -04:00
2026-05-17 12:00:59 -04:00
2026-04-04 14:29:03 -04:00
2026-05-01 19:50:10 -04:00
2026-04-16 17:22:31 -04:00
2026-04-30 00:43:47 -04:00
2026-04-30 00:43:47 -04:00
2026-05-18 13:05:02 -04:00
2026-05-23 00:24:32 -04:00
2026-05-13 14:10:15 -04:00
2026-05-13 14:10:15 -04:00
2026-05-13 14:10:15 -04:00
2026-04-26 13:33:45 -04:00
2026-05-16 13:14:24 -04:00
2026-05-06 21:51:38 -04:00
2026-04-23 11:53:20 -04:00
2026-05-10 14:43:53 -05:00
2026-05-16 09:25:36 -04:00
2026-05-20 23:10:09 -04:00
2026-05-20 23:12:44 -04:00
2026-05-20 20:39:09 -04:00
2026-05-16 12:03:44 -04:00
2026-05-10 17:39:06 -04:00
2026-05-01 19:50:10 -04:00
2026-05-16 13:14:24 -04:00
2026-04-01 16:53:20 -04:00
2026-05-01 19:50:10 -04:00
2026-05-23 10:58:14 -04:00
2026-05-16 13:14:24 -04:00
2026-05-01 19:50:10 -04:00
2026-05-23 10:15:03 -04:00
2026-05-23 10:14:48 -04:00
2026-04-20 10:08:18 -04:00
2026-05-01 19:50:10 -04:00
2026-04-04 07:10:21 -04:00
2026-05-12 21:53:24 -04:00
2026-05-01 19:50:10 -04:00
2026-04-10 13:55:27 -04:00
2026-05-13 17:12:53 -04:00
2026-05-09 02:49:19 -04:00
2026-05-16 12:39:02 -04:00
2026-05-20 15:56:22 -04:00
2026-05-14 22:17:20 -04:00
2026-04-11 15:02:55 -04:00
2026-05-08 23:53:21 -04:00
2026-05-06 21:51:38 -04:00
2026-05-01 19:50:10 -04:00
2026-04-11 15:39:50 -04:00
2026-04-11 09:15:00 -04:00
2026-05-01 19:50:10 -04:00
2026-04-05 17:49:20 -04:00
2026-05-01 19:50:10 -04:00
2026-05-05 15:44:59 -04:00
2026-04-20 10:08:18 -04:00
2026-05-22 14:54:20 -04:00
2026-05-01 09:22:13 -04:00
2026-05-15 19:32:02 -04:00
2026-04-12 17:56:19 -04:00
2026-04-25 16:26:15 -04:00
2026-05-06 21:51:38 -04:00
2026-05-22 11:23:50 -04:00
2026-05-06 21:51:38 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-04-04 14:29:03 -04:00
2026-05-22 12:28:16 -04:00
2026-05-16 12:39:02 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 08:40:37 -04:00
2026-05-01 19:50:10 -04:00
2026-05-01 19:50:10 -04:00
2026-05-17 11:16:54 -04:00
2026-05-22 12:28:16 -04:00
2026-05-16 12:16:20 -04:00
2026-05-15 09:35:02 -04:00
2026-05-16 13:14:24 -04:00
2026-05-09 14:21:42 -04:00
2026-05-22 14:54:20 -04:00
2026-05-22 11:23:34 -04:00
2026-05-22 14:54:20 -04:00