Witness

Findings,
not scores.

Performance reviews miss the work that happens in Slack. Witness finds it, and cites the proof.

01 / problem

The problem

The system of record only credits what it can see.

Commits, PRs, tickets closed. The highest-leverage work looks nothing like that.

Unblocking a teammate, catching a bug in review, triaging an incident — all of it happens in Slack and gets credited to whoever closes the ticket afterward. In the workspace we built to test that claim, the gap is measurable, not asserted:
2 / 24
Tickets closed by the engineer who diagnosed the most incidents in Slack — last on the team by that metric
7
Slack threads where that diagnosis precedes someone else's ticket closing
0
Of those threads counted toward any ticket-based ranking
02 / method

The method

Witness surfaces that work, and cites the proof.

For each engineer, it finds things they did that helped a ticket or PR credited to someone else. A Slack message alone isn't evidence. A Slack message referencing a ticket assigned to someone else, that closes two hours later, is.

Rule A
Message references a ticket assigned to someone else. That ticket closes within the confirmation window.
Rule B
Message references a PR or file. Someone else commits against it within 24 hours.
Output
Cited artifacts per person. No score, no ranking number, ever rendered.
03 / mechanism

How it works

Attribution isn't intelligence. It's a temporal join.

It runs entirely inside Postgres, as a SQL predicate, not an LLM call.

confirm_attributions.sql — rule (a)
-- referenced ticket assigned to someone else,
-- closed within the confirmation window
JOIN ticket_state t
  ON t.assignee_person_id <> e.author_person_id
 AND t.closed_at
     BETWEEN e.ts AND e.ts + make_interval(hours => confirm_window_hours)
Restrict the tool to one connector, and the demo doesn't go blank — it becomes a confident, wrong performance review. Why the join had to move into the database
04 / guarantee

The degradation guarantee

Turn off a source. There's nothing left to join against.

Every read in the attribution path goes through a SQL function gated on the run's enabled_sources. Disable Linear, and ticket_state rows are structurally absent from the query, not filtered out by a branch that could be wrong, or faked.

Access control
Same mechanism. RLS decides who sees what: an engineer sees their own findings, a manager sees direct reports, nobody sees the org.
Enforced by
auth.uid(), not UI convention.
05 / built with

What each piece actually does

Not a features checklist.

InsForge backend

Postgres schema, the attribution engine, RLS access control, a realtime channel streaming pipeline stages live, pgvector for fuzzy reference resolution.

HydraDB identity

Ties a Slack user ID to a Linear assignee UUID with no shared key. Mirrors Slack messages as searchable knowledge, verified live.

RocketRide orchestration

Live-tested against a real Cloud account. Two real platform gaps found and documented, not guessed around.

06 / validation

Validation

Tested against a synthetic company, not a claim.

Real accounts on Slack and Linear. Filler messages generated from behavior, never from the detection logic itself.

24
Linear tickets
~110
Slack messages
7 / 7
Confirmed unblock threads found
Identities
Three personas, each a distinct real Slack account and Linear account — no shared identifier for entity resolution to lean on.
Filler generation
~90 background messages generated from behavioral character briefs, blind to the detection rule — the signal wasn't hand-placed for the pipeline to find.

Witness

The work was never invisible.
The dashboard just wasn't looking.