{"dataset_version":"2026-08","passed":true,"failures":[],"warnings":[],"checks":[{"name":"transactions present","ok":true,"detail":"985,666 transactions (expected >900,000)"},{"name":"geography closes","ok":true,"detail":"districts hold 24,456 of the 24,467 in regions"},{"name":"every median carries its sample and window","ok":true,"detail":"all published medians carry both"},{"name":"no figure without sales","ok":true,"detail":"none"},{"name":"low-sample medians are flagged","ok":true,"detail":"19 area(s) below 30 sales, every one marked unpublishable"},{"name":"turnover is published","ok":true,"detail":"190 areas carry a turnover rate (expected >100)"},{"name":"turnover is plausible","ok":true,"detail":"190 areas carry a turnover rate, max 6.4%/yr"},{"name":"outlier fence is not editorialising","ok":true,"detail":"0% of priced rows withheld (0 of 985666)"},{"name":"the taxonomy has its three levels, whole","ok":true,"detail":"5 regions, 55 districts, 332 neighbourhoods: every Master Plan entity has a page"},{"name":"geographic ids are unique","ok":true,"detail":"392 areas, no duplicate id or slug within a level"},{"name":"breadcrumbs follow the spine","ok":true,"detail":"392 payloads; every chain is a prefix of region > area > subzone"},{"name":"no orphaned geographic links","ok":true,"detail":"every ancestor, child and facet link resolves"},{"name":"no published page is unreachable","ok":true,"detail":"309 pages are linked from a submarket table or the streets hub"},{"name":"strict containment closes both ways","ok":true,"detail":"region>area and area>neighbourhood are exact inverses"},{"name":"facets never appear as ancestors","ok":true,"detail":"no breadcrumb places a page under a market segment or a postal district"},{"name":"every fallback parent publishes a median","ok":true,"detail":"no page quotes a parent that has no figure"},{"name":"every non-leaf publisher carries a reconciliation","ok":true,"detail":"36 region and district pages each carry one"},{"name":"spine totals reconcile exactly","ok":true,"detail":"36 of 36 parents reconcile to the transaction; 44 transaction(s) reach no child and are counted as such"},{"name":"every transaction at the finest grain carries an address","ok":true,"detail":"154 neighbourhoods, every counted resale on a named block"},{"name":"index region figures match the region pages","ok":true,"detail":"5 regions quote one median each"},{"name":"coverage is published for every level","ok":true,"detail":"11 rows over 4 levels and 2 scopes"},{"name":"every level accounts for every transaction","ok":true,"detail":"11 level-scopes close exactly; residual published, not absorbed"},{"name":"every level measures the same register","ok":true,"detail":"985,666 transactions, all-time, at every level"},{"name":"the private register measures one denominator","ok":true,"detail":"132,768 caveats at every private level"},{"name":"levels are mutually exclusive","ok":true,"detail":"3 levels: one entity per transaction, no double counting"},{"name":"URA subzone names are globally unique","ok":true,"detail":"332 polygons, 332 distinct names, none shared across planning areas"},{"name":"ci contains its median","ok":true,"detail":"every published interval brackets its own median"},{"name":"ci bounds are ordered","ok":true,"detail":"no reversed interval"},{"name":"the private quantile ladder is ordered and its tails clear their floor","ok":true,"detail":"every private ladder ascends, no tail below 50 caveats"},{"name":"the private histogram counts the median's own sample","ok":true,"detail":"every private histogram sums to its own n and contains its own marks"},{"name":"a private tenure mix fits its headline and counts only leases","ok":true,"detail":"every tenure mix sits inside its own headline, freehold carries no lease"},{"name":"every quarter key is a quarter","ok":true,"detail":"all trend points carry an integer year and q in 1-4"},{"name":"sold-price list is the whole window","ok":true,"detail":"every payload ships exactly its own window"},{"name":"a thin hero names its parent","ok":true,"detail":"every hero below 30 carries a parent pointer"},{"name":"a rate rests on rows that carry a rate","ok":true,"detail":"no rate published on fewer than 10 usable rows"},{"name":"no private cut pools sale types","ok":true,"detail":"every private cut names its sale type"},{"name":"private headline reconciles with its cuts","ok":true,"detail":"every headline count equals its own segment row"},{"name":"a launch rate rests on launch sales","ok":true,"detail":"no new-sale rate published on fewer than 10 caveats"},{"name":"only the newest quarter is provisional","ok":true,"detail":"every partial flag is on the final point"},{"name":"mix adjustment agrees with its coverage","ok":true,"detail":"no area withholds a mix figure it had the coverage for"},{"name":"the confidence pill grades a published figure","ok":true,"detail":"every pill rates a published median, on both registers"},{"name":"turnover publishes its own denominator","ok":true,"detail":"every turnover rate ships the stock it was computed on"},{"name":"a yield rests on two full samples","ok":true,"detail":"every published yield clears 30 on both sides in one 12-month window"},{"name":"a rental rate carries its coverage","ok":true,"detail":"every published rental rate states the projects behind it"},{"name":"a private yield rests on two full samples","ok":true,"detail":"every private yield clears 30 lettings and 30 resales in one band"},{"name":"no yield is matched on bedrooms","ok":true,"detail":"yields are matched on area band, the key both registers share"},{"name":"rental quarters are real and only the newest is provisional","ok":true,"detail":"every rental trend point is a whole quarter"},{"name":"the two rental registers stay separate","ok":true,"detail":"each rental block names its own register and window"},{"name":"the MOP cohort fits inside its own stock","ok":true,"detail":"every published cohort is a subset of the stock it comes from"},{"name":"a rental rate names its own quarter","ok":true,"detail":"every published rental rate states the quarter it covers"},{"name":"the private trend flags its newest quarter","ok":true,"detail":"every private trend carries a partial flag on the newest quarter only"},{"name":"the private price history and the private headline are one population","ok":true,"detail":"every private series ends within reach of the figure its page leads with"},{"name":"today's money never restates a past figure downwards","ok":true,"detail":"every real-terms point on all four series sits at or above its cash value"},{"name":"all four quarterly series carry a real-terms restatement","ok":true,"detail":"HDB price, private price, HDB rent and private rent all restate in today's money"},{"name":"lease bands are ordered shortest first","ok":true,"detail":"every lease ladder runs <50 upwards, in the payload and therefore on the chart"},{"name":"the upgrade gap carries both sizes, both windows and figures that reconcile","ok":true,"detail":"every step-up card can be checked against the medians it is built from"},{"name":"the step-up ratio is the page's own two rates divided","ok":true,"detail":"121 areas publish both rates and the card renders on all of them; the 76 carrying the legacy rate_multiple agree with it exactly"},{"name":"every confidence grade is the grade of its own interval","ok":true,"detail":"both registers grade the median and interval they print"},{"name":"every published interval carries its grade, on both registers","ok":true,"detail":"364 intervals across both registers, every one graded"},{"name":"every curated comparison is same-level, canonical, and names two published areas","ok":true,"detail":"772 curated pairs across 3 levels, each within one level"},{"name":"no league table mixes windows","ok":true,"detail":"every table ranks one window, its own register's"},{"name":"every private figure carries sample and window","ok":true,"detail":"private medians all carry n and window_months"},{"name":"no zero coordinates","ok":true,"detail":"no entity ships a null-island coordinate"},{"name":"no rental rate is derived from a banded area","ok":true,"detail":"every published rental rate is URA's own, with its quarter and its project count"},{"name":"no public rental flat enters a MOP cohort","ok":true,"detail":"every cohort sits inside the sold, resaleable stock"},{"name":"the hero equals the table row it comes from","ok":true,"detail":"every hero matches its own flat-type row on price, rate and count"},{"name":"no payload outlives its index","ok":true,"detail":"392 payloads, all present in their level index"},{"name":"URA entity names are stable","ok":true,"detail":"332 URA codes carry the same names as the last build"},{"name":"transaction count drift","ok":true,"detail":"-0.00% vs the last build (985,668 → 985,666)"},{"name":"region count stable","ok":true,"detail":"5 → 5"},{"name":"area count stable","ok":true,"detail":"55 → 55"},{"name":"subzone count stable","ok":true,"detail":"332 → 332"},{"name":"the coverage ratchet still measures what it pins","ok":true,"detail":"11 level-scopes pinned, all still produced"},{"name":"geographic coverage has not fallen","ok":true,"detail":"11 level-scopes at or above the last build"},{"name":"median stability","ok":true,"detail":"no area median moved more than 15%"}],"sources":[{"name":"HDB Resale Flat Prices","publisher":"HDB via Data.gov.sg","licence":"SODL v1.0","grain":"transaction","rows":985666,"coverage":"1990-01 to 2026-08"},{"name":"HDB Property Information","publisher":"HDB via Data.gov.sg","licence":"SODL v1.0","grain":"block","rows":10796,"coverage":"current residential stock"},{"name":"URA Master Plan 2019 boundaries","publisher":"URA via Data.gov.sg","licence":"SODL v1.0","grain":"subzone / planning area / region","rows":332,"coverage":"all of Singapore"},{"name":"List of Postal Districts","publisher":"URA, crediting SingPost","licence":"public reference","grain":"district","rows":28,"coverage":"all of Singapore"},{"name":"Consumer Price Index (All Items)","publisher":"SingStat via Data.gov.sg","licence":"SODL v1.0","grain":"month","rows":null,"coverage":"to 2026-07"},{"name":"Block coordinates","publisher":"OpenStreetMap","licence":"ODbL","grain":"block","rows":null,"coverage":"see the geography section"},{"name":"Private residential transactions (caveats)","publisher":"Urban Redevelopment Authority, Data Service","licence":"URA Data Service terms: derived statistics only, records not redistributed","grain":"caveat","rows":132768,"coverage":"2021-09 to 2026-09"},{"name":"Private residential lease contracts","publisher":"Urban Redevelopment Authority, Data Service","licence":"URA Data Service terms: derived statistics only, records not redistributed","grain":"lease contract","rows":451165,"coverage":"2021-09 to 2026-08"},{"name":"Renting Out of Flats","publisher":"HDB via Data.gov.sg","licence":"SODL v1.0","grain":"approved rental application","rows":209852,"coverage":"2021-01 to 2026-08"}]}