3.1 KiB
3.1 KiB
Tasks: enterprise-search
- Change ID: enterprise-search
- Package:
@suaveplan/search - Date: 2026-04-24
Prerequisites (must be published to Verdaccio first)
@suaveplan/error@suaveplan/types@suaveplan/pagination
Tasks
1. Scaffold package
- Create
universal/data/search/directory tree per file layout inproposal.md - Write
package.json(name@suaveplan/search, version0.1.0,sideEffects: false, correct workspace deps and catalog externals) - Write
tsconfig.jsonextending@suaveplan/typescript-config/library.json - Write
vitest.config.tsusingcreateTestConfig()from@suaveplan/testing/config
2. Error codes (src/error-codes.ts)
- Define
SearchErrorCodeunion type - Call
defineCodesto register allSEARCH.*codes - Export
registerSearchErrorCodes()andSearchError
3. Types (src/types/common.ts)
- Define and export all public interfaces:
SearchEngine,SearchDocument,SearchQuery,SearchFilter,SortSpec,PaginationSpec,SearchResult,SearchHit,FacetBucket,FieldConfig,MemorySearchEngineOptions - Write
common.md
4. Text utilities
- Implement
tokenize,normalizeinsrc/text/tokenizer/ - Implement
buildTrigrams,trigramSimilarityinsrc/text/trigram/ - Implement
tfIdfScore,bm25Scoreinsrc/text/scorer/ - Each module:
.ts,.md,.test.ts,index.ts
5. In-memory engine (src/engine/memory-engine/)
- Implement inverted-index full-text search with configurable
FieldConfig - Implement BM25 scoring
- Implement trigram-based fuzzy matching
- Implement faceted search (
facetablefields → bucket counts) - Implement highlight extraction
- Implement
suggestprefix search - Integrate
@suaveplan/paginationcursor and offset pagination on results - Write
memory-engine.md,.types.ts,.test.ts,index.ts
6. SearchEngine interface (src/engine/search-engine/)
- Define and export the generic
SearchEngine<T>interface - Write
search-engine.md,.types.ts,.test.ts,index.ts
7. OTel instrumentation
- Add spans, counters, histograms per
proposal.md§4
8. Tests
- Unit tests co-located with each feature module (100% coverage target)
tests/integration.test.ts— index → search → paginate round-triptests/property.test.ts— fast-check properties perproposal.md§5
9. Benchmarks (src/__benchmarks__/search.bench.ts)
- Implement benchmark cases per
proposal.md§6
10. Docs
- Every
.tsimplementation file has a sibling.md - Root
README.md
11. Pre-publish gate
bunx turbo lint typecheck test --filter=@suaveplan/searchgreenbunx turbo test:coverage --filter=@suaveplan/search≥ 100% on touched modules
12. Publish
bun scripts/publish.ts --package @suaveplan/search
13. Archive
- Fold spec delta into
openspec/specs/data/spec.md mv openspec/changes/enterprise-search openspec/archive/2026-04-24-enterprise-search