What we have found in the graph that only the platform team can resolve, and
what we need to know from them before a city can rely on this.
⚠️ Every item here is numbered and public on purpose. The people who can
answer these are not on this site's roster and are not going to sign in to
anything. A number and a permanent URL mean an item can be cited in an email, on
a slide, or across a table at Google NY — which a bullet in a briefing cannot.
The numbers never change, and a retired item keeps its number and leaves a gap.
Structural findings
Three properties of the graph that a client cannot work around from outside, in
the order we hit them.
170 of the 689 base indicators in the SDG goal framework carry no name in any
source we hold — they return neither metadata nor observations. Is that an
ingest gap, a licensing restriction, or a deliberate placeholder?
Why asked: we match against the 519 named indicators as a result, and a
reader who counts 689 in the graph and 519 in our crosswalk deserves to know
which of the two numbers is the anomaly. It also decides whether the 170 are
worth waiting for or worth routing around permanently.
Context: the undatacommons-nyc repository ↗
The Percent unit covers both bounded proportions — where 0–100 is the range
and a value outside it is an error — and signed rates, where a negative value is
ordinary. Can the two be told apart from the metadata?
Why asked: a quality check that reads Percent as a bounded proportion
flags every growth rate in the graph. Ours did: 41,350 findings, 5.4% of all
data, before we understood that an indicator is its own control group. Any other
client writing the obvious check will produce the same wrong answer.
->relevantVariable does not appear to be transitive across the topic
hierarchies. Walking from the seventeen SDG goal trees yields
689 base indicators across
6,025 variables; walking from
undata/topic/Root yields 1,661
across 65,418 . All seventeen goal
trees are direct children of Root, so the second should be a strict superset of
the first — and it is not. Six indicators are reachable from the goal trees and
not from Root, and twelve undata/sdg/ indicators are reachable from Root and
not from the goal trees.
Why asked: no single entry point enumerates the graph completely, so a
client that picks one — as we did, for principled reasons — gets a silently
incomplete corpus and no way to detect it. Neither walk reported a fetch error,
and the goal-tree walk is exactly reproducible, so this is not noise.
What we need to know
These decide what we can promise a city, and none of them is answerable from
outside the platform.
Is city-level ingestion on the roadmap?
Why asked: everything this project does is a workaround for the graph being
national. If city-level series are coming, the crosswalk is a bridge; if they
are not, it is the product.
Is there a sanctioned path for a city to contribute a series?
Why asked: NYC already publishes the underlying indicators continuously. If
there is a route in, the Voluntary Local Review stops being a PDF written every
few years and becomes a feed. If there is not, that is the thing to ask for.
Are there published rate limits on the API?
Why asked: our probes walk the whole graph, and we would rather find the
limit in your documentation than in production. It also decides whether a live
agent can query at request time or has to work from a cache.
Which host does the public deployment answer on?
Why asked: as of 16 Sep no public hostname resolved and we were still
pointed at the deployment we have always used. Every DCID we have hardcoded is
resolved against that host, so if the public one differs we need to re-run the
launch diff against it rather than assume it matches.