Unify the diffusion LAW, not just the secrecy math, across domains
In an agent sim with fog-of-war, we had secrecy math (leak rate, decay, espionage) already shared in one module, but THREE separate belief-diffusion implementations (politics, tech, prices) each re-reading secrecy from a different place and re-gating spread themselves. Adding a per-good trade_secrecy to make black markets opaque was a symptom: a price is just information, so price-diffusion should have been secrecy-gated by the ONE generic info.diffuse already used for other topics. The clean design is: secrecy is a property of information (default 0=public); one secrecy-gated diffuse over one belief store; a secrecy_of(topic,key) resolver dispatches to the domain-specific SOURCE (contraband good vs guarded entity vs obvious method). Black market, trade secret, and fog-of-war then collapse to the same law over different topics.