Recipes · Recipe

Trace a feature from work item to code

Follow one feature across work items, commits, PRs, and the code it changed.

Goal: follow one feature across work items, commits, PRs, and the code it actually changed — the kind of archaeology that used to take an afternoon.

This works because Chiron's ontology shares meaning across planes: the ticket, the commit that references it, and the module it touched resolve to connected entities, not three unrelated searches. You will use activity, search, and fetch in sequence.

1. Find the work item

Start from the plan side. Search the work_items source (optionally narrowed to a provider):

bash
curl -s "$BASE/search" "${AUTH[@]}" -H "Content-Type: application/json" -d '{
  "query": "session token not rotated on role change",
  "sources": ["work_items"], "top_k": 3
}' | jq '.results[] | {title, ref, url}'

2. Pull the surrounding activity

Take the work item's timestamp and ask what else happened around it — the commits and PRs that reference the same feature:

bash
curl -s "$BASE/activity" "${AUTH[@]}" -H "Content-Type: application/json" -d '{
  "since": "2026-09-01T00:00:00Z",
  "sources": ["commits", "prs"], "top_k": 20
}' | jq '.events[] | select(.title | test("role change"; "i")) | {source, ref, timestamp}'

3. Jump to the code

Now search the code and graph sources for the behavior the feature changed, then fetch the file:

bash
REF=$(curl -s "$BASE/search" "${AUTH[@]}" -H "Content-Type: application/json" \
  -d '{"query":"reissue session on role change","sources":["code"],"top_k":1}' \
  | jq -r '.results[0].ref')

curl -sG "$BASE/fetch" "${AUTH[@]}" --data-urlencode "ref=$REF" | jq '{title, url, content}'

Why the chain holds together

Every hit in every step carries a ref and a provider, and each ref resolves through the same fetch endpoint regardless of source. You are not stitching four tools together — you are walking one graph through one contract. An agent does the same thing with the ontology_search / ontology_activity / ontology_fetch MCP tools.

Next: Query your connected DB from chat.