mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-07 03:22:17 -08:00
122 lines
4.8 KiB
Markdown
122 lines
4.8 KiB
Markdown
# Subtitle Sync Verification Implementation Plan
|
|
|
|
> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
|
|
|
|
**Goal:** Replace the no-op `test:subtitle` lane with real automated subtitle-sync verification that reuses the maintained subsync tests and documents the real contributor workflow.
|
|
|
|
**Architecture:** Repoint the subtitle verification command at the existing source-level subsync tests instead of inventing a second hidden suite. Add one focused ffsubsync failure-path test so the subtitle lane explicitly covers both engines plus a non-happy path, then update contributor docs to describe the dedicated subtitle lane and how it relates to `test:core`.
|
|
|
|
**Tech Stack:** TypeScript, Bun test, Node test/assert, npm package scripts, Markdown docs.
|
|
|
|
---
|
|
|
|
### Task 1: Lock subtitle lane to real subsync tests
|
|
|
|
**Files:**
|
|
|
|
- Modify: `package.json`
|
|
|
|
**Step 1: Write the failing test**
|
|
|
|
Define the intended command shape first: `test:subtitle:src` should run `src/core/services/subsync.test.ts` and `src/subsync/utils.test.ts`, `test:subtitle` should invoke that real source lane, and no placeholder echo should remain.
|
|
|
|
**Step 2: Run test to verify it fails**
|
|
|
|
Run: `bun run test:subtitle`
|
|
Expected: It performs a build and prints `Subtitle tests are currently not configured`, proving the lane is still a no-op.
|
|
|
|
**Step 3: Write minimal implementation**
|
|
|
|
Update `package.json` so:
|
|
|
|
- `test:subtitle:src` runs `bun test src/core/services/subsync.test.ts src/subsync/utils.test.ts`
|
|
- `test:subtitle` runs the new source lane directly
|
|
- `test:subtitle:dist` is removed if it is no longer the real verification path
|
|
|
|
**Step 4: Run test to verify it passes**
|
|
|
|
Run: `bun run test:subtitle`
|
|
Expected: PASS with Bun executing the real subtitle-sync test files.
|
|
|
|
### Task 2: Add explicit ffsubsync non-happy-path coverage
|
|
|
|
**Files:**
|
|
|
|
- Modify: `src/core/services/subsync.test.ts`
|
|
- Test: `src/core/services/subsync.test.ts`
|
|
|
|
**Step 1: Write the failing test**
|
|
|
|
Add a test that runs `runSubsyncManual({ engine: 'ffsubsync' })` with a stub ffsubsync executable that exits non-zero and writes stderr, then assert:
|
|
|
|
- `result.ok === false`
|
|
- `result.message` starts with `ffsubsync synchronization failed`
|
|
- the failure message includes command details surfaced to the user
|
|
|
|
**Step 2: Run test to verify it fails**
|
|
|
|
Run: `bun test src/core/services/subsync.test.ts`
|
|
Expected: FAIL because ffsubsync failure propagation is not asserted yet.
|
|
|
|
**Step 3: Write minimal implementation**
|
|
|
|
Keep production code unchanged unless the new test exposes a real bug. If needed, tighten failure assertions or message propagation in `src/core/services/subsync.ts` without changing successful behavior.
|
|
|
|
**Step 4: Run test to verify it passes**
|
|
|
|
Run: `bun test src/core/services/subsync.test.ts`
|
|
Expected: PASS with both alass and ffsubsync paths covered, including a non-happy path.
|
|
|
|
### Task 3: Make contributor docs match the real verification path
|
|
|
|
**Files:**
|
|
|
|
- Modify: `README.md`
|
|
- Modify: `package.json`
|
|
|
|
**Step 1: Write the failing test**
|
|
|
|
Use the repository state as the failure signal: README currently advertises subtitle sync as a feature but does not tell contributors that `bun run test:subtitle` is the real verification lane.
|
|
|
|
**Step 2: Run test to verify it fails**
|
|
|
|
Run: `bun run test:subtitle && bun test src/subsync/utils.test.ts`
|
|
Expected: Tests pass, but docs still do not explain the lane; this is the remaining acceptance-criteria gap.
|
|
|
|
**Step 3: Write minimal implementation**
|
|
|
|
Update `README.md` with a short contributor-facing verification note that:
|
|
|
|
- points to `bun run test:subtitle` for subtitle-sync coverage
|
|
- states that the lane reuses the maintained subsync tests already included in broader core coverage
|
|
- avoids implying there is a separate hidden subtitle test harness beyond those tests
|
|
|
|
**Step 4: Run test to verify it passes**
|
|
|
|
Run: `bun run test:subtitle`
|
|
Expected: PASS, with docs and scripts now aligned around the same subtitle verification strategy.
|
|
|
|
### Task 4: Verify matrix integration stays clean
|
|
|
|
**Files:**
|
|
|
|
- Modify: `package.json` (only if Task 1/3 exposed cleanup needs)
|
|
|
|
**Step 1: Write the failing test**
|
|
|
|
Treat duplication as the failure condition: confirm the dedicated subtitle lane reuses the same maintained files already present in `test:core:src` rather than creating a second divergent suite.
|
|
|
|
**Step 2: Run test to verify it fails**
|
|
|
|
Run: `bun run test:subtitle && bun run test:core:src`
|
|
Expected: If file lists diverge unexpectedly, this review step exposes it before handoff.
|
|
|
|
**Step 3: Write minimal implementation**
|
|
|
|
If needed, do the smallest script cleanup necessary so subtitle coverage remains explicit without hiding or duplicating existing core coverage.
|
|
|
|
**Step 4: Run test to verify it passes**
|
|
|
|
Run: `bun run test:subtitle && bun run test:core:src`
|
|
Expected: PASS, confirming the dedicated lane and the broader core suite agree on subtitle coverage.
|