Repository navigation
rosetta[yaml]: cross-language consistency — 9 red / 8 amber metrics, 2 ledgered shapes #2606
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: 0 vs median 13 (-100%) - 🔴
dependency_links: 0 vs median 3 (-100%) - 🔴
functions_found: 3 vs median 13 (-77%)
2. Signal / keyword deviations
- 🔴
cleanup: 0 vs median 2 (-100%) - 🔴
doc: 2 vs median 1 (+100%) - 🔴
ownership: 0 vs median 1 (-100%) - 🔴
state_mutation: 1 vs median 6 (-83%) - 🟡
branch: 3 vs median 5 (-40%) - 🟡
comment_lines: 15 vs median 30 (-50%) - 🟡
keyword_hits: 176 vs median 247.5 (-29%) - 🟡
safety: 1 vs median 2 (-50%) - 🟡
safety_bypasses: 1 vs median 2 (-50%) - 🟡
test: 1 vs median 2 (-50%)
3. Risk-exposure consequences (downstream)
- 🔴
risk_api_exposure: 0 vs median 5.31104 (-100%) - 🔴
risk_cognitive_load: 5.68942 vs median 15.1444 (-62%) - 🟡
risk_documentation: 42.7904 vs median 57.1208 (-25%) - 🟡
risk_tech_debt: 20 vs median 39.9576 (-50%)
Ledgered shapes touching yaml
| 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… |
Reproduce / evidence
- Corpus folder:
data/yaml/—expected_signals.jsoncarries the shape-by-shape accounting - Gate:
GALAXYSCOPE_BIN=<venv>/bin/galaxyscope python tools/verify_language.py yamlin the corpus repo - Full context: findings_by_language.md#yaml · bias_report.md · bias chart
Activity
squid-protocol commentedon Sep 1, 2026
Heads-up from the markdown sweep (#2587 / PR #2639): yaml's
_dependency_capture(the GitHub Actionsuses:/image:rule authored in #813/#843) turns out to have been dead code all along — yaml isis_inert, and Phase 6 skipped import extraction for inert languages entirely. #2639's opt-in (an inert language that declares the rule gets dependency extraction) wakes it: yamldependency_links0→3 on the corpus, landing exactly on the median, and Actions/container refs now produce real supply-chain DAG edges on real repos. Current standing after the fresh bias regen: 6🔴 / 6🟡 (title says 9/8). yaml's own sweep (incl. its 2 remaining unreviewed n/a cells,cleanup/ownership) remains separate work.squid-protocol commentedon Sep 3, 2026
Status: 2🔴 / 8🟡 unexplained, 8 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_locstate_mutationtesttoken_masstotal_locrisk_api_exposurerisk_documentationrisk_state_fluxrisk_tech_debtOut of band, but accounted for
derived — the deviation entered through an input that is itself out of band -- the same finding counted twice
avg_func_loc— inherits total_loc, coding_locfunc_internal_density— inherits argsstructural_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-morphologycontrol_flow_ratio— control-flow-ratio-denominator-is-a-vocabulary-tallyhigh_risk_execution— batch5-tier2-morphology-shapessafety— batch5-tier2-morphology-shapesClose criterion (gitgalaxy#2669 Batch E.4)
python tools/language_deviations.py yamlexits 1: 10 unexplained 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 6, 2026
Closed 2026-09-06 as superseded by #2812 (
docs/contract_roadmap.md, decision D2). Every out-of-band cell for yaml is accounted for (the gate reads 0 unexplained) and is now tracked by cause family, not by language: the ledger entry that explains it, its cause category in keyword-rosetta'sdocs/bias_data.json["cell_categories"](echo / inherency / extraction / correlation / scoring), and the family issue #2812 lists for that cause. Live standing at any time:python tools/language_deviations.py yamlin keyword-rosetta, ordocs/findings_by_language.md#yaml.This is a change of axis, not a claim that yaml is green. The §10 capstone in
docs/language_status/yaml.mdis written when the language reads clean bylanguage_deviations.py, by whichever family PR gets it there — no longer tied to this issue.