grammar-inference-engine/experiments/results/freq_flask.json
tobjend 8028570ceb feat: frequency threshold sweep — 0.01-0.20 across 4 codebases
Sweet spot: 0.01-0.05. At 0.01 RAGSAK gets 61 SOREs (26.1% cov) with
real conventions like warn.status.body.ErrorResponse. At 0.05 coverage
jumps to 45.4% but that pattern disappears. Flask dies at 0.15+.

Current default min_coverage=0.2 is too aggressive for most codebases.
2026-07-12 01:26:45 +02:00

258 lines
No EOL
5.8 KiB
JSON

{
"codebase": "Flask",
"results": [
{
"threshold": 0.0,
"symbols_total": 1055,
"symbols_kept": 1055,
"seqs_total": 1424,
"seqs_surviving": 1109,
"contexts": 598,
"sore_successes": 25,
"total_methods": 1109,
"methods_in_good": 207,
"coverage": 18.7,
"top_patterns": [
{
"context": "('append', 'append')",
"methods": 51,
"unique": 1,
"sore": "(append)+"
},
{
"context": "('render_template', 'render_template')",
"methods": 31,
"unique": 1,
"sore": "(render_template)+"
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"sore": "(abort)+"
},
{
"context": "('get', 'get')",
"methods": 10,
"unique": 1,
"sore": "(get)+"
},
{
"context": "('pop', 'pop')",
"methods": 10,
"unique": 1,
"sore": "(pop)+"
}
],
"elapsed": 0.05
},
{
"threshold": 0.01,
"symbols_total": 1055,
"symbols_kept": 47,
"seqs_total": 1424,
"seqs_surviving": 784,
"contexts": 173,
"sore_successes": 28,
"total_methods": 784,
"methods_in_good": 276,
"coverage": 35.2,
"top_patterns": [
{
"context": "('append', 'append')",
"methods": 54,
"unique": 1,
"sore": "(append)+"
},
{
"context": "('render_template', 'render_template')",
"methods": 33,
"unique": 1,
"sore": "(render_template)+"
},
{
"context": "('get', 'get')",
"methods": 19,
"unique": 1,
"sore": "(get)+"
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"sore": "(abort)+"
},
{
"context": "('pop', 'pop')",
"methods": 15,
"unique": 1,
"sore": "(pop)+"
}
],
"elapsed": 0.13
},
{
"threshold": 0.02,
"symbols_total": 1055,
"symbols_kept": 20,
"seqs_total": 1424,
"seqs_surviving": 621,
"contexts": 86,
"sore_successes": 11,
"total_methods": 621,
"methods_in_good": 213,
"coverage": 34.3,
"top_patterns": [
{
"context": "('append', 'append')",
"methods": 64,
"unique": 1,
"sore": "(append)+"
},
{
"context": "('render_template', 'render_template')",
"methods": 35,
"unique": 1,
"sore": "(render_template)+"
},
{
"context": "('get', 'get')",
"methods": 34,
"unique": 1,
"sore": "(get)+"
},
{
"context": "('pop', 'pop')",
"methods": 17,
"unique": 1,
"sore": "(pop)+"
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"sore": "(abort)+"
}
],
"elapsed": 0.07
},
{
"threshold": 0.05,
"symbols_total": 1055,
"symbols_kept": 5,
"seqs_total": 1424,
"seqs_surviving": 414,
"contexts": 16,
"sore_successes": 7,
"total_methods": 414,
"methods_in_good": 184,
"coverage": 44.4,
"top_patterns": [
{
"context": "('append', 'append')",
"methods": 83,
"unique": 1,
"sore": "(append)+"
},
{
"context": "('get', 'get')",
"methods": 53,
"unique": 1,
"sore": "(get)+"
},
{
"context": "('get', 'get', 'get')",
"methods": 23,
"unique": 4,
"sore": "(get)+"
},
{
"context": "('route', 'route')",
"methods": 11,
"unique": 1,
"sore": "(route)+"
},
{
"context": "('route', 'route', 'get')",
"methods": 8,
"unique": 3,
"sore": "((route)+|(get)+)+"
}
],
"elapsed": 0.02
},
{
"threshold": 0.1,
"symbols_total": 1055,
"symbols_kept": 2,
"seqs_total": 1424,
"seqs_surviving": 237,
"contexts": 5,
"sore_successes": 5,
"total_methods": 237,
"methods_in_good": 237,
"coverage": 100.0,
"top_patterns": [
{
"context": "('route', 'route', 'get')",
"methods": 83,
"unique": 5,
"sore": "((route)+|(get)+)+"
},
{
"context": "('get', 'get')",
"methods": 60,
"unique": 1,
"sore": "(get)+"
},
{
"context": "('route', 'route', 'route')",
"methods": 38,
"unique": 14,
"sore": "((route)+|(get)+)+"
},
{
"context": "('get', 'get', 'get')",
"methods": 33,
"unique": 6,
"sore": "(get)+"
},
{
"context": "('route', 'route')",
"methods": 23,
"unique": 1,
"sore": "(route)+"
}
],
"elapsed": 0.01
},
{
"threshold": 0.15,
"symbols_total": 1055,
"symbols_kept": 0,
"seqs_total": 1424,
"seqs_surviving": 0,
"contexts": 0,
"sore_successes": 0,
"total_methods": 0,
"methods_in_good": 0,
"coverage": 0,
"top_patterns": [],
"elapsed": 0.01
},
{
"threshold": 0.2,
"symbols_total": 1055,
"symbols_kept": 0,
"seqs_total": 1424,
"seqs_surviving": 0,
"contexts": 0,
"sore_successes": 0,
"total_methods": 0,
"methods_in_good": 0,
"coverage": 0,
"top_patterns": [],
"elapsed": 0.01
}
]
}