It looks like there could be a bug in RouterOS or the documentation is faulty.
According to the Manual:Scripting, the policy "policy" is necessary if the script needs access to user policies.
This information doesn't seem complete. As is explained in Manual: Router_AAA, the policy "policy" also needs to be set if a script requires access to global variables set by other users.
As far as I can see in my own tests, the policy "policy" is actually required to access any kind of global variables, not just those by other users. Specifically, following the Wiki page on how to set up DDNS for No-IP.com and giving the first script on the page the policy "read,write,test", as described in the article, I noticed that the script would update the IP anytime it was run, even if there was no change. Using :log info, I checked and could confirm that the global variable was always empty when retrieved after re-running the script. Changing the Policy to "read,write,test,policy" solved the issue.
Can you confirm the bug/error in documentation or is something not correct on my end?