Our @context stays JSON-LD 1.0, and a 500 no longer takes a host out

The proof term added with integrity proofs had a @graph container, which only JSON-LD 1.1 knows: Smithereen's reader
refused every document carrying our context with a 500. Those 500s, retried, then put Smithereen's host in quarantine
for an hour, and every delivery to it waited. Proofs are canonicalised as JSON (JCS), so the term loses nothing as a
plain id; a test keeps every term within 1.0. Only an unreachable host, a timeout or a gateway's 502, 503 or 504 now
counts against a host: a 500 is the server failing on that one activity, retried on its own.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
thepraandClaude Opus 5.5 committed 2026-10-06 13:02:02 +02:00
1 parent b66f0acf4e
commit b478049303
5 files changed
+63 -4

No files matched your search

@@ -81,13 +81,14 @@ namespace PrivaPub.Federation.Rendering
["wallPostVisibility"] = "sm:wallPostVisibility",
["allowedTo"] = "sm:allowedTo",
// FEP-521a keys and FEP-8b32 proofs, defined here rather than by the data-integrity and multikey contexts,
// which strict JSON-LD readers would have to fetch
// which strict JSON-LD readers would have to fetch. JSON-LD 1.0 only: Smithereen's reader refuses the whole
// document over a 1.1 term (proof's @graph container there; our proofs are canonicalised as JSON, by JCS)
["assertionMethod"] = new JsonObject { ["@id"] = "sec:assertionMethod", ["@type"] = "@id", ["@container"] = "@set" },
["Multikey"] = "sec:Multikey",
["controller"] = new JsonObject { ["@id"] = "sec:controller", ["@type"] = "@id" },
["publicKeyMultibase"] = new JsonObject { ["@id"] = "sec:publicKeyMultibase", ["@type"] = "sec:multibase" },
["DataIntegrityProof"] = "sec:DataIntegrityProof",
["proof"] = new JsonObject { ["@id"] = "sec:proof", ["@type"] = "@id", ["@container"] = "@graph" },
["proof"] = new JsonObject { ["@id"] = "sec:proof", ["@type"] = "@id" },
["cryptosuite"] = new JsonObject { ["@id"] = "sec:cryptosuite", ["@type"] = "sec:cryptosuiteString" },
["proofValue"] = new JsonObject { ["@id"] = "sec:proofValue", ["@type"] = "sec:multibase" },
["proofPurpose"] = new JsonObject { ["@id"] = "sec:proofPurpose", ["@type"] = "@vocab" },