context Key For
The MERGE key a report's scope contributes: global, or ctx: followed by the context id.
The prefix is what makes the encoding injective. ContextId accepts any non-blank string, so encoding scope as the bare context id with a sentinel standing in for global lets a caller name a context after the sentinel. A global report and that context's report would then share a MERGE key, land on one node, and each save would rewrite the other's scope, surfacing a context-scoped finding as whole-graph drift or the reverse. With the prefix the two spaces are disjoint: global carries no ctx: prefix, so no context id can produce it, and ContextId("global") maps to ctx:global.