Cross-project history
Sometimes another local project already faced a similar problem. Haft keeps
a small user-local index of decision summaries at
~/.haft/index.db. Related history may appear when a new problem
is framed.
What the index contains
It can store the project and decision identity, title, selected option, short rationale, weakest link, primary language, and creation time. It does not copy the other project's complete graph.
The default path uses local FTS5 over summaries. Same-language and different-language labels are relevance cues, not proof that the old decision applies in the new context.
Use a result safely
- Treat it as a lead, not a recommendation.
- Open the exact source decision before relying on its rationale.
- Compare the old and current scope, constraints, evidence, and weakest link.
- Frame and decide the current project through its own path.
Search rank cannot select an option, merge project identities, or transfer a human decision from one project to another.
Why this is separate from project memory
Project memory reads what is known about one exact thing inside one project snapshot. Cross-project history searches summaries across several local projects. A similar summary cannot substitute for exact identity or become a current project fact merely because it ranked highly.
Optional embedding compatibility
The optional haft-embed sidecar can support older semantic
recall paths and falls back to FTS when unavailable. It is not required for
the main v9 path. Haft makes no claim that dense or hybrid recall is better
than FTS, rg, a pinned source file, or host search.
Local limits
- The index stays on the user's machine.
- It is not synchronized through git.
- Different engineers can have different projects and freshness in the index.
- No result does not prove that no related decision exists.