{
  "scope": "Six sequential event schedules; 100 ms assigned TTL from fill time. Atomic generation check/fill in one model object. No distributed consistency or latency measurements.",
  "rows": [
    {
      "case": "Ordinary miss",
      "readAtMs": 3,
      "databaseVersion": 2,
      "returnedVersion": 2,
      "stale": 0,
      "rejectedFill": false,
      "trace": [
        [
          1,
          "commit database version",
          2
        ],
        [
          2,
          "invalidate; advance generation",
          1
        ],
        [
          3,
          "start database load",
          [
            2,
            1
          ]
        ],
        [
          3,
          "fill; expiry",
          [
            2,
            103
          ]
        ],
        [
          3,
          "return",
          2
        ]
      ]
    },
    {
      "case": "Fill then invalidate",
      "readAtMs": 3,
      "databaseVersion": 2,
      "returnedVersion": 2,
      "stale": 0,
      "rejectedFill": false,
      "trace": [
        [
          0,
          "start database load",
          [
            1,
            0
          ]
        ],
        [
          0,
          "fill; expiry",
          [
            1,
            100
          ]
        ],
        [
          1,
          "commit database version",
          2
        ],
        [
          2,
          "invalidate; advance generation",
          1
        ],
        [
          3,
          "start database load",
          [
            2,
            1
          ]
        ],
        [
          3,
          "fill; expiry",
          [
            2,
            103
          ]
        ],
        [
          3,
          "return",
          2
        ]
      ]
    },
    {
      "case": "Obsolete fill",
      "readAtMs": 4,
      "databaseVersion": 2,
      "returnedVersion": 1,
      "stale": 1,
      "rejectedFill": false,
      "trace": [
        [
          0,
          "start database load",
          [
            1,
            0
          ]
        ],
        [
          1,
          "commit database version",
          2
        ],
        [
          2,
          "invalidate; advance generation",
          1
        ],
        [
          3,
          "fill; expiry",
          [
            1,
            103
          ]
        ],
        [
          4,
          "return",
          1
        ]
      ]
    },
    {
      "case": "Generation fence",
      "readAtMs": 4,
      "databaseVersion": 2,
      "returnedVersion": 2,
      "stale": 0,
      "rejectedFill": true,
      "trace": [
        [
          0,
          "start database load",
          [
            1,
            0
          ]
        ],
        [
          1,
          "commit database version",
          2
        ],
        [
          2,
          "invalidate; advance generation",
          1
        ],
        [
          3,
          "reject obsolete fill",
          1
        ],
        [
          4,
          "start database load",
          [
            2,
            1
          ]
        ],
        [
          4,
          "fill; expiry",
          [
            2,
            104
          ]
        ],
        [
          4,
          "return",
          2
        ]
      ]
    },
    {
      "case": "Before TTL expiry",
      "readAtMs": 102,
      "databaseVersion": 2,
      "returnedVersion": 1,
      "stale": 1,
      "rejectedFill": false,
      "trace": [
        [
          0,
          "start database load",
          [
            1,
            0
          ]
        ],
        [
          1,
          "commit database version",
          2
        ],
        [
          2,
          "invalidate; advance generation",
          1
        ],
        [
          3,
          "fill; expiry",
          [
            1,
            103
          ]
        ],
        [
          102,
          "return",
          1
        ]
      ]
    },
    {
      "case": "At TTL expiry",
      "readAtMs": 103,
      "databaseVersion": 2,
      "returnedVersion": 2,
      "stale": 0,
      "rejectedFill": false,
      "trace": [
        [
          0,
          "start database load",
          [
            1,
            0
          ]
        ],
        [
          1,
          "commit database version",
          2
        ],
        [
          2,
          "invalidate; advance generation",
          1
        ],
        [
          3,
          "fill; expiry",
          [
            1,
            103
          ]
        ],
        [
          103,
          "start database load",
          [
            2,
            1
          ]
        ],
        [
          103,
          "fill; expiry",
          [
            2,
            203
          ]
        ],
        [
          103,
          "return",
          2
        ]
      ]
    }
  ]
}
