tldr; There is absolute consensus that manual header id assignment is an important feature for CommonMark and its absence is a weakness of the spec. There is general consensus that the syntax that best fits this use case is a {#anchor-id}
following the definition of the header. All the contentious issues that have held it up do not actually apply to manual header id generation. How can this move forward?
Consensus syntax:
# Header example {#Anchor-id}
To create
<h1 id="Anchor-id"> Header example </h1>
Estimates of consensus:
This thread
Of 16 posts on this thread 11 speak positively of this syntax or the importance of a solution. 4 of the remaining do not address the merits of the syntax or the solution. 1 states that the problem is likely to have no perfect solution.
Automatic id generation thread
Of 84 posts on the Automatically generated IDs for headers topic, 15 speak positively of the {# }
syntax & of the importance of having a solution.
There are three other syntax styles proposed, which have 4, 2 and 1 post in favour of each of them which have 2, 1, and 1 proponent (respectively). Of posts in which other syntaxes are proposed, these all included mention of the more general attribute assignment problem. Of those individuals favouring other syntaxes, 1 of the 2 proponents of the 4 post syntax later agreed that the {#anchor}
syntax is better, on the grounds that it is already present in pandoc.
The rest of the posts (62) do not explicitly discuss the syntax or need for manual anchor ids focusing on the main issue of that other thread (how to automatically generate ids).
Conclusion: Consensus has been reached, progress has been arrested by scope creep
Having analyzed this thread as well as the discussion at Automatically generated IDs for headers topic, it’s seems that the correct next move is to proceed toward implementing the {# }
for manually specifying ids for atx headers.
The discussion began 2 years ago, and it should not need to continue longer before this feature is included in the spec.
There universal consensus that allowing manual ids on headers is an important feature and a assured improvement to the CommonMark spec.
There is widespread (but not universal) consensus on the use of the {# }
syntax for manual header id assignment. Of posts that comment on syntaxes, 79% support this syntax, over 6Ă— the level of support for any other syntax.
Addressing Dissent: Manual header ids are not objects of dissent
All of dissent in these threads seems to revolve around whether this should be a more general way of assigning attributes and whether there should be auto-generated header ids.
These concerns don’t need to block progress manually specified header ids. This approach to including header ids leaves open the possibility of autogenerating them (but says nothing about autogeneration one way or the other). Additionally, it allows for other syntaxes (as well as an expansion of the same syntax) as a means of assigning attributes to headers.
Steps forward?
@jgm and @codinghorror, what are the next steps needed to see progress on this? Happy to put in the effort wherever it is needed.