Mimir
Mimir is a live knowledge-base hit-tracking service for UV's ROTC governance framework. It replaces per-project Markdown KNOWN_ISSUES.md files with one central, queryable service: every time an agent hits a known problem, it reports the hit; Mimir tracks how many times that exact issue has recurred, by whom, and surfaces the existing solution the moment one exists.
Matching runs in two steps. First, an exact match on a scope-aware signature hash (project, category and title, normalised and lower-cased). If nothing matches, keyword scoring runs against a candidate pool - the hit's own project's issues, plus every cross-project GENERAL-scope issue, plus any TECHNOLOGY-scope issue sharing the same technology tag - scoring +1 per keyword hit and +5 for an exact category match, and only creating a new issue once the highest score stays below threshold. No embeddings, no vector search, by explicit organisational ruling against vector-search infrastructure for this kind of matching.
Key Technologies
Key Features
- Scope-aware exact match on a signature hash, followed by keyword scoring against a candidate pool, before a new issue is ever created
- Three issue scopes - project-siloed by default, GENERAL to collapse the same issue across every project, or TECHNOLOGY to collapse by a shared technology tag
- Admin-triggered dedup review queue that surfaces likely duplicate issues, within a project or across every project, for explicit human merge review
- Reopen endpoint with an append-only audit trail, so a wrongly-closed issue can be corrected without editing or deleting any prior hit or solution record
- Reporting endpoints for hot issues, a top-reporter/top-solver leaderboard, a period summary, and a by-technology breakdown of repeated cross-project cost
How it's run
Live at rotc-kb.ou-uv.com (TLS via Caddy, systemd-managed, bound to loopback), authenticated with a per-client X-API-Key header on every route except health. Real reporting endpoints in production use today:
GET /v1/reports/hot-issues- open issues ranked by hit count, across one project or every projectGET /v1/reports/leaderboard- top reporters, top solvers, and top solvers by impact (a solution's value keeps counting every time it gets reused, not just once at solve time)GET /v1/reports/by-technology- which cross-cutting technology problem has cost the most repeated hits across every project that hit it
Every status revert goes through a dedicated reopen endpoint rather than overwriting history: the original solution text and every prior hit stay intact, and the append-only reopenings table records who reopened an issue, when, and why.