mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-01 15:35:12 +01:00
## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work. > - Chat feature evaluations send their results to TestOps. > - The final reader checks the result against its current GitHub run. > - A real result omitted the nested job object and had no presentation links. > - The reader rejected that passed result after a successful upload. > - This change joins the embedded job-run ID to the separate job-run response. > - The reader keeps the source, case, status, and attachment checks. ## Linked Issues or Issue Description Refs #18394 and #18322. **What happened?** The native chat test and cleanup passed. TestOps stored a passed result and three attachments. The final read-only step failed with `chat_testops_upload_mismatch`. The result response had a job-run ID, launch ID, and current GitHub run URL. It did not include the nested job object. Its presentation links were empty. **Expected behavior** The reader must accept that response when the separate job-run response proves the exact job, launch, and current GitHub run. It must reject conflicting identity or source data. **Steps to reproduce** 1. Return a valid result with an unexpanded job run and empty links. 2. Return the matching full job run from the existing job-run endpoint. 3. Call `verifyChatUpload`. The old reader rejects the result. **Paperclip version or commit** Observed onc2971badde. The fix starts fromab51cabbbd. **Deployment mode** GitHub Actions and AWS. This defect is in the TestOps report reader. ## What Changed - Join the exact embedded job-run ID to the separately checked job-run response. - Accept empty presentation links. Reject conflicting known run and commit links when present. - Reject conflicting embedded job fields. - Add regressions for the observed response and wrong job, run, launch, and source data. ## Verification - Three new tests fail against the parent reader. - `node --test tests/runner-e2e/chat-feature-testops-api.test.mjs`: 47 passed. - `node --test tests/runner-e2e/testops-chat-reporter.test.mjs`: 14 passed. - Both changed files pass `node --check`. `git diff --check` passes. - Local checks used Node 26.4. Normal CI must check the workflow runtime. - Full local typecheck, build, app, database, SDK, and provider runs were not run. This two-file MJS fix uses pure tests and mocks. - Normal CI [41205375203](https://github.com/paperclipai/paperclip/actions/runs/41205375203), attempt 1, passed onc7b5bf3238. Both required checks passed. Greptile is 5/5. The optional automated coverage note has a recorded disposition and is resolved. - The original feature verdict, backend pass, and failed final reader step remain separate. This change does not regrade that run. ## Risks - Empty presentation links do not prove a server commit link. Source identity comes from the trusted current GitHub context, selection, and bound export. - The separate job-run response remains required. All case, status, attachment, and deadline checks remain active. - The new reader has not yet run against the live service. CI and a later authorized run must qualify delivery. ## Model Used OpenAI Codex, `gpt-6.1-sol`, with reasoning, source inspection, and code execution. The host does not expose the context-window limit. ## 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>