57acaa50a2
Salvage bar is <=2 invariant tests per behaviour, not one test per branch. The three kept each pin a contract: import registers the source and an unchanged (credential-only) change is a byte-identical no-op; a changed source re-imports memory + Hermes-owned skills while a user-created skill is never clobbered; --sync --dry-run writes nothing and leaves the digest. Corrupt-manifest recovery, vanished-source skip and parser wiring are exercised implicitly by the E2E path and don't merit their own tests.