My inclination would be to have the symbol graph always include all symbols, and add a DocC feature to set a minimum access level for which symbols would actually be included in the generated docs (defaulting to 'public'). Excluding or including symbols which normally would/wouldn't be included at a given visibility level would be done with something like @_documentationVisibility(public|internal|private). Non-underscored symbols would default to a documentation visiblity equal to their normal access level, and underscored would default to being lowered to internal.
The normal usage of this would be to mark things you want excluded from the docs with @_documentationVisibility(internal). If you like using built API docs for the project you're actively working on, you'd build the docs with a minimum access level of internal or private instead, which would give you docs for underscored and internal things (assuming they have docs to generate).
If you're weird you could even mark internal things as @_documentationVisibility(public) to have them be included in the public docs even though they can't be called. I can't think of an actual use for this offhand, but I'm not confident there are none.
Ultimately though I'm not too concerned what this ends up looking like. Some way to exclude public symbols from the docs is a requirement for us to consider switching from jazzy to docc, but any flexibility past that is very much just nice-to-have.