Why Did We
Decision archaeology across Memory Crystal decision memories.What it does
Searches your decision memory store to understand the reasoning, evidence, and context behind a past decision. Returns the decision thread along with supporting memories across all memory stores.Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
decision | string | Yes | The decision to investigate (minimum 3 characters). Example: “use Convex instead of Supabase” |
limit | number | No | Maximum number of memories to return (1-20, default: 8) |
Returns
Returns a structured response containing:- reasoning: A summary of the primary decision thread
- relatedMemories: Array of decision memories with store, title, content, and strength
Examples
Understanding an architecture decision
Investigating a product choice
Tracing a technical constraint
When to use
- Understanding past decisions — When you need to remember why a technical choice was made
- Evaluating alternatives — Before reconsidering a past decision, see what trade-offs drove it
- Onboarding — Help new team members understand the reasoning behind key decisions
- Audit trail — Maintain a record of decision rationale for compliance or documentation
- Preventing rework — Avoid revisiting decisions that were already carefully evaluated
Errors
| Error | Cause | Resolution |
|---|---|---|
decision is required | No decision parameter provided | Provide a decision string (minimum 3 characters) |
limit must be a number | Invalid limit type | Pass a number between 1-20 |
embedding service unavailable | OpenAI embeddings service down | Retry in a few moments |
Notes
- The decision archaeology process filters to decision-category memories, then performs vector similarity search
- API-key clients (hosted mode) use the HTTP recall endpoint; JWT clients use the Convex action path
- Results are ranked by similarity to your query and memory strength
- Empty results indicate no decision memories matching the query — check your search terms
- The reasoning summary is synthesized from matching memories; if no memories match, you’ll get “No clear decision thread was surfaced”
