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: 1 vs median 13 (-92%)
- 🔴
functions_found: 28 vs median 13 (+115%)
2. Signal / keyword deviations
- 🔴
io: 11 vs median 3 (+267%)
- 🔴
keyword_hits: 116 vs median 247.5 (-53%)
- 🔴
safety_bypasses: 0 vs median 2 (-100%)
- 🟡
state_mutation: 3 vs median 6 (-50%)
3. Risk-exposure consequences (downstream)
- 🔴
risk_cognitive_load: 5.53524 vs median 15.1444 (-63%)
- 🔴
risk_state_flux: 0 vs median 19.9999 (-100%)
- 🔴
risk_tech_debt: 60 vs median 39.9576 (+50%)
- 🟡
risk_spec_match: 64 vs median 96 (-33%)
Ledgered shapes touching sqlite
| 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 |
sqlite-dot-read-dual-import-io |
keyword-overlap |
— |
(notes) |
^.read counts BOTH import and io (finditer-confirmed) — every corpus chain link adds +1 io in sqlite |
orphan-conversion-opaque-counts |
upstream-question |
#2547 |
(notes) |
On languages without a same-file call graph the orphan census includes non-function shapes, so the orphan->api conversion count diverges from visible function counts: sh… |
string-literal-selective-shielding |
upstream-question |
#2535 |
b.sql |
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)
- main.sql ·
never detaches a database and no shell word (comment): stripped: contributed 0
- b.sql ·
SELECT 'IF UPDATE FAILS TRY SELECT AGAIN' (string): UPDATE and SELECT inside the literal COUNT (io +2, state +1); IF/TRY inert (sqlite has no bare IF/TRY keywords). io 5 = planted UPDATE + carrier SELECT + .read + 2 from the literal. Ledger: string-literal-selective-shielding
- c.sql ·
hack_level; (code): inert (underscore + lowercase)
Reproduce / evidence
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: 1 vs median 13 (-92%)functions_found: 28 vs median 13 (+115%)2. Signal / keyword deviations
io: 11 vs median 3 (+267%)keyword_hits: 116 vs median 247.5 (-53%)safety_bypasses: 0 vs median 2 (-100%)state_mutation: 3 vs median 6 (-50%)3. Risk-exposure consequences (downstream)
risk_cognitive_load: 5.53524 vs median 15.1444 (-63%)risk_state_flux: 0 vs median 19.9999 (-100%)risk_tech_debt: 60 vs median 39.9576 (+50%)risk_spec_match: 64 vs median 96 (-33%)Ledgered shapes touching sqlite
census-requires-git-trackedsqlite-dot-read-dual-import-ioorphan-conversion-opaque-countsstring-literal-selective-shieldingDecoy outcomes (file-level evidence)
never detaches a database and no shell word(comment): stripped: contributed 0SELECT 'IF UPDATE FAILS TRY SELECT AGAIN'(string): UPDATE and SELECT inside the literal COUNT (io +2, state +1); IF/TRY inert (sqlite has no bare IF/TRY keywords). io 5 = planted UPDATE + carrier SELECT + .read + 2 from the literal. Ledger: string-literal-selective-shieldinghack_level;(code): inert (underscore + lowercase)Reproduce / evidence
data/sqlite/—expected_signals.jsoncarries the shape-by-shape accountingGALAXYSCOPE_BIN=<venv>/bin/galaxyscope python tools/verify_language.py sqlitein the corpus repo