# Upgrade Guide — vNEXT

<!-- assembled-by: assemble-next-md -->
<!-- bump: patch -->

## What Changed

When two agents on the SAME computer talk over Threadline, a reply could get silently quarantined by
the anti-hijack guard. The cause: same-computer delivery labels the sender by NAME, but the
conversation is filed under the sender's FINGERPRINT (derived from their public key) — so the guard
compared a name against a fingerprint, decided they didn't match, and isolated the reply into a fresh
empty thread (the conversation "read empty"). The fix teaches the receiving side to work out the
sender's fingerprint — using the exact same recipe the conversation was filed with (`fingerprint`, else
the first 32 chars of the public key) — and hand the guard just that one fact. Now a legitimate reply
matches its conversation and resumes; an unknown sender is still isolated (fail-safe). The cross-machine
(internet) path was never affected — it already carries the fingerprint. This is the inbound companion
to the duplicate-identity fix shipped just before it.

## What to Tell Your User

If you run more than one agent on the same machine and noticed that a co-located agent's replies were
"going through but not arriving" — or that a conversation between two of your agents kept restarting in
empty threads — this fixes it. Their replies now stay on the same conversation thread. You don't need
to do anything; it takes effect after the agent updates and restarts. Nothing changes for agents talking
across different machines.

## Summary of New Capabilities

A reliability/correctness fix, not a new feature: same-computer agent-to-agent replies now resolve to
the right conversation instead of being false-isolated by the anti-hijack guard. The guard stays fully
active and still isolates any sender it can't resolve.

## Evidence

- 13 unit tests for the shared name→fingerprint resolver (incl. the publicKey-only shape that was the
  blocking case, name collisions → no-guess, and malformed/missing-file fail-safe).
- 3 unit tests driving the REAL anti-hijack guard: the no-hint case reproduces the live incident
  (`sagemind` isolated on thread `199c20fe owned by 1db85f…`); the hint case resumes; a mismatched hint
  still isolates.
- 2 integration tests chaining the real resolver (against a real on-disk `known-agents.json`) into the
  real guard, on the exact incident data shape.
- Typecheck clean; 1710 existing threadline tests unaffected; independent second-pass security review:
  CONCUR.
- Spec (converged iter 2, approved): `docs/specs/threadline-local-delivery-fingerprint-attribution.md`.
