{
  "profile": "data-package",
  "name": "makefield-floor-test-08284347",
  "title": "The floor test, run 08284347",
  "id": "MF-2026-001",
  "licenses": [
    {
      "name": "CC-BY-4.0",
      "path": "https://creativecommons.org/licenses/by/4.0/",
      "title": "Creative Commons Attribution 4.0"
    }
  ],
  "x_readme": {
    "path": "README.md",
    "rule": "Every field description is the README's own text, quoted from the line(s) in readme_lines: the column's whole bullet, the text after the column name and its colon, continuation lines joined with one space. A column the README does not define says 'not defined in the README' and has empty readme_lines, unless its wording has been ruled: then x_ruling names who ruled it, when, the README words it quotes with their line, and what in the data the rest rests on. A column with empty cells says what an empty cell means in x_missing: quoted from its own README bullet, or ruled with the measurement it rests on. Units come from the README or from a measurement named in unit_basis."
  },
  "x_generator": {
    "script": "scripts/codebook/make_sav.py",
    "python": "3.9.6",
    "pyreadstat": "1.2.8",
    "pandas": "2.3.3",
    "numpy": "2.0.2"
  },
  "resources": [
    {
      "name": "floor-test-cells-08284347",
      "path": "floor-test-cells-08284347.csv",
      "profile": "tabular-data-resource",
      "format": "csv",
      "encoding": "utf-8",
      "x_sav": "floor-test-cells-08284347.sav",
      "schema": {
        "missingValues": [
          ""
        ],
        "fields": [
          {
            "name": "intent_id",
            "type": "string",
            "description": "the question, as a code. The question set itself is not published.",
            "readme_lines": [
              35
            ]
          },
          {
            "name": "engine",
            "type": "string",
            "description": "the answer engine.",
            "readme_lines": [
              36
            ],
            "constraints": {
              "enum": [
                "chatgpt",
                "claude",
                "copilot",
                "gemini",
                "googleai",
                "metaai",
                "mistral",
                "perplexity"
              ]
            }
          },
          {
            "name": "early_wave",
            "type": "string",
            "description": "the two waves compared.",
            "readme_lines": [
              37
            ],
            "constraints": {
              "enum": [
                "makefield-cycle0",
                "makefield-cycle0-v2",
                "makefield-cycle0-v3",
                "makefield-cycle1"
              ]
            }
          },
          {
            "name": "early_date",
            "type": "date",
            "format": "default",
            "description": "the two waves compared.",
            "readme_lines": [
              37
            ]
          },
          {
            "name": "late_wave",
            "type": "string",
            "description": "the two waves compared.",
            "readme_lines": [
              37
            ],
            "constraints": {
              "enum": [
                "makefield-cycle0-v2",
                "makefield-cycle0-v3",
                "makefield-cycle1-20260811",
                "makefield-cycle2"
              ]
            }
          },
          {
            "name": "late_date",
            "type": "date",
            "format": "default",
            "description": "the two waves compared.",
            "readme_lines": [
              37
            ]
          },
          {
            "name": "gap_days",
            "type": "integer",
            "description": "the two waves compared.",
            "readme_lines": [
              37
            ],
            "unit": "days",
            "unit_basis": "calendar days between the two wave dates: gap_days = late_date - early_date in 111 of 111 rows; the README states no unit",
            "x_days_between": [
              "early_date",
              "late_date"
            ]
          },
          {
            "name": "draws_early",
            "type": "integer",
            "description": "how many times the question was asked in each wave.",
            "readme_lines": [
              38
            ],
            "unit": "count",
            "unit_basis": "README line 38, 'how many'"
          },
          {
            "name": "draws_late",
            "type": "integer",
            "description": "how many times the question was asked in each wave.",
            "readme_lines": [
              38
            ],
            "unit": "count",
            "unit_basis": "README line 38, 'how many'"
          },
          {
            "name": "within_pairs",
            "type": "integer",
            "description": "how many repeat pairs the floor rests on. **Median 2, range 0 to 18.** A cell with 0 has no floor and is excluded from the test.",
            "readme_lines": [
              39,
              40
            ],
            "unit": "count",
            "unit_basis": "README line 39, 'how many'",
            "constraints": {
              "minimum": 0,
              "maximum": 18
            }
          },
          {
            "name": "between_pairs",
            "type": "integer",
            "description": "pairs compared across the two waves.",
            "readme_lines": [
              41
            ],
            "unit": "count",
            "unit_basis": "README line 41, 'pairs compared'"
          },
          {
            "name": "domain_pairs_dropped_both_empty",
            "type": "integer",
            "description": "how many domain pairs were dropped because both sets of cited domains were empty. When both sets are empty the comparison returns nothing, not 1. Within- and between-wave pairs together; from the data, not the README.",
            "readme_lines": [],
            "unit": "count",
            "unit_basis": "the ruled wording, 'how many'",
            "x_ruling": {
              "by": "Denes (wording, 2026-10-29); the Methodologist gate, 2026-10-29 (scope)",
              "date": "2026-10-29",
              "note": "The README's column list does not name this column. The wording is ruled, not quoted; its second sentence is the README's own (readme_quote). The scope is a reading of the data: it assumes within_pairs and between_pairs count the same draw pairs the domain comparison runs on, which README l.68-70 supports and does not state.",
              "readme_quote": "When both sets are empty the comparison returns nothing, not 1.",
              "readme_line": 68,
              "scope": "Within- and between-wave pairs together; from the data, not the README.",
              "basis": "cells CSV, 111 rows: 0 exceed within_pairs + between_pairs, 16 exceed within_pairs, 13 exceed between_pairs; ruled by the Methodologist gate, 2026-10-29",
              "basis_counts": {
                "exceed_within_plus_between": 0,
                "exceed_within": 16,
                "exceed_between": 13
              }
            }
          },
          {
            "name": "noise_sim_text",
            "type": "number",
            "description": "the cell's own floor: median Jaccard over content tokens between repeats.",
            "readme_lines": [
              42
            ],
            "unit": "similarity 0 to 1",
            "unit_basis": "README lines 42 and 62, Jaccard over content-token sets",
            "constraints": {
              "minimum": 0,
              "maximum": 1
            },
            "x_missing": {
              "source": "ruling",
              "by": "the Methodologist gate, 2026-10-29",
              "meaning": "Empty in the rows where within_pairs is 0: a cell with 0 has no floor.",
              "basis": "measured: empty in exactly the 8 rows where within_pairs is 0",
              "readme_support": [
                39,
                40
              ]
            }
          },
          {
            "name": "drift_sim_text",
            "type": "number",
            "description": "median Jaccard between waves.",
            "readme_lines": [
              43
            ],
            "unit": "similarity 0 to 1",
            "unit_basis": "README lines 43 and 62, Jaccard over content-token sets",
            "constraints": {
              "minimum": 0,
              "maximum": 1
            }
          },
          {
            "name": "noise_sim_domains",
            "type": "number",
            "description": "the same over the set of cited domains.",
            "readme_lines": [
              44
            ],
            "unit": "similarity 0 to 1",
            "unit_basis": "README lines 44 and 65-66, Jaccard over the set of cited domains",
            "constraints": {
              "minimum": 0,
              "maximum": 1
            },
            "x_missing": {
              "source": "ruling",
              "by": "the Methodologist gate, 2026-10-29",
              "meaning": "Empty when within_pairs is 0, or when every within-wave domain pair was dropped because both answers cited nothing.",
              "basis": "measured: 20 empty rows, 8 with within_pairs 0 and 12 where domain_pairs_dropped_both_empty >= within_pairs",
              "readme_support": [
                68,
                69,
                70
              ]
            }
          },
          {
            "name": "drift_sim_domains",
            "type": "number",
            "description": "the same over the set of cited domains.",
            "readme_lines": [
              44
            ],
            "unit": "similarity 0 to 1",
            "unit_basis": "README lines 44 and 65-66, Jaccard over the set of cited domains",
            "constraints": {
              "minimum": 0,
              "maximum": 1
            },
            "x_missing": {
              "source": "ruling",
              "by": "the Methodologist gate, 2026-10-29",
              "meaning": "Empty when every between-wave domain pair was dropped because both answers cited nothing.",
              "basis": "measured: 14 empty rows, in all 14 domain_pairs_dropped_both_empty >= between_pairs",
              "readme_support": [
                68,
                69,
                70
              ]
            }
          },
          {
            "name": "delta_text",
            "type": "number",
            "description": "`drift_sim_text` minus `noise_sim_text`.",
            "readme_lines": [
              45
            ],
            "unit": "similarity difference, -1 to 1",
            "unit_basis": "README line 45, a difference of two similarities",
            "constraints": {
              "minimum": -1,
              "maximum": 1
            },
            "x_missing": {
              "source": "ruling",
              "by": "the Methodologist gate, 2026-10-29",
              "meaning": "Empty in the same rows as noise_sim_text, where within_pairs is 0: the cell has no floor to subtract.",
              "basis": "measured: empty if and only if noise_sim_text is empty, 111 of 111 rows",
              "readme_support": [
                39,
                40,
                45
              ]
            }
          },
          {
            "name": "text_moved_beyond_noise",
            "type": "integer",
            "description": "`1` when `drift_sim_text < noise_sim_text`, strictly. `0` when it is not. **Empty when the cell has no floor**, which is not the same as 0.",
            "readme_lines": [
              46,
              47
            ],
            "constraints": {
              "enum": [
                0,
                1
              ]
            },
            "x_value_labels": {
              "0": {
                "label": "`0` when it is not.",
                "readme_line": 47
              },
              "1": {
                "label": "`1` when `drift_sim_text < noise_sim_text`, strictly.",
                "readme_line": 46
              }
            },
            "x_missing": {
              "source": "readme",
              "meaning": "**Empty when the cell has no floor**, which is not the same as 0.",
              "readme_line": 47
            }
          }
        ]
      }
    },
    {
      "name": "floor-test-gap-pairs-08284347",
      "path": "floor-test-gap-pairs-08284347.csv",
      "profile": "tabular-data-resource",
      "format": "csv",
      "encoding": "utf-8",
      "x_sav": "floor-test-gap-pairs-08284347.sav",
      "schema": {
        "missingValues": [
          ""
        ],
        "fields": [
          {
            "name": "intent_id",
            "type": "string",
            "description": "the cell, keyed the same way as in the cells file.",
            "readme_lines": [
              51
            ]
          },
          {
            "name": "engine",
            "type": "string",
            "description": "the cell, keyed the same way as in the cells file.",
            "readme_lines": [
              51
            ],
            "constraints": {
              "enum": [
                "chatgpt",
                "claude",
                "copilot",
                "gemini",
                "googleai",
                "metaai",
                "mistral",
                "perplexity"
              ]
            }
          },
          {
            "name": "wave_a",
            "type": "string",
            "description": "the two waves of THIS pair. A cell appears once per pair of waves in which it has draws, so most cells have several rows. A pair whose question text differs between the two waves is not in this file at all.",
            "readme_lines": [
              52,
              53,
              54,
              55
            ],
            "constraints": {
              "enum": [
                "makefield-cycle0",
                "makefield-cycle0-20260705",
                "makefield-cycle0-v2",
                "makefield-cycle0-v3",
                "makefield-cycle1",
                "makefield-cycle1-20260811"
              ]
            }
          },
          {
            "name": "date_a",
            "type": "date",
            "format": "default",
            "description": "the two waves of THIS pair. A cell appears once per pair of waves in which it has draws, so most cells have several rows. A pair whose question text differs between the two waves is not in this file at all.",
            "readme_lines": [
              52,
              53,
              54,
              55
            ]
          },
          {
            "name": "wave_b",
            "type": "string",
            "description": "the two waves of THIS pair. A cell appears once per pair of waves in which it has draws, so most cells have several rows. A pair whose question text differs between the two waves is not in this file at all.",
            "readme_lines": [
              52,
              53,
              54,
              55
            ],
            "constraints": {
              "enum": [
                "makefield-cycle0-20260705",
                "makefield-cycle0-v2",
                "makefield-cycle0-v3",
                "makefield-cycle1",
                "makefield-cycle1-20260811",
                "makefield-cycle2"
              ]
            }
          },
          {
            "name": "date_b",
            "type": "date",
            "format": "default",
            "description": "the two waves of THIS pair. A cell appears once per pair of waves in which it has draws, so most cells have several rows. A pair whose question text differs between the two waves is not in this file at all.",
            "readme_lines": [
              52,
              53,
              54,
              55
            ]
          },
          {
            "name": "gap_days",
            "type": "integer",
            "description": "the two waves of THIS pair. A cell appears once per pair of waves in which it has draws, so most cells have several rows. A pair whose question text differs between the two waves is not in this file at all.",
            "readme_lines": [
              52,
              53,
              54,
              55
            ],
            "unit": "days",
            "unit_basis": "calendar days between the two wave dates: gap_days = date_b - date_a in 957 of 957 rows; the README states no unit",
            "x_days_between": [
              "date_a",
              "date_b"
            ]
          },
          {
            "name": "pairs",
            "type": "integer",
            "description": "how many draw-by-draw comparisons the row's similarity is a median over.",
            "readme_lines": [
              56
            ],
            "unit": "count",
            "unit_basis": "README line 56, 'how many'"
          },
          {
            "name": "across_wave_sim_text",
            "type": "number",
            "description": "median Jaccard between the draws of `wave_a` and the draws of `wave_b`. Never empty in this file.",
            "readme_lines": [
              57,
              58
            ],
            "unit": "similarity 0 to 1",
            "unit_basis": "README lines 57 and 62, Jaccard over content-token sets",
            "constraints": {
              "required": true,
              "minimum": 0,
              "maximum": 1
            }
          }
        ]
      }
    }
  ]
}
