{"id":30693,"date":"2026-10-11T15:24:42","date_gmt":"2026-10-11T15:24:42","guid":{"rendered":"https:\/\/umang.pk\/2026\/10\/11\/%d8%a2%d9%be%d8%b1%db%8c%d8%b4%d9%86%d9%84-%d9%88%d8%b6%d8%a7%d8%ad%d8%aa%db%8c%da%ba-%d8%a7%d9%88%d8%b1-%d8%b9%d9%85%d9%84-%d8%af%d8%b1%d8%a2%d9%85%d8%af-%da%a9%db%92-%d8%af%d8%b1%d9%85%db%8c%d8%a7\/"},"modified":"2026-10-11T15:24:42","modified_gmt":"2026-10-11T15:24:42","slug":"%d8%a2%d9%be%d8%b1%db%8c%d8%b4%d9%86%d9%84-%d9%88%d8%b6%d8%a7%d8%ad%d8%aa%db%8c%da%ba-%d8%a7%d9%88%d8%b1-%d8%b9%d9%85%d9%84-%d8%af%d8%b1%d8%a2%d9%85%d8%af-%da%a9%db%92-%d8%af%d8%b1%d9%85%db%8c%d8%a7","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/10\/11\/%d8%a2%d9%be%d8%b1%db%8c%d8%b4%d9%86%d9%84-%d9%88%d8%b6%d8%a7%d8%ad%d8%aa%db%8c%da%ba-%d8%a7%d9%88%d8%b1-%d8%b9%d9%85%d9%84-%d8%af%d8%b1%d8%a2%d9%85%d8%af-%da%a9%db%92-%d8%af%d8%b1%d9%85%db%8c%d8%a7\/","title":{"rendered":"\u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0627\u0648\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0679 \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u06cc\u0633\u06d2 \u06a9\u06cc \u062c\u0627\u0626\u06d2\u06d4"},"content":{"rendered":"\n<div id=\"\">\n<p>\u0627\u06cc\u06a9 \u067e\u0686\u06be\u0644\u06d2 \u0645\u0636\u0645\u0648\u0646 \u0645\u06cc\u06ba\u060c \u0645\u06cc\u06ba \u0646\u06d2 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u06a9\u06cc \u0622\u0632\u0627\u062f\u06cc \u06a9\u06d2 \u062e\u06cc\u0627\u0644 \u06a9\u06cc \u06a9\u06be\u0648\u062c \u06a9\u06cc \u062a\u06be\u06cc\u060c \u06cc\u0639\u0646\u06cc \u06a9\u06c1 \u0645\u062e\u062a\u0644\u0641 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<p>\u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 <strong>\u0639\u0645\u0644\u062f\u0627\u0631 \u06a9\u06cc \u0622\u0632\u0627\u062f\u06cc<\/strong>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0645\u0633\u062a\u062d\u06a9\u0645 \u0631\u06c1\u062a\u06cc \u06c1\u06cc\u06ba \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u0627\u06af\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u0628\u062f\u0644 \u062c\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u06c1\u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u0641\u06cc\u062f \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-text\">Specification\n      \u2193\nExecutor\n      \u2193\nEvidence\n<\/code><\/pre>\n<p>\u0644\u06cc\u06a9\u0646 \u0627\u06c1\u0645 \u0633\u0648\u0627\u0644\u0627\u062a \u0644\u0627 \u062c\u0648\u0627\u0628 \u06c1\u06cc\u06ba\u06d4 \u0622\u067e \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u062a\u0639\u06cc\u0646 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u067e\u06be\u0627\u0646\u0633\u06cc \u0633\u06d2 \u067e\u06cc\u062f\u0627 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u062b\u0628\u0648\u062a \u062f\u0631\u062d\u0642\u06cc\u0642\u062a \u0648\u0636\u0627\u062d\u062a\u0648\u06ba \u067e\u0631 \u067e\u0648\u0631\u0627 \u0627\u062a\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u061f<\/p>\n<p>\u06cc\u06c1 \u0645\u0646\u0627\u0633\u0628\u06cc\u062a \u06a9\u0627 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06af\u0632\u06cc\u06a9\u0679\u0648 \u06a9\u06d2 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0633\u06d2\u060c \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u0627\u06af\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0628 \u0628\u06be\u06cc \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0645\u0639\u0627\u06c1\u062f\u06d2 \u06a9\u06cc \u062e\u0644\u0627\u0641 \u0648\u0631\u0632\u06cc \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u0635\u0644\u0627\u062d\u06cc \u0627\u06cc\u062c\u0646\u0679 \u0627\u0633 \u0628\u0627\u062a \u06a9\u0648 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0645\u0646\u0635\u0648\u0628\u06c1 \u0628\u0646\u062f \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0645\u06a9\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0646\u0638\u0627\u0645 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u062d\u062f \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u0631\u06c1\u06d2\u06d4<\/p>\n<p>\u0628\u062d\u0627\u0644\u06cc \u06a9\u0627 \u0639\u0645\u0644 \u0628\u063a\u06cc\u0631 \u06a9\u0633\u06cc \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u0645\u06a9\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06be\u0631 \u0628\u06be\u06cc \u0622\u067e \u06a9\u06d2 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0688\u06cc\u0679\u0627 \u06a9\u0648 \u0628\u062d\u0627\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1\u06cc \u0648\u062c\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0639\u0627\u0645 \u062d\u0627\u0644\u0627\u062a \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-text\">success = true\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0627\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0645\u06cc\u06ba \u0627\u0633 \u0628\u0627\u062a \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0637\u0631\u06cc\u0642\u06c1 \u062f\u0631\u06a9\u0627\u0631 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062a\u06be\u0627 \u062c\u0648 \u062d\u0642\u06cc\u0642\u062a \u0645\u06cc\u06ba \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627 \u0627\u0648\u0631 \u0648\u0627\u0636\u062d\u060c \u0642\u0627\u0628\u0644 \u0648\u0636\u0627\u062d\u062a \u0627\u0648\u0631 \u0645\u0641\u06cc\u062f \u0646\u062a\u0627\u0626\u062c \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0622\u0631\u0679\u06cc\u06a9\u0644 \u0645\u06cc\u06ba\u060c \u0645\u06cc\u06ba \u0622\u067e \u06a9\u0648 \u062f\u06a9\u06be\u0627\u0624\u06ba \u06af\u0627 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u06a9\u0646\u0641\u0627\u0631\u0645\u0646\u0633 \u06a9\u0648 \u0645\u0627\u0688\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u0627 \u06c1\u06d2\u060c \u067e\u0627\u0633\u0632\u060c \u0641\u06cc\u0644 \u0627\u0648\u0631 \u0646\u0627\u0645\u0639\u0644\u0648\u0645 \u0646\u062a\u0627\u0626\u062c \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0631\u0646\u0627\u060c \u0631\u0648\u0627\u062f\u0627\u0631\u06cc \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u0627\u060c \u06af\u0645\u0634\u062f\u06c1 \u0634\u0648\u0627\u06c1\u062f \u06a9\u0648 \u06c1\u06cc\u0646\u0688\u0644 \u06a9\u0631\u0646\u0627\u060c \u0634\u062f\u062a \u06a9\u0648 \u062a\u0641\u0648\u06cc\u0636 \u06a9\u0631\u0646\u0627\u060c \u0645\u0641\u06cc\u062f \u0645\u0648\u0627\u0641\u0642\u062a \u06a9\u06d2 \u062e\u0644\u0627\u0635\u06d2 \u06a9\u06cc \u06af\u0646\u062a\u06cc \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u0645\u0648\u0627\u0641\u0642\u062a \u06a9\u0648 \u06af\u0645\u0631\u0627\u06c1 \u06a9\u0646 \u0627\u0633\u06a9\u0648\u0631 \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u0633\u06d2 \u06af\u0631\u06cc\u0632 \u06a9\u0631\u0646\u0627\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644\u06cc\u06ba TypeScript \u0627\u0648\u0631 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0645\u0646\u0638\u0631\u0646\u0627\u0645\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u06cc\u06c1\u06cc \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u06a9\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0648\u06ba\u060c \u0648\u0627\u0642\u0639\u06d2 \u06a9\u06d2 \u0631\u062f\u0639\u0645\u0644\u060c \u0628\u06cc\u06a9 \u0627\u067e \u06a9\u06cc \u0628\u062d\u0627\u0644\u06cc\u060c \u0688\u06cc\u0679\u0627 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646\u0632\u060c \u0627\u0648\u0631 AI \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0633\u0633\u0679\u0645\u0632 \u067e\u0631 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u0644\u06cc\u062f\u06cc \u062e\u06cc\u0627\u0644 \u06cc\u06c1 \u06c1\u06d2: \u0645\u0637\u0627\u0628\u0642\u062a \u06cc\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0646\u0627\u0641\u0630 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06cc\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u062a\u06be\u0627\u06d4 \u0645\u0637\u0627\u0628\u0642\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u062b\u0628\u0648\u062a \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0637\u06cc\u06ba<\/h2>\n<p>\u0622\u067e \u06a9\u0648 \u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0622\u0631\u0627\u0645 \u062f\u06c1 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2:<\/p>\n<ul>\n<li>\n<p>\u06a9\u0644\u06cc\u062f\u06cc \u0633\u0627\u0641\u0679 \u0648\u06cc\u0626\u0631 \u0641\u0646 \u062a\u0639\u0645\u06cc\u0631 \u06a9\u06d2 \u062a\u0635\u0648\u0631\u0627\u062a<\/p>\n<\/li>\n<li>\n<p>TypeScript \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0645\u0644\u062a\u06cc \u062c\u0644\u062a\u06cc \u0632\u0628\u0627\u0646<\/p>\n<\/li>\n<li>\n<p>\u0628\u0646\u06cc\u0627\u062f\u06cc \u0679\u06cc\u0633\u0679<\/p>\n<\/li>\n<li>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1<\/p>\n<\/li>\n<li>\n<p>CI\/CD \u062a\u0635\u0648\u0631<\/p>\n<\/li>\n<li>\n<p>\u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba<\/p>\n<\/li>\n<li>\n<p>\u0639\u0645\u0644\u062f\u0627\u0631 \u06a9\u06cc \u0622\u0632\u0627\u062f\u06cc<\/p>\n<\/li>\n<\/ul>\n<p>\u06a9\u0633\u06cc \u0645\u062e\u0635\u0648\u0635 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u0645\u062b\u0627\u0644\u06cc\u06ba \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0686\u06be\u0648\u0679\u06cc \u06c1\u06cc\u06ba \u0644\u06c1\u0630\u0627 \u062a\u0634\u062e\u06cc\u0635\u06cc \u0645\u0627\u0688\u0644 \u0646\u0638\u0631 \u0622\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-what-conformance-means-in-this-context\">\u0627\u0633 \u062a\u0646\u0627\u0638\u0631 \u0645\u06cc\u06ba \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u061f<\/h2>\n<p>\u0639\u0627\u0645 \u0632\u0628\u0627\u0646 \u0645\u06cc\u06ba\u060c \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u0627 \u0645\u0637\u0644\u0628 \u0642\u0648\u0627\u0639\u062f\u060c \u0645\u0639\u06cc\u0627\u0631\u0627\u062a \u06cc\u0627 \u062a\u0642\u0627\u0636\u0648\u06ba \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0645 \u06cc\u06c1\u0627\u06ba \u0627\u0633 \u0627\u0635\u0637\u0644\u0627\u062d \u06a9\u0648 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<blockquote>\n<p>\u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u06a9\u0627\u0641\u06cc\u06cc\u062a \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0627\u0648\u0631 \u06a9\u06c1\u0627\u06ba \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u062b\u0628\u0648\u062a \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u0645\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062f\u06c1 \u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/blockquote>\n<p>\u0627\u0633 \u062a\u0646\u0627\u0638\u0631 \u0645\u06cc\u06ba\u060c <strong>\u062b\u0628\u0648\u062a<\/strong> \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u062d\u0642\u0627\u0626\u0642 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u062c\u0645\u0648\u0639\u06c1 \u062c\u0648 \u0627\u06cc\u06a9 \u0646\u0638\u0627\u0645 \u0633\u06d2 \u062c\u0645\u0639 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u0648\u0636\u0627\u062d\u062a\u0648\u06ba \u0633\u06d2 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u0627 \u0627\u0645\u062a\u062d\u0627\u0646 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0627\u0633 \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0648 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0688\u06cc\u0679\u0627\u06d4<\/p>\n<p>\u062a\u0639\u0631\u06cc\u0641 \u06a9\u06d2 \u062a\u06cc\u0646 \u062d\u0635\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-1-the-specification\">1. \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba<\/h3>\n<p>\u06cc\u06c1 \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u0633\u0686 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-text\">version = v42\navailable replicas >= 3\nerror rate <= 1%\np95 latency <= 400 ms\n<\/code><\/pre>\n<h3 id=\"heading-2-the-evidence\">2. \u062b\u0628\u0648\u062a<\/h3>\n<p>\u06cc\u06c1 \u062f\u0631\u0627\u0635\u0644 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-text\">version = v42\navailable replicas = 3\nerror rate = 0.4%\np95 latency = 280 ms\n<\/code><\/pre>\n<h3 id=\"heading-3-the-evaluation\">3. \u062a\u0634\u062e\u06cc\u0635<\/h3>\n<p>\u06cc\u06c1 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u0633\u06d2 \u0634\u0648\u0627\u06c1\u062f \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-text\">version             PASS\navailable replicas  PASS\nerror rate           PASS\np95 latency          PASS\n<\/code><\/pre>\n<p>\u0644\u06c1\u0630\u0627 \u0645\u0648\u0627\u0641\u0642\u062a \u0627\u06cc\u06a9 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u067e\u0631\u0627\u067e\u0631\u0679\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u0635\u0631\u06cc\u062d \u06a9\u06d2 \u062e\u0644\u0627\u0641 \u0634\u0648\u0627\u06c1\u062f \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u0627 \u0646\u062a\u06cc\u062c\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0635\u0648\u0631\u0627\u062a\u06cc \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-text\">Specification\n      +\nEvidence\n      \u2193\nConformance Evaluation\n      \u2193\nResult\n<\/code><\/pre>\n<h2 id=\"heading-start-with-a-specification-and-evidence\">\u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0627\u0648\u0631 \u062b\u0628\u0648\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u062f\u0631\u062c \u0630\u06cc\u0644 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-typescript\">type DeploymentSpec = {\n  version: string;\n  minReplicas: number;\n  maxErrorRate: number;\n  maxP95LatencyMs: number;\n};\n\nconst spec: DeploymentSpec = {\n  version: \"v42\",\n  minReplicas: 3,\n  maxErrorRate: 0.01,\n  maxP95LatencyMs: 400,\n};\n<\/code><\/pre>\n<p>\u0627\u0628 \u062b\u0628\u0648\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">type DeploymentEvidence = {\n  version: string;\n  replicas: number;\n  errorRate: number;\n  p95LatencyMs: number;\n};\n\nconst evidence: DeploymentEvidence = {\n  version: \"v42\",\n  replicas: 3,\n  errorRate: 0.004,\n  p95LatencyMs: 280,\n};\n<\/code><\/pre>\n<p>\u0633\u0628 \u0633\u06d2 \u0622\u0633\u0627\u0646 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0628\u0648\u0644\u06cc\u0646 \u0648\u0627\u067e\u0633 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-typescript\">function conforms(\n  spec: DeploymentSpec,\n  evidence: DeploymentEvidence\n): boolean {\n  return (\n    evidence.version === spec.version &&\n    evidence.replicas >= spec.minReplicas &&\n    evidence.errorRate <= spec.maxErrorRate &#038;&#038;\n    evidence.p95LatencyMs <= spec.maxP95LatencyMs\n  );\n}\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06cc\u06a9 \u0645\u0633\u0626\u0644\u06c1 \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u062a\u0627\u0626\u062c \u062f\u0631\u062c \u0630\u06cc\u0644 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">false\n<\/code><\/pre>\n<p>\u062a\u0645 \u0646\u06c1\u06cc\u06ba \u062c\u0627\u0646\u062a\u06d2 \u06a9\u06cc\u0648\u06ba\u061f \u06cc\u06c1 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0627\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-evaluate-constraints-individually\">\u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u06cc\u06a9 \u0628\u0648\u0644\u06cc\u0646 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06c1\u0631 \u0631\u06a9\u0627\u0648\u0679 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">type ConstraintResult = {\n  name: string;\n  passed: boolean;\n};\n\nfunction evaluateDeployment(\n  spec: DeploymentSpec,\n  evidence: DeploymentEvidence\n): ConstraintResult[] {\n  return [\n    {\n      name: \"version\",\n      passed:\n        evidence.version === spec.version,\n    },\n    {\n      name: \"replicas\",\n      passed:\n        evidence.replicas >= spec.minReplicas,\n    },\n    {\n      name: \"error-rate\",\n      passed:\n        evidence.errorRate <= spec.maxErrorRate,\n    },\n    {\n      name: \"latency\",\n      passed:\n        evidence.p95LatencyMs <= spec.maxP95LatencyMs,\n    },\n  ];\n}\n<\/code><\/pre>\n<p><code>ConstraintResult<\/code>    \u06c1\u0631 \u0686\u06cc\u06a9 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0646\u0627\u0645 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0628\u0648\u0644\u06cc\u0646 \u0646\u062a\u06cc\u062c\u06c1 \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u06cc\u06ba\u06d4 \u06a9\u06c1 <code>evaluateDeployment()<\/code> \u0641\u0646\u06a9\u0634\u0646 \u0627\u06cc\u06a9 \u0648\u0642\u062a \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u0642\u062f\u0631 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u062a\u0635\u0631\u06cc\u062d \u0645\u06cc\u06ba \u0645\u062a\u0639\u0644\u0642\u06c1 \u0627\u0635\u0648\u0644 \u0633\u06d2 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u0642\u06cc\u0646\u06cc \u0628\u0646\u0627\u0626\u06cc\u06ba \u06a9\u06c1 \u062a\u0639\u06cc\u0646\u0627\u062a \u06a9\u0631\u062f\u06c1 \u0648\u0631\u0698\u0646 \u0628\u0627\u0644\u06a9\u0644 \u0645\u0645\u0627\u062b\u0644 \u06c1\u06cc\u06ba\u060c \u0646\u0642\u0644\u0648\u06ba \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u06a9\u0627\u0641\u06cc \u0632\u06cc\u0627\u062f\u06c1 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0634\u0631\u062d \u0627\u0648\u0631 \u062a\u0627\u062e\u06cc\u0631 \u062d\u062f \u0633\u06d2 \u0646\u06cc\u0686\u06d2 \u0631\u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0645\u0627\u0645 \u0686\u06cc\u06a9\u0633 \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u06cc\u06ba \u0633\u0645\u06cc\u0679\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 <code>true<\/code> \u06cc\u0627 <code>false<\/code>\u0641\u0646\u06a9\u0634\u0646 \u0641\u06cc \u0631\u06a9\u0627\u0648\u0679 \u0627\u06cc\u06a9 \u0646\u062a\u06cc\u062c\u06c1 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648 \u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u06d2 \u062a\u0642\u0627\u0636\u06d2 \u06af\u0632\u0631 \u06af\u0626\u06d2 \u06cc\u0627 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u0626\u06d2\u06d4<\/p>\n<p>\u0627\u0628 \u0622\u0624\u0679 \u067e\u0679 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">version       PASS\nreplicas      PASS\nerror-rate    PASS\nlatency       PASS\n<\/code><\/pre>\n<p>\u06cc\u0627:<\/p>\n<pre><code class=\"language-text\">version       PASS\nreplicas      FAIL\nerror-rate    PASS\nlatency       FAIL\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0628\u06c1\u062a \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0641\u06cc\u062f \u06c1\u06d2\u06d4 \u0622\u067e \u0646\u0627\u06a9\u0627\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631 \u0633\u06a9\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h2 id=\"heading-dont-reduce-everything-to-pass-or-fail\">\u067e\u0627\u0633 \u06cc\u0627 \u0641\u06cc\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06c1\u0631 \u0686\u06cc\u0632 \u06a9\u0648 \u06a9\u0645 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u062b\u0646\u0627\u0626\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0627\u0628 \u0628\u06be\u06cc \u06a9\u0628\u06be\u06cc \u06a9\u0628\u06be\u06cc \u0628\u06c1\u062a \u0622\u0633\u0627\u0646 \u06c1\u06d2.<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">error rate <= 1%\n<\/code><\/pre>\n<p>\u062a\u0627\u06c1\u0645 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a\u06cc \u0646\u0638\u0627\u0645 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u062a\u06cc\u062c\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u061f<\/p>\n<p><code>PASS<\/code>    \u06cc\u06c1 \u0635\u0631\u06cc\u062d\u0627\u064b \u063a\u0644\u0637 \u06c1\u06d2\u06d4<\/p>\n<p><code>FAIL<\/code>    \u06cc\u06c1 \u06af\u0645\u0631\u0627\u06c1 \u06a9\u0646 \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u06cc\u06c1 \u062f\u0648 \u062d\u0627\u0644\u0627\u062a \u06a9\u0648 \u0645\u0644\u0627 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-text\">the system violated the constraint\n<\/code><\/pre>\n<p>\u0627\u0648\u0631:<\/p>\n<pre><code class=\"language-text\">we do not know whether the system violated the constraint\n<\/code><\/pre>\n<p>\u0628\u06c1\u062a\u0631 \u0645\u0627\u0688\u0644 \u06a9\u0645 \u0627\u0632 \u06a9\u0645 \u062a\u06cc\u0646 \u0631\u06cc\u0627\u0633\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-text\">PASS\nFAIL\nUNKNOWN\n<\/code><\/pre>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-typescript\">type ConstraintStatus =\n  | \"PASS\"\n  | \"FAIL\"\n  | \"UNKNOWN\";\n<\/code><\/pre>\n<p>\u0646\u0627\u0645\u0639\u0644\u0648\u0645 \u0634\u0648\u0627\u06c1\u062f \u06a9\u0648 \u062e\u0627\u0645\u0648\u0634\u06cc \u0633\u06d2 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h2 id=\"heading-treat-missing-evidence-as-unknown\">\u06af\u0645\u0634\u062f\u06c1 \u0634\u0648\u0627\u06c1\u062f \u06a9\u0648 \u0646\u0627\u0645\u0639\u0644\u0648\u0645 \u062b\u0628\u0648\u062a \u0633\u0645\u062c\u06be\u06cc\u06ba\u06d4<\/h2>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u062b\u0628\u0648\u062a \u062c\u0632\u0648\u06cc \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc\u060c \u0646\u0638\u0627\u0645 \u06a9\u0686\u06be\u060c \u0644\u06cc\u06a9\u0646 \u062a\u0645\u0627\u0645 \u0646\u06c1\u06cc\u06ba\u060c \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u0648\u0627\u067e\u0633 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u0648\u0646 \u0633\u0627 \u0648\u0631\u0698\u0646 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u062a\u0646\u06cc \u0646\u0642\u0644\u06cc\u06ba \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u062e\u0631\u0627\u0628\u06cc \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u067e\u06cc\u0645\u0627\u0626\u0634 \u0639\u0627\u0631\u0636\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u06c1\u0631 \u062b\u0628\u0648\u062a \u06a9\u06d2 \u0641\u06cc\u0644\u0688 \u06a9\u0648 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0628\u0646\u0627 \u06a9\u0631 \u0627\u0633 \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">type DeploymentEvidence = {\n  version?: string;\n  replicas?: number;\n  errorRate?: number;\n  p95LatencyMs?: number;\n};\n<\/code><\/pre>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648 \u0627\u0635\u0644 \u062e\u0644\u0627\u0641 \u0648\u0631\u0632\u06cc\u0648\u06ba \u0627\u0648\u0631 \u06cc\u0627\u062f \u0634\u062f\u06c1 \u0645\u0634\u0627\u06c1\u062f\u0627\u062a \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0641\u0631\u0642 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<pre><code class=\"language-typescript\">function evaluateErrorRate(\n  spec: DeploymentSpec,\n  evidence: DeploymentEvidence\n): ConstraintStatus {\n  if (\n    evidence.errorRate === undefined\n  ) {\n    return \"UNKNOWN\";\n  }\n\n  return (\n    evidence.errorRate <= spec.maxErrorRate\n  )\n    ? \"PASS\"\n    : \"FAIL\";\n}\n<\/code><\/pre>\n<p>\u067e\u06c1\u0644\u06cc \u0634\u0627\u062e \u067e\u0648\u0686\u06be\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0634\u0631\u062d \u06a9\u06cc \u0642\u062f\u0631 \u0628\u0627\u0644\u06a9\u0644 \u0628\u06be\u06cc \u062f\u06cc\u06a9\u06be\u06cc \u06af\u0626\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0646\u06c1\u06cc\u06ba\u060c \u062a\u0648 \u062a\u0634\u062e\u06cc\u0635 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0648\u0627\u067e\u0633 \u0622\u062a\u0627 \u06c1\u06d2\u06d4 <code>UNKNOWN<\/code> \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u06d4 \u0627\u06af\u0631 \u0642\u062f\u0631 \u0645\u0648\u062c\u0648\u062f \u06c1\u06d2 \u062a\u0648 \u0641\u0646\u06a9\u0634\u0646 \u0627\u0633 \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u0632\u06cc\u0627\u062f\u06c1 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0642\u0627\u0628\u0644 \u0627\u062c\u0627\u0632\u062a \u063a\u0644\u0637\u06cc \u06a9\u06cc \u0634\u0631\u062d \u0627\u0648\u0631 \u0648\u0627\u067e\u0633\u06cc \u0633\u06d2 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>PASS<\/code> \u06cc\u0627 <code>FAIL<\/code>.<\/p>\n<p>\u06cc\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">errorRate = 0.004 \u2192 PASS\nerrorRate = 0.03  \u2192 FAIL\nerrorRate missing \u2192 UNKNOWN\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0631\u0642 \u0627\u06c1\u0645 \u06c1\u06d2\u06d4 <strong>\u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u063a\u0627\u0626\u0628 \u06c1\u06d2\u06d4<\/strong>\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u062c\u0646 \u0645\u06cc\u0679\u0631\u06a9\u0633 \u06cc\u0627 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0633\u06af\u0646\u0644\u0632 \u06a9\u0627 \u06c1\u0645 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u0631\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u0648\u06c1 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u0633\u0633\u0679\u0645 \u0646\u06d2 \u0627\u0633 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0634\u0646 \u0648\u0646\u0688\u0648 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u0631\u0631 \u0631\u06cc\u0679 \u0648\u06cc\u0644\u06cc\u0648\u0632 \u06a9\u06cc \u0627\u0637\u0644\u0627\u0639 \u0646\u06c1\u06cc\u06ba \u062f\u06cc\u06d4 \u0627\u06af\u0631 \u063a\u0627\u0626\u0628 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0648 \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0633\u0645\u062c\u06be\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0641\u0679 \u062e\u0637\u0631\u0646\u0627\u06a9 \u062d\u062f \u062a\u06a9 \u067e\u0631 \u0627\u0645\u06cc\u062f \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-use-tolerances-where-exact-comparison-is-wrong\">\u0635\u062d\u06cc\u062d \u0645\u0648\u0627\u0632\u0646\u06c1 \u063a\u0644\u0637 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0631\u0648\u0627\u062f\u0627\u0631\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u06a9\u0686\u06be \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0639\u06cc\u0646 \u0645\u0633\u0627\u0648\u0627\u062a \u06a9\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-text\">deployed version must equal v42\n<\/code><\/pre>\n<p>\u062f\u0648\u0633\u0631\u0648\u06ba \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2\u06d4<\/p>\n<p>\u0639\u062f\u062f\u06cc \u0646\u0638\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0631\u0648\u0627\u062f\u0627\u0631\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0645\u0627\u067e\u0627 \u06cc\u0627 \u062d\u0633\u0627\u0628 \u0634\u062f\u06c1 \u0627\u0642\u062f\u0627\u0631 \u0628\u06c1\u062a \u06a9\u0645 \u0645\u0642\u062f\u0627\u0631 \u0645\u06cc\u06ba \u0645\u062e\u062a\u0644\u0641 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba \u0686\u0627\u06c1\u06d2 \u0648\u06c1 \u0639\u0645\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u06c1\u0648\u06ba\u06d4 \u0641\u0644\u0648\u0679\u0646\u06af \u067e\u0648\u0627\u0626\u0646\u0679 \u0631\u06cc\u0627\u0636\u06cc\u060c \u0646\u0645\u0648\u0646\u06d2 \u0644\u06cc\u0646\u06d2\u060c \u0631\u0627\u0624\u0646\u0688\u0646\u06af\u060c \u0627\u0648\u0631 \u067e\u06cc\u0645\u0627\u0626\u0634 \u06a9\u0627 \u0634\u0648\u0631 \u0633\u0628\u06be\u06cc \u0627\u0642\u062f\u0627\u0631 \u067e\u06cc\u062f\u0627 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0648 \u067e\u0648\u0631\u0627 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0648\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06d2 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">function withinTolerance(\n  observed: number,\n  expected: number,\n  tolerance: number\n): boolean {\n  return (\n    Math.abs(observed - expected)\n    <= tolerance\n  );\n}\n<\/code><\/pre>\n<p>\u067e\u06be\u0631:<\/p>\n<pre><code class=\"language-typescript\">withinTolerance(\n  1.9999999,\n  2,\n  0.0001\n);\n<\/code><\/pre>\n<p>\u0631\u067e\u0648\u0631\u0679 <code>true<\/code>.<\/p>\n<p>\u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u0627\u0648\u0631 \u0645\u062a\u0648\u0642\u0639 \u0627\u0642\u062f\u0627\u0631 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0645\u0637\u0644\u0642 \u0641\u0631\u0642 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u067e\u06be\u0631 \u06cc\u06c1 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u06cc\u06c1 \u0641\u0631\u0642 \u0642\u0628\u0648\u0644 \u0634\u062f\u06c1 \u0631\u0648\u0627\u062f\u0627\u0631\u06cc \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u0633 \u0648\u0642\u062a \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u062c\u0628 \u0686\u06be\u0648\u0679\u06d2 \u0639\u062f\u062f\u06cc \u0641\u0631\u0642 \u06a9\u06cc \u062a\u0648\u0642\u0639 \u06a9\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u062f\u0631\u0633\u062a \u0645\u0633\u0627\u0648\u0627\u062a \u063a\u0644\u0637 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0627 \u0628\u0627\u0639\u062b \u0628\u0646\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u062a\u0627\u06c1\u0645\u060c \u0631\u0648\u0627\u062f\u0627\u0631\u06cc \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0644\u0641\u0627\u0641\u06d2 \u0633\u06d2 \u0622\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0648 \u0645\u062d\u0636 \u0627\u0633 \u0644\u06cc\u06d2 \u067e\u06cc\u0634 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u06a9\u06c1 \u0627\u0633\u06d2 \u062f\u0648\u0631 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<h2 id=\"heading-add-severity-to-constraints\">\u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u0645\u06cc\u06ba \u0634\u062f\u062a \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h2>\n<p>\u062a\u0645\u0627\u0645 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u06cc \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0627\u06c1\u0645\u06cc\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u062f\u0648 \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">p95 latency = 405 ms\nreplicas = 0\n<\/code><\/pre>\n<p>\u062f\u0648\u0646\u0648\u06ba \u0646\u0627\u06a9\u0627\u0645 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0628\u0631\u0627\u0628\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062a\u0627\u062e\u06cc\u0631 \u06a9\u06cc \u0627\u06cc\u06a9 \u0686\u06be\u0648\u0679\u06cc \u0633\u06cc \u0631\u0642\u0645 \u063a\u0627\u0626\u0628 \u06c1\u0648\u0646\u0627 \u0641\u0648\u0631\u06cc \u0631\u0648\u0644 \u0628\u06cc\u06a9 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u062a\u0648\u062c\u06c1 \u062f\u06cc\u0646\u06d2 \u06a9\u06cc \u0636\u0645\u0627\u0646\u062a \u062f\u06d2 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062f\u0648\u0633\u0631\u06cc \u0637\u0631\u0641\u060c \u0627\u06af\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u0642\u0644\u06cc\u06ba 0 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0633\u0631\u0648\u0633 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u06c1\u0646\u06af\u0627\u0645\u06cc \u0628\u062d\u0627\u0644\u06cc \u0634\u0631\u0648\u0639 \u06a9\u06cc \u062c\u0627\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0634\u062f\u062a \u0622\u067e \u06a9\u0648 \u062a\u0645\u0627\u0645 \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0648 \u06cc\u06a9\u0633\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0645 \u0633\u0645\u062c\u06be\u0646\u06d2 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc\u06ba \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0627\u062e\u062a\u0644\u0627\u0641\u0627\u062a \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-typescript\">type Severity =\n  | \"INFO\"\n  | \"WARNING\"\n  | \"CRITICAL\";\n\ntype ConstraintResult = {\n  name: string;\n  status: ConstraintStatus;\n  severity: Severity;\n};\n<\/code><\/pre>\n<p>\u06cc\u06c1\u0627\u06ba\u060c <code>status<\/code> \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0631\u06a9\u0627\u0648\u0679 \u06af\u0632\u0631 \u06af\u0626\u06cc\u060c \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u0626\u06cc\u060c \u06cc\u0627 \u0627\u0633 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0646\u06c1\u06cc\u06ba \u0644\u06af\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u0627\u06d4 <code>severity<\/code> \u06cc\u06c1 \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0646\u062a\u0627\u0626\u062c \u06a9\u062a\u0646\u06d2 \u0627\u06c1\u0645 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062f\u0648\u0646\u0648\u06ba \u062c\u06c1\u062a\u06cc\u06ba \u0627\u0644\u06af \u0627\u0644\u06af \u06c1\u06cc\u06ba\u06d4 \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba \u0627\u0633 \u0637\u0631\u062d \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba: <code>WARNING<\/code> \u0634\u062f\u062a \u06cc\u0627 \u0646\u0627\u06a9\u0627\u0645\u06cc\u06d4 <code>CRITICAL<\/code> \u0633\u0646\u062c\u06cc\u062f\u06af\u06cc\u06d4<\/p>\n<p>\u067e\u06be\u0631:<\/p>\n<pre><code class=\"language-text\">latency\nFAIL\nWARNING\n\nreplicas\nFAIL\nCRITICAL\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u062a\u06d2 \u0648\u0642\u062a \u0627\u06c1\u0645 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u0627 \u06c1\u06d2\u060c \u0631\u0648\u06a9\u0646\u0627 \u06c1\u06d2\u060c \u0631\u0648\u0644 \u0628\u06cc\u06a9 \u06a9\u0631\u0646\u0627 \u06c1\u06d2 \u06cc\u0627 \u0628\u0691\u06be\u0627\u0646\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-separate-hard-constraints-from-advisory-constraints\">\u0639\u0644\u06cc\u062d\u062f\u06c1 \u0645\u0634\u0648\u0631\u06d2 \u0627\u0648\u0631 \u0633\u062e\u062a \u067e\u0627\u0628\u0646\u062f\u06cc\u0627\u06ba<\/h2>\n<p>\u06a9\u0686\u06be \u062a\u0642\u0627\u0636\u06d2 \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0622\u06cc\u0627 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u06c1\u06d2\u06d4 \u062f\u0648\u0633\u0631\u06d2 \u0645\u0641\u06cc\u062f \u0633\u06af\u0646\u0644 \u06c1\u06cc\u06ba \u0644\u06cc\u06a9\u0646 \u0636\u0631\u0648\u0631\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u06c1 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u0648 \u0631\u0648\u06a9\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u0634\u062f\u062a \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u06c1\u06d2\u06d4 \u0634\u062f\u062a \u0646\u062a\u06cc\u062c\u06c1 \u06a9\u06d2 \u0627\u062b\u0631\u0627\u062a \u06a9\u0648 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0628 \u06a9\u06c1 \u0631\u06a9\u0627\u0648\u0679 \u0645\u0648\u0688 \u06cc\u06c1 \u0628\u062a\u0627\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0627\u0635\u0648\u0644 \u062d\u062a\u0645\u06cc \u0645\u0648\u0627\u0641\u0642\u062a \u06a9\u06d2 \u0641\u06cc\u0635\u0644\u06d2 \u0645\u06cc\u06ba \u062d\u0635\u06c1 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u0648\u0626\u06cc \u0631\u0627\u0633\u062a\u06c1 \u0646\u06c1\u06cc\u06ba <code>REQUIRED<\/code> \u06a9\u0633\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06d2 \u0627\u06c1\u0644 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633\u06d2 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u0633\u06d2 \u06af\u0632\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0646\u06c1\u06cc\u06ba <code>ADVISORY<\/code> \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u0627\u06af\u0631 \u06a9\u0648\u0626\u06cc \u0631\u06a9\u0627\u0648\u0679 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u062c\u0627\u062a\u06cc \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0627\u0628 \u0628\u06be\u06cc \u062a\u0639\u0645\u06cc\u0644 \u0631\u06c1 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0646\u0627\u06a9\u0627\u0645\u06cc\u0648\u06ba \u06a9\u0648 \u0627\u0628\u06be\u06cc \u0628\u06be\u06cc \u0631\u067e\u0648\u0631\u0679 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-typescript\">type ConstraintMode =\n  | \"REQUIRED\"\n  | \"ADVISORY\";\n<\/code><\/pre>\n<p>\u0627\u0628 \u0622\u067e \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-typescript\">type ConstraintResult = {\n  name: string;\n  status: ConstraintStatus;\n  severity: Severity;\n  mode: ConstraintMode;\n  expected?: unknown;\n  observed?: unknown;\n};\n<\/code><\/pre>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-text\">version\nREQUIRED\nPASS\n\nlatency-target\nADVISORY\nFAIL\n<\/code><\/pre>\n<p>\u0622\u067e\u0631\u06cc\u0634\u0646 \u0627\u0628 \u0628\u06be\u06cc \u0645\u062c\u0645\u0648\u0639\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u0646\u062a\u0628\u0627\u06c1\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0639\u0627\u0644\u0645\u06cc \u0628\u0648\u0644\u06cc\u0646 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u0638\u06c1\u0627\u0631 \u062e\u06cc\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-build-a-reusable-conformance-evaluator\">\u062f\u0648\u0628\u0627\u0631\u06c1 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0628\u0646\u0627\u0646\u0627<\/h2>\n<p>\u0627\u0628 \u062a\u06a9 \u06a9\u06cc \u0645\u062b\u0627\u0644\u06cc\u06ba \u0627\u06cc\u06a9 \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u0627\u0648\u0631 \u0686\u0646\u062f \u0633\u062e\u062a \u06a9\u0648\u0688 \u0634\u062f\u06c1 \u0686\u06cc\u06a9\u0648\u06ba \u0633\u06d2 \u0645\u0646\u0633\u0644\u06a9 \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0644\u0627 \u0645\u0631\u062d\u0644\u06c1 \u062a\u0634\u062e\u06cc\u0635\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0627\u0635\u0648\u0644\u0648\u06ba \u0633\u06d2 \u0627\u0644\u06af \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u062c\u0633 \u0633\u06d2 \u0627\u06cc\u06a9 \u06c1\u06cc \u0627\u0646\u062c\u0646 \u06a9\u0648 \u0645\u062e\u062a\u0644\u0641 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u0645\u0644\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0645\u0642\u0635\u062f \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u06c1\u0645 \u06c1\u0631 \u0627\u06cc\u06a9 \u0627\u0635\u0648\u0644 \u06a9\u0648 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u0628\u06cc\u0627\u0646 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba: <code>Constraint<t\/><\/code>. \u06c1\u0631 \u0631\u06a9\u0627\u0648\u0679 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0646\u0641\u0631\u062f \u0646\u0627\u0645\u060c \u0634\u062f\u062a\u060c \u0645\u0648\u0688\u060c \u0627\u0648\u0631 \u062a\u0634\u062e\u06cc\u0635 \u06a9\u0627 \u0641\u0646\u06a9\u0634\u0646 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u06c1\u06cc\u06ba <code>OperationalSpec<t\/><\/code> \u06cc\u06c1 \u067e\u06be\u0631 \u0627\u0646 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0627 \u0645\u062c\u0645\u0648\u0639\u06c1 \u0628\u0646 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-typescript\">type Constraint<t> = {\n  name: string;\n  severity: Severity;\n  mode: ConstraintMode;\n  evaluate(\n    evidence: T\n  ): ConstraintStatus;\n};\n\ntype OperationalSpec<t> = {\n  name: string;\n  constraints: Constraint<t>[];\n};\n<\/t><\/t><\/t><\/code><\/pre>\n<p>\u067e\u06be\u0631:<\/p>\n<pre><code class=\"language-typescript\">function evaluateConformance<t>(\n  spec: OperationalSpec<t>,\n  evidence: T\n): ConstraintResult[] {\n  return spec.constraints.map(\n    (constraint) => ({\n      name: constraint.name,\n      status:\n        constraint.evaluate(evidence),\n      severity:\n        constraint.severity,\n      mode:\n        constraint.mode,\n    })\n  );\n}\n<\/t><\/t><\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u062a\u0635\u0631\u06cc\u062d \u0627\u0646 \u0627\u0634\u06cc\u0627\u0621 \u06a9\u06cc \u0645\u0644\u06a9\u06cc\u062a \u0631\u06a9\u06be\u062a\u06cc \u06c1\u06d2 \u062c\u0646 \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0646\u062a\u0627\u0626\u062c \u062c\u0645\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u0646\u06c1\u06cc\u06ba \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0631 \u0631\u06a9\u0627\u0648\u0679 \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0622\u0633\u0627\u0646\u06cc \u0633\u06d2 \u062a\u0645\u0627\u0645 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635 \u06a9\u06d2 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062d\u0627\u0644\u062a\u060c \u0634\u062f\u062a \u0627\u0648\u0631 \u0645\u0648\u0688 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u062a\u0634\u062e\u06cc\u0635 \u06a9\u06d2 \u0627\u0646\u062c\u0646 \u06a9\u0648 \u0639\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0628\u06a9\u06c1 \u062a\u0635\u0631\u06cc\u062d \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0642\u0648\u0627\u0639\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u0630\u0645\u06c1 \u062f\u0627\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u06a9\u06c1 <code>expected<\/code> \u0627\u0648\u0631 <code>observed<\/code> \u0627\u06af\u0631\u0686\u06c1 \u0627\u0633 \u06a9\u0645 \u0633\u06d2 \u06a9\u0645 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba \u0641\u06cc\u0644\u0688\u0632 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u06c1\u06cc\u06ba\u060c \u067e\u0631\u0648\u0688\u06a9\u0634\u0646 \u0633\u0633\u0679\u0645 \u0627\u0646 \u06a9\u0648 \u0622\u0628\u0627\u062f \u06a9\u0631\u06d2 \u06af\u0627 \u06cc\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0634\u0648\u0627\u06c1\u062f \u06a9\u0627 \u062d\u0648\u0627\u0644\u06c1 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06d2 \u06af\u0627 \u062a\u0627\u06a9\u06c1 \u062d\u062a\u0645\u06cc \u0641\u06cc\u0635\u0644\u06c1 \u0642\u0627\u0628\u0644 \u0648\u0636\u0627\u062d\u062a \u0627\u0648\u0631 \u0642\u0627\u0628\u0644 \u0633\u0645\u0627\u0639\u062a \u06c1\u0648\u06d4<\/p>\n<h2 id=\"heading-calculate-a-conformance-summary-carefully\">\u0627\u067e\u0646\u06cc \u0645\u0646\u0627\u0633\u0628\u06cc\u062a \u06a9\u06d2 \u062e\u0644\u0627\u0635\u06d2 \u06a9\u0627 \u0627\u062d\u062a\u06cc\u0627\u0637 \u0633\u06d2 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0646\u062a\u0627\u0626\u062c \u0645\u0641\u06cc\u062f \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a \u0627\u06cc\u06a9 \u062e\u0644\u0627\u0635\u06c1 \u0636\u0631\u0648\u0631\u06cc \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-typescript\">type ConformanceSummary = {\n  total: number;\n  passed: number;\n  failed: number;\n  unknown: number;\n  conformant: boolean;\n};\n<\/code><\/pre>\n<p>\u067e\u06be\u0631:<\/p>\n<pre><code class=\"language-typescript\">function summarize(\n  results: ConstraintResult[]\n): ConformanceSummary {\n  const required =\n    results.filter(\n      (result) =>\n        result.mode === \"REQUIRED\"\n    );\n\n  const passed =\n    results.filter(\n      (result) =>\n        result.status === \"PASS\"\n    ).length;\n\n  const failed =\n    results.filter(\n      (result) =>\n        result.status === \"FAIL\"\n    ).length;\n\n  const unknown =\n    results.filter(\n      (result) =>\n        result.status === \"UNKNOWN\"\n    ).length;\n\n  const conformant =\n    required.every(\n      (result) =>\n        result.status === \"PASS\"\n    );\n\n  return {\n    total: results.length,\n    passed,\n    failed,\n    unknown,\n    conformant,\n  };\n}\n<\/code><\/pre>\n<p>\u0627\u0628\u060c \u0645\u062c\u0645\u0648\u0639\u06cc \u062a\u0639\u0645\u06cc\u0644 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u062a\u0645\u0627\u0645 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0646\u0648\u0679 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u0627\u0633 \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u06d4 <code>UNKNOWN<\/code>: \u06a9\u06cc\u0648\u0646\u06a9\u06c1 <code>every()<\/code> \u0631\u06cc\u0627\u0633\u062a \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0644\u0627\u0632\u0645\u06cc \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 <code>PASS<\/code>\u06af\u0645\u0634\u062f\u06c1 \u062b\u0628\u0648\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0637\u0644\u0648\u0628\u06c1 \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0645\u062c\u0645\u0648\u0639\u06cc \u0646\u062a\u06cc\u062c\u06c1 \u06a9\u0648 \u067e\u0627\u0633 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0628\u062c\u0627\u0626\u06d2 \u063a\u0644\u0637 \u0642\u0631\u0627\u0631 \u062f\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u0631\u067e\u0648\u0631\u0679 \u0645\u06cc\u06ba \u0645\u0634\u0627\u0648\u0631\u062a\u06cc \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u0627\u0628 \u0628\u06be\u06cc \u0638\u0627\u06c1\u0631 \u06c1\u0648\u06ba \u06af\u06cc\u06d4 \u0648\u06c1 \u062d\u062a\u0645\u06cc \u0641\u06cc\u0635\u0644\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u06d2\u06d4<\/p>\n<h2 id=\"heading-why-a-single-score-can-be-dangerous\">\u0627\u06cc\u06a9 \u06c1\u06cc \u0633\u06a9\u0648\u0631 \u06a9\u06cc\u0648\u06ba \u062e\u0637\u0631\u0646\u0627\u06a9 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u0648\u0627\u062d\u062f \u0633\u06a9\u0648\u0631 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u0626\u06d2 \u067e\u0631\u06a9\u0634\u0634 \u06c1\u06d2.<\/p>\n<pre><code class=\"language-text\">conformance = 92%\n<\/code><\/pre>\n<p>\u0644\u06cc\u06a9\u0646 \u06cc\u06c1 \u06af\u0645\u0631\u0627\u06c1 \u06a9\u0646 \u06c1\u06d2\u06d4<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">9 low-risk constraints pass\n1 critical security constraint fails\n<\/code><\/pre>\n<p>\u0628\u0648\u0644\u06cc \u0633\u06a9\u0648\u0631 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">90% conformant\n<\/code><\/pre>\n<p>\u0639\u0645\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u06cc\u06c1 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0646\u0627\u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u06c1\u06d2.<\/p>\n<p>\u0627\u067e\u0646\u06d2 \u0633\u06a9\u0648\u0631 \u06a9\u0627 \u062d\u0633\u0627\u0628 \u0644\u06af\u0627\u062a\u06d2 \u0648\u0642\u062a\u060c \u0622\u067e \u06a9\u0648 \u06cc\u06c1 \u0631\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2:<\/p>\n<pre><code class=\"language-text\">constraint-level results\nseverity\nrequired\/advisory status\nunknown evidence\nfailure reasons\n<\/code><\/pre>\n<p>\u0622\u067e \u0627\u067e\u0646\u06d2 \u0627\u0633\u06a9\u0648\u0631 \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 \u0622\u067e \u06a9\u0648 \u062b\u0628\u0648\u062a \u0646\u06c1\u06cc\u06ba \u0645\u0679\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<h2 id=\"heading-preserve-the-evidence-behind-the-verdict\">\u0627\u067e\u0646\u06d2 \u0641\u06cc\u0635\u0644\u0648\u06ba \u06a9\u06d2 \u067e\u06cc\u0686\u06be\u06d2 \u062b\u0628\u0648\u062a \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0631\u06a9\u06be\u06cc\u06ba<\/h2>\n<p>\u062a\u0639\u0645\u06cc\u0644 \u06a9\u06d2 \u0646\u062a\u0627\u0626\u062c \u06a9\u0627 \u0635\u0631\u0641 \u06cc\u06c1 \u0645\u0637\u0644\u0628 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u06a9\u06c1: <code>FAIL<\/code>. \u0627\u0633 \u062d\u06a9\u0645 \u06a9\u06d2 \u0645\u0648\u0627\u062f \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/p>\n<pre><code class=\"language-json\">{\n  \"constraint\": \"minimum-replicas\",\n  \"expected\": \">= 3\",\n  \"observed\": 2,\n  \"status\": \"FAIL\",\n  \"severity\": \"CRITICAL\"\n}\n<\/code><\/pre>\n<p>\u0627\u0633 \u0637\u0631\u062d\u060c \u06a9\u0648\u0626\u06cc \u0627\u0633 \u0637\u0631\u062d \u06a9\u0686\u06be \u062c\u0648\u0627\u0628 \u062f\u06d2 \u0633\u06a9\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">What did we expect?\nWhat did we observe?\nWhich rule was applied?\nWhy did it fail?\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u062e\u0627\u0635 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06c1\u0645 \u06c1\u06d2 \u062c\u0628 \u062a\u0639\u0645\u06cc\u0644 \u06a9\u0627 \u0641\u06cc\u0635\u0644\u06c1 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u062d\u0627\u0644\u06cc \u06a9\u0648 \u0645\u062a\u062d\u0631\u06a9 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-conformance-should-be-reproducible\">\u062a\u0639\u0645\u06cc\u0644 \u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2\u06d4<\/h2>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u06a9\u0627\u0645 10:00 \u0628\u062c\u06d2 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u063a\u0644\u0637\u06cc \u06a9\u06cc \u0634\u0631\u062d 10:01 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">0.6%\n<\/code><\/pre>\n<p>14:00 \u067e\u0631\u060c \u0622\u067e \u06a9\u0627 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0688\u0633\u067e\u0644\u06d2 \u06a9\u0631\u06d2 \u06af\u0627:<\/p>\n<pre><code class=\"language-text\">2.1%\n<\/code><\/pre>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u067e\u0686\u06be\u0644\u06d2 \u06a9\u0627\u0645 \u06a9\u0627 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0633\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0646\u062a\u0627\u0626\u062c \u0628\u0631\u0622\u0645\u062f \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u0633 \u0644\u06cc\u06d2\u060c \u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u06cc \u06a9\u06be\u0691\u06a9\u06cc \u0633\u06d2 \u0645\u062a\u0639\u0644\u0642 \u0634\u0648\u0627\u06c1\u062f \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0645\u0646\u0627\u0633\u0628\u06cc\u062a \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u06cc\u0627 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 <strong>\u0648\u0646\u0688\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba<\/strong>\u0627\u0633 \u0633\u06d2 \u0645\u0631\u0627\u062f \u0648\u06c1 \u0645\u062f\u062a \u06c1\u06d2 \u062c\u0633 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0646\u0627\u0641\u0630 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0641\u0648\u0631\u06cc \u0627\u062b\u0631\u0627\u062a \u06a9\u06cc \u062a\u0635\u062f\u06cc\u0642 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631\u060c 10:00 \u067e\u0631 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062a\u0639\u06cc\u0646\u0627\u062a\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e 10:00 \u0627\u0648\u0631 10:05 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u062c\u0645\u0639 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0679\u06cc\u0644\u06cc \u0645\u06cc\u0679\u0631\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0627\u0633 \u06a9\u06cc \u0635\u062d\u062a \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0628\u062c\u0627\u0626\u06d2 \u0627\u0633 \u06a9\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u0686\u06be \u06af\u06be\u0646\u0679\u0648\u06ba \u0628\u0639\u062f \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0645\u06cc\u06ba \u062f\u06cc\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<p>\u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u0648 \u0627\u0633 \u062e\u0627\u0635 \u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u062f\u0633\u062a\u06cc\u0627\u0628 \u0634\u0648\u0627\u06c1\u062f \u0633\u06d2 \u062c\u0648\u0691\u0646\u0627 \u06c1\u06d2\u06d4 \u0628\u0635\u0648\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u0628\u0639\u062f \u0645\u06cc\u06ba \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644\u06cc\u0627\u06ba \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u06a9\u06d2 \u0638\u0627\u06c1\u0631\u06cc \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u0633\u0627\u0628\u0642\u06c1 \u200b\u200b\u0637\u0648\u0631 \u067e\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062f\u0648\u0628\u0627\u0631\u06c1 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">specification version\nexecution ID\nevidence snapshot\nevaluation rules\ntimestamp\n<\/code><\/pre>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631:<\/p>\n<pre><code class=\"language-json\">{\n  \"executionId\": \"deploy-812\",\n  \"specVersion\": \"3\",\n  \"evaluatedAt\": \"2026-10-06T10:01:00Z\",\n  \"evidence\": {\n    \"version\": \"v42\",\n    \"replicas\": 3,\n    \"errorRate\": 0.006,\n    \"p95LatencyMs\": 290\n  }\n}\n<\/code><\/pre>\n<p>\u0627\u0628 \u0641\u06cc\u0635\u0644\u06c1 \u0628\u0639\u062f \u0645\u06cc\u06ba \u062f\u0648\u0628\u0627\u0631\u06c1 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-this-applies-to-multiple-executors\">\u06cc\u06c1 \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631\u0632 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u0641\u0631\u0636 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u062f\u0648 \u0642\u0627\u0628\u0644 \u0639\u0645\u0644 \u067e\u0631\u0648\u06af\u0631\u0627\u0645 \u0627\u06cc\u06a9 \u06c1\u06cc \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u067e\u0631 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 A:<\/p>\n<pre><code class=\"language-text\">version      PASS\nreplicas     PASS\nerror-rate   PASS\nlatency      PASS\n<\/code><\/pre>\n<p>\u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u0628\u06cc:<\/p>\n<pre><code class=\"language-text\">version      PASS\nreplicas     FAIL\nerror-rate   PASS\nlatency      PASS\n<\/code><\/pre>\n<p>\u0645\u0632\u06cc\u062f \u0633\u0648\u0627\u0644\u0627\u062a \u0646\u06c1\u06cc\u06ba:<\/p>\n<blockquote>\n<p>\u06a9\u0648\u0646 \u0633\u0627 \u0646\u0627\u0641\u0630 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0628\u06c1\u062a\u0631 \u06c1\u06d2\u061f<\/p>\n<\/blockquote>\n<p>\u0641\u0648\u0631\u06cc \u0633\u0648\u0627\u0644\u0627\u062a \u06cc\u06c1 \u06c1\u06cc\u06ba:<\/p>\n<blockquote>\n<p>\u06a9\u0648\u0646 \u0633\u06d2 \u067e\u06be\u0627\u0646\u0633\u06cc\u0648\u06ba \u0646\u06d2 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u06cc\u0627\u061f<\/p>\n<\/blockquote>\n<p>\u06c1\u0631 \u0627\u06cc\u06a9 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u0627\u0633 \u06a9\u0627 \u062c\u0648\u0627\u0628 \u0627\u06cc\u06a9 \u06c1\u06cc \u0645\u0648\u0632\u0648\u06ba \u062a\u062e\u0645\u06cc\u0646\u06c1 \u0644\u06af\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u062a\u06cc\u0627\u0631 \u06a9\u0631\u062f\u06c1 \u062b\u0628\u0648\u062a \u067e\u0631 \u0686\u0644\u0627 \u06a9\u0631 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0646\u0631\u062f\u062c\u06cc\u06a9\u0631\u0646 \u0627\u0648\u0631 \u062a\u0634\u062e\u06cc\u0635 \u06a9\u06d2 \u0642\u0648\u0627\u0639\u062f \u0648\u06c1\u06cc \u0631\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0635\u0631\u0641 \u062b\u0628\u0648\u062a \u0628\u062f\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0646\u062f\u0631\u062c\u06c1 \u0628\u0627\u0644\u0627 \u0645\u062b\u0627\u0644 \u0645\u06cc\u06ba\u060c \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 A \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u062a\u0645\u0627\u0645 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2: <code>PASS<\/code>. \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u0628\u06cc \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627\u060c \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0646\u0642\u0644 \u06a9\u06cc \u0631\u06a9\u0627\u0648\u0679 \u06a9\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2: <code>FAIL<\/code>. \u06cc\u06c1 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0634\u062a\u0631\u06a9\u06c1 \u0628\u0646\u06cc\u0627\u062f \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0628\u063a\u06cc\u0631 \u062f\u0648 \u0639\u0645\u0644\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u06d2 \u062f\u0627\u062e\u0644\u06cc \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2\u06d4<\/p>\n<p>\u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u06a9\u06cc \u06a9\u0627\u0631\u06a9\u0631\u062f\u06af\u06cc \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u0641\u0679 \u0631\u06cc\u0679\u060c \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u06d2 \u0632\u0645\u0631\u06d2\u060c \u062a\u0627\u062e\u06cc\u0631\u060c \u0644\u0627\u06af\u062a\u060c \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u06cc \u0641\u0631\u06cc\u06a9\u0648\u0626\u0646\u0633\u06cc\u060c \u0627\u0648\u0631 \u0646\u0627\u0645\u0639\u0644\u0648\u0645 \u062b\u0628\u0648\u062a \u06a9\u06cc \u0634\u0631\u062d \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u062a\u0627\u06c1\u0645\u060c \u0645\u0646\u0627\u0633\u0628\u06cc\u062a \u0627\u0628 \u0628\u06be\u06cc \u0645\u0639\u0627\u06c1\u062f\u06c1 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-this-applies-to-ai-agents\">\u06cc\u06c1 AI \u0627\u06cc\u062c\u0646\u0679\u0648\u06ba \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0644\u0627\u06af\u0648 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>AI \u0627\u06cc\u062c\u0646\u0679 \u0648\u0627\u0636\u062d \u062a\u0639\u0645\u06cc\u0644 \u06a9\u0648 \u062e\u0627\u0635 \u0627\u06c1\u0645\u06cc\u062a \u062f\u06cc\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0645\u0634\u06cc\u0631\u0627\u0646 \u0627\u06cc\u06a9 \u06c1\u06cc \u0645\u0642\u0635\u062f \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062e\u062a\u0644\u0641 \u0645\u0646\u0635\u0648\u0628\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-text\">Agent execution 1:\nscale\ndeploy\nobserve\nroute\n\nAgent execution 2:\ndeploy canary\nobserve\nexpand\n\nAgent execution 3:\ncreate parallel environment\nswitch traffic\n<\/code><\/pre>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u06c1\u0631 \u0628\u0627\u0631 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0645\u0646\u0635\u0648\u0628\u06c1 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0633 \u0644\u06cc\u06d2 \u0645\u0631\u062d\u0644\u06c1 \u0648\u0627\u0631 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u0646\u0627 \u0632\u06cc\u0627\u062f\u06c1 \u0645\u0641\u06cc\u062f \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u06cc\u06a9 \u0631\u0646 \u0645\u06cc\u06ba \u06a9\u06cc\u0646\u0631\u06cc \u0631\u0648\u0644 \u0622\u0624\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06cc \u0631\u0646 \u0645\u06cc\u06ba \u0645\u062a\u0648\u0627\u0632\u06cc \u0645\u0627\u062d\u0648\u0644 \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062f\u0648\u0646\u0648\u06ba \u0627\u06cc\u06a9 \u06c1\u06cc \u0645\u0642\u0635\u062f \u06a9\u0648 \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0628 \u0628\u06be\u06cc \u062f\u0631\u0633\u062a \u0637\u0631\u06cc\u0642\u06d2 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0648 \u0686\u06cc\u0632 \u0645\u0633\u062a\u062d\u06a9\u0645 \u0631\u06c1\u062a\u06cc \u06c1\u06d2 \u0648\u06c1 \u062a\u0635\u0631\u06cc\u062d \u06c1\u06d2\u06d4 \u0627\u06c1\u062f\u0627\u0641\u060c \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062b\u0628\u0648\u062a \u06a9\u06d2 \u062a\u0642\u0627\u0636\u06d2 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u06af\u0631 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648\u0626\u06cc \u0645\u062e\u062a\u0644\u0641 \u0631\u0627\u0633\u062a\u06c1 \u0686\u0646\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06c1\u0631 \u0639\u0645\u0644 \u06a9\u06d2 \u0628\u0639\u062f\u060c \u0646\u0638\u0627\u0645 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0631\u06cc\u0627\u0633\u062a \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u062b\u0628\u0648\u062a \u062c\u0645\u0639 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u06be\u0631 \u0627\u0633 \u062b\u0628\u0648\u062a \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u062f\u06cc\u06af\u0631 \u062a\u0645\u0627\u0645 \u0631\u0646 \u0645\u06cc\u06ba \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0627\u0633\u06cc \u0648\u0636\u0627\u062d\u062a\u0648\u06ba \u0633\u06d2 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0645\u0646\u0635\u0648\u0628\u06d2 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0628\u06a9\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06cc \u0628\u06cc\u0631\u0648\u0646\u06cc \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-text\">Specification\n      \u2193\nAI Agent\n      \u2193\nDynamic Plan\n      \u2193\nExecution\n      \u2193\nEvidence\n      \u2193\nConformance\n<\/code><\/pre>\n<p>\u0627\u06cc\u062c\u0646\u0679 \u06a9\u0627\u0645 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0648\u0627\u062d\u062f \u0627\u062e\u062a\u06cc\u0627\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0627\u0633 \u0637\u0631\u062d \u06a9\u06d2 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0646\u06d2 \u0627\u067e\u0646\u06d2 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0646\u062a\u0627\u0626\u062c \u062d\u0627\u0635\u0644 \u06a9\u06cc\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-a-small-end-to-end-example\">\u0686\u06be\u0648\u0679\u06cc \u0645\u062b\u0627\u0644 \u0633\u06d2 \u0622\u062e\u0631 \u062a\u06a9<\/h2>\n<p>\u062b\u0628\u0648\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u0633\u06d2 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">type DeploymentEvidence = {\n  version?: string;\n  replicas?: number;\n  errorRate?: number;\n  p95LatencyMs?: number;\n};\n<\/code><\/pre>\n<p>\u0627\u0628 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">const constraints:\n  Constraint<deploymentevidence>[] = [\n    {\n      name: \"version\",\n      severity: \"CRITICAL\",\n      mode: \"REQUIRED\",\n      evaluate: (evidence) => {\n        if (!evidence.version) {\n          return \"UNKNOWN\";\n        }\n\n        return (\n          evidence.version === \"v42\"\n        )\n          ? \"PASS\"\n          : \"FAIL\";\n      },\n    },\n    {\n      name: \"replicas\",\n      severity: \"CRITICAL\",\n      mode: \"REQUIRED\",\n      evaluate: (evidence) => {\n        if (\n          evidence.replicas === undefined\n        ) {\n          return \"UNKNOWN\";\n        }\n\n        return (\n          evidence.replicas >= 3\n        )\n          ? \"PASS\"\n          : \"FAIL\";\n      },\n    },\n    {\n      name: \"error-rate\",\n      severity: \"CRITICAL\",\n      mode: \"REQUIRED\",\n      evaluate: (evidence) => {\n        if (\n          evidence.errorRate === undefined\n        ) {\n          return \"UNKNOWN\";\n        }\n\n        return (\n          evidence.errorRate <= 0.01\n        )\n          ? \"PASS\"\n          : \"FAIL\";\n      },\n    },\n    {\n      name: \"latency-target\",\n      severity: \"WARNING\",\n      mode: \"ADVISORY\",\n      evaluate: (evidence) => {\n        if (\n          evidence.p95LatencyMs === undefined\n        ) {\n          return \"UNKNOWN\";\n        }\n\n        return (\n          evidence.p95LatencyMs <= 350\n        )\n          ? \"PASS\"\n          : \"FAIL\";\n      },\n    },\n  ];\n<\/deploymentevidence><\/code><\/pre>\n<p>\u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-typescript\">const deploymentSpec:\n  OperationalSpec<deploymentevidence> = {\n    name: \"deploy-orders-v42\",\n    constraints,\n  };\n<\/deploymentevidence><\/code><\/pre>\n<p>\u0627\u0646\u062f\u0627\u0632\u06c1 \u0644\u06af\u0627\u0646\u0627:<\/p>\n<pre><code class=\"language-typescript\">const evidence:\n  DeploymentEvidence = {\n    version: \"v42\",\n    replicas: 3,\n    errorRate: 0.004,\n    p95LatencyMs: 370,\n  };\n\nconst results =\n  evaluateConformance(\n    deploymentSpec,\n    evidence\n  );\n\nconst summary =\n  summarize(results);\n<\/code><\/pre>\n<p>\u0646\u062a\u0627\u0626\u062c \u062f\u0631\u062c \u0630\u06cc\u0644 \u06c1\u06cc\u06ba:<\/p>\n<pre><code class=\"language-text\">version          PASS     REQUIRED\nreplicas         PASS     REQUIRED\nerror-rate       PASS     REQUIRED\nlatency-target   FAIL     ADVISORY\n<\/code><\/pre>\n<p>\u0627\u0648\u0631:<\/p>\n<pre><code class=\"language-text\">conformant = true\n<\/code><\/pre>\n<p>\u062a\u0645\u0627\u0645 \u0645\u0637\u0644\u0648\u0628\u06c1 \u0631\u06a9\u0627\u0648\u0679\u06cc\u06ba \u06af\u0632\u0631 \u0686\u06a9\u06cc \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc \u06a9\u0648 \u0627\u0628 \u0628\u06be\u06cc \u0627\u06cc\u06a9 \u0627\u0646\u062a\u0628\u0627\u06c1 \u062f\u06a9\u06be\u0627\u0646\u0627 \u0686\u0627\u06c1\u0626\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u062a\u062c\u0648\u06cc\u0632 \u06a9\u0631\u062f\u06c1 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0627 \u06c1\u062f\u0641 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-a-practical-conformance-workflow\">\u0639\u0645\u0644\u06cc \u06a9\u0646\u0641\u0627\u0631\u0645\u0646\u0633 \u0648\u0631\u06a9 \u0641\u0644\u0648<\/h2>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0645\u0648\u062c\u0648\u062f\u06c1 \u0646\u0638\u0627\u0645 \u0645\u06cc\u06ba \u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u06cc \u062a\u0634\u062e\u06cc\u0635 \u06a9\u0648 \u0645\u062a\u0639\u0627\u0631\u0641 \u06a9\u0631\u0627\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<ol>\n<li>\n<p>\u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0627\u06cc\u06a9 \u06a9\u0627\u0645 \u0645\u0646\u062a\u062e\u0628 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0628\u06cc\u0627\u0646 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0636\u0631\u0648\u0631\u06cc\u0627\u062a \u06cc\u0627 \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u06cc \u062f\u0631\u062c\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0634\u062f\u062a \u06a9\u0648 \u062a\u0641\u0648\u06cc\u0636 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062b\u0628\u0648\u062a \u06a9\u06d2 \u0645\u0627\u0688\u0644 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0641\u06cc\u0635\u0644\u06c1 \u06a9\u0631\u06cc\u06ba \u06a9\u06c1 \u062b\u0628\u0648\u062a \u063a\u0627\u0626\u0628 \u06c1\u0648\u0646\u06d2 \u06a9\u0627 \u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>UNKNOWN<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0631\u06a9\u0627\u0648\u0679\u0648\u06ba \u06a9\u0627 \u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u06a9 \u062e\u0644\u0627\u0635\u06c1 \u0644\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0634\u0648\u0627\u06c1\u062f \u06a9\u06d2 \u0627\u0633\u0646\u06cc\u067e \u0634\u0627\u0679\u0633 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u06d2 \u0648\u0631\u0698\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0627\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0627 \u062f\u0648\u0628\u0627\u0631\u06c1 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u06ba \u062c\u0648 \u063a\u06cc\u0631 \u0645\u062a\u0648\u0642\u0639 \u06cc\u0627 \u0646\u0627\u0645\u0639\u0644\u0648\u0645 \u063a\u0644\u0637\u06cc\u0648\u06ba \u06a9\u0627 \u0633\u0628\u0628 \u0628\u0646 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ol>\n<p>\u0635\u0631\u0641 \u0646\u062a\u0627\u0626\u062c \u06a9\u0648 \u067e\u0627\u0633 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u0626\u06d2 \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u06a9\u0648 \u067e\u0627\u0646\u06cc \u0646\u06c1 \u062f\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-what-conformance-cant-prove\">\u0642\u0627\u0628\u0644\u06cc\u062a \u062b\u0627\u0628\u062a \u06a9\u0631\u0646\u06d2 \u0645\u06cc\u06ba \u0646\u0627\u06a9\u0627\u0645\u06cc\u06d4<\/h2>\n<p>\u0645\u0646\u0627\u0633\u0628\u06cc\u062a \u0622\u067e \u06a9\u0648 \u0628\u062a\u0627\u062a\u06cc \u06c1\u06d2:<\/p>\n<blockquote>\n<p>\u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u0634\u0648\u0627\u06c1\u062f \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u067e\u0631 \u067e\u0648\u0631\u0627 \u0627\u062a\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/blockquote>\n<p>\u06c1\u0645 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0622\u067e \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u0628\u062a\u0627 \u0633\u06a9\u062a\u06d2:<\/p>\n<blockquote>\n<p>\u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u062f\u0631\u0633\u062a \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/blockquote>\n<p>\u062a\u0635\u0631\u06cc\u062d \u063a\u0644\u0637 \u06c1\u0648 \u0633\u06a9\u062a\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u062b\u0628\u0648\u062a \u0628\u06be\u06cc \u063a\u0644\u0637 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06c1\u0630\u0627\u060c \u0645\u0646\u0627\u0633\u0628\u06cc\u062a \u067e\u0631 \u0645\u0646\u062d\u0635\u0631 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">specification quality\nevidence quality\nevaluation correctness\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0627\u06cc\u06a9 \u062a\u0635\u062f\u06cc\u0642\u06cc \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06c1\u06d2\u060c \u0642\u0637\u0639\u06cc \u0633\u0686\u0627\u0626\u06cc \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-from-execution-success-to-verifiable-operations\">\u06a9\u0627\u0645\u06cc\u0627\u0628 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u0633\u06d2 \u0644\u06d2 \u06a9\u0631 \u0642\u0627\u0628\u0644 \u062a\u0635\u062f\u06cc\u0642 \u06a9\u0627\u0631\u0631\u0648\u0627\u0626\u06cc\u0648\u06ba \u062a\u06a9<\/h2>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u0622\u0679\u0648\u0645\u06cc\u0634\u0646 \u0627\u06a9\u062b\u0631 \u06cc\u06c1\u0627\u06ba \u062e\u062a\u0645 \u06c1\u0648 \u062c\u0627\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-text\">execute\n\u2193\nsuccess \/ failure\n<\/code><\/pre>\n<p>\u0645\u0637\u0627\u0628\u0642\u062a \u067e\u0631 \u0645\u0628\u0646\u06cc \u0645\u0627\u0688\u0644 \u0645\u0632\u06cc\u062f \u0688\u06be\u0627\u0646\u0686\u06c1 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-text\">Specification\n\u2193\nExecutor\n\u2193\nExecution\n\u2193\nEvidence\n\u2193\nConstraint Evaluation\n\u2193\nConformance\n<\/code><\/pre>\n<p>\u0627\u0628 \u0622\u067e \u067e\u0648\u0686\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba:<\/p>\n<blockquote>\n<p>\u06a9\u0646 \u062a\u0642\u0627\u0636\u0648\u06ba \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u061f<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u06a9\u0648\u0646 \u0633\u0627 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648\u0627\u061f<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u06a9\u06cc\u0627 \u0627\u0646\u062f\u0627\u0632\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u061f<\/p>\n<\/blockquote>\n<blockquote>\n<p>\u06a9\u0648\u0646 \u0633\u06d2 \u0634\u0648\u0627\u06c1\u062f \u0641\u06cc\u0635\u0644\u06d2 \u06a9\u06cc \u062a\u0627\u0626\u06cc\u062f \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u061f<\/p>\n<\/blockquote>\n<p>\u0627\u06af\u0631 \u0633\u0633\u0679\u0645 \u0644\u0627\u0646\u0686 \u06a9\u06d2 \u0641\u0648\u0631\u0627\u064b \u0628\u0639\u062f \u0645\u0648\u0632\u0648\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0627\u0628 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0627\u06cc\u06a9 \u0628\u06cc\u0633 \u0644\u0627\u0626\u0646 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0628\u06cc\u0633 \u0644\u0627\u0626\u0646 \u0633\u06d2\u060c \u0622\u067e \u0648\u0642\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u0638\u0627\u0645 \u06a9\u0627 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06be\u0631 \u0633\u0648\u0627\u0644 \u067e\u0648\u0686\u06be\u06cc\u06ba\u06d4<\/p>\n<blockquote>\n<p>\u06a9\u06cc\u0627 \u06c1\u0648\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06a9\u0627\u0645 \u067e\u06c1\u0644\u06d2 \u06c1\u06cc \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u062d\u0642\u06cc\u0642\u062a \u0648\u0636\u0627\u062d\u062a\u0648\u06ba \u0633\u06d2 \u06c1\u0679\u0646\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0631 \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u061f<\/p>\n<\/blockquote>\n<p>\u06cc\u06c1 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0688\u0631\u0641\u0679 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>\u0627\u06a9\u06cc\u0644\u06d2 \u0627\u06cc\u06a9 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0639\u0645\u0644\u062f\u0627\u0631 \u06c1\u0648\u0646\u0627 \u06a9\u0627\u0641\u06cc \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0633\u0628\u0632 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646\u0632 \u06cc\u0627 \u0645\u06a9\u0645\u0644 \u0634\u062f\u06c1 \u0627\u06cc\u062c\u0646\u0679 \u06a9\u06d2 \u0645\u0646\u0635\u0648\u0628\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06be\u06cc \u06cc\u06c1\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06c1\u0645 \u0628\u0627\u062a \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u0646\u062a\u06cc\u062c\u06d2 \u0645\u06cc\u06ba \u0622\u0646\u06d2 \u0648\u0627\u0644\u0627 \u0646\u0638\u0627\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0622\u067e \u06a9\u0648 \u062a\u06cc\u0646 \u0686\u06cc\u0632\u0648\u06ba \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2:<\/p>\n<pre><code class=\"language-text\">Specification\nEvidence\nEvaluation\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0645\u0641\u06cc\u062f \u0641\u0679\u0646\u0633 \u0645\u0627\u0688\u0644 \u06a9\u0648 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2:<\/p>\n<pre><code class=\"language-text\">constraint-level results\nPASS \/ FAIL \/ UNKNOWN\nseverity\nrequired vs advisory rules\nobserved values\nexpected values\nevidence snapshots\nspecification version\n<\/code><\/pre>\n<p>\u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u06a9\u0627\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0634\u0648\u0627\u06c1\u062f \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648\u0627\u060c \u0627\u0648\u0631 \u062a\u0635\u0631\u06cc\u062d \u0627\u0633 \u0628\u0627\u062a \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2 \u062a\u06be\u0627\u06d4<\/p>\n<p>\u0645\u0637\u0627\u0628\u0642\u062a \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u0646\u06d2 \u0648\u0627\u0644\u0627 \u067e\u06be\u0631 \u062f\u0648\u0646\u0648\u06ba \u06a9\u0627 \u0645\u0648\u0627\u0632\u0646\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u06cc\u06c1 \u0631\u0648\u0627\u06cc\u062a\u06cc \u0622\u0679\u0648\u0645\u06cc\u0634\u0646 \u0627\u0648\u0631 \u062a\u06cc\u0632\u06cc \u0633\u06d2 \u062e\u0648\u062f \u0645\u062e\u062a\u0627\u0631 \u0646\u0638\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0645\u0636\u0628\u0648\u0637 \u0628\u0646\u06cc\u0627\u062f \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0644\u06cc\u06a9\u0646 \u06a9\u0633\u06cc \u062e\u0627\u0635 \u0645\u0642\u0627\u0645 \u067e\u0631 \u0645\u0648\u0632\u0648\u06ba \u06c1\u0648\u0646\u0627 \u06a9\u06c1\u0627\u0646\u06cc \u06a9\u0627 \u0627\u062e\u062a\u062a\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0633\u0633\u0679\u0645 \u0627\u0628 \u0645\u0648\u0627\u0641\u0642 \u06c1\u0648\u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0628\u0691\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0644\u0627 \u0633\u0648\u0627\u0644 \u06cc\u06c1 \u06c1\u06d2:<\/p>\n<blockquote>\n<p>\u062c\u0628 \u0645\u0634\u0627\u06c1\u062f\u06c1 \u0634\u062f\u06c1 \u062d\u0642\u06cc\u0642\u062a \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u0627\u0631\u0627\u062f\u06d2 \u0633\u06d2 \u0645\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u06be\u0627\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u0622\u067e \u06a9\u0648 \u06a9\u06cc\u0633\u06d2 \u067e\u062a\u06c1 \u0686\u0644\u06d2 \u06af\u0627\u061f<\/p>\n<\/blockquote>\n<p>\u0627\u0633\u06cc \u062c\u06af\u06c1 \u0645\u06cc\u06ba \u0622\u06af\u06d2 \u062c\u0627\u0646\u0627 \u0686\u0627\u06c1\u062a\u0627 \u06c1\u0648\u06ba\u06d4<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u06cc\u06a9 \u067e\u0686\u06be\u0644\u06d2 \u0645\u0636\u0645\u0648\u0646 \u0645\u06cc\u06ba\u060c \u0645\u06cc\u06ba \u0646\u06d2 \u0627\u06cc\u06af\u0632\u06cc\u06a9\u06cc\u0648\u0679\u0631 \u06a9\u06cc \u0622\u0632\u0627\u062f\u06cc \u06a9\u06d2 \u062e\u06cc\u0627\u0644 \u06a9\u06cc \u06a9\u06be\u0648\u062c \u06a9\u06cc \u062a\u06be\u06cc\u060c \u06cc\u0639\u0646\u06cc \u06a9\u06c1 \u0645\u062e\u062a\u0644\u0641 \u0639\u0645\u0644\u062f\u0631\u0622\u0645\u062f \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u06a9\u0648 \u0627\u06cc\u06a9 \u06c1\u06cc \u0622\u067e\u0631\u06cc\u0634\u0646\u0644 \u062a\u0635\u0631\u06cc\u062d\u0627\u062a \u06a9\u0648 \u067e\u0648\u0631\u0627 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u0648\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u06a9\u06cc \u0637\u0631\u0641 \u0633\u06d2 \u0639\u0645\u0644\u062f\u0627\u0631 \u06a9\u06cc \u0622\u0632\u0627\u062f\u06cc\u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0622\u067e\u0631\u06cc\u0679\u0646\u06af \u0648\u0636\u0627\u062d\u062a\u06cc\u06ba \u0645\u0633\u062a\u062d\u06a9\u0645 \u0631\u06c1\u062a\u06cc \u06c1\u06cc\u06ba \u06cc\u06c1\u0627\u06ba \u062a\u06a9 \u06a9\u06c1 \u0627\u06af\u0631 \u06a9\u0627\u0645 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-30693","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/30693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=30693"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/30693\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=30693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=30693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=30693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}