Skip to content

Prepared clean structure with less gaps and aligned model representations including examples#201

Open
sthagen wants to merge 4 commits into
mainfrom
prov-meta-1-0-ng-structure
Open

Prepared clean structure with less gaps and aligned model representations including examples#201
sthagen wants to merge 4 commits into
mainfrom
prov-meta-1-0-ng-structure

Conversation

@sthagen

@sthagen sthagen commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

The editors worked on a clean source version of the prov-meta spec with less gaps, more consistency (JSON was base, tables provided enumerations), and better example inclusion.

Structural changes:

  • ported some fixes from the CSDPR01 processing
  • clean markdown source files in prose/edit/src
  • configurations to steer the tools and manage the three channels gfm-plus, html, and pdf
  • delivery items facing users in prose/share/
  • some inner document links are still work in progress (esp. around the appendixes and annexes)
  • migrated to pkg:pypi/nide@2026.7.14 for rendering

The user facing delivery items derived from the files in the prose/edit/src subtree are placed in prose/share/. These are the gfm-plus, html, and pdf variants that would end up at https://docs.oasis-open.org/dps/prov-meta/

Before merge you can still access these files directlsy (no difference views but the full GitHub default view for the formats) by visiting the incoming "source" branch at https://github.com/oasis-tcs/dps/tree/prov-meta-1-0-ng-structure/prov-meta-1.0/prose/share

