# Upgrade Guide — vNEXT

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

## What Changed

The "what are all my hands doing?" view now sees ALL machines: ask
`GET /parallel-work/activities?scope=pool` and every machine's activity
appears in one list — local rows live-accurate, remote rows derived from
the already-replicated coherence journal with honest staleness labels and
named absences (a remote topic's description text stays on its machine by
design; the row says so instead of guessing). When the SAME conversation
shows running on two machines, the view flags the pair — and recognizes
the routine settling window after a deliberate move so it doesn't cry
wolf on every transfer.

Two more wiring truths surfaced by the live two-machine proof:

1. The "this conversation was deliberately moved here" pin is kept by the
   machine that DID the moving (the lease holder) — the machine it moved
   TO couldn't see it, so the workspace fetch still refused on the
   receiving side. The receiver now also accepts the mover's replicated
   placement diary entry (emitted at the router's CAS chokepoint) as
   proof it's the home; the per-write ownership recheck still aborts on
   any real claim.
2. Machines announced their promise-list versions on every heartbeat, but
   the listener's response parsing discarded the field — so commitment
   replication NEVER actually fired in either direction. One pass-through
   line fixes it, plus a source-shape regression test on the seam the
   integration suite had bypassed.

## What to Tell Your User

Ask any machine what you're working on across ALL machines and it
answers in one list — including flagging the should-never-persist case of
one conversation active in two places at once.

Nothing to do — these complete the "files follow the conversation" and
"promises visible everywhere" features so they work from the machine that
actually needs them, not just in tests.

## Summary of New Capabilities

- `GET /parallel-work/activities?scope=pool` — the pool-wide view
  (default scope unchanged).
- `src/core/PoolActivityView.ts` — the per-instance replica fold with
  overlap + recentMove + lowConfidence honesty.

- wsOwnerOf second fallback: newest topic-placement journal entry
  (own+replica) ⇒ self-ownership for the pull (issue #930).
- fetchPeerCapacity passes commitmentsAdvert through to
  driveCommitmentsSync (the P1.5a replication enabler).

## Evidence

5 unit tests incl. the B-terminal-never-masks-A aggregation and the
remote↔remote overlap pair; typecheck/lint green.

tests/unit/working-set-ownerof-wiring.test.ts (both fallback steps + the
advert pass-through); typecheck + wiring suites green. The staged live
proofs complete on the echo pair once this ships.
