That's correct, the circular dependency is in fact present in the two
packages.
In missinggo, cmd/filecache/main.go and cmd/http-file-server/main.go
use tagflag.Parse.
In tagflag, parser.go and usage.go use missinggo/slices.
The situation is uncomfortable, but I do not anticipate it will cause
problems in practice. tagflag is source-only, missinggo only needs it
to be present in the GOPATH, and vice versa.
There is no operational circular dependency in the actual files
involved, i.e. missinggo/slices (required by tagflags) is not the part
of missinggo that depends on tagflags.
missinggo is a collection of various miscellaneous functions, not a
library with a specific capability. Not all functions are related to
one other.
The alternative is to patch missinggo/slices into tagflag. This is
easy to do with Go using vendor directories. This is how I bootstrapped
tagflag. But now that missinggo itself is available, it doesn't seem
constructive to continue the vendor bootstrap. It's a worse option
than tolerating the circular dependency, I think.