Skip to content

T9 cleanup: stale docstrings (state count, test count, tuple arity) + soft-delete mount JOIN test #181

Description

@utof

T9 code-quality reviewer flagged 6 NITs (all severity NIT, non-blocking). Filed for batched cleanup before v0.7.x.

1. `apps/desktop/src/components/TranscribeButton.tsx:2`

Module docstring claims "3 visual states" but component renders 6 branches (Idle-disabled, Idle, Queued, Running, Completed, Cancelled, Failed). Update count or list states.

2. `apps/desktop/src/tests/TranscribeButton.test.tsx:4`

Header says "7 scenarios" but file now has 8 tests after the T9 fix added the null-source case. Renumber or relabel.

3. `crates/core/src/ports/metadata_repo.rs:62`

`MetadataRepository::list_with_metadata` rustdoc still says "triples" but returns 4-tuples. The shape doc on `FileWithMetadataRow` (lines 7-28) is correct; the method-level doc drifted.

4. `crates/db/src/metadata_repo.rs:264-266` — soft-delete invariant untested

Comment promises soft-deleted mount rows are filtered (`deleted_at IS NULL`) but no test asserts it; the SQL WHERE filter exists, so this is documentation drift, not a code bug. A 5-line additional test would lock the invariant.

5. `crates/desktop/src/payloads.rs:250` — `to_string_lossy` WHY

`to_string_lossy().into_owned()` on the absolute_path is fine for display + the IPC string contract, but worth a one-line WHY: lossy conversion only affects non-UTF-8 mount paths (rare on Linux/macOS, never on Windows post-WTF-8).

6. 4-tuple destructure repetition

`crates/cli/src/cmd/ls.rs` + `crates/desktop/src/commands.rs` — the 4-tuple destructure pattern `(loc, _, _, _)` / `(loc, meta, quick_hash, mount_path)` is repeated 6+ times across crates. Not refactor-worthy yet (each call site does subtly different things), but if a 5th element ever lands, extract a Row struct.


Filed under ASR v2 milestone for batched cleanup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/transcribeTouches the perima-transcribe crate or transcription pipelinepriority/lowLow priority — defer until pressure justifies ittype/choreRoutine maintenance / repo hygiene

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions