{
  "slug": "spec",
  "baseline_sha256": "3eb5a248a9e97a66ee5d14ede35632786dd1217d7b0b4ddee56d7276b4c08bd8",
  "preview_sha256": "1cc6c161b5e158ea6692f5b4219fa1f9e1077127e6272a2953a2a2df8e601451",
  "source_text_nodes": 70,
  "numeric_occurrences": 26,
  "source_records": {
    "requirements": [
      [
        "R-01",
        "An agent can save the current filter state as a named view.",
        "Must",
        "Accepts when \u2014 a view reproduces an identical result set on reload, sort included."
      ],
      [
        "R-02",
        "Views list by last used: five shown, the rest behind \"All views\".",
        "Must",
        "Accepts when \u2014 an agent with twelve views sees their five most recent without opening a menu."
      ],
      [
        "R-03",
        "A view can be shared with a team and is read-only to everyone but its owner.",
        "Must",
        "Accepts when \u2014 a non-owner can duplicate a shared view and edit the copy, but not save over it."
      ],
      [
        "R-04",
        "Every view has a stable URL that anyone with queue access can open.",
        "Should",
        "Accepts when \u2014 the URL in a fresh session lands on the same queue, or a clear \"no access\" state."
      ],
      [
        "R-05",
        "Deleting a shared view warns with the number of people who used it recently.",
        "Should",
        "Accepts when \u2014 the confirmation names the 30-day count and requires a second action."
      ],
      [
        "R-06",
        "Up to three views can be pinned to the sidebar.",
        "Could",
        "Accepts when \u2014 pinning a fourth asks which pin to replace rather than failing silently."
      ]
    ],
    "scope": [
      "An agent can save the current filter state as a named view and return to it in one click.",
      "The filter sets a team rebuilds every morning are saved once and shared.",
      "Time from opening the queue to opening the first ticket: 90s median, target under 20."
    ],
    "out_of_scope": [
      "No query language. A view is the existing facets, saved.",
      "No per-view notification rules \u2014 that is the alerting project.",
      "No cross-workspace sharing in 1.9; the entitlement model is not there.",
      "No change to the default queue order for agents who never save a view."
    ],
    "questions": [
      [
        "What happens to a shared view when its owner leaves?",
        "Transfer to the team, or archive. Archiving is safer and will annoy people; transfer needs an owner-election rule we do not have.",
        "Needs: Mira Halvorsen with Legal \u2014 before the build starts, not before beta."
      ],
      [
        "Do saved views count against the 200-request filter rate limit?",
        "Five pinned views refreshing on queue open is five requests where there is one. At 400 agents that is a different traffic shape.",
        "Needs: Platform \u2014 by 12 September."
      ],
      [
        "Does \"ordered by last used\" leak activity between teammates?",
        "A view's position tells you when a colleague last worked the queue. Fine internally, probably; not obviously fine for regulated accounts.",
        "Needs: Security review \u2014 before beta."
      ]
    ]
  },
  "preview_records": {
    "requirements": [
      [
        "R-01",
        "An agent can save the current filter state as a named view.",
        "Must",
        "Accepts when \u2014 a view reproduces an identical result set on reload, sort included."
      ],
      [
        "R-02",
        "Views list by last used: five shown, the rest behind \"All views\".",
        "Must",
        "Accepts when \u2014 an agent with twelve views sees their five most recent without opening a menu."
      ],
      [
        "R-03",
        "A view can be shared with a team and is read-only to everyone but its owner.",
        "Must",
        "Accepts when \u2014 a non-owner can duplicate a shared view and edit the copy, but not save over it."
      ],
      [
        "R-04",
        "Every view has a stable URL that anyone with queue access can open.",
        "Should",
        "Accepts when \u2014 the URL in a fresh session lands on the same queue, or a clear \"no access\" state."
      ],
      [
        "R-05",
        "Deleting a shared view warns with the number of people who used it recently.",
        "Should",
        "Accepts when \u2014 the confirmation names the 30-day count and requires a second action."
      ],
      [
        "R-06",
        "Up to three views can be pinned to the sidebar.",
        "Could",
        "Accepts when \u2014 pinning a fourth asks which pin to replace rather than failing silently."
      ]
    ],
    "scope": [
      "An agent can save the current filter state as a named view and return to it in one click.",
      "The filter sets a team rebuilds every morning are saved once and shared.",
      "Time from opening the queue to opening the first ticket: 90s median, target under 20."
    ],
    "out_of_scope": [
      "No query language. A view is the existing facets, saved.",
      "No per-view notification rules \u2014 that is the alerting project.",
      "No cross-workspace sharing in 1.9; the entitlement model is not there.",
      "No change to the default queue order for agents who never save a view."
    ],
    "questions": [
      [
        "What happens to a shared view when its owner leaves?",
        "Transfer to the team, or archive. Archiving is safer and will annoy people; transfer needs an owner-election rule we do not have.",
        "Needs: Mira Halvorsen with Legal \u2014 before the build starts, not before beta."
      ],
      [
        "Do saved views count against the 200-request filter rate limit?",
        "Five pinned views refreshing on queue open is five requests where there is one. At 400 agents that is a different traffic shape.",
        "Needs: Platform \u2014 by 12 September."
      ],
      [
        "Does \"ordered by last used\" leak activity between teammates?",
        "A view's position tells you when a colleague last worked the queue. Fine internally, probably; not obviously fine for regulated accounts.",
        "Needs: Security review \u2014 before beta."
      ]
    ]
  },
  "checks": {
    "frozen_hash_matches_inventory": true,
    "inventory_nodes_match_source": true,
    "text_node_multiset_equal": true,
    "numeric_multiset_equal": true,
    "phrases": {
      "p": true,
      "h1": true,
      "h2": true,
      "h3": true,
      "footer": true,
      "td": true,
      "th": true,
      "code": true
    },
    "keyed_records_equal": true,
    "hrefs_equal": true,
    "code_bytes_equal": true,
    "svg_data_equal": true,
    "inline_style_data_equal": true
  },
  "missing_text_nodes": {},
  "unexpected_text_nodes": {},
  "additional_labels": [
    "No added or repeated visible text. Existing ID/priority and Accepts when labels retain original multiplicities."
  ],
  "all_pass": true
}
