Skip to content

feat: re-wire signed-section signing for the Hugo Blox build#2

Merged
jt55401 merged 1 commit into
mainfrom
feat/wire-signed-section-signing
May 13, 2026
Merged

feat: re-wire signed-section signing for the Hugo Blox build#2
jt55401 merged 1 commit into
mainfrom
feat/wire-signed-section-signing

Conversation

@jt55401
Copy link
Copy Markdown
Contributor

@jt55401 jt55401 commented May 13, 2026

Summary

Completes the htmltrust-hugo + htmltrust-sign integration on the new Hugo Blox build. The opt-in front-matter and the partial-based <signed-section> wrap were already landed in 3868951; this PR closes the loop:

  • CI pipeline now signs pages: verify placeholders → install htmltrust-sign → sign → verify four spec-required attributes (content-hash, signature, keyid, algorithm)
  • Action versions bumped to current majors so the Node 20 deprecation warning goes away
  • FAQ template override added — Blox routes /faq/ to a specialized template (layouts/faq/list.html) that the previous override pair didn't cover
  • Mermaid fix in /architecture/ — the sequence-diagram messages used literal <signed-section> strings which rendered as nested HTML elements; the signer was finding 3 sections on that page. Rephrased to plain text.

Signed pages (6)

  • /spec/
  • /architecture/
  • /implementation/
  • /use-cases/
  • /faq/
  • /blog/paper-published/

Test plan

  • Local: hugo --minify emits 6 pages with data-htmltrust-placeholder markers
  • Local: htmltrust-sign rewrites them to 6 sections with all four attributes (no placeholder markers remaining)
  • CI green on this PR
  • After merge: confirm Cloudflare deploys, view-source on a content page shows real signature

🤖 Generated with Claude Code

Adapts the existing htmltrust-hugo + htmltrust-sign pipeline to the
new Hugo Blox layout system. The opt-in front-matter (htmltrust.sign +
htmltrust.claims) and the partial-based <signed-section> wrap were
already landed in 3868951; this change completes the integration.

CI pipeline:
  - actions upgraded to current majors so the Node 20 deprecation
    warning goes away (checkout@v6, setup-go@v6, setup-node@v6,
    upload-artifact@v7, download-artifact@v8, wrangler-action@v4)
  - Hugo build emits <signed-section> placeholders carrying
    data-htmltrust-placeholder markers on every page that opts in
  - placeholder count is verified (expect ≥6: spec, architecture,
    implementation, use-cases, faq, blog/paper-published)
  - htmltrust-sign (installed via `go install`) rewrites the four
    required attributes (content-hash, signature, keyid, algorithm)
    using the full Unicode canonicalization spec and the Ed25519
    key from HTMLTRUST_SIGNING_KEY
  - final verification asserts no placeholder markers remain and
    every signed-section has the four spec-required attributes

Other:
  - layouts/faq/list.html: override Blox's specialized FAQ template
    so /faq/ also goes through the signing partial (the top-level
    list.html and single.html overrides already cover /spec/,
    /architecture/, /implementation/, /use-cases/, blog posts)
  - params.yaml: use did:web:jason-grey.com as keyid (DID document
    is hosted at jason-grey.com) while keeping www.htmltrust.org
    as the binding domain
  - content/architecture/_index.md: rephrase the literal
    <signed-section> strings inside mermaid sequence-diagram
    messages so they render as text, not as nested HTML elements
    that the signer would otherwise try to sign

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jt55401 jt55401 merged commit f70c535 into main May 13, 2026
2 checks passed
@jt55401 jt55401 deleted the feat/wire-signed-section-signing branch May 13, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant