mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-20 06:02:18 +02:00
## Thinking Path > - Paperclip manages AI agents and their work. > - Task routes decide which agent wakes after a comment or assignment change. > - The comment-wakeup suite reloads the large route module before each test. > - The worker exhausts its memory before all 34 cases finish. > - This PR loads the module once and resets mock behavior between cases. > - The suite keeps every assertion and runs within the existing memory limit. ## Linked Issues or Issue Description Refs #16017. Related fixes: #16396 and #16404 cover other route suites. The [failed serialized shard](https://github.com/paperclipai/paperclip/actions/runs/38706528509/job/116333628474) completes 26 of 34 cases before a 4 GiB heap OOM. It also logs `runner.select is not a function` when real external-object sync reaches the empty transaction fixture. A duplicate search found no open PR for this suite's memory failure. ## What Changed - Move module reset, mock registration, and initial route import into `beforeAll`. - Mock external-object sync at its direct service import. - Reset mock implementations between cases, then restore the fixture defaults. - Keep all 34 test cases and every assertion unchanged. ## Verification - Node 24.21.0, matching the failed CI job. - Unchanged suite with `NODE_OPTIONS=--max-old-space-size=4096`: worker receives SIGKILL after 31/34 cases in this 4 GiB container. - Fixed suite under the same heap limit: 34/34 pass in 5.06 seconds; peak child RSS is 654 MiB. - Fixed suite with a 1 GiB heap and shuffled order (seed 394): 34/34 pass. - Compared all test bodies and assertions against master; they are byte-for-byte unchanged. - `git diff --check` passes. - Workspace typecheck reaches the Rust stage, then stops because this container has no `cargo`. - Master has a stale lockfile. Local setup used `pnpm install --no-lockfile`; Vitest resolved to 5.0.4 and Supertest to 7.3.1. - Local build stops because Node.js headers are missing for the SO_PEERCRED addon. - The local full-suite command was bounded to three minutes and did not finish. - [Greptile gives this exact head 5/5](https://github.com/paperclipai/paperclip/pull/16410#issuecomment-6188812731), with no findings or review threads. - [CI run 38712230280, attempt 2](https://github.com/paperclipai/paperclip/actions/runs/38712230280/attempts/2) passed on this head. All nine serialized shards, general tests, typecheck, build, Rust checks, and e2e checks passed. - The first attempt hit an unrelated legacy-recovery timestamp flake. Its [single retry passed](https://github.com/paperclipai/paperclip/actions/runs/38712230280/job/116349967086). - Current check inventory: 53 successful check runs, two skipped Storybook checks, and a successful Snyk commit status. Reproduce the focused check with: ```sh NODE_OPTIONS=--max-old-space-size=4096 pnpm exec vitest run --project @paperclipai/server server/src/__tests__/issue-update-comment-wakeup-routes.test.ts --pool=forks --isolate ``` ## Risks Low risk. Only test setup changes. Production routes, workflows, and the lockfile are unchanged. The shuffled run checks that mock behavior does not leak between tests. ## Model Used OpenAI GPT-6 through Codex, with reasoning, repository tools, and code execution. This runtime does not expose a more specific model ID or context-window size. ## 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>