Summary
Set up the theme signing pipeline per doc 13 §7.3. Themes ship as npm tarball (or zipped equivalent) plus theme.json manifest plus signature.sig (cosign bundle). Trusted theme-publisher identities live in theme.signing.trusted_keys. Unsigned themes are blocked by default; admin can override with an operator-level flag (--allow-unsigned), which triggers a prominent banner and an audit event on activation. The signature covers the package tarball checksum so file-level tamper is detected. Themes have stronger requirements than plugins because they run unsandboxed in the Next.js process (per §14.2).
Design reference
- docs/13-security-baseline.md §7.3 (themes signing), §14.2 (themes not sandboxed), §7.9 (tradeoffs)
Acceptance criteria
Dependencies
#105
Complexity
L
Summary
Set up the theme signing pipeline per doc 13 §7.3. Themes ship as npm tarball (or zipped equivalent) plus
theme.jsonmanifest plussignature.sig(cosign bundle). Trusted theme-publisher identities live intheme.signing.trusted_keys. Unsigned themes are blocked by default; admin can override with an operator-level flag (--allow-unsigned), which triggers a prominent banner and an audit event on activation. The signature covers the package tarball checksum so file-level tamper is detected. Themes have stronger requirements than plugins because they run unsandboxed in the Next.js process (per §14.2).Design reference
Acceptance criteria
theme.json+signature.sigcosign bundlecosign verifyagainsttheme.signing.trusted_keys--allow-unsignedis passed at install timeDependencies
#105
Complexity
L