Dotta and Paperclip
ce08872dfb
refactor(heartbeat): extract instruction working-copy lifecycle ( #15984 )
...
## Thinking Path
> - Paperclip runs agent tasks and preserves their managed agent files.
> - Heartbeat must prepare a private copy, collect stopped-provider
edits, and retain ownership during warm-session handoff.
> - That lifecycle is spread across preparation, adapter callbacks, and
cleanup.
> - A per-run controller can own the copy and receipt while the executor
retains teardown ordering.
> - This PR moves that coordination into a dedicated module.
> - Live getters preserve updated state and partially acquired
resources.
## Linked Issues or Issue Description
**What existing behavior does this improve?**
Maintenance of heartbeat instruction preparation. This is the second and
final PR in this batch, originally stacked on #15980 . That dependency is
now merged; this PR is rebased onto its squash merge with an identical
patch and identical touched-file contents. Related-PR search found no
duplicate extraction.
**Current behavior**
After #15980 , `heartbeat.ts` has 4,215 lines and 173,657 bytes. It
coordinates instruction-copy preparation, save receipts, warm handoffs,
and deferred cleanup inline.
**Proposed behavior**
`heartbeat/instruction-working-copy.ts` owns the per-run lifecycle in
233 lines. `heartbeat.ts` becomes 4,055 lines and 162,520 bytes. The
executor retains the outer release order, unavailable-copy reporting,
and environment/service cleanup policy.
**Reason and benefit**
The copy, save receipt, and warm ownership are readable together. The
remaining executor names preparation and dispatch phases without
obscuring teardown decisions.
**Breaking changes**
None intended. All 140 named public heartbeat exports remain unchanged.
## What Changed
- Extract copy preparation, save/checkpoint callbacks, warm
reservation/adoption, prompt guidance, and the deferred-release closure.
- Read the executor's current run row through a callback; expose current
copies, receipts, and acquired cleanup handles through live getters.
- Keep cleanup handles available after preparation failure, and preserve
release-before-retry on invalidated warm reuse.
- Add four public-path characterization tests with real disposable
PostgreSQL and files, plus four direct boundary tests.
- Add isolated browser acceptance with a real process that edits
instructions, completes its task, and reads the saved bytes on its next
task.
- Document the boundary and opt-in acceptance command.
## Verification
- **Before extraction:** four new public-path tests pass on the original
implementation, as do 108 existing
instruction-copy/directory/native-cleanup tests. The two-task browser
journey also passes on the baseline server.
- **After extraction:** all 112 baseline tests pass; all four new
boundary tests pass; 12 selected native-session ownership/retirement
cases pass (the other 670 cases were outside this focused selection).
- **Browser acceptance:** the fresh extracted-code server passes the
full two-task journey (25.9 seconds): real child-process edits,
saved/unchanged receipts, canonical bytes through the agent-file API,
next-task restore, completed task UI, and copy cleanup.
- `pnpm -r typecheck`, final server typecheck, and `pnpm build` pass.
Module-boundary and public-export checks pass.
- Normalized syntax comparison confirms all moved bodies and the
reconstructed executor match the base, accounting explicitly for live
run getters and delegation.
- Final rebased head: `a08872c97e587a21ffc0fc6b78f34b81e484e7b0`.
Combined entry-point and boundary regressions pass again (12/12); fresh
Greptile review is 5/5 with no findings. All 55 current-head checks pass
(two configured skips), including the hosted full-suite tests, build,
typecheck, and all eight browser shards. There are no open review
threads.
## Risks
- Acquisition can succeed before preparation throws. Boundary tests
verify that both the reservation and a transferred copy remain visible
to the cleanup owner.
- Callbacks can replace copy/save state during execution. Public tests
verify saved receipts; direct tests verify the current run row, warm
checkpoint receipt, and permission-root preservation.
- Missing edit authorization and cleanup failure must remain nonfatal.
Characterization tests revoke actual membership after dispatch admission
and inject a cleanup error while preserving the saved result.
- The browser uses a test-launcher-only instruction-capable wrapper
around the real process adapter. Production adapter capabilities are
unchanged. No live provider calls are made; native warm ownership is
covered by focused module and native-session tests rather than a live
provider browser run.
## Model Used
OpenAI Codex, based on GPT-6, assisted with reasoning, code edits, tool
execution, and verification. The exact deployment model ID and
context-window size are not exposed in this session.
## Checklist
- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge
Co-authored-by: Paperclip <noreply@paperclip.ing >
2026-10-12 10:52:32 -05:00
..
2026-10-11 21:22:39 -07:00
2026-10-12 09:49:34 -05:00
2026-10-10 09:13:44 -05:00
2026-09-26 00:47:47 -07:00
2026-10-12 10:52:32 -05:00
2026-10-12 10:44:02 -05:00
2026-09-12 15:23:50 -05:00
2026-10-10 13:09:17 -05:00
2026-10-10 13:09:17 -05:00
2026-09-02 16:11:26 -05:00
2026-09-30 13:33:37 -05:00
2026-10-10 09:13:44 -05:00
2026-10-05 10:31:11 -05:00
2026-10-07 15:53:13 -05:00
2026-10-06 22:26:48 -07:00
2026-09-19 16:49:18 -05:00
2026-09-19 16:49:18 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 17:06:54 -05:00
2026-10-02 16:55:38 -07:00
2026-10-02 16:55:38 -07:00
2026-10-02 16:55:38 -07:00
2026-10-02 16:55:38 -07:00
2026-08-19 11:51:31 -07:00
2026-08-19 11:51:31 -07:00
2026-06-10 21:09:02 -07:00
2026-06-10 21:09:02 -07:00
2026-04-24 15:50:32 -05:00
2026-07-09 13:08:56 -05:00
2026-06-10 21:09:02 -07:00
2026-06-10 21:09:02 -07:00
2026-10-02 16:55:38 -07:00
2026-08-21 00:04:14 -07:00
2026-10-06 13:29:03 -05:00
2026-06-06 12:45:57 -05:00
2026-09-19 07:57:53 -05:00
2026-10-08 06:33:31 -05:00
2026-10-08 06:33:31 -05:00
2026-10-06 16:14:06 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-10-10 13:09:17 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-10-09 08:56:41 -05:00
2026-10-09 08:56:41 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-09-30 13:33:37 -05:00
2026-09-30 13:33:37 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-10-06 13:57:03 -05:00
2026-10-06 13:57:03 -05:00
2026-09-29 08:25:56 -05:00
2026-09-29 08:25:56 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 08:56:41 -05:00
2026-09-29 08:25:56 -05:00
2026-06-19 08:35:53 -07:00
2026-10-10 07:15:41 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-08-18 09:44:24 -05:00
2026-04-24 15:50:32 -05:00
2026-09-08 11:00:55 -07:00
2026-10-02 10:01:15 -05:00
2026-10-09 09:05:12 -07:00
2026-10-05 14:57:04 -05:00
2026-10-09 09:05:12 -07:00
2026-10-06 13:29:03 -05:00
2026-10-06 20:48:15 -05:00
2026-10-09 17:06:54 -05:00
2026-10-09 17:06:54 -05:00
2026-10-05 20:44:37 -05:00
2026-10-09 13:38:01 -07:00
2026-10-05 20:44:37 -05:00
2026-10-06 13:29:03 -05:00
2026-10-09 13:38:01 -07:00
2026-10-10 13:09:17 -05:00
2026-10-06 13:29:03 -05:00
2026-09-14 10:19:54 -05:00
2026-09-14 10:19:54 -05:00
2026-09-14 10:19:54 -05:00
2026-10-07 14:43:07 -05:00
2026-10-07 14:43:07 -05:00
2026-09-23 17:11:16 -05:00
2026-09-23 17:11:16 -05:00
2026-10-09 09:05:12 -07:00
2026-08-29 12:08:35 -05:00
2026-08-29 12:08:35 -05:00
2026-08-20 17:28:01 -07:00
2026-09-14 21:58:34 -07:00
2026-08-29 12:08:33 -05:00
2026-10-07 07:06:40 -05:00
2026-10-09 09:05:12 -07:00
2026-07-30 16:52:58 -07:00
2026-10-10 13:09:17 -05:00
2026-08-11 14:39:23 -04:00
2026-08-11 14:39:23 -04:00
2026-09-30 07:13:16 -05:00
2026-09-30 07:13:16 -05:00
2026-10-10 07:06:31 -05:00
2026-10-10 07:06:31 -05:00
2026-10-06 22:26:48 -07:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-09-19 09:18:10 -07:00
2026-10-03 01:00:42 -05:00
2026-05-28 07:33:51 -10:00
2026-09-29 08:25:56 -05:00
2026-10-11 06:08:05 -05:00
2026-09-10 10:06:45 -05:00
2026-10-12 09:49:34 -05:00
2026-10-09 21:54:11 -05:00
2026-10-09 21:54:11 -05:00
2026-10-09 10:01:26 -05:00
2026-09-11 18:11:44 -05:00
2026-09-11 18:11:44 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-10-08 06:33:31 -05:00
2026-10-10 13:14:23 -05:00
2026-09-09 13:49:12 -05:00
2026-10-06 07:19:15 -07:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-21 14:41:19 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-09-21 14:41:19 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-09-09 13:49:12 -05:00
2026-09-21 14:41:19 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-10-09 17:01:20 -05:00
2026-10-10 13:09:17 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-10-10 09:13:44 -05:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-09-24 10:51:45 -05:00
2026-09-09 13:49:12 -05:00
2026-10-09 21:54:11 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-09-12 15:23:50 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-10-09 16:29:54 -05:00
2026-10-10 13:09:17 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-10-10 13:14:23 -05:00
2026-09-10 10:06:45 -05:00
2026-10-10 09:13:44 -05:00
2026-10-09 21:54:11 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-12 15:23:50 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-10-08 06:33:31 -05:00
2026-10-10 13:14:23 -05:00
2026-10-11 06:08:05 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-19 20:40:05 -05:00
2026-09-19 20:40:05 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-10-06 07:19:15 -07:00
2026-10-10 09:13:44 -05:00
2026-10-06 07:19:15 -07:00
2026-09-10 10:06:45 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-09 13:49:12 -05:00
2026-09-10 10:06:45 -05:00
2026-10-11 06:08:05 -05:00
2026-09-22 17:49:15 -07:00
2026-09-22 17:49:15 -07:00
2026-10-06 06:58:36 -07:00
2026-09-03 12:01:47 -05:00
2026-09-22 17:49:15 -07:00
2026-10-06 09:11:25 -07:00
2026-10-06 09:11:25 -07:00
2026-09-12 16:30:10 -05:00
2026-10-06 22:26:48 -07:00
2026-09-24 15:54:38 -05:00
2026-10-09 09:05:12 -07:00
2026-10-04 02:13:46 -07:00
2026-10-09 09:05:12 -07:00
2026-08-14 22:11:16 -07:00
2026-08-11 15:25:07 -07:00
2026-10-06 15:55:38 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 09:05:12 -07:00
2026-10-07 07:06:40 -05:00
2026-05-06 06:32:37 -05:00
2026-10-07 07:06:40 -05:00
2026-07-15 11:42:40 -05:00
2026-10-09 09:05:12 -07:00
2026-08-11 15:25:07 -07:00
2026-10-05 14:57:04 -05:00
2026-09-30 11:46:46 -05:00
2026-10-05 14:57:04 -05:00
2026-09-30 14:32:34 -05:00
2026-09-30 14:32:34 -05:00
2026-10-05 18:16:00 -05:00
2026-10-11 09:30:45 -07:00
2026-10-09 17:01:20 -05:00
2026-09-30 14:32:34 -05:00
2026-10-05 14:57:04 -05:00
2026-10-09 21:54:11 -05:00
2026-09-23 22:32:40 +00:00
2026-09-23 22:32:40 +00:00
2026-09-30 11:46:46 -05:00
2026-10-07 13:29:44 -07:00
2026-10-11 22:48:29 -07:00
2026-10-06 22:26:48 -07:00
2026-10-11 22:48:29 -07:00
2026-10-09 17:06:54 -05:00
2026-03-13 16:22:34 -05:00
2026-08-16 13:46:50 -05:00
2026-10-06 21:38:15 -05:00
2026-10-06 21:38:15 -05:00
2026-10-01 12:18:35 -05:00
2026-10-06 22:26:48 -07:00
2026-07-07 05:54:20 -05:00
2026-10-07 15:53:13 -05:00
2026-10-07 15:53:13 -05:00
2026-09-11 15:46:35 -05:00
2026-08-02 10:47:03 -05:00
2026-07-31 22:48:32 -07:00
2026-10-07 07:06:40 -05:00
2026-08-02 10:47:03 -05:00
2026-08-29 19:26:20 -05:00
2026-10-02 17:56:42 -05:00
2026-10-09 17:19:41 -05:00
2026-10-11 06:08:05 -05:00
2026-08-28 21:48:34 -07:00
2026-08-28 21:48:34 -07:00
2026-09-12 16:30:10 -05:00
2026-09-19 09:18:10 -07:00
2026-07-09 22:11:03 -05:00
2026-09-17 08:40:40 -05:00
2026-10-09 12:58:35 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 16:20:38 -05:00
2026-08-31 14:38:38 -05:00
2026-10-09 14:03:02 -05:00
2026-10-07 10:16:49 -05:00
2026-10-10 13:09:17 -05:00
2026-10-02 10:01:15 -05:00
2026-10-09 14:25:14 -07:00
2026-10-06 11:48:53 -05:00
2026-08-18 11:43:39 -07:00
2026-07-03 16:44:21 -07:00
2026-07-03 16:44:21 -07:00
2026-07-03 16:44:21 -07:00
2026-08-23 21:24:59 -07:00
2026-09-01 01:29:06 -05:00
2026-10-11 12:08:45 -07:00
2026-07-10 14:32:47 -07:00
2026-10-09 08:56:41 -05:00
2026-10-11 12:08:45 -07:00
2026-10-09 09:05:12 -07:00
2026-10-08 19:27:39 -07:00
2026-10-09 08:56:41 -05:00
2026-08-11 11:40:57 -07:00
2026-08-11 11:40:57 -07:00
2026-10-07 13:29:44 -07:00
2026-09-21 20:06:05 -07:00
2026-09-29 10:25:52 -05:00
2026-10-07 07:06:40 -05:00
2026-09-09 09:14:25 -05:00
2026-09-17 15:52:19 -05:00
2026-10-09 09:05:12 -07:00
2026-06-10 21:09:02 -07:00
2026-06-10 21:09:02 -07:00
2026-10-05 20:09:18 -07:00
2026-09-21 18:13:01 -05:00
2026-10-05 20:09:18 -07:00
2026-10-05 20:44:37 -05:00
2026-10-05 20:44:37 -05:00
2026-10-07 13:29:44 -07:00
2026-09-10 10:06:45 -05:00
2026-09-11 11:43:40 -05:00
2026-08-21 17:23:18 -05:00
2026-10-09 21:54:11 -05:00
2026-10-07 07:06:40 -05:00
2026-10-05 10:57:57 -07:00
2026-10-09 16:47:21 -05:00
2026-10-09 16:47:21 -05:00
2026-07-30 11:37:00 -07:00
2026-10-11 11:53:21 -07:00
2026-10-10 13:09:17 -05:00
2026-10-10 13:09:17 -05:00
2026-10-10 13:09:17 -05:00
2026-04-02 09:11:49 -05:00
2026-10-09 10:01:26 -05:00
2026-10-09 10:01:26 -05:00
2026-10-06 22:26:48 -07:00
2026-09-23 17:11:16 -05:00
2026-09-23 17:11:16 -05:00
2026-07-16 15:50:45 -05:00
2026-10-08 10:19:40 -07:00
2026-09-09 10:15:10 -05:00
2026-09-02 15:27:54 -05:00
2026-10-09 17:01:20 -05:00
2026-10-11 11:53:21 -07:00
2026-08-02 20:27:09 -07:00
2026-09-10 10:06:45 -05:00
2026-09-02 15:27:54 -05:00
2026-09-30 13:32:58 -05:00
2026-09-22 15:12:30 -05:00
2026-03-12 08:50:31 -05:00
2026-09-22 15:12:30 -05:00
2026-09-22 15:12:30 -05:00
2026-09-22 13:07:13 -05:00
2026-09-22 13:07:13 -05:00
2026-08-20 17:09:42 -05:00
2026-09-14 21:58:34 -07:00
2026-10-07 07:06:40 -05:00
2026-08-21 12:51:22 -07:00
2026-07-02 22:21:56 -07:00
2026-09-09 12:18:56 -05:00
2026-09-29 10:18:30 -05:00
2026-10-09 08:56:41 -05:00
2026-10-02 16:09:36 -07:00
2026-10-02 16:09:36 -07:00
2026-10-12 10:52:32 -05:00
2026-04-04 14:04:33 -05:00
2026-10-05 18:16:00 -05:00
2026-10-09 08:56:41 -05:00
2026-10-09 08:56:41 -05:00
2026-10-01 09:45:18 -05:00
2026-10-08 15:58:55 -07:00
2026-10-11 10:01:57 -07:00
2026-10-11 12:27:51 -07:00
2026-08-10 17:01:33 -07:00
2026-07-16 16:49:18 -05:00
2026-07-10 17:09:57 -05:00
2026-10-07 15:53:13 -05:00
2026-10-10 13:09:17 -05:00
2026-10-09 09:05:12 -07:00
2026-07-14 15:47:58 -07:00
2026-09-30 18:06:07 -05:00
2026-09-30 18:06:07 -05:00
2026-09-10 10:06:45 -05:00
2026-07-31 18:52:59 -07:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-09-29 10:18:30 -05:00
2026-09-11 12:39:08 -05:00
2026-10-10 00:40:08 -07:00
2026-08-23 08:50:38 -07:00
2026-08-23 08:50:38 -07:00
2026-10-08 10:20:32 -07:00
2026-03-24 11:48:59 -05:00
2026-04-24 15:50:32 -05:00
2026-10-07 08:41:24 -05:00
2026-08-27 11:34:42 -07:00
2026-08-27 11:34:42 -07:00
2026-10-09 16:47:21 -05:00
2026-10-09 16:47:21 -05:00
2026-10-02 22:07:14 -05:00
2026-10-02 22:07:14 -05:00
2026-09-30 10:26:28 -05:00
2026-10-10 00:40:08 -07:00
2026-09-28 09:33:39 -05:00
2026-06-05 03:20:46 +00:00
2026-08-16 13:46:50 -05:00
2026-08-04 13:17:49 -05:00
2026-08-29 12:08:33 -05:00
2026-08-31 14:38:38 -05:00
2026-10-06 20:33:13 -05:00
2026-10-11 09:30:45 -07:00
2026-09-30 16:48:24 -05:00
2026-09-12 08:56:04 -05:00
2026-09-22 10:35:33 -05:00
2026-10-10 09:13:44 -05:00
2026-07-28 10:50:13 -07:00
2026-09-11 16:55:44 -07:00
2026-09-11 16:55:44 -07:00
2026-10-03 01:00:42 -05:00
2026-10-10 01:27:03 -07:00
2026-10-11 09:30:59 -07:00
2026-10-10 01:27:03 -07:00
2026-09-10 10:06:45 -05:00
2026-10-09 08:19:51 -05:00
2026-10-09 08:19:51 -05:00
2026-09-12 23:06:55 +00:00
2026-10-06 13:29:03 -05:00
2026-09-12 23:06:55 +00:00
2026-10-09 08:19:51 -05:00
2026-08-21 16:03:43 -07:00
2026-08-28 21:48:34 -07:00
2026-08-28 21:48:34 -07:00
2026-10-01 09:45:18 -05:00
2026-09-02 00:48:30 -05:00
2026-07-27 18:58:31 -07:00
2026-09-10 19:23:13 -07:00
2026-09-10 19:23:13 -07:00
2026-08-07 00:41:42 -05:00
2026-08-07 00:41:42 -05:00
2026-08-19 02:37:02 -05:00
2026-10-08 10:19:40 -07:00
2026-10-08 10:19:40 -07:00
2026-10-02 13:47:59 -05:00
2026-10-02 13:47:59 -05:00
2026-09-14 09:45:34 -05:00
2026-10-02 17:56:42 -05:00
2026-10-03 12:32:42 -05:00
2026-09-08 20:19:14 -07:00
2026-09-08 20:19:14 -07:00
2026-10-09 09:05:12 -07:00
2026-10-06 13:29:03 -05:00
2026-10-06 13:29:03 -05:00
2026-10-01 15:42:40 -05:00
2026-08-31 16:43:46 -05:00
2026-09-03 12:01:47 -05:00
2026-08-31 14:34:46 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 17:01:20 -05:00
2026-08-31 14:34:46 -05:00
2026-10-07 19:52:30 -07:00
2026-07-09 13:08:56 -05:00
2026-06-26 12:02:44 -05:00
2026-07-09 13:08:56 -05:00
2026-08-29 19:26:20 -05:00
2026-08-31 14:38:38 -05:00
2026-09-22 16:39:11 -07:00
2026-03-14 15:43:56 -07:00
2026-05-15 10:20:02 -05:00
2026-05-12 17:38:24 -05:00
2026-08-23 21:24:59 -07:00
2026-03-13 16:58:29 -05:00
2026-03-13 16:22:34 -05:00
2026-10-09 09:05:12 -07:00
2026-09-19 09:18:10 -07:00
2026-03-13 16:22:34 -05:00
2026-10-06 09:11:25 -07:00
2026-03-13 16:22:34 -05:00
2026-10-06 12:27:09 -07:00
2026-05-20 10:37:11 -05:00
2026-09-19 09:18:10 -07:00
2026-05-17 17:15:06 -05:00
2026-03-13 16:22:34 -05:00
2026-10-09 09:05:12 -07:00
2026-07-24 16:47:24 -05:00
2026-05-10 07:34:12 -05:00
2026-08-21 00:04:14 -07:00
2026-09-19 09:18:10 -07:00
2026-03-13 16:22:34 -05:00
2026-07-14 12:57:20 -05:00
2026-03-13 16:22:34 -05:00
2026-03-13 16:22:34 -05:00
2026-06-03 19:13:21 -07:00
2026-06-03 19:13:21 -07:00
2026-10-08 12:57:32 -07:00
2026-05-28 07:33:51 -10:00
2026-10-11 09:30:45 -07:00
2026-10-07 13:53:46 -05:00
2026-05-22 08:12:52 -05:00
2026-10-07 12:05:21 -07:00
2026-10-09 17:01:20 -05:00
2026-09-16 13:01:58 -05:00
2026-10-05 10:31:11 -05:00
2026-04-20 10:39:37 -05:00
2026-10-07 07:06:40 -05:00
2026-10-06 22:26:48 -07:00
2026-09-06 15:45:07 -05:00
2026-08-31 14:38:38 -05:00
2026-08-31 14:38:38 -05:00
2026-08-31 14:38:38 -05:00
2026-10-02 14:21:11 -05:00
2026-10-02 14:21:11 -05:00
2026-10-02 14:21:11 -05:00
2026-10-02 14:21:11 -05:00
2026-10-09 10:01:26 -05:00
2026-09-16 14:44:36 -05:00
2026-10-11 10:01:57 -07:00
2026-10-11 10:01:57 -07:00
2026-09-16 13:54:44 -07:00
2026-09-16 13:54:44 -07:00
2026-10-06 22:26:48 -07:00
2026-08-22 11:41:24 -05:00
2026-09-06 15:45:07 -05:00
2026-09-02 00:48:30 -05:00
2026-10-08 10:19:40 -07:00
2026-09-11 15:18:37 -05:00
2026-10-08 10:19:40 -07:00
2026-10-08 10:19:40 -07:00
2026-09-21 12:53:11 -05:00
2026-08-29 12:08:34 -05:00
2026-08-29 12:08:34 -05:00
2026-10-06 11:43:16 -07:00
2026-10-07 13:53:46 -05:00
2026-07-05 05:58:20 -05:00
2026-07-05 05:58:20 -05:00
2026-07-23 15:49:28 -05:00
2026-06-12 10:15:53 -07:00
2026-10-05 22:54:25 -07:00
2026-10-02 13:47:59 -05:00
2026-10-02 13:47:59 -05:00
2026-04-24 15:50:32 -05:00
2026-10-06 22:26:48 -07:00
2026-10-11 21:22:39 -07:00
2026-10-08 13:48:48 -07:00
2026-09-28 16:16:05 -07:00
2026-10-06 15:36:01 -05:00
2026-09-28 19:15:33 -07:00
2026-09-30 11:54:56 -05:00
2026-09-30 11:54:56 -05:00
2026-07-08 13:38:36 -05:00
2026-07-08 13:38:36 -05:00
2026-10-09 17:06:54 -05:00
2026-10-01 09:45:18 -05:00
2026-09-26 21:23:33 -05:00
2026-09-08 16:18:47 -05:00
2026-09-08 16:18:47 -05:00
2026-10-07 06:53:20 -05:00
2026-09-12 08:56:04 -05:00
2026-10-06 22:26:48 -07:00
2026-07-27 19:45:59 -05:00
2026-09-10 10:06:45 -05:00
2026-09-10 10:06:45 -05:00
2026-10-08 08:35:45 -07:00
2026-09-28 10:57:32 -05:00
2026-10-10 01:27:03 -07:00
2026-10-11 09:30:45 -07:00
2026-08-18 09:44:24 -05:00
2026-08-18 09:44:24 -05:00
2026-10-09 09:05:12 -07:00
2026-10-06 11:48:53 -05:00
2026-05-13 16:23:04 -05:00
2026-05-13 16:23:04 -05:00
2026-08-27 11:29:05 -07:00
2026-08-20 17:54:44 -07:00
2026-08-19 11:51:31 -07:00
2026-08-19 11:51:31 -07:00
2026-09-05 10:03:13 -07:00
2026-09-12 16:30:10 -05:00
2026-09-05 10:03:13 -07:00
2026-08-23 09:44:59 -07:00
2026-09-29 09:40:21 -05:00
2026-04-14 12:57:11 -05:00
2026-09-30 13:32:58 -05:00
2026-09-30 13:32:58 -05:00
2026-09-30 13:32:58 -05:00
2026-09-30 13:32:58 -05:00
2026-09-30 13:32:58 -05:00
2026-09-30 13:32:58 -05:00
2026-10-03 12:37:55 -05:00
2026-10-03 12:37:55 -05:00
2026-06-19 09:14:41 -07:00
2026-09-24 10:51:45 -05:00
2026-09-24 10:51:45 -05:00
2026-10-10 13:14:23 -05:00
2026-09-24 10:51:45 -05:00
2026-10-09 21:54:11 -05:00
2026-10-09 21:54:11 -05:00
2026-09-21 20:25:06 -07:00
2026-09-21 20:25:06 -07:00
2026-08-29 12:08:33 -05:00
2026-06-05 16:48:02 -05:00
2026-09-12 08:56:04 -05:00
2026-07-24 12:26:43 -05:00
2026-07-24 16:44:56 -05:00
2026-10-09 09:05:12 -07:00
2026-10-09 13:38:01 -07:00
2026-10-11 10:01:57 -07:00
2026-10-09 13:38:01 -07:00
2026-10-09 13:38:01 -07:00
2026-08-05 15:59:01 -05:00
2026-07-17 11:03:07 -05:00
2026-10-09 09:05:12 -07:00
2026-07-31 18:52:23 -07:00
2026-10-08 08:35:45 -07:00
2026-09-12 08:56:04 -05:00
2026-10-07 07:06:40 -05:00
2026-06-19 15:38:52 -05:00
2026-08-16 13:46:50 -05:00
2026-06-05 12:55:49 -05:00
2026-10-05 14:57:04 -05:00
2026-10-09 17:01:20 -05:00
2026-10-09 10:01:26 -05:00
2026-10-09 10:01:26 -05:00
2026-08-29 12:08:32 -05:00
2026-09-07 14:32:20 -05:00
2026-10-02 07:45:27 -05:00
2026-10-02 07:45:27 -05:00
2026-10-11 09:30:45 -07:00
2026-07-14 14:22:39 -05:00
2026-10-05 14:57:04 -05:00
2026-10-05 14:57:04 -05:00
2026-07-14 14:22:39 -05:00
2026-07-14 14:22:39 -05:00
2026-10-01 09:45:18 -05:00
2026-10-08 08:35:45 -07:00
2026-08-29 12:08:34 -05:00
2026-08-29 12:08:34 -05:00
2026-10-06 16:03:13 -07:00
2026-10-09 10:01:26 -05:00
2026-09-19 07:57:53 -05:00
2026-10-09 12:50:03 -07:00
2026-10-07 09:01:05 -05:00
2026-09-11 08:34:24 -05:00
2026-09-28 08:40:36 -05:00
2026-09-28 08:40:36 -05:00
2026-09-29 08:56:21 -05:00
2026-08-19 02:37:02 -05:00
2026-08-19 02:37:02 -05:00
2026-09-18 07:21:11 -07:00
2026-09-28 09:33:39 -05:00
2026-08-19 02:37:02 -05:00
2026-08-23 21:24:59 -07:00
2026-10-07 13:29:44 -07:00
2026-10-07 13:29:44 -07:00
2026-08-17 06:23:33 -04:00
2026-09-30 14:16:15 -05:00
2026-08-19 02:37:02 -05:00
2026-08-29 12:08:32 -05:00
2026-08-29 12:08:32 -05:00
2026-08-21 17:23:18 -05:00
2026-10-11 19:51:23 -07:00
2026-10-07 19:52:30 -07:00