← Blog

Status belongs in your tracker. Knowledge belongs somewhere else.

· Vectros Team
  • engineering
  • knowledge management
  • developer experience

Most of what a team learns gets decided in an issue thread. Why we chose keyset pagination. The migration that went sideways and what we changed because of it. The rule we added after the incident. Then the issue closes, and that knowledge settles to the bottom of a tool built to forget it.

So the instinct is to copy every issue into your knowledge base, so nothing gets lost. That instinct backfires. It hands you a stale shadow of your tracker and buries the few issues that mattered under the churn of the ones that didn't. Your tracker and your knowledge base are two planes with different jobs. The win is keeping them separate and bridging them on purpose.

Two planes, two jobs

The tracker (GitLab, Jira, Linear) owns live status: what's open, who has it, where it sits on the board. That information is volatile by design, and it's stale the moment the sprint moves.

A knowledge base owns the opposite: the durable why and how. The decision and its rationale. The post-mortem and its lesson. The convention and the trap it prevents. That information is stable, and its value grows as the project ages.

Different half-lives, different access patterns. One is a worklist you burn down. The other is a memory you accumulate.

What you actually lose

Without a bridge, the loss isn't status search; your tracker handles that fine. The loss is recall: the rationale, the lesson, the gotcha, all trapped in closed threads. You can find them by keyword if you remember the words, and not at all if you don't. Your hardest-won decisions end up on the same tier as a dependency bump, and an agent reading the project can't tell them apart.

The mirror trap

Mirroring issues into the knowledge base looks like the fix and makes it worse. You get a second copy that drifts: the knowledge base still says "in progress" while the tracker closed the ticket last week. You get every status change as noise. And the handful of issues that carried a real decision drown in the hundreds that carried a checkbox.

Promote by reference

Here's the move. When you close out work that leaves durable knowledge behind, distill it into the right type: a settled call becomes a decision, an outage-and-lesson becomes a post-mortem, a sharp edge becomes a gotcha, a new norm becomes a convention. Tag it with the issue id, and drop the new record id back in the tracker.

Two things make this work. The first is selectivity: most issues promote nothing, and that's the point. A dependency bump, a flaky-test fix, a typo fix, none of it belongs in the thing you'll search two years from now, and keeping it out is what keeps recall high-signal. The second is the tag: it's the only seam you need. Recall an issue's knowledge by its tag, and jump to its live status through the tracker. There's no schema to change, and it works the same whether you're on Jira, Linear, or GitLab.

A recall layer, not a migration

This is why a knowledge base earns its place beside your tracker instead of trying to replace it. You don't move your issues anywhere. You promote the durable few and leave status where it already works. The tracker keeps tracking; the knowledge base starts remembering.

It's how we model our own engineering knowledge on Vectros: decisions, runbooks, gotchas, and conventions as typed, searchable records, each tagged back to the issue it came from. See the agentic-SDLC blueprint for the shape, or read the full walkthrough in the docs.