|
| 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