Skip to content

rosetta[groovy]: cross-language consistency — 2 red / 2 amber metrics, 4 ledgered shapes #2576

Closed

Description

@squid-protocol

Part of #2560 — per-language tracking for the keyword-rosetta control corpus (built for #1096). Planted intent is identical in every language, so every deviation below is measured bias vs. the 46-language median, validated in the corpus's deviation ledger. 🔴 = beyond ±50% of the cross-language median, 🟡 = ±25–50%.

Triage order (per the epic): structure detection first, then signal/keyword rules, then risk-score consequences — §3's numbers are downstream of §1–§2 and re-baseline as those fix. Cross-cutting engine issues (e.g. #2535/#2546) fix many languages at once; this issue tracks this language's residual after each cross-cutting fix lands, and closes when the language sits inside the ±25% band on every comparable metric (or every remaining deviation is ledgered as intended morphology).

1. Structure detection (fix first)

  • 🟡 args: 19 vs median 13 (+46%)

2. Signal / keyword deviations

  • 🔴 doc: 2 vs median 1 (+100%)
  • 🟡 safety: 3 vs median 2 (+50%)

3. Risk-exposure consequences (downstream)

  • 🔴 risk_cognitive_load: 23.2925 vs median 15.1444 (+54%)

Ledgered shapes touching groovy

defect type issue evidence summary
census-requires-git-tracked engine-semantic — — GalaxyScope's census enumerates git-tracked files only; an untracked folder scans as '0 files mapped' with no per-file warning
ts-callparen-args engine-semantic — — typescript's args rule counts statement-position call parens (describe(kit), expect(kit)) in addition to declaration params — a.ts args 5 for 3 declarations (finditer-co…
batch4-dual-keyword-overlaps keyword-overlap — — Collective entry for batch 4's finditer-confirmed dual-rule keywords, each detailed in its language's manifest notes: agc RESUME (cleanup+branch), livecode global (globa…
string-literal-selective-shielding upstream-question #2535 b.groovy Keywords inside one string literal ('if eval fails, try open') count toward branch (+2), safety (+1), io (+1) but eval does NOT count toward high_risk_execution (routes …
Decoy outcomes (file-level evidence)
  • b.groovy · note = "if eval fails, try open" (string): if + try count (groovy branch includes try, finditer-confirmed; try also safety); counter=/note= 2 raw state tripled to 6. Ledger: string-literal-selective-shielding, state-flux-branch-weighting

Reproduce / evidence

Activity

  1. added
    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 3, 2026

    @squid-protocol
    OwnerAuthor

    Status: clean — every out-of-band metric is accounted for

    Generated from docs/bias_data.json + deviation_ledger.json by tools/issue_status.py, using the same verdict machinery bias_report.py --gate runs on (gitgalaxy#2669 E.1), so this comment and the gate cannot disagree about what is left.

    Out of band, but accounted for

    ledgered — a validated ledger entry names this language and this metric

    • args — ts-callparen-args
    • control_flow_ratio — control-flow-ratio-denominator-is-a-vocabulary-tally

    Close criterion (gitgalaxy#2669 Batch E.4)

    python tools/language_deviations.py groovy exits 0: nothing is unexplained and no n/a cell is unreviewed. That is not the same as "no metric deviates" — deviations remain, and each is named above with the reason it is not a defect. This issue has nothing language-specific left to do.

  3. squid-protocol commented on Sep 3, 2026

    @squid-protocol
    OwnerAuthor

    Closing per gitgalaxy#2669 Batch E.4: python tools/language_deviations.py groovy exits 0 against the current corpus (keyword-rosetta main) and engine main.

    The criterion is not "no metric deviates" — groovy still has out-of-band metrics, and the status comment above lists every one of them. It is that each carries a recorded reason it is not a defect: a validated ledger entry naming this language and metric, an inherited deviation from an input that is itself out of band, or a per-function descriptor for a language with no functions. Nothing is left that is specific to groovy.

    That criterion only became machine-checkable in this batch: E.1 (keyword-rosetta#40) taught the report to read the ledger it already had, and Batch D (keyword-rosetta#41) supplied the five entries the shape-descriptor family needed. Re-run tools/issue_status.py groovy after any future regen; if a new unexplained cell appears, this issue should be reopened rather than a new one filed.

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 enginemetricsHeuristics, risk exposures, and topological math updates

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions