# Chainpuls Release- und Unveränderlichkeitsregeln

## Präzise Zusage

Eine normale Website und ein Git-Repository können von ihren Administratoren
geändert oder entfernt werden. Chainpuls behauptet deshalb nicht, dass jede
Kopie der Dokumentation technisch unveränderbar ist. Die überprüfbare Zusage
lautet:

- Jede veröffentlichte Release-Datei ist mit SHA-256 im
  `RELEASE-MANIFEST.json` erfasst.
- Der Hash des endgültigen `PUBLICATION.json` wird auf Ethereum Mainnet im
  `ChainpulsEvidenceAnchor` verankert.
- `PUBLICATION.json` enthält die Hashes des Source-Archivs, des Release-Manifests
  und des Prüfprotokolls.
- Nach der Ethereum-Verankerung kann jede Abweichung bytegenau erkannt werden.
- Korrekturen ersetzen keinen alten Stand. Sie erhalten eine neue
  Versionsnummer, ein neues Manifest und einen neuen Ethereum-Anker.

Der Ethereum-Vertrag kann einen bestehenden Release-Hash weder ändern noch
löschen. Eine kompromittierte Website könnte falsche Dateien anzeigen, aber sie
kann keine andere Datei mit demselben SHA-256-Nachweis als den verankerten Stand
ausgeben.

## Drei voneinander getrennte Prüfrouten

1. `npm run release:verify` prüft Manifest, Dateigrößen und SHA-256 mit Node.js.
2. `scripts/verify-release.sh` prüft dieselben Dateien separat mit
   `sha256sum` und OpenSSL.
3. `scripts/verify-opcodes.py` analysiert Runtime-Bytecode und ABI mit Python,
   ohne den Node-Prüfer zu importieren.

Zusätzlich führen die Node-Tests die Contracts in der unabhängigen
EthereumJS-EVM unter dem festgelegten London-Hardfork aus. Der Online-Preflight
muss denselben vollständigen Deployment-Bytecode zusätzlich über zwei
BlockDAG-RPCs mit `eth_estimateGas` erfolgreich simulieren. Das angehängte
Solidity-Metadaten-Commitment bindet den
Runtime-Bytecode an die exakten Solidity-Quellen und Compiler-Einstellungen.

## Veröffentlichungssperre

Die Webseite bleibt im Status `draft`, bis alle folgenden Daten echt und
unabhängig verifiziert sind:

- ausgewählter Chain-1404-Branch und zwei übereinstimmende RPC-Fingerprints,
- BDAG-Vault-Adresse, Deployment-Transaktion und exakter Runtime-Bytecode,
- öffentlich verifizierter Solidity-Quellcode,
- Ethereum-Ankeradresse, Publisher und Runtime-Bytecode,
- endgültige `PUBLICATION.json`, Prüfbericht und Source-Archiv,
- bestätigte Ethereum-Ankertransaktion.

Vorher darf weder eine Burn-Adresse noch eine aktive Burn-Schaltfläche gezeigt
werden.
