feat: eliminate all Any/object/ignore — strict TypedDicts at every boundary
Replace every untyped boundary in the codebase with a named TypedDict:
- domain.py: SnapshotManifest, DeltaManifest replace LiveState=Any aliases - store.py: CommitDict, SnapshotDict, TagDict, RemoteCommitPayload; metadata → dict[str,str]; update_commit_metadata value: str - merge_engine.py: MergeStatePayload TypedDict; remove dict[str,object] annotations - config.py: AuthEntry, RemoteEntry, MuseConfig TypedDicts; rewrite _load_config with isinstance narrowing; _dump_toml handles known structure explicitly; remove all # type: ignore - midi_parser.py: MidiMeta, MusicXMLMeta TypedDicts replace dict[str,Any] - stash.py: StashEntry TypedDict replaces list[dict[str,Any]] - plugin.py: use SnapshotManifest/DeltaManifest constructors; direct field access; remove Any import - tests: SnapshotManifest in all test helpers and inline literals - CI: add typing audit step with --max-any 0 ratchet
Audit: 0 violations. mypy: clean. Tests: 99/99 passing.