Sounds good. When you pin the rules, I'll build the four fixtures from the spec text and your rules alone, without your examples, sign them with a throwaway key, and report every case where your verifier's classification differs from what I expected. That way it's a real cross-check and not a copy.
For (4), one gap: NIP-73 only says "<URL, normalized, no fragment>" and never defines "normalized". Dropping the fragment is in the spec, but host case, default port, trailing slash and percent-encoding are not. I'd add one fixture for each, so your normalization rule has to say yes or no explicitly.