Skip to content

Commit 56f0720

Browse files
riverman-ioclaude
andcommitted
Add citation/archival metadata and release runbook
Scaffold CITATION.cff, .zenodo.json, and codemeta.json (author: Daniel Caudle, Eris Securitas, ORCID 0009-0002-2330-8203) plus docs/RELEASING.md describing the GitHub -> Zenodo -> Software Heritage -> TechRxiv publication pipeline. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 81e2fd9 commit 56f0720

4 files changed

Lines changed: 169 additions & 0 deletions

File tree

.zenodo.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"title": "Semantic DNS",
3+
"description": "Semantic DNS is an ISA-95-aligned, UNS-adjacent network context source that turns asset observations (DHCP, discovery, imported inventory) into stable, meaningful DNS records and serves that semantic view as a real DNS zone, with an audit trail of how names were assigned.",
4+
"upload_type": "software",
5+
"access_right": "open",
6+
"license": "AGPL-3.0-only",
7+
"creators": [
8+
{
9+
"name": "Caudle, Daniel",
10+
"affiliation": "Eris Securitas",
11+
"orcid": "0009-0002-2330-8203"
12+
}
13+
],
14+
"keywords": [
15+
"DNS",
16+
"ISA-95",
17+
"unified namespace",
18+
"UNS",
19+
"asset inventory",
20+
"industrial networking",
21+
"OT",
22+
"DHCP"
23+
]
24+
}

CITATION.cff

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Citation metadata. Validated by the cffconvert tool and read by GitHub's
2+
# "Cite this repository" widget and by Zenodo at release time.
3+
# Spec: https://citation-file-format.github.io
4+
cff-version: 1.2.0
5+
title: "Semantic DNS"
6+
message: "If you use this software, please cite it using these metadata."
7+
type: software
8+
abstract: >-
9+
Semantic DNS is an ISA-95-aligned, UNS-adjacent network context source
10+
that turns asset observations (DHCP, discovery, imported inventory) into
11+
stable, meaningful DNS records and serves that semantic view as a real
12+
DNS zone, with an audit trail of how names were assigned.
13+
authors:
14+
- given-names: "Daniel"
15+
family-names: "Caudle"
16+
email: "danny@riverman.io"
17+
orcid: "https://orcid.org/0009-0002-2330-8203"
18+
affiliation: "Eris Securitas"
19+
repository-code: "https://github.com/eris-securitas/semantic-dns"
20+
url: "https://github.com/eris-securitas/semantic-dns"
21+
license: AGPL-3.0-only
22+
version: 0.1.0
23+
# TODO: set to the actual release date (YYYY-MM-DD) when you tag.
24+
date-released: "2026-05-17"
25+
keywords:
26+
- DNS
27+
- ISA-95
28+
- unified namespace
29+
- UNS
30+
- asset inventory
31+
- industrial networking
32+
- OT
33+
- DHCP

codemeta.json

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
"@context": "https://w3id.org/codemeta/3.0",
3+
"@type": "SoftwareSourceCode",
4+
"name": "Semantic DNS",
5+
"description": "Semantic DNS is an ISA-95-aligned, UNS-adjacent network context source that turns asset observations (DHCP, discovery, imported inventory) into stable, meaningful DNS records and serves that semantic view as a real DNS zone, with an audit trail of how names were assigned.",
6+
"version": "0.1.0",
7+
"license": "https://spdx.org/licenses/AGPL-3.0-only",
8+
"codeRepository": "https://github.com/eris-securitas/semantic-dns",
9+
"programmingLanguage": "Rust",
10+
"runtimePlatform": "Rust 1.88",
11+
"keywords": [
12+
"DNS",
13+
"ISA-95",
14+
"unified namespace",
15+
"UNS",
16+
"asset inventory",
17+
"industrial networking",
18+
"OT",
19+
"DHCP"
20+
],
21+
"author": [
22+
{
23+
"@type": "Person",
24+
"@id": "https://orcid.org/0009-0002-2330-8203",
25+
"givenName": "Daniel",
26+
"familyName": "Caudle",
27+
"email": "danny@riverman.io",
28+
"affiliation": {
29+
"@type": "Organization",
30+
"name": "Eris Securitas"
31+
}
32+
}
33+
]
34+
}

