Every test_project() node packs the same NodeId::identity (a fresh graph's first node), so two tests running in parallel collide in the process-wide registry and one resolves the other's live entry — identity_project_dropped's dangling-upgrade assert then fails intermittently on CI. Both identity tests now share a mutex.