{"ok":true,"genesis":"0000000000000000000000000000000000000000000000000000000000000000","priceTableVersion":"2026-09-09.1","publishedFigures":274,"chains":4,"tables":[{"table":"corrections","head":"cb39f70da23bd099e9f8244fb2f320c858fa6b0a83a9b8cfed40b774cdf489b9","rows":1,"updatedAt":"2026-09-10T00:00:00","updatedOn":"2026-09-10","covers":["received_at","price_id","verdict","believed_usd","table_version"],"inCsv":{"file":"/api/export/corrections.csv","check":"recompute","withheld":[]},"unchainedLegacyRows":0},{"table":"gap_reports","head":"0000000000000000000000000000000000000000000000000000000000000000","rows":0,"updatedAt":"2026-09-09T00:00:00","updatedOn":"2026-09-09","covers":["received_at","counts","ranking","table_version"],"inCsv":{"file":"/api/export/gap.csv","check":"links","withheld":["received_at (published as the day only, received_on)"]},"unchainedLegacyRows":0},{"table":"interviews","head":"d1c53e86fc89e51f1ff18d33e030d84c6894a6bf06fa15872386f45e28e0b39c","rows":1,"updatedAt":"2026-09-14T00:00:00","updatedOn":"2026-09-14","covers":["received_at","consent","channel","follow_up"],"inCsv":null,"unchainedLegacyRows":0},{"table":"survey_responses","head":"372156ee74ad91bf7c0f66e5e277df027f587a5fe6a459c1cf9e7ccd05761f44","rows":4,"updatedAt":"2026-09-15T00:00:00","updatedOn":"2026-09-15","covers":["received_at","channel","ranking","unasked","lead","decide","clinicians","context (age, sex, insurance, region, state, stage, respondent, onset_age, diagnosis_age)","survey_version"],"inCsv":{"file":"/api/export/survey.csv","check":"links","withheld":["received_at (published as the day only, received_on)","context (every self-description: published only as counts at /api/survey, with any value under 11 answers not shown)"]},"unchainedLegacyRows":0}],"method":{"formula":"row_hash = SHA-256( prev_hash + canonical_json(covered fields) ), lower-case hex; the first row of a table uses prev_hash = 64 zeros.","canonicalJson":"JSON with object keys sorted by code point at every level, no whitespace, undefined written as null.","covers":"Exactly the fields listed under covers[] for each table, as they were written. For corrections every one of them is in the CSV. For survey answers and gap reports the CSV leaves some out on purpose (inCsv.withheld): the time of day, and on the survey every self-description, because one row carrying all of them could point at a person. An optional note, an encrypted sentence and every interview answer were never in the chain: they are never published.","proves":"No row was edited, deleted or reordered after it was written without the head changing.","doesNotProve":"That the people who wrote the rows are distinct people, or that every row received was published. Those are different claims, and this endpoint does not make them. On the survey and gap files a stranger checks the links between rows, not the content of each row: the hash was taken over fields those files no longer publish.","recompute":"corrections.csv: walk it top to bottom and recompute each row_hash from the row above. survey.csv and gap.csv: check that the first prev_hash is 64 zeros, that each prev_hash equals the row_hash above it, and that the last row_hash and the row count match the head published here. We walk every chain over the stored rows ourselves at ?verify=1."},"projections":{"corrections":["received_at","price_id","verdict","believed_usd","table_version"],"gap_reports":["received_at","counts","ranking","table_version"],"survey_responses":["received_at","channel","ranking","unasked","lead","decide","clinicians","context (age, sex, insurance, region, state, stage, respondent, onset_age, diagnosis_age)","survey_version"],"interviews":["received_at","consent","channel","follow_up"]},"generatedAt":"2026-09-30T23:01:10.997Z"}