Specifies replacing exact substring matching with token-aware fuzzy
matching as the default across all search tools, plus relevance ranking
and wider content coverage (wiki body text, work package descriptions
and comments, meeting participants and project names).
Key decisions:
- Hand-rolled zero-dependency scorer in src/search/; fuse.js rejected
because its Bitap implementation caps patterns at 32 chars and targets
short fields, not the long-text matching required here.
- matchMode: 'fuzzy' | 'exact' escape hatch, defaulting to fuzzy, with
exact mode preserving current behaviour byte-for-byte.
- Two-phase pipeline: cheap shallow rank, deep-enrich top 25 with
bounded concurrency, recency backfill for deep-only matches.
Also records two known limitations left out of scope: the two-phase
recall ceiling and the wiki cache's ID 1..50 probe window.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Add Section 3 in docs/ARCHITECTURE.md detailing multi-user concurrency and RequestContext
- Add ADR-012 in docs/DECISIONS.md establishing RequestContext pattern over global state
- Update AGENTS.md mandating stateless services and context propagation
- Update docs/TODO.md with src/context.ts implementation task
- Specify OPENPROJECT_READ_ONLY and --read-only in docs/ARCHITECTURE.md
- Add ADR-011 in docs/DECISIONS.md for tool manifest filtering and execution guards
- Update docs/TODO.md with read-only implementation tasks
- Update README.md, AGENTS.md, and .env.example with read-only configuration reference
- Track completed work, upcoming Phase 1 tasks, and backlog
- Establish strict agent policy to never proceed automatically without checking in
- Link docs/TODO.md in AGENTS.md and README.md
- Update AGENTS.md, CLAUDE.md, and GEMINI.md with Bun workflow rules and bun:test
- Update docs/ARCHITECTURE.md with Bun runtime layer and lockfile
- Add ADR-010 in docs/DECISIONS.md superseding ADR-001 with Bun adoption
- Update README.md with Bun prerequisites, installation, and run instructions