Swarmchasing Report a swarm

SC-Incident v1: incident interchange format

On this page
  1. Status
  2. Rules of the format
  3. Fields
  4. Mapping to other formats
  5. Validating a document
  6. Versioning

Specs index · Schema: schemas/sc-incident-v1.json

This page specifies one JSON document per published incident, so that other groups, incident databases and feeds can read an incident without parsing a notice page. It carries what the public notice carries, as fields, and nothing a notice withholds. The notice it describes follows the notice standard.

Must, must not, should and may in bold carry their RFC 2119 meanings.

Status#

PartStatus
The format and its schemaNormative.
A toolkit export of the documentPlanned. Today the same facts are in the notice front matter, the case file and the STIX export.

Rules of the format#

  • Public profile only. A document must not carry anything the notice withholds (FM-11.4): channel identifiers, credentials, the attack details of a compromised endpoint, personal data, operator logs without consent, or content from a source whose terms forbid redistribution. A document is produced after the notice is public, and is linted as the notice is.
  • Plain hosts, defanged display. Host names are plain, for machines. Anything that shows them to a person defangs them (a[.]b), and record links are never made clickable.
  • The gate travels with the claim. An attribution entry carries its layer, evidence level, label and tag. A developer below the naming gate appears only as named_as: notified. Harness and model-family candidates are never in the document (FM-7.8).
  • Words within their caps. A likelihood word is absent for Unattributed and never stronger than its label allows (FM-7.7); the schema enforces both.
  • Measured grades only. agent_grade appears only with a reference to its held-out measurement (FM-7.10).
  • Append-only updates. updates are in date order, oldest first; the first is published, and a reply names who it is from. A later document for the same id keeps every earlier update (FM-11.6).

Fields#

FieldRequiredMeaningSource in this toolkit
specyesSC-Incident v1.constant
idyesThe notice id, a slug.notice id
titleyesThe notice title.notice title
urlnoThe published notice.site address
statusyesactive, contained or historical (FM-11.3).notice status
retractednoThe central claim was withdrawn.a retraction update
published, updatedyesDates, YYYY-MM-DD.notice published, updated
sectornoThe affected operators' sector, from a fixed list.notice sector
methodyesThe Field Manual version, SC-FM 1.1.the toolkit's method stamp
departuresnoManual sections not followed, with what was done.case notes
rules_versionyesThe rules version the case is pinned to.notice rules_version
toolkitnoThe toolkit version.notice toolkit
affectedyesEach endpoint's host and state; single_source when only submit-anywhere records show it.case [[endpoint]] (state, single_source); notice affected
attributionnoDeveloper and host claims as the notice states them.case [[claim]] and derived claims
tiernoThe strongest cluster tier.the analysis
tacticsnoSC-T tactics, in order of first appearance; T8 and T9 only as findings.the analysis; reviewer findings
scopenoThe scope finding and failed tests (FM-15.4).case notes
agent_gradenoLevel and where its measurement is published.case agent_grade
groupingsnoFleets and swarms, with aliases and interaction kinds.case [[fleet]]
timelinenoSpans, each with its timestamp kind (FM-6.1).the analysis
withheldnoCategories withheld.the notice's Withheld section
recordsnoLinks to public records.the analysis
updatesyesDated updates: published, update, status, correction, reply, retraction.notice [[update]]

The layer of an attribution entry is developer or host, matching the case's claim roles. Grouping ids are a case fleet (fleet-<n>) or a named fleet (SCF-<n>) (FM-5.13); a swarm lists at least one interaction kind (FM-4.10).

Mapping to other formats#

Where each field goes in STIX 2.1, MISP, the OECD reporting framework and the AI Incident Database is the crosswalk in FM-12.4. The STIX export carries more detail for machine use (FM-12.1); this document is the summary a feed or a database reads first.

Validating a document#

python -c "import json, jsonschema; jsonschema.Draft202012Validator(json.load(open('schemas/sc-incident-v1.json')), format_checker=jsonschema.FormatChecker()).validate(json.load(open('incident.json')))"

The schema checks structure, value domains, and the caps that are visible in one document: likelihood words against labels, measured grades, swarms with interaction evidence, replies with a sender. It cannot check the withholding rules; the notice lint does (FM-11.5).

Versioning#

A minor version adds optional fields; a document valid under 1.0 stays valid. A major version may change a field's meaning. A consumer should ignore a document whose spec names a major version it does not know.

Source: docs/specs/incident-v1.md