Problem
extract_context_metadata and extract_provenance in server/src/store.rs only match Value::Integer msgpack keys. CLIENT_SPEC.md §3.1 mandates that implementations "MUST also accept digit-strings" as keys, and the projection layer already handles this via key_to_tag().
Go's vmihailenco/msgpack encoder produces string keys by default, so any Go client (e.g., Kilroy) sending context_metadata in the first turn gets silently dropped — the provenance endpoint returns null.
Impact
The Provenance panel in the CXDB UI shows nothing for contexts written by Go clients, even when they correctly populate context_metadata at tag 30.
Fix
Add a key_to_tag helper to store.rs (same logic as projection/mod.rs) and replace the three Value::Integer match sites in extract_context_metadata and extract_provenance.
Problem
extract_context_metadataandextract_provenanceinserver/src/store.rsonly matchValue::Integermsgpack keys. CLIENT_SPEC.md §3.1 mandates that implementations "MUST also accept digit-strings" as keys, and the projection layer already handles this viakey_to_tag().Go's
vmihailenco/msgpackencoder produces string keys by default, so any Go client (e.g., Kilroy) sendingcontext_metadatain the first turn gets silently dropped — the provenance endpoint returns null.Impact
The Provenance panel in the CXDB UI shows nothing for contexts written by Go clients, even when they correctly populate context_metadata at tag 30.
Fix
Add a
key_to_taghelper tostore.rs(same logic asprojection/mod.rs) and replace the threeValue::Integermatch sites inextract_context_metadataandextract_provenance.