docs/RELEASING.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Releasing & archiving Semantic DNS
2+
3+
This runbook turns a tagged release into a citable, permanently archived
4+
artifact across GitHub → Zenodo → Software Heritage → TechRxiv.
5+
6+
## Metadata files in this repo
7+
8+
| File | Consumed by |
9+
|------------------|----------------------------------------------|
10+
| `CITATION.cff` | GitHub "Cite this repository", Zenodo |
11+
| `.zenodo.json` | Zenodo (overrides CFF-derived metadata) |
12+
| `codemeta.json` | Software Heritage, general tooling |
13+
14+
### Identity fields (done)
15+
16+
Author is set to **Daniel Caudle**, affiliation **Eris Securitas**, ORCID
17+
`0009-0002-2330-8203` in `CITATION.cff`, `.zenodo.json`, and
18+
`codemeta.json`. Zenodo freezes metadata at publish time, so verify these
19+
are correct before the first tagged release.
20+
21+
Validate the CFF before tagging:
22+
23+
```sh
24+
pipx run cffconvert --validate
25+
```
26+
27+
## One-time: connect the services
28+
29+
1. **Zenodo**: sign in at <https://zenodo.org> with GitHub, open
30+
*Account → GitHub*, and flip the toggle ON for
31+
`eris-securitas/semantic-dns`. (Only releases created *after* the
32+
toggle is on are archived.)
33+
2. **Software Heritage**: no account needed; the repo URL is what gets
34+
archived (see per-release step below).
35+
3. **TechRxiv**: create an account at <https://www.techrxiv.org> for when
36+
the write-up is ready.
37+
38+
## Per-release steps
39+
40+
1. Bump `version` in `Cargo.toml`, `CITATION.cff`, and `codemeta.json`.
41+
2. Set `date-released` in `CITATION.cff` to the release date.
42+
3. Commit, then tag and push:
43+
```sh
44+
git tag -a v0.1.0 -m "Semantic DNS 0.1.0"
45+
git push origin v0.1.0
46+
```
47+
4. Create the GitHub Release from that tag (UI or `gh release create v0.1.0`).
48+
5. **Zenodo** auto-ingests within minutes. Confirm the deposition, then
49+
record both DOIs:
50+
- *concept DOI* — always resolves to the latest version; cite this in
51+
papers and in the README badge.
52+
- *version DOI* — pins exactly this release; use for reproducibility.
53+
6. **Software Heritage** — trigger an explicit save so the exact tag is
54+
captured promptly instead of waiting for the crawler:
55+
```sh
56+
curl -X POST \
57+
https://archive.softwareheritage.org/api/1/origin/save/git/url/https://github.com/eris-securitas/semantic-dns/
58+
```
59+
Then resolve the snapshot/release SWHID at
60+
<https://archive.softwareheritage.org> for the tagged commit.
61+
7. Add/refresh the DOI badge in `README.md` (Zenodo provides the Markdown
62+
on the deposition page — use the concept DOI).
63+
64+
## TechRxiv (when the paper is ready)
65+
66+
- Reference the Zenodo **concept DOI** in the paper's code/data
67+
availability section; optionally cite a Software Heritage **SWHID** for
68+
an exact code snapshot.
69+
- Upload the manuscript to TechRxiv; it mints its own preprint DOI and
70+
can later be linked to a journal version.
71+
72+
## Order of operations (summary)
73+
74+
```
75+
fix metadata → bump versions → tag → GitHub Release
76+
→ Zenodo DOI (auto) → Software Heritage save (curl) → README badge
77+
→ cite concept DOI in TechRxiv manuscript → post preprint
78+
```

0 commit comments

Comments
 (0)