{"id":496732,"date":"2026-09-30T12:31:16","date_gmt":"2026-09-30T12:31:16","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=496732"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2026-09-30T12:31:16","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=496732","title":{"rendered":"\u041d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 PR, \u0442\u0435\u0441\u0442\u044b \u0437\u0435\u043b\u0451\u043d\u044b\u0435, \u0430\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c. \u041a\u0430\u043a\u00a0\u044f \u043d\u0430\u0443\u0447\u0438\u043b CI \u044d\u0442\u043e \u043b\u043e\u0432\u0438\u0442\u044c"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4ac\/eef\/514\/4aceef514f7bc2457393c6f01b419a01.png\" alt=\"\u041e\u0442\u0447\u0451\u0442 confidence-scorer: \u043d\u0430\u0439\u0434\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440, score 35\/100  \" title=\"\u041e\u0442\u0447\u0451\u0442 confidence-scorer: \u043d\u0430\u0439\u0434\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440, score 35\/100  \" width=\"2476\" height=\"2444\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4ac\/eef\/514\/4aceef514f7bc2457393c6f01b419a01.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4ac\/eef\/514\/4aceef514f7bc2457393c6f01b419a01.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u041e\u0442\u0447\u0451\u0442 confidence\u2011scorer: \u043d\u0430\u0439\u0434\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440, score 35\/100 <\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u00ab\u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u00bb \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e.\u00a0\u041b\u0438\u043d\u0442\u0435\u0440 \u043c\u043e\u043b\u0447\u0438\u0442, \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442, \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u0432\u0438\u0434\u0438\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u0434\u0438\u0444\u0444 \u0432\u00a0\u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0436\u043c\u0451\u0442 Approve. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043a\u0438\u0434\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442.<\/p>\n<p>\u0422\u0435\u0441\u0442\u044b \u0432\u00a0\u0442\u0430\u043a\u043e\u043c PR \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u0442\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0447\u0442\u043e\u00a0\u0438 \u043a\u043e\u0434. \u041e\u043d\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442, \u0447\u0442\u043e\u00a0\u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e\u00a0\u0442\u043e\u043c, \u0432\u0435\u0434\u0451\u0442\u00a0\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u043e\u0434 \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435. \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e: \u043e\u043d \u0431\u0435\u0440\u0451\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0438 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u00a0\u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445\u00a0\u0436\u0435 \u0432\u0445\u043e\u0434\u0430\u0445 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0440\u0430\u0437\u043e\u0448\u043b\u0438\u0441\u044c.<\/p>\n<p>\u041f\u043e\u0434\u00a0\u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0\u0443\u0441\u0442\u0440\u043e\u0435\u043d\u00a0<a href=\"https:\/\/github.com\/Kakadu525\/confidence-scorer\" rel=\"noopener nofollow\">confidence\u2011scorer<\/a>, \u043d\u0430\u00a0\u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u044f \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043f\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u0435 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043e\u0442\u00a0\u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0432\u0441\u0451\u2011\u0442\u0430\u043a\u0438 \u0435\u0441\u0442\u044c, \u0445\u043e\u0442\u044f \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0430 \u0443\u00a0\u043d\u0435\u0451 \u043d\u0435\u0442.<\/p>\n<h3>\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435<\/h3>\n<ol>\n<li>\n<p><a href=\"#first\" rel=\"noopener nofollow\">\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#idea\" rel=\"noopener nofollow\">\u0418\u0434\u0435\u044f: \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435\u00bb<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#how\" rel=\"noopener nofollow\">\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#obhod\" rel=\"noopener nofollow\">\u0413\u0440\u0430\u0431\u043b\u0438 \u0438 \u043a\u0430\u043a\u00a0\u044f \u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0438\u043b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#AIrev\" rel=\"noopener nofollow\">\u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 AI\u2011\u0440\u0435\u0432\u044c\u044e\u0435\u0440\u044b<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#3num\" rel=\"noopener nofollow\">\u041a\u0430\u043a\u00a0\u0442\u0440\u0438 \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043e\u0434\u0438\u043d score<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#local\" rel=\"noopener nofollow\">\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e API<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#git\" rel=\"noopener nofollow\">GitHub Action \u0438 PR \u0438\u0437\u00a0\u0444\u043e\u0440\u043a\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#limits\" rel=\"noopener nofollow\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"#project\" rel=\"noopener nofollow\">\u041f\u0440\u043e\u00a0\u0418\u0418 \u0432\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c<\/a><\/p>\n<\/li>\n<\/ol>\n<p><a class=\"anchor\" name=\"first\" id=\"first\"><\/a><\/p>\n<h2>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435<\/h2>\n<p>\u0412\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f\u00a0\u0431\u044b\u043b\u0430 \u0432\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0435:<\/p>\n<pre><code class=\"python\">def apply_discount(price: float, percent: float) -&gt; float:    \"\"\"Return the price after a percentage discount (0-100).\"\"\"    if percent &lt; 0 or percent &gt; 100:        raise ValueError(\"percent must be between 0 and 100\")    return price - (price * percent \/ 100)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<p>\u0410\u00a0\u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0448\u043b\u043e \u0432\u00a0PR \u0441\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u00absimplify apply_discount validation\u00bb:<\/p>\n<pre><code class=\"python\">def apply_discount(price: float, percent: float) -&gt; float:    \"\"\"Return the price after a percentage discount (0-100).\"\"\"    if percent &gt; 100:        raise ValueError(\"percent must be between 0 and 100\")    return price - (price * percent \/ 100)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0418\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430. \u0415\u0441\u043b\u0438 \u0432\u00a0\u0442\u0435\u0441\u0442\u0430\u0445 \u043d\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u0441\u00a0\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u043c (\u0430 \u043e\u0442\u043a\u0443\u0434\u0430 \u0435\u043c\u0443 \u0432\u0437\u044f\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0435\u0441\u0442\u044b \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0430 \u0442\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c), \u0432\u0441\u0451 \u0437\u0435\u043b\u0451\u043d\u043e\u0435. \u041d\u0430\u00a0\u0440\u0435\u0432\u044c\u044e \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u0435\u0442 \u043b\u0435\u0433\u043a\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 PR \u043e\u0442\u00a0\u0430\u0433\u0435\u043d\u0442\u0430 \u0443\u0436\u0435 \u0434\u0435\u0441\u044f\u0442\u044b\u0439 \u0437\u0430\u00a0\u0434\u0435\u043d\u044c.<\/p>\n<p>confidence\u2011scorer \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u0434\u0438\u0444\u0444\u0435 \u0432\u044b\u0434\u0430\u0451\u0442:<\/p>\n<pre><code>Confidence Score: 35\/100Confirmed behavior counterexample found: do not merge without a manual checkpricing.py::apply_discount: the old and the new version disagree on whetherthey raise an exception (input={'price': '0.0', 'percent': '-0.5'},before=raised ValueError('percent must be between 0 and 100'), after=0.0)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u00a0\u043e\u0442\u0447\u0451\u0442\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u0438 \u0442\u043e, \u043a\u0430\u043a\u00a0\u0432\u0435\u043b\u0438 \u0441\u0435\u0431\u044f \u043d\u0430\u00a0\u043d\u0451\u043c \u0441\u0442\u0430\u0440\u0430\u044f \u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. Exit code 1, \u043c\u0435\u0440\u0436 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<p><a class=\"anchor\" name=\"idea\" id=\"idea\"><\/a><\/p>\n<h2>\u0418\u0434\u0435\u044f: \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435\u00bb<\/h2>\n<p>Property\u2011based testing \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0430\u0432\u043d\u043e:\u00a0<a href=\"https:\/\/hypothesis.readthedocs.io\/\" rel=\"noopener nofollow\">Hypothesis<\/a>\u00a0\u0434\u043b\u044f\u00a0Python,\u00a0<a href=\"https:\/\/fast-check.dev\/\" rel=\"noopener nofollow\">fast\u2011check<\/a>\u00a0\u0434\u043b\u044f\u00a0JS. \u0412\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u00ab\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0439\u00a0\u0436\u0435 \u0434\u043b\u0438\u043d\u044b\u00bb, \u0430\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0442\u043d\u0438 \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0438\u0449\u0435\u0442 \u0442\u043e\u0442, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f. \u0411\u0435\u0434\u0430 \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0438 \u043d\u0430\u00a0\u044d\u0442\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u00a0\u043d\u0430\u0434\u043e:<\/p>\n<blockquote>\n<p><em>\u0434\u043b\u044f\u00a0\u043b\u044e\u0431\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0441\u0442\u0430\u0440\u0430\u044f.<\/em><\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e differential testing. \u041e\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0435\u00a0\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0438\u0437\u00a0\u0434\u0438\u0444\u0444\u0430 \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.<\/p>\n<p>\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u00a0\u043a\u0430\u0436\u0434\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0431\u0430\u0433. \u0418\u043d\u043e\u0433\u0434\u0430 PR \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0422\u043e\u0433\u0434\u0430 \u0432\u00a0\u043e\u0442\u0447\u0451\u0442\u0435 \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u044f\u0432\u043d\u043e: \u0432\u043e\u0442 \u0432\u0445\u043e\u0434, \u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u0431\u044b\u043b\u043e, \u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u0441\u0442\u0430\u043b\u043e, \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.<\/p>\n<p><a class=\"anchor\" name=\"how\" id=\"how\"><\/a><\/p>\n<h2>\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e<\/h2>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/83d\/109\/498\/83d1094981228431d9d8c9d8a8d0cdfc.png\" width=\"2160\" height=\"2020\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/83d\/109\/498\/83d1094981228431d9d8c9d8a8d0cdfc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/83d\/109\/498\/83d1094981228431d9d8c9d8a8d0cdfc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u043e\u0439.<\/p>\n<ol>\n<li>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c.\u00a0<code>git diff<\/code>\u00a0\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b\u044b, \u0430\u00a0\u043d\u0435\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u0443\u044e \u0438 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u0432\u00a0AST (\u0434\u043b\u044f JS\/TS \u0447\u0435\u0440\u0435\u0437 Babel \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c Node\u2011\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435) \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c,\u00a0\u043b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043d\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0442\u043e\u043c \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0432\u0445\u043e\u0434\u043e\u0432. \u0415\u0441\u043b\u0438 \u0443\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0435\u0441\u0442\u044c type hints (<code>int<\/code>,\u00a0<code>str<\/code>,\u00a0<code>list[int]<\/code>,\u00a0<code>Optional[str]<\/code>, TS\u2011\u0442\u0438\u043f\u044b), \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u0437\u00a0\u043d\u0438\u0445. \u0415\u0441\u043b\u0438 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0442, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c, \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0438 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u0445\u043e\u0434\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0444\u0430\u043a\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 Hypothesis \u0438\u043b\u0438\u00a0fast\u2011check \u0441\u0436\u0438\u043c\u0430\u044e\u0442 \u0434\u043e\u00a0\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0422\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u0430\u044e\u0442 \u043f\u043e\u00a0\u0447\u0438\u0441\u043b\u0443, \u0438 \u0438\u0437\u00a0\u043d\u0438\u0445 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 score \u0441\u00a0\u0432\u0435\u0440\u0434\u0438\u043a\u0442\u043e\u043c.<\/p>\n<\/li>\n<\/ol>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code class=\"bash\">confidence-score run --base main --head HEAD<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><a class=\"anchor\" name=\"obhod\" id=\"obhod\"><\/a><\/p>\n<h2>\u0413\u0440\u0430\u0431\u043b\u0438 \u0438 \u043a\u0430\u043a\u00a0\u044f \u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0438\u043b<\/h2>\n<p>\u0421\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0430\u0431\u0437\u0430\u0446. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0443\u0448\u043b\u043e \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435\u00a0\u0432\u0440\u0430\u043b: \u043d\u0435\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0431\u0430\u0433\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435\u0442, \u0438 \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043b \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c.<\/p>\n<h4>1. \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0431\u0430\u0433\u0438<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 50\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0434\u043b\u044f\u00a0<code>percent: float<\/code>\u00a0\u043f\u043e\u00a0\u0432\u0441\u0435\u043c\u0443 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0443 float, \u0448\u0430\u043d\u0441 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432\u00a0\u0443\u0437\u043a\u0438\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a\u00a0<code>[-1, 0)<\/code>\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439. \u0411\u0430\u0433 \u0438\u0437\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435 \u0442\u0430\u043a \u043d\u0435\u00a0\u043d\u0430\u0439\u0442\u0438.<\/p>\n<p>Hypothesis \u0441\u0430\u043c \u0442\u044f\u0433\u043e\u0442\u0435\u0435\u0442 \u043a \u00ab\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u043d\u043e\u00a0\u043d\u0430 50\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0430\u00a0\u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0432\u0445\u043e\u0434\u0430\u043c \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u00a0<code>@example<\/code>: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u00a0\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u0441\u043f\u0438\u0441\u043a\u0430, \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<pre><code class=\"python\">_INT_EDGE_CANDIDATES = [-1000, -100, -10, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 10, 42, 100, 1000]_FLOAT_EDGE_CANDIDATES = [float(e) for e in _INT_EDGE_CANDIDATES] + [-0.5, -0.001, 0.001, 0.5]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0414\u043b\u044f\u00a0\u0441\u0442\u0440\u043e\u043a \u0432\u00a0\u0441\u043f\u0438\u0441\u043a\u0435\u00a0<code>\"\"<\/code>,\u00a0<code>\" \"<\/code>,\u00a0<code>\"\\n\"<\/code>,\u00a0<code>\" a \"<\/code>\u00a0\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u043e\u0439 \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043d\u0430\u00a0<code>-0.5<\/code>.\u00bb<\/p>\n<h4>2. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0440\u0442\u0438\u0442 \u0441\u0432\u043e\u0438\u00a0\u0436\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b<\/h4>\n<pre><code class=\"python\">def f(xs: list[int]) -&gt; int:    xs.append(1)    return len(xs)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u00a0\u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041d\u043e\u0432\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u00a0<em>\u0442\u043e\u0442\u00a0\u0436\u0435<\/em>\u00a0\u0441\u043f\u0438\u0441\u043e\u043a, \u0443\u0436\u0435 \u0441\u00a0\u043b\u0438\u0448\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u00a0\u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0431\u043e\u043b\u044c\u0448\u0435. \u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c, \u0430\u00a0\u0431\u0430\u0433\u0430 \u043d\u0435\u0442. \u0424\u0438\u043a\u0441\u0438\u043c \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0433\u043b\u0443\u0431\u043e\u043a\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432\u0445\u043e\u0434\u0430 (<code>copy.deepcopy<\/code>).<\/p>\n<h4>3.\u00a0NaN!= NaN<\/h4>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u00a0<code>nan<\/code>, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0437\u043d\u044b\u0435. \u0415\u0449\u0451\u00a0\u0431\u044b\u0432\u0430\u0435\u0442\u00a0<code>0.1 + 0.2<\/code>\u00a0\u043f\u0440\u043e\u0442\u0438\u0432\u00a0<code>0.3<\/code>\u00a0\u043f\u043e\u0441\u043b\u0435 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u0435\u0441\u0442 \u0441\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0432\u00a0\u0444\u043e\u0440\u043c\u0443\u043b\u0435. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435. \u0412\u00a0\u043d\u0451\u043c\u00a0<code>NaN<\/code>\u00a0\u0440\u0430\u0432\u0435\u043d\u00a0<code>NaN<\/code>, \u0447\u0438\u0441\u043b\u0430 \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0<code>math.isclose<\/code>, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0430\u00a0<code>True<\/code>\u00a0\u043d\u0435\u00a0\u0440\u0430\u0432\u0435\u043d\u00a0<code>1<\/code>: \u0432\u00a0Python\u00a0<code>True == 1<\/code>, \u043d\u043e\u00a0\u0434\u043b\u044f\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b.<\/p>\n<h4>4. \u041d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/h4>\n<pre><code class=\"python\">def f(n: int) -&gt; int:    return n + random.randint(0, 10)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u041b\u044e\u0431\u0430\u044f \u043f\u0440\u0430\u0432\u043a\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0441\u0442 \u00ab\u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u00bb, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043f\u043e\u00a0\u0432\u044b\u0437\u043e\u0432\u0430\u043c\u00a0<code>random<\/code>,\u00a0<code>time<\/code>, \u0441\u0435\u0442\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0435\u0441\u0442\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u041d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e\u00a0\u0444\u0430\u043a\u0442\u0443. \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0439\u0434\u0435\u043d, \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u00a0\u043d\u0451\u043c\u00a0\u0436\u0435, \u0438 \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u0430 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c\u00a0\u0436\u0435 \u0432\u0445\u043e\u0434\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u00a0\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u00a0<code>skipped<\/code>\u00a0\u0441\u00a0\u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u0430.<\/p>\n<h4>5. \u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430\u00a0Windows<\/h4>\n<p>\u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u043d\u0443\u0442\u044c. \u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0438\u0441\u043d\u0443\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u043d\u0435\u0439. \u041d\u0430\u00a0Linux \u0445\u0432\u0430\u0442\u0430\u0435\u0442\u00a0<code>signal.alarm<\/code>, \u0430\u00a0\u043d\u0430\u00a0Windows\u00a0<code>SIGALRM<\/code>\u00a0\u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0442\u0430\u043c \u0432\u00a0\u0434\u0432\u0430 \u0441\u043b\u043e\u044f. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u00ab\u043c\u044f\u0433\u043a\u0438\u0439\u00bb \u0442\u0430\u0439\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437\u00a0<code><em>thread.interrupt<\/em>main()<\/code>, \u043e\u043d \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Python\u2011\u043a\u043e\u0434. \u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0441\u0442\u0440\u044f\u043b\u0430 \u0432\u00a0C\u2011\u043a\u043e\u0434\u0435 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u00a0\u043d\u0435\u0451 \u043d\u0435\u00a0\u0434\u043e\u0445\u043e\u0434\u0438\u0442, \u0447\u0435\u0440\u0435\u0437 5\u00a0\u0441\u0435\u043a\u0443\u043d\u0434 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u00ab\u0436\u0451\u0441\u0442\u043a\u0438\u0439\u00bb \u0442\u0430\u0439\u043c\u0435\u0440: \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u2011\u0432\u043e\u0440\u043a\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a\u00a0<code>error: timeout<\/code>\u00a0\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0<code>os._exit<\/code>. \u0420\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0432\u00a0\u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0432\u0438\u0434\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0Windows, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0CI \u0433\u043e\u043d\u044f\u0435\u0442 \u0442\u0435\u0441\u0442\u044b \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 Linux \u0438 Windows.<\/p>\n<p>\u0421\u00a0JS \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0443\u0436\u0435: \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432\u00a0Node \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u0438\u0437\u00a0\u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043f\u043e\u0442\u043e\u043a\u0430. \u0422\u0430\u043c \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Python\u2011\u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.<\/p>\n<h4>6. \u041d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0430\u0442\u044c\u00a0eval\u00a0\u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438<\/h4>\n<p>\u0414\u043b\u044f\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0435\u0437\u00a0type hints \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u0445\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c. \u0421\u0430\u043c\u044b\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0443\u0442\u044c: \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 Hypothesis \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e. \u041d\u043e\u00a0\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u00a0\u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 JSON\u2011\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438\u0437\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439:<\/p>\n<pre><code class=\"json\">{\"items\": {\"kind\": \"lists\", \"elements\": {\"kind\": \"integers\"}, \"max_size\": 20}, \"email\": {\"kind\": \"text\", \"max_size\": 50}}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u00a0<code>integers<\/code>,\u00a0<code>floats<\/code>,\u00a0<code>text<\/code>,\u00a0<code>lists<\/code>,\u00a0<code>dictionaries<\/code>,\u00a0<code>one_of<\/code>\u00a0\u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e\u00a0<code>kind<\/code>. \u0412\u0441\u0451, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0441\u043f\u0438\u0441\u043e\u043a, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0430\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0438\u0437\u00a0\u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\n<h4>7. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0431\u043e\u0439 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u043e\u043c<\/h4>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u043d\u0435\u00a0\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f, \u0432\u043e\u0440\u043a\u0435\u0440 \u0443\u043f\u0430\u043b, \u0438\u0441\u0442\u0451\u043a \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430\u00a0\u0444\u0430\u0439\u043b. \u0415\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 \u0432\u00a0\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 CI \u043e\u0431\u043d\u0443\u043b\u0438\u0442 score. \u0415\u0441\u043b\u0438 \u043c\u043e\u043b\u0447\u0430 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b. \u0412\u00a0\u0438\u0442\u043e\u0433\u0435 \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u00a0<code>error<\/code>, \u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u044f\u0442 \u0432\u00a0\u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c sub\u2011score \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043e\u0442\u0447\u0451\u0442\u0430.<\/p>\n<h4>8. \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c<\/h4>\n<p>\u0411\u0435\u0437\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e seed Hypothesis \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u0438\u0449\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0432\u0445\u043e\u0434\u044b, \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a CI \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u0440\u0434\u0438\u043a\u0442. \u0414\u043b\u044f\u00a0merge gate \u044d\u0442\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e. \u0422\u0435\u043f\u0435\u0440\u044c\u00a0<code>seed<\/code>\u00a0\u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 PR \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041a\u043e\u043c\u0443 \u043d\u0443\u0436\u0435\u043d \u0441\u0432\u0435\u0436\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435, \u0441\u0442\u0430\u0432\u0438\u0442\u00a0<code>seed: null<\/code>.<\/p>\n<p><a class=\"anchor\" name=\"AIrev\" id=\"AIrev\"><\/a><\/p>\n<h2>\u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 AI\u2011\u0440\u0435\u0432\u044c\u044e\u0435\u0440\u044b<\/h2>\n<p>Differential testing \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e\u00a0\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0445\u043e\u0434\u0430\u043c\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u0432\u0445\u043e\u0434\u0430\u0445 \u043d\u0435\u00a0\u0432\u0438\u0434\u043d\u044b \u0438\u043b\u0438\u00a0\u0432\u0438\u0434\u043d\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0435\u0434\u043a\u043e: \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438\u043b\u0438\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u2011\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0432\u0440\u043e\u0434\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u00a0\u0444\u0430\u0439\u043b. \u0410\u00a0\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0432\u0438\u0434\u0430\u00a0<code>if n == 987654: return 0<\/code>\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u00a0\u043d\u0430\u0439\u0434\u0451\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u044f\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u0432\u0435 AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<ol>\n<li>\n<p>Semantic diff \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u0438 \u043d\u043e\u0432\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u00a0severity \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u043e\u0442 0\u00a0\u0434\u043e 100.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u0434\u0438\u0444\u0444. \u041f\u0440\u043e\u043c\u043f\u0442 \u043f\u0440\u044f\u043c\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e\u00a0\u043a\u043e\u0434 \u043c\u043e\u0433 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c AI, \u0447\u0442\u043e\u00a0\u0435\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u0438 \u0447\u0442\u043e\u00a0\u043a\u00a0\u043d\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0441\u043a\u0435\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0412\u044b\u0432\u043e\u0434\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043d\u0435\u00a0\u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u00a0\u043d\u0438\u0445.<\/p>\n<\/li>\n<\/ol>\n<p>\u041f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0434\u0443\u0442 \u043a\u00a0\u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Anthropic \u0438 OpenAI: \u0443\u00a0\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u0449\u0438\u0435 \u0441\u043b\u0435\u043f\u044b\u0435 \u043f\u044f\u0442\u043d\u0430. \u0412\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0435\u0432\u044c\u044e\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0438\u0437\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u00a0\u0432\u0435\u0441\u0430\u043c\u0438.<\/p>\n<h4>\u041c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u043e\u0440\u0438\u0442 \u0441\u0430\u043c\u0430 \u0441\u00a0\u0441\u043e\u0431\u043e\u0439<\/h4>\n<p>\u0412\u00a0\u043e\u0434\u043d\u043e\u043c \u0438\u0437\u00a0\u0436\u0438\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043d\u0430\u0448\u0451\u043b \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0439 severity\u00a0<code>high<\/code>\u00a0\u0438 \u0432\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u043e\u0442\u0432\u0435\u0442\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b confidence 100, \u0442\u043e \u0435\u0441\u0442\u044c \u00ab\u043c\u043e\u0436\u043d\u043e \u043c\u0435\u0440\u0436\u0438\u0442\u044c\u00bb.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0446\u0435\u043d\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0451\u00a0\u0436\u0435 \u0445\u0443\u0434\u0448\u0435\u0439 \u043d\u0430\u0445\u043e\u0434\u043a\u043e\u0439: \u043f\u0440\u0438\u00a0<code>high<\/code>\u00a0\u043d\u0435\u00a0\u0432\u044b\u0448\u0435 40, \u043f\u0440\u0438\u00a0<code>medium<\/code>\u00a0\u043d\u0435\u00a0\u0432\u044b\u0448\u0435 75. \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u00a0JSON\u2011\u043e\u0442\u0447\u0451\u0442\u0435, \u0430\u00a0\u0432\u00a0\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043f\u043e\u0447\u0435\u043c\u0443 \u0435\u0433\u043e \u043f\u043e\u043d\u0438\u0437\u0438\u043b\u0438.<\/p>\n<p><a class=\"anchor\" name=\"3num\" id=\"3num\"><\/a><\/p>\n<h2>\u041a\u0430\u043a\u00a0\u0442\u0440\u0438 \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043e\u0434\u0438\u043d score<\/h2>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u043e\u0440\u043c\u0443\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f:<\/p>\n<pre><code>overall = \u03a3 (sub_score \u00d7 \u0432\u0435\u0441) \u043f\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0412\u0435\u0441\u0430 \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: property\u2011\u0442\u0435\u0441\u0442\u044b 0.40, semantic diff 0.25, \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0432\u044c\u044e\u0435\u0440 0.35. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0435\u00a0\u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 (\u043d\u0435\u0442 \u043a\u043b\u044e\u0447\u0430 \u0438\u043b\u0438\u00a0\u043d\u0435\u0442 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439), \u0435\u0451 \u0432\u0435\u0441 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0448\u0438\u0431\u0438\u0442\u044c\u0441\u044f \u0432\u00a0\u0434\u0438\u0437\u0430\u0439\u043d\u0435. \u0411\u0435\u0437\u00a0AI\u2011\u043a\u043b\u044e\u0447\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e property\u2011\u0442\u0435\u0441\u0442\u044b. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0432\u00a0\u0434\u0438\u0444\u0444\u0435 \u043e\u0434\u043d\u0430 \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0442\u0435\u0441\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442, sub\u2011score \u0440\u0430\u0432\u0435\u043d 100, \u0438 \u0432\u0435\u0441\u044c \u0432\u0435\u0441 \u0434\u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0435\u043c\u0443. \u0418\u0442\u043e\u0433: 100\/100\u00a0\u0438 \u00ab\u043c\u043e\u0436\u043d\u043e \u043c\u0435\u0440\u0436\u0438\u0442\u044c\u00bb, \u0445\u043e\u0442\u044f \u043e\u0442\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438\u0437\u00a0\u0442\u0440\u0451\u0445.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0437\u0432\u0435\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u043f\u043e\u00a0\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044e:<\/p>\n<pre><code>coverage = \u03a3 (\u0432\u0435\u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u00d7 \u0435\u0451 \u043f\u043e\u043b\u043d\u043e\u0442\u0430) \/ (\u0441\u0443\u043c\u043c\u0430 \u0432\u0441\u0435\u0445 \u0432\u0435\u0441\u043e\u0432)cap      = min_cap + (100 \u2212 min_cap) \u00d7 coverage        # min_cap = 50overall  = min(overall, cap)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u00a0\u043e\u0434\u043d\u0438\u043c\u0438 property\u2011\u0442\u0435\u0441\u0442\u0430\u043c\u0438 (\u0432\u0435\u0441 0.40) \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f 70, \u0438 \u0432\u0435\u0440\u0434\u0438\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u00a0\u0442\u0438\u043f\u0443 \u00ab\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0432\u044c\u044e\u00bb. \u041e\u0442\u0447\u0451\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043a\u0440\u044b\u0442\u0438\u0435 \u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0432\u0448\u0438\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a, \u0447\u0442\u043e\u0431\u044b\u00a0\u0431\u044b\u043b\u043e \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u0437\u044f\u043b\u043e\u0441\u044c \u0447\u0438\u0441\u043b\u043e.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043e:\u00a0<strong>\u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0451\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 score \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 35<\/strong>, \u0447\u0442\u043e\u00a0\u0431\u044b \u043d\u0438 \u0441\u043a\u0430\u0437\u0430\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438. \u0412\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u043e\u0439 semantic diff \u0434\u0430\u043b 70, \u0440\u0435\u0432\u044c\u044e\u0435\u0440 75, \u0432\u0437\u0432\u0435\u0448\u0435\u043d\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0432\u044b\u0448\u043b\u0430 \u043e\u043a\u043e\u043b\u043e 44, \u0438 \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u0440\u0435\u0437\u0430\u043b \u0435\u0451 \u0434\u043e 35. \u0415\u0441\u043b\u0438 \u043a\u043e\u0434 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0438\u043d\u0430\u0447\u0435, \u043c\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0434\u0435\u043b\u0438 \u00ab\u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u00bb \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u043d\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0448\u0438\u0432\u0430\u0442\u044c.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/583\/8a9\/d95\/5838a9d956c637c4275dc329a6e26f13.png\" alt=\"Confidence-score doctor: \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438\" title=\"Confidence-score doctor: \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438\" width=\"2476\" height=\"930\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/583\/8a9\/d95\/5838a9d956c637c4275dc329a6e26f13.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/583\/8a9\/d95\/5838a9d956c637c4275dc329a6e26f13.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Confidence\u2011score doctor: \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0\u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438<\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430\u00a0<code>confidence-score doctor<\/code>\u00a0\u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441\u00a0\u0442\u0435\u043a\u0443\u0449\u0438\u043c\u0438 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0438 \u043a\u0430\u043a\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0442\u043e\u043b\u043e\u043a. \u0412\u00a0API \u043e\u043d\u0430 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442. <\/p>\n<p><a class=\"anchor\" name=\"local\" id=\"local\"><\/a><\/p>\n<h2>\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e API<\/h2>\n<p>\u0412\u0441\u0435 AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0434\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 Ollama: \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u0438 \u043a\u043e\u0434 \u043d\u0438\u043a\u0443\u0434\u0430 \u043d\u0435\u00a0\u0443\u0445\u043e\u0434\u0438\u0442. \u042f \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e \u043d\u0430\u00a0<code>qwen2.5-coder:7b<\/code>, \u0435\u0439 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0432\u0438\u0434\u0435\u043e\u043a\u0430\u0440\u0442\u044b \u043d\u0430 8\u00a0\u0413\u0411.<\/p>\n<pre><code class=\"yaml\"># confidence.ymlproviders:  strategy_generation: { provider: ollama, model: qwen2.5-coder:7b }  semantic_diff:       { provider: ollama, model: qwen2.5-coder:7b }  second_reviewer:     { provider: ollama, model: qwen2.5-coder:7b }limits:  max_parallel_ai_calls: 1<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>\u0421\u00a0Ollama \u0441\u0432\u044f\u0437\u0430\u043d\u0430 \u0441\u0430\u043c\u0430\u044f \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u0430\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0430 \u0432\u043e\u00a0\u0432\u0441\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435.\u00a0<strong>\u041f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043e\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 4096\u00a0\u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u0438 \u043c\u043e\u043b\u0447\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u0435\u0442 \u0434\u043b\u0438\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u043c\u043f\u0442 \u0441\u00a0\u043d\u0430\u0447\u0430\u043b\u0430.<\/strong>\u00a0\u0410\u00a0\u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043b\u0435\u0436\u0438\u0442 \u0434\u0438\u0444\u0444. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u043e\u043b\u0443\u0447\u0430\u043b\u0430 \u0445\u0432\u043e\u0441\u0442 \u043f\u0440\u043e\u043c\u043f\u0442\u0430 \u0441\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0435\u0439 \u00ab\u043e\u0446\u0435\u043d\u0438 \u044d\u0442\u043e\u0442 \u043a\u043e\u0434\u00bb \u0438 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u043b\u0430 \u043a\u043e\u0434, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u00a0\u0432\u0438\u0434\u0435\u043b\u0430, \u0431\u0435\u0437\u00a0\u0435\u0434\u0438\u043d\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438 \u0438\u043b\u0438\u00a0\u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u043e\u043c\u043e\u0433\u043b\u0438 \u0442\u0440\u0438 \u0432\u0435\u0449\u0438:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0440\u043e\u0434\u043d\u043e\u0439 API Ollama (<code>\/api\/chat<\/code>, \u0430\u00a0\u043d\u0435\u00a0\u0432\u00a0OpenAI\u2011\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439) \u0438 \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u043e\u043a\u043d\u043e 32\u202f768\u00a0\u0442\u043e\u043a\u0435\u043d\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u0432\u0435\u0442\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u043a\u0435\u043d\u043e\u0432 \u043f\u0440\u043e\u043c\u043f\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u0415\u0441\u043b\u0438 \u043d\u0430\u00a0\u043e\u0434\u0438\u043d \u0442\u043e\u043a\u0435\u043d \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 8\u00a0\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u0440\u043e\u043c\u043f\u0442 \u043f\u043e\u0447\u0442\u0438 \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u043e\u0431\u0440\u0435\u0437\u0430\u043d, \u0438 \u043e\u0442\u0432\u0435\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u00a0\u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u0432\u00a0\u043e\u0442\u0447\u0451\u0442\u0435;<\/p>\n<\/li>\n<li>\n<p><code>temperature: 0<\/code>\u00a0\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439\u00a0<code>seed<\/code>\u00a0\u0434\u0430\u044e\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u0446\u0435\u043d\u043a\u0438 \u0438 \u0443\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u043e\u043a\u043e\u043b\u043e 45\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u043e\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u044c \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0432\u0438\u0434\u0435\u043e\u043f\u0430\u043c\u044f\u0442\u044c. \u0414\u0430\u043b\u044c\u0448\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 PR \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0437\u0430 4\u20137\u00a0\u0441\u0435\u043a\u0443\u043d\u0434, \u0430\u00a0\u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u0440\u043e\u0433\u043e\u043d \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 PR \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0438\u0437\u00a0\u0434\u0438\u0441\u043a\u043e\u0432\u043e\u0433\u043e \u043a\u044d\u0448\u0430 \u0437\u0430\u00a0\u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86e\/4d3\/949\/86e4d39490b82e9af25e8590c16eec6c.png\" alt=\"\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433, score 91\/100  \" title=\"\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433, score 91\/100  \" width=\"2476\" height=\"1808\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/86e\/4d3\/949\/86e4d39490b82e9af25e8590c16eec6c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86e\/4d3\/949\/86e4d39490b82e9af25e8590c16eec6c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433, score 91\/100 <\/figcaption><\/div>\n<\/figure>\n<p>\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0443 7B\u2011\u043c\u043e\u0434\u0435\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0445\u0443\u0436\u0435, \u0447\u0435\u043c \u0443\u00a0\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445. \u041d\u0430\u00a0\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433\u0435 \u0441\u00a0\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0432\u044b\u0448\u0435 \u043e\u043d\u0430 \u00ab\u043d\u0430\u0448\u043b\u0430\u00bb \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442:\u00a0<code>\" \".join(text.split())<\/code>\u00a0\u0442\u043e\u0436\u0435 \u043e\u0431\u0440\u0435\u0437\u0430\u043b \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u043f\u043e\u00a0\u043a\u0440\u0430\u044f\u043c. \u041d\u043e\u00a0property\u2011\u0442\u0435\u0441\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u00a0\u0434\u0435\u0441\u044f\u0442\u043a\u0430\u0445 \u0432\u0445\u043e\u0434\u043e\u0432, \u0438 \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u0430\u0441\u044c \u0432\u044b\u0441\u043e\u043a\u043e\u0439. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0438 \u0441\u0434\u0435\u043b\u0430\u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0439 \u043e\u0442\u00a0\u043c\u043e\u0434\u0435\u043b\u0438. \u00bb<\/p>\n<p><a class=\"anchor\" name=\"git\" id=\"git\"><\/a><\/p>\n<h2>GitHub Action \u0438 PR \u0438\u0437\u00a0\u0444\u043e\u0440\u043a\u043e\u0432<\/h2>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0435\u0441\u0442\u044c \u0432\u00a0<a href=\"https:\/\/github.com\/marketplace\/actions\/confidence-scorer\" rel=\"noopener nofollow\">GitHub Marketplace<\/a>:<\/p>\n<pre><code class=\"yaml\">- uses: actions\/checkout@v7  with:    fetch-depth: 0 - uses: Kakadu525\/confidence-scorer@v1  with:    anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p>Action \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 outputs\u00a0<code>score<\/code>,\u00a0<code>verdict<\/code>,\u00a0<code>gate<\/code>\u00a0\u0438 \u043f\u0430\u0434\u0430\u0435\u0442, \u0435\u0441\u043b\u0438 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b merge gate, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0441\u00a0PR \u0438\u0437\u00a0\u0444\u043e\u0440\u043a\u043e\u0432. \u0412\u00a0\u043d\u0438\u0445 GitHub \u043d\u0435\u00a0\u0434\u0430\u0451\u0442 \u043d\u0438 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, \u043d\u0438 \u043f\u0440\u0430\u0432 \u043d\u0430\u00a0\u0437\u0430\u043f\u0438\u0441\u044c, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0Action \u043d\u0435\u00a0\u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0441\u00a0\u043e\u0442\u0447\u0451\u0442\u043e\u043c. \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0\u043f\u043e\u0438\u0441\u043a\u0435: \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c\u00a0<code>pull_request<\/code>\u00a0\u043d\u0430\u00a0<code>pull_request_target<\/code>. \u0414\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e\u00a0\u0442\u0430\u043a \u043a\u043e\u0434 \u0438\u0437\u00a0\u0447\u0443\u0436\u043e\u0433\u043e \u0444\u043e\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0441\u044f \u0441\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a\u00a0\u0432\u0430\u0448\u0438\u043c \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c, \u0430\u00a0confidence\u2011scorer \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043a\u043e\u0434 \u0438\u0437\u00a0PR.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0430\u044f \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u00a0\u0434\u0432\u0443\u0445 workflow. \u041f\u0435\u0440\u0432\u044b\u0439 \u0441\u0447\u0438\u0442\u0430\u0435\u0442 score \u0432\u00a0\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u043e\u0442\u0447\u0451\u0442 \u043a\u0430\u043a\u00a0\u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442. \u0412\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u00a0\u0441\u043e\u0431\u044b\u0442\u0438\u044e\u00a0<code>workflow_run<\/code>\u00a0\u0443\u0436\u0435 \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u043a\u043e\u0434 PR \u043d\u0435\u00a0\u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043e\u0442\u0447\u0451\u0442.<\/p>\n<p><a class=\"anchor\" name=\"limits\" id=\"limits\"><\/a><\/p>\n<h2>\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f<\/h2>\n<p>\u041b\u0443\u0447\u0448\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u00a0\u043d\u0438\u0445 \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u0447\u0435\u043c \u0432\u00a0\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<ul>\n<li>\n<p>\u041c\u0435\u0442\u043e\u0434\u044b \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u0432\u00a0differential testing \u043d\u0435\u00a0\u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e\u0442, \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434, \u043d\u0443\u0436\u0435\u043d \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 \u043a\u043b\u0430\u0441\u0441\u0430, \u0430\u00a0\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u0443\u00a0\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435. \u041c\u0435\u0442\u043e\u0434\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><code><em>args<\/em><\/code><em>,\u00a0<\/em><code>*kwargs<\/code>\u00a0\u0438 rest\u2011\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043d\u0435\u00a0\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u0422\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u044e\u0442\u0441\u044f\u00a0<code>skipped<\/code>\u00a0\u0438 \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0430\u0434\u0430\u044e\u0442 \u0438\u0437\u00a0\u043e\u0442\u0447\u0451\u0442\u0430 \u043c\u043e\u043b\u0447\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438\u0441\u044c \u043d\u0430\u00a0\u0432\u044b\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u043e\u043c \u0432\u0445\u043e\u0434\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u043d\u0435\u044f\u0432\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u043b\u043e\u0432\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440\u00a0<code>lo &gt; hi<\/code>\u00a0\u0434\u043b\u044f\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0<code>lo &lt;= hi<\/code>. \u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0430\u00a0\u0432\u0430\u0436\u043d\u043e\u00a0\u043b\u0438 \u044d\u0442\u043e, \u0440\u0435\u0448\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u0434 \u0438\u0437\u00a0PR \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f, \u0430\u00a0\u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043d\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u00a0CI \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u043e\u043c \u0440\u0430\u043d\u043d\u0435\u0440\u0435. \u0414\u043b\u044f\u00a0\u043d\u0435\u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c\u00a0<code>execute_changed_code: false<\/code>, \u0442\u043e\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u043d\u044b\u0435. \u041e\u043d\u0438 \u0434\u0430\u044e\u0442 \u043e\u0446\u0435\u043d\u043a\u0443 \u0438 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u043d\u0435\u00a0\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f.<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"project\" id=\"project\"><\/a><\/p>\n<h2>\u041f\u0440\u043e\u00a0\u0418\u0418 \u0432\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c<\/h2>\n<p>\u0411\u044b\u043b\u043e\u00a0\u0431\u044b \u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u0440\u043e\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043a\u043e\u0434\u0430 \u043e\u0442\u00a0\u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439 \u0438 \u0443\u043c\u043e\u043b\u0447\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u044f \u0438 \u0441\u0430\u043c \u0441\u00a0\u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b.<\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443, \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 \u0444\u043e\u0440\u043c\u0443\u043b\u0443 score \u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0438 \u043f\u0438\u0441\u0430\u043b \u0441\u0430\u043c, \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u043f\u0440\u043e\u00a0\u0433\u0440\u0430\u0431\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0438\u0437\u00a0\u043c\u043e\u0435\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043d\u0430\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u043e\u043d\u0430\u0445. Claude \u043e\u0442\u00a0Anthropic \u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u043a\u0430\u043a\u00a0\u043d\u0430\u043f\u0430\u0440\u043d\u0438\u043a\u0430: \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u043b \u0441\u00a0\u043d\u0438\u043c \u0441\u043f\u043e\u0440\u043d\u044b\u0435 \u043c\u0435\u0441\u0442\u0430 \u0434\u0438\u0437\u0430\u0439\u043d\u0430, \u043f\u0440\u043e\u0441\u0438\u043b \u0440\u0435\u0432\u044c\u044e \u0438 \u043e\u0442\u0434\u0430\u0432\u0430\u043b \u0435\u043c\u0443 \u0447\u0430\u0441\u0442\u044c \u0440\u0443\u0442\u0438\u043d\u044b \u0432\u0440\u043e\u0434\u0435 \u0442\u0435\u0441\u0442\u043e\u0432 \u043d\u0430\u00a0\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0441\u043b\u0443\u0447\u0430\u0438, \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u043d\u0430\u00a0\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439, \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f README. \u041a\u0430\u0436\u0434\u043e\u0435 \u0442\u0430\u043a\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u044f \u0447\u0438\u0442\u0430\u043b \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0435\u043b\u0430\u043b \u0441\u00a0\u0435\u0433\u043e \u043a\u043e\u0434\u043e\u043c \u0440\u043e\u0432\u043d\u043e \u0442\u043e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0434\u0435\u043b\u0430\u0442\u044c \u0432\u00a0\u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435.<\/p>\n<p>\u0417\u0430\u0431\u0430\u0432\u043d\u043e, \u0447\u0442\u043e\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043e\u0442\u00a0\u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u0441\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0435\u00a0\u0431\u0435\u0437\u00a0\u0440\u0435\u0432\u044c\u044e \u043e\u0442\u00a0\u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0438. \u0415\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u0433\u043e\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u00a0CI \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0443\u00a0\u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430.<\/p>\n<h2>\u0418\u0442\u043e\u0433\u043e<\/h2>\n<p>Differential testing \u043d\u0435\u00a0\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430: \u00ab\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435\u00bb \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f\u00a0\u043b\u044e\u0431\u043e\u0439 \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0421\u0430\u043c\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u043d\u0435\u00a0\u0438\u0434\u0435\u044f, \u0430\u00a0\u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f: \u043c\u0443\u0442\u0430\u0446\u0438\u044f \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432,\u00a0<code>NaN<\/code>, \u043d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c, \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u043d\u0430\u00a0Windows.<\/p>\n<p>AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b \u043a\u0430\u043a\u00a0\u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u043d\u043e\u00a0\u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u043e\u0446\u0435\u043d\u043a\u0443 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0444\u0430\u043a\u0442. \u041e\u0442\u0441\u044e\u0434\u0430 hard fail \u043f\u043e\u00a0\u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u043f\u043e\u00a0\u043f\u043e\u043a\u0440\u044b\u0442\u0438\u044e \u0438 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u043f\u043e\u00a0severity. \u0418 \u0432\u0441\u0451 \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u043d\u0430\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438.<\/p>\n<p>\u0411\u0443\u0434\u0443 \u0440\u0430\u0434, \u0435\u0441\u043b\u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u0435\u0433\u043e \u043d\u0430\u00a0\u0441\u0432\u043e\u0438\u0445 PR \u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0435\u0442\u0435, \u0433\u0434\u0435 \u043e\u043d \u043e\u0448\u0438\u0431\u0430\u0435\u0442\u0441\u044f. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b \u043b\u043e\u0436\u043d\u044b\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f differential testing \u043d\u0430\u00a0\u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u0434\u0435.<\/p>\n<p>\u0410\u00a0\u043a\u0430\u043a \u0432\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435 PR, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0430\u0433\u0435\u043d\u0442\u0430\u043c\u0438? \u0414\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0435 \u0438\u0445 \u0442\u0435\u0441\u0442\u0430\u043c \u0438\u043b\u0438\u00a0\u043f\u0438\u0448\u0435\u0442\u0435 \u0441\u0432\u043e\u0438?<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1088564\/\">https:\/\/habr.com\/ru\/articles\/1088564\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041e\u0442\u0447\u0451\u0442 confidence\u2011scorer: \u043d\u0430\u0439\u0434\u0435\u043d \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440, score 35\/100 \u041c\u043e\u0434\u0435\u043b\u044c \u00ab\u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442\u00bb \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e.\u00a0\u041b\u0438\u043d\u0442\u0435\u0440 \u043c\u043e\u043b\u0447\u0438\u0442, \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442, \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u0432\u0438\u0434\u0438\u0442 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u0439 \u0434\u0438\u0444\u0444 \u0432\u00a0\u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443 \u0438 \u0436\u043c\u0451\u0442 Approve. \u0427\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e \u0432\u044b\u044f\u0441\u043d\u044f\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0441\u043a\u0438\u0434\u043a\u0438 \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u043d\u0442.\u0422\u0435\u0441\u0442\u044b \u0432\u00a0\u0442\u0430\u043a\u043e\u043c PR \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0430 \u0442\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0447\u0442\u043e\u00a0\u0438 \u043a\u043e\u0434. \u041e\u043d\u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u044e\u0442, \u0447\u0442\u043e\u00a0\u043c\u043e\u0434\u0435\u043b\u044c \u0441\u0434\u0435\u043b\u0430\u043b\u0430 \u0437\u0430\u0434\u0443\u043c\u0430\u043d\u043d\u043e\u0435, \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e\u00a0\u0442\u043e\u043c, \u0432\u0435\u0434\u0451\u0442\u00a0\u043b\u0438 \u0441\u0435\u0431\u044f \u043a\u043e\u0434 \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435. \u042f \u0441\u0434\u0435\u043b\u0430\u043b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e: \u043e\u043d \u0431\u0435\u0440\u0451\u0442 \u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0441\u0442\u0430\u0440\u0443\u044e \u0438 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043d\u0430\u00a0\u043e\u0434\u043d\u0438\u0445 \u0438 \u0442\u0435\u0445\u00a0\u0436\u0435 \u0432\u0445\u043e\u0434\u0430\u0445 \u0438 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0445\u043e\u0434, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d\u0438 \u0440\u0430\u0437\u043e\u0448\u043b\u0438\u0441\u044c.\u041f\u043e\u0434\u00a0\u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a\u00a0\u0443\u0441\u0442\u0440\u043e\u0435\u043d\u00a0confidence\u2011scorer, \u043d\u0430\u00a0\u043a\u0430\u043a\u0438\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 \u044f \u043d\u0430\u0441\u0442\u0443\u043f\u0438\u043b \u043f\u043e\u00a0\u0434\u043e\u0440\u043e\u0433\u0435 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0432\u00a0\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435 \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u043e\u0434\u0430 \u043e\u0442\u00a0\u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u0435\u0439, \u043d\u0435\u0439\u0440\u043e\u0441\u0435\u0442\u044c \u0432\u0441\u0451\u2011\u0442\u0430\u043a\u0438 \u0435\u0441\u0442\u044c, \u0445\u043e\u0442\u044f \u0440\u0435\u0448\u0430\u044e\u0449\u0435\u0433\u043e \u0433\u043e\u043b\u043e\u0441\u0430 \u0443\u00a0\u043d\u0435\u0451 \u043d\u0435\u0442.\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u0418\u0434\u0435\u044f: \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435\u00bb\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e\u0413\u0440\u0430\u0431\u043b\u0438 \u0438 \u043a\u0430\u043a\u00a0\u044f \u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 AI\u2011\u0440\u0435\u0432\u044c\u044e\u0435\u0440\u044b\u041a\u0430\u043a\u00a0\u0442\u0440\u0438 \u0447\u0438\u0441\u043b\u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043e\u0434\u0438\u043d score\u041b\u043e\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043b\u0430\u0442\u043d\u043e\u0433\u043e APIGitHub Action \u0438 PR \u0438\u0437\u00a0\u0444\u043e\u0440\u043a\u043e\u0432\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u041f\u0440\u043e\u00a0\u0418\u0418 \u0432\u00a0\u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u0412\u043e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f\u00a0\u0431\u044b\u043b\u0430 \u0432\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0435:def apply_discount(price: float, percent: float) -&gt; float:    &#171;&#187;&#187;Return the price after a percentage discount (0-100).&#187;&#187;&#187;    if percent &lt; 0 or percent &gt; 100:        raise ValueError(&#171;percent must be between 0 and 100&#187;)    return price &#8212; (price * percent \/ 100)\u0410\u00a0\u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u0448\u043b\u043e \u0432\u00a0PR \u0441\u00a0\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u00absimplify apply_discount validation\u00bb:def apply_discount(price: float, percent: float) -&gt; float:    &#171;&#187;&#187;Return the price after a percentage discount (0-100).&#187;&#187;&#187;    if percent &gt; 100:        raise ValueError(&#171;percent must be between 0 and 100&#187;)    return price &#8212; (price * percent \/ 100)\u0418\u0437\u043c\u0435\u043d\u0438\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430. \u0415\u0441\u043b\u0438 \u0432\u00a0\u0442\u0435\u0441\u0442\u0430\u0445 \u043d\u0435\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u0441\u00a0\u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u043e\u043c (\u0430 \u043e\u0442\u043a\u0443\u0434\u0430 \u0435\u043c\u0443 \u0432\u0437\u044f\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0442\u0435\u0441\u0442\u044b \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u043b\u0430 \u0442\u0430\u00a0\u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c), \u0432\u0441\u0451 \u0437\u0435\u043b\u0451\u043d\u043e\u0435. \u041d\u0430\u00a0\u0440\u0435\u0432\u044c\u044e \u0442\u0430\u043a\u043e\u0435 \u043f\u0440\u043e\u043b\u0435\u0442\u0430\u0435\u0442 \u043b\u0435\u0433\u043a\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 PR \u043e\u0442\u00a0\u0430\u0433\u0435\u043d\u0442\u0430 \u0443\u0436\u0435 \u0434\u0435\u0441\u044f\u0442\u044b\u0439 \u0437\u0430\u00a0\u0434\u0435\u043d\u044c.confidence\u2011scorer \u043d\u0430\u00a0\u044d\u0442\u043e\u043c \u0434\u0438\u0444\u0444\u0435 \u0432\u044b\u0434\u0430\u0451\u0442:Confidence Score: 35\/100Confirmed behavior counterexample found: do not merge without a manual checkpricing.py::apply_discount: the old and the new version disagree on whetherthey raise an exception (input={&#8216;price&#8217;: &#8216;0.0&#8217;, &#8216;percent&#8217;: &#8216;-0.5&#8217;},before=raised ValueError(&#8216;percent must be between 0 and 100&#8217;), after=0.0)\u0412\u00a0\u043e\u0442\u0447\u0451\u0442\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0445\u043e\u0434 \u0438 \u0442\u043e, \u043a\u0430\u043a\u00a0\u0432\u0435\u043b\u0438 \u0441\u0435\u0431\u044f \u043d\u0430\u00a0\u043d\u0451\u043c \u0441\u0442\u0430\u0440\u0430\u044f \u0438 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f. Exit code 1, \u043c\u0435\u0440\u0436 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d.\u0418\u0434\u0435\u044f: \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u00ab\u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u043d\u044c\u0448\u0435\u00bbProperty\u2011based testing \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0430\u0432\u043d\u043e:\u00a0Hypothesis\u00a0\u0434\u043b\u044f\u00a0Python,\u00a0fast\u2011check\u00a0\u0434\u043b\u044f\u00a0JS. \u0412\u044b \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u00ab\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u043e\u0439\u00a0\u0436\u0435 \u0434\u043b\u0438\u043d\u044b\u00bb, \u0430\u00a0\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u0442\u043d\u0438 \u0432\u0445\u043e\u0434\u043e\u0432 \u0438 \u0438\u0449\u0435\u0442 \u0442\u043e\u0442, \u043d\u0430\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442\u0441\u044f. \u0411\u0435\u0434\u0430 \u0432\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0443\u043a\u0430\u043c\u0438, \u0438 \u043d\u0430\u00a0\u044d\u0442\u043e \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438.\u0414\u043b\u044f\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u00a0\u043d\u0430\u0434\u043e:\u0434\u043b\u044f\u00a0\u043b\u044e\u0431\u043e\u0433\u043e \u0432\u0445\u043e\u0434\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a\u00a0\u0436\u0435, \u043a\u0430\u043a\u00a0\u0441\u0442\u0430\u0440\u0430\u044f.\u042d\u0442\u043e differential testing. \u041e\u043d\u043e \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0435 \u0434\u043b\u044f\u00a0\u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u043f\u0438\u0441\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u043b\u044f\u00a0\u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u0435\u00a0\u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f. \u041e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0438\u0437\u00a0\u0434\u0438\u0444\u0444\u0430 \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0445\u043e\u0434\u044b \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u044c.\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0435\u00a0\u043a\u0430\u0436\u0434\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0431\u0430\u0433. \u0418\u043d\u043e\u0433\u0434\u0430 PR \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u043c\u0435\u043d\u044f\u0442\u044c \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435. \u0422\u043e\u0433\u0434\u0430 \u0432\u00a0\u043e\u0442\u0447\u0451\u0442\u0435 \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u044f\u0432\u043d\u043e: \u0432\u043e\u0442 \u0432\u0445\u043e\u0434, \u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u0431\u044b\u043b\u043e, \u0432\u043e\u0442 \u0447\u0442\u043e\u00a0\u0441\u0442\u0430\u043b\u043e, \u0438 \u0440\u0435\u0448\u0430\u0435\u0442 \u0447\u0435\u043b\u043e\u0432\u0435\u043a.\u041a\u0430\u043a\u00a0\u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u043e\u0439.\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438\u0441\u044c.\u00a0git diff\u00a0\u0434\u0430\u0451\u0442 \u0444\u0430\u0439\u043b\u044b, \u0430\u00a0\u043d\u0435\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0440\u0443\u044e \u0438 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044e \u0432\u00a0AST (\u0434\u043b\u044f JS\/TS \u0447\u0435\u0440\u0435\u0437 Babel \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c Node\u2011\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435) \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c,\u00a0\u043b\u0438\u0448\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u043d\u0435\u0442.\u041f\u043e\u0442\u043e\u043c \u0441\u0442\u0440\u043e\u044f\u0442\u0441\u044f \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0432\u0445\u043e\u0434\u043e\u0432. \u0415\u0441\u043b\u0438 \u0443\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0435\u0441\u0442\u044c type hints (int,\u00a0str,\u00a0list[int],\u00a0Optional[str], TS\u2011\u0442\u0438\u043f\u044b), \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0438\u0437\u00a0\u043d\u0438\u0445. \u0415\u0441\u043b\u0438 \u0442\u0438\u043f\u043e\u0432 \u043d\u0435\u0442, \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c, \u043e\u0431\u00a0\u044d\u0442\u043e\u043c \u043d\u0438\u0436\u0435.\u041e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0432\u00a0\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0438 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u0432\u0445\u043e\u0434\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0444\u0430\u043a\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0435 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 Hypothesis \u0438\u043b\u0438\u00a0fast\u2011check \u0441\u0436\u0438\u043c\u0430\u044e\u0442 \u0434\u043e\u00a0\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430.\u0422\u0440\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u0430\u044e\u0442 \u043f\u043e\u00a0\u0447\u0438\u0441\u043b\u0443, \u0438 \u0438\u0437\u00a0\u043d\u0438\u0445 \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 score \u0441\u00a0\u0432\u0435\u0440\u0434\u0438\u043a\u0442\u043e\u043c.\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451 \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:confidence-score run &#8212;base main &#8212;head HEAD\u0413\u0440\u0430\u0431\u043b\u0438 \u0438 \u043a\u0430\u043a\u00a0\u044f \u0438\u0445 \u043e\u0431\u0445\u043e\u0434\u0438\u043b\u0421\u0430\u043c\u0430 \u0438\u0434\u0435\u044f \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u00a0\u0430\u0431\u0437\u0430\u0446. \u041f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451 \u0432\u0440\u0435\u043c\u044f \u0443\u0448\u043b\u043e \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435\u00a0\u0432\u0440\u0430\u043b: \u043d\u0435\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u043b \u0431\u0430\u0433\u0438 \u0442\u0430\u043c, \u0433\u0434\u0435 \u0438\u0445 \u043d\u0435\u0442, \u0438 \u043d\u0435\u00a0\u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043b \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c.1. \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u0431\u0430\u0433\u0438\u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c 50\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0434\u043b\u044f\u00a0percent: float\u00a0\u043f\u043e\u00a0\u0432\u0441\u0435\u043c\u0443 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0443 float, \u0448\u0430\u043d\u0441 \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432\u00a0\u0443\u0437\u043a\u0438\u0439 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u043a\u00a0[-1, 0)\u00a0\u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0443\u043b\u0435\u0432\u043e\u0439. \u0411\u0430\u0433 \u0438\u0437\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u0432\u044b\u0448\u0435 \u0442\u0430\u043a \u043d\u0435\u00a0\u043d\u0430\u0439\u0442\u0438.Hypothesis \u0441\u0430\u043c \u0442\u044f\u0433\u043e\u0442\u0435\u0435\u0442 \u043a \u00ab\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u00bb \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c, \u043d\u043e\u00a0\u043d\u0430 50\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u043d\u0430\u00a0\u044d\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u0432\u0445\u043e\u0434\u0430\u043c \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0433\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u00a0@example: \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u043e\u00a0\u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u0437\u00a0\u0441\u043f\u0438\u0441\u043a\u0430, \u043f\u043e\u043a\u0430 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u043d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u043c\u0438._INT_EDGE_CANDIDATES = [-1000, -100, -10, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 10, 42, 100, 1000]_FLOAT_EDGE_CANDIDATES = [float(e) for e in _INT_EDGE_CANDIDATES] + [-0.5, -0.001, 0.001, 0.5]\u0414\u043b\u044f\u00a0\u0441\u0442\u0440\u043e\u043a \u0432\u00a0\u0441\u043f\u0438\u0441\u043a\u0435\u00a0&#171;&#187;,\u00a0&#187; &#171;,\u00a0&#171;\\n&#187;,\u00a0&#187; a &#187;\u00a0\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435. \u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043e \u0441\u043a\u0438\u0434\u043a\u043e\u0439 \u043b\u043e\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043d\u0430\u00a0-0.5.\u00bb2. \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0440\u0442\u0438\u0442 \u0441\u0432\u043e\u0438\u00a0\u0436\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044bdef f(xs: list[int]) -&gt; int:    xs.append(1)    return len(xs)\u0421\u0442\u0430\u0440\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0434\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0432\u00a0\u043d\u0435\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442. \u041d\u043e\u0432\u0430\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u00a0\u0442\u043e\u0442\u00a0\u0436\u0435\u00a0\u0441\u043f\u0438\u0441\u043e\u043a, \u0443\u0436\u0435 \u0441\u00a0\u043b\u0438\u0448\u043d\u0438\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u00a0\u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u0431\u043e\u043b\u044c\u0448\u0435. \u0420\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c, \u0430\u00a0\u0431\u0430\u0433\u0430 \u043d\u0435\u0442. \u0424\u0438\u043a\u0441\u0438\u043c \u044d\u0442\u043e \u0442\u0435\u043c, \u0447\u0442\u043e\u00a0\u043a\u0430\u0436\u0434\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0433\u043b\u0443\u0431\u043e\u043a\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432\u0445\u043e\u0434\u0430 (copy.deepcopy).3.\u00a0NaN!= NaN\u0415\u0441\u043b\u0438 \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0432\u0435\u0440\u043d\u0443\u043b\u0438\u00a0nan, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0441\u043a\u0430\u0436\u0435\u0442, \u0447\u0442\u043e\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0437\u043d\u044b\u0435. \u0415\u0449\u0451\u00a0\u0431\u044b\u0432\u0430\u0435\u0442\u00a00.1 + 0.2\u00a0\u043f\u0440\u043e\u0442\u0438\u0432\u00a00.3\u00a0\u043f\u043e\u0441\u043b\u0435 \u0431\u0435\u0437\u043e\u0431\u0438\u0434\u043d\u043e\u0439 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043c\u0435\u0441\u0442 \u0441\u043b\u0430\u0433\u0430\u0435\u043c\u044b\u0445 \u0432\u00a0\u0444\u043e\u0440\u043c\u0443\u043b\u0435. \u041f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435. \u0412\u00a0\u043d\u0451\u043c\u00a0NaN\u00a0\u0440\u0430\u0432\u0435\u043d\u00a0NaN, \u0447\u0438\u0441\u043b\u0430 \u0441\u00a0\u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0math.isclose, \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0430\u00a0True\u00a0\u043d\u0435\u00a0\u0440\u0430\u0432\u0435\u043d\u00a01: \u0432\u00a0Python\u00a0True == 1, \u043d\u043e\u00a0\u0434\u043b\u044f\u00a0\u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u044d\u0442\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b.4. \u041d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438def f(n: int) -&gt; int:    return n + random.randint(0, 10)\u041b\u044e\u0431\u0430\u044f \u043f\u0440\u0430\u0432\u043a\u0430 \u0442\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0430\u0441\u0442 \u00ab\u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u00bb, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u00a0\u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0435\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435, \u043f\u043e\u00a0\u0432\u044b\u0437\u043e\u0432\u0430\u043c\u00a0random,\u00a0time, \u0441\u0435\u0442\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u0437\u043d\u0430\u0447\u0438\u0442 \u0432\u0435\u0441\u0442\u0438 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439. \u041d\u0430\u0434\u0451\u0436\u043d\u0435\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e\u00a0\u0444\u0430\u043a\u0442\u0443. \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043d\u0442\u0440\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u0439\u0434\u0435\u043d, \u043e\u0431\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0435\u0449\u0451 \u0440\u0430\u0437 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u00a0\u043d\u0451\u043c\u00a0\u0436\u0435, \u0438 \u0435\u0441\u043b\u0438 \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u0430 \u043d\u0430\u00a0\u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c\u00a0\u0436\u0435 \u0432\u0445\u043e\u0434\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u043f\u043e\u00a0\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u00a0skipped\u00a0\u0441\u00a0\u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435\u043c \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u0430.5. \u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430\u00a0Windows\u041d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u043d\u0443\u0442\u044c. \u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0432\u0438\u0441\u043d\u0443\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 \u0441\u00a0\u043d\u0435\u0439. \u041d\u0430\u00a0Linux \u0445\u0432\u0430\u0442\u0430\u0435\u0442\u00a0signal.alarm, \u0430\u00a0\u043d\u0430\u00a0Windows\u00a0SIGALRM\u00a0\u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u0442\u0430\u043c \u0432\u00a0\u0434\u0432\u0430 \u0441\u043b\u043e\u044f. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u00ab\u043c\u044f\u0433\u043a\u0438\u0439\u00bb \u0442\u0430\u0439\u043c\u0435\u0440 \u0447\u0435\u0440\u0435\u0437\u00a0thread.interruptmain(), \u043e\u043d \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Python\u2011\u043a\u043e\u0434. \u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u0441\u0442\u0440\u044f\u043b\u0430 \u0432\u00a0C\u2011\u043a\u043e\u0434\u0435 \u0438 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0434\u043e\u00a0\u043d\u0435\u0451 \u043d\u0435\u00a0\u0434\u043e\u0445\u043e\u0434\u0438\u0442, \u0447\u0435\u0440\u0435\u0437 5\u00a0\u0441\u0435\u043a\u0443\u043d\u0434 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u00ab\u0436\u0451\u0441\u0442\u043a\u0438\u0439\u00bb \u0442\u0430\u0439\u043c\u0435\u0440: \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u2011\u0432\u043e\u0440\u043a\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u043f\u043e\u043c\u0435\u0447\u0430\u0435\u0442 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u0430\u043a\u00a0error: timeout\u00a0\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437\u00a0os._exit. \u0420\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0432\u00a0\u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u0432\u0438\u0434\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u00a0Windows, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0CI \u0433\u043e\u043d\u044f\u0435\u0442 \u0442\u0435\u0441\u0442\u044b \u043d\u0430\u00a0\u043c\u0430\u0442\u0440\u0438\u0446\u0435 Linux \u0438 Windows.\u0421\u00a0JS \u043f\u043e\u0445\u043e\u0436\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f, \u0442\u043e\u043b\u044c\u043a\u043e \u0445\u0443\u0436\u0435: \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0432\u00a0Node \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u0435\u0440\u0432\u0430\u0442\u044c \u0438\u0437\u00a0\u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u043f\u043e\u0442\u043e\u043a\u0430. \u0422\u0430\u043c \u0441\u043f\u0430\u0441\u0430\u0435\u0442 \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u0444\u0430\u0439\u043b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b Python\u2011\u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430.6. \u041d\u0435\u043b\u044c\u0437\u044f \u0434\u0435\u043b\u0430\u0442\u044c\u00a0eval\u00a0\u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438\u0414\u043b\u044f\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0435\u0437\u00a0type hints \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0432\u0445\u043e\u0434\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c. \u0421\u0430\u043c\u044b\u0439 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u043f\u0443\u0442\u044c: \u043f\u043e\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0435\u0451 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 Hypothesis \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e. \u041d\u043e\u00a0\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430\u00a0\u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u043a\u00a0\u0440\u0430\u0437 \u043d\u0435\u00a0\u0441\u0442\u043e\u0438\u0442.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 JSON\u2011\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0438\u0437\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439:{&#171;items&#187;: {&#171;kind&#187;: &#171;lists&#187;, &#171;elements&#187;: {&#171;kind&#187;: &#171;integers&#187;}, &#171;max_size&#187;: 20}, &#171;email&#187;: {&#171;kind&#187;: &#171;text&#187;, &#171;max_size&#187;: 50}}\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b\u00a0integers,\u00a0floats,\u00a0text,\u00a0lists,\u00a0dictionaries,\u00a0one_of\u00a0\u0438 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e\u00a0kind. \u0412\u0441\u0451, \u0447\u0442\u043e\u00a0\u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u0438\u0442 \u0432\u00a0\u0441\u043f\u0438\u0441\u043e\u043a, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f, \u0430\u00a0\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f, \u0442\u0430\u043a \u0447\u0442\u043e\u00a0\u0438\u0437\u00a0\u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f.7. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u0431\u043e\u0439 \u043d\u0435\u00a0\u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0447\u0438\u0442\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u043b\u043e\u043c\u041c\u043e\u0434\u0443\u043b\u044c \u043d\u0435\u00a0\u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f, \u0432\u043e\u0440\u043a\u0435\u0440 \u0443\u043f\u0430\u043b, \u0438\u0441\u0442\u0451\u043a \u0442\u0430\u0439\u043c\u0430\u0443\u0442 \u043d\u0430\u00a0\u0444\u0430\u0439\u043b. \u0415\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u043f\u0440\u043e\u0432\u0430\u043b\u043e\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043b\u044e\u0431\u043e\u0439 \u0441\u043b\u043e\u043c\u0430\u043d\u043d\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 \u0432\u00a0\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438 CI \u043e\u0431\u043d\u0443\u043b\u0438\u0442 score. \u0415\u0441\u043b\u0438 \u043c\u043e\u043b\u0447\u0430 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c, \u0442\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u0433\u043d\u0430\u043b. \u0412\u00a0\u0438\u0442\u043e\u0433\u0435 \u0442\u0430\u043a\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u0443\u0441\u00a0error, \u043d\u0435\u00a0\u0432\u0445\u043e\u0434\u044f\u0442 \u0432\u00a0\u0437\u043d\u0430\u043c\u0435\u043d\u0430\u0442\u0435\u043b\u044c sub\u2011score \u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u0432\u00a0\u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f\u0445 \u043e\u0442\u0447\u0451\u0442\u0430.8. \u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u0411\u0435\u0437\u00a0\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e seed Hypothesis \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435 \u0438\u0449\u0435\u0442 \u043d\u043e\u0432\u044b\u0435 \u0432\u0445\u043e\u0434\u044b, \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a CI \u043c\u043e\u0436\u0435\u0442 \u0434\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u0435\u0440\u0434\u0438\u043a\u0442. \u0414\u043b\u044f\u00a0merge gate \u044d\u0442\u043e \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e. \u0422\u0435\u043f\u0435\u0440\u044c\u00a0seed\u00a0\u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0438 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 PR \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442\u00a0\u0436\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u041a\u043e\u043c\u0443 \u043d\u0443\u0436\u0435\u043d \u0441\u0432\u0435\u0436\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u043e\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0435, \u0441\u0442\u0430\u0432\u0438\u0442\u00a0seed: null.\u0417\u0430\u0447\u0435\u043c \u0442\u043e\u0433\u0434\u0430 AI\u2011\u0440\u0435\u0432\u044c\u044e\u0435\u0440\u044bDifferential testing \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0442\u043e, \u0447\u0442\u043e\u00a0\u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0445\u043e\u0434\u0430\u043c\u0438. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u0432\u0445\u043e\u0434\u0430\u0445 \u043d\u0435\u00a0\u0432\u0438\u0434\u043d\u044b \u0438\u043b\u0438\u00a0\u0432\u0438\u0434\u043d\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0435\u0434\u043a\u043e: \u043f\u043e\u043c\u0435\u043d\u044f\u043b\u0441\u044f \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u0438\u043b\u0438\u00a0\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u043f\u043e\u2011\u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e\u0448\u0438\u0431\u043a\u0438 \u0432\u043e\u00a0\u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445, \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442 \u0432\u0440\u043e\u0434\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432\u00a0\u0444\u0430\u0439\u043b. \u0410\u00a0\u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u044e \u0432\u0438\u0434\u0430\u00a0if n == 987654: return 0\u00a0\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u043d\u0435\u00a0\u043d\u0430\u0439\u0434\u0451\u0442 \u043d\u0438\u043a\u043e\u0433\u0434\u0430.\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u044f\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0434\u0432\u0435 AI\u2011\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438.Semantic diff \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u043a\u0430\u0436\u0434\u0443\u044e \u0438\u0437\u043c\u0435\u043d\u0451\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0441\u043e \u0441\u0442\u0430\u0440\u044b\u043c \u0438 \u043d\u043e\u0432\u044b\u043c \u043a\u043e\u0434\u043e\u043c. \u041c\u043e\u0434\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u00a0severity \u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442 \u0440\u0438\u0441\u043a \u043e\u0442 0\u00a0\u0434\u043e 100.\u0412\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u00a0\u0432\u0435\u0441\u044c \u0434\u0438\u0444\u0444. \u041f\u0440\u043e\u043c\u043f\u0442 \u043f\u0440\u044f\u043c\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442, \u0447\u0442\u043e\u00a0\u043a\u043e\u0434 \u043c\u043e\u0433 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c AI, \u0447\u0442\u043e\u00a0\u0435\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435\u00a0\u043f\u0440\u043e\u0432\u0435\u0440\u044f\u043b \u0438 \u0447\u0442\u043e\u00a0\u043a\u00a0\u043d\u0435\u043c\u0443 \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u044c\u0441\u044f \u0441\u043a\u0435\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0412\u044b\u0432\u043e\u0434\u044b \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043d\u0435\u00a0\u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043f\u043e\u0434\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u0434\u00a0\u043d\u0438\u0445.\u041f\u043e\u00a0\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044d\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u0434\u0443\u0442 \u043a\u00a0\u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Anthropic \u0438 OpenAI: \u0443\u00a0\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0431\u0449\u0438\u0435 \u0441\u043b\u0435\u043f\u044b\u0435 \u043f\u044f\u0442\u043d\u0430. \u0412\u0442\u043e\u0440\u043e\u0433\u043e \u0440\u0435\u0432\u044c\u044e\u0435\u0440\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c\u044e \u0438\u0437\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0441\u00a0\u0432\u0435\u0441\u0430\u043c\u0438.\u041c\u043e\u0434\u0435\u043b\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u043e\u0440\u0438\u0442 \u0441\u0430\u043c\u0430 \u0441\u00a0\u0441\u043e\u0431\u043e\u0439\u0412\u00a0\u043e\u0434\u043d\u043e\u043c \u0438\u0437\u00a0\u0436\u0438\u0432\u044b\u0445 \u043f\u0440\u043e\u0433\u043e\u043d\u043e\u0432 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u0435\u0432\u044c\u044e\u0435\u0440 \u043d\u0430\u0448\u0451\u043b \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0433\u0440\u0430\u043d\u0438\u0446\u044b, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043b \u0435\u0439 severity\u00a0high\u00a0\u0438 \u0432\u00a0\u0442\u043e\u043c\u00a0\u0436\u0435 \u043e\u0442\u0432\u0435\u0442\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b confidence 100, \u0442\u043e \u0435\u0441\u0442\u044c \u00ab\u043c\u043e\u0436\u043d\u043e \u043c\u0435\u0440\u0436\u0438\u0442\u044c\u00bb.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0446\u0435\u043d\u043a\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0435\u0451\u00a0\u0436\u0435 \u0445\u0443\u0434\u0448\u0435\u0439 \u043d\u0430\u0445\u043e\u0434\u043a\u043e\u0439: \u043f\u0440\u0438\u00a0high\u00a0\u043d\u0435\u00a0\u0432\u044b\u0448\u0435 40, \u043f\u0440\u0438\u00a0medium\u00a0\u043d\u0435\u00a0\u0432\u044b\u0448\u0435 75. \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0432\u00a0JSON\u2011\u043e\u0442\u0447\u0451\u0442\u0435,&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-496732","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/496732","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=496732"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/496732\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=496732"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=496732"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=496732"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}