fipi-bank личная копия открытого банка ФИПИ Методология →
← к списку заданий
Математика ЕГЭ (профильный) Биология ОГЭ Математика ОГЭ Русский язык ЕГЭ Русский язык ОГЭ

Первоисточники

Официальные документы ФИПИ, на основании которых построена методология ниже — открываются напрямую, без пересказа.

Methodology: mapping the rus_ege / rus_oge banks to official exam task numbers

Question this answers: the open FIPI bank tags every Russian-language question with КЭС codes (codifiers, e.g. 3.8.7 Знаки препинания в сложном предложении) and an answer_type_code, but not the official task number (ЕГЭ №1-27, ОГЭ №1-13). This document derives the mapping from FIPI's own 2026/2027 documents (read directly) and is explicit about where it is exact, where it is a group, and where the bank mixes exam years. It mirrors MATH_OGE_METHODOLOGY.md; the rule table is encoded in scraper/assign_rus_task_numbers.py (tests: scraper/test_assign_rus_task_numbers.py).

Primary sources (official, fetched 2026-11-11, read directly)

From FIPI's page fipi.ru/{ege,oge}/demoversii-specifikacii-kodifikatory (links to doc.fipi.ru, plain curl from the Mac works, no RU-IP needed). Each year is one zip with three PDFs:

Exam Year Zip Documents inside
ЕГЭ русский язык 2026 (ratified) ru_11_2026.zip РУ-11 ЕГЭ 2026 СПЕЦ (specification), ... КОДИФ (codifier), ... ДЕМО (demo variant)
ЕГЭ русский язык 2027 (draft, "ПРОЕКТ") ru_11_2027.zip СПЕЦ, КОДИФ, ДЕМО
ОГЭ русский язык 2026 ru_9_2026.zip РУ-9 ОГЭ 2026_СПЕЦ, _КОДИФ, _ДЕМО (+ unrelated "Итоговое собеседование" PDFs, not used)
ОГЭ русский язык 2027 (draft) ru_9_2027.zip СПЕЦ, КОДИФ, ДЕМО (+ собеседование)

Primary source = the 2027 draft documents (owner's requirement, 2026-11-11); 2026 is kept as a cross-check. The "Обобщённый план" appendix of the 2027 specification was re-read from the PDFs and diffed token by token against 2026 (second independent check, 2026-11-11): ЕГЭ identical in numbering, КЭС codes, levels and scores (only hyphenation and the row order of task 26 in the PDF text layer differ; total still 27 tasks / 50 points / 210 min). ОГЭ identical in numbering and codes (13 tasks); the only substantive difference: max score of task 13 is 8 in 2027 vs 7 in 2026, total 38 vs 37. The task wording in the tables below is from the 2026 demo (the 2027 demo keeps the same task types). So the number -> КЭС mapping holds for 2027 as is; where 2026 differs (ОГЭ 13 score) it is marked.

Where the documents are on disk: PDFs are re-hosted on the VM under /opt/fipi-bank/media/methodology_sources/rus_ege|rus_oge/{2026,2027}_{specifikatsiya,kodifikator,demo}.pdf (the media/ folder is git-ignored; same layout as math/bio). The dashboard page /methodology?subject=rus_ege|rus_oge links them and renders this file.

Exam structure

ЕГЭ (27 tasks, 210 min, 50 points). Part 1 = tasks 1-26 (short answer, 28 points), Part 2 = task 27 (essay, 22 points, open answer, no FIPI checker - same as every other subject's open part). Tasks 8 and 22 are worth 2 points, the rest of Part 1 one point. Tasks 1-3 are built on text 1; tasks 23-27 on text 2.

ЕГЭ: task number -> КЭС -> answer type (2026 spec appendix + demo)

№ What it is (2026 demo) КЭС in the spec Answer Bank signature (codifiers, type)
1 Pick the connective / pronoun for the gap (логико-смысловые отношения) 1.2 word 1.2 (or 12 codes incl. 1.2, 3.6.x), short_answer, text "Самостоятельно подберите..."
2 Lexical meaning of 5 highlighted words in the text 3.3.1 digits multi_choice, text "В тексте выделено пять слов" (bank tags 3.3.1 or 3.3.3)
3 Correct characteristics of the text (style/genre) 2.1-2.5 digits multi_choice, "верные характеристики (фрагмента) текста" (codes 2.1-2.5, 2, or 1.3/1.4)
4 Stress (орфоэпия) 3.2.3 digits 3.2.3; multi_choice or short_answer
5 Paronym replacement 3.3.3 word 3.3.3, short_answer, wording "пароним"
6 Lexical error: extra word / wrong word 3.3.3 word 3.3.3, short_answer, wording "Отредактируйте предложение" / "лексическую ошибку"
7 Grammar error in a word form 3.5.2-3.5.6, 3.4.2, 3.6.3-3.6.7 word 3.5.2...3.5.6 (5 codes), short_answer
8 Grammar errors <-> sentences 3.6.3-3.6.7 5 digits (2 pts) matching, 3.6.3...3.6.7
9 Root vowels/consonants 3.7.2 digits 3.7.2
10 ъ/ь, prefixes, ы/и after prefixes 3.7.3, 3.7.4 digits 3.7.3,3.7.4 or 3.7.4
11 Suffixes (not participles) 3.7.5 digits 3.7.5 alone
12 Verb endings, participle suffixes 3.7.5, 3.7.8 digits 3.7.5,3.7.8 or 3.7.8
13 НЕ / НИ 3.7.7 digits 3.7.7
14 Слитно / дефис / раздельно 3.7.9 digits 3.7.9
15 Н / НН 3.7.6 digits 3.7.6
16 Punctuation: homogeneous parts, "ОДНУ запятую" 3.8.4, 3.8.7 digits 3.8.4,3.8.7 (or 3.8.4), multi_choice
17 Punctuation: обособление 3.8.5 digits 3.8.5
18 Punctuation: вводные слова, обращения 3.8.6 digits 3.8.6
19 Punctuation: сложное предложение 3.8.7 digits 3.8.7 alone
20 Punctuation: разные виды связи 3.8.8 digits 3.8.8
21 Пунктуационный анализ ("в соответствии с одним и тем же правилом") 3.8.1 digits 3.8.1, or the whole 3.8.x section (7-8 codes) + wording
22 Изобразительно-выразительные средства (matching) 3.2.2, 3.3.2, 3.6.2 5 digits (2 pts) matching, 3.2.2,3.3.2,3.6.2
23 Which statements match the text's content 1.4 digits multi_choice, "Какие из высказываний (не) соответствуют содержанию текста"
24 Which statements about the text are true / false 1.3 digits multi_choice, "Какие из перечисленных утверждений..." (bank tags 1.2 / 1.3 / 2)
25 Lexical analysis: copy a phraseologism / word of given meaning 3.3.1 word short_answer, "Из предложений N-M выпишите..." (bank tags 3.3.1 or 3.3.3)
26 Link between sentences (указательное местоимение, ...) 1.2 digits short_answer 1.2, "Среди предложений N-M найдите такое(-ие)..."
27 Essay on text 2 (open answer) 1.4, 1.5 open extended_answer

Notes: the spec's appendix gives the same КЭС to different tasks in four places - tasks 1 and 26 (both 1.2), tasks 2 and 25 (both 3.3.1), tasks 5 and 6 (both 3.3.3), tasks 7 and 8 (both 3.6.3-3.6.7) - so КЭС alone cannot split them; the splitter is the answer type (7 vs 8: short vs matching) or the task wording / group position (the rest).

Why the bank needs more than the spec: several KIM eras are mixed (ЕГЭ)

The open bank holds questions from several years. The text-based tasks changed position and wording between years (verified on group_id + the hint "Задание №k", which is the position inside a group sharing one text; 159 groups):

Block Layout in the bank Meaning
text 2, 6 members (58 groups) №1 content, №2 statements, №3 lexical, №4 link, №5 term_placement, №6 essay 2022-2025 KIM: tasks 22-27 (term_placement was task 26)
text 2, 5 members (13 groups) №1..№4 as above, №5 essay 2026 KIM: tasks 23-27 (the term-placement skill moved to a matching task 22 without text)
text 1, 3 members (76 groups) three layouts: (pick-word, five words, characterize) = 2026; (main information, pick-word, dictionary entry); (characterize, pick-word, dictionary entry) tasks 1-3 of different years
1-2 members (12 rows) incomplete groups cannot rely on the hint

Consequences, decided deliberately: - For tasks 23-26 the wording is decisive (identical in both eras: 22+k in the old layout is 23..26 in the new one), so the old tasks 22-25 are numbered by their 2026 counterparts 23-26, and the number never collides with the 2026 meaning of 22 (matching on expressive means). Cross-check against the hint: 355 of 355 checkable rows agree (hint audit in the dry-run). - Items whose format no longer exists in 2026 are not forced into an exact number; they get a group with grouped: - term_placement (58 rows) -> group 22 (same skill, КЭС 3.2.2/3.3.2/3.6.2, but the old fill-the-gaps format); - "Прочитайте фрагмент словарной статьи..." (48 rows) -> group 2 (skill = lexical meaning in context, but КЭС 3.3.3 vs 3.3.1 in the spec); - "...верно передана ГЛАВНАЯ информация..." (36 rows) -> group 23,24 (no direct 2026 counterpart; codes 1.3+1.4 = 24 + 23); - "Какое из приведённых ниже слов должно стоять на месте пропуска..." (9 rows) -> group 1 (legacy choose-from-a-list form of the 2026 task 1).

What is exact vs. best-effort - read this before trusting a number

ЕГЭ: 1989 exact, 151 grouped, 0 unclassified (7.1% low-confidence). Exact by КЭС + answer type alone: tasks 4, 7, 8, 9-15, 17, 18, 19, 20, 22, 27 (and 16, 21 when the КЭС is specific). Exact only with the question wording (755 of 2140 ЕГЭ rows depend on it; the rule is a plain phrase from the 2026 demo, tested): - tasks 5 vs 6 (181 rows; same КЭС 3.3.3, same type): "пароним" -> 5, "Отредактируйте предложение"/"лексическую ошибку" -> 6; if neither phrase is present the row would be grouped 5,6 (0 such rows today); - tasks 16 vs 21 when the bank tagged the whole 3.8.x section (48 rows): "ОДНУ запятую" -> 16, "в соответствии с одним и тем же правилом" -> 21, else group 16,21 (0 today); - tasks 1, 2, 3 and 23-26 (text blocks). If FIPI rewords these instructions in a future scrape, rows fall back to a group, not to a guess.

Honest limits: 1. Group numbers vs the real exam year. ege_task_number is the number in the 2026/2027 KIM. For a question taken from a 2022-2025 exam the position it actually had can differ (old 22-26 vs new 23-27; text-1 order). The legacy groups above flag the cases where no honest single number exists. 2. КЭС tags in the bank are looser than the spec for the text tasks (task 24 is tagged 1.2 / 1.3 / 2 / 1.2+1.3+1.4; task 25 is 3.3.1 or 3.3.3; task 2 is 3.3.1 or 3.3.3 or 1.3+1.4+3.3.3), so for these the wording is the only reliable separator. A new wording variant would be unclassified rather than mislabeled. 3. Tasks 10-14 contain both multi_choice and short_answer ("Определите слово, в котором ...") - both variants map to the same number; the answer type does not matter for the number there.

  1. The task number is not a difficulty or topic claim beyond the table: e.g. ЕГЭ 7 covers five different grammar-norm sub-topics (3.5.2-3.5.6), indistinguishable from codifiers once several are tagged together.

Result of the dry-run on the real bank (2026-11-11, DB read via SELECT only)

ЕГЭ (2140): task 1: 68, 2: 34, 3: 47, 4: 114, 5: 114, 6: 67, 7: 72, 8: 73, 9: 73, 10: 72, 11: 72, 12: 71, 13: 70, 14: 70, 15: 71, 16: 87, 17: 89, 18: 85, 19: 126, 20: 88, 21: 58, 22: 13, 23: 71, 24: 71, 25: 71, 26: 71, 27: 71 (exact, 1989); grouped: 22 58, 2 48, 23,24 36, 1 9 (151).

Each of tasks 23-27 has 71 rows = 71 text-2 groups (58 old six-member + 13 new five-member), a built-in consistency check. The authoritative figures are what the script prints (python3 scraper/assign_rus_task_numbers.py --db-dsn ...).

Implementation and how to run

scraper/assign_rus_task_numbers.py - dry-run by default (read-only); --apply writes ege_task_* for rus_ege rows and oge_task_* for rus_oge rows, only rows whose three columns would change (idempotent), in one transaction, scoped by subject. --jsonl gives an offline dry-run from an exported file. --show N lists N example fipi_code/ids per non-exact bucket. Re-run whenever the rule table changes or the bank is re-scraped.

Dashboard labels (web/app.py, 2026-11-11)

web/app.py has its own label tables for rus_ege (RUS_EGE_TASK_LABELS, RUS_EGE_TASK_GROUP_LABELS) and rus_oge (OGE_TASK_LABELS["rus_oge"]); ege labels are looked up by the row's subject, never by a bare number (earlier, rus №18 was shown with math's "Планиметрия"). Source of every label = the "Обобщённый план" of the 2027 draft specification (same as 2026). Labels:

ЕГЭ: 1 связь предложений: слово на месте пропуска; 2 лексическое значение слов в тексте; 3 характеристики текста (стиль, речь); 4 ударение; 5 паронимы; 6 лексическая ошибка (сочетаемость, плеоназм); 7 грамматические нормы: исправить форму слова; 8 грамматические нормы: соответствие; 9 гласные и согласные корня; 10 приставки, ъ/ь, ы/и после приставок; 11 суффиксы; 12 окончания глаголов, суффиксы причастий; 13 НЕ/НИ; 14 слитно/дефис/раздельно; 15 Н/НН; 16 запятые: однородные члены, сложное предложение; 17 обособление; 18 вводные слова, обращения; 19 сложное предложение; 20 сложное предложение, разные виды связи; 21 пунктуационный анализ; 22 выразительные средства (соответствие); 23 содержание текста: верные высказывания; 24 информация в тексте: верные утверждения; 25 лексический анализ: выписать слово; 26 средства связи предложений; 27 сочинение. Groups (bank cannot tell the number): 22 = 22 / 26 термины в пропусках (старый формат); 2 = значение слова по словарной статье (старый формат); 23,24 = главная информация текста (старый формат); 1 = слово из списка на месте пропуска (старый формат).

Filter values for these subjects are subject-scoped (en:rus_ege:18, eg:rus_ege:22, on:rus_oge:5), so picking rus 18 never matches math 18; the legacy n:/g: (math) values now exclude rus_ege. Tests: web/test_app.py.