All answers

How do I ask why a piece of code was written this way and get the answer from Jira, Confluence and Slack history?

Brandon WaselnukBrandon Waselnuk·Oct 28, 2026·Context Engine · Engineering Insights

Highlight the code and ask in the tool you are already in. The answer exists only if the trail is joined: commit to pull request, PR to the Jira ticket it closed, ticket to the Confluence design page, page to the Slack thread where the tradeoff was argued. Walk that trail by hand, or let a context engine assemble it and reply in your IDE, Claude Code, Cursor or Slack with each link cited.

You ask why code was written this way from inside the file, and you get a real answer only when the records behind it are joined. The decision trail is that chain: the commit that last touched the line, the pull request that carried it, the Jira ticket the PR closed, the Confluence page with the options, and the Slack thread where someone picked one. Git blame gives you the first link. The reason is usually three or four links along. You walk the trail yourself, tab by tab, or ask a context engine that has linked all five systems and answers in your IDE, Claude Code, Cursor or Slack, sources attached.

Why git blame and the pull request are not enough#

Git blame is the command that annotates each line of a file with the commit and author that last changed it. The manual adds that "The report does not tell you anything about lines which have been deleted or replaced" (git-scm.com). Blame gives you a hash and an author.

The commit leads to the pull request, with the diff and a review thread about how the change was made. The goal lives in the ticket, with the customer problem and the scope that got cut. The alternatives live in the design page. The moment someone said "we tried that in 2024 and it fell over" lives in Slack. In the 2026 Stack Overflow survey, 44% of developers named "prior decisions and rationale" as context they most need AI to consider (Stack Overflow). We analyzed 284 sales calls from May to October 2026, and 6 companies asked this question. The missing part is the second codebase.

What has to be linked for the answer to exist#

Each hop is a link a human made at the time. If one is missing, the answer stops there.

HopHow the link gets madeWhere it shows up
Commit, branch or PR to JiraA key such as PAY-418 in the branch name, commit message or PR titleThe development panel on the Jira work item
Jira to ConfluenceA Jira URL pasted on the pageA Jira Links button on the page
Jira to SlackThe Jira Cloud for Slack appA card when a key is typed; threads synced as comments

For Jira, "your team must include Jira keys in their development actions" (Atlassian Support). A Confluence page joins a ticket when someone pastes the Jira URL on it (Atlassian Support). The Slack hop is the weakest. The Jira Cloud for Slack app can "Sync a Slack thread as comments on a Jira work item" (Atlassian Support). That needs somebody to click it, and the thread that settled the tradeoff is often in another channel. The first hop comes free. The two that hold the reason depend on someone remembering.

How you ask it today, by hand#

The three approaches differ in who does the joining, and the first is you.

You walk the trail. It works when every hop exists and you guess the right words.

  1. Run blame on the line and open the commit.
  2. Open the PR and read its title for a Jira key.
  3. Open the ticket, then the Confluence page linked from it.
  4. Search Slack with the in:, from: and before: modifiers for the week the ticket was active (Slack Help Center).

"How do you find that before Unblocked? You grep through commits and hope people wrote good commit messages. Or you search Jira and hope it was in your project, and that you're looking for the right words." That is Charles Thompson, Engineering Manager, Reservation and Guest at Cloudbeds.

How an agent or a context engine asks it#

Your agent walks it, one MCP server at a time. Atlassian's MCP server lets AI assistants "securely access and interact with your Atlassian data" (Atlassian Support). Slack's MCP server reads "complete message thread conversations" after each user gives OAuth consent (Slack Developer Docs). The agent still does the joining on every question, and every raw payload lands in its context window. A March 2026 study found "a consistent degradation in performance as context length increases", with far larger drops on multi-hop questions than single-span lookups (arXiv). A decision trail is a multi-hop question. We compared the options in the best Confluence and Jira MCP servers for coding agents.

A context engine assembles it. A context engine is a service that indexes code, pull requests, issues, docs, chat and incidents, links them to the code they concern, and returns an answer with sources. Unblocked is one. Its research tool "runs a multi-source research query across code, pull requests, documentation, issues, and messaging" and returns the PRs, documents, issues and messages behind the answer. One use case its docs list is "Understanding why a piece of code exists the way it does" (Unblocked docs). Ask from Claude Code, Cursor, Codex, VS Code or JetBrains over MCP, or mention @Unblocked in Slack. Search Slack, GitHub and Jira in one query compares the tools that return ranked links instead.

What a good answer looks like, and who gets to see it#

A good answer names every hop, dates the decision, and says whether it still holds. For example, take a made-up retry cap in a payments client:

"The cap of 3 was set in PR #2210, merged 14 March 2025, closing PAY-418. The ticket records an incident where unbounded retries doubled load on the ledger. The page 'Payments retry policy' compares 3 and 5; the #payments thread on 12 March chose 3 because the ledger team would not raise its rate limit. No later PR touches the cap, so the decision stands."

Every sentence carries a link the reader can open. In the 2026 Stack Overflow survey, 93% said source attribution is at least somewhat important when deciding whether to trust an AI answer (Stack Overflow). "For reliability reasons" with no link is a guess dressed as a fact. Unblocked lists its sources under each answer, and "Clicking these resources will take you to your source code management system" or the ticket, page or thread (Unblocked docs).

Permissions decide what the answer may contain. For Atlassian's MCP server, "Access is scoped to the user's existing permissions in Atlassian", and Slack's server runs on tokens each user authorizes. A context engine has to carry those rules across all five systems. Unblocked's Data Shield does: "the answers generated by Unblocked only contain source material that the user posing the question is authorized to access" (Unblocked docs). If the deciding thread sits in a private channel the asker cannot see, the trail ends at the ticket, and the answer should say so. "The decision was made in a thread you cannot access; ask the ticket's assignee" still beats git blame.