The "schema" of the files in this directory.

We are treating this directory as a "database", as hey, what else is a
filesystem but one?

This directory contains 3 "root" directories:
	- published
	- rejected
	- reserved

These 3 directories contain the CVE ids allocated to us that are in one of the
three states.


Reserved
--------

Ids become "reserved" when they are allocated from CVE for our use.  At this
point in time they are nothing more but an empty placeholder.

When allocated, new empty files are created in the reserved directory in the
following format:
	reserved/YEAR/CVE-YEAR-ID

One example would be the file
	reserved/2023/CVE-2023-00042
which would mean that the CVE id "CVE-2023-00042" is reserved by our project
and is free to be used for any issue that comes up that would need an id
assigned for the year 2023.

Note, the file may contain text information based on stuff the kernel cve team
deems is needed.  More documentation will be written in the future as we figure
out what is needed.


Published
---------

Ids become "published" when they are submitted to CVE for publication.  To do
this, normally a git commit id is used to generate the information in the CVE
entry.

When published, five files for each CVE id are created in the following naming
format:
	published/YEAR/CVE-YEAR-ID
	published/YEAR/CVE-YEAR-ID.sha1
	published/YEAR/CVE-YEAR-ID.json
	published/YEAR/CVE-YEAR-ID.mbox
	published/YEAR/CVE-YEAR-ID.dyad

The CVE-YEAR-ID file will be the original file that was in the reserved
directory, in case text information in it was present.  It can also be used to
hold notes and information about the specific CVE id that don't fit into the
other files.

The .sha1 file shall contain the git sha1 of the commit that fixes this CVE id.

The .json file shall contain the json formatted CVE entry that can be submitted
to CVE when published.

The .mbox file shall contain the mail message of the CVE entry that can be
submitted to the public mailing list for publication in human-readable format.

The .dyad file shall contain the output of the 'dyad' tool that shows the pairs
of vulnerable:fixed versions and git ids for the .sha1 of the CVE entry.  This
file is easy to parse by tools and is used by some of the existing scripts.

If a:
	published/YEAR/CVE-YEAR-ID.vulnerable
file is present, the cve_update script will use the git sha in that file as the
"commit where the vulnerability showed up" for doing the logic of creating the
.json and .mbox files.  This allows us to set the commit id for this for
commits that do NOT have a "Fixes:" tag, or if the "Fixes:" tag is incorrect.
Note, this file can contain multiple vulnerable git ids, separated by a space.

If a:
	published/YEAR/CVE-YEAR-ID.diff
file is present, the cve_update script will use that as a diff against the
kernel changelog text to replace the cve text wording with the modified text.
This allows us to modify the CVE entry text for when it is wrong or confusing.

If a:
	published/YEAR/CVE-YEAR-ID.reference
file is present, the cve_update script will use that to add a URL reference to
the json and mbox entry.  The file can contain multiple URL references, one per
line.


Rejected
--------

Ids become "rejected" when they are not deemed to be actual issues.  When
rejected, any previously published information shall move to the rejected/
directory, and the CVE will be submitted to cve.org to be rejected.
