)]}'
{
  "commit": "02c55175bb825ade4507ee5d459ea6a1ab6e0af5",
  "tree": "8fcddf83ee4ea65eb5fe9a753ab52f293cccbcf4",
  "parents": [
    "91a04616dc65ba76dbe9e5cf746b923b1402d303"
  ],
  "author": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Sun Jan 17 15:40:41 2021 -0500"
  },
  "committer": {
    "name": "Austin Clements",
    "email": "austin@google.com",
    "time": "Fri Jan 13 21:31:38 2023 +0000"
  },
  "message": "cmd/benchstat: new version of benchstat\n\nThis is a complete rewrite of benchstat. Basic usage remains the same,\nas does the core idea of showing statistical benchmark summaries and\nA/B comparisons in a table, but there are several major improvements.\n\nThe statistics is now more robust. Previously, benchstat used\nIQR-based outlier rejection, showed the mean of the reduced sample,\nits range, and did a non-parametric difference-of-distribution test on\nreduced samples. Any form of outlier rejection must start with\ndistributional assumptions, in this case assuming normality, which is\ngenerally not sound for benchmark data. Hence, now benchstat does not\ndo any outlier rejection. As a result, it must use robust summary\nstatistics as well, so benchstat now uses the median and confidence\ninterval of the median as summary statistics. Benchstat continues to\nuse the same Mann-Whitney U-test for the delta, but now does it on the\nfull samples since the U-test is already non-parametric, hence\nincreasing the power of this test.\n\nAs part of these statistical improvements, benchstat now detects and\nwarns about several common mistakes, such as having too few samples\nfor meaningful statistical results, or having incomparable geomeans.\n\nThe output format is more consistent. Previously, benchstat\ntransformed units like \"ns/op\" into a metric like \"time/op\", which it\nused as a column header; and a numerator like \"sec\", which it used to\nlabel each measurement. This was easy enough for the standard units\nused by the testing framework, but was basically impossible to\ngeneralize to custom units. Now, benchstat does unit scaling, but\notherwise leaves units alone. The full (scaled) unit is used as a\ncolumn header and each measurement is simply a scaled value shown with\nan SI prefix. This also means that the text and CSV formats can be\nmuch more similar while still allowing the CSV format to be usefully\nmachine-readable.\n\nBenchstat will also now do A/B comparisons even if there are more than\ntwo inputs. It shows a comparison to the base in the second and all\nsubsequent columns. This approach is consistent for any number of\ninputs.\n\nBenchstat now supports the full Go benchmark format, including\nsophisticated control over exactly how it structures the results into\nrows, columns, and tables. This makes it easy to do meaningful\ncomparisons across benchmark data that isn\u0027t simply structured into\ntwo input files, and gives significantly more control over how results\nare sorted. The default behavior is still to turn each input file into\na column and each benchmark into a row.\n\nFixes golang/go#19565 by showing all results, even if the benchmark\nsets don\u0027t match across columns, and warning when geomean sets are\nincompatible.\n\nFixes golang/go#19634 by no longer doing outlier rejection and clearly\nreporting when there are not enough samples to do a meaningful\ndifference test.\n\nUpdates golang/go#23471 by providing more through command\ndocumentation. I\u0027m not sure it quite fixes this issue, but it\u0027s much\nbetter than it was.\n\nFixes golang/go#30368 because benchstat now supports filter\nexpressions, which can also filter down units.\n\nFixes golang/go#33169 because benchstat now always shows file\nconfiguration labels.\n\nUpdates golang/go#43744 by integrating unit metadata to control\nstatistical assumptions into the main tool that implements those\nassumptions.\n\nFixes golang/go#48380 by introducing a way to override labels from the\ncommand line rather than always using file names.\n\nChange-Id: Ie2c5a12024e84b4918e483df2223eb1f10413a4f\nReviewed-on: https://go-review.googlesource.com/c/perf/+/309969\nRun-TryBot: Austin Clements \u003caustin@google.com\u003e\nReviewed-by: Michael Pratt \u003cmpratt@google.com\u003e\nTryBot-Result: Gopher Robot \u003cgobot@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0ca601042a12df0abea01664c75eff17781cf7a3",
      "new_mode": 33188,
      "new_path": "benchstat/doc.go"
    },
    {
      "type": "delete",
      "old_id": "db5ec61e4714c7cf05a83ac749c9d26356afd425",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/README.md",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e736361ef277cb76a2e7a93d9568ab67257ce9d7",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/doc_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f5849facfddba9a53ed53a995b9e45de4a888f68",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/internal/benchtab/builder.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5409a7d3e85e95ad127e585747d4b5e35ccbb12b",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/internal/benchtab/table.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a703d7bc280ad420ce51527ac7afdd592f7ab145",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/internal/texttab/table.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "59fdf4e23a8553ede00da6287adbe6de23caf3ca",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/internal/texttab/table_test.go"
    },
    {
      "type": "modify",
      "old_id": "071d6b409373806f151569d00169d14bcc88a05b",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/main.go",
      "new_id": "9fe399e055a53bfa458d4ff89403da32c98c2f1b",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/main.go"
    },
    {
      "type": "modify",
      "old_id": "50f54dc32466595607d29cd419bcc945da8b94f1",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/main_test.go",
      "new_id": "d7da40316aa7069b881f83a1d50f3fcfb4ea7331",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/main_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b1093ecee79fe695dd3881279517358eb16c001b",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/.gitignore"
    },
    {
      "type": "delete",
      "old_id": "2ce36ba3d375f9e009ea43251eccf9b4389059ca",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/all.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "7480ef2c47e1502389053e8a39638c313bdf5ddc",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/allcsv.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "3916a37593a95add342594ea3461fc09220843a4",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/allnorangecsv.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "eff91dbc10f45befce942b8f6e8cb21c3360b31c",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/allnosplit.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "b3513a4e6793c19a10ddfc1210c0b59eb1b67e9b",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/allnosplitcsv.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c7285de57df48c8b9902729fb16b5914c955589b",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/bench_test.go"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b45c6226a852759840d4c31d0909f56eb9189fd9",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/crc-new.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cd1b57eeb2bb1353f52e37eb7a9ac73f67ea11bb",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/crc-old.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "611b70369ea53fdca6d5d0794c1c4276d6ca5a5c",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/crcIgnore.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9c0a2bfb65b41334a7eeb4f124d3140aa3487299",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/crcOldNew.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a0702b56625e46707be6df4df48d1c135d727c91",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/crcSizeVsPoly.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "80e42d75b328b00921bbc700c37e21a13623d25f",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/csvErrors.stderr"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49f65b0912584837fd6b12bc4bd9f3a89e327cc0",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/csvErrors.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8a8d88d583df6f64cc01e35dca371cd900db6217",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/csvOldNew.stdout"
    },
    {
      "type": "delete",
      "old_id": "020c044514a903bd50473478624c48fd5aba7753",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/deltasort.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "f98bd9ef250525336dea3d624309b21ef3e4c14d",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/example.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6733791c7b16276e0ef49f2571e37017139faba6",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/examplehtml.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9463228465a192817601a1ec4c8301f24ee88254",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/examplenew.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "13c69a92795a101ee38b21d8144cd38e6a50844d",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/exampleold.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9ec3f517b9ef782e8c8f012fb03d7187f7dd9591",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/exampleold.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "72c3860f1082f4fc98b0d04c3d05ed0f7a011c01",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/exampleoldhtml.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8564c0b86b48205b3cde4a320599fc654eaf1509",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/issue19565.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eefcbebd9f4d379eb7145860e884c4664f7322cd",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/issue19565.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3c7750c17430ebc37a2212e3e8d58eac5060ab46",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/issue19634.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a2cb3ec026f7f5604e6472c686e3be116b541e97",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/issue19634.txt"
    },
    {
      "type": "delete",
      "old_id": "2dea70b54e0e778a4c460bb1fe088f36d742ad6e",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/namesort.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "b45c6226a852759840d4c31d0909f56eb9189fd9",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/new.txt",
      "new_id": "2ec1a22e805933593610d0a417ff1cc84c183e5c",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/new.txt"
    },
    {
      "type": "delete",
      "old_id": "a1eb317a30e44edd7a63b2d0dd5a859ccede30c8",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/new4.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "cd1b57eeb2bb1353f52e37eb7a9ac73f67ea11bb",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/old.txt",
      "new_id": "7dab55959666a37247a0706a6d834649ad09db6f",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/old.txt"
    },
    {
      "type": "delete",
      "old_id": "3e271a226f9215a085b0ef69d676b6863f8ac1b7",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/oldcsv.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "c754683d7585601a03f43a6f3ab73586fc9996e4",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/oldnew.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "d8dbdbad7a1b55a695d4007cb75a1c1892a1d4af",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/oldnew4html.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "c625f035a49833f7d5d55a73680760d6487c4893",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/oldnewgeo.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9ac93672a0318e1b730e322f8e7e51ad2ad6c626",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/oldnewhtml.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9ff4fb32cd3c360f607b32f5d6623ce3291d07f4",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/oldnewttest.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "05cf0c7767091f3c7f08033c4a9e1d8a67ba95e8",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/packages.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "7732820fa0def84237d8c9b4f3f154bd1d5c4b24",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/packagesnew.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "4c2006362da101e197d6b9a6d749efbb139ce9ee",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/packagesold.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "add4b7a874f2f774690c1d66ff7ae54b06b1eca3",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/packagesold.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "d74cce413d1afb52b5a0ab1ca33b8e764c695b69",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/rdeltasort.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "509c0d1fda90f505e1d340eff84a06ad2885d540",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/slashslash4.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c7577cf4bc19f00fc2686b76148b6bebcd16fb96",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/smallSample.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "48e32ac9940a4423459ac077a157b4fdd789c988",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/smallSample.txt"
    },
    {
      "type": "delete",
      "old_id": "397088d0c5eccd7c01e45528f0f65629121115f4",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/units-new.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "6e87b07713a5993cab9ff27ee9040af34db23051",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/units-old.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "3a5ca677f78d0f54b663944c7ddee78bac3ede8c",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/units.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b5361230a4f0ecdf5bc2f0ccfdccb5f319faf5b5",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/units.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b9197c48377924a15399e738cf3a7493775581fb",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/units.txt"
    },
    {
      "type": "delete",
      "old_id": "73d2a05944846b529ac8e58546acc506b8658e55",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/x386.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "d855b6b2db290e25715d5902d52697dbb11be293",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/zero-new.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "9df0d06fda07efddc7d475f11d910c2adfcdf0fd",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/zero-old.txt",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "7c6170fb421929f575ebb4435bf652a83923f689",
      "old_mode": 33188,
      "old_path": "cmd/benchstat/testdata/zero.golden",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6c427c3ebeb3d6c991460cf6c034ce2173ee8b9d",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/zero.stdout"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4b96143492aeca01f5b5a9811dce1bd4592898cb",
      "new_mode": 33188,
      "new_path": "cmd/benchstat/testdata/zero.txt"
    }
  ]
}
