Skip to content

Epic: rosetta cross-language consistency — per-language deviation tracking (46 languages) #2560

Closed as not planned

Description

@squid-protocol

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:

  1. Structure detection — function/args/class detection, dependency links, imports. Where these are broken (ada and embedded_python report functions_found: 0; html's func_start is 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.
  2. 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.).
  3. 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)

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

  1. added
    epicLarge-scale architectural milestone or multi-issue initiative
    metricsHeuristics, risk exposures, and topological math updates
    core-engineModifications to the central physics and parsing engine
    on Aug 31, 2026
  2. squid-protocol commented on Sep 2, 2026

    @squid-protocol
    OwnerAuthor

    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.ext imports; zeroes network metrics for shell/powershell/yaml/javascript). Assessment: https://claude.ai/code/artifact/9bc0a5a3-5268-4e6a-8d2c-ea8924a45889

  3. squid-protocol commented on Sep 6, 2026

    @squid-protocol
    OwnerAuthor

    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 in bias_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 in standards/signal_contracts.py, not 'nothing unexplained'.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    core-engineModifications to the central physics and parsing engineepicLarge-scale architectural milestone or multi-issue initiativemetricsHeuristics, risk exposures, and topological math updates

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions