net.anisota.fieldwork.state

anisota.net

Documentation

Quest system state for cross-device sync (dismissals, nudge timing, visited routes). Singleton record (rkey: self), overwritten via putRecord. Client-written (no backend signing). Distinct from net.anisota.chronicle.fieldwork (immutable, backend-signed completion records).

main record

Quest system state for cross-device sync (dismissals, nudge timing, visited routes). Singleton record (rkey: self), overwritten via putRecord. Client-written (no backend signing). Distinct from net.anisota.chronicle.fieldwork (immutable, backend-signed completion records).

Record Key any Any valid record key

Properties

counters unknown Optional

Reserved for future quest progress counters. Object mapping counter ids to values.

dismissed unknown Optional

Object mapping dismissed quest ids to the ISO datetime they were dismissed. Dismissed quests are excluded from recommendations and nudges until undismissed.

lastNudgeAt string datetime Optional

When a quest nudge was last shown (nudges are spaced at least a day apart)

lastNudgeQuestId string Optional

Which quest the most recent nudge was about

pinnedQuestId string Optional

Quest the player has pinned to keep in view

retroSweepAt string datetime Optional

When the retroactive completion sweep last ran (throttles the sweep to once per day)

retroSweepVersion integer Optional

Version of the retroactive sweep that armed retroSweepAt. When it doesn't match the client's current sweep version the throttle is treated as stale and the sweep runs once more, so a throttle armed by an earlier (buggy) sweep can't lock out backfill.

snoozedUntil string datetime Optional

Suppress quest nudges until this time

updatedAt string datetime Required

When this state snapshot was taken

visitedRoutes unknown Optional

Object mapping visited app routes (e.g. '/chronicle') to the ISO datetime of the first tracked visit. Drives route-based quest detection.

View raw schema
{
  "key": "any",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "updatedAt"
    ],
    "properties": {
      "counters": {
        "type": "unknown",
        "description": "Reserved for future quest progress counters. Object mapping counter ids to values."
      },
      "dismissed": {
        "type": "unknown",
        "description": "Object mapping dismissed quest ids to the ISO datetime they were dismissed. Dismissed quests are excluded from recommendations and nudges until undismissed."
      },
      "updatedAt": {
        "type": "string",
        "format": "datetime",
        "description": "When this state snapshot was taken"
      },
      "lastNudgeAt": {
        "type": "string",
        "format": "datetime",
        "description": "When a quest nudge was last shown (nudges are spaced at least a day apart)"
      },
      "retroSweepAt": {
        "type": "string",
        "format": "datetime",
        "description": "When the retroactive completion sweep last ran (throttles the sweep to once per day)"
      },
      "snoozedUntil": {
        "type": "string",
        "format": "datetime",
        "description": "Suppress quest nudges until this time"
      },
      "pinnedQuestId": {
        "type": "string",
        "description": "Quest the player has pinned to keep in view"
      },
      "visitedRoutes": {
        "type": "unknown",
        "description": "Object mapping visited app routes (e.g. '/chronicle') to the ISO datetime of the first tracked visit. Drives route-based quest detection."
      },
      "lastNudgeQuestId": {
        "type": "string",
        "description": "Which quest the most recent nudge was about"
      },
      "retroSweepVersion": {
        "type": "integer",
        "description": "Version of the retroactive sweep that armed retroSweepAt. When it doesn't match the client's current sweep version the throttle is treated as stale and the sweep runs once more, so a throttle armed by an earlier (buggy) sweep can't lock out backfill."
      }
    }
  },
  "description": "Quest system state for cross-device sync (dismissals, nudge timing, visited routes). Singleton record (rkey: self), overwritten via putRecord. Client-written (no backend signing). Distinct from net.anisota.chronicle.fieldwork (immutable, backend-signed completion records)."
}

Lexicon Garden

@