Repository navigation
Epic: rosetta cross-language consistency — per-language deviation tracking (46 languages) #2560
Description
One tracking issue per language for the keyword-rosetta control corpus's measured cross-language bias (corpus built for #1096; gitgalaxy-side CI integration is #2557). Identical planted intent in all 46 languages — every deviation is measured engine bias, validated in the corpus's deviation ledger.
Current standing: 3 of 33 metrics pass the strict cross-language gate (no language beyond ±50% of median); on average 75% of languages sit within ±25% per metric (bias report, chart).
Strategy: structure first, then keywords, then risk
Each child issue is organized in fix order:
- Structure detection — function/args/class detection, dependency links, imports. Where these are broken (ada and embedded_python report
functions_found: 0; html'sfunc_startis dead end-to-end per html func_start is unreachable end-to-end: the polyglot splitter consumes <script>/<style> tags before html's rules run #2549), every downstream number for that language is built on sand. Fix these first. - Signal/keyword rules — per-keyword over/under-counting (literal shielding prism/detector: string-literal shielding is selective by signal family (if/try/open count inside a literal, eval does not) #2535, dual-rule overlaps, return-in-branch kotlin: branch rule counts 'return' — inconsistent with java/swift/c siblings #2545, etc.).
- Risk-exposure consequences — downstream of 1–2; expected to re-baseline substantially once the upstream layers fix. Don't tune risk formulas against today's biased inputs.
The improvement loop is cyclic and cheap: fix an engine issue → re-run the corpus gates + tools/bias_report.py → the ledger/report/chart regenerate → re-baseline expected_signals.json where intended (precedent: keyword-rosetta 0e8ebfa after #2548) → tick the affected languages here. Cross-cutting fixes (#2535 touches ~40 languages, #2546 most of them) will move many checkboxes at once — expect the list to collapse in clusters, not one-by-one.
Tier-2 caveat: the worst-looking rows (markdown 29🔴, css/html 14🔴, jcl 13🔴, yaml/yacc) are mostly zero-signal morphology (markdown genuinely has no io/state/telemetry), not extraction bugs — their fix is largely scoring-side (risk formulas treating absent morphology as incomparable rather than divergent), plus the real bugs marked in their issues (#2549 for html).
Cross-cutting engine issues feeding this epic
#2535 (selective literal shielding) · #2536 (hit_vector opacity) · #2537 (hyphen-identifier debt leak) · #2539 (js with) · #2540 (fortran USE case) · #2541 (php open tag) · #2542 (go import bypass) · #2543 (swift 1-char imports) · #2544 (swift open) · #2545 (return-in-branch family) · #2546 (×3 flux weighting) · #2547 (orphan conversion opacity) · #2549 (html func_start) — #2538 already fixed.
Per-language tracking (worst first)
- rosetta[markdown]: cross-language consistency — 29 red / 1 amber metrics, 3 ledgered shapes #2587
markdown— 29🔴 / 1🟡, 3 shapes — structure-level red (Tier-2 morphology) - rosetta[html]: cross-language consistency — 14 red / 7 amber metrics, 3 ledgered shapes #2578
html— 14🔴 / 7🟡, 3 shapes — structure-level red (Tier-2 morphology) - rosetta[css]: cross-language consistency — 14 red / 5 amber metrics, 2 ledgered shapes #2570
css— 14🔴 / 5🟡, 2 shapes — structure-level red (Tier-2 morphology) - rosetta[jcl]: cross-language consistency — 13 red / 7 amber metrics, 2 ledgered shapes #2581
jcl— 13🔴 / 7🟡, 2 shapes — structure-level red (Tier-2 morphology) - rosetta[yaml]: cross-language consistency — 9 red / 8 amber metrics, 2 ledgered shapes #2606
yaml— 9🔴 / 8🟡, 2 shapes — structure-level red (Tier-2 morphology) - rosetta[yacc]: cross-language consistency — 9 red / 3 amber metrics, 3 ledgered shapes #2605
yacc— 9🔴 / 3🟡, 3 shapes — structure-level red (Tier-2 morphology) - rosetta[m4]: cross-language consistency — 8 red / 6 amber metrics, 4 ledgered shapes #2585
m4— 8🔴 / 6🟡, 4 shapes — structure-level red - rosetta[sqlite]: cross-language consistency — 8 red / 2 amber metrics, 4 ledgered shapes #2601
sqlite— 8🔴 / 2🟡, 4 shapes — structure-level red - rosetta[apex]: cross-language consistency — 7 red / 5 amber metrics, 6 ledgered shapes #2564
apex— 7🔴 / 5🟡, 6 shapes — structure-level red - rosetta[haskell]: cross-language consistency — 6 red / 4 amber metrics, 4 ledgered shapes #2577
haskell— 6🔴 / 4🟡, 4 shapes - rosetta[dockerfile]: cross-language consistency — 5 red / 11 amber metrics, 5 ledgered shapes #2572
dockerfile— 5🔴 / 11🟡, 5 shapes — structure-level red - rosetta[embedded_python]: cross-language consistency — 5 red / 6 amber metrics, 4 ledgered shapes #2573
embedded_python— 5🔴 / 6🟡, 4 shapes — structure-level red - rosetta[fortran]: cross-language consistency — 5 red / 4 amber metrics, 5 ledgered shapes #2574
fortran— 5🔴 / 4🟡, 5 shapes - rosetta[agc_assembly]: cross-language consistency — 5 red / 3 amber metrics, 3 ledgered shapes #2563
agc_assembly— 5🔴 / 3🟡, 3 shapes — structure-level red - rosetta[matlab]: cross-language consistency — 5 red / 3 amber metrics, 5 ledgered shapes #2588
matlab— 5🔴 / 3🟡, 5 shapes - rosetta[python]: cross-language consistency — 5 red / 3 amber metrics, 5 ledgered shapes #2593
python— 5🔴 / 3🟡, 5 shapes - rosetta[scheme]: cross-language consistency — 5 red / 3 amber metrics, 5 ledgered shapes #2598
scheme— 5🔴 / 3🟡, 5 shapes — structure-level red - rosetta[solidity]: cross-language consistency — 5 red / 1 amber metrics, 4 ledgered shapes #2600
solidity— 5🔴 / 1🟡, 4 shapes (Tier-2 morphology) - rosetta[swift]: cross-language consistency — 5 red / 0 amber metrics, 4 ledgered shapes #2602
swift— 5🔴 / 0🟡, 4 shapes — structure-level red - rosetta[cobol]: cross-language consistency — 4 red / 8 amber metrics, 5 ledgered shapes #2567
cobol— 4🔴 / 8🟡, 5 shapes — structure-level red - rosetta[perl]: cross-language consistency — 4 red / 6 amber metrics, 5 ledgered shapes #2590
perl— 4🔴 / 6🟡, 5 shapes - rosetta[livecode]: cross-language consistency — 4 red / 5 amber metrics, 5 ledgered shapes #2583
livecode— 4🔴 / 5🟡, 5 shapes - rosetta[powershell]: cross-language consistency — 4 red / 4 amber metrics, 6 ledgered shapes #2592
powershell— 4🔴 / 4🟡, 6 shapes - rosetta[c]: cross-language consistency — 4 red / 3 amber metrics, 4 ledgered shapes #2566
c— 4🔴 / 3🟡, 4 shapes - rosetta[lua]: cross-language consistency — 4 red / 2 amber metrics, 3 ledgered shapes #2584
lua— 4🔴 / 2🟡, 3 shapes - rosetta[zig]: cross-language consistency — 4 red / 2 amber metrics, 5 ledgered shapes #2607
zig— 4🔴 / 2🟡, 5 shapes - rosetta[makefile]: cross-language consistency — 3 red / 4 amber metrics, 4 ledgered shapes #2586
makefile— 3🔴 / 4🟡, 4 shapes — structure-level red - rosetta[abap]: cross-language consistency — 3 red / 3 amber metrics, 2 ledgered shapes #2561
abap— 3🔴 / 3🟡, 2 shapes - rosetta[ada]: cross-language consistency — 3 red / 2 amber metrics, 4 ledgered shapes #2562
ada— 3🔴 / 2🟡, 4 shapes — structure-level red - rosetta[objective-c]: cross-language consistency — 3 red / 1 amber metrics, 6 ledgered shapes #2589
objective-c— 3🔴 / 1🟡, 6 shapes — structure-level red - rosetta[go]: cross-language consistency — 3 red / 0 amber metrics, 5 ledgered shapes #2575
go— 3🔴 / 0🟡, 5 shapes - rosetta[tcl]: cross-language consistency — 2 red / 3 amber metrics, 4 ledgered shapes #2603
tcl— 2🔴 / 3🟡, 4 shapes - rosetta[assembly]: cross-language consistency — 2 red / 2 amber metrics, 5 ledgered shapes #2565
assembly— 2🔴 / 2🟡, 5 shapes - rosetta[groovy]: cross-language consistency — 2 red / 2 amber metrics, 4 ledgered shapes #2576
groovy— 2🔴 / 2🟡, 4 shapes - rosetta[kotlin]: cross-language consistency — 2 red / 2 amber metrics, 5 ledgered shapes #2582
kotlin— 2🔴 / 2🟡, 5 shapes - rosetta[php]: cross-language consistency — 2 red / 2 amber metrics, 4 ledgered shapes #2591
php— 2🔴 / 2🟡, 4 shapes - rosetta[scala]: cross-language consistency — 2 red / 2 amber metrics, 3 ledgered shapes #2596
scala— 2🔴 / 2🟡, 3 shapes - rosetta[javascript]: cross-language consistency — 1 red / 5 amber metrics, 4 ledgered shapes #2580
javascript— 1🔴 / 5🟡, 4 shapes - rosetta[shell]: cross-language consistency — 1 red / 5 amber metrics, 5 ledgered shapes #2599
shell— 1🔴 / 5🟡, 5 shapes - rosetta[java]: cross-language consistency — 1 red / 2 amber metrics, 3 ledgered shapes #2579
java— 1🔴 / 2🟡, 3 shapes - rosetta[dart]: cross-language consistency — 1 red / 1 amber metrics, 4 ledgered shapes #2571
dart— 1🔴 / 1🟡, 4 shapes - rosetta[typescript]: cross-language consistency — 1 red / 0 amber metrics, 4 ledgered shapes #2604
typescript— 1🔴 / 0🟡, 4 shapes - rosetta[cpp]: cross-language consistency — 0 red / 2 amber metrics, 3 ledgered shapes #2568
cpp— 0🔴 / 2🟡, 3 shapes - rosetta[csharp]: cross-language consistency — 0 red / 2 amber metrics, 3 ledgered shapes #2569
csharp— 0🔴 / 2🟡, 3 shapes - rosetta[ruby]: cross-language consistency — 0 red / 2 amber metrics, 3 ledgered shapes #2594
ruby— 0🔴 / 2🟡, 3 shapes - rosetta[rust]: cross-language consistency — 0 red / 0 amber metrics, 2 ledgered shapes #2595
rust— 0🔴 / 0🟡, 2 shapes
A language's issue closes when it sits inside the ±25% band on every comparable metric, or every remaining deviation is ledgered as intended morphology.
Activity
fix(python): stop io/test rules double-counting globals/safety keywor…
squid-protocol commentedon Sep 2, 2026
Coordination for the remaining work now lives in #2669 (cause-first batches, session-start protocol, model tiers). The per-language issues here stay as the record and will get scripted status comments after each batch's regen rather than individual sweeps. First engine finding from the assessment: #2668 (graph resolver drops
./name.extimports; zeroes network metrics for shell/powershell/yaml/javascript). Assessment: https://claude.ai/code/artifact/9bc0a5a3-5268-4e6a-8d2c-ea8924a45889squid-protocol commentedon Sep 6, 2026
Closed 2026-09-06 as superseded by #2812 (
docs/contract_roadmap.md, decision D2). The per-language children #2561–#2607 are closed with the same reason: every cell they listed is explained (the gate has read 0 unexplained since keyword-rosetta#51) and is tracked by cause family — the ledger entry, the cause category inbias_data.json["cell_categories"], and #2812's family list. The strategy section here (structure → keywords → risk) stands as history; the roadmap's stream → count → score framing replaces it, and its close criterion is open-defect share 0 with no draft row instandards/signal_contracts.py, not 'nothing unexplained'.docs(readme): describe the cause-coloured rosetta chart and the open-…