From d65b78bdf18dc6d175fc0053569aa7223ef48c78 Mon Sep 17 00:00:00 2001 From: tobjend Date: Sun, 12 Jul 2026 01:04:51 +0200 Subject: [PATCH] fix: bare Kotlin captures + minimal coarsening (RETURN/IF/EXCEPTION/LOOP only) - Added bare Kotlin captures to BEHAVIORAL_PREFIXES: conditional, exception, repeat, property, type - Dropped variable (too noisy), kept only 4 high-signal categories in coarsen_token - RAGSAK: 87 cross-package contexts (up from 69), real null-check patterns - Flask: k=2 coverage 4.5% -> 15.8%, cross-package rendering conventions --- bex/tag_preprocessor/code.py | 48 +- experiments/results/coarsen_flask.json | 574 +++++++++++------------ experiments/results/coarsen_ragsak.json | 582 ++++++++++++------------ 3 files changed, 596 insertions(+), 608 deletions(-) diff --git a/bex/tag_preprocessor/code.py b/bex/tag_preprocessor/code.py index bbebbc0..7ec0885 100644 --- a/bex/tag_preprocessor/code.py +++ b/bex/tag_preprocessor/code.py @@ -49,6 +49,14 @@ BEHAVIORAL_PREFIXES = ( "label", "type.definition", "module", + # Bare captures from Kotlin highlights.scm + # (Kotlin uses "conditional" not "keyword.conditional", etc.) + # Excluded: "variable" (too noisy — every identifier reference) + "conditional", + "exception", + "repeat", + "property", + "type", ) CALL_PREFIXES = ("function.call", "function.method.call", "reference.call", "reference.class", "constructor", "function") @@ -59,7 +67,9 @@ def coarsen_token(capname): Uses capture names from highlights.scm — same across all languages. Function calls are kept as raw text (they ARE the behavioral content). - Only structural tokens (keywords, types) are coarsened. + Only the 4 highest-signal structural tokens are coarsened: + RETURN, IF, EXCEPTION, LOOP. Everything else kept raw. + Handles both dotted (keyword.conditional) and bare (conditional) captures. """ if capname.startswith("function.call") or capname.startswith("reference.call"): return None # keep raw @@ -69,41 +79,19 @@ def coarsen_token(capname): return None # keep raw if capname.startswith("function"): return None # keep raw (bare @function in Kotlin etc.) - if capname.startswith("keyword.return"): + if capname.startswith("keyword.return") or capname == "return": return "RETURN" - if capname.startswith("keyword.raise") or capname.startswith("keyword.throw"): + if capname.startswith("keyword.raise") or capname.startswith("keyword.throw") or capname == "raise": return "RAISE" - if capname.startswith("keyword.yield"): + if capname.startswith("keyword.yield") or capname == "yield": return "YIELD" - if capname.startswith("keyword.exception"): + if capname.startswith("keyword.exception") or capname == "exception": return "EXCEPTION" - if capname.startswith("keyword.conditional"): + if capname.startswith("keyword.conditional") or capname == "conditional": return "IF" - if capname.startswith("keyword.repeat"): + if capname.startswith("keyword.repeat") or capname == "repeat": return "LOOP" - if capname.startswith("keyword.function"): - return "FUN" - if capname.startswith("keyword"): - return "KW" - if capname.startswith("type.definition"): - return "TYPE" - if capname.startswith("type"): - return "TYPE" - if capname.startswith("variable.builtin"): - return "BUILTIN" - if capname.startswith("variable"): - return "VAR" - if capname.startswith("constant"): - return "CONST" - if capname.startswith("string"): - return "STR" - if capname.startswith("number"): - return "NUM" - if capname.startswith("boolean"): - return "BOOL" - if capname.startswith("attribute"): - return "ATTR" - return "OTHER" + return None # keep everything else raw def _extract_coarsened_tokens(seq): diff --git a/experiments/results/coarsen_flask.json b/experiments/results/coarsen_flask.json index 773186c..26a61e8 100644 --- a/experiments/results/coarsen_flask.json +++ b/experiments/results/coarsen_flask.json @@ -1,7 +1,7 @@ { "name": "Flask", "raw": { - "seq_count": 1391, + "seq_count": 1424, "alphabet_size": 1055, "alphabet_sample": [ "", @@ -38,18 +38,18 @@ "k1": { "contexts": 373, "sore_successes": 22, - "total_methods": 1391, + "total_methods": 1424, "methods_in_good": 64, - "coverage": 4.6, + "coverage": 4.5, "cross_package_contexts": 58, - "elapsed": 0.0, + "elapsed": 0.001, "top_groups": [ { "context": "('_eps',)", "label": "raw_k1", - "methods": 282, + "methods": 315, "unique": 1, - "unique_ratio": 0.004, + "unique_ratio": 0.003, "alphabet_size": 0, "sore": null, "sore_success": false @@ -148,7 +148,7 @@ "cross_pkg_examples": [ { "context": "('_eps',)", - "packages": 9 + "packages": 10 }, { "context": "('get',)", @@ -175,7 +175,7 @@ "packages": 4 }, { - "context": "('post',)", + "context": "('test_client',)", "packages": 3 }, { @@ -183,7 +183,7 @@ "packages": 3 }, { - "context": "('test_client',)", + "context": "('post',)", "packages": 3 } ] @@ -191,18 +191,18 @@ "k2": { "contexts": 389, "sore_successes": 22, - "total_methods": 1391, + "total_methods": 1424, "methods_in_good": 64, - "coverage": 4.6, + "coverage": 4.5, "cross_package_contexts": 54, - "elapsed": 0.001, + "elapsed": 0.002, "top_groups": [ { "context": "('_eps',)", "label": "raw_k2", - "methods": 282, + "methods": 315, "unique": 1, - "unique_ratio": 0.004, + "unique_ratio": 0.003, "alphabet_size": 0, "sore": null, "sore_success": false @@ -301,7 +301,7 @@ "cross_pkg_examples": [ { "context": "('_eps',)", - "packages": 9 + "packages": 10 }, { "context": "('get', 'get')", @@ -328,7 +328,7 @@ "packages": 4 }, { - "context": "('post', 'post')", + "context": "('test_client', 'test_client')", "packages": 3 }, { @@ -336,7 +336,7 @@ "packages": 3 }, { - "context": "('test_client', 'test_client')", + "context": "('post', 'post')", "packages": 3 } ] @@ -344,18 +344,18 @@ "k3": { "contexts": 599, "sore_successes": 43, - "total_methods": 1391, + "total_methods": 1424, "methods_in_good": 243, - "coverage": 17.5, + "coverage": 17.1, "cross_package_contexts": 40, "elapsed": 0.001, "top_groups": [ { "context": "('_eps',)", "label": "raw_k3", - "methods": 282, + "methods": 315, "unique": 1, - "unique_ratio": 0.004, + "unique_ratio": 0.003, "alphabet_size": 0, "sore": null, "sore_success": false @@ -454,7 +454,7 @@ "cross_pkg_examples": [ { "context": "('_eps',)", - "packages": 9 + "packages": 10 }, { "context": "('render_template', 'render_template')", @@ -469,11 +469,11 @@ "packages": 4 }, { - "context": "('Flask', 'Flask', 'from_mapping')", + "context": "('test_client', 'test_client')", "packages": 3 }, { - "context": "('test_client', 'test_client')", + "context": "('Flask', 'Flask', 'from_mapping')", "packages": 3 }, { @@ -496,146 +496,146 @@ } }, "coarsened": { - "seq_count": 1391, - "alphabet_size": 1063, + "seq_count": 1424, + "alphabet_size": 2569, "alphabet_sample": [ "", "!r", + "\"", "\" * 100)", "\")", + "\",", "\", \"index\",", + "\", 301)\n\n wi", "\", de", "\", su", "\"/\")", "\"/t", + "\"Conten", + "\"X-Bar\"", "\"X-Foo\"", + "\"]\n wea", "\"about\"", "\"ba", "\"cus", + "\"def", + "\"f", "\"fake a", "\"fo", "\"foo.vi", "\"h", "\"hello\"", + "\"in", "\"lat", "\"mer", - "\"nes", - "\"someth", - "\"spam\")", - "\"static", - "# ip addre", - "(\"\"), 40", - "(\"\", hea", - "()", - "(test", - "({\"msg\":" + "\"nes" ], "k1": { - "contexts": 166, - "sore_successes": 3, - "total_methods": 1391, - "methods_in_good": 20, - "coverage": 1.4, - "cross_package_contexts": 22, + "contexts": 205, + "sore_successes": 2, + "total_methods": 1424, + "methods_in_good": 4, + "coverage": 0.3, + "cross_package_contexts": 27, "elapsed": 0.0, "top_groups": [ { "context": "('RETURN',)", "label": "coarsened_k1", - "methods": 448, - "unique": 101, - "unique_ratio": 0.225, - "alphabet_size": 97, - "sore": null, - "sore_success": false - }, - { - "context": "('ATTR',)", - "label": "coarsened_k1", - "methods": 120, - "unique": 112, - "unique_ratio": 0.933, - "alphabet_size": 296, + "methods": 420, + "unique": 170, + "unique_ratio": 0.405, + "alphabet_size": 243, "sore": null, "sore_success": false }, { "context": "('IF',)", "label": "coarsened_k1", - "methods": 117, - "unique": 109, - "unique_ratio": 0.932, - "alphabet_size": 209, + "methods": 94, + "unique": 92, + "unique_ratio": 0.979, + "alphabet_size": 447, "sore": null, "sore_success": false }, { - "context": "('KW',)", + "context": "('app',)", "label": "coarsened_k1", - "methods": 91, - "unique": 80, - "unique_ratio": 0.879, - "alphabet_size": 246, + "methods": 79, + "unique": 79, + "unique_ratio": 1.0, + "alphabet_size": 353, "sore": null, "sore_success": false }, { "context": "('EXCEPTION',)", "label": "coarsened_k1", - "methods": 78, - "unique": 43, - "unique_ratio": 0.551, - "alphabet_size": 83, + "methods": 74, + "unique": 49, + "unique_ratio": 0.662, + "alphabet_size": 190, "sore": null, "sore_success": false }, { - "context": "('append',)", + "context": "('@',)", "label": "coarsened_k1", - "methods": 51, - "unique": 3, - "unique_ratio": 0.059, - "alphabet_size": 4, + "methods": 69, + "unique": 68, + "unique_ratio": 0.986, + "alphabet_size": 336, "sore": null, "sore_success": false }, { - "context": "('FUN',)", + "context": "('self',)", "label": "coarsened_k1", - "methods": 48, - "unique": 46, - "unique_ratio": 0.958, - "alphabet_size": 127, - "sore": null, - "sore_success": false - }, - { - "context": "('Blueprint',)", - "label": "coarsened_k1", - "methods": 40, - "unique": 36, - "unique_ratio": 0.9, - "alphabet_size": 119, - "sore": null, - "sore_success": false - }, - { - "context": "('get',)", - "label": "coarsened_k1", - "methods": 25, - "unique": 24, - "unique_ratio": 0.96, - "alphabet_size": 61, - "sore": null, - "sore_success": false - }, - { - "context": "('Flask',)", - "label": "coarsened_k1", - "methods": 23, - "unique": 23, + "methods": 65, + "unique": 65, "unique_ratio": 1.0, - "alphabet_size": 69, + "alphabet_size": 209, + "sore": null, + "sore_success": false + }, + { + "context": "('flask',)", + "label": "coarsened_k1", + "methods": 62, + "unique": 26, + "unique_ratio": 0.419, + "alphabet_size": 59, + "sore": null, + "sore_success": false + }, + { + "context": "('class',)", + "label": "coarsened_k1", + "methods": 42, + "unique": 42, + "unique_ratio": 1.0, + "alphabet_size": 300, + "sore": null, + "sore_success": false + }, + { + "context": "('def',)", + "label": "coarsened_k1", + "methods": 32, + "unique": 31, + "unique_ratio": 0.969, + "alphabet_size": 169, + "sore": null, + "sore_success": false + }, + { + "context": "('bp',)", + "label": "coarsened_k1", + "methods": 31, + "unique": 29, + "unique_ratio": 0.935, + "alphabet_size": 134, "sore": null, "sore_success": false } @@ -646,7 +646,7 @@ "packages": 14 }, { - "context": "('get',)", + "context": "('app',)", "packages": 7 }, { @@ -654,19 +654,19 @@ "packages": 6 }, { - "context": "('IF',)", + "context": "('self',)", "packages": 6 }, { - "context": "('FUN',)", + "context": "('IF',)", "packages": 5 }, { - "context": "('KW',)", + "context": "('def',)", "packages": 5 }, { - "context": "('pop',)", + "context": "('response',)", "packages": 4 }, { @@ -674,91 +674,61 @@ "packages": 4 }, { - "context": "('setdefault',)", - "packages": 4 + "context": "('class',)", + "packages": 3 }, { - "context": "('Flask',)", + "context": "('@',)", "packages": 3 } ] }, "k2": { - "contexts": 353, - "sore_successes": 23, - "total_methods": 1391, - "methods_in_good": 346, - "coverage": 24.9, - "cross_package_contexts": 49, - "elapsed": 0.0, + "contexts": 570, + "sore_successes": 18, + "total_methods": 1424, + "methods_in_good": 225, + "coverage": 15.8, + "cross_package_contexts": 35, + "elapsed": 0.002, "top_groups": [ { "context": "('RETURN',)", "label": "coarsened_k2", - "methods": 234, + "methods": 127, "unique": 1, - "unique_ratio": 0.004, + "unique_ratio": 0.008, "alphabet_size": 1, "sore": "RETURN", "sore_success": true }, { - "context": "('ATTR', 'ATTR')", + "context": "('RETURN', 'flask')", "label": "coarsened_k2", - "methods": 80, - "unique": 74, - "unique_ratio": 0.925, - "alphabet_size": 171, + "methods": 79, + "unique": 30, + "unique_ratio": 0.38, + "alphabet_size": 38, "sore": null, "sore_success": false }, { - "context": "('IF', 'KW')", + "context": "('@', 'app')", "label": "coarsened_k2", - "methods": 67, - "unique": 60, - "unique_ratio": 0.896, - "alphabet_size": 134, + "methods": 65, + "unique": 64, + "unique_ratio": 0.985, + "alphabet_size": 319, "sore": null, "sore_success": false }, { - "context": "('append', 'append')", - "label": "coarsened_k2", - "methods": 51, - "unique": 3, - "unique_ratio": 0.059, - "alphabet_size": 4, - "sore": null, - "sore_success": false - }, - { - "context": "('Blueprint', 'Blueprint')", - "label": "coarsened_k2", - "methods": 40, - "unique": 36, - "unique_ratio": 0.9, - "alphabet_size": 119, - "sore": null, - "sore_success": false - }, - { - "context": "('RETURN', 'render_template')", - "label": "coarsened_k2", - "methods": 33, - "unique": 2, - "unique_ratio": 0.061, - "alphabet_size": 3, - "sore": null, - "sore_success": false - }, - { - "context": "('KW', 'FUN')", + "context": "('RETURN', 'self')", "label": "coarsened_k2", "methods": 32, - "unique": 30, - "unique_ratio": 0.938, - "alphabet_size": 122, + "unique": 27, + "unique_ratio": 0.844, + "alphabet_size": 56, "sore": null, "sore_success": false }, @@ -766,225 +736,255 @@ "context": "('RETURN', 'isinstance')", "label": "coarsened_k2", "methods": 32, - "unique": 2, - "unique_ratio": 0.062, - "alphabet_size": 6, + "unique": 10, + "unique_ratio": 0.312, + "alphabet_size": 21, "sore": null, "sore_success": false }, { - "context": "('get', 'get')", + "context": "('bp', 'flask')", "label": "coarsened_k2", - "methods": 25, - "unique": 24, - "unique_ratio": 0.96, - "alphabet_size": 61, + "methods": 31, + "unique": 29, + "unique_ratio": 0.935, + "alphabet_size": 134, "sore": null, "sore_success": false }, { - "context": "('ATTR', 'route')", + "context": "('RETURN', 's')", "label": "coarsened_k2", - "methods": 24, + "methods": 23, + "unique": 1, + "unique_ratio": 0.043, + "alphabet_size": 2, + "sore": "RETURN.s", + "sore_success": true + }, + { + "context": "('IF', 'self')", + "label": "coarsened_k2", + "methods": 22, "unique": 22, - "unique_ratio": 0.917, - "alphabet_size": 103, + "unique_ratio": 1.0, + "alphabet_size": 145, + "sore": null, + "sore_success": false + }, + { + "context": "('flask', 'g')", + "label": "coarsened_k2", + "methods": 20, + "unique": 8, + "unique_ratio": 0.4, + "alphabet_size": 29, + "sore": null, + "sore_success": false + }, + { + "context": "('flask', 'session')", + "label": "coarsened_k2", + "methods": 20, + "unique": 11, + "unique_ratio": 0.55, + "alphabet_size": 30, "sore": null, "sore_success": false } ], "cross_pkg_examples": [ - { - "context": "('RETURN',)", - "packages": 9 - }, - { - "context": "('get', 'get')", - "packages": 7 - }, { "context": "('RETURN', 'render_template')", - "packages": 6 - }, - { - "context": "('LOOP', 'KW')", - "packages": 6 - }, - { - "context": "('IF', 'KW')", "packages": 5 }, { - "context": "('KW', 'FUN')", + "context": "('RETURN', 'self')", + "packages": 5 + }, + { + "context": "('RETURN', 'app')", "packages": 4 }, { - "context": "('pop', 'pop')", + "context": "('RETURN',)", "packages": 4 }, { - "context": "('setdefault', 'setdefault')", - "packages": 4 + "context": "('app', 'Flask')", + "packages": 3 + }, + { + "context": "('app', 'app_context')", + "packages": 3 }, { "context": "('IF', 'isinstance')", - "packages": 4 + "packages": 3 }, { - "context": "('Flask', 'Flask')", + "context": "('self', 'app')", + "packages": 3 + }, + { + "context": "('EXCEPTION', 'NotImplementedError')", + "packages": 3 + }, + { + "context": "('RETURN', 'isinstance')", "packages": 3 } ] }, "k3": { - "contexts": 529, - "sore_successes": 30, - "total_methods": 1391, - "methods_in_good": 400, - "coverage": 28.8, - "cross_package_contexts": 47, - "elapsed": 0.0, + "contexts": 699, + "sore_successes": 23, + "total_methods": 1424, + "methods_in_good": 247, + "coverage": 17.3, + "cross_package_contexts": 28, + "elapsed": 0.001, "top_groups": [ { "context": "('RETURN',)", "label": "coarsened_k3", - "methods": 234, + "methods": 127, "unique": 1, - "unique_ratio": 0.004, + "unique_ratio": 0.008, "alphabet_size": 1, "sore": "RETURN", "sore_success": true }, { - "context": "('IF', 'KW', 'KW')", + "context": "('@', 'app', 'route')", "label": "coarsened_k3", - "methods": 34, - "unique": 29, - "unique_ratio": 0.853, - "alphabet_size": 73, + "methods": 44, + "unique": 44, + "unique_ratio": 1.0, + "alphabet_size": 257, "sore": null, "sore_success": false }, - { - "context": "('ATTR', 'ATTR', 'route')", - "label": "coarsened_k3", - "methods": 34, - "unique": 31, - "unique_ratio": 0.912, - "alphabet_size": 74, - "sore": null, - "sore_success": false - }, - { - "context": "('RETURN', 'render_template', 'render_template')", - "label": "coarsened_k3", - "methods": 33, - "unique": 2, - "unique_ratio": 0.061, - "alphabet_size": 3, - "sore": null, - "sore_success": false - }, - { - "context": "('append', 'append')", - "label": "coarsened_k3", - "methods": 33, - "unique": 1, - "unique_ratio": 0.03, - "alphabet_size": 1, - "sore": "(append)+", - "sore_success": true - }, { "context": "('RETURN', 'isinstance', 'isinstance')", "label": "coarsened_k3", "methods": 32, - "unique": 2, - "unique_ratio": 0.062, - "alphabet_size": 6, + "unique": 10, + "unique_ratio": 0.312, + "alphabet_size": 21, "sore": null, "sore_success": false }, { - "context": "('ATTR', 'ATTR', 'FUN')", + "context": "('bp', 'flask', 'Blueprint')", "label": "coarsened_k3", "methods": 31, - "unique": 28, - "unique_ratio": 0.903, - "alphabet_size": 92, + "unique": 29, + "unique_ratio": 0.935, + "alphabet_size": 134, "sore": null, "sore_success": false }, { - "context": "('ATTR', 'route', 'route')", + "context": "('RETURN', 'flask', 'request')", "label": "coarsened_k3", - "methods": 24, - "unique": 22, - "unique_ratio": 0.917, - "alphabet_size": 103, + "methods": 25, + "unique": 8, + "unique_ratio": 0.32, + "alphabet_size": 12, "sore": null, "sore_success": false }, { - "context": "('EXCEPTION',)", + "context": "('RETURN', 'flask', 'render_template')", "label": "coarsened_k3", - "methods": 21, + "methods": 25, + "unique": 4, + "unique_ratio": 0.16, + "alphabet_size": 8, + "sore": null, + "sore_success": false + }, + { + "context": "('RETURN', 's')", + "label": "coarsened_k3", + "methods": 23, "unique": 1, - "unique_ratio": 0.048, - "alphabet_size": 1, - "sore": "EXCEPTION", + "unique_ratio": 0.043, + "alphabet_size": 2, + "sore": "RETURN.s", "sore_success": true }, { - "context": "('Blueprint', 'Blueprint', 'ATTR')", + "context": "('app', 'flask', 'Flask')", "label": "coarsened_k3", - "methods": 21, - "unique": 20, - "unique_ratio": 0.952, - "alphabet_size": 76, + "methods": 18, + "unique": 18, + "unique_ratio": 1.0, + "alphabet_size": 111, + "sore": null, + "sore_success": false + }, + { + "context": "('flask', 'abort', 'abort')", + "label": "coarsened_k3", + "methods": 16, + "unique": 1, + "unique_ratio": 0.062, + "alphabet_size": 2, + "sore": "flask.(abort)+", + "sore_success": true + }, + { + "context": "('isinstance', 'isinstance', 'isinstance')", + "label": "coarsened_k3", + "methods": 16, + "unique": 13, + "unique_ratio": 0.812, + "alphabet_size": 26, "sore": null, "sore_success": false } ], "cross_pkg_examples": [ - { - "context": "('RETURN',)", - "packages": 9 - }, { "context": "('RETURN', 'render_template', 'render_template')", - "packages": 6 + "packages": 5 }, { - "context": "('get', 'get', 'get')", + "context": "('RETURN',)", "packages": 4 }, { - "context": "('IF', 'KW', 'RETURN')", - "packages": 4 + "context": "('RETURN', 'app', 'test_client')", + "packages": 3 }, { - "context": "('get', 'get', 'IF')", - "packages": 4 + "context": "('app', 'Flask', 'Flask')", + "packages": 3 }, { - "context": "('IF', 'KW', 'KW')", - "packages": 4 + "context": "('app', 'app_context', 'app_context')", + "packages": 3 }, { "context": "('IF', 'isinstance', 'isinstance')", - "packages": 4 - }, - { - "context": "('Flask', 'Flask', 'from_mapping')", "packages": 3 }, { - "context": "('RETURN', 'test_client', 'test_client')", + "context": "('self', 'app', 'app')", "packages": 3 }, { - "context": "('RETURN', 'get', 'get')", + "context": "('EXCEPTION', 'NotImplementedError', 'NotImplementedError')", + "packages": 3 + }, + { + "context": "('RETURN', 'isinstance', 'isinstance')", + "packages": 3 + }, + { + "context": "('kwargs', 'setdefault', 'setdefault')", "packages": 3 } ] diff --git a/experiments/results/coarsen_ragsak.json b/experiments/results/coarsen_ragsak.json index 69e7421..277cf99 100644 --- a/experiments/results/coarsen_ragsak.json +++ b/experiments/results/coarsen_ragsak.json @@ -1,7 +1,7 @@ { "name": "RAGSAK", "raw": { - "seq_count": 1594, + "seq_count": 1609, "alphabet_size": 1724, "alphabet_sample": [ "", @@ -38,7 +38,7 @@ "k1": { "contexts": 510, "sore_successes": 39, - "total_methods": 1594, + "total_methods": 1609, "methods_in_good": 125, "coverage": 7.8, "cross_package_contexts": 145, @@ -74,6 +74,16 @@ "sore": null, "sore_success": false }, + { + "context": "('_eps',)", + "label": "raw_k1", + "methods": 31, + "unique": 1, + "unique_ratio": 0.032, + "alphabet_size": 0, + "sore": null, + "sore_success": false + }, { "context": "('mockk',)", "label": "raw_k1", @@ -133,16 +143,6 @@ "alphabet_size": 73, "sore": null, "sore_success": false - }, - { - "context": "('parse',)", - "label": "raw_k1", - "methods": 18, - "unique": 18, - "unique_ratio": 1.0, - "alphabet_size": 49, - "sore": null, - "sore_success": false } ], "cross_pkg_examples": [ @@ -150,6 +150,10 @@ "context": "('every',)", "packages": 18 }, + { + "context": "('_eps',)", + "packages": 18 + }, { "context": "('builder',)", "packages": 16 @@ -178,10 +182,6 @@ "context": "('isEmpty',)", "packages": 9 }, - { - "context": "('_eps',)", - "packages": 9 - }, { "context": "('debug',)", "packages": 9 @@ -191,9 +191,9 @@ "k2": { "contexts": 918, "sore_successes": 76, - "total_methods": 1594, + "total_methods": 1609, "methods_in_good": 249, - "coverage": 15.6, + "coverage": 15.5, "cross_package_contexts": 100, "elapsed": 0.001, "top_groups": [ @@ -207,6 +207,16 @@ "sore": null, "sore_success": false }, + { + "context": "('_eps',)", + "label": "raw_k2", + "methods": 31, + "unique": 1, + "unique_ratio": 0.032, + "alphabet_size": 0, + "sore": null, + "sore_success": false + }, { "context": "('warn', 'status')", "label": "raw_k2", @@ -217,16 +227,6 @@ "sore": "warn.status.body.ErrorResponse", "sore_success": true }, - { - "context": "('_eps',)", - "label": "raw_k2", - "methods": 16, - "unique": 1, - "unique_ratio": 0.062, - "alphabet_size": 0, - "sore": null, - "sore_success": false - }, { "context": "('VectorChunk', 'mapOf')", "label": "raw_k2", @@ -300,12 +300,12 @@ ], "cross_pkg_examples": [ { - "context": "('listOf', 'listOf')", - "packages": 13 + "context": "('_eps',)", + "packages": 18 }, { - "context": "('_eps',)", - "packages": 9 + "context": "('listOf', 'listOf')", + "packages": 13 }, { "context": "('trim', 'lowercase')", @@ -344,12 +344,22 @@ "k3": { "contexts": 1066, "sore_successes": 89, - "total_methods": 1594, + "total_methods": 1609, "methods_in_good": 297, - "coverage": 18.6, + "coverage": 18.5, "cross_package_contexts": 69, - "elapsed": 0.0, + "elapsed": 0.001, "top_groups": [ + { + "context": "('_eps',)", + "label": "raw_k3", + "methods": 31, + "unique": 1, + "unique_ratio": 0.032, + "alphabet_size": 0, + "sore": null, + "sore_success": false + }, { "context": "('warn', 'status', 'body')", "label": "raw_k3", @@ -360,16 +370,6 @@ "sore": "warn.status.body.ErrorResponse", "sore_success": true }, - { - "context": "('_eps',)", - "label": "raw_k3", - "methods": 16, - "unique": 1, - "unique_ratio": 0.062, - "alphabet_size": 0, - "sore": null, - "sore_success": false - }, { "context": "('VectorChunk', 'mapOf', 'mapOf')", "label": "raw_k3", @@ -441,20 +441,20 @@ "sore_success": true }, { - "context": "('assertEquals', 'of', 'assertFailsWith')", + "context": "('of',)", "label": "raw_k3", "methods": 7, - "unique": 3, - "unique_ratio": 0.429, - "alphabet_size": 3, - "sore": "assertEquals.(of.(assertFailsWith)?)+", + "unique": 1, + "unique_ratio": 0.143, + "alphabet_size": 1, + "sore": "of", "sore_success": true } ], "cross_pkg_examples": [ { "context": "('_eps',)", - "packages": 9 + "packages": 18 }, { "context": "('defaultCapabilityId',)", @@ -496,66 +496,76 @@ } }, "coarsened": { - "seq_count": 1594, - "alphabet_size": 1728, + "seq_count": 1609, + "alphabet_size": 2468, "alphabet_sample": [ "", + "\" }", "\"Cann", "\"Fail", "\"k", + "\"una", "(", "(\"", "()", "(documen", "(val scores: List = emptyList())", + ")", ") && s3", + ") return", ")) {", ",", + ".con", + ".end", ".jo", + ".lin", + ".mapInde", + ".size).t", ".va", - "ATTR", - "Acti", - "AgentCapabilityDescriptor", - "AgentDecision", - "AgentExecutionContext", - "AndServerWebExchangeMatcher", - "Any", - "AssertionError", - "AssistantMessage", - "AtomicLong", - "AtomicReference", - "AuthController", - "BCryptPasswordEncoder", - "BatchId", - "BatchJobController", - "BatchJobListener" + ": 0", + "==", + "> 5", + "?.na", + "?:", + "@", + "ABANDONED" ], "k1": { - "contexts": 474, - "sore_successes": 33, - "total_methods": 1594, - "methods_in_good": 107, - "coverage": 6.7, - "cross_package_contexts": 128, + "contexts": 476, + "sore_successes": 16, + "total_methods": 1609, + "methods_in_good": 51, + "coverage": 3.2, + "cross_package_contexts": 123, "elapsed": 0.0, "top_groups": [ + { + "context": "('IF',)", + "label": "coarsened_k1", + "methods": 104, + "unique": 98, + "unique_ratio": 0.942, + "alphabet_size": 463, + "sore": null, + "sore_success": false + }, { "context": "('every',)", "label": "coarsened_k1", "methods": 102, - "unique": 93, - "unique_ratio": 0.912, - "alphabet_size": 232, + "unique": 95, + "unique_ratio": 0.931, + "alphabet_size": 304, "sore": null, "sore_success": false }, { "context": "('RETURN',)", "label": "coarsened_k1", - "methods": 91, - "unique": 75, - "unique_ratio": 0.824, - "alphabet_size": 186, + "methods": 61, + "unique": 51, + "unique_ratio": 0.836, + "alphabet_size": 210, "sore": null, "sore_success": false }, @@ -565,27 +575,27 @@ "methods": 59, "unique": 54, "unique_ratio": 0.915, - "alphabet_size": 131, + "alphabet_size": 171, "sore": null, "sore_success": false }, { "context": "('listOf',)", "label": "coarsened_k1", - "methods": 36, - "unique": 27, - "unique_ratio": 0.75, - "alphabet_size": 95, + "methods": 33, + "unique": 25, + "unique_ratio": 0.758, + "alphabet_size": 111, "sore": null, "sore_success": false }, { "context": "('mockk',)", "label": "coarsened_k1", - "methods": 31, - "unique": 21, - "unique_ratio": 0.677, - "alphabet_size": 100, + "methods": 30, + "unique": 20, + "unique_ratio": 0.667, + "alphabet_size": 129, "sore": null, "sore_success": false }, @@ -595,55 +605,49 @@ "methods": 29, "unique": 28, "unique_ratio": 0.966, - "alphabet_size": 117, - "sore": null, - "sore_success": false - }, - { - "context": "('trim',)", - "label": "coarsened_k1", - "methods": 26, - "unique": 23, - "unique_ratio": 0.885, - "alphabet_size": 57, - "sore": null, - "sore_success": false - }, - { - "context": "('warn',)", - "label": "coarsened_k1", - "methods": 26, - "unique": 4, - "unique_ratio": 0.154, - "alphabet_size": 11, + "alphabet_size": 165, "sore": null, "sore_success": false }, { "context": "('builder',)", "label": "coarsened_k1", - "methods": 24, + "methods": 23, "unique": 23, - "unique_ratio": 0.958, - "alphabet_size": 126, + "unique_ratio": 1.0, + "alphabet_size": 164, + "sore": null, + "sore_success": false + }, + { + "context": "('warn',)", + "label": "coarsened_k1", + "methods": 23, + "unique": 14, + "unique_ratio": 0.609, + "alphabet_size": 23, "sore": null, "sore_success": false }, { "context": "('info',)", "label": "coarsened_k1", - "methods": 23, - "unique": 19, - "unique_ratio": 0.826, - "alphabet_size": 74, + "methods": 19, + "unique": 15, + "unique_ratio": 0.789, + "alphabet_size": 88, "sore": null, "sore_success": false } ], "cross_pkg_examples": [ + { + "context": "('IF',)", + "packages": 34 + }, { "context": "('RETURN',)", - "packages": 36 + "packages": 26 }, { "context": "('every',)", @@ -657,70 +661,96 @@ "context": "('runTest',)", "packages": 12 }, - { - "context": "('listOf',)", - "packages": 12 - }, - { - "context": "('info',)", - "packages": 11 - }, { "context": "('mockk',)", "packages": 11 }, { - "context": "('trim',)", + "context": "('listOf',)", + "packages": 11 + }, + { + "context": "('info',)", "packages": 10 }, { - "context": "('isEmpty',)", - "packages": 9 + "context": "('get',)", + "packages": 8 }, { "context": "('debug',)", - "packages": 9 + "packages": 8 } ] }, "k2": { - "contexts": 883, - "sore_successes": 69, - "total_methods": 1594, - "methods_in_good": 225, - "coverage": 14.1, - "cross_package_contexts": 108, + "contexts": 782, + "sore_successes": 25, + "total_methods": 1609, + "methods_in_good": 82, + "coverage": 5.1, + "cross_package_contexts": 123, "elapsed": 0.001, "top_groups": [ { "context": "('listOf', 'listOf')", "label": "coarsened_k2", - "methods": 36, - "unique": 27, - "unique_ratio": 0.75, - "alphabet_size": 95, + "methods": 33, + "unique": 25, + "unique_ratio": 0.758, + "alphabet_size": 111, "sore": null, "sore_success": false }, { - "context": "('warn', 'RETURN')", + "context": "('builder', 'builder')", "label": "coarsened_k2", "methods": 23, - "unique": 2, - "unique_ratio": 0.087, - "alphabet_size": 7, + "unique": 23, + "unique_ratio": 1.0, + "alphabet_size": 164, "sore": null, "sore_success": false }, { - "context": "('RETURN',)", + "context": "('warn', 'warn')", "label": "coarsened_k2", - "methods": 13, - "unique": 1, - "unique_ratio": 0.077, - "alphabet_size": 1, - "sore": "RETURN", - "sore_success": true + "methods": 23, + "unique": 14, + "unique_ratio": 0.609, + "alphabet_size": 23, + "sore": null, + "sore_success": false + }, + { + "context": "('info', 'info')", + "label": "coarsened_k2", + "methods": 19, + "unique": 15, + "unique_ratio": 0.789, + "alphabet_size": 88, + "sore": null, + "sore_success": false + }, + { + "context": "('parse', 'parse')", + "label": "coarsened_k2", + "methods": 18, + "unique": 18, + "unique_ratio": 1.0, + "alphabet_size": 70, + "sore": null, + "sore_success": false + }, + { + "context": "('trim', 'trim')", + "label": "coarsened_k2", + "methods": 15, + "unique": 15, + "unique_ratio": 1.0, + "alphabet_size": 54, + "sore": null, + "sore_success": false }, { "context": "('VectorChunk', 'mapOf')", @@ -728,7 +758,7 @@ "methods": 13, "unique": 11, "unique_ratio": 0.846, - "alphabet_size": 42, + "alphabet_size": 57, "sore": null, "sore_success": false }, @@ -738,7 +768,17 @@ "methods": 13, "unique": 5, "unique_ratio": 0.385, - "alphabet_size": 13, + "alphabet_size": 19, + "sore": null, + "sore_success": false + }, + { + "context": "('of', 'of')", + "label": "coarsened_k2", + "methods": 13, + "unique": 7, + "unique_ratio": 0.538, + "alphabet_size": 40, "sore": null, "sore_success": false }, @@ -748,122 +788,72 @@ "methods": 13, "unique": 13, "unique_ratio": 1.0, - "alphabet_size": 16, - "sore": null, - "sore_success": false - }, - { - "context": "('isEmpty', 'RETURN')", - "label": "coarsened_k2", - "methods": 12, - "unique": 12, - "unique_ratio": 1.0, - "alphabet_size": 59, - "sore": null, - "sore_success": false - }, - { - "context": "('mockk',)", - "label": "coarsened_k2", - "methods": 11, - "unique": 1, - "unique_ratio": 0.091, - "alphabet_size": 1, - "sore": "mockk", - "sore_success": true - }, - { - "context": "('filesIn', 'assertTrue')", - "label": "coarsened_k2", - "methods": 11, - "unique": 5, - "unique_ratio": 0.455, - "alphabet_size": 4, - "sore": null, - "sore_success": false - }, - { - "context": "('RETURN', 'RETURN')", - "label": "coarsened_k2", - "methods": 10, - "unique": 10, - "unique_ratio": 1.0, - "alphabet_size": 15, + "alphabet_size": 28, "sore": null, "sore_success": false } ], "cross_pkg_examples": [ + { + "context": "('builder', 'builder')", + "packages": 15 + }, { "context": "('listOf', 'listOf')", - "packages": 12 + "packages": 11 }, { - "context": "('isEmpty', 'RETURN')", - "packages": 9 + "context": "('info', 'info')", + "packages": 10 }, { - "context": "('RETURN',)", - "packages": 9 + "context": "('IF', 'isEmpty')", + "packages": 8 }, { - "context": "('RETURN', 'RETURN')", + "context": "('IF', 'RETURN')", + "packages": 8 + }, + { + "context": "('get', 'get')", + "packages": 8 + }, + { + "context": "('debug', 'debug')", + "packages": 8 + }, + { + "context": "('trim', 'trim')", "packages": 7 }, { - "context": "('trim', 'lowercase')", - "packages": 5 + "context": "('IF', 'isNullOrBlank')", + "packages": 6 }, { - "context": "('mutableListOf', 'mutableListOf')", - "packages": 5 - }, - { - "context": "('defaultCapabilityId',)", - "packages": 4 - }, - { - "context": "('every', 'defaultCapabilityId')", - "packages": 4 - }, - { - "context": "('clearAllMocks',)", - "packages": 4 - }, - { - "context": "('VectorChunk', 'mapOf')", - "packages": 4 + "context": "('run', 'run')", + "packages": 6 } ] }, "k3": { - "contexts": 1062, - "sore_successes": 82, - "total_methods": 1594, - "methods_in_good": 292, - "coverage": 18.3, - "cross_package_contexts": 74, - "elapsed": 0.0, + "contexts": 992, + "sore_successes": 29, + "total_methods": 1609, + "methods_in_good": 97, + "coverage": 6.0, + "cross_package_contexts": 87, + "elapsed": 0.001, "top_groups": [ { - "context": "('warn', 'RETURN', 'status')", + "context": "('warn', 'warn', 'message')", "label": "coarsened_k3", - "methods": 22, - "unique": 1, - "unique_ratio": 0.045, - "alphabet_size": 5, - "sore": "warn.RETURN.status.body.ErrorResponse", - "sore_success": true - }, - { - "context": "('RETURN',)", - "label": "coarsened_k3", - "methods": 13, - "unique": 1, - "unique_ratio": 0.077, - "alphabet_size": 1, - "sore": "RETURN", - "sore_success": true + "methods": 20, + "unique": 11, + "unique_ratio": 0.55, + "alphabet_size": 13, + "sore": null, + "sore_success": false }, { "context": "('VectorChunk', 'mapOf', 'mapOf')", @@ -871,19 +861,29 @@ "methods": 13, "unique": 11, "unique_ratio": 0.846, - "alphabet_size": 42, + "alphabet_size": 57, "sore": null, "sore_success": false }, { - "context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')", + "context": "('ery {', 'stKnowledgeBases()', 'stKnowledgeBases()')", "label": "coarsened_k3", - "methods": 12, - "unique": 4, - "unique_ratio": 0.333, - "alphabet_size": 11, - "sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))", - "sore_success": true + "methods": 13, + "unique": 5, + "unique_ratio": 0.385, + "alphabet_size": 19, + "sore": null, + "sore_success": false + }, + { + "context": "('productionClasses', 'filter', 'filter')", + "label": "coarsened_k3", + "methods": 13, + "unique": 13, + "unique_ratio": 1.0, + "alphabet_size": 28, + "sore": null, + "sore_success": false }, { "context": "('listOf', 'listOf', 'productionFiles')", @@ -891,7 +891,17 @@ "methods": 12, "unique": 6, "unique_ratio": 0.5, - "alphabet_size": 9, + "alphabet_size": 13, + "sore": null, + "sore_success": false + }, + { + "context": "('IF', 'isEmpty', 'isEmpty')", + "label": "coarsened_k3", + "methods": 11, + "unique": 11, + "unique_ratio": 1.0, + "alphabet_size": 69, "sore": null, "sore_success": false }, @@ -906,53 +916,51 @@ "sore_success": true }, { - "context": "('parseStorageUri', 'RETURN', 'RETURN')", + "context": "('filesIn', 'assertTrue', 'assertTrue')", "label": "coarsened_k3", - "methods": 8, + "methods": 11, "unique": 5, - "unique_ratio": 0.625, - "alphabet_size": 14, + "unique_ratio": 0.455, + "alphabet_size": 5, "sore": null, "sore_success": false }, { - "context": "('File', 'writeBytes', 'byteArrayOf')", + "context": "('IF', 'isNullOrBlank', 'isNullOrBlank')", "label": "coarsened_k3", - "methods": 8, + "methods": 9, "unique": 7, - "unique_ratio": 0.875, - "alphabet_size": 25, + "unique_ratio": 0.778, + "alphabet_size": 49, "sore": null, "sore_success": false }, { - "context": "('runTest', 'ChatResponse', 'emptyList')", + "context": "('parseStorageUri', 'value', 'RETURN')", "label": "coarsened_k3", - "methods": 7, - "unique": 7, - "unique_ratio": 1.0, - "alphabet_size": 33, + "methods": 9, + "unique": 6, + "unique_ratio": 0.667, + "alphabet_size": 20, "sore": null, "sore_success": false - }, - { - "context": "('filesIn', 'assertTrue', 'hasImport')", - "label": "coarsened_k3", - "methods": 7, - "unique": 2, - "unique_ratio": 0.286, - "alphabet_size": 3, - "sore": "filesIn.assertTrue.(hasImport)+", - "sore_success": true } ], "cross_pkg_examples": [ { - "context": "('RETURN',)", - "packages": 9 + "context": "('IF', 'isEmpty', 'isEmpty')", + "packages": 8 }, { - "context": "('defaultCapabilityId',)", + "context": "('IF', 'isNullOrBlank', 'isNullOrBlank')", + "packages": 6 + }, + { + "context": "('IF', 'isBlank', 'isBlank')", + "packages": 5 + }, + { + "context": "('every', 'defaultCapabilityId', 'defaultCapabilityId')", "packages": 4 }, { @@ -972,19 +980,11 @@ "packages": 4 }, { - "context": "('get',)", + "context": "('get', 'get')", "packages": 4 }, { - "context": "('registerProperties',)", - "packages": 4 - }, - { - "context": "('assumeTrue', 'isDockerAvailable', 'start')", - "packages": 4 - }, - { - "context": "('listOf', 'listOf', 'forEach')", + "context": "('registerProperties', 'registerProperties')", "packages": 4 } ]