Integrity
For a drag-and-drop check in the browser, use the verify page. Viewer banners come from the published k2f/public/contracts/banners.json.
SIGNEDUNSIGNEDSIGNED_BUT_BROKENBROKEN_INTEGRITYUNLOCKED
Viewer banners
Viewers must display an integrity banner derived from IntegrityStatus:
| Banner | When |
|---|
SIGNED | Valid signature and hash chain |
UNSIGNED | Valid, unsigned |
SIGNED_BUT_BROKEN | Signature file invalid or tampered |
BROKEN_INTEGRITY | Content, appearance, engine, or font failure |
UNLOCKED | Package not compiled |
BROKEN_INTEGRITY and SIGNED_BUT_BROKEN must not be treated as signed.
Integrity verification
k2f verify and inspect_package return status codes:
| Code | Meaning |
|---|
VALID | Lock matches semantic content, theme, fonts, and engine |
UNSIGNED | Valid hash chain, no signature file |
SIGNED | Valid hash chain and valid Ed25519 signature |
SIGNED_BUT_BROKEN | Signature present but hash or crypto check failed |
UNLOCKED | No document.K2F.lock |
CONTENT_CHANGED | Semantic tree changed since lock |
APPEARANCE_CHANGED | Theme, fonts, or page config changed since lock |
ENGINE_MISMATCH | engine_version or engine_commit_sha differs from reader |
FONT_MISSING | Required embedded fonts absent |
Additional package errors: SCHEMA_INVALID, NODE_ID, UNEXPECTED_PATH, UNKNOWN_PAINT_OP, PDF_IS_NOT_A_SOURCE.
Verify codes
From k2f/public/contracts/verify-codes.json.
VALIDUNLOCKEDUNSIGNEDSIGNEDSIGNED_BUT_BROKENCONTENT_CHANGEDAPPEARANCE_CHANGEDENGINE_MISMATCHFONT_MISSINGSCHEMA_INVALIDNODE_IDUNEXPECTED_PATHUNKNOWN_PAINT_OPPDF_IS_NOT_A_SOURCE