A resolvable forecasting question. Immutability contract: editing this record after forecasts exist changes its CID; forecasts reference the question by strongRef (uri+cid), so appviews detect and flag post-forecast edits.
tid
Timestamp-based ID
Properties
background
string
Optional
Optional context for forecasters. Not part of the resolution rule.
maxLength: 30000 bytesmaxGraphemes: 3000 graphemesclosesAt
string
datetime
Required
Last moment forecasts count for scoring. All datetimes are UTC (ISO 8601).
createdAt
string
datetime
Required
An RFC 3339 formatted timestamp.
date
ref
#dateParams
Optional
Required iff questionType is 'date'.
domain
string
Optional
Optional curated top-level subject area (author-selected). Feeds per-domain reputation and filtering. Open set: clients may encounter values they don't recognize and should tolerate them.
politics, geopolitics, economics, finance, crypto, tech, science, health, climate, sports, culturefinePrint
string
Optional
Optional edge cases: source-unavailable fallbacks, rescheduling, tie-breaks, timezone specifics.
maxLength: 30000 bytesmaxGraphemes: 3000 graphemesinspiredBy
string
at-uri
Optional
Optional AT-URI of the post that prompted this question (the 'formalize this take' flow). Weak ref by design: the referenced post may be edited or deleted.
multi
ref
#multiParams
Optional
Required iff questionType is 'multi'.
numeric
ref
#numericParams
Optional
Required iff questionType is 'numeric'.
questionType
string
Required
One of 'binary', 'multi', 'numeric', or 'date'. Clients that don't understand a value should skip the record, not reject it.
binary, multi, numeric, dateresolutionCriteria
string
Required
The precise rule determining the outcome. Must pass the Clairvoyance Test: a reader at resolution time can determine the outcome definitively from this text plus the sources.
maxLength: 30000 bytesmaxGraphemes: 3000 graphemesresolutionSources
array
of
ref
#source
Optional
Authoritative sources for resolution, in priority order. First is primary; the rest are fallbacks.
maxLength: 10 itemsresolver
string
did
Required
DID designated to resolve this question. v1: typically the question creator. Appviews apply their own trust policy to resolutions.
resolvesAt
string
datetime
Required
Expected resolution time. Must be >= closesAt. Informational; actual resolution is a separate record.
tags
array
of
string
Optional
Free-form topic tags for discovery and filtering.
maxLength: 8 itemstext
string
Required
The headline question. Convention: 'Will X happen by DATE per SOURCE?'
maxLength: 3000 bytesmaxGraphemes: 300 graphemesView raw schema
{
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"text",
"resolutionCriteria",
"questionType",
"closesAt",
"resolvesAt",
"resolver",
"createdAt"
],
"properties": {
"date": {
"ref": "#dateParams",
"type": "ref",
"description": "Required iff questionType is 'date'."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
},
"maxLength": 8,
"description": "Free-form topic tags for discovery and filtering."
},
"text": {
"type": "string",
"maxLength": 3000,
"description": "The headline question. Convention: 'Will X happen by DATE per SOURCE?'",
"maxGraphemes": 300
},
"multi": {
"ref": "#multiParams",
"type": "ref",
"description": "Required iff questionType is 'multi'."
},
"domain": {
"type": "string",
"description": "Optional curated top-level subject area (author-selected). Feeds per-domain reputation and filtering. Open set: clients may encounter values they don't recognize and should tolerate them.",
"knownValues": [
"politics",
"geopolitics",
"economics",
"finance",
"crypto",
"tech",
"science",
"health",
"climate",
"sports",
"culture"
]
},
"numeric": {
"ref": "#numericParams",
"type": "ref",
"description": "Required iff questionType is 'numeric'."
},
"closesAt": {
"type": "string",
"format": "datetime",
"description": "Last moment forecasts count for scoring. All datetimes are UTC (ISO 8601)."
},
"resolver": {
"type": "string",
"format": "did",
"description": "DID designated to resolve this question. v1: typically the question creator. Appviews apply their own trust policy to resolutions."
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"finePrint": {
"type": "string",
"maxLength": 30000,
"description": "Optional edge cases: source-unavailable fallbacks, rescheduling, tie-breaks, timezone specifics.",
"maxGraphemes": 3000
},
"background": {
"type": "string",
"maxLength": 30000,
"description": "Optional context for forecasters. Not part of the resolution rule.",
"maxGraphemes": 3000
},
"inspiredBy": {
"type": "string",
"format": "at-uri",
"description": "Optional AT-URI of the post that prompted this question (the 'formalize this take' flow). Weak ref by design: the referenced post may be edited or deleted."
},
"resolvesAt": {
"type": "string",
"format": "datetime",
"description": "Expected resolution time. Must be >= closesAt. Informational; actual resolution is a separate record."
},
"questionType": {
"type": "string",
"description": "One of 'binary', 'multi', 'numeric', or 'date'. Clients that don't understand a value should skip the record, not reject it.",
"knownValues": [
"binary",
"multi",
"numeric",
"date"
]
},
"resolutionSources": {
"type": "array",
"items": {
"ref": "#source",
"type": "ref"
},
"maxLength": 10,
"description": "Authoritative sources for resolution, in priority order. First is primary; the rest are fallbacks."
},
"resolutionCriteria": {
"type": "string",
"maxLength": 30000,
"description": "The precise rule determining the outcome. Must pass the Clairvoyance Test: a reader at resolution time can determine the outcome definitively from this text plus the sources.",
"maxGraphemes": 3000
}
}
},
"description": "A resolvable forecasting question. Immutability contract: editing this record after forecasts exist changes its CID; forecasts reference the question by strongRef (uri+cid), so appviews detect and flag post-forecast edits."
}