<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Case Studies on Selectivity.net</title>
    <link>https://selectivity.net/tags/case-studies/</link>
    <description>Recent content in Case Studies on Selectivity.net</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 24 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://selectivity.net/tags/case-studies/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Selectivity Finds the Two CSV Records Behind a Calculation Bug</title>
      <link>https://selectivity.net/selectivity-finds-the-two-csv-records-behind-a-calculation-bug/</link>
      <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://selectivity.net/selectivity-finds-the-two-csv-records-behind-a-calculation-bug/</guid>
      <description>&lt;p&gt;A CSV importer can be wrong for a reason that disappears when a developer tests one record at a time. The example here needs a sequence: a discount for an order, followed later by a refund for that same order. A deliberately faulty importer deducts the refund twice when it has already seen a discount. A reference implementation deducts it once. The predicate compares the two results and asks Selectivity to preserve their disagreement.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selectivity Isolates Numeric Precision Loss in JSON Lines</title>
      <link>https://selectivity.net/selectivity-isolates-numeric-precision-loss-in-json-lines/</link>
      <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://selectivity.net/selectivity-isolates-numeric-precision-loss-in-json-lines/</guid>
      <description>&lt;p&gt;An input can be perfectly valid and still expose a disagreement between two consumers. In this example, one path keeps an integer identifier exactly as parsed. The other deliberately sends the identifier through a floating-point conversion before turning it back into an integer. Most of the generated JSON Lines records produce the same answer. One does not: 9007199254740993 becomes 9007199254740992 in the lossy path.&lt;/p&gt;&#xA;&lt;p&gt;Selectivity starts with 150 independently valid records totaling 4144 bytes. The predicate parses every remaining line, checks its schema, then compares the exact identifier sequence with the lossy sequence. In one run of Selectivity 0.1.1 on Linux x86_64 with Python 3.12.14, the result is one 41-byte record. The reducer makes 36 predicate executions across 12 candidate checks, with three observations per candidate and a five-second timeout. There are no unresolved checks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selectivity Keeps a Useful Checkpoint When the Test Budget Runs Out</title>
      <link>https://selectivity.net/selectivity-keeps-a-useful-checkpoint-when-the-test-budget-runs-out/</link>
      <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://selectivity.net/selectivity-keeps-a-useful-checkpoint-when-the-test-budget-runs-out/</guid>
      <description>&lt;p&gt;A reduction can be useful before it is finished. That matters when the predicate is expensive, a CI job has a fixed allowance, or a developer wants to make a first pass without committing to thousands of executions. Selectivity&amp;rsquo;s execution budget puts a bound on how many predicate processes can start. Reaching that limit leaves an incomplete run and the latest accepted checkpoint, rather than silently promoting unfinished work to a completed result.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selectivity Reduces a Configuration Bundle by Files and Lines</title>
      <link>https://selectivity.net/selectivity-reduces-a-configuration-bundle-by-files-and-lines/</link>
      <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://selectivity.net/selectivity-reduces-a-configuration-bundle-by-files-and-lines/</guid>
      <description>&lt;p&gt;The directory demonstration asks a slightly different question from the single-file example: can the reducer find both the relevant files and the relevant lines within them? The generated bundle starts with a.txt, nested/b.txt and junk.txt. The predicate needs alpha in the first file and omega in the nested file. Extra lines and the third file are unnecessary. It resembles a configuration bundle in shape, while remaining a generated text fixture with a known answer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Selectivity Reduces a Generated File From 20000 Lines to Two</title>
      <link>https://selectivity.net/selectivity-reduces-a-generated-file-from-20000-lines-to-two/</link>
      <pubDate>Sat, 24 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://selectivity.net/selectivity-reduces-a-generated-file-from-20000-lines-to-two/</guid>
      <description>&lt;p&gt;The line-reduction demonstration starts with a deliberately oversized text file whose answer is known in advance. It has 20000 lines: alpha appears on line 702, omega on line 17891, and every other line contains an irrelevant row label. The predicate succeeds only when both trigger lines are present. This makes a useful check of the reducer, because a result that loses either trigger is wrong and a result that keeps unnecessary lines is visibly unfinished.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
