Conversation
Surface: the mobile app (apps/mobile).
Delete the dead Kilo Pass copy helper and stop mocking a module that no screen imports.
Problem
`apps/mobile/src/lib/kilo-pass/subscription-page-copy.ts` exports a single function, `formatKiloPassTierDescription` (line 4). No production module imports it: a repo-wide search for `subscription-page-copy` and `formatKiloPassTierDescription` matches only its own test and an inert Vitest mock. The Kilo Pass subscription screen inlines the same formatting instead (`apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx:439-444` builds `kiloPass.tierDescription` with the same `formatUsd(..., i18n.language, { minimumFractionDigits: 0, maximumFractionDigits: 2 })`), so the helper is a superseded second copy of the logic.
Evidence
- apps/mobile/src/lib/kilo-pass/subscription-page-copy.ts:4 — the only export.
- apps/mobile/src/lib/kilo-pass/subscription-page-copy.test.ts:3,7 — the only importer; the test exercises the dead function only.
- apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.test.ts:130-132 — `vi.mock('@/lib/kilo-pass/subscription-page-copy', () => ({ formatKiloPassTierDescription: () => 'description' }))`; the screen imports no such module (its imports are at screen.tsx:1-31), so the mock is inert today and would fail to resolve if the file were deleted without also removing the mock.
- apps/mobile/src/components/kilo-pass/kilo-pass-subscription-screen.tsx:439-444 — the live inline copy that supers
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Verified the dead-helper removal is self-consistent: no remaining references to Files Reviewed (3 files)
Reviewed by deepseek-v4.1-flash · Input: 0 · Output: 0 · Cached: 0 Review guidance: REVIEW.md from base branch |
|
This description names a scenario the proof did not capture:
A repeated proof run rebuilds the same evidence, so no proof run is dispatched for a named gap. Merging with this gap open is your decision. |
Changelog for users
Changelog for maintainers
formatKiloPassTierDescriptionhelper, a superseded copy of the tier-card formatting.subscription-page-copy.test.ts, which exercised only the deleted helper.vi.mock('@/lib/kilo-pass/subscription-page-copy')block from the subscription-screen test.formatUsd(..., i18n.language, { minimumFractionDigits: 0, maximumFractionDigits: 2 })call, so thekiloPass.tierDescriptionkey stays in use.rg "subscription-page-copy|formatKiloPassTierDescription" apps/mobile(no matches).E2E proof
[e1] Kilo Pass subscription screen renders every tier-description in the active language (android) — Android (emulator-5554): the digest carries 'SCENE e1 OK' with all three cards — '$199 paid credits added monthly for Kilo App usage.', '$49 paid credits added monthly for Kilo App usage.', '$19 paid credits added monthly for Kilo App usage.' — and screenshot e1.png; e1-nextjs.log shows 'POST /api/trpc/kiloPass.getMobileStoreProducts?batch=1 200'. Tier cards required a temporary, reverted store-products fixture (emulator has no Play Store service); the plan's dev:capture log cannot name this client-rendered string — plan defect, no logging added.
[e3] Tier-description re-renders in the newly active language (android) — Android (emulator-5554): after switching the app language to Deutsch, e3-scene.log carries 'SCENE e3 OK' and 'Du erhältst monatlich 19 $ als bezahltes Guthaben für die Nutzung der Kilo App.' (plus the 199 $ and 49 $ cards) with locale-formatted prices, proving the screen still reads useTranslation/formatUsd; screenshot e3.png. Same temporary store-products fixture as e1, reverted before finishing.
[e2] On an iOS simulator, repeat the same tier-card check; if no iOS device is available in the harness, record iOS as skipped and pending owner verification rather than passed. — Proven on android emulator-5604 (only platform on this host): the Kilo Pass subscription screen renders '$199 paid credits added monthly for Kilo App usage.', '$49 paid credits added monthly for Kilo App usage.' and '$19 paid credits added monthly for Kilo App usage.' in the SCENE e2 digest (e2-tier-card.log lines 11,15,19) with a tier-card capture at e2-tiers-android.png and e2.png; the deleted helper is absent from the packed tree (e2-deletion.log empty, rg exit 1). iOS was unavailable (IOS BOOTED none), so its repeat is skipped and pending owner verification. UX audit of Home, Profile and…
[e2] On an iOS simulator, repeat the same tier-card check; if no iOS device is available in the harness, record iOS as skipped and pending owner verification rather than passed.
E2E proof — log excerpts
/home/igor_kilocode_ai/.local/share/kwf/sections/janitor-2026-09-21-maintainability-5096/e2e-mobile-app/e1-scene.log/home/igor_kilocode_ai/.local/share/kwf/sections/janitor-2026-09-21-maintainability-5096/e2e-mobile-app/e1-nextjs.log/home/igor_kilocode_ai/.local/share/kwf/sections/janitor-2026-09-21-maintainability-5096/e2e-mobile-app/e3-scene.log/home/igor_kilocode_ai/.local/share/kwf/sections/janitor-2026-09-21-maintainability-5096/e2e-mobile-app/e2-tier-card.logOwner request
Follow-ups (not changed here)