Closed ahelwer closed 8 months ago
There are some pretty good python markdown parsing packages now and I'm playing around at this. It seems pretty viable to actually enforce correspondence between the README.md table and the manifest.json file. I think we should do the following checks:
I also propose making the following changes to the table itself:
@lemmy thoughts?
LGTM
While transforming the table I found these links which I cannot yet map to a spec in the repo:
https://github.com/neoschizomer/Paxos
https://github.com/tlaplus/tlaplus/blob/master/tlatools/org.lamport.tlatools/src/tlc2/tool/fp/OpenAddressing.tla
https://github.com/Alexander-N/tla-specs/tree/main/crdt-bug
https://github.com/Alexander-N/tla-specs/tree/main/asyncio-lock
https://github.com/dranov/raft-tla
https://github.com/elem-azar-unis/CRDT-Redis/tree/master/MET/TLA
https://github.com/Cjen1/tla_increment
https://www.losa.fr/blog/streamlet-in-tla+
https://github.com/elh/petri-tlaplus
https://github.com/JYwellin/CRDT-TLA
This isn't work I'm planning to do anytime soon but it would be a nice little project if someone else wants to take it on. Markdown is a very difficult language to work with, tooling-wise, but there are nice full-featured parsers like goldmark (used by the Hugo static site generator, for example) which make it tractable. A CI script could parse the README.md file with goldmark, find the table & its entries, and check its correspondence to the manifest.json file. This would include not only the existence of specs in the table but also whether they are properly labeled as including proofs, pluscal, TLC models, and whatever other traits we care to define. This could also implement whatever clustering & categorization is desired in #15. This could all possibly be implemented as a goldmark extension. Alternatively, there are a number of python markdown parsers of varying quality levels that could be used.