Every third-party work this repository redistributes — ships bytes of, or ships a derivation of — together with the licence or terms those bytes travel under, and the mark's type provenance.
This is a disclosure document, not a grant. commitwork's own terms are in LICENSING.md; nothing here changes them, and nothing in them changes the terms below. Where a work's terms conflict with commitwork's, the work's terms govern that work.
Redistribution, not use. A scanner commitwork invokes (TruffleHog, Prowler, Semgrep, CodeQL,
GuardDog, dep-scan, joern, nuclei…) is not listed: the fleet runs those tools, it does not ship
them. manifests/security-baseline.json names them and the install catalog fetches them; none of
their bytes are in this tree. A dataset commitwork distils and commits is listed, because the
distillate is in the tree and is derived from the upstream work.
The npm surface is empty. package.json declares no dependencies and no
bundledDependencies; the single devDependencies entry is renovate, which is a development
tool and is not vendored. package-lock.json pins that tool's transitive tree but no
node_modules content is tracked. Zero runtime dependencies is a house invariant, and it holds
here: nothing in this document arrived through a package manager at install time.
The list is drawn from the tracked set (git ls-files), not the working tree. The searches, so a
reader can repeat them and so the gaps are legible:
- Licence: SIL Open Font License 1.1. The full text ships at
admin/static/fonts/LICENSE-IBM-Plex.txt(93 lines), beside the fonts, as the OFL requires. - Copyright: © 2017 IBM Corp. with Reserved Font Name "Plex".
- Upstream:
@ibm/plex-sans1.1.0 and@ibm/plex-mono2.5.0 from registry.npmjs.org. The tarball digests and the re-derivation command are recorded inadmin/static/fonts/SOURCE.txt(verified 2026-08-27). Those packages are the source, not a dependency: nothing installs them. - Modification: none. The bytes are upstream, copied unaltered — which matters, because the OFL forbids using the reserved name "Plex" on a modified version.
- Where the bytes are: eight
.woff2faces inadmin/static/fonts/(Sans 400, 400 italic, 500, 600, 700; Mono 400, 600, 700 — the Latin1 subset only, 188 KB of the 7.7 MB upstream ships), served from the panel's own origin; and base64-inlined into generated CSS bylib/house-css.mjs, which is how they reach the self-contained HTML artifacts. - Not embedded in any other tracked file, as of 2026-10-07, over the tracked set.
Condition met. An inlined face is a distributed copy, and the OFL requires the copyright notice and licence to accompany the font software "whether distributed in the original form or modified".
houseFonts('inline')inlib/house-css.mjsemitsPLEX_NOTICE, a CSS comment carrying the IBM copyright line and the licence's name and version, above the faces it inlines, and every generator that inlines the faces goes through it, so each inlined copy carries it once (grep -c 'SIL Open Font License'returns 1).lib/test/house-css.test.mjsholds the notice to the first line ofLICENSE-IBM-Plex.txt.
The authoritative list is the ROSTER in bin/vendor-verify.mjs,
which checks each blob against its npm-published bytes with the publisher as the anchor. It holds
two entries.
That the list is complete is a separate claim, and the verifier cannot make it — it walks the
paths it was handed and never reads the directory. bin/test/vendor-roster-coverage.test.mjs makes
it instead: it enumerates every regular file under sitemap/vendor/ from the filesystem,
recursively and with no extension filter, and fails on any file the ROSTER does not name or that
this section does not disclose. Licence notices are the one named exception — they must be
disclosed here but must not be rostered, because the roster's contract is byte-identity with a
named entry inside a named tarball. A third blob added to that directory fails a test rather than
going unverified and undisclosed.
- Licence: MIT.
sitemap/vendor/three.min.jscarries its own header:@license / Copyright 2010-2022 Three.js Authors / SPDX-License-Identifier: MIT. - Copyright: Three.js Authors, 2010-2022.
- Upstream: npm
three0.147.0, entrypackage/build/three.min.js. - Where:
sitemap/vendor/three.min.js(594 KB), used by the sitemap's exterior-view renderer.
- Licence: MIT, by origin — the same
three0.147.0 tarball, entrypackage/examples/js/controls/OrbitControls.js(the legacy UMD build, not theexamples/jsm/ES module). - Where:
sitemap/vendor/OrbitControls.js(26 KB).
Condition met.
OrbitControls.jscarries no licence header of its own: the file begins at( function () {. A header cannot be added, becausebin/vendor-verify.mjsbyte-compares the file against the published upstream and would reportmismatch. The MIT notice travels beside it instead:sitemap/vendor/LICENSE-three.txtis thepackage/LICENSEof the samethree0.147.0 tarball (sha25603b50c0c…330988), copied unaltered. The pages load both files fromvendor/with<script src>, so neither is inlined anywhere the licence does not reach.
Each of these is a distillate: commitwork fetches the upstream corpus, reduces it to the fields it needs, and commits the reduction. The upstream work is therefore redistributed in derived form. None of these files carries a licence statement in its own bytes except where noted, so the terms below are the upstream publisher's, recorded here rather than measured in-tree.
| Work | In the tree | Upstream source | Terms |
|---|---|---|---|
| GitHub Advisory Database | monitor/data/advisory-cvss.json, "source": "github-advisory-database", built on your machine by bin/advisory-index.mjs and not included in a release: advisories reduced to severity label, CWE ids, CVSS vector and score |
api.github.com advisory API, via bin/advisory-index.mjs |
CC-BY-4.0. Attribution to GitHub, Inc. required. This document is the attribution. |
| NVD (NIST) | CVSS values filled into the same file by --fill-nvd for advisories GitHub scored |
services.nvd.nist.gov/rest/json/cves/2.0 |
US Government work, public domain. NIST asks that NVD be credited and does not claim copyright. |
| MITRE CWE | monitor/data/cwe-graph.json — 231 KB, "source": "cwe.mitre.org", view 1000, names and ChildOf edges |
cwe.mitre.org/data/xml/cwec_latest.xml.zip, via bin/cwe-graph.mjs |
CWE Terms of Use; attribution to MITRE required. |
| MITRE CWE (catalogue) | cra/cwe-catalogue.json — 141 KB, weakness ids and names for CSAF cwes[] entries |
same | Same. This file states its own terms in a $comment: "CWE used under the MITRE CWE Terms of Use; attribution required". |
| MITRE CAPEC | monitor/data/capec-graph.json — 126 KB, "source": "capec.mitre.org", attack patterns with their CWE mappings |
capec.mitre.org/data/xml/capec_latest.xml, via bin/capec-graph.mjs |
CAPEC Terms of Use; attribution to MITRE required. |
| MITRE ATT&CK | monitor/data/attack-graph.json — 95 KB, "source": "mitre-attack/attack-stix-data", enterprise techniques, tactics and sub-technique hierarchy |
raw.githubusercontent.com/mitre-attack/attack-stix-data, via bin/attack-graph.mjs |
ATT&CK Terms of Use; attribution to MITRE required. The STIX data repository is published under Apache-2.0; the ATT&CK content itself is under MITRE's terms. |
| FIRST.org EPSS | monitor/private/epss-detail.json — exploit-prediction probability and percentile per CVE; an operator-local store, so no copy ships |
api.first.org/data/v1/epss, fetched by monitor/rollup.mjs |
Published by FIRST.org for public use; attribution to FIRST requested. |
MITRE's terms for CWE, CAPEC and ATT&CK are a terms-of-use grant with an attribution condition, not an SPDX licence — they cannot be reduced to an identifier, and listing one here would be a more precise-looking claim than the source supports.
CISA KEV is fetched into monitor/data/kev.json by the same rollup. That file is not tracked,
so it is not redistributed by this repository; KEV is a US Government work in the public domain in
any case. It is named here so its absence from the table above reads as measured rather than missed.
schema/upstream/ holds four third-party JSON Schema documents, copied verbatim.
schema/LICENSE already excludes this directory by hand — "schema/upstream/
holds third-party schemas under their own authors' licences; nothing in this file changes those
terms" — so commitwork's own Apache-2.0 grant over schema/ does not extend to them.
Gap.
schema/upstream/has no per-file provenance record — no retrieval date, no upstream URL beyond each schema's$id, no digest. Both other vendored surfaces in this repository have one (admin/static/fonts/SOURCE.txtand theROSTERinbin/vendor-verify.mjs), and this directory is the one that does not. The$idfields give the canonical URLs, which is why the works are identifiable at all; what is missing is which revision was taken, and when.
The logo is original work: a disc, a ring, and a key of two nodes joined by a line, on a
32-unit square. Its geometry is drawn once in lib/brand-tokens.mjs
(SEAL_SVG), every variant is that geometry recoloured, and it derives from no third-party work.
design/brand/README.md is its reference.
The wordmark — "commitwork" in the lockup — is live text set in IBM Plex Sans 700, never an image. Its type provenance is therefore entry 1 above: OFL-1.1, IBM Corp. No glyph outlines are embedded for it.
Every tab icon is the default mark. The panel and the sitemap serve it as files; the docsite
shell and the public origin's pages carry it as a data URI (MARK_ICON).
lib/test/brand-marks.test.mjs holds each copy to the mark.
The served icons were checked by rendering them, not by reading their filenames — the question is what a user receives, and a filename cannot answer it:
admin/cw-favicon.svgandsitemap/cw-favicon.svg— byte-identical (sha256785b5237…), the default mark, original geometry.admin/cw-favicon-32.pngandsitemap/cw-favicon-32.png— byte-identical (1df4462a…); rendered, and they show the default mark: white ground, black ring, gold key.admin/favicon.icoandsitemap/favicon.ico— byte-identical (63554c63…), three frames at 16, 32 and 48 px; the 48 px frame was extracted and rendered, and it shows the default mark.
No served icon contains third-party type.
Stated as unknowns, in their own section, because an unmeasured result is not a pass and is not a finding either.
- CSAF 2.0 / 2.1 and OpenVEX exact terms. Neither file carries a licence statement, and neither the upstream repositories nor the OASIS IPR declarations were fetched for this document — the measurement was the tree, not the network. The terms in the table are the publishers' generally stated ones, recorded as such and not verified against a retrieved source.
- Which revision of each upstream schema. See the gap in section 4. The
$idfields pin the schema version; nothing pins the retrieval. - Whether the GHSA distillate is a "substantial" reuse for CC-BY-4.0 attribution-format purposes. 34,666 advisories reduced to four fields each is plainly substantial in volume; whether the licence's full attribution block is required rather than the credit given here is a legal reading, not a measurement.
- Completeness of
schema/upstream/andmonitor/data/.sitemap/vendor/is gated bybin/test/vendor-roster-coverage.test.mjs(section 2). The other two directories in Maintaining this document are covered by a one-off tree walk and nothing else.
Section 2 is a live invariant: bin/test/vendor-roster-coverage.test.mjs fails when a file appears under sitemap/vendor/ that
the ROSTER does not name or that section 2 does not disclose. Every other section is a
point-in-time measurement and drifts the moment a corpus, a schema or a font face is added, with nothing
failing when it does. Re-run the searches in How this list was produced before relying on those.
The three places a new entry will come from: sitemap/vendor/ (add to the ROSTER first, then
here), schema/upstream/, and monitor/data/ (add the generator's upstream URL to the table in section 3).
