The problem with ANY timezone based system is that people travel. My phone numbers follow me wherever I go in the world, and ring on my desk, in my pocket, in my hotel room, back at home, etc., for every incoming call.
One-ringy-dingies can be very annoying, especially when you're in a hotel room somewhere on the other side of the world, having just gotten off a long flight, and have managed to get to sleep, and then the phone rings once and stops. Or even if you're awake. "Why did that ring only once? Is my Asterisk PBX screwed up? Oh. Just another call from e164.org."
While I fully agree that there needs to be a way to validate the information in e164.org before people will believe that it's worth using and this seems to be a reasonable solution for now for people with smart enough systems that they can ignore a call based on your callerID in a way that makes you believe that the number is good, some better solution may be needed for others.
Here's what I'm doing in my Asterisk dialplan:
; Answer any test calls from e164.org and then just wait a bit and hangup
exten => _[a-zA-Z0-9*#]./448445620415,1,Goto(s,1)
exten => _[a-gi-zA-Z0-9*#]/448445620415,1,Answer()
exten => _[a-gi-zA-Z0-9*#]/448445620415,n,Wait(30)
exten => _[a-gi-zA-Z0-9*#]/448445620415,n,Hangup()
Here's a proposed alternate solution.
First, let the e164.org user pick the solution he wants. One choice would be what you're doing now, with the UK 844 callerID. I'd pick that, since I've fixed my asterisk.
Another choice would be "manual validation every 3 months". If chosen, you would send an email to the address of record 75 days after the last verification, giving 15 days for the user to respond. A simple reply to the return address with "call now" in the body of the message would initiate the test call at a time of the e164.org customer's choosing. No response for 15 days would result in either a reminder and another 15 days or deregistration.
Other methods could also be devised, with the e164.org user choosing from any one of them.
/john