When the setup is complete (with all internal linking working), I will activate the PR as ready for review and merge.

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 here are the main additional tool changes for enhancement and ease of collaboration:

  • we now can do table references
  • in case we need footnotes these will actuallys work across formats (esp. the naviogation)
  • we can reduce the size of text in table cells and we can hint at columnwidths using a simple graphical like ruler argument to the columnwidths-directive
  • we can diff between render runs to expose the nature of changes also in binary files like PDF
  • we support the full dublin core attributes
  • we can run quality checks against OASIS rules from publication process (OASIS admins may update the rule file(s)
  • we only have a single frontmatter to manage
  • we are ten times as fast when rendering all artifacts
  • we now have a manifest file, checksum files for the PDF and embedded manifests
  • all manifests in text like formats use RFC8785 "Canonicalization Scheme (JCS)" to prepare being able to sign them reproducibly
  • in case we want reproducible builds we can follow the SOURCE_DATE_EPOCH standard / convention as described in the documentation of nide and general examples per docs/SOURCE_DATE_EPOCH.

…ions including examples

Signed-off-by: Stefan Hagen <stefan@hagen.link>
@sthagen sthagen self-assigned this Jun 30, 2026
@sthagen sthagen added discussion-needed Discussion in the TC is needed material A material change labels Jun 30, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This diagram is intentionally left outdated. It will be replaced with either a series of diagrams in parallel to the tables (kind of) or with another single diagram.

- ported some fixes from the CSDPR01 processing
- clean markdown source files in prose/edit/src
- configurations to steer the tools and manage the three channels gfm-plus, html, and pdf
- delivery items facing users in prose/share/
- some inner document links are still work in progress (esp. around the appendixes and annexes)

Signed-off-by: Stefan Hagen <stefan@hagen.link>
@sthagen
sthagen requested a review from BortnickIBM July 1, 2026 00:30
- migrated to nide 2026.7.14 enabling ten times faster, more reliable and portable generation of the PDF format
- fixed a few nits
- PDF generation is now configured per etc/nide.yaml, etc/oasis.typ, and etc/dps.typ
- documentaion clean-up will be done later

Signed-off-by: Stefan Hagen <stefan@hagen.link>
@sthagen
sthagen marked this pull request as ready for review July 13, 2026 22:27
@sthagen

sthagen commented Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

@MColetta-OASIS

…liitos/etiketti/adhoc-script leftovers

- in case we need footnotes these will actuallys work across formats (esp. the naviogation)
- we can reduce the size of text in table cells and we can hint at columnwidths using a simple
  graphical like ruler argument to the columnwidths-directive
- we can diff between render runs to expose the nature of changes also in binary files like PDF
- we support the full dublin core attributes
- we can run quality checks against OASIS rules from publication process (OASIS admins may update the rule file(s)
- we only have a single frontmatter to manage
- we are ten times as fast when rendering all artifacts
- we now have a manifest file, checksum files for the PDF and embedded manifests
- all manifests in text like formats use RFC8785 'Canonicalization Scheme (JCS)'' to prepare being
  able to sign them reproducibly
- in case we want reproducible builds we can follow the SOURCE_DATE_EPOCH standard / convention
  as described in the documentation of nide and general examples per docs/SOURCE_DATE_EPOCH.

Signed-off-by: Stefan Hagen <stefan@hagen.link>
@sthagen

sthagen commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

So, with the new engine and enhanced configuration / provenance harness the whole release process takes only 3 seconds on a 2020 mac mini (this includes manifest validation):

❯ make distclean release
2026-07-19T08:42:40.935517+00:00 INFO [nide._harvest]: first-authored-section = '# Scope'
2026-07-19T08:42:40.935744+00:00 INFO [nide._harvest]: track-examples = True
2026-07-19T08:42:40.935785+00:00 INFO [nide._harvest]: meta-example-global-number = 4321
2026-07-19T08:42:40.945362+00:00 INFO [nide._harvest]: Loaded 35 source files → 2429 lines total
2026-07-19T08:42:40.946109+00:00 INFO [nide._section]: Identified 99 relevant section headings
2026-07-19T08:42:40.946149+00:00 INFO [nide._section]: - 14 level-1 section heading(s)
2026-07-19T08:42:40.946162+00:00 INFO [nide._section]: - 30 level-2 section heading(s)
2026-07-19T08:42:40.946172+00:00 INFO [nide._section]: - 7 level-3 section heading(s)
2026-07-19T08:42:40.946181+00:00 INFO [nide._section]: - 37 level-4 section heading(s)
2026-07-19T08:42:40.946189+00:00 INFO [nide._section]: - 11 level-5 section heading(s)
2026-07-19T08:42:40.946198+00:00 INFO [nide._section]: Section level nesting is valid.
2026-07-19T08:42:40.948276+00:00 INFO [nide._section]: Wrote 99 entries to section LUT files.
2026-07-19T08:42:40.948612+00:00 INFO [nide._example]: Example continuity valid across 34 section(s).
2026-07-19T08:42:40.949132+00:00 INFO [nide._example]: Wrote 35 example LUT entries (34 real + 1 meta at 4321).
2026-07-19T08:42:40.951324+00:00 INFO [nide._harvest]: Embedding scan complete — 0 finding(s).
2026-07-19T08:42:41.176756+00:00 INFO [nide._assemble]: Loaded 35 source files → 2425 lines total (all channels)
2026-07-19T08:42:41.192797+00:00 INFO [nide._assemble]: IR written to build/ir.json (2407 nodes)
2026-07-19T08:42:41.418641+00:00 INFO [nide._channel]: Loaded IR from build/ir.json (2407 nodes)
2026-07-19T08:42:41.421973+00:00 INFO [nide._channel]: Rendered gfm-plus → build/gfm-plus.md (2424 lines)
Rendered user facing delivery item in markdown format:
-rw-r--r--@ 1 ruth  staff  318741 19 Jul 10:42 ../share/prov-meta-v1.0-draft.ir.json
-rw-r--r--@ 1 ruth  staff  118285 19 Jul 10:42 ../share/prov-meta-v1.0-draft.md
2026-07-19T08:42:41.659781+00:00 INFO [nide._channel]: Loaded IR from build/ir.json (2407 nodes)
2026-07-19T08:42:41.664214+00:00 INFO [nide._channel]: Rendered html → build/html.md (2374 lines)
2026-07-19T08:42:41.665175+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  283794 19 Jul 10:42 ../share/prov-meta-v1.0-draft.html
2026-07-19T08:42:42.470270+00:00 INFO [nide._assemble]: Loaded 35 source files → 2425 lines total (all channels)
2026-07-19T08:42:42.487202+00:00 INFO [nide._assemble]: IR written to build/ir.json (2407 nodes)
2026-07-19T08:42:42.708066+00:00 INFO [nide._channel]: Loaded IR from build/ir.json (2407 nodes)
2026-07-19T08:42:42.714729+00:00 INFO [nide._channel]: Rendered typst → build/typst.md (2441 lines)
2026-07-19T08:42:42.714959+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 — 35 files: 35 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  283794 19 Jul 10:42 ../share/prov-meta-v1.0-draft.html
-rw-r--r--@ 1 ruth  staff  318741 19 Jul 10:42 ../share/prov-meta-v1.0-draft.ir.json
-rw-r--r--@ 1 ruth  staff   13646 19 Jul 10:42 ../share/prov-meta-v1.0-draft.manifest.json
-rw-r--r--@ 1 ruth  staff  118285 19 Jul 10:42 ../share/prov-meta-v1.0-draft.md
-rw-r--r--@ 1 ruth  staff  837941 19 Jul 10:42 ../share/prov-meta-v1.0-draft.pdf
-rw-r--r--  1 ruth  staff     100 19 Jul 10:42 ../share/prov-meta-v1.0-draft.pdf.blake3
-rw-r--r--  1 ruth  staff     100 19 Jul 10:42 ../share/prov-meta-v1.0-draft.pdf.sha256
-rw-r--r--@ 1 ruth  staff  102117 19 Jul 10:42 ../share/prov-meta-v1.0-draft.typ

@sthagen

sthagen commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

All given and known OASIS pre-publication check rules (transformed to a YAML configuration) pass:

❯ make quality
nide quality: OASIS-SCOPE                      PASS     Scope
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     ![](https://docs.oasis-open.org/templates/OASISLogo-v3.0.png)
nide quality: OASIS-RFC-2119-CITED             PASS     #RFC2119
nide quality: OASIS-RFC-8174-PAIRED            PASS     #RFC8174
nide quality: OASIS-RESID-TODO                 PASS     1343 item(s) checked
nide quality: OASIS-RESID-TBD                  PASS     1343 item(s) checked
nide quality: OASIS-RESID-FILL-IN              PASS     1343 item(s) checked
nide quality: OASIS-LINK-DEAD-LISTS            PASS     22 item(s) checked
nide quality: OASIS-LINK-DOUBLE-SLASH          PASS     8 item(s) checked
nide quality: DPS-TITLE                        PASS     Data Provenance Metadata Version 1.0
nide quality: DPS-STAGE-HEADING                PASS     Committee Specification Draft 02
nide quality: DPS-THIS-VERSION                 PASS     This version
nide quality: DPS-LATEST-VERSION               PASS     Latest version
nide quality: DPS-TC-LINK                      PASS     https://docs.oasis-open.org/dps/prov-meta/v1.0/csd01/prov-meta-v1.0-csd02.md
nide quality: DPS-DOC-URL                      PASS     https://docs.oasis-open.org/dps/prov-meta/v1.0/csd01/prov-meta-v1.0-csd02.md
nide quality: DPS-SAFETY-SECURITY              PASS     Safety, Security, and Data Protection
nide quality: DPS-REFERENCES-ANNEX             PASS     References
nide quality: DPS-NORMATIVE-REFS               PASS     Normative References
nide quality: DPS-INFORMATIVE-REFS             PASS     Informative References
nide quality: DPS-LICENSE-ANNEX                PASS     License, Document Status, and Notices
nide quality: DPS-EXAMPLES-ANNEX               PASS     Example Instances
nide quality: DPS-ACKNOWLEDGMENTS              PASS     Acknowledgments
nide quality: DPS-CHANGES-APPENDIX             PASS     Changes From Previous Version
nide quality: DPS-KEY-WORDS-SECTION            PASS     Key Words
nide quality: DPS-DEFINITIONS-SECTION          PASS     Definitions and Acronyms
nide quality: 0 blocker(s)  0 warning(s)  30 pass(es)  0 N/A

@sthagen
sthagen requested a review from BortnickIBM July 19, 2026 08:49
@sthagen

sthagen commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

@MColetta-OASIS please kindly review these PRs froim the OASIS publication process quality perspective (similar to such tool targeting PRs in CSAF, SARIF, OpenEoX (upcoming), and MQTT(upcoming) TC repositories).


I place the following statement here to make sure it finds it way.

Position Statement: Restore "Stage" Vocabulary in OASIS Specification Frontmatter

Submitted for consideration by the OASIS TC Process and template maintainers


Background

OASIS specification documents carry two independent maturity dimensions:

  • Version — identifies the content scope or feature set of a work product (e.g., MQTT v3.1.1, MQTT v5.0). Different versions of the same specification coexist as parallel, complementary work products. They are not replacements for one another; they serve different audiences or use cases simultaneously.
  • Stage — identifies the maturity or progression of a given version within the OASIS TC Process (CSD01, CSD02, CS, COS, OS). Stages are sequential: each represents a defined scope of IPR commitment, balloting, and public review, culminating in the OASIS Standard designation.

These two dimensions are orthogonal. A document is identified by both: "MQTT Version 5.0 Committee Specification 01" names both the content version and the process stage.

The Problem

The 2025 template revision replaced the frontmatter headings "This Stage", "Previous Stage", and "Latest Stage" with headings that use "Version" instead. This collapses a two-dimensional coordinate system into one axis.

The consequence is ambiguity. A heading reading "This Version" conflates two distinct questions: Which content version are we talking about? and At what stage of process maturity does this document sit? Those questions have different answers and serve different readers — authors tracking process progression, legal staff assessing IPR scope, and external recipients interpreting the document's normative weight all depend on stage being clearly named.

Illustrative Example: MQTT

MQTT Version 3.1.1 is simultaneously an OASIS Standard and an ISO/IEC standard (ISO/IEC 20922). MQTT Version 5.0 is currently an OASIS Standard. The MQTT TC did not intend Version 5.0 to replace Version 3.1.1 — both are active, serving different deployment contexts.

Each of these version trains has its own stage progression. An "MQTT v3.1.1 CSD01" has different normative standing than an "MQTT v3.1.1 OS", and both of those are distinct from anything in the v5.0 train. If frontmatter headings say "This Version" rather than "This Stage", it becomes genuinely unclear what is being asserted: the content version identity or the maturity stage of the document in hand.

ISO Alignment

OASIS Open is a recognized ANSI-accredited standards body and an accepted submitter to ISO. ISO's own vocabulary for this dimension is well-established: the International Harmonized Stage Codes (https://www.iso.org/stage-codes.html) provide a global taxonomy of document maturity states. ISO does not conflate stage and version; neither should we.

When an OASIS Standard is submitted for adoption as an ISO standard, the OASIS stage vocabulary must map cleanly to ISO stage codes. "OS" maps; "This Version" does not. Removing stage terminology from OASIS templates creates unnecessary friction at the ISO submission boundary — precisely the point where clear stage designation becomes most consequential.

Proposal

Restore the "This Stage", "Previous Stage", and "Latest Stage" headings to the OASIS specification frontmatter template. These headings should name the document's current process maturity state, distinct from the version identifier that appears in the document title and title block.

Retaining "version" vocabulary for the content dimension and "stage" vocabulary for the process dimension preserves the precision that the TC Process itself depends on, aligns with ISO terminology, and avoids introducing a false equivalence between two concepts that are independently important to authors, reviewers, legal staff, and downstream standard bodies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

discussion-needed Discussion in the TC is needed material A material change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants