Summary
Move semanticStubProvider, vocabulary map, bowEmbedding(), and all stub*Response() generators from cmd/benchmark-quality/stubllm.go to a shared package at internal/testutil/stubllm/. Update cmd/benchmark-quality/ imports to use the shared package.
Why
The lifecycle test suite (#248) needs the same deterministic stub LLM. Extracting it avoids duplication and keeps both binaries in sync.
Scope
- Create
internal/testutil/stubllm/ package
- Move:
semanticStubProvider, vocabulary, bowEmbedding(), bowDims, all stub*Response() functions
- Export the necessary types/functions
- Update
cmd/benchmark-quality/ to import from shared package
- No behavior change — pure code extraction
Test plan
Part of #248
Summary
Move
semanticStubProvider, vocabulary map,bowEmbedding(), and allstub*Response()generators fromcmd/benchmark-quality/stubllm.goto a shared package atinternal/testutil/stubllm/. Updatecmd/benchmark-quality/imports to use the shared package.Why
The lifecycle test suite (#248) needs the same deterministic stub LLM. Extracting it avoids duplication and keeps both binaries in sync.
Scope
internal/testutil/stubllm/packagesemanticStubProvider,vocabulary,bowEmbedding(),bowDims, allstub*Response()functionscmd/benchmark-quality/to import from shared packageTest plan
make testpasses./bin/mnemonic benchmark-qualityproduces identical output before and aftermake checkpasses (fmt + vet)Part of #248