Reproduction:
Create the following file structure:
And run the following testcases inside the a/ folder:
glob('../a/*') //=> ['../a/b', 'c.txt']
glob('b/../*') //=> ['b', 'c.txt']
glob('/absolute/path/to/a/*') //=> ['/absolute/path/to/a/b', 'c.txt']
The paths to files are always relative to the current directory, while the paths to folders are somewhat faithful to the glob input.
I think the correct form is to stay faithful to the input, but whatever the choice is the inconsistencies are a problem.
I also think it's weird that even for folders b/.. resolves to nothing while ../a stays as-is, but it kinda makes sense since for the latter you need to know the current folder is a.