Archivo de evidencias de una certificación de Safe Creative · Evidence archive of a Safe Creative certification

ES — Cómo verificarlo
1. events.jsonl: una línea por evento del rango, en orden de secuencia, sin huecos. events.csv tiene lo mismo en CSV
   (RFC 4180, UTF-8), con el sello en las columnas timestamp_type, timestamp_ref y sealed_at.
2. Encadenado: chain_hash = SHA-256(chain_hash anterior + "|" + sequence + "|" + hash), en hexadecimal
   minúsculas. El anterior al primer evento es chain/anchor.json (64 ceros si el rango empieza en 1).
3. Contenido (modalidad contenido): hash = SHA-256 del JSON canónico (payloads/*.json) o del fichero (files/...),
   en las partes content-part-NNN.zip cuyo SHA-256 figura en manifest.json y en los informes.
4. Sellos: cada seals/<tramo>.json lista las líneas canónicas de sus hojas; su SHA-256 (líneas unidas por \n)
   es la huella del tramo, sellada por el token RFC 3161 seals/<tramo>.tsr. La hoja "chain|<canal>|live|<desde>|<hasta>|<huella>"
   prueba todos los eventos hasta <hasta>, porque su huella encadenada los incluye; chain/extension.jsonl enlaza el
   rango con esa hoja cuando termina después.
5. config/v<N>.json: versiones de configuración del rango; su huella está en una hoja "config|..." de un tramo sellado.
6. El SHA-256 de este ZIP figura en los informes PDF firmados (español e inglés): eso los vincula.

EN — How to verify it
1. events.jsonl: one line per event in the range, in sequence order, with no gaps. events.csv holds the same in CSV
   (RFC 4180, UTF-8), with the timestamp in the columns timestamp_type, timestamp_ref and sealed_at.
2. Chaining: chain_hash = SHA-256(previous chain_hash + "|" + sequence + "|" + hash), lowercase hex. The one before
   the first event is chain/anchor.json (64 zeros if the range starts at 1).
3. Content (content modality): hash = SHA-256 of the canonical JSON (payloads/*.json) or of the file (files/...), in the
   parts content-part-NNN.zip whose SHA-256 is listed in manifest.json and in the reports.
4. Seals: each seals/<segment>.json lists its canonical leaf lines; their SHA-256 (lines joined by \n) is the segment
   digest, sealed by the RFC 3161 token seals/<segment>.tsr. The leaf "chain|<channel>|live|<from>|<to>|<digest>" proves
   every event up to <to>, because its chained digest includes them; chain/extension.jsonl links the range to that
   leaf when it ends later.
5. config/v<N>.json: configuration versions in the range; their digest is in a "config|..." leaf of a sealed segment.
6. The SHA-256 of this ZIP is stated in the signed PDF reports (Spanish and English): that binds them together.
