`_require_repo()` now returns the validated repo root (Path) instead of None, so callers get a non-None path and pyright stops flagging `root / spec.source` and the `CastleConfig(root=root)` construction. Drops the redundant `get_castle_root()` re-fetch after each guard and hoists the `pathlib.Path` import to module scope.