Simplified maintenance tools and authoring process#1382
Conversation
- merged processing for html and pdf (gfm-plus is a by-product of the html generator) - added configuration for making section reference display adaptable and steer derivation of slugs - changed sections module derives section slug and example counter mappings from prose sources - assemble is the new unified processing tool - added additional mappings in case one wants to add the section title to section refs - derived the current section mappings - rendered the user facing delivery items in gfm-plus, html, and pdf format - added clone-info action to makefile - amended makefile clean action to also remove python runtime ephemerals - patched away a regression by adding a replacement step to toccata (intermediate solution) Signed-off-by: Stefan Hagen <stefan@hagen.link>
Signed-off-by: Stefan Hagen <stefan@hagen.link>
…an action Signed-off-by: Stefan Hagen <stefan@hagen.link>
tschmidtb51
left a comment
There was a problem hiding this comment.
Some minor comments - other than that LGTM
| @@ -636,7 +635,7 @@ <h1 id="table-of-contents"> | |||
| </h1> | |||
| <div id="toc_container"> | |||
| <ul class="toc_list"> | |||
| <li>1 <a href="#introduction">Introduction</a> | |||
| <li>1. <a href="#introduction">Introduction</a> | |||
There was a problem hiding this comment.
I think we should not end with ..
There was a problem hiding this comment.
I think we should end all top level enumeration displays for sections (including appendices and annexes with a full stop, as to help the reader separate from the title text. Titles like "42 Volleyball Players" are distracting and I think bad typography. But, in case OASIS likes it differently we can always change the configurations. I still hope, that the OASIS standards will become more readable ... over time.
…fo/name targets Signed-off-by: Stefan Hagen <stefan@hagen.link>
Added distclean and amended clone-info/name targets
|
Huge changes coming after Whit Monday 🤞🏽 |
… the OASIS admin publication checks for DPS Signed-off-by: Stefan Hagen <stefan@hagen.link>
Signed-off-by: Stefan Hagen <stefan@hagen.link>
Signed-off-by: Stefan Hagen <stefan@hagen.link>
|
Now, a typical complete release run with diff and quality gate checking takes on a 2020 mac mini around 9 seconds: ❯ OPEN=true make release diff quality
2026-07-18T22:48:49.198735+00:00 INFO [nide._harvest]: first-authored-section = '# Introduction'
2026-07-18T22:48:49.199148+00:00 INFO [nide._harvest]: track-examples = True
2026-07-18T22:48:49.199180+00:00 INFO [nide._harvest]: meta-example-global-number = 4321
2026-07-18T22:48:49.307115+00:00 INFO [nide._harvest]: Loaded 226 source files → 15650 lines total
2026-07-18T22:48:49.313732+00:00 INFO [nide._section]: Identified 429 relevant section headings
2026-07-18T22:48:49.313818+00:00 INFO [nide._section]: - 13 level-1 section heading(s)
2026-07-18T22:48:49.313836+00:00 INFO [nide._section]: - 41 level-2 section heading(s)
2026-07-18T22:48:49.313855+00:00 INFO [nide._section]: - 236 level-3 section heading(s)
2026-07-18T22:48:49.313878+00:00 INFO [nide._section]: - 101 level-4 section heading(s)
2026-07-18T22:48:49.313890+00:00 INFO [nide._section]: - 38 level-5 section heading(s)
2026-07-18T22:48:49.313900+00:00 INFO [nide._section]: Section level nesting is valid.
2026-07-18T22:48:49.325029+00:00 INFO [nide._section]: Wrote 429 entries to section LUT files.
2026-07-18T22:48:49.326921+00:00 INFO [nide._example]: Example continuity valid across 234 section(s).
2026-07-18T22:48:49.331119+00:00 INFO [nide._example]: Wrote 263 example LUT entries (262 real + 1 meta at 4321).
2026-07-18T22:48:49.356762+00:00 INFO [nide._harvest]: Embedding scan complete — 0 finding(s).
2026-07-18T22:48:49.828221+00:00 INFO [nide._assemble]: Loaded 226 source files → 15582 lines total (all channels)
2026-07-18T22:48:49.932286+00:00 INFO [nide._assemble]: IR written to build/ir.json (15258 nodes)
2026-07-18T22:48:50.384537+00:00 INFO [nide._channel]: Loaded IR from build/ir.json (15258 nodes)
2026-07-18T22:48:50.397822+00:00 INFO [nide._channel]: Rendered gfm-plus → build/gfm-plus.md (15579 lines)
Rendered user facing delivery item in markdown format:
-rw-r--r--@ 1 ruth staff 2213700 19 Jul 00:48 ../share/csaf-v2.1-draft.ir.json
-rw-r--r--@ 1 ruth staff 723871 19 Jul 00:48 ../share/csaf-v2.1-draft.md
2026-07-18T22:48:50.829657+00:00 INFO [nide._channel]: Loaded IR from build/ir.json (15258 nodes)
2026-07-18T22:48:50.840981+00:00 INFO [nide._channel]: Rendered html → build/html.md (15350 lines)
2026-07-18T22:48:50.844328+00:00 INFO [nide._channel]: Section records → build/section-records.json
Rendered user facing delivery item in html format:
-rw-r--r--@ 1 ruth staff 1037761 19 Jul 00:48 ../share/csaf-v2.1-draft.html
2026-07-18T22:48:53.333070+00:00 INFO [nide._assemble]: Loaded 226 source files → 15582 lines total (all channels)
2026-07-18T22:48:53.437204+00:00 INFO [nide._assemble]: IR written to build/ir.json (15258 nodes)
2026-07-18T22:48:53.874903+00:00 INFO [nide._channel]: Loaded IR from build/ir.json (15258 nodes)
2026-07-18T22:48:53.910034+00:00 WARNING [nide._channel]: build/typst.md line 14635: blind GFM table (no labeled caption) — typst figure counter slot consumed
2026-07-18T22:48:53.910085+00:00 WARNING [nide._channel]: build/typst.md line 14700: blind GFM table (no labeled caption) — typst figure counter slot consumed
2026-07-18T22:48:53.915627+00:00 INFO [nide._channel]: Rendered typst → build/typst.md (15597 lines)
2026-07-18T22:48:53.915838+00:00 INFO [nide._channel]: Lua filter → build/nide-columns.lua (pass to pandoc with --lua-filter)
nide manifest: written build/manifest.json
nide manifest: embedded block in build/gfm-plus.md
nide manifest: embedded block in build/html.md
nide manifest: embedded block in build/typst.md
nide validate: manifest self-hash OK
nide validate: source — 226 files: 226 OK, 0 CHANGED, 0 MISSING, 0 ADDED
nide validate: binder-hash OK
nide validate: source-state-hash OK
nide validate: outputs — 4 outputs: 4 OK, 0 CHANGED, 0 MISSING
nide validate: toolchain nide OK (2026.7.19+parent.3e973ada50)
nide validate: toolchain pandoc OK (3.10)
nide validate: toolchain typst OK (0.15.1 (unknown commit))
Release complete. Manifest verified.
-rw-r--r--@ 1 ruth staff 1037761 19 Jul 00:48 ../share/csaf-v2.1-draft.html
-rw-r--r--@ 1 ruth staff 2213700 19 Jul 00:48 ../share/csaf-v2.1-draft.ir.json
-rw-r--r--@ 1 ruth staff 79137 19 Jul 00:48 ../share/csaf-v2.1-draft.manifest.json
-rw-r--r--@ 1 ruth staff 723871 19 Jul 00:48 ../share/csaf-v2.1-draft.md
-rw-r--r--@ 1 ruth staff 3689119 19 Jul 00:48 ../share/csaf-v2.1-draft.pdf
-rw-r--r-- 1 ruth staff 95 19 Jul 00:48 ../share/csaf-v2.1-draft.pdf.blake3
-rw-r--r-- 1 ruth staff 95 19 Jul 00:48 ../share/csaf-v2.1-draft.pdf.sha256
-rw-r--r--@ 1 ruth staff 675203 19 Jul 00:48 ../share/csaf-v2.1-draft.typ
nide quality: OASIS-CONFORMANCE PASS Conformance
nide quality: OASIS-TECHNICAL-COMMITTEE PASS Technical Committee:
nide quality: OASIS-CHAIRS PASS Chairs:
nide quality: OASIS-EDITORS PASS Editors:
nide quality: OASIS-ABSTRACT PASS Abstract:
nide quality: OASIS-LOGO PASS 
nide quality: OASIS-RFC-2119-CITED PASS #RFC2119
nide quality: OASIS-RFC-8174-PAIRED PASS #RFC8174
nide quality: OASIS-RESID-TODO PASS 8473 item(s) checked
nide quality: OASIS-RESID-TBD PASS 8473 item(s) checked
nide quality: OASIS-RESID-FILL-IN PASS 8473 item(s) checked
nide quality: OASIS-LINK-DEAD-LISTS PASS 351 item(s) checked
nide quality: OASIS-LINK-DOUBLE-SLASH PASS 318 item(s) checked
nide quality: CSAF-TITLE PASS Common Security Advisory Framework Version 2.1
nide quality: CSAF-STAGE-HEADING PASS Committee Specification Draft 03
nide quality: CSAF-THIS-STAGE PASS This stage:
nide quality: CSAF-LATEST-STAGE PASS Latest stage:
nide quality: CSAF-DOC-URL PASS https://docs.oasis-open.org/csaf/csaf/v2.1/csd03/csaf-v2.1-csd03.md (Authoritative) \
nide quality: CSAF-TC-LINK PASS https://www.oasis-open.org/committees/csaf/
nide quality: CSAF-INTRODUCTION PASS Introduction
nide quality: CSAF-NORMATIVE-REFS PASS Normative References
nide quality: CSAF-INFORMATIVE-REFS PASS Informative References
nide quality: CSAF-TERMINOLOGY PASS Terminology
nide quality: CSAF-SCHEMA-ELEMENTS PASS Schema Elements
nide quality: CSAF-PROFILES PASS Profiles
nide quality: CSAF-PROFILE-BASE PASS Profile 1: CSAF Base
nide quality: CSAF-TESTS PASS Tests
nide quality: CSAF-DESIGN-CONSIDERATIONS PASS Design Considerations
nide quality: CSAF-ADDITIONAL-CONVENTIONS PASS Additional Conventions
nide quality: CSAF-ACKNOWLEDGMENTS PASS Acknowledgments
nide quality: CSAF-REVISION-HISTORY PASS Revision History
nide quality: CSAF-VEX-PROFILE PASS Profile 5: VEX
nide quality: CSAF-MANDATORY-TESTS PASS Mandatory Tests
nide quality: CSAF-RECOMMENDED-TESTS PASS Recommended Tests
nide quality: CSAF-INFORMATIVE-TESTS PASS Informative Tests
nide quality: 0 blocker(s) 0 warning(s) 35 pass(es) 0 N/A
# took 9s |
|
@MColetta-OASIS I transformed the rules of your repository into data files in prose/edit/etc/ and those are validated by the nide engine. Hope you like it. Please also see oasis-tcs/dps#201 (comment) for the IMO bad change of replacing stages with versions on the frontpage that kind of sneaked in during the tumultuous year of 2025. |
| RFC4647 | ||
| : Phillips, A., Ed. and M. Davis, Ed., "Matching of Language Tags", BCP 47, RFC 4647, DOI 10.17487/RFC4647, September 2006, <https://www.rfc-editor.org/info/rfc4647/>. | ||
|
|
||
| RFC5646 | ||
| : Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009, <https://www.rfc-editor.org/info/rfc5646/>. | ||
|
|
There was a problem hiding this comment.
@tschmidtb51 not sure about this (the possible loss of content added since April ...)
There was a problem hiding this comment.
@sthagen Thank you for flagging this. Yes, we have content loss...
tschmidtb51
left a comment
There was a problem hiding this comment.
Thank you for this huge tool improvement. I've not checked it on my machine but love it already from what I know from OpenEoX.
As you discovered: There quite some content loss introduced (I guess through resolving merge conflicts 🙈 ). How do you want to handle this? Drop the merge commit and rebase your changes or should be manually correct them or do you want to provide a branch with merge conflicts and I go ahead an resolve them? 🤔 (Open for all options here - looking at you for guidance how we want to handle that.)
| RFC4647 | ||
| : Phillips, A., Ed. and M. Davis, Ed., "Matching of Language Tags", BCP 47, RFC 4647, DOI 10.17487/RFC4647, September 2006, <https://www.rfc-editor.org/info/rfc4647/>. | ||
|
|
||
| RFC5646 | ||
| : Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009, <https://www.rfc-editor.org/info/rfc5646/>. | ||
|
|
There was a problem hiding this comment.
@sthagen Thank you for flagging this. Yes, we have content loss...
Maintenance and Tool Changes
Please ensure you read the three README.md files added or updated in this PR.
The diff feature of nide requires nide >= 2026.7.18 and the quality feature (acting on the OASIS rule set) requires nide >= 2026.7.19.
Please install blake3 and also install nide with the optional manifest feature.
In cases some content suffered from this large change set, I am sorry, but I did not spot. Maybe the reviewers can. Thanks.
I did invest quite some time in the documentation of nide and you are welcome to visit the man page, quickstart, tutorial, or the example page(s) but in short: