Tom Boucher
dd4f179672
feat( #3970 ): per-task external-tracker content-resolution seam ( #4000 )
...
* feat(#3970 ): per-task external-tracker content-resolution seam
Implements ADR-3646 (Phase 1, #3970 ): a `<task tracker-id="...">` attribute
plus a new optional `taskContentResolver` capability-manifest field let a
capability resolve a task's action/verify/acceptance-criteria/read_first/done
content from an external issue tracker instead of PLAN.md's inline body.
- src/plan-document.cts: parses the `tracker-id` attribute into `PlanTask.trackerId`
- src/task-content-resolution.cts: new leaf module — split/find/build/resolve,
with a hard-halt (throw) contract on ambiguous/failed/timeout/malformed
resolution, never a silent fallback to possibly-stale inline text
- src/task-command-router.cts: new `task resolve-content --plan --task-id --raw`
CLI verb wiring the module into a real process exit code
- gsd-core/bin/lib/capability-validator.cjs: validates the new
`taskContentResolver` manifest field (feature-role only, cross-capability
trackerPrefix uniqueness)
- gsd-core/workflows/execute-plan.md, gsd-core/references/loop-hook-dispatch.md,
docs/reference/capability-manifest.md: wire the seam into the per-task loop
and document it as a new `execute:task` point outside the existing
contribution/step/gate vocabulary (unconditional in autonomous mode)
Closes #3970
* fix(#3970 ): gate checkpoint tasks out of content resolution, close trackerPrefix grammar parity gap, cover path-traversal guard
Standards/Spec code-review pass on the task-content-resolution seam (ADR-3646
Phase 1) found three defects:
1. execute-plan.md's task-content-resolution bullet fired on any
tracker-id-bearing task with no check that it wasn't type="checkpoint:*",
contradicting ADR-3646 Decision 1 (a checkpoint task must never enter
resolve-content). plan-document.cts already parses trackerId: null
unconditionally for checkpoint tasks; only the workflow prose needed the
fix, so the bullet now explicitly excludes checkpoint tasks.
2. task-content-resolution.cts's parseResolverDeclaration accepted any
non-empty trackerPrefix with no grammar check, while capability-
validator.cjs's KEBAB_RE enforces kebab-case at install time — a
Generative Fix Divergence gap. Added the same grammar (as a literal
regex, documented as intentionally not shared across the .cts/.cjs build
boundary) plus a parity test asserting the two surfaces agree across a
valid/invalid trackerPrefix table.
3. task-command-router.cts's routeResolveContent path-traversal guard on
--plan had zero test coverage. Added a test exercising a
../../../etc/passwit-shaped path and asserting the USAGE rejection names
the offending path.
* fix(#3970 ): sanitize resolver diagnostics and cap resolver timeoutMs
Two findings caught by an isolated security-review pass on the task
content resolution seam:
- ResolverFailedError/ResolverMalformedOutputError embedded raw,
unsanitized subprocess stderr/stdout (attacker/model-influenced via
the tracker-id argv token) into .message. A hostile or buggy resolver
could smuggle a newline plus a forged "Error: " line, or terminal
escape sequences, into a diagnostic io.cjs's error() writes verbatim
to stderr. Fixed at the constructor (task-content-resolution.cts) via
io.cjs's existing formatDiagnosticToken(), so every caller of
resolveTaskContent gets a safe .message by construction.
- capability-validator.cjs's validateTaskContentResolverFields had no
upper bound on taskContentResolver.invoke.timeoutMs, letting a
manifest declare an effectively unbounded value and defeat the
"bounded subprocess" design intent. Added a 120000ms ceiling specific
to this field, without touching the shared isPositiveIntegerMs()
helper (still used unbounded by the reviewer lane's timeoutFloorMs
and probe timeoutMs).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
* fix(#3970 ): fix gsd-test failures — stale prose allowlist line and stderr-vs-message assertion
gsd-test (remote dockerized matrix) came back red with 5 failures on this
PR; all five are real defects, fixed here.
- tests/no-bare-gsd-tools-command-position.test.cjs: PROSE_ALLOWLIST's
execute-plan.md entry pointed at line 415, which ffc190df4's
checkpoint-exclusion caveat (added near line 221) shifted down by one
line. The actual "validated downstream by gsd-tools uat
classify-coverage" descriptive mention now sits at line 416. Updated
the allowlist entry's line number to match.
- tests/task-command-router-resolve-content.test.cjs: the path-traversal
test asserted the outside-project-scope diagnostic against the thrown
ExitError's own .message. io.cts's error() (ADR-3889) writes its
human-readable message to fd 2 via writeAllSync and then throws a bare
`new ExitError(1)` with no message argument — by design, so the
exception carries no duplicate text and the thrown ExitError's message
defaults to "process exit 1" (cli-exit.cts's ExitError constructor).
Root cause was the test, not the source: task-command-router.cjs's
outside-project-scope rejection already calls error() correctly and the
diagnostic text is genuinely emitted, just on fd 2, not on the
exception. Fixed the test to capture fd-2 writes (mirroring
tests/estimate-calibrate.test.cjs's runCalibrateExpectError and this
same file's own captureStdout for fd 1) and assert against the captured
stderr text instead of err.message. This was masked locally because a
manual `node -e` sanity check that only inspects the caught exception's
.message cannot see what the real node:test run actually failed on.
Emitted-Drift-Ack-Growth: execute-plan.md — adds the ADR-3646 task-content-resolution bullet and checkpoint-exclusion caveat to the per-task execute loop; a real behavioral prose addition, not incidental bloat.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
* docs(#3970 ): backfill changeset PR number (pr:0 -> pr:4000)
---------
Co-authored-by: sim <sim@local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com >
2026-08-28 13:17:04 -04:00
..
2026-06-25 18:24:39 -04:00
2026-08-27 22:21:10 -04:00
2026-08-24 02:45:28 -04:00
2026-08-28 13:10:20 -04:00
2026-06-25 18:24:39 -04:00
2026-08-28 13:10:20 -04:00
2026-07-09 23:43:18 -04:00
2026-06-15 23:21:20 -04:00
2026-06-02 18:35:29 -04:00
2026-08-18 11:37:44 -04:00
2026-07-06 08:31:51 -04:00
2026-07-17 06:50:06 -04:00
2026-08-11 22:23:55 -04:00
2026-06-13 21:07:55 -04:00
2026-08-27 00:12:13 -04:00
2026-06-13 21:07:55 -04:00
2026-08-07 21:03:50 -04:00
2026-08-09 14:23:35 -04:00
2026-08-27 23:10:49 -04:00
2026-08-05 17:20:56 -04:00
2026-08-19 21:55:18 -04:00
2026-07-13 09:02:44 -06:00
2026-08-27 23:10:49 -04:00
2026-06-02 18:35:29 -04:00
2026-08-23 21:21:21 -04:00
2026-08-23 21:21:21 -04:00
2026-06-13 23:35:08 -04:00
2026-08-14 10:02:28 -04:00
2026-08-23 18:27:02 -04:00
2026-08-07 15:18:18 -04:00
2026-08-14 10:02:28 -04:00
2026-08-13 23:10:52 -04:00
2026-08-27 15:19:01 -04:00
2026-08-27 15:19:01 -04:00
2026-08-23 21:21:21 -04:00
2026-08-14 16:03:48 -04:00
2026-08-14 13:10:49 -04:00
2026-04-25 10:50:54 -04:00
2026-07-01 20:09:01 -04:00
2026-08-08 05:50:49 -05:00
2026-08-27 17:28:39 -04:00
2026-06-12 19:51:54 -04:00
2026-06-11 23:59:56 -04:00
2026-06-06 11:24:48 -04:00
2026-06-02 18:35:29 -04:00
2026-07-30 12:48:06 -04:00
2026-07-30 12:48:06 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 15:50:12 -04:00
2026-08-27 11:37:31 -04:00
2026-08-24 17:56:02 -04:00
2026-07-03 09:17:32 -04:00
2026-08-27 15:50:12 -04:00
2026-08-27 11:37:31 -04:00
2026-08-14 10:02:28 -04:00
2026-08-27 23:27:43 -04:00
2026-08-28 10:21:57 -04:00
2026-06-02 18:35:29 -04:00
2026-08-18 09:23:44 -04:00
2026-08-07 15:18:18 -04:00
2026-08-13 20:31:55 -04:00
2026-08-14 10:02:28 -04:00
2026-08-14 23:01:30 -04:00
2026-06-10 16:10:07 -04:00
2026-08-14 10:02:28 -04:00
2026-08-14 10:02:28 -04:00
2026-08-03 19:59:58 -04:00
2026-06-15 18:11:20 -04:00
2026-07-24 22:49:29 -04:00
2026-08-03 12:39:16 -04:00
2026-08-24 17:43:25 -04:00
2026-08-07 21:03:50 -04:00
2026-08-10 12:55:52 -04:00
2026-08-23 21:21:21 -04:00
2026-06-18 23:37:43 -04:00
2026-08-18 22:35:54 -04:00
2026-06-09 22:35:42 -04:00
2026-08-07 15:18:18 -04:00
2026-08-14 21:34:29 -04:00
2026-08-12 08:25:14 -04:00
2026-06-26 12:44:09 -04:00
2026-07-03 19:37:14 -04:00
2026-06-16 02:38:47 -04:00
2026-08-27 15:50:12 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 21:34:29 -04:00
2026-08-08 05:50:17 -05:00
2026-08-14 21:34:29 -04:00
2026-08-28 13:17:04 -04:00
2026-08-07 15:18:18 -04:00
2026-07-03 09:17:32 -04:00
2026-08-07 15:45:51 -04:00
2026-08-07 15:45:51 -04:00
2026-08-10 12:55:52 -04:00
2026-06-14 15:02:54 -04:00
2026-07-21 19:32:51 -04:00
2026-05-01 18:12:20 -04:00
2026-08-09 12:27:04 -04:00
2026-08-16 12:59:08 -04:00
2026-08-13 16:19:57 -04:00
2026-08-14 01:10:48 -04:00
2026-08-27 03:31:02 -04:00
2026-07-05 14:04:29 -04:00
2026-08-08 05:50:17 -05:00
2026-08-14 09:27:48 -04:00
2026-08-27 11:37:31 -04:00
2026-08-18 14:11:23 -04:00
2026-08-23 21:21:21 -04:00
2026-08-05 23:22:59 -04:00
2026-08-24 21:13:55 -04:00
2026-08-07 15:18:18 -04:00
2026-08-23 21:21:21 -04:00
2026-08-23 21:21:21 -04:00
2026-07-28 18:02:17 -04:00
2026-08-14 19:02:14 -04:00
2026-06-12 16:03:51 -04:00
2026-07-26 01:06:35 -04:00
2026-07-26 20:49:38 -04:00
2026-08-14 09:28:22 -04:00
2026-08-14 13:10:49 -04:00
2026-06-02 18:35:29 -04:00
2026-08-28 08:09:05 -04:00
2026-07-09 19:38:27 -04:00
2026-07-09 19:38:27 -04:00
2026-08-05 17:20:56 -04:00
2026-08-23 21:21:21 -04:00
2026-07-09 19:38:27 -04:00
2026-05-29 11:39:52 -04:00
2026-08-10 10:18:29 -04:00
2026-08-11 22:23:55 -04:00
2026-08-23 21:21:21 -04:00
2026-07-20 08:22:23 -04:00
2026-06-13 23:35:08 -04:00
2026-08-13 16:19:57 -04:00
2026-06-06 11:24:48 -04:00
2026-08-23 21:21:21 -04:00
2026-08-14 00:26:07 -04:00
2026-08-03 19:59:58 -04:00
2026-08-23 21:21:21 -04:00
2026-07-29 19:49:53 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 13:10:49 -04:00
2026-08-18 09:23:44 -04:00
2026-08-23 21:21:21 -04:00
2026-08-10 01:31:15 -04:00
2026-08-27 23:27:43 -04:00
2026-08-18 09:23:44 -04:00
2026-08-10 02:11:57 -04:00
2026-08-27 00:12:13 -04:00
2026-08-15 23:29:30 -04:00
2026-08-14 10:02:28 -04:00
2026-08-27 12:14:27 -04:00
2026-08-28 03:15:39 -04:00
2026-08-07 15:18:18 -04:00
2026-08-17 13:34:55 -04:00
2026-08-07 21:03:50 -04:00
2026-08-14 19:02:14 -04:00
2026-08-18 07:26:28 -04:00
2026-08-08 16:05:17 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 00:12:13 -04:00
2026-08-14 13:10:49 -04:00
2026-08-27 23:10:49 -04:00
2026-08-28 03:15:39 -04:00
2026-08-27 19:55:34 -04:00
2026-08-22 18:57:19 -04:00
2026-08-18 22:08:52 -04:00
2026-08-14 19:02:14 -04:00
2026-08-27 17:57:05 -04:00
2026-07-05 17:15:48 -04:00
2026-08-01 01:34:05 -04:00
2026-07-31 23:03:13 -04:00
2026-07-31 23:03:13 -04:00
2026-08-14 16:03:48 -04:00
2026-07-31 15:44:19 -04:00
2026-07-31 13:17:01 -04:00
2026-07-31 13:17:01 -04:00
2026-08-08 16:05:17 -04:00
2026-06-14 08:25:41 -04:00
2026-06-02 18:35:29 -04:00
2026-08-12 20:45:04 -04:00
2026-07-27 19:55:37 -04:00
2026-07-29 17:06:04 -04:00
2026-07-29 17:06:04 -04:00
2026-08-20 15:07:21 -04:00
2026-08-14 10:02:28 -04:00
2026-08-26 16:03:11 -04:00
2026-06-22 23:43:22 -04:00
2026-08-14 13:10:49 -04:00
2026-06-13 23:35:08 -04:00
2026-08-18 09:23:44 -04:00
2026-07-09 00:21:28 -04:00
2026-08-18 09:23:44 -04:00
2026-08-27 22:21:10 -04:00
2026-08-18 09:23:44 -04:00
2026-08-23 21:21:21 -04:00
2026-07-30 12:48:06 -04:00
2026-08-18 14:11:23 -04:00
2026-08-27 23:10:49 -04:00
2026-08-05 17:20:56 -04:00
2026-07-18 14:42:29 -04:00
2026-07-18 00:39:28 -04:00
2026-07-21 18:38:51 -04:00
2026-07-18 13:42:58 -04:00
2026-07-18 15:46:42 -04:00
2026-07-18 07:55:28 -04:00
2026-07-18 19:01:04 -04:00
2026-08-14 21:34:29 -04:00
2026-08-23 21:21:21 -04:00
2026-08-17 17:25:53 -04:00
2026-08-07 15:18:18 -04:00
2026-08-07 15:18:18 -04:00
2026-08-07 15:18:18 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 03:31:02 -04:00
2026-07-19 22:44:08 -04:00
2026-07-13 07:03:47 -07:00
2026-07-29 17:06:04 -04:00
2026-08-14 13:10:49 -04:00
2026-08-14 10:02:28 -04:00
2026-08-14 15:57:25 -04:00
2026-08-12 00:51:19 -04:00
2026-08-26 17:01:09 -04:00
2026-08-26 19:29:32 -04:00
2026-08-13 16:19:57 -04:00
2026-08-26 01:57:47 -04:00
2026-07-31 21:20:46 -04:00
2026-08-27 23:10:49 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 16:03:48 -04:00
2026-08-20 13:36:00 -04:00
2026-08-07 21:03:50 -04:00
2026-08-14 01:44:54 -04:00
2026-08-27 23:10:49 -04:00
2026-08-22 20:51:55 -04:00
2026-08-25 19:54:30 -04:00
2026-08-28 09:18:57 -04:00
2026-08-27 17:28:39 -04:00
2026-08-07 15:18:18 -04:00
2026-08-01 16:00:14 -04:00
2026-08-16 01:14:26 -04:00
2026-08-07 15:45:51 -04:00
2026-08-07 15:18:18 -04:00
2026-08-08 14:22:10 -04:00
2026-08-08 14:22:10 -04:00
2026-08-09 19:35:34 -04:00
2026-08-27 23:10:49 -04:00
2026-08-28 03:15:39 -04:00
2026-08-28 03:15:39 -04:00
2026-07-26 16:28:56 -04:00
2026-06-24 17:16:13 -04:00
2026-06-24 17:16:13 -04:00
2026-06-13 21:07:55 -04:00
2026-08-27 23:10:49 -04:00
2026-08-01 14:24:05 -04:00
2026-07-03 09:17:32 -04:00
2026-08-24 10:58:04 -04:00
2026-08-14 10:02:28 -04:00
2026-08-23 21:21:21 -04:00
2026-08-20 15:07:21 -04:00
2026-08-27 02:24:03 -04:00
2026-08-19 20:50:12 -04:00
2026-08-14 16:03:48 -04:00
2026-08-28 13:10:20 -04:00
2026-08-09 23:05:41 -04:00
2026-06-28 12:00:43 -04:00
2026-06-28 12:25:02 -04:00
2026-06-14 12:23:07 -04:00
2026-08-05 16:00:52 -04:00
2026-06-02 18:35:29 -04:00
2026-07-08 12:57:49 +03:00
2026-08-24 19:05:11 -04:00
2026-08-18 16:40:17 -04:00
2026-08-05 16:44:07 -04:00
2026-07-20 14:59:30 -04:00
2026-08-11 17:42:41 -04:00
2026-08-01 21:27:33 -04:00
2026-08-26 19:29:32 -04:00
2026-08-25 08:36:33 -04:00
2026-06-13 21:07:55 -04:00
2026-06-20 01:59:03 -04:00
2026-06-12 23:43:07 -04:00
2026-06-02 18:35:29 -04:00
2026-08-07 21:03:50 -04:00
2026-06-02 18:35:29 -04:00
2026-07-29 17:06:04 -04:00
2026-08-09 23:41:44 -04:00
2026-08-27 00:12:13 -04:00
2026-08-26 19:29:32 -04:00
2026-08-26 19:29:32 -04:00
2026-07-27 16:50:12 -04:00
2026-08-27 23:10:49 -04:00
2026-08-27 16:36:34 -04:00
2026-08-27 04:12:47 -04:00
2026-08-03 12:16:56 -04:00
2026-08-03 12:16:56 -04:00
2026-08-14 10:02:28 -04:00
2026-08-07 15:18:18 -04:00
2026-08-23 21:21:21 -04:00
2026-08-17 15:56:46 -04:00
2026-08-23 21:21:21 -04:00
2026-08-03 19:59:58 -04:00
2026-08-27 23:10:49 -04:00
2026-07-11 23:24:42 -04:00
2026-08-24 03:54:02 -04:00
2026-08-07 21:03:50 -04:00
2026-07-22 00:27:35 -04:00
2026-08-27 02:24:03 -04:00
2026-08-27 02:24:03 -04:00
2026-08-27 12:15:21 -04:00
2026-07-03 08:59:23 -04:00
2026-07-05 14:50:01 -04:00
2026-08-01 21:36:48 -04:00
2026-08-27 23:10:49 -04:00
2026-08-06 02:56:07 -04:00
2026-08-14 13:10:49 -04:00
2026-08-28 01:53:23 -04:00
2026-08-27 23:10:49 -04:00
2026-06-28 14:27:43 -04:00
2026-08-10 11:59:51 -04:00
2026-08-14 10:02:28 -04:00
2026-06-02 18:35:29 -04:00
2026-08-14 10:02:28 -04:00
2026-07-13 11:33:32 -06:00
2026-08-20 00:35:01 -04:00
2026-08-20 00:35:01 -04:00
2026-07-03 08:59:23 -04:00
2026-08-27 22:21:10 -04:00
2026-07-03 12:18:25 -04:00
2026-08-07 10:58:34 -04:00
2026-08-14 10:02:28 -04:00
2026-07-02 18:08:42 -04:00
2026-06-25 18:24:39 -04:00
2026-08-27 17:57:05 -04:00
2026-08-14 02:46:16 -04:00
2026-08-05 21:39:53 -04:00
2026-08-23 18:27:02 -04:00
2026-08-27 23:27:43 -04:00
2026-08-23 21:21:21 -04:00
2026-08-05 17:20:56 -04:00
2026-08-18 09:23:44 -04:00
2026-06-28 11:44:36 -04:00
2026-04-04 14:29:03 -04:00
2026-08-10 19:02:34 -04:00
2026-08-27 22:21:10 -04:00
2026-08-23 21:21:21 -04:00
2026-08-10 19:02:34 -04:00
2026-07-04 13:32:51 -04:00
2026-08-27 23:10:49 -04:00
2026-08-10 09:48:26 -04:00
2026-06-02 18:35:29 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 10:02:28 -04:00
2026-08-27 00:12:13 -04:00
2026-08-10 15:24:39 -04:00
2026-08-28 02:25:52 -04:00
2026-06-24 17:07:23 -04:00
2026-08-14 21:19:35 -04:00
2026-08-14 10:02:28 -04:00
2026-08-16 02:48:24 -04:00
2026-08-23 21:21:21 -04:00
2026-07-08 21:42:11 -04:00
2026-07-03 10:22:11 -04:00
2026-08-27 23:27:43 -04:00
2026-08-27 02:24:03 -04:00
2026-08-10 15:50:55 -04:00
2026-06-02 18:35:29 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 23:10:49 -04:00
2026-08-10 15:50:55 -04:00
2026-08-27 02:24:03 -04:00
2026-08-07 13:41:21 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 23:27:43 -04:00
2026-08-23 21:21:21 -04:00
2026-08-07 13:41:21 -04:00
2026-06-09 12:51:15 -04:00
2026-06-06 11:24:48 -04:00
2026-08-14 13:10:49 -04:00
2026-08-14 23:48:39 -04:00
2026-08-27 02:24:03 -04:00
2026-08-11 17:42:41 -04:00
2026-06-16 00:12:54 -04:00
2026-08-27 04:12:47 -04:00
2026-08-05 18:28:04 -04:00
2026-08-22 18:24:25 -04:00
2026-08-13 02:56:12 -04:00
2026-08-28 08:09:05 -04:00
2026-06-02 18:35:29 -04:00
2026-08-18 14:11:23 -04:00
2026-06-07 20:35:43 -04:00
2026-06-13 16:13:00 -04:00
2026-07-18 12:20:32 -04:00
2026-08-20 15:07:21 -04:00
2026-08-07 15:18:18 -04:00
2026-08-01 21:19:49 -04:00
2026-07-28 18:31:40 -04:00
2026-07-11 00:53:34 -04:00
2026-07-28 18:31:40 -04:00
2026-08-05 01:06:39 -04:00
2026-06-06 22:16:20 +02:00
2026-06-07 01:27:12 +02:00
2026-08-23 21:21:21 -04:00
2026-08-14 13:10:49 -04:00
2026-08-24 09:23:01 -04:00
2026-08-14 13:10:49 -04:00
2026-08-23 21:21:21 -04:00
2026-08-10 19:02:34 -04:00
2026-08-23 21:21:21 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 03:31:02 -04:00
2026-08-24 21:33:48 -04:00
2026-08-18 14:11:23 -04:00
2026-08-07 15:45:51 -04:00
2026-08-13 11:31:16 -04:00
2026-08-07 15:45:51 -04:00
2026-08-07 15:45:51 -04:00
2026-06-18 08:50:22 -04:00
2026-08-28 08:06:41 -04:00
2026-08-07 15:45:51 -04:00
2026-08-23 21:21:21 -04:00
2026-08-26 01:57:47 -04:00
2026-08-24 17:56:02 -04:00
2026-08-26 19:29:32 -04:00
2026-06-22 00:59:41 -04:00
2026-06-22 00:59:41 -04:00
2026-08-08 05:50:49 -05:00
2026-08-20 15:07:21 -04:00
2026-08-04 22:41:01 -04:00
2026-08-14 13:10:49 -04:00
2026-06-11 14:11:50 -04:00
2026-06-12 21:24:09 -04:00
2026-07-07 15:11:12 -04:00
2026-08-17 22:28:05 -04:00
2026-06-16 00:12:54 -04:00
2026-07-03 19:37:14 -04:00
2026-08-07 15:18:18 -04:00
2026-08-28 13:10:20 -04:00
2026-08-25 20:38:12 -04:00
2026-06-21 14:37:18 -04:00
2026-08-07 15:18:18 -04:00
2026-08-23 21:21:21 -04:00
2026-07-31 13:17:01 -04:00
2026-08-27 23:10:49 -04:00
2026-08-09 17:08:46 -04:00
2026-08-05 13:30:55 -04:00
2026-08-05 13:30:55 -04:00
2026-08-05 13:30:55 -04:00
2026-07-28 18:02:01 -04:00
2026-08-14 23:01:15 -04:00
2026-07-20 16:52:34 -04:00
2026-06-02 18:35:29 -04:00
2026-08-27 00:12:13 -04:00
2026-06-15 18:11:20 -04:00
2026-08-27 23:10:49 -04:00
2026-08-05 18:22:14 -04:00
2026-06-25 18:24:39 -04:00
2026-08-08 19:06:13 -04:00
2026-08-13 23:47:23 -04:00
2026-08-24 19:39:51 -04:00
2026-06-28 11:27:44 -04:00
2026-06-30 22:21:18 -04:00
2026-06-11 13:36:23 -04:00
2026-07-17 06:48:04 -04:00
2026-08-26 22:43:14 -04:00
2026-08-27 23:10:49 -04:00
2026-07-03 08:59:23 -04:00
2026-08-23 21:21:21 -04:00
2026-07-07 21:22:48 -04:00
2026-07-22 00:27:35 -04:00
2026-08-26 22:43:14 -04:00
2026-06-25 21:49:22 -04:00
2026-08-26 22:43:14 -04:00
2026-08-26 22:43:14 -04:00
2026-08-26 19:29:32 -04:00
2026-07-30 08:52:56 -04:00
2026-05-06 21:51:38 -04:00
2026-05-06 21:51:38 -04:00
2026-06-02 18:35:29 -04:00
2026-08-27 23:10:49 -04:00
2026-08-23 21:21:21 -04:00
2026-06-01 22:43:49 -04:00
2026-06-02 18:35:29 -04:00
2026-08-14 02:47:24 -04:00
2026-08-28 13:17:04 -04:00
2026-06-25 18:24:39 -04:00
2026-08-13 20:27:48 -04:00
2026-08-24 11:47:37 -04:00
2026-08-28 08:49:03 -04:00
2026-07-03 09:17:32 -04:00
2026-06-25 18:24:39 -04:00
2026-07-30 15:26:43 -04:00
2026-08-14 10:02:28 -04:00
2026-08-12 20:08:35 -04:00
2026-06-25 15:26:23 -04:00
2026-08-18 16:40:17 -04:00
2026-08-14 10:02:28 -04:00
2026-08-13 16:19:57 -04:00
2026-08-07 15:18:18 -04:00
2026-06-25 16:25:48 -04:00
2026-07-11 23:24:42 -04:00
2026-06-25 21:49:22 -04:00
2026-08-08 16:05:17 -04:00
2026-08-05 01:06:39 -04:00
2026-08-23 21:21:21 -04:00
2026-08-23 21:21:21 -04:00
2026-08-05 17:20:56 -04:00
2026-08-14 15:57:25 -04:00
2026-08-08 05:56:22 -05:00
2026-07-30 15:27:52 -04:00
2026-08-14 13:10:49 -04:00
2026-06-02 18:35:29 -04:00
2026-08-22 23:04:44 -04:00
2026-08-11 23:55:11 -04:00
2026-08-28 08:07:24 -04:00
2026-06-05 17:58:48 -04:00
2026-06-05 17:58:48 -04:00
2026-04-06 15:13:23 -04:00
2026-06-25 18:24:39 -04:00
2026-08-13 16:19:57 -04:00
2026-08-22 17:52:23 -04:00
2026-08-26 22:13:57 -04:00
2026-04-16 17:15:29 -04:00
2026-08-14 14:34:36 -04:00
2026-08-27 23:10:49 -04:00
2026-06-15 18:11:20 -04:00
2026-08-25 20:38:12 -04:00
2026-08-10 20:51:40 -04:00
2026-06-22 12:33:13 -04:00
2026-06-12 19:51:54 -04:00
2026-08-25 18:07:29 -04:00
2026-06-13 21:07:55 -04:00
2026-08-03 19:59:58 -04:00
2026-07-28 18:02:17 -04:00
2026-08-14 13:10:49 -04:00
2026-08-27 15:19:01 -04:00
2026-07-26 21:42:50 -04:00
2026-08-13 16:19:57 -04:00
2026-08-15 07:02:33 -04:00
2026-07-13 20:36:14 -04:00
2026-08-26 15:03:12 -04:00
2026-08-13 02:28:49 -04:00
2026-08-27 23:10:49 -04:00
2026-07-03 01:55:48 -04:00
2026-08-07 13:41:21 -04:00
2026-08-14 12:08:21 -04:00
2026-07-11 21:07:38 -04:00
2026-07-22 16:05:41 -04:00
2026-08-27 00:12:13 -04:00
2026-06-02 18:35:29 -04:00
2026-08-27 23:10:49 -04:00
2026-08-27 14:44:26 -04:00
2026-08-28 13:17:04 -04:00
2026-08-14 10:02:28 -04:00
2026-06-02 18:35:29 -04:00
2026-08-19 12:04:24 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 09:27:48 -04:00
2026-08-22 10:53:14 -04:00
2026-08-14 10:02:28 -04:00
2026-07-26 14:29:02 -04:00
2026-08-27 23:10:49 -04:00
2026-06-02 18:35:29 -04:00
2026-08-26 20:17:35 -04:00
2026-08-22 13:17:51 -04:00
2026-08-14 11:04:55 -04:00
2026-08-20 16:15:22 -04:00
2026-08-12 22:54:30 -04:00
2026-08-26 15:03:12 -04:00
2026-08-17 14:51:00 -04:00
2026-06-25 14:37:10 -04:00
2026-08-03 19:59:58 -04:00
2026-08-27 23:10:49 -04:00
2026-08-05 17:20:56 -04:00
2026-08-10 12:56:38 -04:00
2026-06-09 23:50:41 -04:00
2026-06-25 18:24:39 -04:00
2026-06-11 13:36:47 -04:00
2026-06-25 23:55:58 -04:00
2026-08-28 08:49:03 -04:00
2026-08-24 00:07:06 -04:00
2026-08-15 07:02:33 -04:00
2026-08-27 23:10:49 -04:00
2026-08-09 21:38:53 -04:00
2026-08-23 21:21:21 -04:00
2026-08-14 23:01:30 -04:00
2026-08-09 23:41:44 -04:00
2026-06-21 10:44:48 -04:00
2026-07-02 11:55:53 -04:00
2026-08-09 23:41:44 -04:00
2026-08-13 16:19:57 -04:00
2026-08-08 05:50:17 -05:00
2026-07-03 01:55:48 -04:00
2026-08-28 11:40:34 -04:00
2026-08-03 19:59:58 -04:00
2026-08-14 10:02:28 -04:00
2026-06-15 22:48:48 -04:00
2026-08-07 21:03:50 -04:00
2026-08-27 23:10:49 -04:00
2026-08-05 17:20:56 -04:00
2026-08-14 13:10:49 -04:00
2026-08-05 17:20:56 -04:00
2026-08-13 21:22:03 -04:00
2026-08-14 13:10:49 -04:00
2026-08-07 21:03:50 -04:00
2026-07-31 02:30:50 -04:00
2026-08-05 17:20:56 -04:00
2026-07-31 23:03:13 -04:00
2026-06-02 18:35:29 -04:00
2026-06-06 11:24:48 -04:00
2026-06-02 18:35:29 -04:00
2026-08-19 08:59:37 -04:00
2026-06-02 18:35:29 -04:00
2026-08-07 15:18:18 -04:00
2026-08-23 21:21:21 -04:00
2026-08-14 16:03:48 -04:00
2026-08-28 12:31:02 -04:00
2026-08-03 19:59:58 -04:00
2026-08-14 13:10:49 -04:00
2026-07-10 15:44:19 -04:00
2026-06-25 21:16:47 -04:00
2026-08-20 15:07:21 -04:00
2026-04-04 14:29:03 -04:00
2026-08-05 01:06:39 -04:00
2026-08-05 01:06:39 -04:00
2026-08-05 01:06:39 -04:00
2026-08-14 10:02:28 -04:00
2026-08-27 23:10:49 -04:00
2026-08-07 10:58:34 -04:00
2026-08-20 13:42:43 -04:00
2026-08-28 08:12:27 -04:00
2026-07-29 07:00:35 -04:00
2026-07-31 08:11:57 -04:00
2026-07-31 08:11:57 -04:00
2026-07-21 23:23:45 -04:00
2026-06-25 18:24:39 -04:00
2026-07-19 14:33:19 -04:00
2026-08-07 15:18:18 -04:00
2026-05-26 22:46:09 -04:00
2026-05-29 10:54:49 -04:00
2026-08-07 21:03:50 -04:00
2026-08-27 17:28:39 -04:00
2026-08-23 21:21:21 -04:00
2026-08-14 15:57:25 -04:00
2026-08-08 05:50:17 -05:00
2026-06-25 23:55:58 -04:00
2026-08-09 21:38:53 -04:00
2026-08-23 21:21:21 -04:00
2026-06-25 18:24:39 -04:00
2026-08-20 14:35:14 -04:00
2026-06-13 23:35:08 -04:00
2026-06-13 23:35:08 -04:00
2026-06-05 17:58:48 -04:00
2026-06-13 23:35:08 -04:00
2026-06-05 17:58:48 -04:00
2026-06-18 07:44:52 -04:00
2026-08-05 17:20:56 -04:00
2026-08-11 22:23:55 -04:00
2026-08-03 19:59:58 -04:00
2026-08-23 22:38:12 -04:00
2026-08-03 12:05:45 -04:00
2026-08-27 23:10:49 -04:00
2026-08-27 23:10:49 -04:00
2026-06-02 18:35:29 -04:00
2026-06-02 18:35:29 -04:00
2026-08-14 13:10:49 -04:00
2026-08-12 08:25:14 -04:00
2026-08-14 10:02:28 -04:00
2026-08-19 08:59:37 -04:00
2026-08-14 02:34:29 -04:00
2026-07-30 08:52:56 -04:00
2026-08-27 23:10:49 -04:00
2026-06-26 23:35:04 -04:00
2026-06-26 23:35:04 -04:00
2026-07-29 07:31:32 -04:00
2026-08-10 20:51:40 -04:00
2026-08-24 19:39:51 -04:00
2026-08-07 15:45:51 -04:00
2026-08-09 22:25:42 -04:00
2026-08-23 21:21:21 -04:00
2026-07-29 11:21:49 -04:00
2026-08-14 01:44:54 -04:00
2026-05-06 21:51:38 -04:00
2026-08-17 16:50:24 -04:00
2026-06-30 20:43:25 -04:00
2026-08-07 15:18:18 -04:00
2026-08-27 23:10:49 -04:00
2026-08-05 17:20:56 -04:00
2026-08-23 21:21:21 -04:00
2026-08-08 16:05:17 -04:00
2026-06-21 20:40:13 -04:00
2026-08-17 17:25:53 -04:00
2026-07-17 06:50:06 -04:00
2026-08-27 02:24:03 -04:00
2026-08-09 22:25:42 -04:00
2026-08-17 17:25:53 -04:00
2026-08-01 16:00:14 -04:00
2026-08-14 19:02:14 -04:00
2026-08-27 23:10:49 -04:00
2026-07-22 00:27:35 -04:00
2026-08-14 15:57:25 -04:00
2026-08-07 18:53:25 -04:00
2026-07-03 08:59:23 -04:00
2026-08-25 11:36:59 -04:00
2026-07-06 08:31:51 -04:00
2026-08-25 01:05:53 -04:00
2026-08-27 23:10:49 -04:00
2026-08-23 21:21:21 -04:00
2026-06-02 18:35:29 -04:00
2026-06-24 17:03:01 -04:00
2026-05-26 18:56:00 -04:00
2026-07-02 21:45:35 -04:00
2026-06-25 18:24:39 -04:00
2026-08-10 13:45:20 -04:00
2026-08-27 00:12:13 -04:00
2026-08-03 19:59:58 -04:00
2026-08-03 19:59:58 -04:00
2026-08-03 19:59:58 -04:00
2026-07-13 00:47:15 -04:00
2026-08-05 17:20:56 -04:00
2026-08-14 10:02:28 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 13:11:13 -04:00
2026-08-15 17:00:52 -04:00
2026-07-03 09:17:32 -04:00
2026-07-03 08:59:23 -04:00
2026-08-21 02:20:53 -04:00
2026-08-27 23:27:43 -04:00
2026-08-18 09:23:44 -04:00
2026-08-15 00:02:37 -04:00
2026-08-15 00:02:37 -04:00
2026-08-27 22:21:10 -04:00
2026-08-24 19:39:51 -04:00
2026-07-13 15:36:17 -04:00
2026-08-11 22:23:55 -04:00
2026-08-27 23:10:49 -04:00
2026-08-23 21:21:21 -04:00
2026-08-07 15:45:51 -04:00
2026-08-14 10:02:28 -04:00
2026-08-07 15:45:51 -04:00
2026-07-15 19:18:28 -04:00
2026-08-12 20:46:12 -04:00
2026-08-12 20:46:12 -04:00
2026-08-03 19:59:58 -04:00
2026-07-31 10:20:17 -04:00
2026-08-07 21:03:50 -04:00
2026-08-14 13:10:49 -04:00
2026-08-18 09:23:44 -04:00
2026-08-05 16:00:52 -04:00
2026-07-17 18:29:28 -04:00
2026-08-25 23:51:16 -04:00
2026-08-24 17:56:02 -04:00
2026-08-27 00:12:13 -04:00
2026-08-09 22:49:39 -04:00
2026-06-28 11:44:36 -04:00
2026-07-03 01:55:48 -04:00
2026-08-14 10:02:28 -04:00
2026-08-06 23:57:05 -04:00
2026-08-27 23:10:49 -04:00
2026-08-25 20:38:12 -04:00
2026-08-27 23:10:49 -04:00
2026-07-03 01:55:48 -04:00
2026-08-17 11:39:01 -04:00
2026-08-03 19:59:58 -04:00
2026-08-14 10:24:05 -04:00
2026-07-05 18:01:28 -04:00
2026-07-12 01:32:12 -04:00
2026-06-12 13:29:45 -04:00
2026-08-13 16:17:10 -04:00
2026-07-14 14:25:44 -04:00
2026-08-28 13:17:04 -04:00
2026-08-28 13:17:04 -04:00
2026-08-28 13:17:04 -04:00
2026-06-13 21:07:55 -04:00
2026-06-17 08:52:23 -04:00
2026-06-15 18:11:20 -04:00
2026-08-14 11:22:51 -04:00
2026-05-29 11:39:52 -04:00
2026-08-23 21:21:21 -04:00
2026-08-13 21:22:03 -04:00
2026-08-07 15:18:18 -04:00
2026-08-13 20:27:48 -04:00
2026-06-06 11:24:48 -04:00
2026-06-20 13:36:57 -04:00
2026-08-14 13:10:49 -04:00
2026-07-24 21:36:33 -04:00
2026-08-13 23:08:34 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 10:02:28 -04:00
2026-07-10 21:31:10 -04:00
2026-06-24 13:19:10 -04:00
2026-08-01 16:00:14 -04:00
2026-08-07 15:45:51 -04:00
2026-08-26 20:17:35 -04:00
2026-08-28 10:21:57 -04:00
2026-07-08 12:57:49 +03:00
2026-08-05 17:20:56 -04:00
2026-07-28 18:31:47 -04:00
2026-08-27 23:10:49 -04:00
2026-08-14 09:27:48 -04:00
2026-08-27 23:10:49 -04:00
2026-06-02 18:35:29 -04:00
2026-08-27 00:12:13 -04:00
2026-08-23 21:21:21 -04:00
2026-06-24 17:07:23 -04:00
2026-08-22 18:57:19 -04:00
2026-08-12 00:51:19 -04:00
2026-08-14 10:02:28 -04:00
2026-08-14 10:02:28 -04:00
2026-08-17 17:25:53 -04:00
2026-05-15 19:32:02 -04:00
2026-08-07 15:45:51 -04:00
2026-06-02 18:35:29 -04:00
2026-08-27 23:10:49 -04:00
2026-08-27 23:10:49 -04:00
2026-08-27 23:10:49 -04:00
2026-08-13 21:22:03 -04:00
2026-06-02 18:35:29 -04:00
2026-06-07 00:46:27 -04:00
2026-08-19 15:21:15 -04:00
2026-08-17 15:56:46 -04:00
2026-08-13 21:22:03 -04:00
2026-06-02 19:25:25 -04:00
2026-08-13 21:22:03 -04:00
2026-08-03 19:59:58 -04:00
2026-08-26 19:29:32 -04:00
2026-07-11 23:24:42 -04:00
2026-08-10 11:59:51 -04:00
2026-07-11 23:24:42 -04:00
2026-08-10 11:59:51 -04:00
2026-08-10 11:59:51 -04:00
2026-08-13 21:22:03 -04:00
2026-08-18 09:23:44 -04:00
2026-08-07 15:18:18 -04:00
2026-06-07 12:24:04 -04:00
2026-07-21 18:38:51 -04:00
2026-08-16 01:14:26 -04:00
2026-08-01 12:12:20 -04:00
2026-08-14 10:02:28 -04:00
2026-08-18 09:23:44 -04:00
2026-08-23 21:21:21 -04:00
2026-08-27 23:10:49 -04:00
2026-08-09 21:38:53 -04:00
2026-08-05 17:20:56 -04:00
2026-08-14 11:42:22 -04:00
2026-06-11 23:59:56 -04:00
2026-07-05 14:38:24 -04:00
2026-08-14 10:02:28 -04:00
2026-08-15 07:02:33 -04:00
2026-08-26 16:03:11 -04:00
2026-08-18 11:37:44 -04:00
2026-08-21 04:58:33 -04:00
2026-08-07 15:18:18 -04:00
2026-08-27 23:10:49 -04:00
2026-08-07 15:18:18 -04:00
2026-08-23 21:21:21 -04:00
2026-08-23 21:21:21 -04:00
2026-07-13 20:39:58 -04:00
2026-08-14 11:49:01 -04:00