I assume that parts of the "Proposal" section was intended to summarize how DocCâand the DocC plugin that does build orchestrations work todayâbut some of what you've described is different enough that it's worth pointing it out.
If for any of these differences, the intention is to follow the behavior that's described in the "Proposal" section rather than the current behavior, then it would be good to clarify that as it could mean that there's extra work in other components.
This command automatically generates DocC archives in HTML for all package products and intelligently merges them into a unified, package-level archive that provides a cohesive browsing experience. The command handles the complexity of target discovery, symbol graph generation, and archive merging behind the scenes, requiring no configuration for basic use cases.
Merging documentation from multiple targets into a unified archive is something that DocC supports and the DocC plugin can orchestrate but it requires passing the --enable-experimental-combined-documentation flag to the plugin to perform that orchestration.
It is a goal that that feature would both get rid of its "experimental" status and be enabled by default, but neither of those are the case today.
For executable targets that use Swift Argument Parser or are capable of generating a compatible tool-info JSON, the command automatically extracts the complete command-line structure and converts it into documentation-ready symbol graphs.
This feature, as described, doesn't exist today. It's been talked about and the Argument Parser is capable of outputting a markdown file that lists the flags, options, and arguments for each command. However, Swift Argument Parser isn't capable of outputting a symbol graph file and the DocC plugin doesn't have any orchestration that calls the Argument Parser to generate the markdown file.
The --internal flag extends documentation generation to include internal targets that aren't exposed as public products.
The DocC plugin defaults to building documentation for all "products" of the package, because those are the only targets that are available to other developers. Developers can specify what products or what targets that the DocC plugin should orchestrate a documentation build for by passing one or more --product <product-name> or one or more --target <target-name>. The plugin doesn't have an --internal flag. Instead the developer would need to spell out all the target names if they wanted to build documentation for the internal targets as well.
Also, I could imagine that someone would think that the --internal flag would configure the access level of what symbols are part in the documentation so that it includes internal-access symbolsâwhich is configured with the --symbol-graph-minimum-access-level <access-level> argument with the DocC pluginâso it might be worth naming this flag something along the lines of --all-targets to avoid that potential confusion.