Conversation
knip:check reported apps/server/scripts/verify-background-live.ts as an unused file even though docs/operations/background-verification.md documents it as the live provider verification entry point. Register it as an apps/server knip entry alongside the other runnable scripts. The exports pass also flagged two exports that lost their consumers in the v2 port: autoSettlementSettingsKey lost the unit tests that used it (restored from main's ThreadSettlementReactor.test.ts), and foldUserInputActivities plus projectQuestionToolInput became dead once the server started attaching questionAnswer to resolved turn items. Model: SWE-2 High via T3 Code (Cursor harness). Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Bugbot is paused — on-demand spend limit reachedBugbot uses usage-based billing for this team and has hit its on-demand spend limit. A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a low-risk maintenance PR that removes unreferenced v2 helpers, strengthens tests, registers an existing verifier with Knip, and pins the already-patched expo-audio version for reproducible mobile builds. No product defaults or significant production workflows are changed. Notes:
You can add or adjust custom eligibility rules. Learn more. |
apps/mobile declares expo-audio as ~57.0.4 while patchedDependencies carries expo-audio@57.0.4. The release smoke regenerates the lockfile in an isolated root, where ~57.0.4 resolves to the newer 57.0.5 and pnpm fails with ERR_PNPM_UNUSED_PATCH. Pin the dependency to 57.0.4, matching the upstream fix in pingdotgg#11426, so the still-needed patch (error reporting in AudioRecorder.didFinish, not present upstream in 57.0.5) stays applied and frozen installs stay reproducible. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> (cherry picked from commit 8830185)
The "hide subagent threads from v2 lists" change made getThreadListV2OrderedSection read thread.lineage, but the pending-move suite still hand-cast partial EnvironmentThreadShell rows, so all five cases crashed with "Cannot read properties of undefined". Build the rows through makeThreadShellFixture so the fixtures track every field the shared section helper reads; assertions are unchanged. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> (cherry picked from commit 5af8ea3)
Dismissing prior approval to re-evaluate dbb177d
|
@juliusmarminge this OV2 fix repairs the shared knip check and is ready for your review. Latest head Please account for the shared CI dependency commits when landing; the Expo audio repair has already landed through #11518. |
|
Closing: this fix has already landed on |
Summary
vp run knip:checkfails on the v2 branch at the first pass:That script is not dead code — it is the documented live provider verification entry point (
docs/operations/background-verification.md, added in b929c47). Register it as anapps/serverknip entry alongside the other runnable scripts (scripts/cli.ts,scripts/probe-claude-fork-local-rollback-replay.ts).With the file check passing, the exports pass then surfaced two more v2-only knip failures, fixed here instead of ignored:
autoSettlementSettingsKey(orchestration-v2/ThreadSettlementService.ts) is annotated@internal Exported for tests, but the two unit tests that exercised it onmain(ThreadSettlementReactor.test.ts) were lost in the v2 port. Restored both assertions (inherit-vs-never key distinction; unrelated overrides produce the same key) intoThreadSettlementService.test.ts.foldUserInputActivities(client-runtime work-log) lost all consumers: the v2 serverOrchestratornow attachesquestionAnswerto the resolveduser_input_requestturn item, so web/mobile readworkEntry.questionAnswerdirectly and nothing folds activity arrays client-side. Removed it plus its private helpers, andprojectQuestionToolInputinpackages/shared/toolActivity.ts, whose only remaining consumer was the fold (its other main-side consumer,ActivityPayloadProjection, does not exist on v2).Carried shared-CI repairs
This branch also carries two credited cherry-picks so the full check suite passes here; each remains a distinct commit owned by its own PR:
77d1d1da—fix(mobile): pin expo-audio so the release smoke patch stays in use(from fix(mobile): pin expo-audio so the release smoke patch stays in use #11518)dbb177d2—fix(mobile): rebuild pending-move fixtures with the shared shell factory(from fix(mobile): rebuild pending-move fixtures with the shared shell factory #11517)Focused proof
vp run knip:check— exit 0 (was exit 1 onUnused files; exports pass then also clean)vp test run apps/server/src/orchestration-v2/ThreadSettlementService.test.ts— 14/14 passvp test run apps/mobile/src/state/thread-order.test.ts— 5/5 passnode scripts/release-smoke.ts— passesvp run --filter t3 --filter @t3tools/client-runtime --filter @t3tools/shared typecheck— exit 0vp lint+vp fmt --checkon touched files — cleannode apps/server/scripts/verify-background-live.ts --scenario bogus— loads and fails fast on arg validation, confirming the documented invocation runs (a full live run needs real provider credentials and consumes model usage, so it was not exercised here)Test plan
vp run knip:checkpassesDone by SWE-2 High via T3 Code (Cursor harness) + Codex gpt-6-astra review. Coordination: OV2 nightly delivery campaign, saphid/t3code-personal#298, task 26.