Per the top of the Declaring project [source] metadata specification (emphasis mine),
The fields defined in this specification MUST be in a table named
[project]inpyproject.toml. No tools may add fields to this table which are not defined by this specification. For tools wishing to store their own settings inpyproject.toml, they may use the[tool]table as defined in the build dependency declaration specification.
And, for completeness, in the section specifying the permitted contents of the authors/maintainers key:
These fields accept an array of tables with 2 keys:
nameandnamevalue MUST be a valid email name (i.e. whatever can be put as a name, before an email, in RFC 822) and not contain commas. The
If you added your own arbitrary sub-keys to the author sub-table, any standards-conforming tools would not know what to do with them and at best ignore them, since they have no defined mapping to the underlying Core Metadata; and may raise an error (as it could be indicative of a typo or other mistake). You would also, of course, have to use your own custom packaging tool to actually include them in the metadata or use them for anything. Furthermore, if you or someone else were to propose a PEP to add such, any existing non-standard usage may conflict with whatever eventually gets defined in the PEP.
However, as the above spec suggests, there’s a better solution—custom fields like the ones you mentioned can be added to a custom key in a table under [tool] with the name of whatever custom build tool you will be using to handle them. You could either just specify the additional author details in the tool section, e.g.
[project]
authors = [
{author = "John Smith", email = "john@example.com"},
{author = "Jane Doe", email = "jane@example.com"},
]
[tool.your-orcid-builder]
authors = [
{author = "John Smith", orcid = "..."},
{author = "Jane Doe", orcid = "..."},
]
Or, you could specify the authors key as dynamic and leave specifying all the author information to your custom tool:
[project]
dynamic = ["authors"]
[tool.your-orcid-builder]
authors = [
{author = "John Smith", email = "john@example.com", orcid = "..."},
{author = "Jane Doe", email = "jane@example.com", orcid = "..."},
]
Best of luck!