# Fidelity Verification — Detailed Processes > Extracted from `implement/SKILL.md` (Mode: port) Phase A6 and B5. > Read this file when executing the test porting and fidelity verification phases. --- ## Phase A6 — Port Tests & Verify Fidelity 1. **Port every test** from the source — not just the happy path. Edge cases, error paths, and boundary tests must all be ported. 2. **Rewrite assertions** to match the target test framework's assertion style. 3. **Run ported tests** — they must pass. If a test fails: - Behavior mismatch: fix the implementation to match source behavior. - Test logic error (e.g. wrong assertion library syntax): fix the test. - Infrastructure gap (e.g. test tried to connect to Redis): adapt the test to the alternative from Phase A4. 4. **Full test suite** — run the target project's existing tests + ported tests. No regression in existing tests. 5. **Fidelity checklist** — for each source behavior, verify manually or automatically: ### Fidelity Verification Template ```markdown ## Fidelity Verification | Source Behavior | Tested? | Result | Notes | | --------------------------------- | ------------- | ------ | -------------------------------------------- | | User login with valid credentials | ✅ ported | PASS | | | User login with invalid password | ✅ ported | PASS | | | Session expiry at 1h | ✅ ported | PASS | Adapted to DB session store | | Rate limiting: 5 attempts / min | ⚠️ not ported | — | Target has no rate limiting infra → deferred | ``` --- ## Phase B5 — Verify (Integration + Fidelity) After all chunks are implemented and reviewed, run `core/skills/verify/SKILL.md` with the fidelity baseline (wiki page `port-{name}/source-analysis/10-fidelity-baseline`, read via `wiki 读写 API(见 TERMINOLOGY)`) as the acceptance criteria: - Every `FID-*` item must be traced to a passing test in the target project. - Full test suite (existing + ported) must pass with no regressions. - Typecheck and lint must be clean. - Fidelity deviations from any chunk are consolidated into a final fidelity report. - **Reverse coverage (Ported? audit)**: The Source Function Inventory (produced in Phase A1 / B1) "Ported?" column must have **zero** unexplained ☐ entries. Any residual ☐ MUST carry a matching `[DEFER]` row — with a reactivation trigger — in the Port Fidelity Report. A bare ☐ is a FAIL, not a deferral. This closes the #1 port-completeness gap: functions that were never ported and never consciously deferred. - **Symbol-level completeness (SRC-CMP)**: Run an automated export-symbol diff between source and target packages. Every source symbol absent from the target MUST appear as `[DEFER]` in the report; a silent gap is a FAIL. ```bash diff <(codegraph exports ) <(codegraph exports ) # Each left-only symbol must be DEFER'd or ported — silent gaps fail B5. ``` ### Port Fidelity Report Template ```markdown ## Port Fidelity Report | FID-* | Behavior | Chunk | Target Test | Status | | ------- | ------------------ | ----------- | -------------------- | ------ | | FID-001 | Login valid creds | chunk-auth | auth/login.test.ts | PASS | | FID-002 | Login invalid pw | chunk-auth | auth/login.test.ts | PASS | | FID-004 | Rate limiting | chunk-auth | — | DEFER | **Summary**: {X}/{Y} behaviors verified, {Z} deferred ```