app.matakite.question

matakite.app

Documentation

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.

main record

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.

Record Key tid Timestamp-based ID

Properties

background string Optional

Optional context for forecasters. Not part of the resolution rule.

maxLength: 30000 bytesmaxGraphemes: 3000 graphemes
closesAt 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'. Reserved for v2.

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.

Known values: politics, geopolitics, economics, finance, crypto, tech, science, health, climate, sports, culture
finePrint string Optional

Optional edge cases: source-unavailable fallbacks, rescheduling, tie-breaks, timezone specifics.

maxLength: 30000 bytesmaxGraphemes: 3000 graphemes
inspiredBy 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'. Reserved for v2.

numeric ref #numericParams Optional

Required iff questionType is 'numeric'. Reserved for v2.

questionType string Required

v1 appviews support 'binary' only. 'multi', 'numeric', and 'date' are reserved; records using them should be skipped, not rejected, by clients that don't understand them.

Known values: binary, multi, numeric, date
resolutionCriteria 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 graphemes
resolutionSources array of ref #source Optional

Authoritative sources for resolution, in priority order. First is primary; the rest are fallbacks.

maxLength: 10 items
resolver 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 items
text string Required

The headline question. Convention: 'Will X happen by DATE per SOURCE?'

maxLength: 3000 bytesmaxGraphemes: 300 graphemes
View 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'. Reserved for v2."
      },
      "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'. Reserved for v2."
      },
      "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'. Reserved for v2."
      },
      "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": "v1 appviews support 'binary' only. 'multi', 'numeric', and 'date' are reserved; records using them should be skipped, not rejected, by clients that don't understand them.",
        "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."
}
dateParams object

Reserved (v2). Date question parameters — 'when will X happen?'. Resolves to the datetime the event occurred.

Properties

max string datetime Required

Latest representable resolution datetime (UTC ISO 8601). Must be >= min.

min string datetime Required

Earliest representable resolution datetime (UTC ISO 8601).

openLower boolean Optional

If true, resolution before min is representable.

openUpper boolean Optional

If true, resolution after max is representable.

View raw schema
{
  "type": "object",
  "required": [
    "min",
    "max"
  ],
  "properties": {
    "max": {
      "type": "string",
      "format": "datetime",
      "description": "Latest representable resolution datetime (UTC ISO 8601). Must be >= min."
    },
    "min": {
      "type": "string",
      "format": "datetime",
      "description": "Earliest representable resolution datetime (UTC ISO 8601)."
    },
    "openLower": {
      "type": "boolean",
      "description": "If true, resolution before min is representable."
    },
    "openUpper": {
      "type": "boolean",
      "description": "If true, resolution after max is representable."
    }
  },
  "description": "Reserved (v2). Date question parameters — 'when will X happen?'. Resolves to the datetime the event occurred."
}
multiParams object

Multiple-choice question parameters. New questions that accept forecasts include optionIds aligned one-to-one with options; appviews require the ids to be unique and stable within the cid-pinned question version.

Properties

optionIds array of string Optional

Opaque stable identifiers aligned by index with options. Required by the reference app for forecastable multi questions; optional in the Lexicon so previously published records remain valid. Labels may change in a new question version, but forecasts refer to these ids and pin the version by cid.

maxLength: 50 itemsminLength: 2 items
options array of string Required

No description available.

maxLength: 50 itemsminLength: 2 items
sumToOne boolean Optional

If true, options are mutually exclusive and exactly one resolves yes (Kalshi mutually_exclusive / Polymarket negRisk semantics).

View raw schema
{
  "type": "object",
  "required": [
    "options"
  ],
  "properties": {
    "options": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 1000,
        "maxGraphemes": 100
      },
      "maxLength": 50,
      "minLength": 2
    },
    "sumToOne": {
      "type": "boolean",
      "description": "If true, options are mutually exclusive and exactly one resolves yes (Kalshi mutually_exclusive / Polymarket negRisk semantics)."
    },
    "optionIds": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 640,
        "minLength": 1,
        "maxGraphemes": 64,
        "minGraphemes": 1
      },
      "maxLength": 50,
      "minLength": 2,
      "description": "Opaque stable identifiers aligned by index with options. Required by the reference app for forecastable multi questions; optional in the Lexicon so previously published records remain valid. Labels may change in a new question version, but forecasts refer to these ids and pin the version by cid."
    }
  },
  "description": "Multiple-choice question parameters. New questions that accept forecasts include optionIds aligned one-to-one with options; appviews require the ids to be unique and stable within the cid-pinned question version."
}
numericParams object

Reserved (v2). Numeric range question parameters.

Properties

logScale boolean Optional

No description available.

max string Required

Decimal string. Upper bound.

min string Required

Decimal string. Lower bound.

openLower boolean Optional

If true, resolution below min is representable.

openUpper boolean Optional

If true, resolution above max is representable.

unit string Optional

No description available.

maxLength: 320 bytesmaxGraphemes: 32 graphemes
View raw schema
{
  "type": "object",
  "required": [
    "min",
    "max"
  ],
  "properties": {
    "max": {
      "type": "string",
      "description": "Decimal string. Upper bound."
    },
    "min": {
      "type": "string",
      "description": "Decimal string. Lower bound."
    },
    "unit": {
      "type": "string",
      "maxLength": 320,
      "maxGraphemes": 32
    },
    "logScale": {
      "type": "boolean"
    },
    "openLower": {
      "type": "boolean",
      "description": "If true, resolution below min is representable."
    },
    "openUpper": {
      "type": "boolean",
      "description": "If true, resolution above max is representable."
    }
  },
  "description": "Reserved (v2). Numeric range question parameters."
}
source object

No description available.

Properties

name string Required

No description available.

maxLength: 640 bytesmaxGraphemes: 64 graphemes
url string uri Optional

A valid URI.

View raw schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri"
    },
    "name": {
      "type": "string",
      "maxLength": 640,
      "maxGraphemes": 64
    }
  }
}

Lexicon Garden

@