Journal · 03 November 2025

Property dictionaries as contracts, not wiki pages

Colleagues comparing notes on a tablet

A wiki page titled “Tracking plan” is a hope. A contract is a list of properties with types, allowed values, null rules, and a person who will be bothered when they drift. App analytics quality lives in that difference, not in the beauty of a dashboard theme.

We ask atelier students to put the dictionary in the same repository as the client code. QA can then fail a build if plan_tier arrives as a sentence. Engineers may grumble; they grumble less than they do when finance asks, six months later, why “premium” and “Premium ” are different planets.

Missing is not null

A property that was never sent is not the same as a property sent with a deliberate empty. The first is an implementation gap. The second is a claim about the world. If your dictionary cannot tell them apart, every funnel that filters on “has plan” is improvising.

Owners, not committees

A committee can approve a name. An owner answers the Slack ping when a new screen needs a value. We prefer a named human plus a deputy, written next to the event, over a shared inbox that performs enthusiasm and no decisions.

Week two of Event Taxonomy Atelier is almost entirely this work. It is not glamorous. It is the reason later weeks can talk about identity without drowning in free-text debris. If your organisation will not let a build fail on a tracking contract, you are asking the warehouse to be a museum of accidents.