M-0: hoist Mock*/Stub*/Fake* test doubles into packages/Harness/Sources #98

Open
opened 2026-05-12 19:36:45 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-12 19:36:45 +00:00 (Migrated from github.com)

Goal

Hoist test doubles (Mock*, Stub*, Fake*) from @testable test targets into Sources/Harness/ so harness composes without @testable imports of production packages.

Scope

  • Move MockTTSForController, CapturingSTTProvider, MockVADEngine, FakeKeychain, FakeStore from test targets to harness source
  • Preserve CLAUDE.md naming convention (Mock = records, Stub = canned, Fake = stateful)
  • Public visibility (public) on hoisted types
  • Test targets re-import from Harness

Files

  • packages/Harness/Sources/Harness/Doubles/ (new directory)
  • Removal from packages/Voice/Tests/..., packages/Memory/Tests/..., etc.

Acceptance

  • All test packages compile with hoisted doubles
  • No @testable import in Harness sources
  • Existing test suites pass with refactored doubles
  • Names preserved per CLAUDE.md taxonomy (rename if role-mismatched)

Test

Existing test suites green after import-path migration.

Parent epic

#4

Source

.planning/architecture/JARVIS-API-MIGRATION-PLAN.md §2.1 (M-0.9)
CLAUDE.md "Test naming conventions"

## Goal Hoist test doubles (Mock*, Stub*, Fake*) from @testable test targets into Sources/Harness/ so harness composes without @testable imports of production packages. ## Scope - Move `MockTTSForController`, `CapturingSTTProvider`, `MockVADEngine`, `FakeKeychain`, `FakeStore` from test targets to harness source - Preserve CLAUDE.md naming convention (Mock = records, Stub = canned, Fake = stateful) - Public visibility (`public`) on hoisted types - Test targets re-import from `Harness` ## Files - `packages/Harness/Sources/Harness/Doubles/` (new directory) - Removal from `packages/Voice/Tests/...`, `packages/Memory/Tests/...`, etc. ## Acceptance - [ ] All test packages compile with hoisted doubles - [ ] No `@testable import` in Harness sources - [ ] Existing test suites pass with refactored doubles - [ ] Names preserved per CLAUDE.md taxonomy (rename if role-mismatched) ## Test Existing test suites green after import-path migration. ## Parent epic #4 ## Source `.planning/architecture/JARVIS-API-MIGRATION-PLAN.md` §2.1 (M-0.9) CLAUDE.md "Test naming conventions"
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#98