{
 "title": "Memory supersession eval: bi-temporal against append-only and overwrite-only, 2026-09-30",
 "gateway_commit": "a12ecce8",
 "method": {
  "store": "The gateway's own /fact-assert, /fact-query and /fact-timeline routes and its fact block builder (cmBuildFactBlock), compiled from gateway commit a12ecce8 and run against a real SQLite engine. Keyword legs only: no meaning vector (novec=1), the same read a turn gets when the vector misses its deadline.",
  "scenario": "24 slots of one team's setup (deploy target, on-call engineer, CI, database engine and 20 more). Each slot changes 1 to 3 times, about 30 days apart, from 2026-06-01. 62 writes, 38 of them changes. Every write is made the way turn extraction writes (writer ai-extract, tier inferred), with its own valid_at. So valid_at (world time) and created_at (recorded time) differ on every row.",
  "arms": {
   "bitemporal": "Shipped code. Default cardinality: one value per slot. A new value closes the old row (invalid_at = new valid_at, expired_at = write time).",
   "append": "Shipped code, every fact declared cardinality many. Nothing is ever closed: the store keeps every value as current.",
   "overwrite": "Shipped code, then every closed row is deleted after each write. Only the current value is kept."
  },
  "probes": {
   "now": "24 questions, one per slot, sent as the turn path sends them (cmTurnFactQuery, limit 6), then the turn path's own filters (tiered rows, text-matched).",
   "multi": "6 questions that each ask about 3 slots (18 slot answers): does each current value still fit in the 6-row read?",
   "as_of": "38 questions 'what was true 5 days into version i?', answered from /fact-timeline on the world clock by a fixed reader: the newest row with valid_at <= T and, where the store records an end, invalid_at > T."
  },
  "answers": "Each arm's block plus its question sent to a model through plain Claude Code 2.1.283 (claude -p, direct to api.anthropic.com, no tools, no setting sources, system prompt: You answer questions about a software team's setup. Use only the memory block in the user's message. Answer in one short line per question, with the value only.). Graded by exact string: the current value, an old value, or neither. Overwrite blocks carry the same rows as bitemporal blocks, so only bitemporal and append were sent."
 },
 "summary": {
  "store": {
   "bitemporal": {
    "rows": 62,
    "open_rows": 24,
    "closed_rows": 38
   },
   "append": {
    "rows": 62,
    "open_rows": 62,
    "closed_rows": 0
   },
   "overwrite": {
    "rows": 24,
    "open_rows": 24,
    "closed_rows": 0
   }
  },
  "now": {
   "bitemporal": {
    "probes": 24,
    "current_in_block": 23,
    "old_value_in_block": 0,
    "old_only": 0,
    "no_row_for_slot": 1
   },
   "append": {
    "probes": 24,
    "current_in_block": 23,
    "old_value_in_block": 23,
    "old_only": 0,
    "no_row_for_slot": 1
   },
   "overwrite": {
    "probes": 24,
    "current_in_block": 23,
    "old_value_in_block": 0,
    "old_only": 0,
    "no_row_for_slot": 1
   }
  },
  "multi": {
   "bitemporal": {
    "probes": 6,
    "slots_asked": 18,
    "current_in_block": 18,
    "slots_with_old_value_in_block": 0,
    "slots_old_only": 0
   },
   "append": {
    "probes": 6,
    "slots_asked": 18,
    "current_in_block": 13,
    "slots_with_old_value_in_block": 15,
    "slots_old_only": 2
   },
   "overwrite": {
    "probes": 6,
    "slots_asked": 18,
    "current_in_block": 18,
    "slots_with_old_value_in_block": 0,
    "slots_old_only": 0
   }
  },
  "as_of": {
   "bitemporal": {
    "probes": 38,
    "correct": 38,
    "unanswerable": 0
   },
   "append": {
    "probes": 38,
    "correct": 38,
    "unanswerable": 0
   },
   "overwrite": {
    "probes": 38,
    "correct": 0,
    "unanswerable": 38
   }
  },
  "answers": {
   "claude-haiku-4-5 bitemporal": {
    "answers": 30,
    "slot_answers": 42,
    "current": 41,
    "old": 0,
    "missing": 1,
    "errors": 0,
    "cost_usd": 0.17023299999999997
   },
   "claude-haiku-4-5 append": {
    "answers": 30,
    "slot_answers": 42,
    "current": 36,
    "old": 2,
    "missing": 4,
    "errors": 0,
    "cost_usd": 0.24253100000000002
   },
   "claude-opus-5-5 bitemporal": {
    "answers": 30,
    "slot_answers": 42,
    "current": 40,
    "old": 0,
    "missing": 2,
    "errors": 0,
    "cost_usd": 0.5724279999999999
   },
   "claude-opus-5-5 append": {
    "answers": 30,
    "slot_answers": 42,
    "current": 36,
    "old": 2,
    "missing": 4,
    "errors": 0,
    "cost_usd": 0.6025864
   }
  }
 },
 "notes": [
  "One now-question ('What does our CI run on now?') matched no row in any arm: the keyword read does not match the short word CI. Both models answered 'no record' there in every arm.",
  "One Opus 5.5 bitemporal answer, 'Fly.io, in the Frankfurt region', gave the current value in other words; the exact-string check counts it as neither. By hand, Opus 5.5 bitemporal is 41 of 42.",
  "Cost of the answer runs, as the client reported: Haiku 4.5 $0.41, Opus 5.5 $1.18."
 ],
 "store_eval": {
  "gateway_commit": "a12ecce8",
  "run_at": "2026-09-29T23:12:18.936Z",
  "slots": 24,
  "writes": 62,
  "changes": 38,
  "arms": {
   "bitemporal": {
    "store": {
     "rows": 62,
     "open_rows": 24,
     "closed_rows": 38,
     "rejects": []
    },
    "now": {
     "probes": 24,
     "current_in_block": 23,
     "old_value_in_block": 0,
     "old_only": 0,
     "no_row_for_slot": 1
    },
    "multi": {
     "probes": 6,
     "slots_asked": 18,
     "current_in_block": 18,
     "slots_with_old_value_in_block": 0,
     "slots_old_only": 0
    },
    "multi_probes": [
     {
      "ks": [
       0,
       17,
       22
      ],
      "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 cdn provider Fastly (inferred: ai-extract)  [2026-08-01 05:00 +03 \u2014 60 days ago]  edge_id=fe-e02034196fc34e\n\u2022 job queue backend Cloudflare Queues (inferred: ai-extract)  [2026-08-01 10:00 +03 \u2014 60 days ago]  edge_id=fe-148c8a1d859243\n\u2022 production deploy_target Fly.io, Frankfurt (inferred: ai-extract)  [2026-07-31 12:00 +03 \u2014 61 days ago]  edge_id=fe-2b176766634041\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Fastly",
        "valid_at": "2026-08-01T02:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Cloudflare Queues",
        "valid_at": "2026-08-01T07:00:00.000Z"
       },
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Fly.io, Frankfurt",
        "valid_at": "2026-07-31T09:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 0,
        "current": "Fly.io, Frankfurt",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 17,
        "current": "Fastly",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 22,
        "current": "Cloudflare Queues",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       7,
       21,
       23
      ],
      "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 analytics warehouse platform Snowflake (inferred: ai-extract)  [2026-08-01 11:00 +03 \u2014 60 days ago]  edge_id=fe-cffa1cdc0c604b\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-e18379760b8140\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-21bb7ca2c52b4b\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-d5749ffca51c4b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-622715f9623f4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Snowflake",
        "valid_at": "2026-08-01T08:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 7,
        "current": "Postgres 16",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 21,
        "current": "Typesense",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 23,
        "current": "Snowflake",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       1,
       5,
       10
      ],
      "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 team on_call_engineer Ece Yildiz (inferred: ai-extract)  [2026-08-30 13:00 +03 \u2014 31 days ago]  edge_id=fe-a9253f60698b40\n\u2022 monorepo package_manager bun (inferred: ai-extract)  [2026-07-31 22:00 +03 \u2014 60 days ago]  edge_id=fe-c59d3f4b922643\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-23ad2a9f407e44\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-d546665c93c243\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Ece Yildiz",
        "valid_at": "2026-08-30T10:00:00.000Z"
       },
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "bun",
        "valid_at": "2026-07-31T19:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 1,
        "current": "Ece Yildiz",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 5,
        "current": "Ayse Demir",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 10,
        "current": "bun",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       4,
       6,
       14
      ],
      "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 release branch release/2026.09 (inferred: ai-extract)  [2026-07-31 18:00 +03 \u2014 60 days ago]  edge_id=fe-6db3d04436e746\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-f52b453a5de64a\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-12b66e3e3a3442\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-d546665c93c243\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-23ad2a9f407e44\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.09",
        "valid_at": "2026-07-31T15:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 4,
        "current": "Node 22",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 6,
        "current": "release/2026.09",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 14,
        "current": "500 requests per minute",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       18,
       19,
       20
      ],
      "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-12b66e3e3a3442\n\u2022 log retention period 90 days (inferred: ai-extract)  [2026-08-01 06:00 +03 \u2014 60 days ago]  edge_id=fe-fc91e31a801949\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-e18379760b8140\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-d5749ffca51c4b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-622715f9623f4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "90 days",
        "valid_at": "2026-08-01T03:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 18,
        "current": "90 days",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 19,
        "current": "iOS 17",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 20,
        "current": "every 6 hours",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       8,
       9,
       11
      ],
      "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-d546665c93c243\n\u2022 error tracking tool Honeybadger (inferred: ai-extract)  [2026-07-01 20:00 +03 \u2014 90 days ago]  edge_id=fe-ed66aecb025244\n\u2022 test suite runner Vitest (inferred: ai-extract)  [2026-07-01 23:00 +03 \u2014 90 days ago]  edge_id=fe-084fe75baacd41\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-23ad2a9f407e44\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Honeybadger",
        "valid_at": "2026-07-01T17:00:00.000Z"
       },
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Vitest",
        "valid_at": "2026-07-01T20:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 8,
        "current": "Honeybadger",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 9,
        "current": "Unleash",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 11,
        "current": "Vitest",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     }
    ],
    "as_of": {
     "probes": 38,
     "correct": 38,
     "unanswerable": 0
    },
    "now_probes": [
     {
      "k": 0,
      "q": "Where is production deployed now?",
      "current": "Fly.io, Frankfurt",
      "old": [
       "Hetzner Cloud, Falkenstein",
       "Render, Oregon"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 production deploy_target Fly.io, Frankfurt (inferred: ai-extract)  [2026-07-31 12:00 +03 \u2014 61 days ago]  edge_id=fe-2b176766634041\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Fly.io, Frankfurt",
        "valid_at": "2026-07-31T09:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 1,
      "q": "Who is the on call engineer for the team now?",
      "current": "Ece Yildiz",
      "old": [
       "Selin Aydin",
       "Baran Kaya",
       "Deniz Arslan"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 team on_call_engineer Ece Yildiz (inferred: ai-extract)  [2026-08-30 13:00 +03 \u2014 31 days ago]  edge_id=fe-a9253f60698b40\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Ece Yildiz",
        "valid_at": "2026-08-30T10:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 2,
      "q": "What does our CI run on now?",
      "current": "Buildkite",
      "old": [
       "CircleCI"
      ],
      "block": "",
      "rows": [],
      "current_in_block": false,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 3,
      "q": "Which region is the staging database in?",
      "current": "Frankfurt",
      "old": [
       "Reykjavik"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-e18379760b8140\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-622715f9623f4a\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-d5749ffca51c4b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 4,
      "q": "Which Node version does the api service use?",
      "current": "Node 22",
      "old": [
       "Node 18",
       "Node 20"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-12b66e3e3a3442\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-f52b453a5de64a\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-d546665c93c243\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-23ad2a9f407e44\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 5,
      "q": "Who owns the payments service?",
      "current": "Ayse Demir",
      "old": [
       "Mert Koseoglu"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-23ad2a9f407e44\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-d546665c93c243\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 6,
      "q": "What is the current release branch?",
      "current": "release/2026.09",
      "old": [
       "release/2026.07",
       "release/2026.08"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 release branch release/2026.09 (inferred: ai-extract)  [2026-07-31 18:00 +03 \u2014 60 days ago]  edge_id=fe-6db3d04436e746\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.09",
        "valid_at": "2026-07-31T15:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 7,
      "q": "Which engine does the primary database run?",
      "current": "Postgres 16",
      "old": [
       "MySQL 8",
       "Postgres 15"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=4+ read=4 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-e18379760b8140\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-21bb7ca2c52b4b\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-d5749ffca51c4b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-622715f9623f4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 8,
      "q": "Which tool do we use for error tracking?",
      "current": "Honeybadger",
      "old": [
       "Sentry"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 error tracking tool Honeybadger (inferred: ai-extract)  [2026-07-01 20:00 +03 \u2014 90 days ago]  edge_id=fe-ed66aecb025244\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Honeybadger",
        "valid_at": "2026-07-01T17:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 9,
      "q": "Which service runs our feature flags?",
      "current": "Unleash",
      "old": [
       "LaunchDarkly"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=4+ read=4 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-d546665c93c243\n\u2022 ci runs_on Buildkite (inferred: ai-extract)  [2026-07-01 14:00 +03 \u2014 91 days ago]  edge_id=fe-c25a0f38c22a4c\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-23ad2a9f407e44\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "ci",
        "predicate": "runs_on",
        "object": "Buildkite",
        "valid_at": "2026-07-01T11:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 10,
      "q": "Which package manager does the monorepo use?",
      "current": "bun",
      "old": [
       "npm",
       "pnpm"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 monorepo package_manager bun (inferred: ai-extract)  [2026-07-31 22:00 +03 \u2014 60 days ago]  edge_id=fe-c59d3f4b922643\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "bun",
        "valid_at": "2026-07-31T19:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 11,
      "q": "Which runner does the test suite use?",
      "current": "Vitest",
      "old": [
       "Jest"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 test suite runner Vitest (inferred: ai-extract)  [2026-07-01 23:00 +03 \u2014 90 days ago]  edge_id=fe-084fe75baacd41\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Vitest",
        "valid_at": "2026-07-01T20:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 12,
      "q": "Where is the docs site hosted?",
      "current": "Mintlify",
      "old": [
       "GitBook"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-21bb7ca2c52b4b\n\u2022 docs site host Mintlify (inferred: ai-extract)  [2026-07-02 00:00 +03 \u2014 90 days ago]  edge_id=fe-be4af34cd3ae4e\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "Mintlify",
        "valid_at": "2026-07-01T21:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 13,
      "q": "Which design system does the web app use?",
      "current": "shadcn/ui",
      "old": [
       "MUI"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-12b66e3e3a3442\n\u2022 web app design_system shadcn/ui (inferred: ai-extract)  [2026-07-02 01:00 +03 \u2014 90 days ago]  edge_id=fe-c904b9173cb941\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "shadcn/ui",
        "valid_at": "2026-07-01T22:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 14,
      "q": "What is the public api rate limit?",
      "current": "500 requests per minute",
      "old": [
       "100 requests per minute",
       "300 requests per minute"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-f52b453a5de64a\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 15,
      "q": "How long is a sprint?",
      "current": "1 week",
      "old": [
       "2 weeks"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 sprint length 1 week (inferred: ai-extract)  [2026-07-02 03:00 +03 \u2014 90 days ago]  edge_id=fe-80c83d9b80ad42\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "sprint",
        "predicate": "length",
        "object": "1 week",
        "valid_at": "2026-07-02T00:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 16,
      "q": "Which day is code freeze?",
      "current": "Thursday",
      "old": [
       "Friday"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 code freeze day Thursday (inferred: ai-extract)  [2026-07-02 04:00 +03 \u2014 90 days ago]  edge_id=fe-ca6c7780e6a246\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "code freeze",
        "predicate": "day",
        "object": "Thursday",
        "valid_at": "2026-07-02T01:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 17,
      "q": "Which cdn provider do we use?",
      "current": "Fastly",
      "old": [
       "CloudFront",
       "Cloudflare"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 cdn provider Fastly (inferred: ai-extract)  [2026-08-01 05:00 +03 \u2014 60 days ago]  edge_id=fe-e02034196fc34e\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Fastly",
        "valid_at": "2026-08-01T02:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 18,
      "q": "What is our log retention period?",
      "current": "90 days",
      "old": [
       "7 days",
       "30 days"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 log retention period 90 days (inferred: ai-extract)  [2026-08-01 06:00 +03 \u2014 60 days ago]  edge_id=fe-fc91e31a801949\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "90 days",
        "valid_at": "2026-08-01T03:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 19,
      "q": "What is the minimum iOS version of the ios app?",
      "current": "iOS 17",
      "old": [
       "iOS 15",
       "iOS 16"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-12b66e3e3a3442\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-d97e666b3ace48\n\u2022 web app design_system shadcn/ui (inferred: ai-extract)  [2026-07-02 01:00 +03 \u2014 90 days ago]  edge_id=fe-c904b9173cb941\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "shadcn/ui",
        "valid_at": "2026-07-01T22:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 20,
      "q": "What is the database backups schedule?",
      "current": "every 6 hours",
      "old": [
       "daily at 02:00 UTC"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-e18379760b8140\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-d5749ffca51c4b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-622715f9623f4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 21,
      "q": "Which engine powers site search?",
      "current": "Typesense",
      "old": [
       "Elasticsearch",
       "Meilisearch"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-21bb7ca2c52b4b\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-e18379760b8140\n\u2022 docs site host Mintlify (inferred: ai-extract)  [2026-07-02 00:00 +03 \u2014 90 days ago]  edge_id=fe-be4af34cd3ae4e\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "Mintlify",
        "valid_at": "2026-07-01T21:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 22,
      "q": "What backend does the job queue use?",
      "current": "Cloudflare Queues",
      "old": [
       "RabbitMQ",
       "Amazon SQS"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 job queue backend Cloudflare Queues (inferred: ai-extract)  [2026-08-01 10:00 +03 \u2014 60 days ago]  edge_id=fe-148c8a1d859243\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Cloudflare Queues",
        "valid_at": "2026-08-01T07:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 23,
      "q": "Which platform is the analytics warehouse on?",
      "current": "Snowflake",
      "old": [
       "Redshift",
       "BigQuery"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 analytics warehouse platform Snowflake (inferred: ai-extract)  [2026-08-01 11:00 +03 \u2014 60 days ago]  edge_id=fe-cffa1cdc0c604b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Snowflake",
        "valid_at": "2026-08-01T08:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     }
    ],
    "as_of_probes": [
     {
      "k": 0,
      "i": 0,
      "T": "2026-06-06T09:00:00.000Z",
      "expected": "Hetzner Cloud, Falkenstein",
      "got": "Hetzner Cloud, Falkenstein",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 0,
      "i": 1,
      "T": "2026-07-06T09:00:00.000Z",
      "expected": "Render, Oregon",
      "got": "Render, Oregon",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 1,
      "i": 0,
      "T": "2026-06-06T10:00:00.000Z",
      "expected": "Selin Aydin",
      "got": "Selin Aydin",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 1,
      "i": 1,
      "T": "2026-07-06T10:00:00.000Z",
      "expected": "Baran Kaya",
      "got": "Baran Kaya",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 1,
      "i": 2,
      "T": "2026-08-05T10:00:00.000Z",
      "expected": "Deniz Arslan",
      "got": "Deniz Arslan",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 2,
      "i": 0,
      "T": "2026-06-06T11:00:00.000Z",
      "expected": "CircleCI",
      "got": "CircleCI",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 3,
      "i": 0,
      "T": "2026-06-06T12:00:00.000Z",
      "expected": "Reykjavik",
      "got": "Reykjavik",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 4,
      "i": 0,
      "T": "2026-06-06T13:00:00.000Z",
      "expected": "Node 18",
      "got": "Node 18",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 4,
      "i": 1,
      "T": "2026-07-06T13:00:00.000Z",
      "expected": "Node 20",
      "got": "Node 20",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 5,
      "i": 0,
      "T": "2026-06-06T14:00:00.000Z",
      "expected": "Mert Koseoglu",
      "got": "Mert Koseoglu",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 6,
      "i": 0,
      "T": "2026-06-06T15:00:00.000Z",
      "expected": "release/2026.07",
      "got": "release/2026.07",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 6,
      "i": 1,
      "T": "2026-07-06T15:00:00.000Z",
      "expected": "release/2026.08",
      "got": "release/2026.08",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 7,
      "i": 0,
      "T": "2026-06-06T16:00:00.000Z",
      "expected": "MySQL 8",
      "got": "MySQL 8",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 7,
      "i": 1,
      "T": "2026-07-06T16:00:00.000Z",
      "expected": "Postgres 15",
      "got": "Postgres 15",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 8,
      "i": 0,
      "T": "2026-06-06T17:00:00.000Z",
      "expected": "Sentry",
      "got": "Sentry",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 9,
      "i": 0,
      "T": "2026-06-06T18:00:00.000Z",
      "expected": "LaunchDarkly",
      "got": "LaunchDarkly",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 10,
      "i": 0,
      "T": "2026-06-06T19:00:00.000Z",
      "expected": "npm",
      "got": "npm",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 10,
      "i": 1,
      "T": "2026-07-06T19:00:00.000Z",
      "expected": "pnpm",
      "got": "pnpm",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 11,
      "i": 0,
      "T": "2026-06-06T20:00:00.000Z",
      "expected": "Jest",
      "got": "Jest",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 12,
      "i": 0,
      "T": "2026-06-06T21:00:00.000Z",
      "expected": "GitBook",
      "got": "GitBook",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 13,
      "i": 0,
      "T": "2026-06-06T22:00:00.000Z",
      "expected": "MUI",
      "got": "MUI",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 14,
      "i": 0,
      "T": "2026-06-06T23:00:00.000Z",
      "expected": "100 requests per minute",
      "got": "100 requests per minute",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 14,
      "i": 1,
      "T": "2026-07-06T23:00:00.000Z",
      "expected": "300 requests per minute",
      "got": "300 requests per minute",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 15,
      "i": 0,
      "T": "2026-06-07T00:00:00.000Z",
      "expected": "2 weeks",
      "got": "2 weeks",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 16,
      "i": 0,
      "T": "2026-06-07T01:00:00.000Z",
      "expected": "Friday",
      "got": "Friday",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 17,
      "i": 0,
      "T": "2026-06-07T02:00:00.000Z",
      "expected": "CloudFront",
      "got": "CloudFront",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 17,
      "i": 1,
      "T": "2026-07-07T02:00:00.000Z",
      "expected": "Cloudflare",
      "got": "Cloudflare",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 18,
      "i": 0,
      "T": "2026-06-07T03:00:00.000Z",
      "expected": "7 days",
      "got": "7 days",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 18,
      "i": 1,
      "T": "2026-07-07T03:00:00.000Z",
      "expected": "30 days",
      "got": "30 days",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 19,
      "i": 0,
      "T": "2026-06-07T04:00:00.000Z",
      "expected": "iOS 15",
      "got": "iOS 15",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 19,
      "i": 1,
      "T": "2026-07-07T04:00:00.000Z",
      "expected": "iOS 16",
      "got": "iOS 16",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 20,
      "i": 0,
      "T": "2026-06-07T05:00:00.000Z",
      "expected": "daily at 02:00 UTC",
      "got": "daily at 02:00 UTC",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 21,
      "i": 0,
      "T": "2026-06-07T06:00:00.000Z",
      "expected": "Elasticsearch",
      "got": "Elasticsearch",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 21,
      "i": 1,
      "T": "2026-07-07T06:00:00.000Z",
      "expected": "Meilisearch",
      "got": "Meilisearch",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 22,
      "i": 0,
      "T": "2026-06-07T07:00:00.000Z",
      "expected": "RabbitMQ",
      "got": "RabbitMQ",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 22,
      "i": 1,
      "T": "2026-07-07T07:00:00.000Z",
      "expected": "Amazon SQS",
      "got": "Amazon SQS",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 23,
      "i": 0,
      "T": "2026-06-07T08:00:00.000Z",
      "expected": "Redshift",
      "got": "Redshift",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 23,
      "i": 1,
      "T": "2026-07-07T08:00:00.000Z",
      "expected": "BigQuery",
      "got": "BigQuery",
      "rows_open_at_T": 1,
      "correct": true
     }
    ],
    "store_rows": [
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "Redshift",
      "valid_at": "2026-06-02T08:00:00.000Z",
      "invalid_at": "2026-07-02T08:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.181Z",
      "expired_at": "2026-09-29T23:12:21.439Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "BigQuery",
      "valid_at": "2026-07-02T08:00:00.000Z",
      "invalid_at": "2026-08-01T08:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.439Z",
      "expired_at": "2026-09-29T23:12:22.074Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "Snowflake",
      "valid_at": "2026-08-01T08:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:22.074Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 18",
      "valid_at": "2026-06-01T13:00:00.000Z",
      "invalid_at": "2026-07-01T13:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.464Z",
      "expired_at": "2026-09-29T23:12:20.429Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 20",
      "valid_at": "2026-07-01T13:00:00.000Z",
      "invalid_at": "2026-07-31T13:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.429Z",
      "expired_at": "2026-09-29T23:12:21.584Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 22",
      "valid_at": "2026-07-31T13:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.584Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "CloudFront",
      "valid_at": "2026-06-02T02:00:00.000Z",
      "invalid_at": "2026-07-02T02:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.950Z",
      "expired_at": "2026-09-29T23:12:21.152Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "Cloudflare",
      "valid_at": "2026-07-02T02:00:00.000Z",
      "invalid_at": "2026-08-01T02:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.152Z",
      "expired_at": "2026-09-29T23:12:21.852Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "Fastly",
      "valid_at": "2026-08-01T02:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.852Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ci",
      "predicate": "runs_on",
      "object": "CircleCI",
      "valid_at": "2026-06-01T11:00:00.000Z",
      "invalid_at": "2026-07-01T11:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.392Z",
      "expired_at": "2026-09-29T23:12:20.319Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ci",
      "predicate": "runs_on",
      "object": "Buildkite",
      "valid_at": "2026-07-01T11:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.319Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "code freeze",
      "predicate": "day",
      "object": "Friday",
      "valid_at": "2026-06-02T01:00:00.000Z",
      "invalid_at": "2026-07-02T01:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.917Z",
      "expired_at": "2026-09-29T23:12:21.109Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "code freeze",
      "predicate": "day",
      "object": "Thursday",
      "valid_at": "2026-07-02T01:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.109Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "database backups",
      "predicate": "schedule",
      "object": "daily at 02:00 UTC",
      "valid_at": "2026-06-02T05:00:00.000Z",
      "invalid_at": "2026-07-02T05:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.078Z",
      "expired_at": "2026-09-29T23:12:21.302Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "database backups",
      "predicate": "schedule",
      "object": "every 6 hours",
      "valid_at": "2026-07-02T05:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.302Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "docs site",
      "predicate": "host",
      "object": "GitBook",
      "valid_at": "2026-06-01T21:00:00.000Z",
      "invalid_at": "2026-07-01T21:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.761Z",
      "expired_at": "2026-09-29T23:12:20.912Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "docs site",
      "predicate": "host",
      "object": "Mintlify",
      "valid_at": "2026-07-01T21:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.912Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "error tracking",
      "predicate": "tool",
      "object": "Sentry",
      "valid_at": "2026-06-01T17:00:00.000Z",
      "invalid_at": "2026-07-01T17:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.620Z",
      "expired_at": "2026-09-29T23:12:20.674Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "error tracking",
      "predicate": "tool",
      "object": "Honeybadger",
      "valid_at": "2026-07-01T17:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.674Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "feature flags",
      "predicate": "service",
      "object": "LaunchDarkly",
      "valid_at": "2026-06-01T18:00:00.000Z",
      "invalid_at": "2026-07-01T18:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.657Z",
      "expired_at": "2026-09-29T23:12:20.759Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "feature flags",
      "predicate": "service",
      "object": "Unleash",
      "valid_at": "2026-07-01T18:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.759Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 15",
      "valid_at": "2026-06-02T04:00:00.000Z",
      "invalid_at": "2026-07-02T04:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.016Z",
      "expired_at": "2026-09-29T23:12:21.242Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 16",
      "valid_at": "2026-07-02T04:00:00.000Z",
      "invalid_at": "2026-08-01T04:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.242Z",
      "expired_at": "2026-09-29T23:12:21.938Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 17",
      "valid_at": "2026-08-01T04:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.938Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "RabbitMQ",
      "valid_at": "2026-06-02T07:00:00.000Z",
      "invalid_at": "2026-07-02T07:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.147Z",
      "expired_at": "2026-09-29T23:12:21.390Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "Amazon SQS",
      "valid_at": "2026-07-02T07:00:00.000Z",
      "invalid_at": "2026-08-01T07:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.390Z",
      "expired_at": "2026-09-29T23:12:22.024Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "Cloudflare Queues",
      "valid_at": "2026-08-01T07:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:22.024Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "7 days",
      "valid_at": "2026-06-02T03:00:00.000Z",
      "invalid_at": "2026-07-02T03:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.983Z",
      "expired_at": "2026-09-29T23:12:21.196Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "30 days",
      "valid_at": "2026-07-02T03:00:00.000Z",
      "invalid_at": "2026-08-01T03:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.196Z",
      "expired_at": "2026-09-29T23:12:21.898Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "90 days",
      "valid_at": "2026-08-01T03:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.898Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "npm",
      "valid_at": "2026-06-01T19:00:00.000Z",
      "invalid_at": "2026-07-01T19:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.689Z",
      "expired_at": "2026-09-29T23:12:20.811Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "pnpm",
      "valid_at": "2026-07-01T19:00:00.000Z",
      "invalid_at": "2026-07-31T19:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.811Z",
      "expired_at": "2026-09-29T23:12:21.752Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "bun",
      "valid_at": "2026-07-31T19:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.752Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "payments service",
      "predicate": "owner",
      "object": "Mert Koseoglu",
      "valid_at": "2026-06-01T14:00:00.000Z",
      "invalid_at": "2026-07-01T14:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.498Z",
      "expired_at": "2026-09-29T23:12:20.497Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "payments service",
      "predicate": "owner",
      "object": "Ayse Demir",
      "valid_at": "2026-07-01T14:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.497Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "MySQL 8",
      "valid_at": "2026-06-01T16:00:00.000Z",
      "invalid_at": "2026-07-01T16:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.582Z",
      "expired_at": "2026-09-29T23:12:20.618Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "Postgres 15",
      "valid_at": "2026-07-01T16:00:00.000Z",
      "invalid_at": "2026-07-31T16:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.618Z",
      "expired_at": "2026-09-29T23:12:21.689Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "Postgres 16",
      "valid_at": "2026-07-31T16:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.689Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Hetzner Cloud, Falkenstein",
      "valid_at": "2026-06-01T09:00:00.000Z",
      "invalid_at": "2026-07-01T09:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.298Z",
      "expired_at": "2026-09-29T23:12:20.215Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Render, Oregon",
      "valid_at": "2026-07-01T09:00:00.000Z",
      "invalid_at": "2026-07-31T09:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.215Z",
      "expired_at": "2026-09-29T23:12:21.489Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Fly.io, Frankfurt",
      "valid_at": "2026-07-31T09:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.489Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "100 requests per minute",
      "valid_at": "2026-06-01T23:00:00.000Z",
      "invalid_at": "2026-07-01T23:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.850Z",
      "expired_at": "2026-09-29T23:12:21.023Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "300 requests per minute",
      "valid_at": "2026-07-01T23:00:00.000Z",
      "invalid_at": "2026-07-31T23:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.023Z",
      "expired_at": "2026-09-29T23:12:21.808Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "500 requests per minute",
      "valid_at": "2026-07-31T23:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.808Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.07",
      "valid_at": "2026-06-01T15:00:00.000Z",
      "invalid_at": "2026-07-01T15:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.536Z",
      "expired_at": "2026-09-29T23:12:20.545Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.08",
      "valid_at": "2026-07-01T15:00:00.000Z",
      "invalid_at": "2026-07-31T15:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.545Z",
      "expired_at": "2026-09-29T23:12:21.627Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.09",
      "valid_at": "2026-07-31T15:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.627Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Elasticsearch",
      "valid_at": "2026-06-02T06:00:00.000Z",
      "invalid_at": "2026-07-02T06:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.115Z",
      "expired_at": "2026-09-29T23:12:21.349Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Meilisearch",
      "valid_at": "2026-07-02T06:00:00.000Z",
      "invalid_at": "2026-08-01T06:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.349Z",
      "expired_at": "2026-09-29T23:12:21.979Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Typesense",
      "valid_at": "2026-08-01T06:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.979Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "sprint",
      "predicate": "length",
      "object": "2 weeks",
      "valid_at": "2026-06-02T00:00:00.000Z",
      "invalid_at": "2026-07-02T00:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.885Z",
      "expired_at": "2026-09-29T23:12:21.069Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "sprint",
      "predicate": "length",
      "object": "1 week",
      "valid_at": "2026-07-02T00:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:21.069Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "staging database",
      "predicate": "region",
      "object": "Reykjavik",
      "valid_at": "2026-06-01T12:00:00.000Z",
      "invalid_at": "2026-07-01T12:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.427Z",
      "expired_at": "2026-09-29T23:12:20.372Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "staging database",
      "predicate": "region",
      "object": "Frankfurt",
      "valid_at": "2026-07-01T12:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.372Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Selin Aydin",
      "valid_at": "2026-06-01T10:00:00.000Z",
      "invalid_at": "2026-07-01T10:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.351Z",
      "expired_at": "2026-09-29T23:12:20.262Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Baran Kaya",
      "valid_at": "2026-07-01T10:00:00.000Z",
      "invalid_at": "2026-07-31T10:00:00.000Z",
      "created_at": "2026-09-29T23:12:20.262Z",
      "expired_at": "2026-09-29T23:12:21.538Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Deniz Arslan",
      "valid_at": "2026-07-31T10:00:00.000Z",
      "invalid_at": "2026-08-30T10:00:00.000Z",
      "created_at": "2026-09-29T23:12:21.538Z",
      "expired_at": "2026-09-29T23:12:22.114Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Ece Yildiz",
      "valid_at": "2026-08-30T10:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:22.114Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "test suite",
      "predicate": "runner",
      "object": "Jest",
      "valid_at": "2026-06-01T20:00:00.000Z",
      "invalid_at": "2026-07-01T20:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.724Z",
      "expired_at": "2026-09-29T23:12:20.860Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "test suite",
      "predicate": "runner",
      "object": "Vitest",
      "valid_at": "2026-07-01T20:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.860Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "web app",
      "predicate": "design_system",
      "object": "MUI",
      "valid_at": "2026-06-01T22:00:00.000Z",
      "invalid_at": "2026-07-01T22:00:00.000Z",
      "created_at": "2026-09-29T23:12:19.809Z",
      "expired_at": "2026-09-29T23:12:20.975Z",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "web app",
      "predicate": "design_system",
      "object": "shadcn/ui",
      "valid_at": "2026-07-01T22:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:20.975Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     }
    ]
   },
   "append": {
    "store": {
     "rows": 62,
     "open_rows": 62,
     "closed_rows": 0,
     "rejects": []
    },
    "now": {
     "probes": 24,
     "current_in_block": 23,
     "old_value_in_block": 23,
     "old_only": 0,
     "no_row_for_slot": 1
    },
    "multi": {
     "probes": 6,
     "slots_asked": 18,
     "current_in_block": 13,
     "slots_with_old_value_in_block": 15,
     "slots_old_only": 2
    },
    "multi_probes": [
     {
      "ks": [
       0,
       17,
       22
      ],
      "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 cdn provider Fastly (inferred: ai-extract)  [2026-08-01 05:00 +03 \u2014 60 days ago]  edge_id=fe-42fdf1d0a16f4c\n\u2022 job queue backend Cloudflare Queues (inferred: ai-extract)  [2026-08-01 10:00 +03 \u2014 60 days ago]  edge_id=fe-a1ea724ad71342\n\u2022 cdn provider Cloudflare (inferred: ai-extract)  [2026-07-02 05:00 +03 \u2014 90 days ago]  edge_id=fe-63e5ccadc32d41\n\u2022 job queue backend Amazon SQS (inferred: ai-extract)  [2026-07-02 10:00 +03 \u2014 90 days ago]  edge_id=fe-6c658775926344\n\u2022 cdn provider CloudFront (inferred: ai-extract)  [2026-06-02 05:00 +03 \u2014 120 days ago]  edge_id=fe-42be2e483c644b\n\u2022 job queue backend RabbitMQ (inferred: ai-extract)  [2026-06-02 10:00 +03 \u2014 120 days ago]  edge_id=fe-23cc7312fcb34f\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Fastly",
        "valid_at": "2026-08-01T02:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Cloudflare Queues",
        "valid_at": "2026-08-01T07:00:00.000Z"
       },
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Cloudflare",
        "valid_at": "2026-07-02T02:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Amazon SQS",
        "valid_at": "2026-07-02T07:00:00.000Z"
       },
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "CloudFront",
        "valid_at": "2026-06-02T02:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "RabbitMQ",
        "valid_at": "2026-06-02T07:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 0,
        "current": "Fly.io, Frankfurt",
        "current_in_block": false,
        "old_in_block": []
       },
       {
        "k": 17,
        "current": "Fastly",
        "current_in_block": true,
        "old_in_block": [
         "CloudFront",
         "Cloudflare"
        ]
       },
       {
        "k": 22,
        "current": "Cloudflare Queues",
        "current_in_block": true,
        "old_in_block": [
         "RabbitMQ",
         "Amazon SQS"
        ]
       }
      ]
     },
     {
      "ks": [
       7,
       21,
       23
      ],
      "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 analytics warehouse platform Snowflake (inferred: ai-extract)  [2026-08-01 11:00 +03 \u2014 60 days ago]  edge_id=fe-69eca39f5aea45\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-fddd682f5a534f\n\u2022 analytics warehouse platform BigQuery (inferred: ai-extract)  [2026-07-02 11:00 +03 \u2014 90 days ago]  edge_id=fe-4bad8419283a40\n\u2022 primary database engine Postgres 15 (inferred: ai-extract)  [2026-07-01 19:00 +03 \u2014 90 days ago]  edge_id=fe-5eaf808a42c548\n\u2022 analytics warehouse platform Redshift (inferred: ai-extract)  [2026-06-02 11:00 +03 \u2014 120 days ago]  edge_id=fe-f4b8653b7c464b\n\u2022 primary database engine MySQL 8 (inferred: ai-extract)  [2026-06-01 19:00 +03 \u2014 120 days ago]  edge_id=fe-e05570e1bb8f4b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Snowflake",
        "valid_at": "2026-08-01T08:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "BigQuery",
        "valid_at": "2026-07-02T08:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 15",
        "valid_at": "2026-07-01T16:00:00.000Z"
       },
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Redshift",
        "valid_at": "2026-06-02T08:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "MySQL 8",
        "valid_at": "2026-06-01T16:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 7,
        "current": "Postgres 16",
        "current_in_block": true,
        "old_in_block": [
         "MySQL 8",
         "Postgres 15"
        ]
       },
       {
        "k": 21,
        "current": "Typesense",
        "current_in_block": false,
        "old_in_block": []
       },
       {
        "k": 23,
        "current": "Snowflake",
        "current_in_block": true,
        "old_in_block": [
         "Redshift",
         "BigQuery"
        ]
       }
      ]
     },
     {
      "ks": [
       1,
       5,
       10
      ],
      "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 monorepo package_manager bun (inferred: ai-extract)  [2026-07-31 22:00 +03 \u2014 60 days ago]  edge_id=fe-c9cdecb2698d48\n\u2022 monorepo package_manager pnpm (inferred: ai-extract)  [2026-07-01 22:00 +03 \u2014 90 days ago]  edge_id=fe-20b6d892fe6747\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-b14d111bedf248\n\u2022 monorepo package_manager npm (inferred: ai-extract)  [2026-06-01 22:00 +03 \u2014 120 days ago]  edge_id=fe-6c255022cc6542\n\u2022 payments service owner Mert Koseoglu (inferred: ai-extract)  [2026-06-01 17:00 +03 \u2014 120 days ago]  edge_id=fe-37ae6b9d7c5344\n\u2022 team on_call_engineer Selin Aydin (inferred: ai-extract)  [2026-06-01 13:00 +03 \u2014 121 days ago]  edge_id=fe-a1332afda01242\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "bun",
        "valid_at": "2026-07-31T19:00:00.000Z"
       },
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "pnpm",
        "valid_at": "2026-07-01T19:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "npm",
        "valid_at": "2026-06-01T19:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Mert Koseoglu",
        "valid_at": "2026-06-01T14:00:00.000Z"
       },
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Selin Aydin",
        "valid_at": "2026-06-01T10:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 1,
        "current": "Ece Yildiz",
        "current_in_block": false,
        "old_in_block": [
         "Selin Aydin"
        ]
       },
       {
        "k": 5,
        "current": "Ayse Demir",
        "current_in_block": true,
        "old_in_block": [
         "Mert Koseoglu"
        ]
       },
       {
        "k": 10,
        "current": "bun",
        "current_in_block": true,
        "old_in_block": [
         "npm",
         "pnpm"
        ]
       }
      ]
     },
     {
      "ks": [
       4,
       6,
       14
      ],
      "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 release branch release/2026.09 (inferred: ai-extract)  [2026-07-31 18:00 +03 \u2014 60 days ago]  edge_id=fe-df43dd25113147\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-f1db0080ab9349\n\u2022 release branch release/2026.08 (inferred: ai-extract)  [2026-07-01 18:00 +03 \u2014 90 days ago]  edge_id=fe-e958f923fb1b49\n\u2022 api service node_version Node 20 (inferred: ai-extract)  [2026-07-01 16:00 +03 \u2014 90 days ago]  edge_id=fe-08eb91dd432f43\n\u2022 release branch release/2026.07 (inferred: ai-extract)  [2026-06-01 18:00 +03 \u2014 120 days ago]  edge_id=fe-de08556ae1c140\n\u2022 api service node_version Node 18 (inferred: ai-extract)  [2026-06-01 16:00 +03 \u2014 120 days ago]  edge_id=fe-134127de862047\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.09",
        "valid_at": "2026-07-31T15:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.08",
        "valid_at": "2026-07-01T15:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 20",
        "valid_at": "2026-07-01T13:00:00.000Z"
       },
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.07",
        "valid_at": "2026-06-01T15:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 18",
        "valid_at": "2026-06-01T13:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 4,
        "current": "Node 22",
        "current_in_block": true,
        "old_in_block": [
         "Node 18",
         "Node 20"
        ]
       },
       {
        "k": 6,
        "current": "release/2026.09",
        "current_in_block": true,
        "old_in_block": [
         "release/2026.07",
         "release/2026.08"
        ]
       },
       {
        "k": 14,
        "current": "500 requests per minute",
        "current_in_block": false,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       18,
       19,
       20
      ],
      "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-c7501f8de84543\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-e119a32351ac4d\n\u2022 ios app minimum_ios_version iOS 16 (inferred: ai-extract)  [2026-07-02 07:00 +03 \u2014 90 days ago]  edge_id=fe-8c2bee58d0b943\n\u2022 database backups schedule daily at 02:00 UTC (inferred: ai-extract)  [2026-06-02 08:00 +03 \u2014 120 days ago]  edge_id=fe-6bdfe6f0f15248\n\u2022 ios app minimum_ios_version iOS 15 (inferred: ai-extract)  [2026-06-02 07:00 +03 \u2014 120 days ago]  edge_id=fe-f2010a01ba7243\n\u2022 log retention period 7 days (inferred: ai-extract)  [2026-06-02 06:00 +03 \u2014 120 days ago]  edge_id=fe-e00ed9ad06104c\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 16",
        "valid_at": "2026-07-02T04:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "daily at 02:00 UTC",
        "valid_at": "2026-06-02T05:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 15",
        "valid_at": "2026-06-02T04:00:00.000Z"
       },
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "7 days",
        "valid_at": "2026-06-02T03:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 18,
        "current": "90 days",
        "current_in_block": false,
        "old_in_block": [
         "7 days"
        ]
       },
       {
        "k": 19,
        "current": "iOS 17",
        "current_in_block": true,
        "old_in_block": [
         "iOS 15",
         "iOS 16"
        ]
       },
       {
        "k": 20,
        "current": "every 6 hours",
        "current_in_block": true,
        "old_in_block": [
         "daily at 02:00 UTC"
        ]
       }
      ]
     },
     {
      "ks": [
       8,
       9,
       11
      ],
      "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-8a5697cd60844d\n\u2022 error tracking tool Honeybadger (inferred: ai-extract)  [2026-07-01 20:00 +03 \u2014 90 days ago]  edge_id=fe-969df1800fce48\n\u2022 test suite runner Vitest (inferred: ai-extract)  [2026-07-01 23:00 +03 \u2014 90 days ago]  edge_id=fe-dae9267aa06b48\n\u2022 feature flags service LaunchDarkly (inferred: ai-extract)  [2026-06-01 21:00 +03 \u2014 120 days ago]  edge_id=fe-0df6243e03cb4c\n\u2022 error tracking tool Sentry (inferred: ai-extract)  [2026-06-01 20:00 +03 \u2014 120 days ago]  edge_id=fe-fb02e5ff62b64d\n\u2022 test suite runner Jest (inferred: ai-extract)  [2026-06-01 23:00 +03 \u2014 120 days ago]  edge_id=fe-64f4858feab949\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Honeybadger",
        "valid_at": "2026-07-01T17:00:00.000Z"
       },
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Vitest",
        "valid_at": "2026-07-01T20:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "LaunchDarkly",
        "valid_at": "2026-06-01T18:00:00.000Z"
       },
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Sentry",
        "valid_at": "2026-06-01T17:00:00.000Z"
       },
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Jest",
        "valid_at": "2026-06-01T20:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 8,
        "current": "Honeybadger",
        "current_in_block": true,
        "old_in_block": [
         "Sentry"
        ]
       },
       {
        "k": 9,
        "current": "Unleash",
        "current_in_block": true,
        "old_in_block": [
         "LaunchDarkly"
        ]
       },
       {
        "k": 11,
        "current": "Vitest",
        "current_in_block": true,
        "old_in_block": [
         "Jest"
        ]
       }
      ]
     }
    ],
    "as_of": {
     "probes": 38,
     "correct": 38,
     "unanswerable": 0
    },
    "now_probes": [
     {
      "k": 0,
      "q": "Where is production deployed now?",
      "current": "Fly.io, Frankfurt",
      "old": [
       "Hetzner Cloud, Falkenstein",
       "Render, Oregon"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 production deploy_target Fly.io, Frankfurt (inferred: ai-extract)  [2026-07-31 12:00 +03 \u2014 61 days ago]  edge_id=fe-188f43e803db4c\n\u2022 production deploy_target Render, Oregon (inferred: ai-extract)  [2026-07-01 12:00 +03 \u2014 91 days ago]  edge_id=fe-e5bda784fbb145\n\u2022 production deploy_target Hetzner Cloud, Falkenstein (inferred: ai-extract)  [2026-06-01 12:00 +03 \u2014 121 days ago]  edge_id=fe-d59c88a18d744f\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Fly.io, Frankfurt",
        "valid_at": "2026-07-31T09:00:00.000Z"
       },
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Render, Oregon",
        "valid_at": "2026-07-01T09:00:00.000Z"
       },
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Hetzner Cloud, Falkenstein",
        "valid_at": "2026-06-01T09:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Hetzner Cloud, Falkenstein",
       "Render, Oregon"
      ],
      "old_only": false
     },
     {
      "k": 1,
      "q": "Who is the on call engineer for the team now?",
      "current": "Ece Yildiz",
      "old": [
       "Selin Aydin",
       "Baran Kaya",
       "Deniz Arslan"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=4+ read=4 truncated=no\nINFERRED:\n\u2022 team on_call_engineer Ece Yildiz (inferred: ai-extract)  [2026-08-30 13:00 +03 \u2014 31 days ago]  edge_id=fe-a6588a869a8341\n\u2022 team on_call_engineer Deniz Arslan (inferred: ai-extract)  [2026-07-31 13:00 +03 \u2014 61 days ago]  edge_id=fe-c855597ba5f743\n\u2022 team on_call_engineer Baran Kaya (inferred: ai-extract)  [2026-07-01 13:00 +03 \u2014 91 days ago]  edge_id=fe-ddc4d53ddbc440\n\u2022 team on_call_engineer Selin Aydin (inferred: ai-extract)  [2026-06-01 13:00 +03 \u2014 121 days ago]  edge_id=fe-a1332afda01242\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Ece Yildiz",
        "valid_at": "2026-08-30T10:00:00.000Z"
       },
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Deniz Arslan",
        "valid_at": "2026-07-31T10:00:00.000Z"
       },
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Baran Kaya",
        "valid_at": "2026-07-01T10:00:00.000Z"
       },
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Selin Aydin",
        "valid_at": "2026-06-01T10:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Selin Aydin",
       "Baran Kaya",
       "Deniz Arslan"
      ],
      "old_only": false
     },
     {
      "k": 2,
      "q": "What does our CI run on now?",
      "current": "Buildkite",
      "old": [
       "CircleCI"
      ],
      "block": "",
      "rows": [],
      "current_in_block": false,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 3,
      "q": "Which region is the staging database in?",
      "current": "Frankfurt",
      "old": [
       "Reykjavik"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-fddd682f5a534f\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-079e17a229124b\n\u2022 primary database engine Postgres 15 (inferred: ai-extract)  [2026-07-01 19:00 +03 \u2014 90 days ago]  edge_id=fe-5eaf808a42c548\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-e119a32351ac4d\n\u2022 staging database region Reykjavik (inferred: ai-extract)  [2026-06-01 15:00 +03 \u2014 120 days ago]  edge_id=fe-16693ee586714f\n\u2022 primary database engine MySQL 8 (inferred: ai-extract)  [2026-06-01 19:00 +03 \u2014 120 days ago]  edge_id=fe-e05570e1bb8f4b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 15",
        "valid_at": "2026-07-01T16:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Reykjavik",
        "valid_at": "2026-06-01T12:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "MySQL 8",
        "valid_at": "2026-06-01T16:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Reykjavik"
      ],
      "old_only": false
     },
     {
      "k": 4,
      "q": "Which Node version does the api service use?",
      "current": "Node 22",
      "old": [
       "Node 18",
       "Node 20"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-f1db0080ab9349\n\u2022 api service node_version Node 20 (inferred: ai-extract)  [2026-07-01 16:00 +03 \u2014 90 days ago]  edge_id=fe-08eb91dd432f43\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-8a5697cd60844d\n\u2022 api service node_version Node 18 (inferred: ai-extract)  [2026-06-01 16:00 +03 \u2014 120 days ago]  edge_id=fe-134127de862047\n\u2022 feature flags service LaunchDarkly (inferred: ai-extract)  [2026-06-01 21:00 +03 \u2014 120 days ago]  edge_id=fe-0df6243e03cb4c\n\u2022 payments service owner Mert Koseoglu (inferred: ai-extract)  [2026-06-01 17:00 +03 \u2014 120 days ago]  edge_id=fe-37ae6b9d7c5344\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 20",
        "valid_at": "2026-07-01T13:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 18",
        "valid_at": "2026-06-01T13:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "LaunchDarkly",
        "valid_at": "2026-06-01T18:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Mert Koseoglu",
        "valid_at": "2026-06-01T14:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Node 18",
       "Node 20"
      ],
      "old_only": false
     },
     {
      "k": 5,
      "q": "Who owns the payments service?",
      "current": "Ayse Demir",
      "old": [
       "Mert Koseoglu"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-b14d111bedf248\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-8a5697cd60844d\n\u2022 api service node_version Node 20 (inferred: ai-extract)  [2026-07-01 16:00 +03 \u2014 90 days ago]  edge_id=fe-08eb91dd432f43\n\u2022 payments service owner Mert Koseoglu (inferred: ai-extract)  [2026-06-01 17:00 +03 \u2014 120 days ago]  edge_id=fe-37ae6b9d7c5344\n\u2022 feature flags service LaunchDarkly (inferred: ai-extract)  [2026-06-01 21:00 +03 \u2014 120 days ago]  edge_id=fe-0df6243e03cb4c\n\u2022 api service node_version Node 18 (inferred: ai-extract)  [2026-06-01 16:00 +03 \u2014 120 days ago]  edge_id=fe-134127de862047\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 20",
        "valid_at": "2026-07-01T13:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Mert Koseoglu",
        "valid_at": "2026-06-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "LaunchDarkly",
        "valid_at": "2026-06-01T18:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 18",
        "valid_at": "2026-06-01T13:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Mert Koseoglu"
      ],
      "old_only": false
     },
     {
      "k": 6,
      "q": "What is the current release branch?",
      "current": "release/2026.09",
      "old": [
       "release/2026.07",
       "release/2026.08"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 release branch release/2026.09 (inferred: ai-extract)  [2026-07-31 18:00 +03 \u2014 60 days ago]  edge_id=fe-df43dd25113147\n\u2022 release branch release/2026.08 (inferred: ai-extract)  [2026-07-01 18:00 +03 \u2014 90 days ago]  edge_id=fe-e958f923fb1b49\n\u2022 release branch release/2026.07 (inferred: ai-extract)  [2026-06-01 18:00 +03 \u2014 120 days ago]  edge_id=fe-de08556ae1c140\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.09",
        "valid_at": "2026-07-31T15:00:00.000Z"
       },
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.08",
        "valid_at": "2026-07-01T15:00:00.000Z"
       },
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.07",
        "valid_at": "2026-06-01T15:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "release/2026.07",
       "release/2026.08"
      ],
      "old_only": false
     },
     {
      "k": 7,
      "q": "Which engine does the primary database run?",
      "current": "Postgres 16",
      "old": [
       "MySQL 8",
       "Postgres 15"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-fddd682f5a534f\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-bc42973a59c845\n\u2022 primary database engine Postgres 15 (inferred: ai-extract)  [2026-07-01 19:00 +03 \u2014 90 days ago]  edge_id=fe-5eaf808a42c548\n\u2022 site search engine Meilisearch (inferred: ai-extract)  [2026-07-02 09:00 +03 \u2014 90 days ago]  edge_id=fe-05b4c44869034f\n\u2022 primary database engine MySQL 8 (inferred: ai-extract)  [2026-06-01 19:00 +03 \u2014 120 days ago]  edge_id=fe-e05570e1bb8f4b\n\u2022 site search engine Elasticsearch (inferred: ai-extract)  [2026-06-02 09:00 +03 \u2014 120 days ago]  edge_id=fe-02f157c053f446\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 15",
        "valid_at": "2026-07-01T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Meilisearch",
        "valid_at": "2026-07-02T06:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "MySQL 8",
        "valid_at": "2026-06-01T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Elasticsearch",
        "valid_at": "2026-06-02T06:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "MySQL 8",
       "Postgres 15"
      ],
      "old_only": false
     },
     {
      "k": 8,
      "q": "Which tool do we use for error tracking?",
      "current": "Honeybadger",
      "old": [
       "Sentry"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 error tracking tool Honeybadger (inferred: ai-extract)  [2026-07-01 20:00 +03 \u2014 90 days ago]  edge_id=fe-969df1800fce48\n\u2022 error tracking tool Sentry (inferred: ai-extract)  [2026-06-01 20:00 +03 \u2014 120 days ago]  edge_id=fe-fb02e5ff62b64d\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Honeybadger",
        "valid_at": "2026-07-01T17:00:00.000Z"
       },
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Sentry",
        "valid_at": "2026-06-01T17:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Sentry"
      ],
      "old_only": false
     },
     {
      "k": 9,
      "q": "Which service runs our feature flags?",
      "current": "Unleash",
      "old": [
       "LaunchDarkly"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-8a5697cd60844d\n\u2022 ci runs_on Buildkite (inferred: ai-extract)  [2026-07-01 14:00 +03 \u2014 91 days ago]  edge_id=fe-bb33172bbecb49\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-b14d111bedf248\n\u2022 feature flags service LaunchDarkly (inferred: ai-extract)  [2026-06-01 21:00 +03 \u2014 120 days ago]  edge_id=fe-0df6243e03cb4c\n\u2022 ci runs_on CircleCI (inferred: ai-extract)  [2026-06-01 14:00 +03 \u2014 121 days ago]  edge_id=fe-321896fba3374d\n\u2022 payments service owner Mert Koseoglu (inferred: ai-extract)  [2026-06-01 17:00 +03 \u2014 120 days ago]  edge_id=fe-37ae6b9d7c5344\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "ci",
        "predicate": "runs_on",
        "object": "Buildkite",
        "valid_at": "2026-07-01T11:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "LaunchDarkly",
        "valid_at": "2026-06-01T18:00:00.000Z"
       },
       {
        "subject": "ci",
        "predicate": "runs_on",
        "object": "CircleCI",
        "valid_at": "2026-06-01T11:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Mert Koseoglu",
        "valid_at": "2026-06-01T14:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "LaunchDarkly"
      ],
      "old_only": false
     },
     {
      "k": 10,
      "q": "Which package manager does the monorepo use?",
      "current": "bun",
      "old": [
       "npm",
       "pnpm"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 monorepo package_manager bun (inferred: ai-extract)  [2026-07-31 22:00 +03 \u2014 60 days ago]  edge_id=fe-c9cdecb2698d48\n\u2022 monorepo package_manager pnpm (inferred: ai-extract)  [2026-07-01 22:00 +03 \u2014 90 days ago]  edge_id=fe-20b6d892fe6747\n\u2022 monorepo package_manager npm (inferred: ai-extract)  [2026-06-01 22:00 +03 \u2014 120 days ago]  edge_id=fe-6c255022cc6542\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "bun",
        "valid_at": "2026-07-31T19:00:00.000Z"
       },
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "pnpm",
        "valid_at": "2026-07-01T19:00:00.000Z"
       },
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "npm",
        "valid_at": "2026-06-01T19:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "npm",
       "pnpm"
      ],
      "old_only": false
     },
     {
      "k": 11,
      "q": "Which runner does the test suite use?",
      "current": "Vitest",
      "old": [
       "Jest"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 test suite runner Vitest (inferred: ai-extract)  [2026-07-01 23:00 +03 \u2014 90 days ago]  edge_id=fe-dae9267aa06b48\n\u2022 test suite runner Jest (inferred: ai-extract)  [2026-06-01 23:00 +03 \u2014 120 days ago]  edge_id=fe-64f4858feab949\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Vitest",
        "valid_at": "2026-07-01T20:00:00.000Z"
       },
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Jest",
        "valid_at": "2026-06-01T20:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Jest"
      ],
      "old_only": false
     },
     {
      "k": 12,
      "q": "Where is the docs site hosted?",
      "current": "Mintlify",
      "old": [
       "GitBook"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-bc42973a59c845\n\u2022 docs site host Mintlify (inferred: ai-extract)  [2026-07-02 00:00 +03 \u2014 90 days ago]  edge_id=fe-36f098ca579041\n\u2022 site search engine Meilisearch (inferred: ai-extract)  [2026-07-02 09:00 +03 \u2014 90 days ago]  edge_id=fe-05b4c44869034f\n\u2022 docs site host GitBook (inferred: ai-extract)  [2026-06-02 00:00 +03 \u2014 120 days ago]  edge_id=fe-2bed2872e92043\n\u2022 site search engine Elasticsearch (inferred: ai-extract)  [2026-06-02 09:00 +03 \u2014 120 days ago]  edge_id=fe-02f157c053f446\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "Mintlify",
        "valid_at": "2026-07-01T21:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Meilisearch",
        "valid_at": "2026-07-02T06:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "GitBook",
        "valid_at": "2026-06-01T21:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Elasticsearch",
        "valid_at": "2026-06-02T06:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "GitBook"
      ],
      "old_only": false
     },
     {
      "k": 13,
      "q": "Which design system does the web app use?",
      "current": "shadcn/ui",
      "old": [
       "MUI"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-c7501f8de84543\n\u2022 web app design_system shadcn/ui (inferred: ai-extract)  [2026-07-02 01:00 +03 \u2014 90 days ago]  edge_id=fe-a14f7c08b79747\n\u2022 ios app minimum_ios_version iOS 16 (inferred: ai-extract)  [2026-07-02 07:00 +03 \u2014 90 days ago]  edge_id=fe-8c2bee58d0b943\n\u2022 web app design_system MUI (inferred: ai-extract)  [2026-06-02 01:00 +03 \u2014 120 days ago]  edge_id=fe-8b202c09245340\n\u2022 ios app minimum_ios_version iOS 15 (inferred: ai-extract)  [2026-06-02 07:00 +03 \u2014 120 days ago]  edge_id=fe-f2010a01ba7243\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "shadcn/ui",
        "valid_at": "2026-07-01T22:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 16",
        "valid_at": "2026-07-02T04:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "MUI",
        "valid_at": "2026-06-01T22:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 15",
        "valid_at": "2026-06-02T04:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "MUI"
      ],
      "old_only": false
     },
     {
      "k": 14,
      "q": "What is the public api rate limit?",
      "current": "500 requests per minute",
      "old": [
       "100 requests per minute",
       "300 requests per minute"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-3f7816bec56d46\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-f1db0080ab9349\n\u2022 public api rate_limit 300 requests per minute (inferred: ai-extract)  [2026-07-02 02:00 +03 \u2014 90 days ago]  edge_id=fe-0622bd745af44a\n\u2022 api service node_version Node 20 (inferred: ai-extract)  [2026-07-01 16:00 +03 \u2014 90 days ago]  edge_id=fe-08eb91dd432f43\n\u2022 public api rate_limit 100 requests per minute (inferred: ai-extract)  [2026-06-02 02:00 +03 \u2014 120 days ago]  edge_id=fe-c4573048c5c14d\n\u2022 api service node_version Node 18 (inferred: ai-extract)  [2026-06-01 16:00 +03 \u2014 120 days ago]  edge_id=fe-134127de862047\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "300 requests per minute",
        "valid_at": "2026-07-01T23:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 20",
        "valid_at": "2026-07-01T13:00:00.000Z"
       },
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "100 requests per minute",
        "valid_at": "2026-06-01T23:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 18",
        "valid_at": "2026-06-01T13:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "100 requests per minute",
       "300 requests per minute"
      ],
      "old_only": false
     },
     {
      "k": 15,
      "q": "How long is a sprint?",
      "current": "1 week",
      "old": [
       "2 weeks"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 sprint length 1 week (inferred: ai-extract)  [2026-07-02 03:00 +03 \u2014 90 days ago]  edge_id=fe-0df6650028ff47\n\u2022 sprint length 2 weeks (inferred: ai-extract)  [2026-06-02 03:00 +03 \u2014 120 days ago]  edge_id=fe-704a2e0084444d\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "sprint",
        "predicate": "length",
        "object": "1 week",
        "valid_at": "2026-07-02T00:00:00.000Z"
       },
       {
        "subject": "sprint",
        "predicate": "length",
        "object": "2 weeks",
        "valid_at": "2026-06-02T00:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "2 weeks"
      ],
      "old_only": false
     },
     {
      "k": 16,
      "q": "Which day is code freeze?",
      "current": "Thursday",
      "old": [
       "Friday"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 code freeze day Thursday (inferred: ai-extract)  [2026-07-02 04:00 +03 \u2014 90 days ago]  edge_id=fe-0e9fc17235264d\n\u2022 code freeze day Friday (inferred: ai-extract)  [2026-06-02 04:00 +03 \u2014 120 days ago]  edge_id=fe-883a0262951340\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "code freeze",
        "predicate": "day",
        "object": "Thursday",
        "valid_at": "2026-07-02T01:00:00.000Z"
       },
       {
        "subject": "code freeze",
        "predicate": "day",
        "object": "Friday",
        "valid_at": "2026-06-02T01:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Friday"
      ],
      "old_only": false
     },
     {
      "k": 17,
      "q": "Which cdn provider do we use?",
      "current": "Fastly",
      "old": [
       "CloudFront",
       "Cloudflare"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 cdn provider Fastly (inferred: ai-extract)  [2026-08-01 05:00 +03 \u2014 60 days ago]  edge_id=fe-42fdf1d0a16f4c\n\u2022 cdn provider Cloudflare (inferred: ai-extract)  [2026-07-02 05:00 +03 \u2014 90 days ago]  edge_id=fe-63e5ccadc32d41\n\u2022 cdn provider CloudFront (inferred: ai-extract)  [2026-06-02 05:00 +03 \u2014 120 days ago]  edge_id=fe-42be2e483c644b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Fastly",
        "valid_at": "2026-08-01T02:00:00.000Z"
       },
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Cloudflare",
        "valid_at": "2026-07-02T02:00:00.000Z"
       },
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "CloudFront",
        "valid_at": "2026-06-02T02:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "CloudFront",
       "Cloudflare"
      ],
      "old_only": false
     },
     {
      "k": 18,
      "q": "What is our log retention period?",
      "current": "90 days",
      "old": [
       "7 days",
       "30 days"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 log retention period 90 days (inferred: ai-extract)  [2026-08-01 06:00 +03 \u2014 60 days ago]  edge_id=fe-bae4bd0cdcac4e\n\u2022 log retention period 30 days (inferred: ai-extract)  [2026-07-02 06:00 +03 \u2014 90 days ago]  edge_id=fe-a44160c378e143\n\u2022 log retention period 7 days (inferred: ai-extract)  [2026-06-02 06:00 +03 \u2014 120 days ago]  edge_id=fe-e00ed9ad06104c\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "90 days",
        "valid_at": "2026-08-01T03:00:00.000Z"
       },
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "30 days",
        "valid_at": "2026-07-02T03:00:00.000Z"
       },
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "7 days",
        "valid_at": "2026-06-02T03:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "7 days",
       "30 days"
      ],
      "old_only": false
     },
     {
      "k": 19,
      "q": "What is the minimum iOS version of the ios app?",
      "current": "iOS 17",
      "old": [
       "iOS 15",
       "iOS 16"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-c7501f8de84543\n\u2022 ios app minimum_ios_version iOS 16 (inferred: ai-extract)  [2026-07-02 07:00 +03 \u2014 90 days ago]  edge_id=fe-8c2bee58d0b943\n\u2022 web app design_system shadcn/ui (inferred: ai-extract)  [2026-07-02 01:00 +03 \u2014 90 days ago]  edge_id=fe-a14f7c08b79747\n\u2022 ios app minimum_ios_version iOS 15 (inferred: ai-extract)  [2026-06-02 07:00 +03 \u2014 120 days ago]  edge_id=fe-f2010a01ba7243\n\u2022 web app design_system MUI (inferred: ai-extract)  [2026-06-02 01:00 +03 \u2014 120 days ago]  edge_id=fe-8b202c09245340\n\u2022 api service node_version Node 18 (inferred: ai-extract)  [2026-06-01 16:00 +03 \u2014 120 days ago]  edge_id=fe-134127de862047\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 16",
        "valid_at": "2026-07-02T04:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "shadcn/ui",
        "valid_at": "2026-07-01T22:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 15",
        "valid_at": "2026-06-02T04:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "MUI",
        "valid_at": "2026-06-01T22:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 18",
        "valid_at": "2026-06-01T13:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "iOS 15",
       "iOS 16"
      ],
      "old_only": false
     },
     {
      "k": 20,
      "q": "What is the database backups schedule?",
      "current": "every 6 hours",
      "old": [
       "daily at 02:00 UTC"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-e119a32351ac4d\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-079e17a229124b\n\u2022 primary database engine Postgres 15 (inferred: ai-extract)  [2026-07-01 19:00 +03 \u2014 90 days ago]  edge_id=fe-5eaf808a42c548\n\u2022 database backups schedule daily at 02:00 UTC (inferred: ai-extract)  [2026-06-02 08:00 +03 \u2014 120 days ago]  edge_id=fe-6bdfe6f0f15248\n\u2022 staging database region Reykjavik (inferred: ai-extract)  [2026-06-01 15:00 +03 \u2014 120 days ago]  edge_id=fe-16693ee586714f\n\u2022 primary database engine MySQL 8 (inferred: ai-extract)  [2026-06-01 19:00 +03 \u2014 120 days ago]  edge_id=fe-e05570e1bb8f4b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 15",
        "valid_at": "2026-07-01T16:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "daily at 02:00 UTC",
        "valid_at": "2026-06-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Reykjavik",
        "valid_at": "2026-06-01T12:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "MySQL 8",
        "valid_at": "2026-06-01T16:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "daily at 02:00 UTC"
      ],
      "old_only": false
     },
     {
      "k": 21,
      "q": "Which engine powers site search?",
      "current": "Typesense",
      "old": [
       "Elasticsearch",
       "Meilisearch"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-bc42973a59c845\n\u2022 site search engine Meilisearch (inferred: ai-extract)  [2026-07-02 09:00 +03 \u2014 90 days ago]  edge_id=fe-05b4c44869034f\n\u2022 docs site host Mintlify (inferred: ai-extract)  [2026-07-02 00:00 +03 \u2014 90 days ago]  edge_id=fe-36f098ca579041\n\u2022 site search engine Elasticsearch (inferred: ai-extract)  [2026-06-02 09:00 +03 \u2014 120 days ago]  edge_id=fe-02f157c053f446\n\u2022 docs site host GitBook (inferred: ai-extract)  [2026-06-02 00:00 +03 \u2014 120 days ago]  edge_id=fe-2bed2872e92043\n\u2022 primary database engine MySQL 8 (inferred: ai-extract)  [2026-06-01 19:00 +03 \u2014 120 days ago]  edge_id=fe-e05570e1bb8f4b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Meilisearch",
        "valid_at": "2026-07-02T06:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "Mintlify",
        "valid_at": "2026-07-01T21:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Elasticsearch",
        "valid_at": "2026-06-02T06:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "GitBook",
        "valid_at": "2026-06-01T21:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "MySQL 8",
        "valid_at": "2026-06-01T16:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Elasticsearch",
       "Meilisearch"
      ],
      "old_only": false
     },
     {
      "k": 22,
      "q": "What backend does the job queue use?",
      "current": "Cloudflare Queues",
      "old": [
       "RabbitMQ",
       "Amazon SQS"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 job queue backend Cloudflare Queues (inferred: ai-extract)  [2026-08-01 10:00 +03 \u2014 60 days ago]  edge_id=fe-a1ea724ad71342\n\u2022 job queue backend Amazon SQS (inferred: ai-extract)  [2026-07-02 10:00 +03 \u2014 90 days ago]  edge_id=fe-6c658775926344\n\u2022 job queue backend RabbitMQ (inferred: ai-extract)  [2026-06-02 10:00 +03 \u2014 120 days ago]  edge_id=fe-23cc7312fcb34f\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Cloudflare Queues",
        "valid_at": "2026-08-01T07:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Amazon SQS",
        "valid_at": "2026-07-02T07:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "RabbitMQ",
        "valid_at": "2026-06-02T07:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "RabbitMQ",
       "Amazon SQS"
      ],
      "old_only": false
     },
     {
      "k": 23,
      "q": "Which platform is the analytics warehouse on?",
      "current": "Snowflake",
      "old": [
       "Redshift",
       "BigQuery"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 analytics warehouse platform Snowflake (inferred: ai-extract)  [2026-08-01 11:00 +03 \u2014 60 days ago]  edge_id=fe-69eca39f5aea45\n\u2022 analytics warehouse platform BigQuery (inferred: ai-extract)  [2026-07-02 11:00 +03 \u2014 90 days ago]  edge_id=fe-4bad8419283a40\n\u2022 analytics warehouse platform Redshift (inferred: ai-extract)  [2026-06-02 11:00 +03 \u2014 120 days ago]  edge_id=fe-f4b8653b7c464b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Snowflake",
        "valid_at": "2026-08-01T08:00:00.000Z"
       },
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "BigQuery",
        "valid_at": "2026-07-02T08:00:00.000Z"
       },
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Redshift",
        "valid_at": "2026-06-02T08:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [
       "Redshift",
       "BigQuery"
      ],
      "old_only": false
     }
    ],
    "as_of_probes": [
     {
      "k": 0,
      "i": 0,
      "T": "2026-06-06T09:00:00.000Z",
      "expected": "Hetzner Cloud, Falkenstein",
      "got": "Hetzner Cloud, Falkenstein",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 0,
      "i": 1,
      "T": "2026-07-06T09:00:00.000Z",
      "expected": "Render, Oregon",
      "got": "Render, Oregon",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 1,
      "i": 0,
      "T": "2026-06-06T10:00:00.000Z",
      "expected": "Selin Aydin",
      "got": "Selin Aydin",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 1,
      "i": 1,
      "T": "2026-07-06T10:00:00.000Z",
      "expected": "Baran Kaya",
      "got": "Baran Kaya",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 1,
      "i": 2,
      "T": "2026-08-05T10:00:00.000Z",
      "expected": "Deniz Arslan",
      "got": "Deniz Arslan",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 2,
      "i": 0,
      "T": "2026-06-06T11:00:00.000Z",
      "expected": "CircleCI",
      "got": "CircleCI",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 3,
      "i": 0,
      "T": "2026-06-06T12:00:00.000Z",
      "expected": "Reykjavik",
      "got": "Reykjavik",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 4,
      "i": 0,
      "T": "2026-06-06T13:00:00.000Z",
      "expected": "Node 18",
      "got": "Node 18",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 4,
      "i": 1,
      "T": "2026-07-06T13:00:00.000Z",
      "expected": "Node 20",
      "got": "Node 20",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 5,
      "i": 0,
      "T": "2026-06-06T14:00:00.000Z",
      "expected": "Mert Koseoglu",
      "got": "Mert Koseoglu",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 6,
      "i": 0,
      "T": "2026-06-06T15:00:00.000Z",
      "expected": "release/2026.07",
      "got": "release/2026.07",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 6,
      "i": 1,
      "T": "2026-07-06T15:00:00.000Z",
      "expected": "release/2026.08",
      "got": "release/2026.08",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 7,
      "i": 0,
      "T": "2026-06-06T16:00:00.000Z",
      "expected": "MySQL 8",
      "got": "MySQL 8",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 7,
      "i": 1,
      "T": "2026-07-06T16:00:00.000Z",
      "expected": "Postgres 15",
      "got": "Postgres 15",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 8,
      "i": 0,
      "T": "2026-06-06T17:00:00.000Z",
      "expected": "Sentry",
      "got": "Sentry",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 9,
      "i": 0,
      "T": "2026-06-06T18:00:00.000Z",
      "expected": "LaunchDarkly",
      "got": "LaunchDarkly",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 10,
      "i": 0,
      "T": "2026-06-06T19:00:00.000Z",
      "expected": "npm",
      "got": "npm",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 10,
      "i": 1,
      "T": "2026-07-06T19:00:00.000Z",
      "expected": "pnpm",
      "got": "pnpm",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 11,
      "i": 0,
      "T": "2026-06-06T20:00:00.000Z",
      "expected": "Jest",
      "got": "Jest",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 12,
      "i": 0,
      "T": "2026-06-06T21:00:00.000Z",
      "expected": "GitBook",
      "got": "GitBook",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 13,
      "i": 0,
      "T": "2026-06-06T22:00:00.000Z",
      "expected": "MUI",
      "got": "MUI",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 14,
      "i": 0,
      "T": "2026-06-06T23:00:00.000Z",
      "expected": "100 requests per minute",
      "got": "100 requests per minute",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 14,
      "i": 1,
      "T": "2026-07-06T23:00:00.000Z",
      "expected": "300 requests per minute",
      "got": "300 requests per minute",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 15,
      "i": 0,
      "T": "2026-06-07T00:00:00.000Z",
      "expected": "2 weeks",
      "got": "2 weeks",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 16,
      "i": 0,
      "T": "2026-06-07T01:00:00.000Z",
      "expected": "Friday",
      "got": "Friday",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 17,
      "i": 0,
      "T": "2026-06-07T02:00:00.000Z",
      "expected": "CloudFront",
      "got": "CloudFront",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 17,
      "i": 1,
      "T": "2026-07-07T02:00:00.000Z",
      "expected": "Cloudflare",
      "got": "Cloudflare",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 18,
      "i": 0,
      "T": "2026-06-07T03:00:00.000Z",
      "expected": "7 days",
      "got": "7 days",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 18,
      "i": 1,
      "T": "2026-07-07T03:00:00.000Z",
      "expected": "30 days",
      "got": "30 days",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 19,
      "i": 0,
      "T": "2026-06-07T04:00:00.000Z",
      "expected": "iOS 15",
      "got": "iOS 15",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 19,
      "i": 1,
      "T": "2026-07-07T04:00:00.000Z",
      "expected": "iOS 16",
      "got": "iOS 16",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 20,
      "i": 0,
      "T": "2026-06-07T05:00:00.000Z",
      "expected": "daily at 02:00 UTC",
      "got": "daily at 02:00 UTC",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 21,
      "i": 0,
      "T": "2026-06-07T06:00:00.000Z",
      "expected": "Elasticsearch",
      "got": "Elasticsearch",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 21,
      "i": 1,
      "T": "2026-07-07T06:00:00.000Z",
      "expected": "Meilisearch",
      "got": "Meilisearch",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 22,
      "i": 0,
      "T": "2026-06-07T07:00:00.000Z",
      "expected": "RabbitMQ",
      "got": "RabbitMQ",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 22,
      "i": 1,
      "T": "2026-07-07T07:00:00.000Z",
      "expected": "Amazon SQS",
      "got": "Amazon SQS",
      "rows_open_at_T": 2,
      "correct": true
     },
     {
      "k": 23,
      "i": 0,
      "T": "2026-06-07T08:00:00.000Z",
      "expected": "Redshift",
      "got": "Redshift",
      "rows_open_at_T": 1,
      "correct": true
     },
     {
      "k": 23,
      "i": 1,
      "T": "2026-07-07T08:00:00.000Z",
      "expected": "BigQuery",
      "got": "BigQuery",
      "rows_open_at_T": 2,
      "correct": true
     }
    ],
    "store_rows": [
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "Redshift",
      "valid_at": "2026-06-02T08:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.784Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "BigQuery",
      "valid_at": "2026-07-02T08:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.676Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "Snowflake",
      "valid_at": "2026-08-01T08:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.193Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 18",
      "valid_at": "2026-06-01T13:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.031Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 20",
      "valid_at": "2026-07-01T13:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.976Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 22",
      "valid_at": "2026-07-31T13:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.792Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "CloudFront",
      "valid_at": "2026-06-02T02:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.566Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "Cloudflare",
      "valid_at": "2026-07-02T02:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.455Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "Fastly",
      "valid_at": "2026-08-01T02:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.021Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ci",
      "predicate": "runs_on",
      "object": "CircleCI",
      "valid_at": "2026-06-01T11:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:23.959Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ci",
      "predicate": "runs_on",
      "object": "Buildkite",
      "valid_at": "2026-07-01T11:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.906Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "code freeze",
      "predicate": "day",
      "object": "Friday",
      "valid_at": "2026-06-02T01:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.525Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "code freeze",
      "predicate": "day",
      "object": "Thursday",
      "valid_at": "2026-07-02T01:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.420Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "database backups",
      "predicate": "schedule",
      "object": "daily at 02:00 UTC",
      "valid_at": "2026-06-02T05:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.682Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "database backups",
      "predicate": "schedule",
      "object": "every 6 hours",
      "valid_at": "2026-07-02T05:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.564Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "docs site",
      "predicate": "host",
      "object": "GitBook",
      "valid_at": "2026-06-01T21:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.359Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "docs site",
      "predicate": "host",
      "object": "Mintlify",
      "valid_at": "2026-07-01T21:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.279Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "error tracking",
      "predicate": "tool",
      "object": "Sentry",
      "valid_at": "2026-06-01T17:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.177Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "error tracking",
      "predicate": "tool",
      "object": "Honeybadger",
      "valid_at": "2026-07-01T17:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.138Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "feature flags",
      "predicate": "service",
      "object": "LaunchDarkly",
      "valid_at": "2026-06-01T18:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.216Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "feature flags",
      "predicate": "service",
      "object": "Unleash",
      "valid_at": "2026-07-01T18:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.172Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 15",
      "valid_at": "2026-06-02T04:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.641Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 16",
      "valid_at": "2026-07-02T04:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.533Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 17",
      "valid_at": "2026-08-01T04:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.093Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "RabbitMQ",
      "valid_at": "2026-06-02T07:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.753Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "Amazon SQS",
      "valid_at": "2026-07-02T07:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.639Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "Cloudflare Queues",
      "valid_at": "2026-08-01T07:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.159Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "7 days",
      "valid_at": "2026-06-02T03:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.604Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "30 days",
      "valid_at": "2026-07-02T03:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.492Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "90 days",
      "valid_at": "2026-08-01T03:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.056Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "npm",
      "valid_at": "2026-06-01T19:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.248Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "pnpm",
      "valid_at": "2026-07-01T19:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.211Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "bun",
      "valid_at": "2026-07-31T19:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.946Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "payments service",
      "predicate": "owner",
      "object": "Mert Koseoglu",
      "valid_at": "2026-06-01T14:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.064Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "payments service",
      "predicate": "owner",
      "object": "Ayse Demir",
      "valid_at": "2026-07-01T14:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.016Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "MySQL 8",
      "valid_at": "2026-06-01T16:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.144Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "Postgres 15",
      "valid_at": "2026-07-01T16:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.103Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "Postgres 16",
      "valid_at": "2026-07-31T16:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.909Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Hetzner Cloud, Falkenstein",
      "valid_at": "2026-06-01T09:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:23.811Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Render, Oregon",
      "valid_at": "2026-07-01T09:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.827Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Fly.io, Frankfurt",
      "valid_at": "2026-07-31T09:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.724Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "100 requests per minute",
      "valid_at": "2026-06-01T23:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.448Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "300 requests per minute",
      "valid_at": "2026-07-01T23:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.349Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "500 requests per minute",
      "valid_at": "2026-07-31T23:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.983Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.07",
      "valid_at": "2026-06-01T15:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.097Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.08",
      "valid_at": "2026-07-01T15:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.052Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.09",
      "valid_at": "2026-07-31T15:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.830Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Elasticsearch",
      "valid_at": "2026-06-02T06:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.720Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Meilisearch",
      "valid_at": "2026-07-02T06:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.604Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Typesense",
      "valid_at": "2026-08-01T06:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.126Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "sprint",
      "predicate": "length",
      "object": "2 weeks",
      "valid_at": "2026-06-02T00:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.482Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "sprint",
      "predicate": "length",
      "object": "1 week",
      "valid_at": "2026-07-02T00:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.383Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "staging database",
      "predicate": "region",
      "object": "Reykjavik",
      "valid_at": "2026-06-01T12:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:23.994Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "staging database",
      "predicate": "region",
      "object": "Frankfurt",
      "valid_at": "2026-07-01T12:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.942Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Selin Aydin",
      "valid_at": "2026-06-01T10:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:23.850Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Baran Kaya",
      "valid_at": "2026-07-01T10:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.868Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Deniz Arslan",
      "valid_at": "2026-07-31T10:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.757Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Ece Yildiz",
      "valid_at": "2026-08-30T10:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:26.241Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "test suite",
      "predicate": "runner",
      "object": "Jest",
      "valid_at": "2026-06-01T20:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.285Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "test suite",
      "predicate": "runner",
      "object": "Vitest",
      "valid_at": "2026-07-01T20:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.245Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "web app",
      "predicate": "design_system",
      "object": "MUI",
      "valid_at": "2026-06-01T22:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:24.401Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "web app",
      "predicate": "design_system",
      "object": "shadcn/ui",
      "valid_at": "2026-07-01T22:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:25.314Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     }
    ]
   },
   "overwrite": {
    "store": {
     "rows": 24,
     "open_rows": 24,
     "closed_rows": 0,
     "rejects": []
    },
    "now": {
     "probes": 24,
     "current_in_block": 23,
     "old_value_in_block": 0,
     "old_only": 0,
     "no_row_for_slot": 1
    },
    "multi": {
     "probes": 6,
     "slots_asked": 18,
     "current_in_block": 18,
     "slots_with_old_value_in_block": 0,
     "slots_old_only": 0
    },
    "multi_probes": [
     {
      "ks": [
       0,
       17,
       22
      ],
      "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 cdn provider Fastly (inferred: ai-extract)  [2026-08-01 05:00 +03 \u2014 60 days ago]  edge_id=fe-112e0a80c3a94a\n\u2022 job queue backend Cloudflare Queues (inferred: ai-extract)  [2026-08-01 10:00 +03 \u2014 60 days ago]  edge_id=fe-fcfca065745d4a\n\u2022 production deploy_target Fly.io, Frankfurt (inferred: ai-extract)  [2026-07-31 12:00 +03 \u2014 61 days ago]  edge_id=fe-3df038329b774f\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Fastly",
        "valid_at": "2026-08-01T02:00:00.000Z"
       },
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Cloudflare Queues",
        "valid_at": "2026-08-01T07:00:00.000Z"
       },
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Fly.io, Frankfurt",
        "valid_at": "2026-07-31T09:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 0,
        "current": "Fly.io, Frankfurt",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 17,
        "current": "Fastly",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 22,
        "current": "Cloudflare Queues",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       7,
       21,
       23
      ],
      "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 analytics warehouse platform Snowflake (inferred: ai-extract)  [2026-08-01 11:00 +03 \u2014 60 days ago]  edge_id=fe-11860654537349\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-4e0219d461d448\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-1e9eaac230f246\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-66c9f443dc424b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-a4a575c3000343\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Snowflake",
        "valid_at": "2026-08-01T08:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 7,
        "current": "Postgres 16",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 21,
        "current": "Typesense",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 23,
        "current": "Snowflake",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       1,
       5,
       10
      ],
      "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 team on_call_engineer Ece Yildiz (inferred: ai-extract)  [2026-08-30 13:00 +03 \u2014 31 days ago]  edge_id=fe-ee01e8b8371047\n\u2022 monorepo package_manager bun (inferred: ai-extract)  [2026-07-31 22:00 +03 \u2014 60 days ago]  edge_id=fe-92c39ea9969240\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-2180b92e3aea41\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-2e40c701585d4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Ece Yildiz",
        "valid_at": "2026-08-30T10:00:00.000Z"
       },
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "bun",
        "valid_at": "2026-07-31T19:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 1,
        "current": "Ece Yildiz",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 5,
        "current": "Ayse Demir",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 10,
        "current": "bun",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       4,
       6,
       14
      ],
      "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 release branch release/2026.09 (inferred: ai-extract)  [2026-07-31 18:00 +03 \u2014 60 days ago]  edge_id=fe-5170ff8455014b\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-3a679cd6670442\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-52b19c9ad6114a\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-2e40c701585d4a\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-2180b92e3aea41\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.09",
        "valid_at": "2026-07-31T15:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 4,
        "current": "Node 22",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 6,
        "current": "release/2026.09",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 14,
        "current": "500 requests per minute",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       18,
       19,
       20
      ],
      "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=6+ read=6 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-52b19c9ad6114a\n\u2022 log retention period 90 days (inferred: ai-extract)  [2026-08-01 06:00 +03 \u2014 60 days ago]  edge_id=fe-9ec59b926a9943\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-4e0219d461d448\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-66c9f443dc424b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-a4a575c3000343\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "90 days",
        "valid_at": "2026-08-01T03:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 18,
        "current": "90 days",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 19,
        "current": "iOS 17",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 20,
        "current": "every 6 hours",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     },
     {
      "ks": [
       8,
       9,
       11
      ],
      "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-2e40c701585d4a\n\u2022 error tracking tool Honeybadger (inferred: ai-extract)  [2026-07-01 20:00 +03 \u2014 90 days ago]  edge_id=fe-cc29fb45b65f4d\n\u2022 test suite runner Vitest (inferred: ai-extract)  [2026-07-01 23:00 +03 \u2014 90 days ago]  edge_id=fe-2de6b0a1be8940\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-2180b92e3aea41\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Honeybadger",
        "valid_at": "2026-07-01T17:00:00.000Z"
       },
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Vitest",
        "valid_at": "2026-07-01T20:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "per": [
       {
        "k": 8,
        "current": "Honeybadger",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 9,
        "current": "Unleash",
        "current_in_block": true,
        "old_in_block": []
       },
       {
        "k": 11,
        "current": "Vitest",
        "current_in_block": true,
        "old_in_block": []
       }
      ]
     }
    ],
    "as_of": {
     "probes": 38,
     "correct": 0,
     "unanswerable": 38
    },
    "now_probes": [
     {
      "k": 0,
      "q": "Where is production deployed now?",
      "current": "Fly.io, Frankfurt",
      "old": [
       "Hetzner Cloud, Falkenstein",
       "Render, Oregon"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 production deploy_target Fly.io, Frankfurt (inferred: ai-extract)  [2026-07-31 12:00 +03 \u2014 61 days ago]  edge_id=fe-3df038329b774f\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "production",
        "predicate": "deploy_target",
        "object": "Fly.io, Frankfurt",
        "valid_at": "2026-07-31T09:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 1,
      "q": "Who is the on call engineer for the team now?",
      "current": "Ece Yildiz",
      "old": [
       "Selin Aydin",
       "Baran Kaya",
       "Deniz Arslan"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 team on_call_engineer Ece Yildiz (inferred: ai-extract)  [2026-08-30 13:00 +03 \u2014 31 days ago]  edge_id=fe-ee01e8b8371047\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "team",
        "predicate": "on_call_engineer",
        "object": "Ece Yildiz",
        "valid_at": "2026-08-30T10:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 2,
      "q": "What does our CI run on now?",
      "current": "Buildkite",
      "old": [
       "CircleCI"
      ],
      "block": "",
      "rows": [],
      "current_in_block": false,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 3,
      "q": "Which region is the staging database in?",
      "current": "Frankfurt",
      "old": [
       "Reykjavik"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-4e0219d461d448\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-a4a575c3000343\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-66c9f443dc424b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 4,
      "q": "Which Node version does the api service use?",
      "current": "Node 22",
      "old": [
       "Node 18",
       "Node 20"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=5+ read=5 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-52b19c9ad6114a\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-3a679cd6670442\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-2e40c701585d4a\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-2180b92e3aea41\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 5,
      "q": "Who owns the payments service?",
      "current": "Ayse Demir",
      "old": [
       "Mert Koseoglu"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-2180b92e3aea41\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-2e40c701585d4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 6,
      "q": "What is the current release branch?",
      "current": "release/2026.09",
      "old": [
       "release/2026.07",
       "release/2026.08"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 release branch release/2026.09 (inferred: ai-extract)  [2026-07-31 18:00 +03 \u2014 60 days ago]  edge_id=fe-5170ff8455014b\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "release",
        "predicate": "branch",
        "object": "release/2026.09",
        "valid_at": "2026-07-31T15:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 7,
      "q": "Which engine does the primary database run?",
      "current": "Postgres 16",
      "old": [
       "MySQL 8",
       "Postgres 15"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=4+ read=4 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-4e0219d461d448\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-1e9eaac230f246\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-66c9f443dc424b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-a4a575c3000343\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 8,
      "q": "Which tool do we use for error tracking?",
      "current": "Honeybadger",
      "old": [
       "Sentry"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 error tracking tool Honeybadger (inferred: ai-extract)  [2026-07-01 20:00 +03 \u2014 90 days ago]  edge_id=fe-cc29fb45b65f4d\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "error tracking",
        "predicate": "tool",
        "object": "Honeybadger",
        "valid_at": "2026-07-01T17:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 9,
      "q": "Which service runs our feature flags?",
      "current": "Unleash",
      "old": [
       "LaunchDarkly"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=4+ read=4 truncated=no\nINFERRED:\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 feature flags service Unleash (inferred: ai-extract)  [2026-07-01 21:00 +03 \u2014 90 days ago]  edge_id=fe-2e40c701585d4a\n\u2022 ci runs_on Buildkite (inferred: ai-extract)  [2026-07-01 14:00 +03 \u2014 91 days ago]  edge_id=fe-b270a78261a441\n\u2022 payments service owner Ayse Demir (inferred: ai-extract)  [2026-07-01 17:00 +03 \u2014 90 days ago]  edge_id=fe-2180b92e3aea41\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "feature flags",
        "predicate": "service",
        "object": "Unleash",
        "valid_at": "2026-07-01T18:00:00.000Z"
       },
       {
        "subject": "ci",
        "predicate": "runs_on",
        "object": "Buildkite",
        "valid_at": "2026-07-01T11:00:00.000Z"
       },
       {
        "subject": "payments service",
        "predicate": "owner",
        "object": "Ayse Demir",
        "valid_at": "2026-07-01T14:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 10,
      "q": "Which package manager does the monorepo use?",
      "current": "bun",
      "old": [
       "npm",
       "pnpm"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 monorepo package_manager bun (inferred: ai-extract)  [2026-07-31 22:00 +03 \u2014 60 days ago]  edge_id=fe-92c39ea9969240\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "monorepo",
        "predicate": "package_manager",
        "object": "bun",
        "valid_at": "2026-07-31T19:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 11,
      "q": "Which runner does the test suite use?",
      "current": "Vitest",
      "old": [
       "Jest"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 test suite runner Vitest (inferred: ai-extract)  [2026-07-01 23:00 +03 \u2014 90 days ago]  edge_id=fe-2de6b0a1be8940\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "test suite",
        "predicate": "runner",
        "object": "Vitest",
        "valid_at": "2026-07-01T20:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 12,
      "q": "Where is the docs site hosted?",
      "current": "Mintlify",
      "old": [
       "GitBook"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-1e9eaac230f246\n\u2022 docs site host Mintlify (inferred: ai-extract)  [2026-07-02 00:00 +03 \u2014 90 days ago]  edge_id=fe-22bde4d0010140\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "Mintlify",
        "valid_at": "2026-07-01T21:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 13,
      "q": "Which design system does the web app use?",
      "current": "shadcn/ui",
      "old": [
       "MUI"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-52b19c9ad6114a\n\u2022 web app design_system shadcn/ui (inferred: ai-extract)  [2026-07-02 01:00 +03 \u2014 90 days ago]  edge_id=fe-b274f1931f5444\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "shadcn/ui",
        "valid_at": "2026-07-01T22:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 14,
      "q": "What is the public api rate limit?",
      "current": "500 requests per minute",
      "old": [
       "100 requests per minute",
       "300 requests per minute"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=2+ read=2 truncated=no\nINFERRED:\n\u2022 public api rate_limit 500 requests per minute (inferred: ai-extract)  [2026-08-01 02:00 +03 \u2014 60 days ago]  edge_id=fe-3a679cd6670442\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "public api",
        "predicate": "rate_limit",
        "object": "500 requests per minute",
        "valid_at": "2026-07-31T23:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 15,
      "q": "How long is a sprint?",
      "current": "1 week",
      "old": [
       "2 weeks"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 sprint length 1 week (inferred: ai-extract)  [2026-07-02 03:00 +03 \u2014 90 days ago]  edge_id=fe-7c81b2e6a13b45\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "sprint",
        "predicate": "length",
        "object": "1 week",
        "valid_at": "2026-07-02T00:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 16,
      "q": "Which day is code freeze?",
      "current": "Thursday",
      "old": [
       "Friday"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 code freeze day Thursday (inferred: ai-extract)  [2026-07-02 04:00 +03 \u2014 90 days ago]  edge_id=fe-3d005e44f64c47\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "code freeze",
        "predicate": "day",
        "object": "Thursday",
        "valid_at": "2026-07-02T01:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 17,
      "q": "Which cdn provider do we use?",
      "current": "Fastly",
      "old": [
       "CloudFront",
       "Cloudflare"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 cdn provider Fastly (inferred: ai-extract)  [2026-08-01 05:00 +03 \u2014 60 days ago]  edge_id=fe-112e0a80c3a94a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "cdn",
        "predicate": "provider",
        "object": "Fastly",
        "valid_at": "2026-08-01T02:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 18,
      "q": "What is our log retention period?",
      "current": "90 days",
      "old": [
       "7 days",
       "30 days"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 log retention period 90 days (inferred: ai-extract)  [2026-08-01 06:00 +03 \u2014 60 days ago]  edge_id=fe-9ec59b926a9943\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "log retention",
        "predicate": "period",
        "object": "90 days",
        "valid_at": "2026-08-01T03:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 19,
      "q": "What is the minimum iOS version of the ios app?",
      "current": "iOS 17",
      "old": [
       "iOS 15",
       "iOS 16"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 ios app minimum_ios_version iOS 17 (inferred: ai-extract)  [2026-08-01 07:00 +03 \u2014 60 days ago]  edge_id=fe-52b19c9ad6114a\n\u2022 api service node_version Node 22 (inferred: ai-extract)  [2026-07-31 16:00 +03 \u2014 60 days ago]  edge_id=fe-e1fedaf294514c\n\u2022 web app design_system shadcn/ui (inferred: ai-extract)  [2026-07-02 01:00 +03 \u2014 90 days ago]  edge_id=fe-b274f1931f5444\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "ios app",
        "predicate": "minimum_ios_version",
        "object": "iOS 17",
        "valid_at": "2026-08-01T04:00:00.000Z"
       },
       {
        "subject": "api service",
        "predicate": "node_version",
        "object": "Node 22",
        "valid_at": "2026-07-31T13:00:00.000Z"
       },
       {
        "subject": "web app",
        "predicate": "design_system",
        "object": "shadcn/ui",
        "valid_at": "2026-07-01T22:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 20,
      "q": "What is the database backups schedule?",
      "current": "every 6 hours",
      "old": [
       "daily at 02:00 UTC"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-4e0219d461d448\n\u2022 database backups schedule every 6 hours (inferred: ai-extract)  [2026-07-02 08:00 +03 \u2014 90 days ago]  edge_id=fe-66c9f443dc424b\n\u2022 staging database region Frankfurt (inferred: ai-extract)  [2026-07-01 15:00 +03 \u2014 90 days ago]  edge_id=fe-a4a575c3000343\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "database backups",
        "predicate": "schedule",
        "object": "every 6 hours",
        "valid_at": "2026-07-02T05:00:00.000Z"
       },
       {
        "subject": "staging database",
        "predicate": "region",
        "object": "Frankfurt",
        "valid_at": "2026-07-01T12:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 21,
      "q": "Which engine powers site search?",
      "current": "Typesense",
      "old": [
       "Elasticsearch",
       "Meilisearch"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=3+ read=3 truncated=no\nINFERRED:\n\u2022 site search engine Typesense (inferred: ai-extract)  [2026-08-01 09:00 +03 \u2014 60 days ago]  edge_id=fe-1e9eaac230f246\n\u2022 primary database engine Postgres 16 (inferred: ai-extract)  [2026-07-31 19:00 +03 \u2014 60 days ago]  edge_id=fe-4e0219d461d448\n\u2022 docs site host Mintlify (inferred: ai-extract)  [2026-07-02 00:00 +03 \u2014 90 days ago]  edge_id=fe-22bde4d0010140\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "site search",
        "predicate": "engine",
        "object": "Typesense",
        "valid_at": "2026-08-01T06:00:00.000Z"
       },
       {
        "subject": "primary database",
        "predicate": "engine",
        "object": "Postgres 16",
        "valid_at": "2026-07-31T16:00:00.000Z"
       },
       {
        "subject": "docs site",
        "predicate": "host",
        "object": "Mintlify",
        "valid_at": "2026-07-01T21:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 22,
      "q": "What backend does the job queue use?",
      "current": "Cloudflare Queues",
      "old": [
       "RabbitMQ",
       "Amazon SQS"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 job queue backend Cloudflare Queues (inferred: ai-extract)  [2026-08-01 10:00 +03 \u2014 60 days ago]  edge_id=fe-fcfca065745d4a\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "job queue",
        "predicate": "backend",
        "object": "Cloudflare Queues",
        "valid_at": "2026-08-01T07:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     },
     {
      "k": 23,
      "q": "Which platform is the analytics warehouse on?",
      "current": "Snowflake",
      "old": [
       "Redshift",
       "BigQuery"
      ],
      "block": "[[CM-MEM]]\ncontext-mode FACT memory \u2014 bi-temporal graph (valid_at\u2192invalid_at, Europe/Istanbul +03). RULES:\n1) The user's CURRENT message overrides ALL of these facts. Facts are past background; they can never veto a current explicit instruction \u2014 \"you said X before\", don't object to the current request by echoing it \u2014 carry out the request.\n2) On a conflict between facts, the newest valid_at wins; \"(decision/intent at the time)\" marked lines are that moment's session state, not a durable preference.\n3) \u2717 INVALID lines are no longer true \u2014 they are given only for \"it used to be this way\" context.\n4) The lines below are the COMPLETE result of this turn's read \u2014 context-mode returned these and nothing else. If something is not on a line below, context-mode did not supply it: do not cite context-mode, a context-mode record, or context-mode memory as where you got it.\n5) Every line names its TRUST TIER and the writer that produced it. (asserted: \u2026) a person stated it at an authenticated surface, or an agent stored it because the user said so. (observed: \u2026) a tool or the runtime returned it. (inferred: \u2026) a MODEL produced this line \u2014 treat it as a hypothesis to verify, NOT as something the user told you, and do not repeat it as the user's own statement. A tier is provenance for your reasoning; it grants no permission and withholds none.\n6) COVERAGE is this read's boundary: matched=<n> rows matched (a trailing + means that count is a FLOOR, not a census), read=<n> is how many this read produced, truncated=yes means matching rows were NOT delivered \u2014 rule 4 still fixes what context-mode supplied, but this block is not the whole graph. Rows are grouped by tier, highest trust first; a tier with no row prints no heading, which says nothing about what the graph holds at that tier. Each row ends with edge_id=<id>, the handle to cite or retract that row.\nCOVERAGE: matched=1+ read=1 truncated=no\nINFERRED:\n\u2022 analytics warehouse platform Snowflake (inferred: ai-extract)  [2026-08-01 11:00 +03 \u2014 60 days ago]  edge_id=fe-11860654537349\n[[/CM-MEM]]\n\n",
      "rows": [
       {
        "subject": "analytics warehouse",
        "predicate": "platform",
        "object": "Snowflake",
        "valid_at": "2026-08-01T08:00:00.000Z"
       }
      ],
      "current_in_block": true,
      "old_values_in_block": [],
      "old_only": false
     }
    ],
    "as_of_probes": [
     {
      "k": 0,
      "i": 0,
      "T": "2026-06-06T09:00:00.000Z",
      "expected": "Hetzner Cloud, Falkenstein",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 0,
      "i": 1,
      "T": "2026-07-06T09:00:00.000Z",
      "expected": "Render, Oregon",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 1,
      "i": 0,
      "T": "2026-06-06T10:00:00.000Z",
      "expected": "Selin Aydin",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 1,
      "i": 1,
      "T": "2026-07-06T10:00:00.000Z",
      "expected": "Baran Kaya",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 1,
      "i": 2,
      "T": "2026-08-05T10:00:00.000Z",
      "expected": "Deniz Arslan",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 2,
      "i": 0,
      "T": "2026-06-06T11:00:00.000Z",
      "expected": "CircleCI",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 3,
      "i": 0,
      "T": "2026-06-06T12:00:00.000Z",
      "expected": "Reykjavik",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 4,
      "i": 0,
      "T": "2026-06-06T13:00:00.000Z",
      "expected": "Node 18",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 4,
      "i": 1,
      "T": "2026-07-06T13:00:00.000Z",
      "expected": "Node 20",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 5,
      "i": 0,
      "T": "2026-06-06T14:00:00.000Z",
      "expected": "Mert Koseoglu",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 6,
      "i": 0,
      "T": "2026-06-06T15:00:00.000Z",
      "expected": "release/2026.07",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 6,
      "i": 1,
      "T": "2026-07-06T15:00:00.000Z",
      "expected": "release/2026.08",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 7,
      "i": 0,
      "T": "2026-06-06T16:00:00.000Z",
      "expected": "MySQL 8",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 7,
      "i": 1,
      "T": "2026-07-06T16:00:00.000Z",
      "expected": "Postgres 15",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 8,
      "i": 0,
      "T": "2026-06-06T17:00:00.000Z",
      "expected": "Sentry",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 9,
      "i": 0,
      "T": "2026-06-06T18:00:00.000Z",
      "expected": "LaunchDarkly",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 10,
      "i": 0,
      "T": "2026-06-06T19:00:00.000Z",
      "expected": "npm",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 10,
      "i": 1,
      "T": "2026-07-06T19:00:00.000Z",
      "expected": "pnpm",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 11,
      "i": 0,
      "T": "2026-06-06T20:00:00.000Z",
      "expected": "Jest",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 12,
      "i": 0,
      "T": "2026-06-06T21:00:00.000Z",
      "expected": "GitBook",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 13,
      "i": 0,
      "T": "2026-06-06T22:00:00.000Z",
      "expected": "MUI",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 14,
      "i": 0,
      "T": "2026-06-06T23:00:00.000Z",
      "expected": "100 requests per minute",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 14,
      "i": 1,
      "T": "2026-07-06T23:00:00.000Z",
      "expected": "300 requests per minute",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 15,
      "i": 0,
      "T": "2026-06-07T00:00:00.000Z",
      "expected": "2 weeks",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 16,
      "i": 0,
      "T": "2026-06-07T01:00:00.000Z",
      "expected": "Friday",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 17,
      "i": 0,
      "T": "2026-06-07T02:00:00.000Z",
      "expected": "CloudFront",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 17,
      "i": 1,
      "T": "2026-07-07T02:00:00.000Z",
      "expected": "Cloudflare",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 18,
      "i": 0,
      "T": "2026-06-07T03:00:00.000Z",
      "expected": "7 days",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 18,
      "i": 1,
      "T": "2026-07-07T03:00:00.000Z",
      "expected": "30 days",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 19,
      "i": 0,
      "T": "2026-06-07T04:00:00.000Z",
      "expected": "iOS 15",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 19,
      "i": 1,
      "T": "2026-07-07T04:00:00.000Z",
      "expected": "iOS 16",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 20,
      "i": 0,
      "T": "2026-06-07T05:00:00.000Z",
      "expected": "daily at 02:00 UTC",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 21,
      "i": 0,
      "T": "2026-06-07T06:00:00.000Z",
      "expected": "Elasticsearch",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 21,
      "i": 1,
      "T": "2026-07-07T06:00:00.000Z",
      "expected": "Meilisearch",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 22,
      "i": 0,
      "T": "2026-06-07T07:00:00.000Z",
      "expected": "RabbitMQ",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 22,
      "i": 1,
      "T": "2026-07-07T07:00:00.000Z",
      "expected": "Amazon SQS",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 23,
      "i": 0,
      "T": "2026-06-07T08:00:00.000Z",
      "expected": "Redshift",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     },
     {
      "k": 23,
      "i": 1,
      "T": "2026-07-07T08:00:00.000Z",
      "expected": "BigQuery",
      "got": null,
      "rows_open_at_T": 0,
      "correct": false
     }
    ],
    "store_rows": [
     {
      "subject": "analytics warehouse",
      "predicate": "platform",
      "object": "Snowflake",
      "valid_at": "2026-08-01T08:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.757Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "api service",
      "predicate": "node_version",
      "object": "Node 22",
      "valid_at": "2026-07-31T13:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.192Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "cdn",
      "predicate": "provider",
      "object": "Fastly",
      "valid_at": "2026-08-01T02:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.446Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ci",
      "predicate": "runs_on",
      "object": "Buildkite",
      "valid_at": "2026-07-01T11:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:28.975Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "code freeze",
      "predicate": "day",
      "object": "Thursday",
      "valid_at": "2026-07-02T01:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.688Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "database backups",
      "predicate": "schedule",
      "object": "every 6 hours",
      "valid_at": "2026-07-02T05:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.904Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "docs site",
      "predicate": "host",
      "object": "Mintlify",
      "valid_at": "2026-07-01T21:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.476Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "error tracking",
      "predicate": "tool",
      "object": "Honeybadger",
      "valid_at": "2026-07-01T17:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.279Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "feature flags",
      "predicate": "service",
      "object": "Unleash",
      "valid_at": "2026-07-01T18:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.325Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "ios app",
      "predicate": "minimum_ios_version",
      "object": "iOS 17",
      "valid_at": "2026-08-01T04:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.604Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "job queue",
      "predicate": "backend",
      "object": "Cloudflare Queues",
      "valid_at": "2026-08-01T07:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.710Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "log retention",
      "predicate": "period",
      "object": "90 days",
      "valid_at": "2026-08-01T03:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.550Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "monorepo",
      "predicate": "package_manager",
      "object": "bun",
      "valid_at": "2026-07-31T19:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.358Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "payments service",
      "predicate": "owner",
      "object": "Ayse Demir",
      "valid_at": "2026-07-01T14:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.119Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "primary database",
      "predicate": "engine",
      "object": "Postgres 16",
      "valid_at": "2026-07-31T16:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.294Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "production",
      "predicate": "deploy_target",
      "object": "Fly.io, Frankfurt",
      "valid_at": "2026-07-31T09:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.101Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "public api",
      "predicate": "rate_limit",
      "object": "500 requests per minute",
      "valid_at": "2026-07-31T23:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.402Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "release",
      "predicate": "branch",
      "object": "release/2026.09",
      "valid_at": "2026-07-31T15:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.237Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "site search",
      "predicate": "engine",
      "object": "Typesense",
      "valid_at": "2026-08-01T06:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.661Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "sprint",
      "predicate": "length",
      "object": "1 week",
      "valid_at": "2026-07-02T00:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.638Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "staging database",
      "predicate": "region",
      "object": "Frankfurt",
      "valid_at": "2026-07-01T12:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.027Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "team",
      "predicate": "on_call_engineer",
      "object": "Ece Yildiz",
      "valid_at": "2026-08-30T10:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:30.799Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "test suite",
      "predicate": "runner",
      "object": "Vitest",
      "valid_at": "2026-07-01T20:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.431Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     },
     {
      "subject": "web app",
      "predicate": "design_system",
      "object": "shadcn/ui",
      "valid_at": "2026-07-01T22:00:00.000Z",
      "invalid_at": "",
      "created_at": "2026-09-29T23:12:29.536Z",
      "expired_at": "",
      "tier": "inferred",
      "source": "ai-extract"
     }
    ]
   }
  }
 },
 "answers": {
  "claude-haiku-4-5": {
   "run_at": "2026-09-29T23:14:34.963Z",
   "client": "claude -p, direct to api.anthropic.com, no tools, no setting sources",
   "system": "You answer questions about a software team's setup. Use only the memory block in the user's message. Answer in one short line per question, with the value only.",
   "summary": {
    "claude-haiku-4-5 bitemporal": {
     "answers": 30,
     "slot_answers": 42,
     "current": 41,
     "old": 0,
     "missing": 1,
     "errors": 0,
     "cost_usd": 0.17023299999999997
    },
    "claude-haiku-4-5 append": {
     "answers": 30,
     "slot_answers": 42,
     "current": 36,
     "old": 2,
     "missing": 4,
     "errors": 0,
     "cost_usd": 0.24253100000000002
    }
   },
   "results": [
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What does our CI run on now?",
     "slots": [
      {
       "cur": "Buildkite",
       "old": [
        "CircleCI"
       ]
      }
     ],
     "answer": "I don't have any information in the memory block to answer this question. The CM-MEM context is empty. Could you provide the team's setup details?",
     "cost": 0.004139,
     "grades": [
      "missing"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which Node version does the api service use?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      }
     ],
     "answer": "Node 22",
     "cost": 0.009054,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Who owns the payments service?",
     "slots": [
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      }
     ],
     "answer": "Ayse Demir",
     "cost": 0.005372999999999999,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which region is the staging database in?",
     "slots": [
      {
       "cur": "Frankfurt",
       "old": [
        "Reykjavik"
       ]
      }
     ],
     "answer": "Frankfurt",
     "cost": 0.005297,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Who is the on call engineer for the team now?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      }
     ],
     "answer": "Ece Yildiz (inferred from 31 days ago)",
     "cost": 0.005606,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Where is production deployed now?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      }
     ],
     "answer": "Fly.io, Frankfurt",
     "cost": 0.003438,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which tool do we use for error tracking?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      }
     ],
     "answer": "Honeybadger",
     "cost": 0.004633,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which engine does the primary database run?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      }
     ],
     "answer": "Postgres 16",
     "cost": 0.0051140000000000005,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the current release branch?",
     "slots": [
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      }
     ],
     "answer": "release/2026.09",
     "cost": 0.005218,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "bun",
     "cost": 0.004906000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which service runs our feature flags?",
     "slots": [
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      }
     ],
     "answer": "Unleash",
     "cost": 0.005023,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which runner does the test suite use?",
     "slots": [
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "Vitest",
     "cost": 0.004895,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Where is the docs site hosted?",
     "slots": [
      {
       "cur": "Mintlify",
       "old": [
        "GitBook"
       ]
      }
     ],
     "answer": "Mintlify.",
     "cost": 0.005289,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which design system does the web app use?",
     "slots": [
      {
       "cur": "shadcn/ui",
       "old": [
        "MUI"
       ]
      }
     ],
     "answer": "shadcn/ui",
     "cost": 0.004856000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the public api rate limit?",
     "slots": [
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "500 requests per minute",
     "cost": 0.005309,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "How long is a sprint?",
     "slots": [
      {
       "cur": "1 week",
       "old": [
        "2 weeks"
       ]
      }
     ],
     "answer": "1 week.",
     "cost": 0.005180000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which cdn provider do we use?",
     "slots": [
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      }
     ],
     "answer": "Fastly",
     "cost": 0.004883,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which day is code freeze?",
     "slots": [
      {
       "cur": "Thursday",
       "old": [
        "Friday"
       ]
      }
     ],
     "answer": "Thursday",
     "cost": 0.004543,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is our log retention period?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      }
     ],
     "answer": "90 days.",
     "cost": 0.0049,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the minimum iOS version of the ios app?",
     "slots": [
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      }
     ],
     "answer": "iOS 17",
     "cost": 0.004815,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the database backups schedule?",
     "slots": [
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Every 6 hours.",
     "cost": 0.0054269999999999995,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which engine powers site search?",
     "slots": [
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      }
     ],
     "answer": "Typesense",
     "cost": 0.0047729999999999995,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What backend does the job queue use?",
     "slots": [
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "Cloudflare Queues",
     "cost": 0.00515,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "Snowflake",
     "cost": 0.004743,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      },
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      },
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "**Production deployed:** Fly.io, Frankfurt\n\n**CDN provider:** Fastly\n\n**Job queue backend:** Cloudflare Queues",
     "cost": 0.0059559999999999995,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      },
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      },
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "Postgres 16\nTypesense\nSnowflake",
     "cost": 0.01001,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      },
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      },
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "On call engineer: Ece Yildiz\nPayments service owner: Ayse Demir\nPackage manager: bun",
     "cost": 0.009758,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      },
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      },
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "Node 22\n\nrelease/2026.09\n\n500 requests per minute",
     "cost": 0.009985,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      },
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      },
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "Honeybadger\nUnleash\nVitest",
     "cost": 0.002337,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      },
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      },
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Log retention period: 90 days\n\nMinimum iOS version: iOS 17\n\nDatabase backups schedule: Every 6 hours",
     "cost": 0.009623,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What does our CI run on now?",
     "slots": [
      {
       "cur": "Buildkite",
       "old": [
        "CircleCI"
       ]
      }
     ],
     "answer": "I don't have any information in the memory block provided. The memory is empty. \n\nTo answer your question about CI setup, I'd need you to provide that information in the memory block.",
     "cost": 0.004164,
     "grades": [
      "missing"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Where is production deployed now?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      }
     ],
     "answer": "Fly.io, Frankfurt (inferred from AI extraction, 61 days ago).",
     "cost": 0.006377000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which region is the staging database in?",
     "slots": [
      {
       "cur": "Frankfurt",
       "old": [
        "Reykjavik"
       ]
      }
     ],
     "answer": "Frankfurt",
     "cost": 0.009811,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Who is the on call engineer for the team now?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      }
     ],
     "answer": "Ece Yildiz",
     "cost": 0.010078,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Who owns the payments service?",
     "slots": [
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      }
     ],
     "answer": "Ayse Demir",
     "cost": 0.0028350000000000003,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which Node version does the api service use?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      }
     ],
     "answer": "Node 22",
     "cost": 0.010224,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What is the current release branch?",
     "slots": [
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      }
     ],
     "answer": "release/2026.09",
     "cost": 0.0059689999999999995,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which engine does the primary database run?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      }
     ],
     "answer": "Postgres 16",
     "cost": 0.009606,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which service runs our feature flags?",
     "slots": [
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      }
     ],
     "answer": "Unleash",
     "cost": 0.010256000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which tool do we use for error tracking?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      }
     ],
     "answer": "Honeybadger (most recent); also Sentry.",
     "cost": 0.006338,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "bun (inferred from recent analysis, July 31)",
     "cost": 0.006322,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which runner does the test suite use?",
     "slots": [
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "Vitest (most recent inference; also Jest previously noted).",
     "cost": 0.0062970000000000005,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which design system does the web app use?",
     "slots": [
      {
       "cur": "shadcn/ui",
       "old": [
        "MUI"
       ]
      }
     ],
     "answer": "shadcn/ui",
     "cost": 0.010008000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Where is the docs site hosted?",
     "slots": [
      {
       "cur": "Mintlify",
       "old": [
        "GitBook"
       ]
      }
     ],
     "answer": "Mintlify (inferred 60 days ago).",
     "cost": 0.010541000000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What is the public api rate limit?",
     "slots": [
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "500 requests per minute",
     "cost": 0.010858999999999999,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "How long is a sprint?",
     "slots": [
      {
       "cur": "1 week",
       "old": [
        "2 weeks"
       ]
      }
     ],
     "answer": "1 week (most recent; was 2 weeks 120 days ago).",
     "cost": 0.006802000000000001,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which day is code freeze?",
     "slots": [
      {
       "cur": "Thursday",
       "old": [
        "Friday"
       ]
      }
     ],
     "answer": "Thursday.",
     "cost": 0.005467,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What is our log retention period?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      }
     ],
     "answer": "90 days.",
     "cost": 0.006551999999999999,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What is the minimum iOS version of the ios app?",
     "slots": [
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      }
     ],
     "answer": "iOS 17",
     "cost": 0.01014,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which cdn provider do we use?",
     "slots": [
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      }
     ],
     "answer": "Fastly (most recent entry from 60 days ago; also inferred: Cloudflare and CloudFront appear in older records).",
     "cost": 0.008085,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What is the database backups schedule?",
     "slots": [
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Every 6 hours",
     "cost": 0.010101,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which engine powers site search?",
     "slots": [
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      }
     ],
     "answer": "Typesense",
     "cost": 0.010243,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "What backend does the job queue use?",
     "slots": [
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "Cloudflare Queues (most recent, inferred 60 days ago).",
     "cost": 0.007292999999999999,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "single",
     "q": "Which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "Snowflake (most recent inference, 60 days ago; also Redshift and BigQuery noted in earlier inferences).",
     "cost": 0.006146,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "multi",
     "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      },
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      },
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "Selin Aydin\nAyse Demir\nbun",
     "cost": 0.003294,
     "grades": [
      "old",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "multi",
     "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      },
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      },
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "Production deployment: Not in memory.\nCDN provider: Fastly.\nJob queue backend: Cloudflare Queues.",
     "cost": 0.01169,
     "grades": [
      "missing",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "multi",
     "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      },
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      },
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "Primary database: Postgres 16\nSite search engine: Not in memory\nAnalytics warehouse: Snowflake",
     "cost": 0.01211,
     "grades": [
      "current",
      "missing",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "multi",
     "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      },
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      },
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "Based on the memory block provided:\n\n**Node version:** Node 22\n\n**Current release branch:** release/2026.09\n\n**Public API rate limit:** Not in memory",
     "cost": 0.010322999999999999,
     "grades": [
      "current",
      "current",
      "missing"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "multi",
     "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      },
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      },
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Log retention period: 7 days\nMinimum iOS version: iOS 17\nDatabase backups schedule: every 6 hours",
     "cost": 0.004085,
     "grades": [
      "old",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-haiku-4-5",
     "arm": "append",
     "type": "multi",
     "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      },
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      },
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "Error tracking: Honeybadger\nFeature flags: Unleash\nTest suite runner: Vitest",
     "cost": 0.010515,
     "grades": [
      "current",
      "current",
      "current"
     ]
    }
   ]
  },
  "claude-opus-5-5": {
   "run_at": "2026-09-29T23:16:18.030Z",
   "client": "claude -p, direct to api.anthropic.com, no tools, no setting sources",
   "system": "You answer questions about a software team's setup. Use only the memory block in the user's message. Answer in one short line per question, with the value only.",
   "summary": {
    "claude-opus-5-5 bitemporal": {
     "answers": 30,
     "slot_answers": 42,
     "current": 40,
     "old": 0,
     "missing": 2,
     "errors": 0,
     "cost_usd": 0.5724279999999999
    },
    "claude-opus-5-5 append": {
     "answers": 30,
     "slot_answers": 42,
     "current": 36,
     "old": 2,
     "missing": 4,
     "errors": 0,
     "cost_usd": 0.6025864
    }
   },
   "results": [
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What does our CI run on now?",
     "slots": [
      {
       "cur": "Buildkite",
       "old": [
        "CircleCI"
       ]
      }
     ],
     "answer": "I don't know. The memory block is empty, so there's no record of what the CI runs on.",
     "cost": 0.011140800000000001,
     "grades": [
      "missing"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which region is the staging database in?",
     "slots": [
      {
       "cur": "Frankfurt",
       "old": [
        "Reykjavik"
       ]
      }
     ],
     "answer": "Frankfurt. This comes from a model inference, not something you stated, so it still needs checking.",
     "cost": 0.0194528,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Who is the on call engineer for the team now?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      }
     ],
     "answer": "Probably Ece Yildiz, but this is unconfirmed: it was model-inferred, not stated by anyone, and is from 31 days ago (2026-08-30).",
     "cost": 0.0181888,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which Node version does the api service use?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      }
     ],
     "answer": "Node 22 (a model inferred this and it hasn't been checked)",
     "cost": 0.020388800000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Who owns the payments service?",
     "slots": [
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      }
     ],
     "answer": "Ayse Demir, but this is inferred from a record 90 days old and hasn't been confirmed.",
     "cost": 0.019108800000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Where is production deployed now?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      }
     ],
     "answer": "Fly.io, Frankfurt. This is unconfirmed: it comes from one model-inferred record from 61 days ago, not something you stated.",
     "cost": 0.0179688,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which tool do we use for error tracking?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      }
     ],
     "answer": "Honeybadger, though this comes from an AI-inferred memory entry (July 2026) that nobody confirmed, so please check it.",
     "cost": 0.0184688,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which engine does the primary database run?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      }
     ],
     "answer": "Postgres 16. This comes from a model-generated memory record from 60 days ago, not something you stated, so it's worth checking.",
     "cost": 0.0205488,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the current release branch?",
     "slots": [
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      }
     ],
     "answer": "release/2026.09 \u2014 but this was inferred by a model 60 days ago, not confirmed by anyone, so please check it.",
     "cost": 0.017972799999999997,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which service runs our feature flags?",
     "slots": [
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      }
     ],
     "answer": "Unleash (a model inferred this from earlier notes and nobody has confirmed it, so check before relying on it)",
     "cost": 0.0203688,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "Probably bun, but this comes from a model's guess (inferred: ai-extract, 60 days old). Nobody has confirmed it.",
     "cost": 0.017980799999999998,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which runner does the test suite use?",
     "slots": [
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "Vitest. This is a model-inferred note, not something you confirmed, so please double-check it.",
     "cost": 0.018328800000000003,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Where is the docs site hosted?",
     "slots": [
      {
       "cur": "Mintlify",
       "old": [
        "GitBook"
       ]
      }
     ],
     "answer": "Mintlify (a model inferred this, so it hasn't been confirmed)",
     "cost": 0.0187008,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the public api rate limit?",
     "slots": [
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "500 requests per minute. This was inferred by a model and hasn't been confirmed, so please check it.",
     "cost": 0.0186768,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which design system does the web app use?",
     "slots": [
      {
       "cur": "shadcn/ui",
       "old": [
        "MUI"
       ]
      }
     ],
     "answer": "shadcn/ui. This is a model-inferred note from 90 days ago and hasn't been confirmed.",
     "cost": 0.0193888,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "How long is a sprint?",
     "slots": [
      {
       "cur": "1 week",
       "old": [
        "2 weeks"
       ]
      }
     ],
     "answer": "1 week. This comes from a model-inferred memory note from 90 days ago, not something you confirmed.",
     "cost": 0.0174928,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which day is code freeze?",
     "slots": [
      {
       "cur": "Thursday",
       "old": [
        "Friday"
       ]
      }
     ],
     "answer": "Thursday, though this is only a model's guess from 90 days ago, not something you told me directly.",
     "cost": 0.0176288,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which cdn provider do we use?",
     "slots": [
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      }
     ],
     "answer": "Probably Fastly, but no one has confirmed it. The only record is a model's guess from 2026-08-01, so please check.",
     "cost": 0.0185288,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is our log retention period?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      }
     ],
     "answer": "90 days. This comes from a single model-extracted record from 60 days ago, not from anything you stated, so please double-check it.",
     "cost": 0.0182768,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the database backups schedule?",
     "slots": [
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Every 6 hours. This comes from a model's inference from 90 days ago, not something you stated, so please check it.",
     "cost": 0.0195328,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which engine powers site search?",
     "slots": [
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      }
     ],
     "answer": "Typesense (a model inferred this and nobody has confirmed it)",
     "cost": 0.0188048,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What is the minimum iOS version of the ios app?",
     "slots": [
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      }
     ],
     "answer": "iOS 17. This was inferred by an AI extraction, not stated by a person, so it isn't confirmed.",
     "cost": 0.0196168,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "What backend does the job queue use?",
     "slots": [
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "Cloudflare Queues. This was inferred by a model on 2026-08-01, not stated by anyone, so it isn't confirmed.",
     "cost": 0.018660799999999998,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "single",
     "q": "Which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "Snowflake. This comes from a single model-inferred record, not something anyone confirmed, so please verify it.",
     "cost": 0.0183248,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      },
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      },
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "These answers come from saved memory, not from you. A model extracted them about 60 days ago, so please confirm them before relying on them.\n\n1. Production is deployed on Fly.io in Frankfurt.\n2. The CDN provider is Fastly.\n3. The job queue uses Cloudflare Queues.",
     "cost": 0.0207568,
     "grades": [
      "missing",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      },
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      },
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "These come from memory entries a model inferred. Nobody has confirmed them, so check them before relying on them:\n\n- Primary database: Postgres 16\n- Site search: Typesense\n- Analytics warehouse: Snowflake",
     "cost": 0.021280800000000002,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      },
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      },
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "Node 22 (model-inferred, not confirmed by you)\nrelease/2026.09 (model-inferred, 60 days old)\n500 requests per minute (model-inferred, not confirmed by you)",
     "cost": 0.0212528,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      },
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      },
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "I found these answers in memory, but none of them have been confirmed. They were inferred by AI, and all are 1\u20133 months old.\n\n- On-call engineer: Ece Yildiz\n- Payments service owner: Ayse Demir\n- Monorepo package manager: bun",
     "cost": 0.0223448,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      },
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      },
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Note: all three values come from AI-extracted (inferred) records that no one has confirmed, so please verify them.\n\n- Log retention period: 90 days\n- Minimum iOS version for the iOS app: iOS 17\n- Database backup schedule: every 6 hours",
     "cost": 0.0213608,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "bitemporal",
     "type": "multi",
     "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      },
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      },
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "These answers come from notes a model pulled out about 90 days ago. Nobody on the team confirmed them, so check before relying on them.\n\n1. Error tracking: Honeybadger\n2. Feature flags: Unleash\n3. Test runner: Vitest",
     "cost": 0.021880800000000002,
     "grades": [
      "current",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Where is production deployed now?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      }
     ],
     "answer": "Fly.io, Frankfurt. This is the newest entry, dated 2026-07-31, but a model inferred it and nobody has confirmed it.",
     "cost": 0.0204848,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What does our CI run on now?",
     "slots": [
      {
       "cur": "Buildkite",
       "old": [
        "CircleCI"
       ]
      }
     ],
     "answer": "I can't tell you. The memory block is empty, so there's no record of what the CI runs on.",
     "cost": 0.0014152000000000001,
     "grades": [
      "missing"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Who is the on call engineer for the team now?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      }
     ],
     "answer": "Probably Ece Yildiz, but this comes from an AI-extracted note from 2026-08-30 that hasn't been confirmed, so please check it.",
     "cost": 0.0198288,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which region is the staging database in?",
     "slots": [
      {
       "cur": "Frankfurt",
       "old": [
        "Reykjavik"
       ]
      }
     ],
     "answer": "Frankfurt. This comes from the newest memory record (2026-07-01), which replaced the earlier Reykjavik one, but it was model-inferred rather than confirmed, so it's worth checking.",
     "cost": 0.0209448,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which Node version does the api service use?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      }
     ],
     "answer": "Node 22 (from the newest memory record, but it was model-inferred and hasn't been confirmed)",
     "cost": 0.0215248,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Who owns the payments service?",
     "slots": [
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      }
     ],
     "answer": "Ayse Demir. This comes from an AI-extracted record dated 2026-07-01, so it hasn't been confirmed, and it replaced an older record that named Mert Koseoglu.",
     "cost": 0.0215568,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which engine does the primary database run?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      }
     ],
     "answer": "Postgres 16. This is the most recent AI-inferred record, not something you confirmed, so it's worth checking.",
     "cost": 0.020468800000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What is the current release branch?",
     "slots": [
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      }
     ],
     "answer": "release/2026.09. This comes from the newest memory entry (dated 2026-07-31), but a model inferred it rather than you stating it, so please double-check.",
     "cost": 0.019076799999999998,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which service runs our feature flags?",
     "slots": [
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      }
     ],
     "answer": "Unleash",
     "cost": 0.0206648,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which tool do we use for error tracking?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      }
     ],
     "answer": "Honeybadger, most likely. The newest record, from July 1 2026, says Honeybadger and replaced Sentry, but a model guessed it rather than someone confirming it.",
     "cost": 0.0187968,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "bun (the newest record, but it was extracted by a model and hasn't been confirmed)",
     "cost": 0.0200368,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which runner does the test suite use?",
     "slots": [
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "Vitest. This is a model guess that hasn't been confirmed, and it replaced an earlier guess of Jest.",
     "cost": 0.018584800000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Where is the docs site hosted?",
     "slots": [
      {
       "cur": "Mintlify",
       "old": [
        "GitBook"
       ]
      }
     ],
     "answer": "Mintlify (a model inferred this, it wasn't confirmed; it replaced GitBook)",
     "cost": 0.0204768,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which design system does the web app use?",
     "slots": [
      {
       "cur": "shadcn/ui",
       "old": [
        "MUI"
       ]
      }
     ],
     "answer": "shadcn/ui is the most recent entry. It's a model-inferred record, not confirmed by the team, and it replaced an earlier MUI record.",
     "cost": 0.0205288,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What is the public api rate limit?",
     "slots": [
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "500 requests per minute. This is the newest record, but it was model-inferred, so it should be checked.",
     "cost": 0.0203968,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "How long is a sprint?",
     "slots": [
      {
       "cur": "1 week",
       "old": [
        "2 weeks"
       ]
      }
     ],
     "answer": "1 week. This comes from an AI-inferred record dated 2026-07-02 and hasn't been confirmed; an older inferred record said 2 weeks.",
     "cost": 0.0205488,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which day is code freeze?",
     "slots": [
      {
       "cur": "Thursday",
       "old": [
        "Friday"
       ]
      }
     ],
     "answer": "Thursday (the newer entry, 2026-07-02, which replaced Friday; a model inferred it, so it's unconfirmed)",
     "cost": 0.0183608,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which cdn provider do we use?",
     "slots": [
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      }
     ],
     "answer": "Fastly. This is the most recent entry, but a model inferred it and nobody has confirmed it, and older entries said Cloudflare and CloudFront.",
     "cost": 0.0197888,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What is the minimum iOS version of the ios app?",
     "slots": [
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      }
     ],
     "answer": "iOS 17 (AI-inferred, not confirmed by you; replaced earlier iOS 16 and iOS 15 entries)",
     "cost": 0.020744799999999997,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What is our log retention period?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      }
     ],
     "answer": "90 days. This is the newest entry, but the AI inferred it, so it hasn't been confirmed; earlier values were 30 and 7 days.",
     "cost": 0.019048799999999998,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What is the database backups schedule?",
     "slots": [
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "Every 6 hours. This is a model-inferred record from 2026-07-02, not confirmed by anyone. It replaces an older entry that said daily at 02:00 UTC.",
     "cost": 0.0208808,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which engine powers site search?",
     "slots": [
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      }
     ],
     "answer": "Typesense (this comes from the most recent record, but it was inferred by a model, not confirmed by the user)",
     "cost": 0.020332799999999998,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "What backend does the job queue use?",
     "slots": [
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "Cloudflare Queues, though this isn't confirmed: it's the newest of three AI-inferred records, and older ones said Amazon SQS and RabbitMQ.",
     "cost": 0.019424800000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "single",
     "q": "Which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "Probably Snowflake. That's the newest record (2026-08-01), but an AI inferred it and no one confirmed it, and older records say BigQuery and Redshift.",
     "cost": 0.019684800000000002,
     "grades": [
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "multi",
     "q": "Which engine does the primary database run, which engine powers site search, and which platform is the analytics warehouse on?",
     "slots": [
      {
       "cur": "Postgres 16",
       "old": [
        "MySQL 8",
        "Postgres 15"
       ]
      },
      {
       "cur": "Typesense",
       "old": [
        "Elasticsearch",
        "Meilisearch"
       ]
      },
      {
       "cur": "Snowflake",
       "old": [
        "Redshift",
        "BigQuery"
       ]
      }
     ],
     "answer": "- **Primary database:** Postgres 16 (the most recent record, 2026-07-31. It's a model guess, not something you told me, so it's worth confirming.)\n- **Site search:** Not in my records.\n- **Analytics warehouse:** Snowflake (the most recent record, 2026-08-01. Also a model guess, so it's worth confirming.)",
     "cost": 0.0228808,
     "grades": [
      "current",
      "missing",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "multi",
     "q": "Where is production deployed, which cdn provider do we use, and what backend does the job queue use?",
     "slots": [
      {
       "cur": "Fly.io, Frankfurt",
       "old": [
        "Hetzner Cloud, Falkenstein",
        "Render, Oregon"
       ]
      },
      {
       "cur": "Fastly",
       "old": [
        "CloudFront",
        "Cloudflare"
       ]
      },
      {
       "cur": "Cloudflare Queues",
       "old": [
        "RabbitMQ",
        "Amazon SQS"
       ]
      }
     ],
     "answer": "Here's what my memory shows. The CDN and job queue answers come from notes the system inferred, not from anything you told me directly, so please double-check them.\n\n- **Production deployment:** I don't have any record of where production is deployed.\n- **CDN provider:** Fastly, according to the latest note from 2026-08-01. It replaced earlier notes saying Cloudflare, and before that CloudFront.\n- **Job queue backend:** Cloudflare Queues, according to the latest note from 2026-08-01. It replaced earlier notes saying Amazon SQS, and before that RabbitMQ.",
     "cost": 0.024660799999999997,
     "grades": [
      "missing",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "multi",
     "q": "Who is the on call engineer, who owns the payments service, and which package manager does the monorepo use?",
     "slots": [
      {
       "cur": "Ece Yildiz",
       "old": [
        "Selin Aydin",
        "Baran Kaya",
        "Deniz Arslan"
       ]
      },
      {
       "cur": "Ayse Demir",
       "old": [
        "Mert Koseoglu"
       ]
      },
      {
       "cur": "bun",
       "old": [
        "npm",
        "pnpm"
       ]
      }
     ],
     "answer": "I got these answers from AI-extracted memory, not from anything you confirmed, so treat them as unchecked. Where the records disagree, I went with the newest one.\n\n1. On-call engineer: Selin Aydin\n2. Payments service owner: Ayse Demir (earlier record said Mert Koseoglu)\n3. Monorepo package manager: bun (earlier records said pnpm, and before that npm)",
     "cost": 0.0241008,
     "grades": [
      "old",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "multi",
     "q": "Which Node version does the api service use, what is the current release branch, and what is the public api rate limit?",
     "slots": [
      {
       "cur": "Node 22",
       "old": [
        "Node 18",
        "Node 20"
       ]
      },
      {
       "cur": "release/2026.09",
       "old": [
        "release/2026.07",
        "release/2026.08"
       ]
      },
      {
       "cur": "500 requests per minute",
       "old": [
        "100 requests per minute",
        "300 requests per minute"
       ]
      }
     ],
     "answer": "1. **Node version:** Node 22. This is an inferred record from 2026-07-31, not something you told me directly, so it's worth checking.\n2. **Current release branch:** release/2026.09. This is also an inferred record from 2026-07-31 and should be checked.\n3. **Public API rate limit:** Unknown. My memory has nothing on it.",
     "cost": 0.022320800000000002,
     "grades": [
      "current",
      "current",
      "missing"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "multi",
     "q": "What is our log retention period, the minimum iOS version of the ios app, and the database backups schedule?",
     "slots": [
      {
       "cur": "90 days",
       "old": [
        "7 days",
        "30 days"
       ]
      },
      {
       "cur": "iOS 17",
       "old": [
        "iOS 15",
        "iOS 16"
       ]
      },
      {
       "cur": "every 6 hours",
       "old": [
        "daily at 02:00 UTC"
       ]
      }
     ],
     "answer": "- Log retention period: 7 days\n- Minimum iOS version: iOS 17\n- Database backups: every 6 hours\n\nAll three come from saved notes that were pulled out automatically rather than told to me by you, so they're worth checking. Where the notes conflicted, I used the most recent one.",
     "cost": 0.0220928,
     "grades": [
      "old",
      "current",
      "current"
     ]
    },
    {
     "model": "claude-opus-5-5",
     "arm": "append",
     "type": "multi",
     "q": "Which tool do we use for error tracking, which service runs our feature flags, and which runner does the test suite use?",
     "slots": [
      {
       "cur": "Honeybadger",
       "old": [
        "Sentry"
       ]
      },
      {
       "cur": "Unleash",
       "old": [
        "LaunchDarkly"
       ]
      },
      {
       "cur": "Vitest",
       "old": [
        "Jest"
       ]
      }
     ],
     "answer": "- Error tracking: Honeybadger (earlier Sentry)\n- Feature flags: Unleash (earlier LaunchDarkly)\n- Test runner: Vitest (earlier Jest)\n\nA model guessed all of these from past notes (July 1, 2026), so no one on the team has confirmed them yet.",
     "cost": 0.022928800000000003,
     "grades": [
      "current",
      "current",
      "current"
     ]
    }
   ]
  }
 }
}