Repository navigation
rosetta[css]: cross-language consistency — 14 red / 5 amber metrics, 2 ledgered shapes #2570
Description
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: 3 vs median 13 (-77%)
2. Signal / keyword deviations
- 🔴
cleanup: 0 vs median 2 (-100%) - 🔴
doc: 0 vs median 1 (-100%) - 🔴
globals: 0 vs median 2 (-100%) - 🔴
io: 0 vs median 3 (-100%) - 🔴
ownership: 0 vs median 1 (-100%) - 🔴
safety_bypasses: 0 vs median 2 (-100%) - 🔴
state_mutation: 0 vs median 6 (-100%) - 🔴
telemetry: 0 vs median 2 (-100%) - 🟡
branch: 3 vs median 5 (-40%) - 🟡
keyword_hits: 147 vs median 247.5 (-41%) - 🟡
safety: 1 vs median 2 (-50%)
3. Risk-exposure consequences (downstream)
- 🔴
risk_api_exposure: 0 vs median 5.31104 (-100%) - 🔴
risk_cognitive_load: 4 vs median 15.1444 (-74%) - 🔴
risk_documentation: 26.4404 vs median 57.1208 (-54%) - 🔴
risk_spec_match: 45.3333 vs median 96 (-53%) - 🔴
risk_state_flux: 0 vs median 19.9999 (-100%) - 🟡
risk_safety_score: 19.8485 vs median 37.297 (-47%) - 🟡
risk_verification: 1.27414 vs median 2.3628 (-46%)
Ledgered shapes touching css
| 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 |
batch5-tier2-morphology-shapes |
keyword-overlap | — | — | Collective entry for Tier-2 finditer/report-confirmed shapes, detailed per-manifest: css at-rules triple-count (func+branch, @supports also safety; args tracks @import u… |
Decoy outcomes (file-level evidence)
- main.css ·
@media / @supports / @container(code): the three planted branch at-rules are TRIPLE-counted: each is func_start (the CSS at-rules (@layer / @media / @supports) counted as functions; css tree-sitter-accuracy baseline stale (real_functions 24→25) #2507/sqlite tri-comparison validation: class extraction to 100%, both ledger shapes validated #2513 'closest function-shaped construct' precedent), @media/@supports/@container are branch, and @supports is also safety — one @supports line = 3 signals
Reproduce / evidence
- Corpus folder:
data/css/—expected_signals.jsoncarries the shape-by-shape accounting - Gate:
GALAXYSCOPE_BIN=<venv>/bin/galaxyscope python tools/verify_language.py cssin the corpus repo - Full context: findings_by_language.md#css · bias_report.md · bias chart
Activity
squid-protocol commentedon Sep 3, 2026
Status: 3🔴 / 2🟡 unexplained, 13 further out-of-band cell(s) accounted for
Generated from
docs/bias_data.json+deviation_ledger.jsonbytools/issue_status.py, using the same verdict machinerybias_report.py --gateruns on (gitgalaxy#2669 E.1), so this comment and the gate cannot disagree about what is left.Still unexplained — the work this issue tracks
keyword_hitscoding_loctoken_masstotal_locrisk_api_exposureOut of band, but accounted for
derived — the deviation entered through an input that is itself out of band -- the same finding counted twice
cog_raw— inherits args, total_loc, coding_locstructural_mass— inherits args, total_loc, coding_locledgered — a validated ledger entry names this language and this metric
args— batch5-tier2-morphology-shapes, args-no-parameter-surface-morphologyavg_func_args— args-no-parameter-surface-morphologyavg_func_loc— function-body-length-morphologycontrol_flow_ratio— control-flow-ratio-denominator-is-a-vocabulary-tallyfunc_complexity_gini— function-body-length-morphologyfunc_internal_density— function-body-length-morphologyhigh_risk_execution— batch5-tier2-morphology-shapesmax_func_complexity— function-body-length-morphologyrisk_documentation— path-and-extension-modifiersrisk_state_flux— path-and-extension-modifierssafety— batch5-tier2-morphology-shapesUnreviewed n/a cells
The registry defines no rule here, and no validated ledger entry records why — each is either real morphology to ledger or a missing-rule engine gap of the kind gitgalaxy#2610 turned out to be:
risk_concurrency.Close criterion (gitgalaxy#2669 Batch E.4)
python tools/language_deviations.py cssexits 1: 5 unexplained cell(s) and 1 unreviewed n/a cell(s) remain. Each needs a fix, or a validated ledger entry saying why it is correct, before this issue can close.squid-protocol commentedon Sep 5, 2026
Status: clean — every out-of-band metric is accounted for
Generated from
docs/bias_data.json+deviation_ledger.jsonbytools/issue_status.py, using the same verdict machinerybias_report.py --gateruns on (gitgalaxy#2669 E.1), so this comment and the gate cannot disagree about what is left.Out of band, but accounted for
derived — the deviation entered through an input that is itself out of band -- the same finding counted twice
cog_raw— inherits total_loc, coding_loc, func_complexity_ginirisk_api_exposure— inherits raw_arch_api, def_encapsulationrisk_tech_debt— inherits raw_state_slop_orphansledgered — a validated ledger entry names this language and this metric
args— batch5-tier2-morphology-shapes, args-no-parameter-surface-morphologyavg_func_args— args-no-parameter-surface-morphologyfunc_complexity_gini— function-body-length-morphologyhigh_risk_execution— batch5-tier2-morphology-shapesmax_func_complexity— function-body-length-morphologyraw_arch_api— api-column-is-rule-hits-only, api-non-function-surfacesraw_state_slop_orphans— orphan-detection-is-name-recurrencerisk_state_flux— path-and-extension-modifierssafety— batch5-tier2-morphology-shapesReported, not gated (program length, unplanted risk inputs, commit age -- gitgalaxy#2669 F.1/F.3):
avg_func_loc1.5 vs median 5.104 (-71%),coding_loc7.5 vs median 17.5 (-57%),control_flow_ratio0.125 vs median 0.09375 (+33%),keyword_hits64 vs median 146.5 (-56%),structural_mass0.2725 vs median 12.43 (-98%),token_mass81.5 vs median 128 (-36%),total_loc16.25 vs median 25 (-35%). None of these is a planted signal; a derived risk cell above may inherit from one.Close criterion (gitgalaxy#2669 Batch E.4)
python tools/language_deviations.py cssexits 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.squid-protocol commentedon Sep 5, 2026
Closing per the F.6 criterion (gitgalaxy#2669):
language_deviations.py cssexits 0 — every out-of-band metric carries a recorded reason (validated ledger entry, derivation edge, or reported-not-gated group). This was the last language family blocked on unreviewed n/a cells; the n/a review landed in keyword-rosetta#54 (all 26 cells dispositioned; engine gaps filed as gitgalaxy#2732/#2733).To be explicit about what closed does NOT mean: not all-green — out-of-band metrics remain, each with its reason recorded above; the nightly regen + F.6 loop reopens this issue automatically if the language drifts back out of compliance. §10 capstone owed per the E.3/#2696 standing rule (F.6 owns it).