{"id":17342,"date":"2026-07-29T03:45:01","date_gmt":"2026-07-29T07:45:01","guid":{"rendered":"https:\/\/wp.glbgpt.com\/?p=17342"},"modified":"2026-07-29T03:45:12","modified_gmt":"2026-07-29T07:45:12","slug":"codex-vs-claude-code","status":"publish","type":"post","link":"https:\/\/wp.glbgpt.com\/th\/hub\/codex-vs-claude-code","title":{"rendered":"Codex vs Claude Code: \u0e15\u0e31\u0e27\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e15\u0e31\u0e27\u0e44\u0e2b\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e01\u0e31\u0e1a\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13?"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>Codex vs Claude Code \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e2b\u0e32\u0e1c\u0e39\u0e49\u0e0a\u0e19\u0e30\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e41\u0e15\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e44\u0e14\u0e49\u0e17\u0e38\u0e01\u0e27\u0e31\u0e19.<\/strong> \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1f\u0e25\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e44\u0e14\u0e49 \u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e35\u0e48\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e07\u0e32\u0e19 \u0e04\u0e27\u0e32\u0e21\u0e16\u0e35\u0e48\u0e43\u0e19\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c \u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21\u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e15\u0e48\u0e25\u0e30\u0e15\u0e31\u0e27\u0e01\u0e31\u0e1a\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e41\u0e1a\u0e1a\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21 4 \u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 Codex \u0e44\u0e14\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 98\/100 \u0e41\u0e25\u0e30 Claude Code \u0e44\u0e14\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 99\/100 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e14\u0e49\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01 Claude Code \u0e41\u0e2a\u0e14\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e23\u0e13\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e0b\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48 Codex \u0e21\u0e31\u0e01\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e49\u0e27\u0e22\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e41\u0e04\u0e1a\u0e01\u0e27\u0e48\u0e32 \u0e41\u0e25\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e02\u0e47\u0e07\u0e41\u0e01\u0e23\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19\u0e43\u0e19\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 \u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e30\u0e41\u0e19\u0e19\u0e1a\u0e19\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a Python \u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e08\u0e30\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28\u0e1c\u0e39\u0e49\u0e0a\u0e19\u0e30\u0e42\u0e14\u0e22\u0e23\u0e27\u0e21.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e2a\u0e48\u0e27\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e16\u0e39\u0e01\u0e1c\u0e39\u0e01\u0e21\u0e31\u0e14\u0e01\u0e31\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e15\u0e31\u0e27\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1e\u0e34\u0e48\u0e21 GlobalGPT \u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e41\u0e22\u0e01\u0e15\u0e48\u0e32\u0e07\u0e2b\u0e32\u0e01\u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e25\u0e30\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 GlobalGPT \u0e23\u0e27\u0e21\u0e42\u0e21\u0e40\u0e14\u0e25\u0e0a\u0e31\u0e49\u0e19\u0e19\u0e33\u0e01\u0e27\u0e48\u0e32 100 \u0e41\u0e1a\u0e1a \u0e40\u0e0a\u0e48\u0e19 GPT 5.6, Claude Opus 5 \u0e41\u0e25\u0e30 GPT Image 2 \u0e44\u0e27\u0e49\u0e43\u0e19\u0e41\u0e14\u0e0a\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e19\u0e35\u0e49, The <a href=\"https:\/\/www.glbgpt.com\/home\/cli?inviter=hub_content_cli&amp;login=1\">GlobalGPT CLI<\/a>, MCP \u0e41\u0e25\u0e30 Skill routes \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e08\u0e32\u0e01 Codex \u0e2b\u0e23\u0e37\u0e2d Claude Code \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 \u0e01\u0e32\u0e23\u0e27\u0e32\u0e07\u0e41\u0e1c\u0e19 \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e17\u0e33\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u0e2b\u0e23\u0e37\u0e2d\u0e42\u0e21\u0e40\u0e14\u0e25\u0e2d\u0e37\u0e48\u0e19 \u0e46 \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e2b\u0e25\u0e31\u0e01\u0e22\u0e31\u0e07\u0e04\u0e07\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e25\u0e30\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35.<\/p>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"645\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-1024x645.png\" alt=\"\u0e2b\u0e19\u0e49\u0e32\u0e2b\u0e25\u0e31\u0e01\u0e02\u0e2d\u0e07 globalgpt\" class=\"wp-image-19280\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-1024x645.png 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-300x189.png 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-18x11.png 18w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-767x483.png 767w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-1536x967.png 1536w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/glb-2048x1289.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-black-color has-text-color has-background has-link-color wp-element-button\" href=\"https:\/\/www.glbgpt.com\/home?inviter=hub_popup&amp;login=1\" style=\"background:linear-gradient(135deg,rgba(250,183,0,0.55) 0%,rgba(255,106,0,0.66) 96%)\"><strong>\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e41\u0e1a\u0e1a\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e0a\u0e31\u0e49\u0e19\u0e19\u0e33\u0e01\u0e27\u0e48\u0e32 100 \u0e41\u0e1a\u0e1a\u0e1a\u0e19 GlobalGPT<\/strong><\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e19\u0e35\u0e49\u0e23\u0e27\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e41\u0e1c\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23 \u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e41\u0e1a\u0e1a\u0e25\u0e07\u0e21\u0e37\u0e2d\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e08\u0e23\u0e34\u0e07 \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e41\u0e25\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e22\u0e32\u0e22\u0e44\u0e14\u0e49 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e0a\u0e38\u0e21\u0e0a\u0e19\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e27\u0e31\u0e15\u0e16\u0e38\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c\u0e04\u0e37\u0e2d\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e0a\u0e48\u0e27\u0e22\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e1e\u0e25\u0e15\u0e1f\u0e2d\u0e23\u0e4c\u0e21\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e2b\u0e25\u0e31\u0e01 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e31\u0e1a\u0e2a\u0e19\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e34\u0e14\u0e04\u0e48\u0e32\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 API.<\/p>\n\n\n\n<style>\n.cvc-toc{margin:28px 0;padding:22px;border:1px solid #e2e6ec;border-radius:8px;background:linear-gradient(145deg,#fff 0%,#f7f9fc 100%);color:#18202b;font:14px\/1.4 Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif}.cvc-toc *{box-sizing:border-box}.cvc-toc .head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:16px}.cvc-toc h2{margin:0;font-size:20px}.cvc-toc .hint{color:#667085;font-size:12px}.cvc-toc ol{display:grid;grid-template-columns:1fr 1fr;gap:8px 18px;margin:0;padding:0;list-style:none;counter-reset:toc}.cvc-toc li{counter-increment:toc}.cvc-toc a{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;color:#344054;text-decoration:none;transition:background .15s ease,color .15s ease}.cvc-toc a:before{content:counter(toc,decimal-leading-zero);min-width:24px;color:#2563eb;font-size:11px;font-weight:800;letter-spacing:.04em}.cvc-toc a:hover{background:#eef4ff;color:#174ea6}@media(max-width:720px){.cvc-toc ol{grid-template-columns:1fr}.cvc-toc .head{align-items:start;flex-direction:column}.cvc-toc{padding:18px}}\n<\/style>\n<nav class=\"cvc-toc\" aria-label=\"\u0e2a\u0e32\u0e23\u0e1a\u0e31\u0e0d\">\n  <div class=\"head\"><h2>\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e19\u0e35\u0e49<\/h2><span class=\"hint\">\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e19\u0e31\u0e49\u0e19<\/span><\/div>\n  <ol>\n    <li><a href=\"#quick-comparison\">\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e41\u0e1a\u0e1a\u0e23\u0e27\u0e14\u0e40\u0e23\u0e47\u0e27<\/a><\/li><li><a href=\"#what-they-are\">\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23<\/a><\/li><li><a href=\"#workflow-control\">\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/a><\/li><li><a href=\"#repository-understanding\">\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/a><\/li><li><a href=\"#implementation\">\u0e01\u0e32\u0e23\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14<\/a><\/li><li><a href=\"#code-review\">\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14<\/a><\/li><li><a href=\"#safety\">\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22<\/a><\/li><li><a href=\"#customization\">MCP, \u0e17\u0e31\u0e01\u0e29\u0e30 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e07<\/a><\/li><li><a href=\"#pricing\">\u0e23\u0e32\u0e04\u0e32\u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14<\/a><\/li><li><a href=\"#controlled-test\">\u0e01\u0e32\u0e23\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e41\u0e1a\u0e1a\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/a><\/li><li><a href=\"#user-experience\">\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49<\/a><\/li><li><a href=\"#globalgpt\">\u0e0a\u0e31\u0e49\u0e19\u0e02\u0e22\u0e32\u0e22 GlobalGPT<\/a><\/li><li><a href=\"#which-one\">\u0e04\u0e27\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2d\u0e31\u0e19\u0e44\u0e2b\u0e19\u0e14\u0e35<\/a><\/li><li><a href=\"#faq\">\u0e04\u0e33\u0e16\u0e32\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e1a\u0e1a\u0e48\u0e2d\u0e22<\/a><\/li>\n  <\/ol>\n<\/nav>\n\n\n\n<h2 id=\"quick-comparison\" class=\"wp-block-heading\">Codex vs Claude: \u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e1a\u0e1a\u0e2a\u0e23\u0e38\u0e1b<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u0e1b\u0e31\u0e08\u0e08\u0e31\u0e22\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08<\/th><th>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/th><th>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/th><\/tr><\/thead><tbody><tr><td>\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e01\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/td><td>\u0e2d\u0e48\u0e32\u0e19 \u0e41\u0e01\u0e49\u0e44\u0e02 \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e1a\u0e19\u0e17\u0e38\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e1c\u0e34\u0e27 Codex \u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19<\/td><td>\u0e40\u0e2d\u0e40\u0e22\u0e19\u0e15\u0e4c\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e21\u0e34\u0e19\u0e31\u0e25\u0e41\u0e1a\u0e1a\u0e2a\u0e19\u0e17\u0e19\u0e32 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19 \u0e41\u0e01\u0e49\u0e44\u0e02 \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07<\/td><\/tr><tr><td>\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e44\u0e14\u0e49\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32<\/td><td>\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19\u0e43\u0e19\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14<\/td><td>\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19\u0e43\u0e19\u0e01\u0e32\u0e23\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c repositories \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a<\/td><\/tr><tr><td>\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/td><td colspan=\"2\">\u0e01\u0e32\u0e23\u0e1c\u0e39\u0e01\u0e21\u0e31\u0e14\u0e40\u0e0a\u0e34\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e17\u0e35\u0e48\u0e43\u0e19\u0e20\u0e32\u0e23\u0e01\u0e34\u0e08\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e23\u0e30\u0e07\u0e31\u0e1a<\/td><\/tr><tr><td>\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14<\/td><td>\u0e1e\u0e1a\u0e41\u0e25\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07\u0e2a\u0e39\u0e07\u0e41\u0e25\u0e30\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07<\/td><td>\u0e44\u0e14\u0e49\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19\u0e08\u0e32\u0e01 19\/20 \u0e25\u0e14\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 18\/20<\/td><\/tr><tr><td>\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e17\u0e35\u0e48\u0e27\u0e31\u0e14\u0e44\u0e14\u0e49<\/td><td colspan=\"2\">\u0e1c\u0e25\u0e1c\u0e2a\u0e21; \u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\u0e08\u0e19\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e1c\u0e39\u0e49\u0e0a\u0e19\u0e30\u0e42\u0e14\u0e22\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b\u0e44\u0e14\u0e49<\/td><\/tr><tr><td>\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e1a\u0e23\u0e34\u0e42\u0e20\u0e04<\/td><td>$20\/\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e1c\u0e48\u0e32\u0e19\u0e41\u0e1c\u0e19 ChatGPT \u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07<\/td><td>Claude Pro: $20\/\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e43\u0e19\u0e2a\u0e2b\u0e23\u0e31\u0e10\u0e2d\u0e40\u0e21\u0e23\u0e34\u0e01\u0e32<\/td><\/tr><tr><td>\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e02\u0e36\u0e49\u0e19<\/td><td>\u0e23\u0e30\u0e14\u0e31\u0e1a $100 \u0e41\u0e25\u0e30 $200<\/td><td>\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 5x \u0e17\u0e35\u0e48 $100 \u0e41\u0e25\u0e30\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 20x \u0e17\u0e35\u0e48 $200<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e15\u0e32\u0e23\u0e32\u0e07\u0e19\u0e35\u0e49\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e43\u0e19\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e15\u0e32\u0e23\u0e32\u0e07\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e40\u0e14\u0e25 \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e35\u0e48\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19, \u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e42\u0e04\u0e49\u0e14, \u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c \u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19 \u0e2d\u0e32\u0e08\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e43\u0e2b\u0e49\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49 \u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e01\u0e33\u0e25\u0e31\u0e07\u0e43\u0e0a\u0e49\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e17\u0e35\u0e48\u0e14\u0e35\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e04\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e32\u0e01\u0e10\u0e32\u0e19\u0e42\u0e04\u0e49\u0e14\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e2d\u0e07 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 success \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e.<\/p>\n\n\n\n<style>\n.cvc-profile{--ink:#18202b;--muted:#667085;--line:#e5e8ee;--codex:#2563eb;--claude:#d97706;margin:28px 0;padding:22px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(145deg,#fff 0%,#f8fafc 100%);color:var(--ink);font:14px\/1.45 Inter,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif}.cvc-profile *{box-sizing:border-box}.cvc-profile h3{margin:0 0 4px;font-size:20px}.cvc-profile .sub{margin:0 0 20px;color:var(--muted)}.cvc-profile .legend{display:flex;gap:18px;margin-bottom:18px;font-weight:700}.cvc-profile .dot{display:inline-block;width:9px;height:9px;margin-right:7px;border-radius:2px}.cvc-profile .task{display:grid;grid-template-columns:190px 1fr 52px;gap:12px;align-items:center;margin:13px 0}.cvc-profile .task strong{font-size:13px}.cvc-profile .tracks{display:grid;gap:5px}.cvc-profile .track{height:9px;overflow:hidden;border-radius:5px;background:#e9edf3}.cvc-profile .fill{height:100%;border-radius:5px}.cvc-profile .codex{background:var(--codex)}.cvc-profile .claude{background:var(--claude)}.cvc-profile .score{text-align:right;font-variant-numeric:tabular-nums;font-weight:800}.cvc-profile .note{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}@media(max-width:650px){.cvc-profile .task{grid-template-columns:1fr 46px}.cvc-profile .task>strong{grid-column:1\/-1}.cvc-profile{padding:18px}}\n<\/style>\n<section class=\"cvc-profile\" aria-label=\"\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e04\u0e30\u0e41\u0e19\u0e19\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\">\n  <h3>\u0e42\u0e1b\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/h3>\n  <p class=\"sub\">\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e40\u0e14\u0e34\u0e21 \u0e41\u0e16\u0e1a\u0e04\u0e30\u0e41\u0e19\u0e19\u0e16\u0e39\u0e01\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e04\u0e30\u0e41\u0e19\u0e19\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e20\u0e32\u0e23\u0e01\u0e34\u0e08.<\/p>\n  <div class=\"legend\"><span><i class=\"dot\" style=\"background:#2563eb\"><\/i>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><span><i class=\"dot\" style=\"background:#d97706\"><\/i>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><\/div>\n  <div class=\"task\"><strong>T1 \u00b7 \u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a Repository<\/strong><div class=\"tracks\"><div class=\"track\"><div class=\"fill codex\" style=\"width:100%\"><\/div><\/div><div class=\"track\"><div class=\"fill claude\" style=\"width:100%\"><\/div><\/div><\/div><span class=\"score\">20 \/ 20<\/span><\/div>\n  <div class=\"task\"><strong>T2 \u00b7 \u0e1f\u0e35\u0e40\u0e08\u0e2d\u0e23\u0e4c\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c<\/strong><div class=\"tracks\"><div class=\"track\"><div class=\"fill codex\" style=\"width:100%\"><\/div><\/div><div class=\"track\"><div class=\"fill claude\" style=\"width:100%\"><\/div><\/div><\/div><span class=\"score\">30 \/ 30<\/span><\/div>\n  <div class=\"task\"><strong>T3 \u00b7 \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 DST<\/strong><div class=\"tracks\"><div class=\"track\"><div class=\"fill codex\" style=\"width:100%\"><\/div><\/div><div class=\"track\"><div class=\"fill claude\" style=\"width:100%\"><\/div><\/div><\/div><span class=\"score\">30 \/ 30<\/span><\/div>\n  <div class=\"task\"><strong>T4 \u00b7 \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e0b\u0e48\u0e2d\u0e21\u0e41\u0e0b\u0e21<\/strong><div class=\"tracks\"><div class=\"track\"><div class=\"fill codex\" style=\"width:90%\"><\/div><\/div><div class=\"track\"><div class=\"fill claude\" style=\"width:95%\"><\/div><\/div><\/div><span class=\"score\">18 \/ 19<\/span><\/div>\n  <p class=\"note\">\u0e20\u0e32\u0e1e\u0e19\u0e35\u0e49\u0e41\u0e2a\u0e14\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e19\u0e31\u0e49\u0e19\u0e21\u0e32\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e43\u0e14; \u0e21\u0e31\u0e19\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e41\u0e02\u0e48\u0e07\u0e02\u0e31\u0e19\u0e40\u0e25\u0e47\u0e01\u0e46 \u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e41\u0e1a\u0e1a\u0e2a\u0e32\u0e01\u0e25.<\/p>\n<\/section>\n\n\n\n<h2 id=\"what-they-are\" class=\"wp-block-heading\">Codex \u0e41\u0e25\u0e30 Claude Code \u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23\u0e01\u0e31\u0e19\u0e41\u0e19\u0e48<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u0e41\u0e25\u0e30 Claude Code \u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e38\u0e48\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e2a\u0e48\u0e27\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19 <a href=\"https:\/\/www.glbgpt.com\/hub\/best-ai-model-for-coding\/\">\u0e41\u0e1a\u0e1a\u0e08\u0e33\u0e25\u0e2d\u0e07 AI \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14<\/a> \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e41\u0e15\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e23\u0e2d\u0e1a\u0e02\u0e49\u0e32\u0e07\u0e22\u0e31\u0e07\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e14\u0e49\u0e27\u0e22\u0e27\u0e48\u0e32\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e14 \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e14\u0e17\u0e35\u0e48\u0e21\u0e31\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e44\u0e14\u0e49 \u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e16\u0e39\u0e01\u0e23\u0e31\u0e01\u0e29\u0e32\u0e44\u0e27\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23 \u0e41\u0e25\u0e30\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e43\u0e14\u0e08\u0e30\u0e22\u0e31\u0e07\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e07\u0e32\u0e19 \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e2a\u0e35\u0e22\u0e07\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e40\u0e14\u0e25\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e21\u0e2d\u0e07\u0e02\u0e49\u0e32\u0e21\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e43\u0e2b\u0e0d\u0e48\u0e17\u0e35\u0e48\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e42\u0e21\u0e40\u0e14\u0e25\u0e19\u0e31\u0e49\u0e19.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e31\u0e49\u0e07\u0e43\u0e19\u0e41\u0e1a\u0e1a\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 (command-line), IDE, \u0e40\u0e14\u0e2a\u0e01\u0e4c\u0e17\u0e47\u0e2d\u0e1b \u0e41\u0e25\u0e30\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e25\u0e32\u0e27\u0e14\u0e4c \u0e04\u0e27\u0e32\u0e21\u0e2b\u0e25\u0e32\u0e01\u0e2b\u0e25\u0e32\u0e22\u0e19\u0e35\u0e49\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e21\u0e31\u0e19\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e41\u0e1a\u0e1a\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 Claude Code \u0e40\u0e19\u0e49\u0e19\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e21\u0e34\u0e19\u0e31\u0e25\u0e17\u0e35\u0e48\u0e40\u0e19\u0e49\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e17\u0e19\u0e32 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e1c\u0e2a\u0e32\u0e19\u0e23\u0e27\u0e21\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19 \u0e41\u0e25\u0e30\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e07\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e27\u0e32\u0e07; \u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49 <a href=\"https:\/\/www.glbgpt.com\/hub\/how-to-use-claude-ai-for-coding\/\">\u0e04\u0e39\u0e48\u0e21\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 Claude \u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14<\/a> \u0e43\u0e2b\u0e49\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e40\u0e1a\u0e37\u0e49\u0e2d\u0e07\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e27\u0e32\u0e07\u0e22\u0e34\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e1a\u0e32\u0e07\u0e04\u0e19 \u0e01\u0e32\u0e23\u0e44\u0e14\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e17\u0e33\u0e07\u0e32\u0e19\u0e43\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e21\u0e34\u0e19\u0e31\u0e25\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e23\u0e39\u0e49\u0e2a\u0e36\u0e01\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08 \u0e2a\u0e48\u0e27\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e04\u0e19\u0e2d\u0e37\u0e48\u0e19 \u0e46 \u0e2a\u0e34\u0e48\u0e07\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e04\u0e37\u0e2d\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22 \u0e40\u0e0a\u0e48\u0e19 diff, \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e17\u0e19\u0e32\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e22\u0e31\u0e07\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e44\u0e14\u0e49\u0e27\u0e48\u0e32\u0e17\u0e33\u0e44\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e35\u0e48\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e41\u0e02\u0e47\u0e07\u0e41\u0e01\u0e23\u0e48\u0e07\u0e43\u0e19\u0e17\u0e24\u0e29\u0e0e\u0e35 \u0e2d\u0e32\u0e08\u0e41\u0e2a\u0e14\u0e07\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e1c\u0e39\u0e49\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e19\u0e33\u0e40\u0e2a\u0e19\u0e2d\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d \u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e43\u0e19\u0e0a\u0e38\u0e21\u0e0a\u0e19\u0e17\u0e35\u0e48\u0e25\u0e30\u0e40\u0e25\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2d\u0e32\u0e08\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e1c\u0e34\u0e14\u0e27\u0e48\u0e32\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e43\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e04\u0e37\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e08\u0e23\u0e34\u0e07\u0e43\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0e41\u0e1a\u0e1a\u0e08\u0e33\u0e25\u0e2d\u0e07<\/strong> \u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07.<\/li>\n\n\n\n<li><strong>\u0e0a\u0e38\u0e14\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19<\/strong> \u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e44\u0e1f\u0e25\u0e4c \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e1a\u0e23\u0e34\u0e1a\u0e17 \u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19.<\/li>\n\n\n\n<li><strong>\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e20\u0e32\u0e23\u0e01\u0e34\u0e08\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49<\/strong> \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e04\u0e27\u0e23\u0e2b\u0e22\u0e38\u0e14\u0e17\u0e33\u0e07\u0e32\u0e19.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1280\" height=\"800\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/x-harness-vs-model-caveat-annotated.webp\" alt=\"\u0e42\u0e1e\u0e2a\u0e15\u0e4c X \u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 \u0e0b\u0e36\u0e48\u0e07\u0e0a\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32 \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e2d\u0e32\u0e08\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e41\u0e25\u0e30\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\" class=\"wp-image-17390\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/x-harness-vs-model-caveat-annotated.webp 1280w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/x-harness-vs-model-caveat-annotated-300x188.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/x-harness-vs-model-caveat-annotated-1024x640.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/x-harness-vs-model-caveat-annotated-768x480.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/x-harness-vs-model-caveat-annotated-18x12.webp 18w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1a\u0e38\u0e04\u0e04\u0e25 X \u0e0a\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e23\u0e23\u0e30\u0e27\u0e31\u0e07\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a: \u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e44\u0e14\u0e49 \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e04\u0e23\u0e48\u0e07\u0e04\u0e23\u0e31\u0e14\u0e27\u0e48\u0e32\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e43\u0e14\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32.<\/figcaption><\/figure>\n\n\n\n<h2 id=\"workflow-control\" class=\"wp-block-heading\">\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21: \u0e01\u0e32\u0e23\u0e21\u0e2d\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e14\u0e39\u0e41\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e04\u0e33\u0e16\u0e32\u0e21\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a Codex vs Claude Code \u0e21\u0e31\u0e01\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 \u201c\u0e15\u0e31\u0e27\u0e44\u0e2b\u0e19\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e44\u0e14\u0e49\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32?\u201d \u0e41\u0e15\u0e48\u0e40\u0e1b\u0e47\u0e19 \u201c\u0e1c\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e21\u0e31\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23?\u201d \u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e41\u0e25\u0e30\u0e21\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e21\u0e2d\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e44\u0e14\u0e49\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e14\u0e49\u0e27\u0e22\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33 \u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 \u0e41\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e08\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e2b\u0e32\u0e23\u0e37\u0e2d \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e32\u0e07 \u0e41\u0e25\u0e30\u0e42\u0e2d\u0e01\u0e32\u0e2a\u0e43\u0e19\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e1c\u0e39\u0e49\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e21\u0e32\u0e01\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e01\u0e33\u0e25\u0e31\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e14\u0e49\u0e32\u0e19\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\u0e22\u0e31\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e2b\u0e32\u0e23\u0e37\u0e2d \u0e41\u0e15\u0e48\u0e08\u0e30\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e08\u0e48\u0e32\u0e22\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e02\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e0b\u0e49\u0e33\u0e46 \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e43\u0e19\u0e04\u0e25\u0e31\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23 \u0e41\u0e15\u0e48\u0e08\u0e30\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e15\u0e31\u0e49\u0e07\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e10\u0e32\u0e19\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e22\u0e32\u0e22\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e07\u0e32\u0e19\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e1a\u0e19 Reddit \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 13 \u0e40\u0e21\u0e29\u0e32\u0e22\u0e19 2026 \u0e44\u0e14\u0e49\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e40\u0e27\u0e25\u0e32\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13 100 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e01\u0e31\u0e1a Claude Code \u0e41\u0e25\u0e30 20 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e01\u0e31\u0e1a Codex \u0e43\u0e19\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23 Python \u0e41\u0e25\u0e30 TypeScript \u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13 80,000 \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e14\u0e49\u0e27\u0e22\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13 2,800 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e1c\u0e39\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e14\u0e49\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e27\u0e48\u0e32 Claude \u0e40\u0e23\u0e47\u0e27\u0e01\u0e27\u0e48\u0e32\u0e41\u0e25\u0e30\u0e21\u0e35\u0e1b\u0e0f\u0e34\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e19\u0e18\u0e4c\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e41\u0e15\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e14\u0e39\u0e41\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e43\u0e01\u0e25\u0e49\u0e0a\u0e34\u0e14\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e2a\u0e48\u0e27\u0e19 Codex \u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e41\u0e25\u0e30\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e23\u0e30\u0e21\u0e31\u0e14\u0e23\u0e30\u0e27\u0e31\u0e07\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e19\u0e35\u0e49\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e02\u0e2d\u0e07\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c \u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e04\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1280\" height=\"800\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/reddit-claude-code-vs-codex-experience-annotated.webp\" alt=\"\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e1a\u0e19 Reddit \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a Claude Code \u0e41\u0e25\u0e30 Codex \u0e43\u0e19\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35 80,000 \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\" class=\"wp-image-17391\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/reddit-claude-code-vs-codex-experience-annotated.webp 1280w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/reddit-claude-code-vs-codex-experience-annotated-300x188.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/reddit-claude-code-vs-codex-experience-annotated-1024x640.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/reddit-claude-code-vs-codex-experience-annotated-768x480.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/reddit-claude-code-vs-codex-experience-annotated-18x12.webp 18w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e07\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e04\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e01\u0e31\u0e1a Claude Code \u0e41\u0e25\u0e30 Codex \u0e02\u0e49\u0e2d\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e17\u0e35\u0e48\u0e40\u0e19\u0e49\u0e19\u0e44\u0e27\u0e49\u0e04\u0e27\u0e23\u0e16\u0e39\u0e01\u0e1e\u0e34\u0e08\u0e32\u0e23\u0e13\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e10\u0e32\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e02\u0e2d\u0e07\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e42\u0e14\u0e22\u0e23\u0e27\u0e21.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e27\u0e31\u0e14\u0e40\u0e27\u0e25\u0e32\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e40\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e0a\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e0a\u0e19\u0e30\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 Claude \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e07\u0e32\u0e19\u0e2a\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e41\u0e23\u0e01\u0e44\u0e14\u0e49\u0e40\u0e23\u0e47\u0e27\u0e01\u0e27\u0e48\u0e32 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48 Codex \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e07\u0e32\u0e19\u0e2a\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e44\u0e14\u0e49\u0e40\u0e23\u0e47\u0e27\u0e01\u0e27\u0e48\u0e32 Claude \u0e22\u0e31\u0e07\u0e43\u0e0a\u0e49\u0e0b\u0e31\u0e1a\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19\u0e1c\u0e48\u0e32\u0e19 CLI \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e43\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23 \u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e37\u0e2d \u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19 \u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e2d\u0e01 \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21 \u0e1a\u0e23\u0e34\u0e1a\u0e17 \u0e41\u0e25\u0e30\u0e42\u0e2e\u0e2a\u0e15\u0e4c \u2014 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e27\u0e48\u0e32\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e43\u0e14\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e30\u0e40\u0e23\u0e47\u0e27\u0e01\u0e27\u0e48\u0e32\u0e40\u0e2a\u0e21\u0e2d\u0e44\u0e1b.<\/p>\n\n\n\n<h2 id=\"repository-understanding\" class=\"wp-block-heading\">\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1a\u0e23\u0e34\u0e1a\u0e17<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e49\u0e19\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e41\u0e04\u0e48\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e42\u0e1f\u0e25\u0e40\u0e14\u0e2d\u0e23\u0e4c\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e15\u0e31\u0e27\u0e0a\u0e48\u0e27\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e01\u0e32\u0e23\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e44\u0e1f\u0e25\u0e4c \u0e23\u0e30\u0e1a\u0e38\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e17\u0e35\u0e48\u0e08\u0e33\u0e01\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e04\u0e49\u0e19\u0e2b\u0e32\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e22\u0e01\u0e41\u0e22\u0e30\u0e2d\u0e32\u0e01\u0e32\u0e23\u0e08\u0e32\u0e01\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e0a\u0e31\u0e49\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14 \u0e41\u0e1c\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e14\u0e49 \u0e2a\u0e48\u0e27\u0e19\u0e41\u0e1c\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e0a\u0e48\u0e27\u0e22\u0e43\u0e2b\u0e49\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e43\u0e19\u0e01\u0e32\u0e23\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e44\u0e14\u0e49\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e43\u0e19\u4efb\u52a1 T1 \u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e44\u0e14\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 20\/20 \u0e41\u0e25\u0e30\u0e43\u0e2b\u0e49\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e2d\u0e34\u0e07\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 Code Claude \u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e16\u0e35\u0e48\u0e16\u0e49\u0e27\u0e19\u0e01\u0e27\u0e48\u0e32\u0e41\u0e25\u0e30\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e43\u0e19\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 \u0e2a\u0e48\u0e27\u0e19 Codex \u0e21\u0e35\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e01\u0e27\u0e48\u0e32 \u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e04\u0e07\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07 \u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07 \u0e41\u0e25\u0e30\u0e41\u0e1c\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e44\u0e14\u0e49 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e41\u0e1a\u0e1a\u0e43\u0e14\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e01\u0e27\u0e48\u0e32\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e04\u0e27\u0e32\u0e21\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e16\u0e35\u0e48\u0e16\u0e49\u0e27\u0e19\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e43\u0e19\u0e01\u0e32\u0e23\u0e22\u0e49\u0e32\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e38\u0e49\u0e19\u0e40\u0e04\u0e22 \u0e2a\u0e48\u0e27\u0e19\u0e04\u0e27\u0e32\u0e21\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1c\u0e39\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\u0e41\u0e25\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e41\u0e1c\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e21\u0e38\u0e48\u0e07\u0e40\u0e19\u0e49\u0e19.<\/p>\n\n\n\n<style>\n.evidence-t1-repository-understanding{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}\n.evidence-t1-repository-understanding *{box-sizing:border-box}.evidence-t1-repository-understanding .d-head{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;padding:24px 26px 20px;border-bottom:1px solid var(--line)}\n.evidence-t1-repository-understanding .d-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.evidence-t1-repository-understanding .d-title{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.evidence-t1-repository-understanding .d-sub{margin:7px 0 0;color:var(--body);font-size:13px}.evidence-t1-repository-understanding .d-pill{flex:0 0 auto;padding:6px 10px;border:1px solid #ccd6ff;border-radius:999px;color:#2448ca;background:#f0f3ff;font-size:11px;font-weight:800}.evidence-t1-repository-understanding .d-grid{display:grid;grid-template-columns:1fr 1fr}.evidence-t1-repository-understanding .d-side{min-width:0;padding:24px 26px}.evidence-t1-repository-understanding .d-side+.d-side{border-left:1px solid var(--line)}.evidence-t1-repository-understanding .d-product{display:flex;align-items:baseline;justify-content:space-between;gap:14px;font-weight:800}.evidence-t1-repository-understanding .d-score{font-size:34px;line-height:1;letter-spacing:-.05em}.evidence-t1-repository-understanding .d-score small{color:var(--muted);font-size:12px;letter-spacing:0}.evidence-t1-repository-understanding .d-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:18px 0}.evidence-t1-repository-understanding .d-metric{padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.evidence-t1-repository-understanding .d-metric span{display:block;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.evidence-t1-repository-understanding .d-metric strong{display:block;margin-top:3px;font-size:13px}.evidence-t1-repository-understanding .d-preview{position:relative;height:192px;overflow:hidden;border:1px solid #29313f;border-radius:6px;background:#11151d;color:#edf0f5}.evidence-t1-repository-understanding .d-preview-label{padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.1);color:#aeb7c7;font:750 9px\/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase}.evidence-t1-repository-understanding .d-preview pre,.evidence-t1-repository-understanding .d-full pre{margin:0;white-space:pre-wrap;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.evidence-t1-repository-understanding .d-preview pre{padding:13px}.evidence-t1-repository-understanding .d-preview:after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:55px;background:linear-gradient(transparent,#11151d)}.evidence-t1-repository-understanding .d-take{margin:14px 0 0;color:var(--body);font-size:12px}.evidence-t1-repository-understanding .d-fulls{padding:0 26px 22px}.evidence-t1-repository-understanding .d-full{margin-top:10px;border:1px solid var(--line);border-radius:6px}.evidence-t1-repository-understanding .d-full summary{cursor:pointer;padding:13px 14px;font-size:12px;font-weight:800;list-style:none}.evidence-t1-repository-understanding .d-full summary::-webkit-details-marker{display:none}.evidence-t1-repository-understanding .d-full summary:after{content:\"+\";float:right;color:var(--blue);font-size:17px}.evidence-t1-repository-understanding .d-full[open] summary:after{content:\"\u2212\"}.evidence-t1-repository-understanding .d-full-pane{padding:0 14px 14px}.evidence-t1-repository-understanding .d-full-note{margin:0 0 9px;color:var(--muted);font-size:10px}.evidence-t1-repository-understanding .d-full pre{max-height:620px;overflow:auto;padding:15px;border-radius:5px;background:#f5f6f8;color:#222936;border:1px solid #e0e3e8}.evidence-t1-repository-understanding .d-limit{margin:0;padding:12px 26px;border-top:1px solid var(--line);color:#5a6270;background:#fafbfc;font-size:11px}\n@media(max-width:760px){.evidence-t1-repository-understanding .d-head{display:block}.evidence-t1-repository-understanding .d-pill{display:inline-block;margin-top:12px}.evidence-t1-repository-understanding .d-grid{grid-template-columns:1fr}.evidence-t1-repository-understanding .d-side+.d-side{border-left:0;border-top:1px solid var(--line)}}@media(max-width:480px){.evidence-t1-repository-understanding .d-head,.evidence-t1-repository-understanding .d-side{padding:20px}.evidence-t1-repository-understanding .d-fulls{padding:0 20px 20px}.evidence-t1-repository-understanding .d-metrics{grid-template-columns:1fr}}\n<\/style><article class=\"evidence-t1-repository-understanding\"><header class=\"d-head\"><div><p class=\"d-kicker\">T1 \u00b7 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/p><h3 class=\"d-title\">\u0e17\u0e33\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e01\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e38\u0e49\u0e19\u0e40\u0e04\u0e22\u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07<\/h3><p class=\"d-sub\">\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e1c\u0e19\u0e1c\u0e31\u0e07\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21 \u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e01\u0e32\u0e23\u0e44\u0e2b\u0e25\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e23\u0e30\u0e1a\u0e38\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e14\u0e46.<\/p><\/div><span class=\"d-pill\">\u0e1c\u0e39\u0e01<\/span><\/header><div class=\"d-grid\"><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e08\u0e32\u0e01 Codex\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><span class=\"d-score\">20<small>\/20<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>108 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>2 \u0e08\u0e38\u0e14\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21: \u0e42\u0e21\u0e40\u0e14\u0e25, \u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35, \u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e22\u0e39\u0e17\u0e34\u0e25\u0e34\u0e15\u0e35\u0e49\u0e40\u0e27\u0e25\u0e32\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\n\n\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e2b\u0e25\u0e31\u0e01: \u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e02\u0e2d\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19, \u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49, \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23, \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e01\u0e30\u0e17\u0e31\u0e14\u0e23\u0e31\u0e14, \u0e21\u0e35\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e41\u0e25\u0e30\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e04\u0e49\u0e32\u0e07\u0e2d\u0e22\u0e39\u0e48.<\/p><\/section><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e23\u0e2b\u0e31\u0e2a Claude\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><span class=\"d-score\">20<small>\/20<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>61 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>2 \u0e08\u0e38\u0e14\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>\u0e2a\u0e32\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e1a\u0e27\u0e01\u0e42\u0e21\u0e14\u0e39\u0e25\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e15\u0e31\u0e27 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e27\u0e07\u0e08\u0e23; \u0e01\u0e32\u0e23\u0e09\u0e35\u0e14\u0e01\u0e32\u0e23\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33\n\n\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e19\u0e35\u0e49\u0e22\u0e31\u0e07\u0e1e\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 \u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e2a\u0e21\u0e21\u0e32\u0e15\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e19\u0e49\u0e2d\u0e22.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e04\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e40\u0e14\u0e34\u0e21.<\/p><\/section><\/div><div class=\"d-fulls\"><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07 Codex \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e41\u0e25\u0e49\u0e27<\/p><pre>## \u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\n\n\u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08 Python \u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e21\u0e35\u0e2a\u0e35\u0e48\u0e0a\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19:\n\n- **\u0e42\u0e21\u0e40\u0e14\u0e25\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25:** [`Job`]() \u0e40\u0e1b\u0e47\u0e19 dataclass \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49 (immutable) \u0e0b\u0e36\u0e48\u0e07\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22 `identifier`, `name`, \u0e41\u0e25\u0e30 `owner`. `Job.to_dict()` \u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e48\u0e32\u0e19 `dataclasses.asdict()`\n- **Repository:** [`JobRepository`]() \u0e40\u0e01\u0e47\u0e1a\u0e07\u0e32\u0e19\u0e44\u0e27\u0e49\u0e43\u0e19\u0e1e\u0e08\u0e19\u0e32\u0e19\u0e38\u0e01\u0e23\u0e21\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33 (in-memory dictionary) \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 identifier \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e35\u0e22\u0e4c \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e16\u0e32\u0e27\u0e23\n- **Service:** [`SchedulerService`]() \u0e23\u0e31\u0e1a\u0e1c\u0e34\u0e14\u0e0a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23 identifier \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32 \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e25\u0e1a\n- **\u0e22\u0e39\u0e17\u0e34\u0e25\u0e34\u0e15\u0e35\u0e49\u0e40\u0e27\u0e25\u0e32:** [`next_daily_run()`]() \u0e04\u0e33\u0e19\u0e27\u0e13\u0e40\u0e27\u0e25\u0e32\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e48\u0e27\u0e19\u0e43\u0e14\u0e17\u0e35\u0e48\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e21\u0e31\u0e19\u0e01\u0e31\u0e1a `Job`, `SchedulerService` \u0e2b\u0e23\u0e37\u0e2d `JobRepository`\n- **API \u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30:** [`scheduler.__init__`]() \u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e40\u0e09\u0e1e\u0e32\u0e30 `SchedulerService` \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n\n\u0e41\u0e21\u0e49\u0e0a\u0e37\u0e48\u0e2d\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e0a\u0e48\u0e19\u0e19\u0e31\u0e49\u0e19 \u0e41\u0e15\u0e48\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e07\u0e32\u0e19 (jobs) \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e23\u0e27\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e27\u0e25\u0e32 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e34\u0e27\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e08\u0e36\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e21\u0e15\u0e32\u0e14\u0e32\u0e15\u0e49\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e43\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e44\u0e14\u0e49 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\u0e44\u0e14\u0e49 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e02\u0e22\u0e32\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e2d\u0e01\u0e44\u0e1b\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e32\u0e01\n\n## \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e25\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n\n\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1c\u0e48\u0e32\u0e19 `SchedulerService.create_job(name, owner)`:\n\n1. [`create_job()`]() \u0e08\u0e30\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n2. \u0e21\u0e31\u0e19\u0e08\u0e30\u0e15\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e01\u0e34\u0e19\u0e02\u0e2d\u0e07 `name` \u0e41\u0e25\u0e30 `owner` \u0e41\u0e25\u0e49\u0e27\u0e2a\u0e23\u0e49\u0e32\u0e07 `Job` \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 `_next_identifier` \u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\n3. [`JobRepository.save()`]() \u0e40\u0e02\u0e35\u0e22\u0e19\u0e2d\u0e47\u0e2d\u0e1a\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e44\u0e1b\u0e22\u0e31\u0e07 `_jobs[job.identifier]`\n4. \u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32 `_next_identifier` \u0e41\u0e25\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `Job` \u0e40\u0e14\u0e34\u0e21\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\n\n\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e32\u0e19 `SchedulerService.list_jobs()`:\n\n1. [`list_jobs()`]() \u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07 `repository.all()`\n2. [`JobRepository.all()`]() \u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e04\u0e35\u0e22\u0e4c\u0e02\u0e2d\u0e07\u0e1e\u0e08\u0e19\u0e32\u0e19\u0e38\u0e01\u0e23\u0e21\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\n3. \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 \u0e07\u0e32\u0e19\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\/\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\n\n## \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e2d\u0e32\u0e08\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e08\u0e32\u0e01\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\n\n\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19:\n\n- [`scheduler\/models.py`](): \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e41\u0e25\u0e30\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 (\u0e16\u0e49\u0e32\u0e21\u0e35) `to_dict()` \u0e08\u0e30\u0e23\u0e27\u0e21\u0e21\u0e31\u0e19\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e43\u0e0a\u0e49 `asdict()`\n- [`scheduler\/service.py`](): \u0e23\u0e31\u0e1a \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e04\u0e48\u0e32 priority \u0e44\u0e1b\u0e22\u0e31\u0e07 `Job`\n- [`tests\/test_scheduler.py`](): \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e02\u0e2d\u0e07\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e0b\u0e35\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e25\u0e0b\u0e4c \u0e41\u0e25\u0e30\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\n\n\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02:\n\n- [`scheduler\/repository.py`](): \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 `all()` \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e16\u0e39\u0e01\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e21\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 \u0e04\u0e35\u0e22\u0e4c\u0e23\u0e2d\u0e07\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e14\u0e49 \u0e40\u0e0a\u0e48\u0e19 `identifier` \u0e04\u0e27\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e04\u0e48\u0e32\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19\n- [`scheduler\/__init__.py`](): \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d priority \u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19 enum \u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e2b\u0e23\u0e37\u0e2d value object\n- [`README.md`](): \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e23\u0e31\u0e1a\u0e44\u0e14\u0e49 \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e41\u0e25\u0e30\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\n\n\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a:\n\n- `scheduler\/time_rules.py`, \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a datetime \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e21\u0e32 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\n\n## \u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e2b\u0e25\u0e31\u0e01\n\n- **\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19:** \u0e42\u0e04\u0e49\u0e14\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e27\u0e48\u0e32\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e0d\u0e48\u0e01\u0e27\u0e48\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e25\u0e47\u0e01\u0e01\u0e27\u0e48\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e2a\u0e39\u0e07\u0e02\u0e36\u0e49\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e04\u0e48\u0e32\u0e43\u0e14\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e21\u0e35\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\n- **\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49:** \u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a `Job` \u0e2b\u0e23\u0e37\u0e2d `create_job()` \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e40\u0e0a\u0e48\u0e19 `create_job(\"Daily report\", \"Alex\")` \u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e08\u0e30\u0e23\u0e31\u0e01\u0e29\u0e32\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e19\u0e31\u0e49\u0e19\u0e44\u0e27\u0e49\n- **\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07:** `Job` \u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e43\u0e19 `SchedulerService.create_job()` \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e27\u0e32\u0e07\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e14\u0e49\u0e27\u0e22\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e43\u0e19\u0e2d\u0e19\u0e32\u0e04\u0e15\u0e2d\u0e32\u0e08\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19; \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e08\u0e30\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e01\u0e27\u0e48\u0e32\n- **\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07:** \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19 `JobRepository.all()` \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\u0e40\u0e14\u0e34\u0e21\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e1b \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e15\u0e31\u0e27\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\n- **\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07:** \u0e04\u0e48\u0e32 Python \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2d\u0e32\u0e08\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e2a\u0e15\u0e23\u0e34\u0e07 \u0e04\u0e48\u0e32\u0e1a\u0e39\u0e25\u0e35\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21\u0e41\u0e1a\u0e1a\u0e2a\u0e38\u0e48\u0e21 \u0e0b\u0e36\u0e48\u0e07\u0e22\u0e32\u0e01\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e48\u0e33\u0e40\u0e2a\u0e21\u0e2d\n- **\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23:** \u0e44\u0e21\u0e48\u0e21\u0e35\u0e15\u0e31\u0e27\u0e08\u0e31\u0e14\u0e2a\u0e48\u0e07\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e34\u0e27\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 \u0e01\u0e32\u0e23\u0e2d\u0e49\u0e32\u0e07\u0e27\u0e48\u0e32\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e01\u0e48\u0e2d\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e08\u0e32\u0e01\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e43\u0e14\u0e43\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\n- **\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33:** \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e40\u0e0a\u0e48\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e07\u0e32\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e08\u0e30\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e25\u0e07 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 `_jobs` \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e08\u0e19\u0e32\u0e19\u0e38\u0e01\u0e23\u0e21\u0e02\u0e2d\u0e07\u0e2d\u0e34\u0e19\u0e2a\u0e41\u0e15\u0e19\u0e0b\u0e4c\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n\n## \u0e41\u0e1c\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\n\n1. \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e44\u0e27\u0e49\u0e01\u0e48\u0e2d\u0e19: \u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25, \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15, \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19, \u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d, \u0e27\u0e34\u0e18\u0e35\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19, \u0e41\u0e25\u0e30\u0e27\u0e48\u0e32\u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\n2. \u0e40\u0e1e\u0e34\u0e48\u0e21 `priority` \u0e25\u0e07\u0e43\u0e19 `Job` \u0e42\u0e14\u0e22\u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e01\u0e31\u0e1a\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e40\u0e01\u0e48\u0e32\n3. \u0e02\u0e22\u0e32\u0e22 `SchedulerService.create_job()` \u0e14\u0e49\u0e27\u0e22\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e25\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07 `Job` \u0e14\u0e49\u0e27\u0e22\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e41\u0e1a\u0e1a\u0e04\u0e35\u0e22\u0e4c\u0e40\u0e27\u0e34\u0e23\u0e4c\u0e14\n4. \u0e2b\u0e32\u0e01\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e33\u0e19\u0e36\u0e07\u0e16\u0e36\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 `JobRepository.all()` \u0e43\u0e2b\u0e49\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e01\u0e48\u0e2d\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 (identifier) \u0e40\u0e1b\u0e47\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e16\u0e31\u0e14\u0e44\u0e1b \u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e40\u0e0a\u0e48\u0e19\u0e19\u0e31\u0e49\u0e19 \u0e43\u0e2b\u0e49\u0e04\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e02\u0e2d\u0e07 repository \u0e44\u0e27\u0e49\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\n5. \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a:\n   - \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e2a\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e14\u0e34\u0e21\n   - \u0e01\u0e32\u0e23\u0e23\u0e31\u0e01\u0e29\u0e32\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n   - \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\n   - \u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e30\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e0a\u0e48\u0e27\u0e07\n   - \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07 `Job.to_dict()`\n   - \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e30\u0e14\u0e31\u0e1a\n   - \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19\n   - \u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e48\u0e32\u0e07\n6. \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15 README \u0e14\u0e49\u0e27\u0e22\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33\n7. \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e14\u0e49\u0e27\u0e22 `python3 -m unittest discover -s tests -v`.\n\n## \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\n\n- \u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19: **\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a 2 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23**.\n- \u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e17\u0e31\u0e48\u0e27\u0e17\u0e31\u0e49\u0e07\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32 `next_daily_run()` \u0e16\u0e39\u0e01\u0e15\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\n- \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07: **\u0e44\u0e21\u0e48\u0e21\u0e35**\n- \u0e01\u0e32\u0e23\u0e19\u0e33\u0e1f\u0e35\u0e40\u0e08\u0e2d\u0e23\u0e4c\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19: **\u0e44\u0e21\u0e48\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23** \u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\n\n&gt; **\u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b + \u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08**\n&gt;\n&gt; \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e32\u0e01\u0e19\u0e31\u0e01\u0e2b\u0e32\u0e01\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e21\u0e15\u0e32\u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e2a\u0e14\u0e07: \u0e2a\u0e48\u0e27\u0e19\u0e43\u0e2b\u0e0d\u0e48\u0e04\u0e37\u0e2d `models.py`, `service.py`, `repository.py` \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 \u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e27\u0e48\u0e32 \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e19\u0e35\u0e49\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e41\u0e15\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e25\u0e31\u0e01\u0e29\u0e13\u0e30\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e2a\u0e14\u0e07\u0e43\u0e19 `list_jobs()` \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e2a\u0e40\u0e01\u0e25\u0e04\u0e48\u0e32 \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e17\u0e34\u0e28\u0e17\u0e32\u0e07 \u0e41\u0e25\u0e30\u0e01\u0e0e\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e30\u0e41\u0e19\u0e19\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19.<\/pre><\/div><\/details><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07\u0e42\u0e04\u0e49\u0e14 Claude \u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a<\/p><pre># T1 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 \u2014 \u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e38\u0e49\u0e19\u0e40\u0e04\u0e22\n\n## \u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\n\n| \u0e2a\u0e19\u0e32\u0e21 | \u0e04\u0e48\u0e32 |\n| --- | --- |\n| \u0e07\u0e32\u0e19 | `T1` |\n| \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `01-prompts\/T1.md` |\n| SHA-256 \u0e02\u0e2d\u0e07\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `a571ff15c2502ec29b172ae2e77dd9ab0caca2869b91f9468d47571434d16c17` |\n| \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 | subagent Claude \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01, `general-purpose`, \u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e43\u0e2b\u0e21\u0e48 |\n| \u0e27\u0e34\u0e18\u0e35\u0e41\u0e22\u0e01 | **subagent fallback** (\u0e01\u0e32\u0e23\u0e25\u0e14\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49 \u2014 \u0e14\u0e39 `results\/isolation-decision.md`) |\n| \u0e2a\u0e33\u0e40\u0e19\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23 | `runtime\/workspaces\/T1` |\n| \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e42\u0e04\u0e49\u0e14 Claude | `2.1.220` |\n| \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25 | `claude-opus-5` |\n| start_utc | `2026-07-28T10:27:31Z` |\n| end_utc | `2026-07-28T10:28:32Z` |\n| Duration | 61 s (concurrent with T2\u2013T4; not a clean latency measurement) |\n| Attempt number | 1 |\n| Status | `valid` |\n| Human intervention | none |\n\n## Safe tool summary\n\n`date`, `find`, `ls`, `wc`, `stat`, `grep`, `Read` \u0e1a\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19 7 \u0e44\u0e1f\u0e25\u0e4c, `python3 -V`,\n`python3 -m unittest discover -s tests -v`. \u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\n\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\n\n## \u0e1c\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\n\n`python3 -m unittest discover -s tests -v` \u2192 2 tests, OK (exit 0). \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0b\u0e49\u0e33\u0e42\u0e14\u0e22\n\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\u0e08\u0e32\u0e01\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19: \u0e14\u0e39 `results\/checks\/T1-public.txt`.\n\n## \u0e41\u0e1e\u0e15\u0e0a\u0e4c\n\n\u0e44\u0e21\u0e48\u0e21\u0e35 `results\/T1\/patch.diff` \u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e27\u0e48\u0e32\u0e07 \u0e41\u0e25\u0e30 `diff -ru 02-fixture runtime\/workspaces\/T1`\n\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e43\u0e14\u0e46 \u0e07\u0e32\u0e19\u0e19\u0e35\u0e49\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e1f\u0e25\u0e4c; \u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\n\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\n\n## \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\n\n\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e40\u0e0a\u0e25\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e14\u0e49\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e49\u0e2d: `grep` \u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e49\u0e19\u0e43\u0e0a\u0e49\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a `--include=*.py` \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e43\u0e2a\u0e48\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e33\u0e1e\u0e39\u0e14 \u0e0b\u0e36\u0e48\u0e07\n\u0e40\u0e0a\u0e25\u0e25\u0e4c\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a (glob); \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e14\u0e49\u0e27\u0e22\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e43\u0e2a\u0e48\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e33\u0e1e\u0e39\u0e14\u0e41\u0e25\u0e49\u0e27\u0e08\u0e36\u0e07\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e15\u0e48\u0e2d\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07 (\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a)\n\n### 1. \u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e19\u0e35\u0e49\u0e04\u0e37\u0e2d\u0e2d\u0e30\u0e44\u0e23\n\n\u0e40\u0e1b\u0e47\u0e19 fixture \u0e02\u0e2d\u0e07\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 Python \u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07 \u0e0a\u0e37\u0e48\u0e2d `local-scheduler-1.0.0` (`fixture-manifest.json`), \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e43\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 MIT, \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e25\u0e34\u0e15 (`README.md`, `\"network_required\": false`). \u0e21\u0e35\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e21\u0e32\u0e01: 8 \u0e44\u0e1f\u0e25\u0e4c source\/doc \u0e1e\u0e23\u0e49\u0e2d\u0e21 manifest \u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 103 \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 Interpreter \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e04\u0e37\u0e2d **Python 3.9.6**. \u0e44\u0e21\u0e48\u0e21\u0e35 `pyproject.toml`, `setup.py`, \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 CI, linter \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17 \u2014 \u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e28\u0e44\u0e27\u0e49\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e04\u0e37\u0e2d `python3 -m unittest discover -s tests -v` (`README.md`)\n\n### 2. \u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\n\n\u0e2a\u0e32\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e1a\u0e27\u0e01\u0e42\u0e21\u0e14\u0e39\u0e25\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e15\u0e31\u0e27 \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e20\u0e32\u0e22\u0e43\u0e15\u0e49 `scheduler\/`:\n\n| \u0e0a\u0e31\u0e49\u0e19 | \u0e44\u0e1f\u0e25\u0e4c | \u0e2a\u0e31\u0e0d\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c | \u0e04\u0e27\u0e32\u0e21\u0e23\u0e31\u0e1a\u0e1c\u0e34\u0e14\u0e0a\u0e2d\u0e1a |\n|---|---|---|---|\n| \u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08\u0e1f\u0e32\u0e0b\u0e32\u0e14 | `scheduler\/__init__.py` | `__all__ = [\"SchedulerService\"]` | \u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e09\u0e1e\u0e32\u0e30 `SchedulerService` \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19; `Job`, `JobRepository`, \u0e41\u0e25\u0e30 `time_rules` \u0e44\u0e21\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e1e\u0e37\u0e49\u0e19\u0e1c\u0e34\u0e27\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30 |\n| \u0e42\u0e21\u0e40\u0e14\u0e25\u0e42\u0e14\u0e40\u0e21\u0e19 | `scheduler\/models.py` | `Job` (`@dataclass(frozen=True)`) | \u0e2d\u0e47\u0e2d\u0e1a\u0e40\u0e08\u0e01\u0e15\u0e4c\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 (immutable value object) \u0e17\u0e35\u0e48\u0e21\u0e35\u0e1f\u0e34\u0e25\u0e14\u0e4c `identifier: int`, `name: str`, `owner: str`, \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e17\u0e31\u0e49\u0e07 `to_dict()` \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a `asdict(self)` |\n| \u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 | `scheduler\/repository.py` | `JobRepository` | `dict` \u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e35\u0e22\u0e4c\u0e40\u0e1b\u0e47\u0e19 identifier; `save`, `get`, `all`, `delete` |\n| \u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e41\u0e2d\u0e1b\u0e1e\u0e25\u0e34\u0e40\u0e04\u0e0a\u0e31\u0e19 | `scheduler\/service.py` | `SchedulerService` | \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07, \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38, \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23: `create_job`, `list_jobs`, `delete_job` |\n| Orphan | `scheduler\/time_rules.py` | `next_daily_run` | \u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e04\u0e27\u0e32\u0e21\u0e0b\u0e49\u0e33 \u2014 **\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e42\u0e14\u0e22\u0e2d\u0e30\u0e44\u0e23\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e34\u0e49\u0e19** |\n\n\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27: `service.py` \u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e08\u0e32\u0e01 `.models` \u0e41\u0e25\u0e30 `.repository`; `repository.py` \u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e08\u0e32\u0e01 `.models`; `models.py` \u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e40\u0e1e\u0e35\u0e22\u0e07 `dataclasses` \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e27\u0e07\u0e08\u0e23 \u0e01\u0e32\u0e23\u0e09\u0e35\u0e14\u0e01\u0e32\u0e23\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32 (Dependency Injection) \u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e15\u0e48\u0e43\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33 \u2014 `SchedulerService.__init__(self, repository=None)` \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 `self.repository = repository or JobRepository()` \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e08\u0e36\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e27\u0e22 repository \u0e1b\u0e25\u0e2d\u0e21\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49\n\n\u0e42\u0e1b\u0e23\u0e14\u0e17\u0e23\u0e32\u0e1a\u0e27\u0e48\u0e32 `scheduler\/time_rules.py` \u0e40\u0e1b\u0e47\u0e19\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e43\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 \u0e1c\u0e21\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49 grep \u0e04\u0e49\u0e19\u0e2b\u0e32 `time_rules` \u0e41\u0e25\u0e30 `next_daily_run` \u0e43\u0e19\u0e17\u0e31\u0e49\u0e07\u0e15\u0e49\u0e19\u0e44\u0e21\u0e49; \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e1e\u0e1a\u0e21\u0e35\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e40\u0e2d\u0e07\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19 `expected_files` \u0e02\u0e2d\u0e07 `fixture-manifest.json` \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e21\u0e31\u0e19\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e21\u0e32\u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\n\n### 3. \u0e01\u0e32\u0e23\u0e44\u0e2b\u0e25\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n\n**\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e07\u0e32\u0e19** \u2014 `SchedulerService.create_job(name, owner)`:\n1. Guard: `if not name.strip(): raise ValueError('name is required\")`. \u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d *\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27* \u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a \u2014 `owner` \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e25\u0e22 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 owner \u0e17\u0e35\u0e48\u0e27\u0e48\u0e32\u0e07\u0e08\u0e36\u0e07\u0e16\u0e39\u0e01\u0e23\u0e31\u0e1a\u0e44\u0e27\u0e49\n2. \u0e2a\u0e23\u0e49\u0e32\u0e07: `Job(self._next_identifier, name.strip(), owner.strip())` \u2014 \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e15\u0e32\u0e21\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07 \u0e41\u0e25\u0e30\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e2a\u0e15\u0e23\u0e34\u0e07\u0e16\u0e39\u0e01\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e01\u0e34\u0e19\n3. Persist: `self.repository.save(job)`, \u0e0b\u0e36\u0e48\u0e07\u0e17\u0e33 `self._jobs[job.identifier] = job` \u0e41\u0e25\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 job \u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\n4. \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e19\u0e31\u0e1a: `self._next_identifier += 1` \u2014 *\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01* \u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e2b\u0e32\u0e01\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e22\u0e01\u0e40\u0e27\u0e49\u0e19 \u0e15\u0e31\u0e27\u0e19\u0e31\u0e1a\u0e08\u0e30\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e43\u0e0a\u0e49\n5. \u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e2d\u0e34\u0e19\u0e2a\u0e41\u0e15\u0e19\u0e0b\u0e4c `Job` (\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `job` \u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e40\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e04\u0e37\u0e19\u0e08\u0e32\u0e01\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35)\n\n\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 (identifier) \u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 **\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23** \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 (`self._next_identifier = 1` \u0e43\u0e19 `SchedulerService.__init__`). \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e38\u0e14\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e2a\u0e33\u0e04\u0e31\u0e0d: \u0e01\u0e32\u0e23\u0e09\u0e35\u0e14\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e21\u0e35\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\u0e08\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e19\u0e31\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e32\u0e01 1\n\n**\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19** \u2014 `SchedulerService.list_jobs()` \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e15\u0e23\u0e07\u0e44\u0e1b\u0e22\u0e31\u0e07 `JobRepository.all()` \u0e0b\u0e36\u0e48\u0e07\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `[self._jobs[key] for key in sorted(self._jobs)]` \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19 **\u0e41\u0e1a\u0e1a\u0e02\u0e36\u0e49\u0e19\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21** \u0e0b\u0e36\u0e48\u0e07\u0e43\u0e19\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01 \u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e35\u0e22\u0e01\u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e21\u0e48 \u0e41\u0e15\u0e48\u0e15\u0e31\u0e27\u0e2d\u0e47\u0e2d\u0e1a\u0e40\u0e08\u0e47\u0e01\u0e15\u0e4c `Job` \u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u2014 \u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e40\u0e1e\u0e23\u0e32\u0e30 `Job` \u0e16\u0e39\u0e01\u0e15\u0e23\u0e36\u0e07\u0e44\u0e27\u0e49\n\n**\u0e01\u0e32\u0e23\u0e25\u0e1a** \u2014 `SchedulerService.delete_job(identifier)` \u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e49 `JobRepository.delete` \u0e0b\u0e36\u0e48\u0e07\u0e04\u0e37\u0e2d `self._jobs.pop(identifier)` \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e08\u0e36\u0e07\u0e08\u0e30\u0e40\u0e01\u0e34\u0e14 `KeyError` \u0e2b\u0e32\u0e01 ID \u0e44\u0e21\u0e48\u0e1e\u0e1a \u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a `JobRepository.get` \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `None` \u0e43\u0e19\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\n\n**\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49** \u2014 `tests\/test_scheduler.py` \u0e21\u0e35\u0e01\u0e23\u0e13\u0e35\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19: `test_create_and_list_jobs` (\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32 `job.identifier == 1` \u0e41\u0e25\u0e30 `[job] == service.list_jobs()`) \u0e41\u0e25\u0e30 `test_blank_name_is_rejected`. \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e1a\u0e19\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\n\n### 4. \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e2d\u0e32\u0e08\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\n\n\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19\u0e08\u0e32\u0e01\u0e2a\u0e39\u0e07\u0e44\u0e1b\u0e15\u0e48\u0e33:\n\n1. **`scheduler\/models.py`** \u2014 \u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 `Job` \u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e1f\u0e34\u0e25\u0e14\u0e4c `priority` \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 dataclass \u0e21\u0e35\u0e04\u0e48\u0e32 `frozen=True` \u0e41\u0e25\u0e30\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07 (positional) \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 \u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 (\u0e40\u0e0a\u0e48\u0e19 `priority: int = 0`) \u0e2b\u0e23\u0e37\u0e2d\u0e15\u0e49\u0e2d\u0e07\u0e16\u0e39\u0e01\u0e27\u0e32\u0e07\u0e44\u0e27\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e2a\u0e32\u0e21\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e21\u0e34\u0e09\u0e30\u0e19\u0e31\u0e49\u0e19 \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e08\u0e30\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 `to_dict()` \u0e44\u0e21\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02 \u2014 `asdict(self)` \u0e08\u0e30\u0e23\u0e31\u0e1a\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e19\u0e35\u0e49\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e0b\u0e36\u0e48\u0e07\u0e16\u0e37\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e01\u0e32\u0e23\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e41\u0e1a\u0e1a\u0e40\u0e07\u0e35\u0e22\u0e1a (silent serialization-contract change) \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e42\u0e04\u0e49\u0e14\n2. **`scheduler\/service.py`** \u2014 \u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 `create_job` \u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c `priority` \u0e41\u0e25\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e48\u0e07\u0e21\u0e31\u0e19\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e04\u0e2d\u0e19\u0e2a\u0e15\u0e23\u0e31\u0e04\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e41\u0e1a\u0e1a\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07 `Job(...)` \u0e17\u0e35\u0e48\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 13. \u0e2b\u0e32\u0e01 priority \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 (\u0e0a\u0e48\u0e27\u0e07\u0e04\u0e48\u0e32, \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01\u0e02\u0e2d\u0e07 enum) \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e19\u0e35\u0e49\u0e04\u0e27\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e16\u0e31\u0e14\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a `name.strip()` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e2b\u0e32\u0e01\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d `list_jobs` \u0e04\u0e37\u0e2d\u0e08\u0e38\u0e14\u0e17\u0e35\u0e48\u0e19\u0e42\u0e22\u0e1a\u0e32\u0e22\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e23\u0e16\u0e39\u0e01\u0e27\u0e32\u0e07\u0e44\u0e27\u0e49 \u0e2b\u0e32\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49 repository \u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e07\u0e48\u0e32\u0e22\n3. **`scheduler\/repository.py`** \u2014 \u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49\u0e2a\u0e39\u0e07 `sorted(self._jobs)` \u0e43\u0e19 `JobRepository.all()` \u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07 *\u0e04\u0e35\u0e22\u0e4c* \u0e02\u0e2d\u0e07 dict \u0e04\u0e37\u0e2d \u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e04\u0e48\u0e32\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e04\u0e35\u0e22\u0e4c \u0e40\u0e0a\u0e48\u0e19 `(-job.priority, job.identifier)` \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e15\u0e31\u0e27\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e17\u0e35\u0e48\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e41\u0e22\u0e01\u0e15\u0e48\u0e32\u0e07\u0e2b\u0e32\u0e01 \u0e2d\u0e22\u0e48\u0e32\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e01\u0e23\u0e13\u0e35\u0e40\u0e2a\u0e21\u0e2d\u0e01\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e19\u0e31\u0e22: \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e43\u0e19 dict \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32\u0e44\u0e14\u0e49\n4. **`tests\/test_scheduler.py`** \u2014 \u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 \u0e01\u0e23\u0e13\u0e35\u0e43\u0e2b\u0e21\u0e48\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e15\u0e32\u0e21\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e42\u0e1b\u0e23\u0e14\u0e17\u0e23\u0e32\u0e1a\u0e27\u0e48\u0e32 `assertEqual([job], service.list_jobs())` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a *\u0e27\u0e31\u0e15\u0e16\u0e38\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19* \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e08\u0e36\u0e07\u0e22\u0e31\u0e07\u0e04\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e41\u0e21\u0e49\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e43\u0e2b\u0e21\u0e48 \u0e41\u0e15\u0e48\u0e08\u0e30\u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e32\u0e01\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a `Job` \u0e25\u0e34\u0e40\u0e17\u0e2d\u0e23\u0e31\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48\n5. **`README.md`** \u2014 \u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1b\u0e44\u0e14\u0e49\u0e2a\u0e39\u0e07 \u0e2b\u0e32\u0e01\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e38\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e02\u0e2d\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d (\u0e1b\u0e25\u0e32\u0e22\u0e0a\u0e48\u0e27\u0e07\u0e43\u0e14\u0e0a\u0e19\u0e30, \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19) \u0e17\u0e35\u0e48\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21\n6. **`scheduler\/__init__.py`** \u2014 \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01 enum \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e48\u0e32\u0e04\u0e07\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e1a `SchedulerService`\n7. **`fixture-manifest.json`** \u2014 \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e38\u0e13\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c\u0e42\u0e21\u0e14\u0e39\u0e25\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19; \u0e2d\u0e32\u0e23\u0e4c\u0e40\u0e23\u0e22\u0e4c `expected_files` \u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e41\u0e25\u0e30\u0e2d\u0e32\u0e08\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49\n8. **`scheduler\/time_rules.py`** \u2014 *\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23* \u0e16\u0e39\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e44\u0e21\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e01\u0e34\u0e14\u0e0b\u0e49\u0e33 \u0e41\u0e25\u0e30\u0e42\u0e21\u0e14\u0e39\u0e25\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\n\n### 5. \u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e2b\u0e25\u0e31\u0e01\n\n- **\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e43\u0e19\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e41\u0e08\u0e49\u0e07\u0e43\u0e2b\u0e49\u0e17\u0e23\u0e32\u0e1a** `JobRepository.all()` \u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19 \u0e41\u0e25\u0e30 `list_jobs` \u0e2a\u0e37\u0e1a\u0e17\u0e2d\u0e14\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e19\u0e35\u0e49\u0e08\u0e30\u0e16\u0e39\u0e01\u0e17\u0e33\u0e25\u0e32\u0e22\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e2b\u0e21\u0e48 \u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19: `list_jobs()` \u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22 \u0e2b\u0e23\u0e37\u0e2d\u0e08\u0e30\u0e21\u0e35 `list_jobs_by_priority()` \u0e43\u0e2b\u0e21\u0e48\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e02\u0e36\u0e49\u0e19\u0e04\u0e27\u0e1a\u0e04\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e21\u0e31\u0e19? \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e23\u0e01\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e2a\u0e39\u0e07 \u0e41\u0e25\u0e30\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 `test_create_and_list_jobs` \u0e2d\u0e48\u0e2d\u0e19\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e23\u0e27\u0e08\u0e08\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22 (\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e07\u0e04\u0e4c\u0e1b\u0e23\u0e30\u0e01\u0e2d\u0e1a\u0e40\u0e14\u0e35\u0e22\u0e27)\n- **\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e19\u0e31\u0e49\u0e19\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07** \"Priority 1' \u0e15\u0e32\u0e21\u0e18\u0e23\u0e23\u0e21\u0e40\u0e19\u0e35\u0e22\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07 *\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14* \u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e1a\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a \u0e41\u0e25\u0e30 *\u0e15\u0e48\u0e33\u0e2a\u0e38\u0e14* \u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e37\u0e48\u0e19 \u0e46 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2a\u0e34\u0e48\u0e07\u0e43\u0e14\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e19\u0e35\u0e49 \u2014 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e2d\u0e21\u0e40\u0e21\u0e19\u0e15\u0e4c \u0e44\u0e21\u0e48\u0e21\u0e35 docstring \u0e44\u0e21\u0e48\u0e21\u0e35\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e19 README \u2014 \u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23\u0e2b\u0e19\u0e36\u0e48\u0e07 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49\u0e43\u0e19 `models.py` \u0e41\u0e25\u0e30\u0e40\u0e02\u0e35\u0e22\u0e19\u0e25\u0e07\u0e43\u0e19\u0e40\u0e17\u0e2a\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e35\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e19\u0e49\u0e2d\u0e22\u0e2a\u0e32\u0e21\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n- **\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e2a\u0e21\u0e2d\u0e01\u0e31\u0e19\u0e44\u0e21\u0e48\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23** \u0e2b\u0e32\u0e01\u0e07\u0e32\u0e19\u0e2a\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e21\u0e35\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19 \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e14\u0e49\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 `sorted` \u0e02\u0e2d\u0e07 Python \u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23 \u0e41\u0e15\u0e48\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\u0e08\u0e30\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e01\u0e47\u0e15\u0e48\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27\u0e40\u0e2a\u0e21\u0e2d \u0e43\u0e2b\u0e49\u0e23\u0e27\u0e21 `identifier` \u0e40\u0e1b\u0e47\u0e19\u0e04\u0e35\u0e22\u0e4c\u0e23\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e40\u0e2a\u0e21\u0e2d\n- **\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e43\u0e19 Frozen-dataclass** `Job` \u0e40\u0e1b\u0e47\u0e19 `@dataclass(frozen=True)` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e15\u0e31\u0e27 \u0e41\u0e25\u0e30 `service.py:13` \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e21\u0e31\u0e19\u0e15\u0e32\u0e21\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07 \u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01 `priority` \u0e17\u0e35\u0e48\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22 \u0e2b\u0e23\u0e37\u0e2d\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e43\u0e2b\u0e49\u0e42\u0e04\u0e49\u0e14\u0e40\u0e14\u0e34\u0e21\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34 \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e2a\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e32\u0e08\u0e44\u0e21\u0e48\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\n- **\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e02\u0e2d\u0e07 `to_dict()`** `asdict(self)` \u0e2a\u0e30\u0e17\u0e49\u0e2d\u0e19\u0e17\u0e38\u0e01\u0e1f\u0e34\u0e25\u0e14\u0e4c \u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 `priority` \u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e38\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e43\u0e19\u0e15\u0e31\u0e27\u0e40\u0e21\u0e18\u0e2d\u0e14\u0e02\u0e2d\u0e07 `models.py` \u0e2a\u0e34\u0e48\u0e07\u0e43\u0e14\u0e17\u0e35\u0e48\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e39\u0e1b\u0e17\u0e23\u0e07\u0e02\u0e2d\u0e07 dict \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33\u0e08\u0e30\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\n- **\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e2d\u0e07 Python 3.9.6**** \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49 `@dataclass(slots=True)` (3.10+), `kw_only=True` (3.10+), \u0e41\u0e25\u0e30 PEP 604 `int | None` \u0e44\u0e14\u0e49 \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e13\u0e30\u0e23\u0e31\u0e19\u0e44\u0e17\u0e21\u0e4c\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49 `from __future__ import annotations`. \u0e2b\u0e32\u0e01\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e16\u0e39\u0e01\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19 enum, `enum.StrEnum` \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19 3.11+ \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e2a\u0e34\u0e48\u0e07\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21\u0e43\u0e19\u0e02\u0e49\u0e2d\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49 fixture \u0e17\u0e33\u0e07\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e1a\u0e19\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e25\u0e19\u0e35\u0e49\n- **\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14** `SchedulerService._next_identifier` \u0e2b\u0e21\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e23\u0e31\u0e1a\u0e1c\u0e34\u0e14\u0e0a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 ID \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e39\u0e49\u0e23\u0e31\u0e1a\u0e1c\u0e34\u0e14\u0e0a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e2b\u0e32\u0e01\u0e07\u0e32\u0e19\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e19\u0e33\u0e44\u0e1b\u0e2a\u0e39\u0e48\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e1f\u0e34\u0e01\u0e0b\u0e4c\u0e40\u0e08\u0e2d\u0e23\u0e4c\u0e17\u0e35\u0e48\u0e42\u0e2b\u0e25\u0e14\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e01\u0e32\u0e23\u0e41\u0e1a\u0e48\u0e07\u0e41\u0e22\u0e01\u0e19\u0e35\u0e49\u0e08\u0e30\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e01\u0e32\u0e23\u0e0a\u0e19\u0e01\u0e31\u0e19\u0e02\u0e2d\u0e07 ID \u0e41\u0e25\u0e30\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\n- **\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e21\u0e21\u0e32\u0e15\u0e23** `JobRepository.get` \u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `None` \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e44\u0e21\u0e48\u0e1e\u0e1a \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48 `JobRepository.delete` \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14 `KeyError` \u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a priority \u0e04\u0e27\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2a\u0e37\u0e1a\u0e17\u0e2d\u0e14\u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e42\u0e14\u0e22\u0e1a\u0e31\u0e07\u0e40\u0e2d\u0e34\u0e0d\n- **\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07** `create_job` \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07 `name` \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a `owner` \u0e2d\u0e22\u0e48\u0e32\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e25\u0e30\u0e2b\u0e25\u0e27\u0e21\u0e19\u0e35\u0e49\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e1a `priority` \u2014 \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e30\u0e41\u0e1e\u0e23\u0e48\u0e01\u0e23\u0e30\u0e08\u0e32\u0e22\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e04\u0e35\u0e22\u0e4c\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07 \u0e41\u0e25\u0e30\u0e2d\u0e32\u0e08\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14 `TypeError` \u0e25\u0e36\u0e01\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19 `sorted` (\u0e40\u0e0a\u0e48\u0e19 \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a `int` \u0e01\u0e31\u0e1a `None`) \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e01\u0e34\u0e14\u0e02\u0e36\u0e49\u0e19\u0e17\u0e35\u0e48\u0e08\u0e38\u0e14\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\n- **\u0e01\u0e31\u0e1a\u0e14\u0e31\u0e01\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19** `scheduler\/time_rules.py` \u0e14\u0e39\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e23\u0e23\u0e01\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e27\u0e25\u0e32\u0e41\u0e25\u0e30\u0e08\u0e30\u0e14\u0e36\u0e07\u0e14\u0e39\u0e14\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e41\u0e15\u0e48\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e42\u0e14\u0e22\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22 \u0e41\u0e25\u0e30 docstring \u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e40\u0e2d\u0e07\u0e01\u0e47\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e19\u0e35\u0e49: \u0e21\u0e31\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e43\u0e19 UTC \u0e41\u0e25\u0e30 \"\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e43\u0e2b\u0e49\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e2d\u0e2d\u0e21\u0e41\u0e2a\u0e07\" \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e21\u0e31\u0e19\u0e44\u0e21\u0e48\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e44\u0e14\u0e49\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e44\u0e1b\u0e08\u0e36\u0e07\u0e2a\u0e39\u0e0d\u0e40\u0e1b\u0e25\u0e48\u0e32 \u0e41\u0e25\u0e30\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e43\u0e14\u0e17\u0e35\u0e48\u0e40\u0e02\u0e35\u0e22\u0e19\u0e02\u0e36\u0e49\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e21\u0e31\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e43\u0e14\u0e17\u0e35\u0e48\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e44\u0e1b\n- **\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e17\u0e35\u0e48\u0e1a\u0e32\u0e07** \u0e21\u0e35\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2a\u0e2d\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e44\u0e21\u0e48\u0e21\u0e35 CI \u0e44\u0e21\u0e48\u0e21\u0e35 linter \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e30\u0e44\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e08\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22\u0e44\u0e14\u0e49\u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e40\u0e02\u0e35\u0e22\u0e19\u0e40\u0e2d\u0e07 \u0e43\u0e2b\u0e49\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e0a\u0e38\u0e14\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1e\u0e2d \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e32\u0e19\n\n### 6. \u0e41\u0e1c\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 (\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23)\n\n1. **\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e01\u0e48\u0e2d\u0e19 \u0e42\u0e14\u0e22\u0e40\u0e02\u0e35\u0e22\u0e19\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e32\u0e22\u0e25\u0e31\u0e01\u0e29\u0e13\u0e4c\u0e2d\u0e31\u0e01\u0e29\u0e23** \u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d (`int` vs enum), \u0e0a\u0e48\u0e27\u0e07\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07, \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\/\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14, \u0e41\u0e25\u0e30\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19 docstring \u0e1a\u0e19 `Job` \u0e43\u0e19 `scheduler\/models.py` \u2014 \u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e08\u0e38\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e17\u0e35\u0e48\u0e17\u0e38\u0e01\u0e0a\u0e31\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e1e\u0e36\u0e48\u0e07\u0e1e\u0e32\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\n2. **\u0e02\u0e22\u0e32\u0e22\u0e42\u0e21\u0e40\u0e14\u0e25** \u0e40\u0e1e\u0e34\u0e48\u0e21 `priority: int = 0` \u0e40\u0e1b\u0e47\u0e19\u0e1f\u0e34\u0e25\u0e14\u0e4c *\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22* \u0e02\u0e2d\u0e07 `Job` \u0e43\u0e19 `scheduler\/models.py` \u0e42\u0e14\u0e22\u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e14\u0e49\u0e32\u0e19\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07\u0e01\u0e31\u0e1a `service.py:13` \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 `to_dict()`\n3. **\u0e19\u0e33\u0e21\u0e31\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23** \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c `priority` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a `SchedulerService.create_job`, \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e02\u0e49\u0e32\u0e07\u0e46 \u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02 `name.strip()` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 (\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14 `ValueError` \u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49), \u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e21\u0e31\u0e19\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e15\u0e31\u0e27\u0e2a\u0e23\u0e49\u0e32\u0e07 `Job`\n4. **\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e41\u0e2a\u0e14\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19** \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e15\u0e48\u0e33\u0e17\u0e35\u0e48\u0e41\u0e19\u0e30\u0e19\u0e33: \u0e1b\u0e25\u0e48\u0e2d\u0e22 `JobRepository.all()` \u0e44\u0e27\u0e49\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21\u0e43\u0e19\u0e10\u0e32\u0e19\u0e30\u0e40\u0e21\u0e18\u0e2d\u0e14\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 \u0e41\u0e25\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e21\u0e18\u0e2d\u0e14\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e41\u0e22\u0e01\u0e15\u0e48\u0e32\u0e07\u0e2b\u0e32\u0e01\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e2b\u0e32\u0e01 `list_jobs()` \u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22 \u0e43\u0e2b\u0e49\u0e1b\u0e23\u0e31\u0e1a\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e19\u0e34\u0e1e\u0e08\u0e19\u0e4c\u0e02\u0e2d\u0e07 `JobRepository.all()` \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e04\u0e48\u0e32\u0e15\u0e32\u0e21\u0e04\u0e35\u0e22\u0e4c\u0e1c\u0e2a\u0e21\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e23\u0e27\u0e21\u0e16\u0e36\u0e07 `identifier` \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19 \u0e41\u0e25\u0e30\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e19\u0e35\u0e49\u0e43\u0e19 `README.md`\n5. **\u0e23\u0e31\u0e01\u0e29\u0e32 `scheduler\/__init__.py` \u0e43\u0e2b\u0e49\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19** \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 enum \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e48\u0e32\u0e04\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n6. **\u0e2d\u0e22\u0e48\u0e32\u0e41\u0e15\u0e30 `scheduler\/time_rules.py`** \u0e41\u0e25\u0e30\u0e2d\u0e22\u0e48\u0e32\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48 \u0e40\u0e27\u0e49\u0e19\u0e41\u0e15\u0e48 `expected_files` \u0e43\u0e19 `fixture-manifest.json` \u0e08\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e43\u0e19\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\n\n### 7. \u0e41\u0e1c\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\n\n- **\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e08\u0e32\u0e01 Baseline \u0e01\u0e48\u0e2d\u0e19** \u0e23\u0e31\u0e19 `python3 -m unittest discover -s tests -v` \u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e43\u0e14\u0e46 \u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32 2 \u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27 \u0e1c\u0e21\u0e44\u0e14\u0e49\u0e17\u0e33\u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\u0e41\u0e25\u0e49\u0e27 \u2014 \u0e1c\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c\n- **\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22** \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e14\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e2b\u0e32\u0e01 `test_create_and_list_jobs` \u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e19\u0e31\u0e48\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e13\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e01\u0e33\u0e25\u0e31\u0e07\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\n- **\u0e01\u0e23\u0e13\u0e35\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19 `tests\/test_scheduler.py`:**\n  - \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e35\u0e22\u0e01 `create_job` \u0e14\u0e49\u0e27\u0e22\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e2a\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e41\u0e1a\u0e1a\u0e40\u0e01\u0e48\u0e32 (\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49\u0e01\u0e31\u0e1a\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e40\u0e01\u0e48\u0e32)\n  - \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e41\u0e1a\u0e1a\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e1c\u0e48\u0e32\u0e19 `create_job` \u2192 `list_jobs`\n  - \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e14\u0e49\u0e27\u0e22 **\u0e2a\u0e32\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32** \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e42\u0e14\u0e22\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u2014 \u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\n  - \u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19: \u0e07\u0e32\u0e19\u0e2a\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19\u0e08\u0e30\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19\n  - \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e30\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14 `ValueError` \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e30\u0e17\u0e49\u0e2d\u0e19\u0e01\u0e23\u0e13\u0e35\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e48\u0e32\u0e07\n  - `to_dict()` \u0e23\u0e27\u0e21 `priority` \u0e14\u0e49\u0e27\u0e22\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e44\u0e27\u0e49\n  - \u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 repositori \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e09\u0e35\u0e14: `SchedulerService(repository=fake)` \u0e22\u0e31\u0e07\u0e04\u0e07\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49\u0e08\u0e38\u0e14\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d `repository or JobRepository()`\n- **\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49** \u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e17\u0e38\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e1a\u0e19 Python 3.9.6 \u0e42\u0e14\u0e22\u0e40\u0e09\u0e1e\u0e32\u0e30 \u2014 \u0e44\u0e21\u0e48\u0e21\u0e35 `slots=`, \u0e44\u0e21\u0e48\u0e21\u0e35 `kw_only=`, \u0e44\u0e21\u0e48\u0e21\u0e35 union PEP 604 \u0e41\u0e1a\u0e1a\u0e40\u0e1b\u0e25\u0e48\u0e32, \u0e44\u0e21\u0e48\u0e21\u0e35 `StrEnum`.\n- **\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23** \u0e2d\u0e48\u0e32\u0e19 `fixture-manifest.json` \u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e30\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e0a\u0e38\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e1a\u0e19\u0e14\u0e34\u0e2a\u0e01\u0e4c\u0e22\u0e31\u0e07\u0e04\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a `expected_files`\n- **\u0e04\u0e27\u0e32\u0e21\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19** \u0e23\u0e31\u0e19\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e32\u0e21\u0e04\u0e23\u0e31\u0e49\u0e07; \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e27\u0e19\u0e0b\u0e49\u0e33\u0e02\u0e2d\u0e07 dict \u0e2d\u0e32\u0e08\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e02\u0e36\u0e49\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e04\u0e23\u0e32\u0e27\n- **\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e30\u0e2d\u0e32\u0e14** \u0e23\u0e31\u0e19\u0e14\u0e49\u0e27\u0e22 `PYTHONDONTWRITEBYTECODE=1` \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e44\u0e14\u0e40\u0e23\u0e01\u0e17\u0e2d\u0e23\u0e35 `__pycache__` \u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e27\u0e32\u0e21\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a manifest.\n<\/pre><\/div><\/details><\/div><p class=\"d-limit\">\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e2d\u0e07 Fixture: \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 Python \u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01 Claude \u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e02\u0e2d\u0e07 subagent \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 CLI OAuth \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19.<\/p><\/article>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e2a\u0e14\u0e07\u0e16\u0e36\u0e07\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a monorepo \u0e02\u0e19\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e19\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e25\u0e32\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c \u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e19\u0e35\u0e49\u0e16\u0e39\u0e01\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e43\u0e2b\u0e49\u0e21\u0e35\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e41\u0e25\u0e30\u0e2d\u0e22\u0e39\u0e48\u0e20\u0e32\u0e22\u0e43\u0e15\u0e49\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08 \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e08\u0e23\u0e34\u0e07 \u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27: \u0e02\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e15\u0e48\u0e25\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e40\u0e23\u0e35\u0e22\u0e01\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19 \u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e23\u0e30\u0e1a\u0e38\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02.<\/p>\n\n\n\n<h2 id=\"implementation\" class=\"wp-block-heading\">\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 \u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e41\u0e25\u0e30\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19\u0e2d\u0e32\u0e08\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e17\u0e32\u0e07\u0e27\u0e34\u0e28\u0e27\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e43\u0e19 T2 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e44\u0e14\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 30\/30 \u0e41\u0e25\u0e30\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e1a\u0e1a\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 (frozen hidden validator) Code Claude \u0e44\u0e14\u0e49\u0e27\u0e32\u0e07\u0e08\u0e38\u0e14\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14 \u0e41\u0e25\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07 (direct-model) \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e04\u0e48\u0e32\u0e40\u0e01\u0e13\u0e11\u0e4c (threshold) \u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19 \u0e2a\u0e48\u0e27\u0e19 Codex \u0e43\u0e0a\u0e49\u0e01\u0e32\u0e23\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e25\u0e32\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 (service-centered) \u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e01\u0e27\u0e48\u0e32 \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e47\u0e1c\u0e48\u0e32\u0e19\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e44\u0e14\u0e49\u0e40\u0e0a\u0e48\u0e19\u0e01\u0e31\u0e19.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e2d\u0e34\u0e2a\u0e23\u0e30 \u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e2a\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e27\u0e32\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e01\u0e1b\u0e49\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e04\u0e07\u0e17\u0e35\u0e48 (invariants) \u0e44\u0e14\u0e49\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e31\u0e15\u0e16\u0e38\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 \u0e2a\u0e48\u0e27\u0e19\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e01\u0e27\u0e48\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e25\u0e14\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e0b\u0e49\u0e33 (regression surface) \u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49 \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e38\u0e14\u0e40\u0e02\u0e49\u0e32\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08\u0e44\u0e27\u0e49 \u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e01\u0e0e\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e19\u0e31\u0e1a\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19.<\/p>\n\n\n\n<style>\n.evidence-t2-multifile-feature{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}\n.evidence-t2-multifile-feature *{box-sizing:border-box}.evidence-t2-multifile-feature .d-head{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;padding:24px 26px 20px;border-bottom:1px solid var(--line)}\n.evidence-t2-multifile-feature .d-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.evidence-t2-multifile-feature .d-title{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.evidence-t2-multifile-feature .d-sub{margin:7px 0 0;color:var(--body);font-size:13px}.evidence-t2-multifile-feature .d-pill{flex:0 0 auto;padding:6px 10px;border:1px solid #ccd6ff;border-radius:999px;color:#2448ca;background:#f0f3ff;font-size:11px;font-weight:800}.evidence-t2-multifile-feature .d-grid{display:grid;grid-template-columns:1fr 1fr}.evidence-t2-multifile-feature .d-side{min-width:0;padding:24px 26px}.evidence-t2-multifile-feature .d-side+.d-side{border-left:1px solid var(--line)}.evidence-t2-multifile-feature .d-product{display:flex;align-items:baseline;justify-content:space-between;gap:14px;font-weight:800}.evidence-t2-multifile-feature .d-score{font-size:34px;line-height:1;letter-spacing:-.05em}.evidence-t2-multifile-feature .d-score small{color:var(--muted);font-size:12px;letter-spacing:0}.evidence-t2-multifile-feature .d-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:18px 0}.evidence-t2-multifile-feature .d-metric{padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.evidence-t2-multifile-feature .d-metric span{display:block;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.evidence-t2-multifile-feature .d-metric strong{display:block;margin-top:3px;font-size:13px}.evidence-t2-multifile-feature .d-preview{position:relative;height:192px;overflow:hidden;border:1px solid #29313f;border-radius:6px;background:#11151d;color:#edf0f5}.evidence-t2-multifile-feature .d-preview-label{padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.1);color:#aeb7c7;font:750 9px\/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase}.evidence-t2-multifile-feature .d-preview pre,.evidence-t2-multifile-feature .d-full pre{margin:0;white-space:pre-wrap;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.evidence-t2-multifile-feature .d-preview pre{padding:13px}.evidence-t2-multifile-feature .d-preview:after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:55px;background:linear-gradient(transparent,#11151d)}.evidence-t2-multifile-feature .d-take{margin:14px 0 0;color:var(--body);font-size:12px}.evidence-t2-multifile-feature .d-fulls{padding:0 26px 22px}.evidence-t2-multifile-feature .d-full{margin-top:10px;border:1px solid var(--line);border-radius:6px}.evidence-t2-multifile-feature .d-full summary{cursor:pointer;padding:13px 14px;font-size:12px;font-weight:800;list-style:none}.evidence-t2-multifile-feature .d-full summary::-webkit-details-marker{display:none}.evidence-t2-multifile-feature .d-full summary:after{content:\"+\";float:right;color:var(--blue);font-size:17px}.evidence-t2-multifile-feature .d-full[open] summary:after{content:\"\u2212\"}.evidence-t2-multifile-feature .d-full-pane{padding:0 14px 14px}.evidence-t2-multifile-feature .d-full-note{margin:0 0 9px;color:var(--muted);font-size:10px}.evidence-t2-multifile-feature .d-full pre{max-height:620px;overflow:auto;padding:15px;border-radius:5px;background:#f5f6f8;color:#222936;border:1px solid #e0e3e8}.evidence-t2-multifile-feature .d-limit{margin:0;padding:12px 26px;border-top:1px solid var(--line);color:#5a6270;background:#fafbfc;font-size:11px}\n@media(max-width:760px){.evidence-t2-multifile-feature .d-head{display:block}.evidence-t2-multifile-feature .d-pill{display:inline-block;margin-top:12px}.evidence-t2-multifile-feature .d-grid{grid-template-columns:1fr}.evidence-t2-multifile-feature .d-side+.d-side{border-left:0;border-top:1px solid var(--line)}}@media(max-width:480px){.evidence-t2-multifile-feature .d-head,.evidence-t2-multifile-feature .d-side{padding:20px}.evidence-t2-multifile-feature .d-fulls{padding:0 20px 20px}.evidence-t2-multifile-feature .d-metrics{grid-template-columns:1fr}}\n<\/style><article class=\"evidence-t2-multifile-feature\"><header class=\"d-head\"><div><p class=\"d-kicker\">T2 \u00b7 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/p><h3 class=\"d-title\">\u0e19\u0e33\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c<\/h3><p class=\"d-sub\">\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e41\u0e1a\u0e1a\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 \u0e23\u0e31\u0e01\u0e29\u0e32\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e19\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e41\u0e25\u0e30\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48.<\/p><\/div><span class=\"d-pill\">\u0e40\u0e19\u0e04\u0e44\u0e17\u0e41\u0e1a\u0e1a\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49<\/span><\/header><div class=\"d-grid\"><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e08\u0e32\u0e01 Codex\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><span class=\"d-score\">30<small>\/30<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>115 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>7 + \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e01\u0e27\u0e48\u0e32<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>\u0e44\u0e14\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 (immutable model), \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 (service boundary), \u0e41\u0e25\u0e30\u0e23\u0e31\u0e01\u0e29\u0e32\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\n\n\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e17\u0e31\u0e49\u0e07\u0e40\u0e08\u0e47\u0e14\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e41\u0e25\u0e30\u0e16\u0e39\u0e01\u0e15\u0e23\u0e36\u0e07 (frozen hidden validator) \u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e01\u0e32\u0e23\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e01\u0e27\u0e48\u0e32\u0e41\u0e25\u0e30\u0e40\u0e19\u0e49\u0e19\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e2d\u0e1a\u0e2a\u0e19\u0e2d\u0e07\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e23\u0e36\u0e07\u0e44\u0e27\u0e49\u0e17\u0e38\u0e01\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23.<\/p><\/section><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e23\u0e2b\u0e31\u0e2a Claude\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><span class=\"d-score\">30<small>\/30<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>101 s<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>14 + \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>\u0e44\u0e14\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e43\u0e19\u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e23\u0e31\u0e01\u0e29\u0e32\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e41\u0e25\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e04\u0e48\u0e32\u0e40\u0e01\u0e13\u0e11\u0e4c\n\n\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30 14 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e14\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e41\u0e1a\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25\u0e15\u0e23\u0e07\u0e41\u0e25\u0e30\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e04\u0e30\u0e41\u0e19\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19.<\/p><\/section><\/div><div class=\"d-fulls\"><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07 Codex \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e41\u0e25\u0e49\u0e27<\/p><pre>\u0e44\u0e14\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e27\u0e25\u0e32\u0e41\u0e25\u0e49\u0e27\n\n\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07:\n\n- [scheduler\/models.py](.\/scheduler\/models.py:5) \u2014 \u0e40\u0e1e\u0e34\u0e48\u0e21 `priority` \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e19\u0e38\u0e01\u0e23\u0e21 \u0e42\u0e14\u0e22\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e04\u0e37\u0e2d `0`\n- [scheduler\/service.py](.\/scheduler\/service.py:11) \u2014 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\u0e14\u0e49\u0e27\u0e22 `list_jobs(min_priority=0)` \u0e42\u0e14\u0e22\u0e23\u0e31\u0e01\u0e29\u0e32\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\n- [tests\/test_scheduler.py](.\/tests\/test_scheduler.py:16) \u2014 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e01\u0e32\u0e23\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e19\u0e38\u0e01\u0e23\u0e21 \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a \u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15 \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\n\n\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23:\n\n```text\npython3 -m unittest discover -s tests -v\nRan 7 tests \u2014 OK\n```\n\n**\u0e2a\u0e23\u0e38\u0e1b:** \u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e41\u0e25\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27  \n**\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19:** \u0e44\u0e21\u0e48\u0e21\u0e35.<\/pre><\/div><\/details><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07\u0e42\u0e04\u0e49\u0e14 Claude \u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a<\/p><pre># T2 Run Record \u2014 \u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e2d\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c\n\n## \u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\n\n| \u0e2a\u0e19\u0e32\u0e21 | \u0e04\u0e48\u0e32 |\n| --- | --- |\n| \u0e07\u0e32\u0e19 | `T2` |\n| \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `01-prompts\/T2.md` |\n| SHA-256 \u0e02\u0e2d\u0e07\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `8476a56034c4e719b97ee4081b32b4c73efd45feafe1bda9d477c83cb8fdb698` |\n| \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 | subagent Claude \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01, `general-purpose`,\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e43\u0e2b\u0e21\u0e48 |\n| \u0e27\u0e34\u0e18\u0e35\u0e41\u0e22\u0e01 | **subagent fallback** (\u0e01\u0e32\u0e23\u0e25\u0e14\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49 \u2014 \u0e14\u0e39 `results\/isolation-decision.md`) |\n| \u0e2a\u0e33\u0e40\u0e19\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23 | `runtime\/workspaces\/T2` |\n| \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e42\u0e04\u0e49\u0e14 Claude | `2.1.220` |\n| \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25 | `claude-opus-5` |\n| start_utc | `2026-07-28T10:27:52Z` |\n| end_utc | `2026-07-28T10:29:33Z` |\n| Duration | 101 s (\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e01\u0e31\u0e1a T1, T3, T4; \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e27\u0e31\u0e14\u0e04\u0e27\u0e32\u0e21\u0e25\u0e48\u0e32\u0e0a\u0e49\u0e32\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33) |\n| Attempt number | 1 |\n| Status | `valid` |\n| Human intervention | none |\n\n## \u0e2a\u0e23\u0e38\u0e1b\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\n\n`date`, `Read`\/`Edit`\/`Write` \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e20\u0e32\u0e22\u0e43\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19, `grep`,\n`python3 -m unittest discover`, `python3 -m compileall`, \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a smoke check \u0e14\u0e49\u0e27\u0e22 `python3 -c` \u0e41\u0e1a\u0e1a inline.\n\u0e44\u0e21\u0e48\u0e21\u0e35\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 \u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n\n## \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\n\n`scheduler\/models.py`, `scheduler\/repository.py`, `scheduler\/service.py`,\n`tests\/test_scheduler.py`. \u0e44\u0e21\u0e48\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e14\u0e16\u0e39\u0e01\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e1a \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 `fixture-manifest.json` \u0e08\u0e36\u0e07\u0e22\u0e31\u0e07\u0e04\u0e07\n\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e22\u0e39\u0e48 \u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e40\u0e15\u0e47\u0e21: `results\/T2\/patch.diff`.\n\n## \u0e1c\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\n\n\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e42\u0e14\u0e22\u0e15\u0e31\u0e27\u0e23\u0e31\u0e19\u0e07\u0e32\u0e19:\n\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a | \u0e1c\u0e25 |\n| --- | --- |\n| `python3 -m unittest discover -s tests -v` (\u0e04\u0e48\u0e32\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19, \u0e01\u0e48\u0e2d\u0e19\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07) | 2 \u0e1c\u0e48\u0e32\u0e19, 0 \u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 |\n| `python3 -m compileall -q scheduler tests` | clean |\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e2a\u0e42\u0e21\u0e04\u0e43\u0e19\u0e15\u0e31\u0e27 (\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 3-arg \u0e41\u0e1a\u0e1a\u0e40\u0e01\u0e48\u0e32, \u0e40\u0e01\u0e13\u0e11\u0e4c\u0e04\u0e33\u0e2a\u0e33\u0e04\u0e31\u0e0d\/\u0e15\u0e33\u0e41\u0e2b\u0e19\u0e48\u0e07, `to_dict`) | \u0e1c\u0e48\u0e32\u0e19 |\n| `python3 -m unittest discover -s tests -v` (\u0e02\u0e31\u0e49\u0e19\u0e2a\u0e38\u0e14\u0e17\u0e49\u0e32\u0e22) | **14 \u0e1c\u0e48\u0e32\u0e19, 0 \u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27** |\n\n\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0b\u0e49\u0e33\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\u0e08\u0e32\u0e01\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19:\n\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a | \u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01 | \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c |\n| --- | --- | --- |\n| \u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30 (`results\/checks\/T2-public.txt`) | 0 | 14 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a, OK |\n| \u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19 `03-checks\/test_t2_hidden.py` (`results\/checks\/T2-hidden.txt`) | 0 | 2 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a, OK |\n\n\u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e0b\u0e48\u0e2d\u0e19\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 (exit 1) \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e31\u0e1a\u0e2a\u0e33\u0e40\u0e19\u0e32 fixture \u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e0b\u0e36\u0e48\u0e07\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e19\u0e35\u0e49\n\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22 \u0e14\u0e39 `results\/checks\/validator-controls.md`\n\n## \u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e02\u0e2d\u0e07 Gold-map\n\n\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e49\u0e32\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e43\u0e19 `03-checks\/gold-map.json` \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19:\n\n| \u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19 | \u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19 |\n| --- | --- |\n| priority default 0 | `Job.priority: int = MIN_PRIORITY`; `create_job(..., priority=MIN_PRIORITY)`; `test_priority_defaults_to_zero` |\n| \u0e0a\u0e48\u0e27\u0e07\u0e04\u0e48\u0e32\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21 0 \u0e16\u0e36\u0e07 9 | `validate_priority` \u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21\u0e41\u0e25\u0e30\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e0a\u0e48\u0e27\u0e07; `test_out_of_range_priority_is_rejected`, `test_non_integer_priority_is_rejected` |\n| \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e19\u0e38\u0e01\u0e23\u0e21 | `to_dict()` \u0e1c\u0e48\u0e32\u0e19 `asdict`; `test_priority_appears_in_serialized_output` \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32 dict \u0e17\u0e35\u0e48\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e21\u0e32\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e2b\u0e27\u0e31\u0e07 |\n| \u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33 | `list_jobs(min_priority=0)` \u2192 `JobRepository.all(min_priority)`; `test_filter_is_inclusive_of_the_threshold` |\n| \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 | \u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\u0e16\u0e39\u0e01\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e20\u0e32\u0e22\u0e43\u0e19 comprehension `sorted(self._jobs)` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48; `test_filter_preserves_ascending_identifier_order` |\n\n## \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\n\n\u0e44\u0e21\u0e48\u0e21\u0e35 `__pycache__` artifacts \u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e16\u0e39\u0e01\u0e25\u0e1a\u0e42\u0e14\u0e22\u0e15\u0e31\u0e27\u0e23\u0e31\u0e19\u0e07\u0e32\u0e19; \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\n\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e41\u0e25\u0e49\u0e27\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07 (\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a)\n\n\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1f\u0e34\u0e25\u0e14\u0e4c `priority` \u0e41\u0e1a\u0e1a\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e27\u0e25\u0e32\u0e44\u0e27\u0e49\u0e17\u0e31\u0e48\u0e27\u0e17\u0e31\u0e49\u0e07\u0e0a\u0e31\u0e49\u0e19\u0e42\u0e21\u0e40\u0e14\u0e25, \u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e41\u0e25\u0e30\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e07\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e08\u0e31\u0e14\u0e15\u0e32\u0e23\u0e32\u0e07\u0e07\u0e32\u0e19\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e01\u0e23\u0e2d\u0e07\u0e41\u0e25\u0e49\u0e27\n\n**`scheduler\/models.py`** \u2014 \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32\u0e04\u0e07\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e14\u0e39\u0e25 `MIN_PRIORITY = 0` \/ `MAX_PRIORITY = 9` \u0e41\u0e25\u0e30\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19 `validate_priority(priority)` \u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49 \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07 `ValueError` \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21\u0e41\u0e25\u0e30\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e0a\u0e48\u0e27\u0e07 0\u20139 (\u0e23\u0e27\u0e21 0 \u0e41\u0e25\u0e30 9) `bool` \u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e41\u0e21\u0e49\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e25\u0e32\u0e2a\u0e22\u0e48\u0e2d\u0e22\u0e02\u0e2d\u0e07 `int` \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 `True` \u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d 1 \u0e44\u0e14\u0e49 \u0e04\u0e25\u0e32\u0e2a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 `Job` \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e23\u0e36\u0e07\u0e44\u0e27\u0e49 (frozen) \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1f\u0e34\u0e25\u0e14\u0e4c `priority: int = MIN_PRIORITY` \u0e40\u0e1b\u0e47\u0e19\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e17\u0e49\u0e32\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e14\u0e49\u0e27\u0e22\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c 3 \u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e14\u0e34\u0e21\u0e22\u0e31\u0e07\u0e04\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30 `__post_init__` \u0e17\u0e35\u0e48\u0e40\u0e23\u0e35\u0e22\u0e01\u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 (validator) \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e17\u0e32\u0e07\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21 `to_dict()` \u0e16\u0e39\u0e01\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\u0e40\u0e1b\u0e47\u0e19 `asdict(self)` \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 priority \u0e08\u0e30\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e43\u0e19\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e0b\u0e35\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e25\u0e0b\u0e4c\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e41\u0e25\u0e30\u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e1f\u0e34\u0e25\u0e14\u0e4c\n\n**`scheduler\/repository.py`** \u2014 `JobRepository.all()` \u0e23\u0e31\u0e1a `min_priority` \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e25\u0e30\u0e01\u0e23\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e20\u0e32\u0e22\u0e43\u0e19\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 `sorted(self._jobs)` \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e41\u0e1a\u0e1a\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e36\u0e49\u0e19\u0e08\u0e36\u0e07\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e42\u0e14\u0e22\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e40\u0e14\u0e34\u0e21\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e19\u0e35\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07 \u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e08\u0e30\u0e23\u0e31\u0e01\u0e29\u0e32\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e40\u0e14\u0e34\u0e21\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c\u0e44\u0e27\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e2a\u0e48\u0e27\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07: repository \u0e40\u0e01\u0e47\u0e1a `Job` \u0e2d\u0e34\u0e19\u0e2a\u0e41\u0e15\u0e19\u0e0b\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e15\u0e31\u0e27 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e08\u0e30\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e48\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 `save`\/`get`\/`all`\n\n**`scheduler\/service.py`** \u2014 `create_job` \u0e23\u0e31\u0e1a\u0e2d\u0e32\u0e23\u0e4c\u0e01\u0e34\u0e27\u0e40\u0e21\u0e19\u0e15\u0e4c `priority` \u0e17\u0e35\u0e48\u0e15\u0e32\u0e21\u0e2b\u0e25\u0e31\u0e07 (\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 0) \u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e2a\u0e23\u0e49\u0e32\u0e07 `Job` \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e08\u0e30\u0e16\u0e39\u0e01\u0e22\u0e01\u0e02\u0e36\u0e49\u0e19\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e31\u0e0d\u0e0d\u0e32 `ValueError` \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0a\u0e37\u0e48\u0e2d\u0e27\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 `list_jobs(min_priority=0)` \u0e21\u0e2d\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e43\u0e2b\u0e49\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23 \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\u0e16\u0e39\u0e01\u0e08\u0e31\u0e14\u0e44\u0e27\u0e49\u0e43\u0e19\u0e17\u0e35\u0e48\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e16\u0e39\u0e01\u0e17\u0e33\u0e0b\u0e49\u0e33\n\n**\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a `min_priority`:** \u0e04\u0e48\u0e32\u0e19\u0e35\u0e49\u0e16\u0e39\u0e01\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21 \u0e41\u0e15\u0e48\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e43\u0e2b\u0e49 *\u0e44\u0e21\u0e48* \u0e08\u0e33\u0e01\u0e31\u0e14\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e1b\u0e47\u0e19 0\u20139 \u0e42\u0e14\u0e22\u0e40\u0e08\u0e15\u0e19\u0e32 \u0e01\u0e0e 0\u20139 \u0e08\u0e33\u0e01\u0e31\u0e14\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e07\u0e32\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e44\u0e14\u0e49; \u0e04\u0e48\u0e32\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18 \u0e40\u0e0a\u0e48\u0e19 `min_priority=10` \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e0b\u0e36\u0e48\u0e07 \"\u0e44\u0e21\u0e48\u0e15\u0e23\u0e07\u0e01\u0e31\u0e1a\u0e2d\u0e30\u0e44\u0e23\u0e40\u0e25\u0e22\" \u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 `list_jobs(min_priority=9)` \u0e17\u0e35\u0e48\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `[]` \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e21\u0e35\u0e07\u0e32\u0e19\u0e43\u0e14\u0e17\u0e35\u0e48\u0e21\u0e35\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d 9 \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27\n\n`scheduler\/time_rules.py` \u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e2d\u0e48\u0e32\u0e19\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u2014 \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e15\u0e32\u0e21\u0e23\u0e30\u0e1a\u0e1a daylight saving time \u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e40\u0e1b\u0e47\u0e19\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e48\u0e2d\u0e19\u0e41\u0e25\u0e49\u0e27 \u0e0b\u0e36\u0e48\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e21\u0e31\u0e19\u0e08\u0e30\u0e16\u0e37\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e14\u0e16\u0e39\u0e01\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e2b\u0e23\u0e37\u0e2d\u0e25\u0e1a \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 `fixture-manifest.json` \u0e08\u0e36\u0e07\u0e22\u0e31\u0e07\u0e04\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 (\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21)\n\n### \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\n\n\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e04\u0e37\u0e2d 0; \u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a\u0e01\u0e31\u0e1a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e1c\u0e48\u0e32\u0e19 `JobRepository`; \u0e04\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e43\u0e19\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07 `to_dict()`; \u0e04\u0e48\u0e32\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15 0 \u0e41\u0e25\u0e30 9 \u0e16\u0e39\u0e01\u0e23\u0e31\u0e1a; \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e2d\u0e01\u0e0a\u0e48\u0e27\u0e07 \u22121\/10\/100 \u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18; \u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21 `\"3\"`\/`3.5`\/`None`\/`True` \u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18; \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25; \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07; \u0e25\u0e33\u0e14\u0e31\u0e1a\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e01\u0e23\u0e2d\u0e07\u0e42\u0e14\u0e22\u0e23\u0e31\u0e01\u0e29\u0e32\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e41\u0e1a\u0e1a\u0e02\u0e36\u0e49\u0e19; \u0e04\u0e48\u0e32\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21\u0e04\u0e48\u0e32\u0e02\u0e2d\u0e1a; \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e27\u0e48\u0e32\u0e07; \u0e04\u0e48\u0e32 `min_priority` \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e15\u0e47\u0e21\u0e16\u0e39\u0e01\u0e1b\u0e0f\u0e34\u0e40\u0e2a\u0e18.\n<\/pre><\/div><\/details><\/div><p class=\"d-limit\">\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e2d\u0e07 Fixture: \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 Python \u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01 Claude \u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e02\u0e2d\u0e07 subagent \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 CLI OAuth \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19.<\/p><\/article>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e2a\u0e16\u0e32\u0e19\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e1e\u0e34\u0e40\u0e28\u0e29<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">T3 \u0e44\u0e14\u0e49\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e43\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e27\u0e25\u0e32\u0e15\u0e32\u0e21\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e24\u0e14\u0e39\u0e23\u0e49\u0e2d\u0e19 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e44\u0e14\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 30\/30 \u0e41\u0e25\u0e30\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e0b\u0e48\u0e2d\u0e19\u0e43\u0e19\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\u0e41\u0e25\u0e30\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 Claude Code \u0e44\u0e14\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e16\u0e39\u0e01\u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e0b\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e27\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e27\u0e31\u0e19 Codex \u0e44\u0e14\u0e49\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e27\u0e31\u0e19\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e43\u0e2b\u0e49\u0e41\u0e04\u0e1a\u0e25\u0e07\u0e41\u0e25\u0e30\u0e1c\u0e48\u0e32\u0e19\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e23\u0e13\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e04\u0e27\u0e32\u0e21\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e16\u0e39\u0e01\u0e19\u0e33\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e0b\u0e49\u0e33\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e27\u0e32\u0e07 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e04\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e08\u0e48\u0e32\u0e22\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e39\u0e07 \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e43\u0e19\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e41\u0e04\u0e1a\u0e08\u0e30\u0e19\u0e48\u0e32\u0e2a\u0e19\u0e43\u0e08\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e41\u0e25\u0e30\u0e17\u0e35\u0e21\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e25\u0e14\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e43\u0e2b\u0e49\u0e19\u0e49\u0e2d\u0e22\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14 \u0e04\u0e33\u0e16\u0e32\u0e21\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e1a\u0e17\u0e27\u0e19\u0e43\u0e19\u0e17\u0e32\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 \u201c\u0e2d\u0e31\u0e19\u0e44\u0e2b\u0e19\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32?\u201d \u0e41\u0e15\u0e48\u0e04\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e19\u0e31\u0e49\u0e19\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e2b\u0e25\u0e31\u0e01\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e23\u0e31\u0e01\u0e29\u0e32\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e44\u0e27\u0e49\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e41\u0e25\u0e30\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48.<\/p>\n\n\n\n<style>\n.evidence-t3-dst-bug-fix{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}\n.evidence-t3-dst-bug-fix *{box-sizing:border-box}.evidence-t3-dst-bug-fix .d-head{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;padding:24px 26px 20px;border-bottom:1px solid var(--line)}\n.evidence-t3-dst-bug-fix .d-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.evidence-t3-dst-bug-fix .d-title{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.evidence-t3-dst-bug-fix .d-sub{margin:7px 0 0;color:var(--body);font-size:13px}.evidence-t3-dst-bug-fix .d-pill{flex:0 0 auto;padding:6px 10px;border:1px solid #ccd6ff;border-radius:999px;color:#2448ca;background:#f0f3ff;font-size:11px;font-weight:800}.evidence-t3-dst-bug-fix .d-grid{display:grid;grid-template-columns:1fr 1fr}.evidence-t3-dst-bug-fix .d-side{min-width:0;padding:24px 26px}.evidence-t3-dst-bug-fix .d-side+.d-side{border-left:1px solid var(--line)}.evidence-t3-dst-bug-fix .d-product{display:flex;align-items:baseline;justify-content:space-between;gap:14px;font-weight:800}.evidence-t3-dst-bug-fix .d-score{font-size:34px;line-height:1;letter-spacing:-.05em}.evidence-t3-dst-bug-fix .d-score small{color:var(--muted);font-size:12px;letter-spacing:0}.evidence-t3-dst-bug-fix .d-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:18px 0}.evidence-t3-dst-bug-fix .d-metric{padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.evidence-t3-dst-bug-fix .d-metric span{display:block;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.evidence-t3-dst-bug-fix .d-metric strong{display:block;margin-top:3px;font-size:13px}.evidence-t3-dst-bug-fix .d-preview{position:relative;height:192px;overflow:hidden;border:1px solid #29313f;border-radius:6px;background:#11151d;color:#edf0f5}.evidence-t3-dst-bug-fix .d-preview-label{padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.1);color:#aeb7c7;font:750 9px\/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase}.evidence-t3-dst-bug-fix .d-preview pre,.evidence-t3-dst-bug-fix .d-full pre{margin:0;white-space:pre-wrap;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.evidence-t3-dst-bug-fix .d-preview pre{padding:13px}.evidence-t3-dst-bug-fix .d-preview:after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:55px;background:linear-gradient(transparent,#11151d)}.evidence-t3-dst-bug-fix .d-take{margin:14px 0 0;color:var(--body);font-size:12px}.evidence-t3-dst-bug-fix .d-fulls{padding:0 26px 22px}.evidence-t3-dst-bug-fix .d-full{margin-top:10px;border:1px solid var(--line);border-radius:6px}.evidence-t3-dst-bug-fix .d-full summary{cursor:pointer;padding:13px 14px;font-size:12px;font-weight:800;list-style:none}.evidence-t3-dst-bug-fix .d-full summary::-webkit-details-marker{display:none}.evidence-t3-dst-bug-fix .d-full summary:after{content:\"+\";float:right;color:var(--blue);font-size:17px}.evidence-t3-dst-bug-fix .d-full[open] summary:after{content:\"\u2212\"}.evidence-t3-dst-bug-fix .d-full-pane{padding:0 14px 14px}.evidence-t3-dst-bug-fix .d-full-note{margin:0 0 9px;color:var(--muted);font-size:10px}.evidence-t3-dst-bug-fix .d-full pre{max-height:620px;overflow:auto;padding:15px;border-radius:5px;background:#f5f6f8;color:#222936;border:1px solid #e0e3e8}.evidence-t3-dst-bug-fix .d-limit{margin:0;padding:12px 26px;border-top:1px solid var(--line);color:#5a6270;background:#fafbfc;font-size:11px}\n@media(max-width:760px){.evidence-t3-dst-bug-fix .d-head{display:block}.evidence-t3-dst-bug-fix .d-pill{display:inline-block;margin-top:12px}.evidence-t3-dst-bug-fix .d-grid{grid-template-columns:1fr}.evidence-t3-dst-bug-fix .d-side+.d-side{border-left:0;border-top:1px solid var(--line)}}@media(max-width:480px){.evidence-t3-dst-bug-fix .d-head,.evidence-t3-dst-bug-fix .d-side{padding:20px}.evidence-t3-dst-bug-fix .d-fulls{padding:0 20px 20px}.evidence-t3-dst-bug-fix .d-metrics{grid-template-columns:1fr}}\n<\/style><article class=\"evidence-t3-dst-bug-fix\"><header class=\"d-head\"><div><p class=\"d-kicker\">T3 \u00b7 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/p><h3 class=\"d-title\">\u0e1b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e15\u0e32\u0e23\u0e32\u0e07\u0e07\u0e32\u0e19\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e24\u0e14\u0e39\u0e23\u0e49\u0e2d\u0e19 (DST)<\/h3><p class=\"d-sub\">\u0e23\u0e31\u0e01\u0e29\u0e32\u0e40\u0e27\u0e25\u0e32\u0e15\u0e32\u0e21\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e15\u0e34\u0e14\u0e1c\u0e19\u0e31\u0e07\u0e41\u0e1a\u0e1a\u0e19\u0e34\u0e27\u0e22\u0e2d\u0e23\u0e4c\u0e01\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e44\u0e27\u0e49\u0e15\u0e25\u0e2d\u0e14\u0e0a\u0e48\u0e27\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e24\u0e14\u0e39\u0e08\u0e32\u0e01\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\u0e2a\u0e39\u0e48\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07\u0e41\u0e25\u0e30\u0e08\u0e32\u0e01\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07\u0e2a\u0e39\u0e48\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34.<\/p><\/div><span class=\"d-pill\">\u0e40\u0e19\u0e04\u0e44\u0e17 \u00b7 \u0e04\u0e27\u0e32\u0e21\u0e2b\u0e19\u0e32\u0e41\u0e19\u0e48\u0e19\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19<\/span><\/header><div class=\"d-grid\"><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e08\u0e32\u0e01 Codex\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><span class=\"d-score\">30<small>\/30<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>99 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>4 + 2 \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e1a\u0e1a\u0e41\u0e04\u0e1a<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>\u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e2b\u0e25\u0e31\u0e01: \u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27\u0e44\u0e14\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e27\u0e25\u0e32 UTC \u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\n\n\u0e27\u0e34\u0e18\u0e35\u0e41\u0e01\u0e49\u0e44\u0e02: \u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19 1 \u0e27\u0e31\u0e19\u0e15\u0e32\u0e21\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\u0e41\u0e25\u0e30\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e23\u0e30\u0e07\u0e31\u0e1a\u0e44\u0e27\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e01\u0e25\u0e38\u0e48\u0e21\u0e17\u0e35\u0e48\u0e21\u0e35\u0e08\u0e33\u0e19\u0e27\u0e19\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01\u0e19\u0e49\u0e2d\u0e22\u0e01\u0e27\u0e48\u0e32\u0e44\u0e14\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14.<\/p><\/section><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e23\u0e2b\u0e31\u0e2a Claude\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><span class=\"d-score\">30<small>\/30<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>118 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>10 + 2 \u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e02\u0e2d\u0e1a<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>\u0e44\u0e14\u0e49\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e0a\u0e48\u0e27\u0e07\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\u0e41\u0e25\u0e30\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07 \u0e40\u0e27\u0e25\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e17\u0e35\u0e48\u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b\u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e07\u0e48\u0e32\u0e22 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e2b\u0e25\u0e32\u0e22\u0e27\u0e31\u0e19\n\n\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e16\u0e39\u0e01\u0e23\u0e30\u0e07\u0e31\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e02\u0e22\u0e32\u0e22\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e16\u0e14\u0e16\u0e2d\u0e22.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e23\u0e13\u0e35\u0e1e\u0e34\u0e40\u0e28\u0e29\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19; \u0e04\u0e30\u0e41\u0e19\u0e19\u0e14\u0e49\u0e32\u0e19\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e17\u0e48\u0e32\u0e40\u0e14\u0e34\u0e21\u0e15\u0e32\u0e21\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48.<\/p><\/section><\/div><div class=\"d-fulls\"><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07 Codex \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e41\u0e25\u0e49\u0e27<\/p><pre>\u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e1b\u0e31\u0e0d\u0e2b\u0e32 DST \u0e41\u0e25\u0e49\u0e27\n\n\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07:\n\n- [scheduler\/time_rules.py](.\/scheduler\/time_rules.py)\n- [tests\/test_time_rules.py](.\/tests\/test_time_rules.py)\n\n\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07:\n\n- \u0e1b\u0e23\u0e31\u0e1a\u0e27\u0e31\u0e19\u0e43\u0e19\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19 1 \u0e27\u0e31\u0e19 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 UTC\n- \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e0a\u0e49\u0e32\u0e25\u0e07\u0e43\u0e19\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\u0e41\u0e25\u0e30\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07\u0e02\u0e2d\u0e07\u0e19\u0e34\u0e27\u0e22\u0e2d\u0e23\u0e4c\u0e01\n- \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e27\u0e48\u0e32\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32 UTC \u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e04\u0e37\u0e2d 23 \u0e41\u0e25\u0e30 25 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a\n\n\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a:\n\n- \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2b\u0e19\u0e48\u0e27\u0e22: \u0e1c\u0e48\u0e32\u0e19 4 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\n- \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e44\u0e27\u0e22\u0e32\u0e01\u0e23\u0e13\u0e4c\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33: \u0e44\u0e1f\u0e25\u0e4c Python 7 \u0e44\u0e1f\u0e25\u0e4c\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\n- \u0e01\u0e32\u0e23\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c\u0e44\u0e1a\u0e15\u0e4c\u0e42\u0e04\u0e49\u0e14\u0e16\u0e39\u0e01\u0e1a\u0e25\u0e47\u0e2d\u0e01\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 Python \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e41\u0e04\u0e0a\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14; \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\n\n**\u0e2a\u0e23\u0e38\u0e1b:** `next_daily_run` \u0e02\u0e13\u0e30\u0e19\u0e35\u0e49\u0e23\u0e31\u0e01\u0e29\u0e32\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e15\u0e32\u0e21\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e44\u0e27\u0e49\u0e44\u0e14\u0e49\u0e15\u0e25\u0e2d\u0e14\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07 DST \u0e44\u0e21\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e43\u0e14\u0e46.<\/pre><\/div><\/details><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07\u0e42\u0e04\u0e49\u0e14 Claude \u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a<\/p><pre># T3 Run Record \u2014 \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 DST\n\n## \u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\n\n| \u0e2a\u0e19\u0e32\u0e21 | \u0e04\u0e48\u0e32 |\n| --- | --- |\n| \u0e07\u0e32\u0e19 | `T3` |\n| \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `01-prompts\/T3.md` |\n| SHA-256 \u0e02\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `3fee50d0230f27f8d6dd7f12e050fa3f0b7f5fb77d9559361fee96e5f1a47307` |\n| \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 | subagent Claude \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01, `general-purpose`, \u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e43\u0e2b\u0e21\u0e48 |\n| \u0e27\u0e34\u0e18\u0e35\u0e41\u0e22\u0e01 | **subagent fallback** (\u0e01\u0e32\u0e23\u0e25\u0e14\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49 \u2014 \u0e14\u0e39 `results\/isolation-decision.md`) |\n| \u0e2a\u0e33\u0e40\u0e19\u0e32\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23 | `runtime\/workspaces\/T3` |\n| \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e42\u0e04\u0e49\u0e14 Claude | `2.1.220` |\n| \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25 | `claude-opus-5` |\n| start_utc | `2026-07-28T10:28:05Z` |\n| end_utc | `2026-07-28T10:30:03Z` |\n| Duration | 118 s (\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e01\u0e31\u0e1a T1, T2, T4; \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e27\u0e31\u0e14\u0e04\u0e27\u0e32\u0e21\u0e25\u0e48\u0e32\u0e0a\u0e49\u0e32\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33) |\n| Attempt number | 1 |\n| Status | `valid` |\n| Human intervention | none |\n\n## \u0e2a\u0e23\u0e38\u0e1b\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d Safe\n\n`date`, `Read`\/`Edit` \u0e20\u0e32\u0e22\u0e43\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19, `python3 -m unittest discover`,\n`python3 -m compileall`, \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e40\u0e0a\u0e34\u0e07\u0e25\u0e1a\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33, \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07\u0e41\u0e21\u0e19\u0e34\u0e40\u0e1f\u0e2a\u0e15\u0e4c.\n\u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 (`datetime`, `zoneinfo`, `unittest`). \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21\n\n## \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\n\n`scheduler\/time_rules.py` (\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u2014 \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e15\u0e31\u0e27\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e41\u0e25\u0e30 docstring \u0e02\u0e2d\u0e07 `next_daily_run`),\n`tests\/test_scheduler.py` (\u0e40\u0e1e\u0e34\u0e48\u0e21 `NextDailyRunTests`, 8 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a, \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e0a\u0e48\u0e27\u0e22 `_elapsed`;\n\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e14\u0e34\u0e21\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07). \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e42\u0e21\u0e14\u0e39\u0e25\u0e2d\u0e37\u0e48\u0e19\u0e43\u0e14 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e14\u0e46 \u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e40\u0e15\u0e47\u0e21:\n`results\/T3\/patch.diff`.\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\n\n\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e42\u0e14\u0e22\u0e15\u0e31\u0e27\u0e23\u0e31\u0e19\u0e07\u0e32\u0e19:\n\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a | \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c |\n| --- | --- |\n| `python3 -m unittest discover -s tests -v` | **10 \u0e1c\u0e48\u0e32\u0e19, 0 \u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27** (2 \u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e14\u0e34\u0e21 + 8 \u0e43\u0e2b\u0e21\u0e48) |\n| `python3 -m compileall -q scheduler tests` | clean |\n| \u0e04\u0e27\u0e32\u0e21\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c\u0e02\u0e2d\u0e07 manifest \u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a `fixture-manifest.json` | 0 \u0e02\u0e32\u0e14, 0 \u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e2b\u0e21\u0e32\u0e22 |\n| \u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e40\u0e0a\u0e34\u0e07\u0e25\u0e1a: \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33, \u0e40\u0e09\u0e1e\u0e32\u0e30 `NextDailyRunTests` | 8 \u0e04\u0e23\u0e31\u0e49\u0e07, **5 \u0e04\u0e23\u0e31\u0e49\u0e07\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e15\u0e32\u0e21\u0e04\u0e32\u0e14**, \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a DST \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07 |\n\n\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0b\u0e49\u0e33\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\u0e08\u0e32\u0e01\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19:\n\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a | \u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01 | \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c |\n| --- | --- | --- |\n| \u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30 (`results\/checks\/T3-public.txt`) | 0 | 10 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a, OK |\n| \u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19 `03-checks\/test_t3_hidden.py` (`results\/checks\/T3-hidden.txt`) | 0 | 2 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a, OK |\n\n\u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e0b\u0e48\u0e2d\u0e19\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 (exit 1) \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e31\u0e1a\u0e2a\u0e33\u0e40\u0e19\u0e32 fixture \u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e14\u0e39\n`results\/checks\/validator-controls.md`.\n\n## \u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e02\u0e2d\u0e07 Gold-map\n\n\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e35\u0e48\u0e43\u0e19 `03-checks\/gold-map.json` \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19:\n\n| \u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19 | \u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19 |\n| --- | --- |\n| \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e02\u0e2d\u0e07\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e08\u0e23\u0e34\u0e07\u0e16\u0e39\u0e01\u0e23\u0e31\u0e01\u0e29\u0e32\u0e44\u0e27\u0e49 | \u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e04\u0e48\u0e32\u0e16\u0e39\u0e01\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e1a\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e41\u0e1a\u0e1a\u0e14\u0e31\u0e49\u0e07\u0e40\u0e14\u0e34\u0e21, \u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e16\u0e39\u0e01\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e43\u0e2b\u0e21\u0e48; \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e43\u0e19\u0e17\u0e38\u0e01\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a DST |\n| \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21 | `test_spring_forward_keeps_requested_hour` \u2014 \u0e40\u0e27\u0e25\u0e32 09:30 \u0e16\u0e39\u0e01\u0e23\u0e31\u0e01\u0e29\u0e32\u0e44\u0e27\u0e49, \u0e2d\u0e2d\u0e1f\u0e40\u0e0b\u0e47\u0e15 `-04:00`, \u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 23 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 |\n| \u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a | `test_fall_back_keeps_requested_hour` \u2014 \u0e40\u0e27\u0e25\u0e32 09:30 \u0e16\u0e39\u0e01\u0e23\u0e31\u0e01\u0e29\u0e32\u0e44\u0e27\u0e49, \u0e04\u0e48\u0e32\u0e2d\u0e2d\u0e1f\u0e40\u0e0b\u0e47\u0e15 `-05:00`, \u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 25 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 |\n| \u0e43\u0e0a\u0e49\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32 IANA | `ZoneInfo(\"America\/New_York\")` \u0e08\u0e32\u0e01\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 |\n\n\u0e19\u0e2d\u0e01\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e08\u0e32\u0e01\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19 \u0e1c\u0e39\u0e49\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e22\u0e31\u0e07\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e23\u0e13\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e15\u0e32\u0e21 PEP 495 \u2014 \u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\n\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e16\u0e2d\u0e22\u0e2b\u0e25\u0e31\u0e07 \u2014 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e40\u0e27\u0e25\u0e32\n\u0e40\u0e08\u0e47\u0e14\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e41\u0e25\u0e30\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e01\u0e49\n\n## \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\n\n\u0e04\u0e27\u0e32\u0e21\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e43\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 (assertion) \u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e15\u0e31\u0e27\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21\u0e40\u0e2d\u0e07: `following - previous` \u0e1a\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e2d\u0e07\u0e0a\u0e38\u0e14\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\n`tzinfo` \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e2b\u0e31\u0e01\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e41\u0e1a\u0e1a naive \u0e2d\u0e2d\u0e01 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e40\u0e1b\u0e47\u0e19 1 \u0e27\u0e31\u0e19 \u0e41\u0e25\u0e30\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\n\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e15\u0e48\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1c\u0e34\u0e14; \u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e0a\u0e48\u0e27\u0e22 `_elapsed`\n\u0e17\u0e35\u0e48\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e47\u0e19 UTC \u0e01\u0e48\u0e2d\u0e19 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e08\u0e32\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d \u0e01\u0e32\u0e23\u0e19\u0e33\u0e40\u0e02\u0e49\u0e32 \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\n\u0e44\u0e1f\u0e25\u0e4c `__pycache__` \u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e25\u0e1a\u0e2d\u0e2d\u0e01\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49 (\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a)\n\n**\u0e01\u0e32\u0e23\u0e08\u0e33\u0e25\u0e2d\u0e07**\n\n`scheduler\/time_rules.py::next_daily_run` \u0e16\u0e39\u0e01\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32 `America\/New_York` \u0e43\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e14\u0e49\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e24\u0e14\u0e39\u0e23\u0e49\u0e2d\u0e19 (DST) \u0e1b\u0e35 2024:\n\n```\n2024-03-09T09:30:00-05:00 -&gt; 2024-03-10T10:30:00-04:00   # \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19 +1\n2024-11-02T09:30:00-04:00 -&gt; 2024-11-03T08:30:00-05:00   # \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e1b -1\n```\n\n\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e40\u0e27\u0e25\u0e32 09:30 \u0e15\u0e32\u0e21\u0e40\u0e27\u0e25\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 \u0e16\u0e39\u0e01\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48 10:30 \u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e41\u0e25\u0e30 08:30 \u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e16\u0e2d\u0e22\u0e2b\u0e25\u0e31\u0e07\n\n**\u0e2a\u0e32\u0e40\u0e2b\u0e15\u0e38\u0e2b\u0e25\u0e31\u0e01**\n\n\u0e01\u0e32\u0e23\u0e19\u0e33\u0e42\u0e04\u0e49\u0e14\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32 \"daily\" \u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32\u0e2a\u0e31\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c\u0e17\u0e35\u0e48\u0e04\u0e07\u0e17\u0e35\u0e48:\n\n```python\nelapsed = previous_run.astimezone(timezone.utc) + timedelta(hours=24)\nreturn elapsed.astimezone(previous_run.tzinfo)\n```\n\n\u0e01\u0e32\u0e23\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 UTC \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e33\u0e43\u0e2b\u0e49 `timedelta(hours=24)` \u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33 \u0e41\u0e15\u0e48\u0e27\u0e31\u0e19\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e43\u0e19\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32 IANA \u0e21\u0e35\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32 23 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e43\u0e19\u0e27\u0e31\u0e19\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e41\u0e25\u0e30 25 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e43\u0e19\u0e27\u0e31\u0e19\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e01\u0e25\u0e31\u0e1a \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e04\u0e07\u0e17\u0e35\u0e48 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e08\u0e30\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e43\u0e2b\u0e49\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e02\u0e2d\u0e21\u0e32\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e1b\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\n\n**\u0e27\u0e34\u0e18\u0e35\u0e41\u0e01\u0e49\u0e44\u0e02** (`scheduler\/time_rules.py`)\n\n\u0e01\u0e32\u0e23\u0e0b\u0e49\u0e33\u0e17\u0e38\u0e01\u0e27\u0e31\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e0e\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e27\u0e25\u0e32\u0e08\u0e36\u0e07\u0e16\u0e39\u0e01\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e1a\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e41\u0e1a\u0e1a\u0e14\u0e31\u0e49\u0e07\u0e40\u0e14\u0e34\u0e21\u0e01\u0e48\u0e2d\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e08\u0e36\u0e07\u0e41\u0e19\u0e1a\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e16\u0e31\u0e14\u0e44\u0e1b:\n\n```python\ntzinfo = previous_run.tzinfo\nnaive_next = previous_run.replace(tzinfo=None) + timedelta(days=1)\nif tzinfo is None:\n    return naive_next\ncandidate = naive_next.replace(tzinfo=tzinfo, fold=0)\nreturn candidate.astimezone(timezone.utc).astimezone(tzinfo)\n```\n\n\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07:\n- \u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e40\u0e27\u0e25\u0e32\u0e1a\u0e19\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e41\u0e1a\u0e1a naive \u0e44\u0e21\u0e48\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e2d\u0e2d\u0e1f\u0e40\u0e0b\u0e47\u0e15 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e40\u0e27\u0e25\u0e32\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07:\u0e19\u0e32\u0e17\u0e35\u0e17\u0e35\u0e48\u0e23\u0e49\u0e2d\u0e07\u0e02\u0e2d\u0e08\u0e36\u0e07\u0e16\u0e39\u0e01\u0e23\u0e31\u0e01\u0e29\u0e32\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07; `zoneinfo` \u0e08\u0e30\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 UTC offset \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e21\u0e48 (\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27: `-04:00` \u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e43\u0e19\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34, `-05:00` \u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e16\u0e2d\u0e22\u0e2b\u0e25\u0e31\u0e07\u0e43\u0e19\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e23\u0e48\u0e27\u0e07, \u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27 23 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e41\u0e25\u0e30 25 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e15\u0e32\u0e21\u0e25\u0e33\u0e14\u0e31\u0e1a)\n- `fold=0` \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a UTC \u0e08\u0e30\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e31\u0e1a\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e02\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e41\u0e1a\u0e1a\u0e1a\u0e23\u0e34\u0e2a\u0e38\u0e17\u0e18\u0e34\u0e4c\u0e17\u0e34\u0e49\u0e07\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e15\u0e32\u0e21 PEP 495 \u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01 *\u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b* (02:30 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 10 \u0e21\u0e35\u0e19\u0e32\u0e04\u0e21 2024) \u0e08\u0e30\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e40\u0e27\u0e25\u0e32 UTC \u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48 `fold=0` \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a\u0e08\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07 03:30 EDT \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e43\u0e14\u0e40\u0e25\u0e22 \u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48 *\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19* (01:30 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48 3 \u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19 2024) \u0e08\u0e30\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e32\u0e01\u0e0f (EDT) \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e48\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e48\u0e21\n- \u0e01\u0e32\u0e23\u0e1b\u0e49\u0e2d\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e14\u0e31\u0e49\u0e07\u0e40\u0e14\u0e34\u0e21\u0e22\u0e31\u0e07\u0e04\u0e07\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e14\u0e34\u0e21 (\u0e40\u0e1e\u0e34\u0e48\u0e21 1 \u0e27\u0e31\u0e19\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32) \u2014 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e02\u0e49\u0e2d\u0e01\u0e33\u0e2b\u0e19\u0e14 `tzinfo` \u0e43\u0e2b\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\n\n\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e16\u0e39\u0e01\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e2b\u0e49\u0e41\u0e04\u0e1a: \u0e21\u0e35\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e15\u0e31\u0e27\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\/docstring \u0e02\u0e2d\u0e07 `next_daily_run` \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 `service.py`, `models.py`, `repository.py`, \u0e41\u0e25\u0e30 `__init__.py` \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48 \u0e41\u0e25\u0e30\u0e44\u0e1f\u0e25\u0e4c manifest \u0e02\u0e2d\u0e07 fixture \u0e22\u0e31\u0e07\u0e04\u0e07\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\u0e17\u0e38\u0e01\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23 (\u0e44\u0e21\u0e48\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14) \u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 (`datetime`, `zoneinfo`, `unittest`).\n\n**\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22** (`tests\/test_scheduler.py`, `NextDailyRunTests` \u0e43\u0e2b\u0e21\u0e48, 8 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a) \u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21: \u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\u0e43\u0e19\u0e27\u0e31\u0e19\u0e1b\u0e01\u0e15\u0e34, \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32 + \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32 + 23 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27, \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e01\u0e25\u0e31\u0e1a + \u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32 + 25 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27, \u0e01\u0e32\u0e23\u0e27\u0e19\u0e23\u0e2d\u0e1a 7 \u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e17\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e23\u0e31\u0e49\u0e07, \u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e02\u0e49\u0e32\u0e21, \u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19, \u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e0b\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19\n\n\u0e21\u0e35\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49 \u0e01\u0e48\u0e2d\u0e19\u0e2d\u0e37\u0e48\u0e19 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e43\u0e19\u0e02\u0e31\u0e49\u0e19\u0e15\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e21\u0e43\u0e0a\u0e49\u0e2a\u0e39\u0e15\u0e23 `following - previous`; Python \u0e08\u0e30\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e43\u0e08 `tzinfo` \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e41\u0e25\u0e30\u0e08\u0e30\u0e2b\u0e31\u0e01\u0e25\u0e1a\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e08\u0e23\u0e34\u0e07\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e1b\u0e23\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e08\u0e36\u0e07\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 1 \u0e27\u0e31\u0e19\u0e41\u0e25\u0e30\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 \u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e41\u0e15\u0e48\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e1c\u0e34\u0e14 \u2014 \u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e14\u0e49\u0e27\u0e22\u0e15\u0e31\u0e27\u0e0a\u0e48\u0e27\u0e22 `_elapsed` \u0e17\u0e35\u0e48\u0e41\u0e1b\u0e25\u0e07\u0e04\u0e48\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19 UTC \u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07 \u0e1c\u0e21\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e40\u0e14\u0e34\u0e21\u0e44\u0e14\u0e49\u0e08\u0e23\u0e34\u0e07 \u0e42\u0e14\u0e22\u0e23\u0e31\u0e19 `NextDailyRunTests` \u0e43\u0e2b\u0e21\u0e48\u0e01\u0e31\u0e1a\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e02\u0e2d\u0e07\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e19\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27: 5 \u0e08\u0e32\u0e01 8 \u0e0a\u0e38\u0e14\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a DST \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e0a\u0e38\u0e14 \u0e2a\u0e32\u0e21\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e43\u0e19\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 (\u0e27\u0e31\u0e19\u0e1b\u0e01\u0e15\u0e34, \u0e27\u0e31\u0e19\u0e16\u0e39\u0e01\u0e02\u0e49\u0e32\u0e21, \u0e27\u0e31\u0e19\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19) \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2b\u0e32\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22 \u2014 \u0e01\u0e23\u0e13\u0e35\u0e27\u0e31\u0e19\u0e16\u0e39\u0e01\u0e02\u0e49\u0e32\u0e21\/\u0e27\u0e31\u0e19\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e15\u0e23\u0e07\u0e01\u0e31\u0e19\u0e42\u0e14\u0e22\u0e1a\u0e31\u0e07\u0e40\u0e2d\u0e34\u0e0d \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e04\u0e27\u0e32\u0e21\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e41\u0e1a\u0e1a\u0e2a\u0e31\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c +24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e40\u0e01\u0e34\u0e14\u0e02\u0e36\u0e49\u0e19\u0e1e\u0e2d\u0e14\u0e35\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19.\n<\/pre><\/div><\/details><\/div><p class=\"d-limit\">\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e2d\u0e07 Fixture: \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 Python \u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01 Claude \u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e02\u0e2d\u0e07 subagent \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 CLI OAuth \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19.<\/p><\/article>\n\n\n\n<h2 id=\"code-review\" class=\"wp-block-heading\">\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e07\u0e32\u0e19\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e31\u0e01\u0e29\u0e30\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e1f\u0e35\u0e40\u0e08\u0e2d\u0e23\u0e4c \u0e1c\u0e39\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49 \u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07\u0e02\u0e2d\u0e07\u0e1b\u0e31\u0e0d\u0e2b\u0e32 \u0e0a\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33 \u0e41\u0e25\u0e30\u0e41\u0e22\u0e01\u0e41\u0e22\u0e30\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07\u0e2d\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19 \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e08\u0e30\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2d\u0e35\u0e01\u0e02\u0e31\u0e49\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07: \u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e43\u0e2b\u0e21\u0e48.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e23\u0e2b\u0e31\u0e2a Claude \u0e21\u0e35\u0e02\u0e49\u0e2d\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e43\u0e19 T4. \u0e21\u0e31\u0e19\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e1e\u0e1a 5 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2d\u0e34\u0e2a\u0e23\u0e30 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e04\u0e30\u0e41\u0e19\u0e19 19\/20 \u0e2a\u0e48\u0e27\u0e19 Codex \u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 2 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e01\u0e25\u0e48\u0e32\u0e27\u0e16\u0e36\u0e07\u0e04\u0e39\u0e48\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49 \u0e08\u0e36\u0e07\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e04\u0e30\u0e41\u0e19\u0e19 18\/20 \u0e1c\u0e25\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e02\u0e2d\u0e07 Codex \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e1c\u0e25\u0e1a\u0e27\u0e01\u0e40\u0e17\u0e47\u0e08; \u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e39\u0e48\u0e17\u0e35\u0e48\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19.<\/p>\n\n\n\n<style>\n.evidence-t4-review-and-repair{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}\n.evidence-t4-review-and-repair *{box-sizing:border-box}.evidence-t4-review-and-repair .d-head{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;padding:24px 26px 20px;border-bottom:1px solid var(--line)}\n.evidence-t4-review-and-repair .d-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.evidence-t4-review-and-repair .d-title{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.evidence-t4-review-and-repair .d-sub{margin:7px 0 0;color:var(--body);font-size:13px}.evidence-t4-review-and-repair .d-pill{flex:0 0 auto;padding:6px 10px;border:1px solid #ccd6ff;border-radius:999px;color:#2448ca;background:#f0f3ff;font-size:11px;font-weight:800}.evidence-t4-review-and-repair .d-grid{display:grid;grid-template-columns:1fr 1fr}.evidence-t4-review-and-repair .d-side{min-width:0;padding:24px 26px}.evidence-t4-review-and-repair .d-side+.d-side{border-left:1px solid var(--line)}.evidence-t4-review-and-repair .d-product{display:flex;align-items:baseline;justify-content:space-between;gap:14px;font-weight:800}.evidence-t4-review-and-repair .d-score{font-size:34px;line-height:1;letter-spacing:-.05em}.evidence-t4-review-and-repair .d-score small{color:var(--muted);font-size:12px;letter-spacing:0}.evidence-t4-review-and-repair .d-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:18px 0}.evidence-t4-review-and-repair .d-metric{padding:10px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.evidence-t4-review-and-repair .d-metric span{display:block;color:var(--muted);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.evidence-t4-review-and-repair .d-metric strong{display:block;margin-top:3px;font-size:13px}.evidence-t4-review-and-repair .d-preview{position:relative;height:192px;overflow:hidden;border:1px solid #29313f;border-radius:6px;background:#11151d;color:#edf0f5}.evidence-t4-review-and-repair .d-preview-label{padding:11px 13px;border-bottom:1px solid rgba(255,255,255,.1);color:#aeb7c7;font:750 9px\/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.06em;text-transform:uppercase}.evidence-t4-review-and-repair .d-preview pre,.evidence-t4-review-and-repair .d-full pre{margin:0;white-space:pre-wrap;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.evidence-t4-review-and-repair .d-preview pre{padding:13px}.evidence-t4-review-and-repair .d-preview:after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:55px;background:linear-gradient(transparent,#11151d)}.evidence-t4-review-and-repair .d-take{margin:14px 0 0;color:var(--body);font-size:12px}.evidence-t4-review-and-repair .d-fulls{padding:0 26px 22px}.evidence-t4-review-and-repair .d-full{margin-top:10px;border:1px solid var(--line);border-radius:6px}.evidence-t4-review-and-repair .d-full summary{cursor:pointer;padding:13px 14px;font-size:12px;font-weight:800;list-style:none}.evidence-t4-review-and-repair .d-full summary::-webkit-details-marker{display:none}.evidence-t4-review-and-repair .d-full summary:after{content:\"+\";float:right;color:var(--blue);font-size:17px}.evidence-t4-review-and-repair .d-full[open] summary:after{content:\"\u2212\"}.evidence-t4-review-and-repair .d-full-pane{padding:0 14px 14px}.evidence-t4-review-and-repair .d-full-note{margin:0 0 9px;color:var(--muted);font-size:10px}.evidence-t4-review-and-repair .d-full pre{max-height:620px;overflow:auto;padding:15px;border-radius:5px;background:#f5f6f8;color:#222936;border:1px solid #e0e3e8}.evidence-t4-review-and-repair .d-limit{margin:0;padding:12px 26px;border-top:1px solid var(--line);color:#5a6270;background:#fafbfc;font-size:11px}\n@media(max-width:760px){.evidence-t4-review-and-repair .d-head{display:block}.evidence-t4-review-and-repair .d-pill{display:inline-block;margin-top:12px}.evidence-t4-review-and-repair .d-grid{grid-template-columns:1fr}.evidence-t4-review-and-repair .d-side+.d-side{border-left:0;border-top:1px solid var(--line)}}@media(max-width:480px){.evidence-t4-review-and-repair .d-head,.evidence-t4-review-and-repair .d-side{padding:20px}.evidence-t4-review-and-repair .d-fulls{padding:0 20px 20px}.evidence-t4-review-and-repair .d-metrics{grid-template-columns:1fr}}\n<\/style><article class=\"evidence-t4-review-and-repair\"><header class=\"d-head\"><div><p class=\"d-kicker\">T4 \u00b7 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21<\/p><h3 class=\"d-title\">\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e2a\u0e39\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14<\/h3><p class=\"d-sub\">\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e08\u0e23\u0e34\u0e07\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e43\u0e2b\u0e21\u0e48 \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 \u0e41\u0e25\u0e30\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e44\u0e14\u0e49.<\/p><\/div><span class=\"d-pill\">\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21 Claude<\/span><\/header><div class=\"d-grid\"><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e08\u0e32\u0e01 Codex\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><span class=\"d-score\">18<small>\/20<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>223 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>4 \u0e1c\u0e48\u0e32\u0e19<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>2 \u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e25\u0e49\u0e27<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>1. \u0e2a\u0e39\u0e07 \u2014 \u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e32\u0e08\u0e16\u0e39\u0e01\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e15\u0e31\u0e27\n\n2. \u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07 \u2014 \u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e2d\u0e32\u0e08\u0e40\u0e01\u0e34\u0e14\u0e01\u0e32\u0e23\u0e40\u0e1a\u0e35\u0e48\u0e22\u0e07\u0e40\u0e1a\u0e19\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e24\u0e14\u0e39\u0e23\u0e49\u0e2d\u0e19\n\n\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a: \u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a 4 \u0e04\u0e23\u0e31\u0e49\u0e07, \u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27.<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e21\u0e35\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07\u0e2a\u0e39\u0e07\u0e41\u0e25\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e17\u0e31\u0e49\u0e07\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e21\u0e38\u0e48\u0e07\u0e40\u0e19\u0e49\u0e19\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e08\u0e38\u0e14 \u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1a\u0e23\u0e23\u0e25\u0e38\u0e40\u0e1b\u0e49\u0e32\u0e2b\u0e21\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49.<\/p><\/section><section class=\"d-side\" aria-label=\"\u0e1c\u0e25\u0e23\u0e2b\u0e31\u0e2a Claude\"><div class=\"d-product\"><span>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><span class=\"d-score\">19<small>\/20<\/small><\/span><\/div><div class=\"d-metrics\"><div class=\"d-metric\"><span>\u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32<\/span><strong>235 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35<\/strong><\/div><div class=\"d-metric\"><span>\u0e40\u0e0a\u0e47\u0e04<\/span><strong>9 \u0e1c\u0e48\u0e32\u0e19<\/strong><\/div><div class=\"d-metric\"><span>\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/span><strong>\u0e21\u0e35\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19 5 \u0e23\u0e32\u0e22<\/strong><\/div><\/div><div class=\"d-preview\"><div class=\"d-preview-label\">\u0e2a\u0e48\u0e27\u0e19\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/div><pre>D1 \u0e04\u0e27\u0e32\u0e21\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e02\u0e2d\u0e07 DST \u00b7 \u0e2a\u0e39\u0e07\nD2 \u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e23\u0e30\u0e21\u0e31\u0e14\u0e23\u0e30\u0e27\u0e31\u0e07 \u00b7 \u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07\nD3 \u0e01\u0e32\u0e23\u0e0a\u0e19\u0e01\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 \u00b7 \u0e2a\u0e39\u0e07\nD4 \u0e01\u0e32\u0e23\u0e25\u0e1a\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14 KeyError \u00b7 \u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07\nD5 \u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u00b7 \u0e15\u0e48\u0e33<\/pre><\/div><p class=\"d-take\"><strong>\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e23\u0e35\u0e27\u0e34\u0e27:<\/strong> \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e21\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e01\u0e34\u0e14\u0e1c\u0e25\u0e1a\u0e27\u0e01\u0e1b\u0e25\u0e2d\u0e21\u0e0b\u0e49\u0e33\u0e2d\u0e35\u0e01\u0e40\u0e25\u0e22; \u0e41\u0e15\u0e48\u0e21\u0e35\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e2a\u0e31\u0e0d\u0e0d\u0e32 \u0e0b\u0e36\u0e48\u0e07\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02.<\/p><\/section><\/div><div class=\"d-fulls\"><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07 Codex \u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e41\u0e25\u0e49\u0e27<\/p><pre>## \u0e02\u0e49\u0e2d\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e44\u0e14\u0e49\n\n1. **\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2a\u0e39\u0e07 \u2014 \u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e2d\u0e32\u0e08\u0e16\u0e39\u0e01\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e33\u0e40\u0e15\u0e37\u0e2d\u0e19**\n\n   - \u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19: \u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e43\u0e19 [service.py](.\/scheduler\/service.py:8), \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e1e\u0e08\u0e19\u0e32\u0e19\u0e38\u0e01\u0e23\u0e21\u0e43\u0e19 [repository.py](.\/scheduler\/repository.py:9).\n   - \u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a: \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e14\u0e49\u0e27\u0e22\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e14\u0e34\u0e21\u0e2d\u0e32\u0e08\u0e43\u0e0a\u0e49\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38 `1` \u0e0b\u0e49\u0e33 \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e16\u0e39\u0e01\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e01\u0e34\u0e14\u0e01\u0e32\u0e23\u0e2a\u0e39\u0e0d\u0e40\u0e2a\u0e35\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n   - \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33: \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 `Job(1, ...)`, \u0e2a\u0e23\u0e49\u0e32\u0e07 `SchedulerService(repository)`, \u0e41\u0e25\u0e49\u0e27\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e07\u0e32\u0e19\u0e2d\u0e35\u0e01\u0e07\u0e32\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07 \u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e08\u0e30\u0e21\u0e35\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48\n   - \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02: \u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e08\u0e32\u0e01\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\n   - \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22: [test_scheduler.py](.\/tests\/test_scheduler.py:22).\n\n2. **\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e25\u0e32\u0e07 \u2014 \u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e40\u0e01\u0e34\u0e14\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e40\u0e27\u0e25\u0e32\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e27\u0e25\u0e32\u0e2d\u0e2d\u0e21\u0e41\u0e2a\u0e07**\n\n   - \u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19: \u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e43\u0e19 [time_rules.py](.\/scheduler\/time_rules.py:4).\n   - \u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a: \u0e07\u0e32\u0e19\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e27\u0e25\u0e32 09:00 \u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48 10:00 \u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e24\u0e14\u0e39\u0e43\u0e1a\u0e44\u0e21\u0e49\u0e1c\u0e25\u0e34\n   - \u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e02\u0e31\u0e49\u0e19\u0e15\u0e48\u0e33: \u0e04\u0e33\u0e19\u0e27\u0e13\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e16\u0e31\u0e14\u0e44\u0e1b\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 `2026-03-07 09:00 America\/New_York` \u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e04\u0e37\u0e2d `2026-03-08 10:00`.\n   - \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02: \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e27\u0e31\u0e19\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19 1 \u0e27\u0e31\u0e19 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 UTC \u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\n   - \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22: [test_scheduler.py](.\/tests\/test_scheduler.py:33).\n\n## \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\n\n- [scheduler\/service.py](.\/scheduler\/service.py)\n- [scheduler\/time_rules.py](.\/scheduler\/time_rules.py)\n- [tests\/test_scheduler.py](.\/tests\/test_scheduler.py)\n\n## \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\n\n- \u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\n- \u0e41\u0e15\u0e48\u0e25\u0e30\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19\n- `PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -v`\n- \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c: **4 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e1c\u0e48\u0e32\u0e19, 0 \u0e01\u0e32\u0e23\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27**.\n- \u0e44\u0e21\u0e48\u0e21\u0e35\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e04\u0e0a Python \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e2d\u0e22\u0e39\u0e48\n\n## \u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\n\n- **\u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b:** \u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e25\u0e49\u0e27 \u0e41\u0e25\u0e30\u0e16\u0e39\u0e01\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e16\u0e14\u0e16\u0e2d\u0e22\u0e17\u0e35\u0e48\u0e21\u0e38\u0e48\u0e07\u0e40\u0e19\u0e49\u0e19\n- **\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19:** \u0e44\u0e21\u0e48\u0e21\u0e35.<\/pre><\/div><\/details><details class=\"d-full\"><summary>\u0e14\u0e39\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07\u0e42\u0e04\u0e49\u0e14 Claude \u0e41\u0e1a\u0e1a\u0e40\u0e15\u0e47\u0e21<\/summary><div class=\"d-full-pane\"><p class=\"d-full-note\">\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a<\/p><pre># T4 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 \u2014 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14\n\n## \u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\n\n| \u0e2a\u0e19\u0e32\u0e21 | \u0e04\u0e48\u0e32 |\n| --- | --- |\n| \u0e07\u0e32\u0e19 | `T4` |\n| \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `01-prompts\/T4.md` |\n| SHA-256 \u0e02\u0e2d\u0e07\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 | `5e69546007ea776f40b3d334ddb75671ff684c151c77551bad27de3b0fdce640` |\n| \u0e2b\u0e19\u0e48\u0e27\u0e22\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 | subagent Claude \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01, `general-purpose`, \u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e43\u0e2b\u0e21\u0e48 |\n| \u0e27\u0e34\u0e18\u0e35\u0e41\u0e22\u0e01 | **subagent fallback** (\u0e01\u0e32\u0e23\u0e25\u0e14\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49 \u2014 \u0e14\u0e39 `results\/isolation-decision.md`) |\n| \u0e2a\u0e33\u0e40\u0e19\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e2d\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23 | `runtime\/workspaces\/T4` |\n| \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e42\u0e04\u0e49\u0e14 Claude | `2.1.220` |\n| \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25 | `claude-opus-5` |\n| start_utc | `2026-07-28T10:28:22Z` |\n| end_utc | `2026-07-28T10:32:17Z` |\n| \u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32 | 235 \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35 (\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\u0e01\u0e31\u0e1a T1\u2013T3; \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e27\u0e31\u0e14\u0e04\u0e27\u0e32\u0e21\u0e25\u0e48\u0e32\u0e0a\u0e49\u0e32\u0e17\u0e35\u0e48\u0e41\u0e21\u0e48\u0e19\u0e22\u0e33) |\n| \u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07 | 1 |\n| \u0e2a\u0e16\u0e32\u0e19\u0e30 | `valid` |\n| \u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e41\u0e0b\u0e07\u0e02\u0e2d\u0e07\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c | \u0e44\u0e21\u0e48\u0e21\u0e35 |\n\n\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e43\u0e19\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 \u2014 \"\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2b\u0e32\u0e01\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\n\u0e41\u0e01\u0e49\u0e44\u0e02\" \u2014 \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\u0e08\u0e32\u0e01 `00-control\/run-config.json` \u0e41\u0e25\u0e30\n`00-control\/safety-policy.json` \u0e0b\u0e36\u0e48\u0e07\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e35\u0e22\u0e19\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01\u0e21\u0e32 \u0e1c\u0e39\u0e49\u0e23\u0e31\u0e19\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\n\u0e41\u0e08\u0e49\u0e07\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e44\u0e1f\u0e25\u0e4c\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e43\u0e14\u0e46\n\n## \u0e2a\u0e23\u0e38\u0e1b\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\n\n`date`, `Read`\/`Edit`\/`Write` \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e20\u0e32\u0e22\u0e43\u0e19\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19, `grep`,\n`python3 -m unittest discover`, `python3 -m compileall`, \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 vacuity \u0e14\u0e49\u0e27\u0e22\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27,\n\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07 manifest \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 \u0e44\u0e21\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 \u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\n\n## \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\n\n`scheduler\/time_rules.py` (\u0e41\u0e01\u0e49\u0e44\u0e02), `scheduler\/service.py` (\u0e41\u0e01\u0e49\u0e44\u0e02),\n`tests\/test_scheduler.py` (\u0e41\u0e01\u0e49\u0e44\u0e02, +2 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a), `tests\/test_time_rules.py` (\u0e40\u0e1e\u0e34\u0e48\u0e21, 5 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a).\n\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e40\u0e15\u0e47\u0e21: `results\/T4\/patch.diff`.\n\n## \u0e1c\u0e25\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\n\n\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e42\u0e14\u0e22\u0e15\u0e31\u0e27\u0e23\u0e31\u0e19\u0e07\u0e32\u0e19:\n\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a | \u0e1c\u0e25 |\n| --- | --- |\n| `python3 -m unittest discover -s tests -v` | **9 \u0e1c\u0e48\u0e32\u0e19, 0 \u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27, 0 \u0e02\u0e49\u0e32\u0e21** (\u0e04\u0e48\u0e32\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19 2) |\n| `python3 -m compileall -q scheduler tests` | \u0e1c\u0e48\u0e32\u0e19 |\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07 manifest \u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a `expected_files` | \u0e17\u0e31\u0e49\u0e07 8 \u0e44\u0e1f\u0e25\u0e4c\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 |\n| \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 vacuity \u0e01\u0e31\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19 | 5 \u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27, 4 \u0e1c\u0e48\u0e32\u0e19, \u0e15\u0e32\u0e21\u0e17\u0e35\u0e48\u0e04\u0e32\u0e14\u0e44\u0e27\u0e49 |\n\n\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e0b\u0e49\u0e33\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\u0e08\u0e32\u0e01\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19:\n\n| \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a | \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c | |\n| --- | --- | --- |\n| \u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30 (`results\/checks\/T4-public.txt`) | 0 | 9 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a, OK |\n\n\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e32\u0e21\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19: \u0e15\u0e31\u0e27\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07 T3 \u0e01\u0e47\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e31\u0e1a\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e19\u0e35\u0e49\n\u0e14\u0e49\u0e27\u0e22 (exit 0) \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 T4 \u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07 `next_daily_run` \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e34\u0e2a\u0e23\u0e30 \u0e14\u0e39\n`results\/checks\/validator-controls.md`.\n\n## \u0e04\u0e27\u0e32\u0e21\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e43\u0e19 Gold-map\n\n`03-checks\/gold-map.json` \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 T4 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e16\u0e39\u0e01\u0e1e\u0e1a:\n\n| \u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14 | \u0e1e\u0e1a | \u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e40\u0e1b\u0e47\u0e19 |\n| --- | --- | --- |\n| blank owner accepted | yes | **D5**, `scheduler\/service.py:11,13`, \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07 Low, \u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e42\u0e14\u0e22\u0e40\u0e08\u0e15\u0e19\u0e32 |\n| \u0e01\u0e32\u0e23\u0e25\u0e1a\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14 `KeyError` | \u0e43\u0e0a\u0e48 | **D4**, `scheduler\/repository.py:19` \u2192 `service.py:22`, \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07 Medium, \u0e44\u0e14\u0e49\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e42\u0e14\u0e22\u0e40\u0e08\u0e15\u0e19\u0e32 |\n\n\u0e21\u0e35\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e2d\u0e35\u0e01\u0e2a\u0e32\u0e21\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e19\u0e2d\u0e01\u0e40\u0e2b\u0e19\u0e37\u0e2d\u0e08\u0e32\u0e01\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e43\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e1c\u0e25\u0e1a\u0e27\u0e01\u0e1b\u0e25\u0e2d\u0e21:\n\n- **D1** \u2014 \u0e04\u0e27\u0e32\u0e21\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e02\u0e2d\u0e07 DST \u0e43\u0e19 `next_daily_run` \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e43\u0e19\n  `03-checks\/seeded-defects.md` (\u0e16\u0e39\u0e01\u0e08\u0e31\u0e14\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e20\u0e32\u0e22\u0e43\u0e15\u0e49 T3 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 T4 \u0e41\u0e15\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e0a\u0e38\u0e14\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e08\u0e23\u0e34\u0e07)\n- **D2** \u2014 \u0e01\u0e32\u0e23\u0e1b\u0e49\u0e2d\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e1a\u0e1a\u0e07\u0e48\u0e32\u0e22\u0e46 \u0e44\u0e1b\u0e22\u0e31\u0e07 `next_daily_run` \u0e08\u0e30\u0e23\u0e31\u0e1a\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e02\u0e2d\u0e07\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e42\u0e14\u0e22\u0e40\u0e07\u0e35\u0e22\u0e1a\u0e46 \u0e41\u0e25\u0e30\u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\n  datetime \u0e17\u0e35\u0e48\u0e23\u0e31\u0e1a\u0e23\u0e39\u0e49\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e44\u0e14\u0e49 \u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e08\u0e23\u0e34\u0e07\u0e41\u0e25\u0e30\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e42\u0e2e\u0e2a\u0e15\u0e4c; \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e41\u0e2b\u0e25\u0e48\u0e07\u0e17\u0e35\u0e48\u0e21\u0e32\u0e02\u0e2d\u0e07 fixture\n- **D3** \u2014 \u0e01\u0e32\u0e23\u0e0a\u0e19\u0e01\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e01\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e09\u0e35\u0e14\u0e2b\u0e23\u0e37\u0e2d\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\n  \u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19 \u0e08\u0e23\u0e34\u0e07: `SchedulerService._next_identifier` \u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48 1 \u0e40\u0e2a\u0e21\u0e2d \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\n  `JobRepository.save` \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32 dict \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 T1 \u0e44\u0e14\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e08\u0e38\u0e14\u0e2d\u0e48\u0e2d\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\n  \u0e08\u0e32\u0e01 fixture \u0e17\u0e35\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02\n\n\u0e08\u0e33\u0e19\u0e27\u0e19\u0e1c\u0e25\u0e1a\u0e27\u0e01\u0e1b\u0e25\u0e2d\u0e21: **0**. \u0e1c\u0e39\u0e49\u0e23\u0e31\u0e19\u0e22\u0e31\u0e07\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e14\u0e49\u0e32\u0e19\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 \u0e42\u0e14\u0e22\u0e23\u0e30\u0e1a\u0e38\u0e27\u0e48\u0e32\nfixture \u0e44\u0e21\u0e48\u0e21\u0e35\u0e08\u0e38\u0e14\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e14\u0e49\u0e32\u0e19\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22, I\/O, \u0e01\u0e32\u0e23\u0e16\u0e2d\u0e14\u0e23\u0e2b\u0e31\u0e2a, \u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e22\u0e48\u0e2d\u0e22 \u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\n\n## \u0e04\u0e27\u0e32\u0e21\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e04\u0e27\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\n\n\u0e1e\u0e23\u0e2d\u0e21\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07\u0e44\u0e14\u0e49\u0e02\u0e2d\u0e43\u0e2b\u0e49\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02 \"\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e2a\u0e39\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\" \u0e1c\u0e39\u0e49\n\u0e23\u0e31\u0e19\u0e40\u0e19\u0e2d\u0e23\u0e4c\u0e44\u0e14\u0e49\u0e40\u0e25\u0e37\u0e2d\u0e01 D1\/D2 (\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e43\u0e19\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19) \u0e41\u0e25\u0e30 D3 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e1d\u0e31\u0e07\u0e43\u0e19\u0e41\u0e1c\u0e19\u0e17\u0e35\u0e48\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\nD4 \u0e41\u0e25\u0e30 D5 \u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e19\u0e31\u0e49\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e31\u0e1a\u0e44\u0e14\u0e49: D4 \u0e41\u0e25\u0e30 D5 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e2a\u0e31\u0e0d\u0e0d\u0e32 API\n\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32 \u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a \u2014 \u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\n\u0e16\u0e39\u0e01\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e41\u0e25\u0e49\u0e27 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e14\u0e49\u0e27\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1f\u0e25\u0e4c \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 \u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07 \u0e1c\u0e25\u0e01\u0e23\u0e30\u0e17\u0e1a \u0e41\u0e25\u0e30\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e08\u0e33\u0e25\u0e2d\u0e07 \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e08\u0e23\u0e34\u0e07\n\u0e41\u0e25\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e25\u0e48\u0e32\n\n## \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\n\n\u0e01\u0e32\u0e23\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e15\u0e19\u0e40\u0e2d\u0e07 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e2b\u0e31\u0e01\u0e40\u0e27\u0e25\u0e32\u0e41\u0e1a\u0e1a\u0e19\u0e32\u0e2c\u0e34\u0e01\u0e32\u0e08\u0e23\u0e34\u0e07 (wall-clock) \u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e40\u0e27\u0e25\u0e32\u0e41\u0e1a\u0e1a\u0e2a\u0e31\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c (absolute-time) \u0e1a\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\n\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 `tzinfo` \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19; \u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e08\u0e32\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21 `__pycache__`\n\u0e16\u0e39\u0e01\u0e25\u0e1a\u0e2d\u0e2d\u0e01\u0e2b\u0e25\u0e31\u0e07\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07 (\u0e15\u0e32\u0e21\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a)\n\n### \u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\n\n**D1 \u2014 `scheduler\/time_rules.py:10-11` \u2014 \u0e15\u0e32\u0e23\u0e32\u0e07\u0e40\u0e27\u0e25\u0e32\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e04\u0e25\u0e32\u0e14\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e1b\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e43\u0e19\u0e0a\u0e48\u0e27\u0e07 DST \u2014 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07: \u0e2a\u0e39\u0e07**\n\n`next_daily_run` \u0e40\u0e1e\u0e34\u0e48\u0e21 24 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 *\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27* \u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1b-\u0e01\u0e25\u0e31\u0e1a UTC \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e27\u0e31\u0e19\u0e1b\u0e0f\u0e34\u0e17\u0e34\u0e19\u0e44\u0e1b\u0e02\u0e49\u0e32\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e07\u0e32\u0e19\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e42\u0e14\u0e22\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07 (wall-clock time) \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 \u0e07\u0e32\u0e19\u0e17\u0e38\u0e01\u0e07\u0e32\u0e19\u0e43\u0e19\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21 DST \u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e23\u0e47\u0e27\u0e2b\u0e23\u0e37\u0e2d\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e27\u0e31\u0e19\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e27\u0e25\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19\u0e44\u0e1b \u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e19\u0e35\u0e49\u0e08\u0e30\u0e22\u0e31\u0e07\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48 (\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e41\u0e15\u0e48\u0e25\u0e30\u0e04\u0e23\u0e31\u0e49\u0e07\u0e08\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e08\u0e32\u0e01\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e1b) \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19 docstring \u0e40\u0e2d\u0e07\u0e01\u0e47\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e19\u0e35\u0e49\n\n```\nprev = datetime(2024, 3, 9, 9, 0, tzinfo=ZoneInfo(\"America\/New_York\"))\nnext_daily_run(prev)   # -&gt; 2024-03-10 10:00:00-04:00, expected 09:00-04:00\nprev = datetime(2024, 11, 2, 9, 0, tzinfo=ZoneInfo(\"America\/New_York\"))\nnext_daily_run(prev)   # -&gt; 2024-11-03 08:00:00-05:00, \u0e04\u0e32\u0e14\u0e01\u0e32\u0e23\u0e13\u0e4c 09:00-05:00\n```\n\n**D2 \u2014 `scheduler\/time_rules.py:10-11` \u2014 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32\u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e23\u0e30\u0e21\u0e31\u0e14\u0e23\u0e30\u0e27\u0e31\u0e07\u0e08\u0e30\u0e23\u0e31\u0e1a\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u2014 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07: \u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07**\n\n\u0e2a\u0e2d\u0e07\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e40\u0e14\u0e34\u0e21 `.astimezone(timezone.utc)` \u0e1a\u0e19 datetime \u0e41\u0e1a\u0e1a naive \u0e08\u0e30\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a \u0e41\u0e25\u0e30 `.astimezone(None)` \u0e08\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 datetime \u0e41\u0e1a\u0e1a aware \u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e14\u0e49\u0e27\u0e22\u0e04\u0e48\u0e32 datetime \u0e41\u0e1a\u0e1a naive \u0e08\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 datetime \u0e41\u0e1a\u0e1a aware \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e04\u0e48\u0e32 datetime \u0e41\u0e1a\u0e1a naive \u0e2d\u0e37\u0e48\u0e19\u0e46 \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e44\u0e14\u0e49 (`TypeError` \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a) \u0e41\u0e25\u0e30\u0e04\u0e33\u0e15\u0e2d\u0e1a\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a `TZ` \u0e02\u0e2d\u0e07\u0e42\u0e2e\u0e2a\u0e15\u0e4c\n\n```\nnext_daily_run(datetime(2024, 1, 1, 9, 0))\n# -&gt; datetime(2024, 1, 2, 9, 0, tzinfo=timezone(timedelta(hours=8), 'CST'))  # \u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e42\u0e2e\u0e2a\u0e15\u0e4c\n```\n\n**D3 \u2014 `scheduler\/service.py:8,13,15` (pre-fix) \u2014 \u0e01\u0e32\u0e23\u0e0a\u0e19\u0e01\u0e31\u0e19\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e44\u0e27\u0e49\u0e16\u0e39\u0e01\u0e25\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19 \u2014 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07: \u0e2a\u0e39\u0e07**\n\n\u0e15\u0e31\u0e27\u0e19\u0e31\u0e1a id \u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e15\u0e48\u0e2d `SchedulerService` \u0e41\u0e15\u0e48\u0e25\u0e30\u0e15\u0e31\u0e27 \u0e41\u0e25\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48 1 \u0e40\u0e2a\u0e21\u0e2d \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e04\u0e33\u0e19\u0e36\u0e07\u0e16\u0e36\u0e07\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e02\u0e2d\u0e07 repository \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e09\u0e35\u0e14\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32 \u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07\u0e43\u0e14 \u0e46 \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 repository \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e43\u0e14 \u0e46 \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 repository \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e08\u0e30\u0e2d\u0e2d\u0e01 id 1 \u0e43\u0e2b\u0e21\u0e48; `JobRepository.save` \u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a dict \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e08\u0e36\u0e07\u0e16\u0e39\u0e01\u0e40\u0e02\u0e35\u0e22\u0e19\u0e17\u0e31\u0e1a\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e39\u0e0d\u0e2b\u0e32\u0e22\n\n```\nrepo = JobRepository()\nSchedulerService(repo).create_job(\"Nightly backup\", \"Alex\")    # id 1\nSchedulerService(repo).create_job(\"Payroll export\", \"Blake\")   # id 1 \u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07\nrepo.all()   # -&gt; [Job(1, 'Payroll export', 'Blake')]  \u2014 \u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 Alex \u0e2b\u0e32\u0e22\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\n```\n\n**D4 \u2014 `scheduler\/repository.py:19` \u2192 `scheduler\/service.py:22` \u2014 `delete_job` \u0e2a\u0e23\u0e49\u0e32\u0e07 `KeyError` \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01 id \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e31\u0e01 \u2014 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07: \u0e1b\u0e32\u0e19\u0e01\u0e25\u0e32\u0e07**\n\n`delete` \u0e43\u0e0a\u0e49 `dict.pop` \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48 `get` \u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 (\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 13) \u0e08\u0e30\u0e04\u0e37\u0e19\u0e04\u0e48\u0e32 `None` \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \u0e04\u0e27\u0e32\u0e21\u0e44\u0e21\u0e48\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e19\u0e35\u0e49\u0e17\u0e33\u0e43\u0e2b\u0e49 `KeyError` \u0e14\u0e34\u0e1a\u0e23\u0e31\u0e48\u0e27\u0e44\u0e2b\u0e25\u0e1c\u0e48\u0e32\u0e19 `SchedulerService.delete_job` \u0e0b\u0e36\u0e48\u0e07\u0e1c\u0e39\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e21\u0e35\u0e41\u0e19\u0e27\u0e42\u0e19\u0e49\u0e21\u0e17\u0e35\u0e48\u0e08\u0e30\u0e08\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49 \u0e27\u0e34\u0e18\u0e35\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14: `SchedulerService().delete_job(999)` \u2192 `KeyError: 999`. \u0e27\u0e34\u0e18\u0e35\u0e41\u0e01\u0e49\u0e44\u0e02\u0e04\u0e37\u0e2d `pop(identifier, None)` \u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e01\u0e40\u0e27\u0e49\u0e19\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e2d\u0e07\u0e42\u0e14\u0e40\u0e21\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u2014 \u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e42\u0e14\u0e22\u0e40\u0e08\u0e15\u0e19\u0e32 \u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 (\u0e44\u0e21\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e25 vs. \u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e30\u0e1a\u0e38\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17) \u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a API\n\n**D5 \u2014 `scheduler\/service.py:11,13` \u2014 \u0e1f\u0e34\u0e25\u0e14\u0e4c Owner \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u2014 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e23\u0e38\u0e19\u0e41\u0e23\u0e07: \u0e15\u0e48\u0e33**\n\n`name` \u0e16\u0e39\u0e01\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32\u0e27\u0e48\u0e32\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e41\u0e15\u0e48 `owner` \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a: `create_job(\"ok\", \"   \")` \u0e40\u0e01\u0e47\u0e1a `owner=''` \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1e\u0e32\u0e23\u0e32\u0e21\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e22\u0e31\u0e07\u0e40\u0e23\u0e35\u0e22\u0e01 `.strip()` \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e1b\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e19 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 `None` \u0e08\u0e36\u0e07\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e40\u0e1b\u0e47\u0e19 `AttributeError: 'NoneType' object has no attribute 'strip'` \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19 `ValueError` \u0e17\u0e35\u0e48 API \u0e43\u0e0a\u0e49\u0e42\u0e14\u0e22\u0e1b\u0e01\u0e15\u0e34\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u2014 \u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e43\u0e08\u0e44\u0e27\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48\u0e43\u0e14\u0e43\u0e19 fixture\n\n**\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22:** \u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07 \u0e1f\u0e34\u0e01\u0e40\u0e08\u0e2d\u0e23\u0e4c\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e08\u0e38\u0e14\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e14\u0e49\u0e32\u0e19\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 I\/O \u0e01\u0e32\u0e23\u0e16\u0e2d\u0e14\u0e23\u0e2b\u0e31\u0e2a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e19\u0e38\u0e01\u0e23\u0e21 \u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e22\u0e48\u0e2d\u0e22 \u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07; \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e47\u0e19 dict \u0e20\u0e32\u0e22\u0e43\u0e19\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\n\n**\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21:** `scheduler\/time_rules.py` \u0e41\u0e25\u0e30 `scheduler\/repository.py` \u0e21\u0e35\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e1b\u0e47\u0e19\u0e28\u0e39\u0e19\u0e22\u0e4c\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49; \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e2a\u0e2d\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e44\u0e27\u0e49\u0e44\u0e14\u0e49\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e1b\u0e01\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19\n\n### \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\n\n\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e2a\u0e39\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14\u0e2a\u0e2d\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e37\u0e2d **D1\/D2** (\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07) \u0e41\u0e25\u0e30 **D3**\n\n**\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 1 \u2014 `scheduler\/time_rules.py`:** \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13 UTC round-trip \u0e14\u0e49\u0e27\u0e22 `previous_run + timedelta(days=1)` \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13 UTC round-trip \u0e14\u0e49\u0e27\u0e22 `previous_run + timedelta (days=1)` Python \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e15\u0e32\u0e21\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07 (wall-clock arithmetic) \u0e1a\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e23\u0e31\u0e1a\u0e23\u0e39\u0e49\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32 (aware datetimes) \u0e41\u0e25\u0e30 `zoneinfo` \u0e08\u0e30\u0e04\u0e33\u0e19\u0e27\u0e13\u0e04\u0e48\u0e32 offset UTC \u0e43\u0e2b\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e25\u0e48\u0e32\u0e0a\u0e49\u0e32 (lazily) \u0e08\u0e32\u0e01\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07\u0e43\u0e2b\u0e21\u0e48 \u2014 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 09:00 \u0e08\u0e30\u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e1b\u0e47\u0e19 09:00 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e04\u0e48\u0e32 offset \u0e08\u0e30\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e08\u0e32\u0e01 `-05:00 \u2192 -04:00` \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e0b\u0e36\u0e48\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e1b\u0e31\u0e0d\u0e2b\u0e32 D1 \u0e41\u0e25\u0e30 D2 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19: \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e02\u0e49\u0e32\u0e41\u0e1a\u0e1a naive \u0e08\u0e30\u0e22\u0e31\u0e07\u0e04\u0e07\u0e40\u0e1b\u0e47\u0e19 naive \u0e41\u0e25\u0e30\u0e40\u0e02\u0e15\u0e40\u0e27\u0e25\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e2d\u0e19\u0e38\u0e21\u0e32\u0e19\u0e40\u0e25\u0e22 \u0e01\u0e23\u0e13\u0e35\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 \"\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e44\u0e14\u0e49\" \u0e01\u0e31\u0e1a \"\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\" \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e44\u0e27\u0e49\u0e27\u0e48\u0e32\u0e43\u0e2b\u0e49\u0e22\u0e36\u0e14\u0e15\u0e32\u0e21\u0e01\u0e0e fold \u0e02\u0e2d\u0e07 tzinfo\n\n**\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 2 \u2014 `scheduler\/service.py`:** \u0e44\u0e14\u0e49\u0e25\u0e1a\u0e15\u0e31\u0e27\u0e19\u0e31\u0e1a `_next_identifier` \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e15\u0e48\u0e2d\u0e2d\u0e34\u0e19\u0e2a\u0e41\u0e15\u0e19\u0e0b\u0e4c\u0e2d\u0e2d\u0e01; \u0e15\u0e31\u0e27\u0e23\u0e30\u0e1a\u0e38\u0e08\u0e30\u0e16\u0e39\u0e01\u0e08\u0e31\u0e14\u0e2a\u0e23\u0e23\u0e08\u0e32\u0e01\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e02\u0e2d\u0e07\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e40\u0e1b\u0e47\u0e19 `max(existing ids, default=0) + 1` \u0e43\u0e19\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19 \u0e0b\u0e36\u0e48\u0e07\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e41\u0e25\u0e30\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e40\u0e15\u0e34\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e01\u0e32\u0e23\u0e41\u0e25\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19: O(n) \u0e15\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e17\u0e19 O(1), \u0e0b\u0e36\u0e48\u0e07\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e44\u0e14\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e19\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e17\u0e35\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e42\u0e14\u0e22 dict \u0e41\u0e25\u0e30\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e15\u0e31\u0e27\u0e19\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e17\u0e35\u0e48\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e21\u0e31\u0e19\u0e40\u0e02\u0e35\u0e22\u0e19\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e44\u0e14\u0e49\n\n**\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u2014 `tests\/test_time_rules.py` (\u0e43\u0e2b\u0e21\u0e48, 5 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a):** \u0e01\u0e32\u0e23\u0e23\u0e31\u0e01\u0e29\u0e32\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07 (wall-clock) \u0e41\u0e1a\u0e1a spring-forward \u0e41\u0e25\u0e30 fall-back, \u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e41\u0e1a\u0e1a\u0e2a\u0e31\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c 23 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\/25 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19, \u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e43\u0e2b\u0e21\u0e48\u0e02\u0e2d\u0e07 UTC-offset, \u0e2b\u0e25\u0e31\u0e01\u0e01\u0e32\u0e23 naive-stays-naive, \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e27\u0e31\u0e19 UTC \u0e41\u0e1a\u0e1a\u0e18\u0e23\u0e23\u0e21\u0e14\u0e32 \u0e02\u0e49\u0e32\u0e21\u0e44\u0e1b\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e2b\u0e32\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35\u0e10\u0e32\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 IANA\n\n**\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u2014 `tests\/test_scheduler.py` (\u0e02\u0e22\u0e32\u0e22, +2 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a):** \u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 repositori \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e2d\u0e01 ID \u0e17\u0e35\u0e48\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19\u0e41\u0e25\u0e30\u0e40\u0e01\u0e47\u0e1a\u0e07\u0e32\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e44\u0e27\u0e49; \u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 repositori \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e40\u0e15\u0e34\u0e21 ID 1 \u0e41\u0e25\u0e30 7 \u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e2d\u0e01 ID 8 \u0e41\u0e25\u0e30\u0e17\u0e34\u0e49\u0e07\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e27\u0e49\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\n\n**\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e25\u0e48\u0e32:** \u0e1c\u0e21\u0e44\u0e14\u0e49\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e41\u0e1a\u0e1a\u0e40\u0e14\u0e34\u0e21\u0e43\u0e19\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e0a\u0e31\u0e48\u0e27\u0e04\u0e23\u0e32\u0e27\u0e41\u0e25\u0e30\u0e23\u0e31\u0e19\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e43\u0e2b\u0e21\u0e48 \u2014 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e31\u0e49\u0e07 5 \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 (`FAILED (failures=5)`), \u0e41\u0e25\u0e30\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e14\u0e49\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e25\u0e49\u0e27 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e2b\u0e25\u0e48\u0e32\u0e19\u0e35\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07\n\n\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19: \u0e23\u0e48\u0e32\u0e07\u0e41\u0e23\u0e01\u0e02\u0e2d\u0e07\u0e09\u0e31\u0e19\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e27\u0e25\u0e32 DST \u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b\u0e41\u0e25\u0e49\u0e27\u0e40\u0e1b\u0e47\u0e19 `result - previous` \u0e0b\u0e36\u0e48\u0e07 Python \u0e08\u0e30\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e19\u0e27\u0e13\u0e15\u0e32\u0e21\u0e40\u0e27\u0e25\u0e32\u0e08\u0e23\u0e34\u0e07 (wall-clock arithmetic) \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 tzinfo \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e08\u0e36\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e04\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19 `24h` \u0e41\u0e25\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27 \u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e08\u0e30\u0e41\u0e1b\u0e25\u0e07\u0e40\u0e1b\u0e47\u0e19 UTC \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e25\u0e1a \u0e01\u0e32\u0e23\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e19\u0e35\u0e49\u0e40\u0e01\u0e34\u0e14\u0e08\u0e32\u0e01\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e1c\u0e21 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e32\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\n\n### \u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07\n\n`fixture-manifest.json` \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 `tests\/test_time_rules.py` \u0e08\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e43\u0e19 `expected_files` \u2014 \u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15 manifest \u0e2b\u0e32\u0e01\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e43\u0e2b\u0e49\u0e43\u0e0a\u0e49\u0e0a\u0e38\u0e14\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 \u0e41\u0e25\u0e30 D4\/D5 \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e42\u0e14\u0e22\u0e40\u0e08\u0e15\u0e19\u0e32: \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e13\u0e35\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e2a\u0e31\u0e0d\u0e0d\u0e32 API (semantics \u0e02\u0e2d\u0e07 miss-on-delete, \u0e01\u0e0e\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e08\u0e49\u0e32\u0e02\u0e2d\u0e07) \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48\u0e43\u0e14\u0e43\u0e19 fixture \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e23\u0e13\u0e35\u0e43\u0e14\u0e01\u0e23\u0e13\u0e35\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e04\u0e32\u0e14\u0e40\u0e14\u0e32\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07.\n<\/pre><\/div><\/details><\/div><p class=\"d-limit\">\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e02\u0e2d\u0e07 Fixture: \u0e19\u0e35\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 Python \u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01 Claude \u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e02\u0e2d\u0e07 subagent \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 CLI OAuth \u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19.<\/p><\/article>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e27\u0e34\u0e18\u0e35\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c\u0e44\u0e14\u0e49 \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e01\u0e32\u0e23\u0e0b\u0e48\u0e2d\u0e21\u0e41\u0e0b\u0e21 \u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2d\u0e34\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e40\u0e1f\u0e0b\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07 \u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e0a\u0e34\u0e07\u0e25\u0e1a\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e44\u0e1b \u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 \u0e41\u0e25\u0e30\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a \u0e01\u0e32\u0e23\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e31\u0e48\u0e19\u0e43\u0e08\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49.<\/p>\n\n\n\n<h2 id=\"safety\" class=\"wp-block-heading\">\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c, \u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e0b\u0e19\u0e14\u0e4c\u0e1a\u0e47\u0e2d\u0e01\u0e0b\u0e4c \u0e41\u0e25\u0e30\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e43\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e07\u0e32\u0e19<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e2d\u0e48\u0e32\u0e19\u0e42\u0e04\u0e49\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27 \u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e0a\u0e25\u0e25\u0e4c \u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1f\u0e25\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c \u0e41\u0e25\u0e30\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e44\u0e14\u0e49 \u0e0b\u0e36\u0e48\u0e07\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e2d\u0e2d\u0e01\u0e41\u0e1a\u0e1a\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c \u0e04\u0e33\u0e16\u0e32\u0e21\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e04\u0e37\u0e2d \u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e43\u0e14\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34 \u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e43\u0e14\u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 \u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e43\u0e14 \u0e41\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e17\u0e35\u0e48\u0e40\u0e01\u0e34\u0e14\u0e02\u0e36\u0e49\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e2d\u0e22\u0e48\u0e32\u0e04\u0e34\u0e14\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e25\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e33\u0e02\u0e2d\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e08\u0e30\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e42\u0e14\u0e22\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 \u0e01\u0e32\u0e23\u0e25\u0e14\u0e04\u0e27\u0e32\u0e21\u0e22\u0e38\u0e48\u0e07\u0e22\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e43\u0e19\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e41\u0e22\u0e01\u0e15\u0e31\u0e27 \u0e0b\u0e36\u0e48\u0e07\u0e44\u0e21\u0e48\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e25\u0e34\u0e15 \u0e41\u0e15\u0e48\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e19\u0e35\u0e49\u0e2d\u0e32\u0e08\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e2d\u0e31\u0e19\u0e15\u0e23\u0e32\u0e22\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e2a\u0e04\u0e23\u0e34\u0e1b\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49 \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e25\u0e39\u0e01\u0e04\u0e49\u0e32\u0e08\u0e23\u0e34\u0e07 \u0e2b\u0e23\u0e37\u0e2d\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e04\u0e25\u0e32\u0e27\u0e14\u0e4c\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e27\u0e32\u0e07 \u0e43\u0e19\u0e17\u0e32\u0e07\u0e01\u0e25\u0e31\u0e1a\u0e01\u0e31\u0e19 \u0e01\u0e32\u0e23\u0e02\u0e2d\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e21\u0e32\u0e01\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\u0e2d\u0e32\u0e08\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e01\u0e25\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e44\u0e14\u0e49\u0e08\u0e23\u0e34\u0e07 \u0e41\u0e25\u0e30\u0e01\u0e23\u0e30\u0e15\u0e38\u0e49\u0e19\u0e43\u0e2b\u0e49\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e04\u0e33\u0e02\u0e2d\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e17\u0e35\u0e48\u0e40\u0e1e\u0e34\u0e48\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e25\u0e34\u0e15 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e41\u0e0b\u0e07\u0e08\u0e32\u0e01\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c\u0e43\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e19\u0e35\u0e49\u0e08\u0e36\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e01\u0e32\u0e23\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e20\u0e32\u0e22\u0e43\u0e15\u0e49\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e2a\u0e31\u0e21\u0e1e\u0e31\u0e17\u0e18\u0e4c\u0e02\u0e2d\u0e07\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e43\u0e14\u0e01\u0e47\u0e15\u0e32\u0e21\u0e43\u0e19\u0e07\u0e32\u0e19\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e43\u0e2b\u0e49\u0e40\u0e23\u0e34\u0e48\u0e21\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e14\u0e40\u0e23\u0e01\u0e17\u0e2d\u0e23\u0e35\u0e41\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15 \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07 (diff) \u0e41\u0e25\u0e30\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e01\u0e25\u0e32\u0e07\u0e43\u0e19\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e39\u0e49\u0e04\u0e37\u0e19\u0e44\u0e14\u0e49.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48\u0e01\u0e47\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07.<\/li>\n\n\n\n<li>\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e41\u0e25\u0e30\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e15\u0e32\u0e21\u0e21\u0e32\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19.<\/li>\n\n\n\n<li>\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e32\u0e23\u0e1c\u0e25\u0e34\u0e15 \u0e41\u0e25\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49\u0e44\u0e27\u0e49\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01\u0e0a\u0e48\u0e27\u0e07\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49.<\/li>\n\n\n\n<li>\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07 (diff) \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e22\u0e49\u0e2d\u0e19\u0e01\u0e25\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e22\u0e2d\u0e21\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"customization\" class=\"wp-block-heading\">MCP, \u0e17\u0e31\u0e01\u0e29\u0e30, \u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e07<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e34\u0e40\u0e27\u0e28\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e22\u0e32\u0e22\u0e44\u0e14\u0e49 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e16\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e04\u0e33\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e33\u0e17\u0e35\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19 \u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23\u0e08\u0e30\u0e1a\u0e2d\u0e01\u0e43\u0e2b\u0e49\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e17\u0e23\u0e32\u0e1a\u0e27\u0e48\u0e32\u0e04\u0e27\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e23\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e2a\u0e48\u0e27\u0e19 Skills \u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e19\u0e33\u0e01\u0e25\u0e31\u0e1a\u0e21\u0e32\u0e43\u0e0a\u0e49\u0e43\u0e2b\u0e21\u0e48\u0e44\u0e14\u0e49\u0e08\u0e30\u0e23\u0e27\u0e21\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e0a\u0e35\u0e48\u0e22\u0e27\u0e0a\u0e32\u0e0d\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49 MCP \u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e01\u0e31\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 \u0e2a\u0e48\u0e27\u0e19 Hooks \u0e41\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e43\u0e19\u0e27\u0e07\u0e08\u0e23\u0e01\u0e32\u0e23\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e44\u0e14\u0e49 \u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e41\u0e02\u0e47\u0e07\u0e41\u0e01\u0e23\u0e48\u0e07\u0e43\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07 \u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e0a\u0e31\u0e49\u0e19\u0e2d\u0e37\u0e48\u0e19\u0e41\u0e1a\u0e1a\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e36\u0e48\u0e07.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e04\u0e33\u0e16\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e43\u0e19\u0e01\u0e32\u0e23\u0e0b\u0e37\u0e49\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e27\u0e48\u0e32\u0e42\u0e25\u0e42\u0e01\u0e49\u0e01\u0e32\u0e23\u0e1a\u0e39\u0e23\u0e13\u0e32\u0e01\u0e32\u0e23\u0e19\u0e31\u0e49\u0e19\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e41\u0e15\u0e48\u0e04\u0e37\u0e2d\u0e27\u0e48\u0e32\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 \u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34 \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e19\u0e31\u0e49\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e43\u0e0a\u0e49\u0e08\u0e23\u0e34\u0e07\u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e19\u0e2d\u0e01\u0e08\u0e32\u0e01\u0e19\u0e35\u0e49 \u0e22\u0e31\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e25\u0e49\u0e21\u0e40\u0e2b\u0e25\u0e27\u0e17\u0e35\u0e48\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e44\u0e14\u0e49 \u0e40\u0e0b\u0e34\u0e23\u0e4c\u0e1f\u0e40\u0e27\u0e2d\u0e23\u0e4c MCP \u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e44\u0e14\u0e49 \u0e41\u0e15\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e2d\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e43\u0e19\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25 \u0e22\u0e31\u0e07\u0e04\u0e07\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e2d\u0e22\u0e39\u0e48 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e16\u0e39\u0e01\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e44\u0e23\u0e49\u0e04\u0e27\u0e32\u0e21\u0e02\u0e31\u0e14\u0e02\u0e49\u0e2d\u0e07.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e41\u0e1a\u0e1a\u0e43\u0e0a\u0e49\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e23\u0e23\u0e30\u0e27\u0e31\u0e07\u0e17\u0e35\u0e48\u0e04\u0e25\u0e49\u0e32\u0e22\u0e01\u0e31\u0e19 \u0e44\u0e1f\u0e25\u0e4c\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e17\u0e35\u0e48\u0e22\u0e32\u0e27\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19\u0e27\u0e48\u0e32\u0e08\u0e30\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e15\u0e32\u0e21\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e0a\u0e38\u0e14\u0e01\u0e0e\u0e17\u0e35\u0e48\u0e0b\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\u0e2d\u0e32\u0e08\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e44\u0e21\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e40\u0e01\u0e34\u0e14\u0e04\u0e27\u0e32\u0e21\u0e02\u0e31\u0e14\u0e41\u0e22\u0e49\u0e07 \u0e04\u0e27\u0e23\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e2a\u0e31\u0e49\u0e19 \u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e42\u0e04\u0e49\u0e14 \u0e23\u0e30\u0e1a\u0e38\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19 \u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e38\u0e49\u0e21\u0e04\u0e23\u0e2d\u0e07 \u0e01\u0e0e\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14 \u0e41\u0e25\u0e30\u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e15\u0e49\u0e2d\u0e07\u0e2b\u0e22\u0e38\u0e14\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e02\u0e2d\u0e04\u0e33\u0e0a\u0e35\u0e49\u0e41\u0e08\u0e07.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23:<\/strong> \u0e01\u0e0e\u0e41\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a repositories.<\/li>\n\n\n\n<li><strong>\u0e17\u0e31\u0e01\u0e29\u0e30:<\/strong> \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e0a\u0e38\u0e14\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e49\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49.<\/li>\n\n\n\n<li><strong>MCP:<\/strong> \u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01.<\/li>\n\n\n\n<li><strong>\u0e2e\u0e38\u0e01\u0e41\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07:<\/strong> \u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e40\u0e2b\u0e15\u0e38\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e43\u0e19\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"pricing\" class=\"wp-block-heading\">Codex vs Claude: \u0e23\u0e32\u0e04\u0e32\u0e41\u0e25\u0e30\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e1a\u0e23\u0e34\u0e42\u0e20\u0e04\u0e41\u0e1a\u0e1a\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48 $20 \u0e15\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 Codex \u0e23\u0e27\u0e21\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08 $20 ChatGPT \u0e17\u0e35\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07 \u0e2a\u0e48\u0e27\u0e19 Claude Pro \u0e21\u0e35\u0e23\u0e32\u0e04\u0e32 $20 \u0e15\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e43\u0e19\u0e2a\u0e2b\u0e23\u0e31\u0e10\u0e2d\u0e40\u0e21\u0e23\u0e34\u0e01\u0e32 \u0e41\u0e25\u0e30\u0e23\u0e27\u0e21 Claude Code \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e41\u0e1c\u0e19\u0e21\u0e35\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e1a\u0e23\u0e34\u0e42\u0e20\u0e04\u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e39\u0e07\u0e22\u0e34\u0e48\u0e07\u0e02\u0e36\u0e49\u0e19 \u0e04\u0e37\u0e2d $100 \u0e41\u0e25\u0e30 $200 \u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e44\u0e27\u0e49\u0e04\u0e25\u0e49\u0e32\u0e22\u0e01\u0e31\u0e19\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e08\u0e38\u0e17\u0e35\u0e48\u0e40\u0e17\u0e48\u0e32\u0e01\u0e31\u0e19.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claude Max 5x \u0e21\u0e35\u0e04\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e08\u0e48\u0e32\u0e22 $100 \u0e15\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e41\u0e25\u0e30 Max 20x \u0e21\u0e35\u0e04\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e08\u0e48\u0e32\u0e22 $200 \u0e15\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e0a\u0e37\u0e48\u0e2d \u201c5x\u201d \u0e41\u0e25\u0e30 \u201c20x\u201d \u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08 Pro \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e08\u0e33\u0e19\u0e27\u0e19\u0e07\u0e32\u0e19\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e30\u0e01\u0e31\u0e19 Claude \u0e41\u0e25\u0e30 Claude Code \u0e43\u0e0a\u0e49\u0e02\u0e35\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e41\u0e25\u0e30\u0e02\u0e35\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e23\u0e32\u0e22\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e04\u0e27\u0e32\u0e21\u0e22\u0e32\u0e27\u0e02\u0e2d\u0e07\u0e1a\u0e23\u0e34\u0e1a\u0e17 \u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e41\u0e19\u0e1a\u0e21\u0e32 \u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e21\u0e40\u0e14\u0e25 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e1f\u0e35\u0e40\u0e08\u0e2d\u0e23\u0e4c\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e2d\u0e32\u0e08\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e43\u0e19\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e42\u0e04\u0e27\u0e15\u0e32.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"800\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-max-plan.webp\" alt=\"\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e1c\u0e19 Max Claude \u0e17\u0e35\u0e48\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e02\u0e35\u0e14\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07 Max 5x \u0e41\u0e25\u0e30 Max 20x\" class=\"wp-image-17388\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-max-plan.webp 1280w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-max-plan-300x188.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-max-plan-1024x640.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-max-plan-768x480.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-max-plan-18x12.webp 18w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">\u0e2b\u0e19\u0e49\u0e32\u0e41\u0e1c\u0e19 Max \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e07 Claude \u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e27\u0e32\u0e21\u0e08\u0e38\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 5x \u0e41\u0e25\u0e30 20x \u0e23\u0e32\u0e04\u0e32\u0e15\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e23\u0e30\u0e1a\u0e38\u0e44\u0e27\u0e49\u0e43\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e42\u0e14\u0e22\u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e41\u0e1c\u0e19\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21 2026.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e02\u0e2d\u0e07 Claude \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49\u0e15\u0e48\u0e2d\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e23\u0e07\u0e15\u0e32\u0e21\u0e40\u0e07\u0e37\u0e48\u0e2d\u0e19\u0e44\u0e02\u0e44\u0e14\u0e49\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e43\u0e0a\u0e49\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e17\u0e35\u0e48\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e41\u0e25\u0e30\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27\u0e08\u0e30\u0e16\u0e39\u0e01\u0e40\u0e23\u0e35\u0e22\u0e01\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e07\u0e34\u0e19\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e2d\u0e31\u0e15\u0e23\u0e32\u0e04\u0e48\u0e32\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 API \u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19 \u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e15\u0e31\u0e27\u0e15\u0e19\u0e14\u0e49\u0e27\u0e22 API key \u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e40\u0e23\u0e35\u0e22\u0e01\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e07\u0e34\u0e19\u0e2d\u0e35\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e17\u0e35\u0e48\u0e41\u0e22\u0e01\u0e15\u0e48\u0e32\u0e07\u0e2b\u0e32\u0e01 \u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e43\u0e14\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e27\u0e48\u0e32 \u201c\u0e44\u0e21\u0e48\u0e08\u0e33\u0e01\u0e31\u0e14\u201d \u0e08\u0e30\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e15\u0e49\u0e19\u0e17\u0e38\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e17\u0e35\u0e48\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07\u0e16\u0e39\u0e01\u0e0b\u0e48\u0e2d\u0e19\u0e44\u0e27\u0e49.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"800\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-code-plan-limits.webp\" alt=\"\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e41\u0e1c\u0e19\u0e23\u0e2b\u0e31\u0e2a Claude \u0e17\u0e35\u0e48\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e23\u0e48\u0e27\u0e21\u0e41\u0e25\u0e30\u0e02\u0e35\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e32\u0e22\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c\" class=\"wp-image-17389\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-code-plan-limits.webp 1280w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-code-plan-limits-300x188.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-code-plan-limits-1024x640.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-code-plan-limits-768x480.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/07\/claude-code-plan-limits-18x12.webp 18w\" sizes=\"(max-width: 1280px) 100vw, 1280px\" \/><figcaption class=\"wp-element-caption\">\u0e23\u0e2b\u0e31\u0e2a Claude \u0e43\u0e0a\u0e49\u0e42\u0e04\u0e27\u0e15\u0e32\u0e08\u0e32\u0e01\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08 Pro \u0e2b\u0e23\u0e37\u0e2d Max \u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2d\u0e22\u0e39\u0e48 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e41\u0e25\u0e30\u0e02\u0e35\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e23\u0e32\u0e22\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c \u0e04\u0e27\u0e32\u0e21\u0e08\u0e38\u0e17\u0e35\u0e48\u0e41\u0e17\u0e49\u0e08\u0e23\u0e34\u0e07\u0e08\u0e30\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19\u0e44\u0e1b\u0e15\u0e32\u0e21\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e07\u0e32\u0e19.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u0e22\u0e31\u0e07\u0e41\u0e22\u0e01\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e43\u0e19\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08\u0e1c\u0e39\u0e49\u0e1a\u0e23\u0e34\u0e42\u0e20\u0e04\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21\u0e44\u0e27\u0e49 \u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e17\u0e35\u0e48\u0e0b\u0e37\u0e49\u0e2d\u0e41\u0e25\u0e30\u0e21\u0e35\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e4c\u0e43\u0e0a\u0e49 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e40\u0e01\u0e47\u0e1a\u0e40\u0e07\u0e34\u0e19 API \u0e14\u0e49\u0e27\u0e22 \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e41\u0e25\u0e30\u0e41\u0e0a\u0e17\u0e1a\u0e19\u0e04\u0e25\u0e32\u0e27\u0e14\u0e4c\u0e43\u0e0a\u0e49\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32 5 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 \u0e41\u0e25\u0e30\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e23\u0e32\u0e22\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c\u0e14\u0e49\u0e27\u0e22 \u0e2a\u0e19\u0e32\u0e21\u0e42\u0e17\u0e40\u0e04\u0e19\u0e43\u0e19\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 CLI \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e1b\u0e25\u0e07\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e1b\u0e2d\u0e23\u0e4c\u0e40\u0e0b\u0e47\u0e19\u0e15\u0e4c\u0e02\u0e2d\u0e07\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32 5 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e08\u0e33\u0e19\u0e27\u0e19\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e15\u0e32\u0e21\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e2b\u0e23\u0e37\u0e2d\u0e04\u0e48\u0e32\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 API \u0e44\u0e14\u0e49.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e04\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e40\u0e1b\u0e47\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e04\u0e23\u0e32\u0e27 \u0e23\u0e30\u0e14\u0e31\u0e1a $20 \u0e43\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e14\u0e49\u0e32\u0e19\u0e40\u0e1b\u0e47\u0e19\u0e08\u0e38\u0e14\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e32\u0e30\u0e2a\u0e21 \u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e1b\u0e23\u0e30\u0e08\u0e33\u0e27\u0e31\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e22\u0e32\u0e27\u0e2d\u0e32\u0e08\u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2a\u0e39\u0e07\u0e01\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e21\u0e40\u0e2b\u0e15\u0e38\u0e2a\u0e21\u0e1c\u0e25 \u0e41\u0e15\u0e48\u0e04\u0e27\u0e23\u0e17\u0e33\u0e40\u0e0a\u0e48\u0e19\u0e19\u0e31\u0e49\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e01\u0e32\u0e23\u0e23\u0e35\u0e40\u0e0b\u0e47\u0e15\u0e08\u0e23\u0e34\u0e07\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e2a\u0e48\u0e27\u0e19\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e02\u0e19\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2b\u0e19\u0e31\u0e01\u0e22\u0e34\u0e48\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e23\u0e30\u0e21\u0e31\u0e14\u0e23\u0e30\u0e27\u0e31\u0e07\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19: \u0e01\u0e32\u0e23\u0e08\u0e48\u0e32\u0e22\u0e40\u0e07\u0e34\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e0d\u0e48\u0e01\u0e27\u0e48\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32\u0e08\u0e30\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e1a\u0e23\u0e34\u0e1a\u0e17 \u0e41\u0e1a\u0e48\u0e07\u0e07\u0e32\u0e19 \u0e41\u0e25\u0e30\u0e2a\u0e07\u0e27\u0e19\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e2a\u0e34\u0e49\u0e19\u0e40\u0e1b\u0e25\u0e37\u0e2d\u0e07\u0e44\u0e27\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14.<\/p>\n\n\n\n<h2 id=\"controlled-test\" class=\"wp-block-heading\">\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e04\u0e23\u0e48\u0e07\u0e04\u0e23\u0e31\u0e14\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 Codex \u0e41\u0e25\u0e30 Claude Code \u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29 4 \u0e02\u0e49\u0e2d, \u0e1f\u0e34\u0e01\u0e40\u0e08\u0e2d\u0e23\u0e4c Python \u0e17\u0e35\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e15\u0e48\u0e2d\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30, \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e31\u0e15\u0e16\u0e38\u0e1b\u0e23\u0e30\u0e2a\u0e07\u0e04\u0e4c, \u0e40\u0e01\u0e13\u0e11\u0e4c\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19 \u0e41\u0e25\u0e30\u0e01\u0e0e\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e08\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e17\u0e33\u0e07\u0e32\u0e19 \u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e38\u0e49\u0e19\u0e40\u0e04\u0e22, \u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c, \u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14 DST \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02 \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e41\u0e0b\u0e07\u0e08\u0e32\u0e01\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c \u0e41\u0e25\u0e30\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e21\u0e35\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e\u0e15\u0e48\u0e33\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19\u0e17\u0e35\u0e48\u0e14\u0e35\u0e02\u0e36\u0e49\u0e19.<\/p>\n\n\n\n<style>.comparison-setup-card{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}.comparison-setup-card *{box-sizing:border-box}.comparison-setup-card .s-head{padding:24px 26px 20px;border-bottom:1px solid var(--line)}.comparison-setup-card .s-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.comparison-setup-card h3{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.comparison-setup-card .s-sub{margin:7px 0 0;color:var(--body);font-size:13px}.comparison-setup-card .s-body{padding:24px 26px}.comparison-setup-card .s-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.comparison-setup-card .s-stat{padding:15px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.comparison-setup-card .s-stat span{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.comparison-setup-card .s-stat strong{display:block;margin-top:5px;font-size:20px}.comparison-setup-card table{width:100%;border-collapse:collapse;font-size:12px}.comparison-setup-card th,.comparison-setup-card td{padding:11px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}.comparison-setup-card th{background:var(--soft)}.comparison-setup-card .s-note{margin:16px 0 0;padding:12px 14px;border-left:3px solid var(--blue);background:#f3f5ff;color:#38466c;font-size:12px}.comparison-setup-card details{margin-top:12px;border:1px solid var(--line);border-radius:6px}.comparison-setup-card summary{cursor:pointer;padding:12px 14px;font-size:12px;font-weight:800}.comparison-setup-card pre{max-height:560px;overflow:auto;margin:0;padding:14px;white-space:pre-wrap;background:#f5f6f8;color:#222936;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media(max-width:680px){.comparison-setup-card .s-grid{grid-template-columns:1fr}.comparison-setup-card .s-head,.comparison-setup-card .s-body{padding:20px}}<\/style><aside class=\"comparison-setup-card\"><header class=\"s-head\"><p class=\"s-kicker\">\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a<\/p><h3>\u0e07\u0e32\u0e19\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e01\u0e0e\u0e17\u0e35\u0e48\u0e04\u0e07\u0e17\u0e35\u0e48 \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e25\u0e33\u0e14\u0e31\u0e1a\u0e41\u0e23\u0e01<\/h3><\/header><div class=\"s-body\"><div class=\"s-grid\"><div class=\"s-stat\"><span>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><strong>gpt-5.6-sol<\/strong><small>\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e25\u0e32\u0e07 T1\u2013T3 \u00b7 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2a\u0e39\u0e07 T4<\/small><\/div><div class=\"s-stat\"><span>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><strong>claude-opus-5<\/strong><small>\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e23\u0e30\u0e1a\u0e1a\u0e2a\u0e33\u0e23\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19\u0e22\u0e48\u0e2d\u0e22<\/small><\/div><\/div><table><tbody><tr><th>\u0e15\u0e32\u0e23\u0e32\u0e07\u0e01\u0e32\u0e23\u0e41\u0e02\u0e48\u0e07\u0e02\u0e31\u0e19<\/th><td>\u0e04\u0e25\u0e31\u0e07 Python \u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30 \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e21\u0e32\u0e15\u0e23\u0e10\u0e32\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19<\/td><\/tr><tr><th>\u0e01\u0e0e\u0e01\u0e32\u0e23\u0e2b\u0e22\u0e38\u0e14\u0e01\u0e32\u0e23\u0e41\u0e02\u0e48\u0e07\u0e02\u0e31\u0e19<\/th><td>\u0e40\u0e01\u0e47\u0e1a\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01\u0e44\u0e27\u0e49; \u0e2b\u0e49\u0e32\u0e21\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e<\/td><\/tr><tr><th>\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22<\/th><td>\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e43\u0e2b\u0e21\u0e48, \u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e2d\u0e1f\u0e44\u0e25\u0e19\u0e4c, \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e25\u0e34\u0e15, \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2a\u0e48\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e0a\u0e49<\/td><\/tr><tr><th>\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e04\u0e30\u0e41\u0e19\u0e19<\/th><td>\u0e41\u0e1a\u0e1a\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19 100 \u0e04\u0e30\u0e41\u0e19\u0e19\u0e17\u0e35\u0e48\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e44\u0e27\u0e49\u0e25\u0e48\u0e27\u0e07\u0e2b\u0e19\u0e49\u0e32 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e17\u0e31\u0e49\u0e07\u0e41\u0e1a\u0e1a\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e41\u0e25\u0e30\u0e41\u0e1a\u0e1a\u0e25\u0e31\u0e1a<\/td><\/tr><\/tbody><\/table><\/div><\/aside>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u0e44\u0e14\u0e49\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23 CLI \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e22\u0e01\u0e2d\u0e2d\u0e01\u0e21\u0e32 \u0e42\u0e14\u0e22\u0e23\u0e31\u0e01\u0e29\u0e32\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 JSONL \u0e14\u0e34\u0e1a\u0e41\u0e25\u0e30\u0e1f\u0e34\u0e25\u0e14\u0e4c\u0e42\u0e17\u0e40\u0e04\u0e19\u0e17\u0e35\u0e48 CLI \u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e21\u0e32\u0e44\u0e27\u0e49 \u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19 OAuth \u0e02\u0e2d\u0e07 CLI Claude \u0e02\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e19\u0e23\u0e48\u0e27\u0e21\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e2b\u0e21\u0e14\u0e2d\u0e32\u0e22\u0e38\u0e41\u0e25\u0e49\u0e27 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19 Claude Code \u0e08\u0e36\u0e07\u0e43\u0e0a\u0e49\u0e1c\u0e39\u0e49\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19 (coordinator) \u0e17\u0e35\u0e48\u0e21\u0e35\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e02\u0e2d\u0e07 subagent \u0e43\u0e2b\u0e21\u0e48 \u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e41\u0e1e\u0e15\u0e0a\u0e4c\u0e02\u0e2d\u0e07 Claude \u0e02\u0e36\u0e49\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e43\u0e19\u0e2a\u0e33\u0e40\u0e19\u0e32\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e2a\u0e30\u0e2d\u0e32\u0e14 \u0e41\u0e25\u0e30\u0e23\u0e31\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e30\u0e41\u0e25\u0e30\u0e17\u0e35\u0e48\u0e0b\u0e48\u0e2d\u0e19\u0e44\u0e27\u0e49\u0e2d\u0e35\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e0b\u0e36\u0e48\u0e07\u0e43\u0e2b\u0e49\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e40\u0e0a\u0e34\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e19\u0e48\u0e32\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e1e\u0e37\u0e49\u0e19\u0e1c\u0e34\u0e27\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e41\u0e1a\u0e1a\u0e08\u0e33\u0e25\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e31\u0e19.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u0e07\u0e32\u0e19<\/th><th>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/th><th>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/th><th>\u0e01\u0e32\u0e23\u0e15\u0e35\u0e04\u0e27\u0e32\u0e21\u0e41\u0e1a\u0e1a\u0e21\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15<\/th><\/tr><\/thead><tbody><tr><td>T1: \u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35<\/td><td>20\/20<\/td><td>20\/20<\/td><td>\u0e40\u0e2a\u0e21\u0e2d; \u0e41\u0e1a\u0e1a\u0e22\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e41\u0e1a\u0e1a\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19<\/td><\/tr><tr><td>T2: \u0e1f\u0e35\u0e40\u0e08\u0e2d\u0e23\u0e4c\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c<\/td><td>30\/30<\/td><td>30\/30<\/td><td>\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e42\u0e22\u0e07\u0e40\u0e0a\u0e34\u0e07\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19; \u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19<\/td><\/tr><tr><td>T3: \u0e01\u0e32\u0e23\u0e0b\u0e48\u0e2d\u0e21\u0e41\u0e0b\u0e21 DST<\/td><td>30\/30<\/td><td>30\/30<\/td><td>\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27; \u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e1a\u0e23\u0e34\u0e40\u0e27\u0e13\u0e17\u0e35\u0e48\u0e41\u0e04\u0e1a\u0e01\u0e27\u0e48\u0e32\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e1a\u0e23\u0e34\u0e40\u0e27\u0e13\u0e02\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e01\u0e27\u0e48\u0e32<\/td><\/tr><tr><td>T4: \u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e0b\u0e48\u0e2d\u0e21\u0e41\u0e0b\u0e21<\/td><td>18\/20<\/td><td>19\/20<\/td><td>\u0e23\u0e2b\u0e31\u0e2a Claude \u0e41\u0e2a\u0e14\u0e07\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e16\u0e36\u0e07\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e1a\u0e17\u0e27\u0e19\u0e17\u0e35\u0e48\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<style>.aggregate-verdict-card{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}.aggregate-verdict-card *{box-sizing:border-box}.aggregate-verdict-card .s-head{padding:24px 26px 20px;border-bottom:1px solid var(--line)}.aggregate-verdict-card .s-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.aggregate-verdict-card h3{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.aggregate-verdict-card .s-sub{margin:7px 0 0;color:var(--body);font-size:13px}.aggregate-verdict-card .s-body{padding:24px 26px}.aggregate-verdict-card .s-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.aggregate-verdict-card .s-stat{padding:15px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.aggregate-verdict-card .s-stat span{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.aggregate-verdict-card .s-stat strong{display:block;margin-top:5px;font-size:20px}.aggregate-verdict-card table{width:100%;border-collapse:collapse;font-size:12px}.aggregate-verdict-card th,.aggregate-verdict-card td{padding:11px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}.aggregate-verdict-card th{background:var(--soft)}.aggregate-verdict-card .s-note{margin:16px 0 0;padding:12px 14px;border-left:3px solid var(--blue);background:#f3f5ff;color:#38466c;font-size:12px}.aggregate-verdict-card details{margin-top:12px;border:1px solid var(--line);border-radius:6px}.aggregate-verdict-card summary{cursor:pointer;padding:12px 14px;font-size:12px;font-weight:800}.aggregate-verdict-card pre{max-height:560px;overflow:auto;margin:0;padding:14px;white-space:pre-wrap;background:#f5f6f8;color:#222936;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media(max-width:680px){.aggregate-verdict-card .s-grid{grid-template-columns:1fr}.aggregate-verdict-card .s-head,.aggregate-verdict-card .s-body{padding:20px}}<\/style><article class=\"aggregate-verdict-card\"><header class=\"s-head\"><p class=\"s-kicker\">\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21 \u00b7 \u0e40\u0e01\u0e13\u0e11\u0e4c\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e41\u0e1a\u0e1a\u0e04\u0e07\u0e17\u0e35\u0e48<\/p><h3>Codex 98\/100 \u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e1a Claude Code 99\/100<\/h3><p class=\"s-sub\">\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e13\u0e0a\u0e19\u0e30\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b \u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e19\u0e31\u0e49\u0e19\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17.<\/p><\/header><div class=\"s-body\"><div class=\"s-grid\"><div class=\"s-stat\"><span>\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/span><strong>98\/100<\/strong><\/div><div class=\"s-stat\"><span>\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/span><strong>99\/100<\/strong><\/div><\/div><table><thead><tr><th>\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e15\u0e31\u0e14\u0e2a\u0e34\u0e19\u0e43\u0e08<\/th><th>\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15<\/th><th>\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34<\/th><\/tr><\/thead><tbody><tr><td>\u0e04\u0e27\u0e32\u0e21\u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/td><td>\u0e40\u0e2a\u0e21\u0e2d \u00b7 20\/20 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1d\u0e48\u0e32\u0e22<\/td><td>Claude \u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e01\u0e27\u0e48\u0e32 \u0e2a\u0e48\u0e27\u0e19 Codex \u0e21\u0e35\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e01\u0e27\u0e48\u0e32.<\/td><\/tr><tr><td>\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e1f\u0e25\u0e4c\u0e2b\u0e25\u0e32\u0e22\u0e44\u0e1f\u0e25\u0e4c<\/td><td>\u0e40\u0e2a\u0e21\u0e2d \u00b7 30\/30 \u0e41\u0e15\u0e48\u0e25\u0e30\u0e1d\u0e48\u0e32\u0e22<\/td><td>\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e25\u0e31\u0e1a; Claude \u0e44\u0e14\u0e49\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19.<\/td><\/tr><tr><td>\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e02\u0e2d\u0e07 DST<\/td><td>\u0e40\u0e2a\u0e21\u0e2d \u00b7 30\/30 \u0e41\u0e15\u0e48\u0e25\u0e30\u0e1d\u0e48\u0e32\u0e22<\/td><td>Claude \u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e02\u0e2d\u0e1a\u0e44\u0e14\u0e49\u0e01\u0e27\u0e49\u0e32\u0e07\u0e01\u0e27\u0e48\u0e32; \u0e2a\u0e48\u0e27\u0e19 Codex \u0e43\u0e0a\u0e49\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e41\u0e04\u0e1a\u0e01\u0e27\u0e48\u0e32.<\/td><\/tr><tr><td>\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e30\u0e0b\u0e48\u0e2d\u0e21\u0e41\u0e0b\u0e21<\/td><td>Claude 19\/20; Codex 18\/20<\/td><td>Claude \u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e17\u0e35\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e44\u0e14\u0e49\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19.<\/td><\/tr><tr><td>\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e17\u0e35\u0e48\u0e27\u0e31\u0e14\u0e44\u0e14\u0e49<\/td><td>\u0e1c\u0e2a\u0e21<\/td><td>Claude \u0e19\u0e33 T1\/T2; Codex \u0e19\u0e33 T3\/T4.<\/td><\/tr><\/tbody><\/table><p class=\"s-note\"><strong>\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25:<\/strong> \u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e41\u0e25\u0e30\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19 \u0e41\u0e15\u0e48\u0e21\u0e35\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e41\u0e22\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e2d\u0e22\u0e48\u0e32\u0e2a\u0e23\u0e38\u0e1b\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e25\u0e47\u0e01\u0e46 \u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e17\u0e38\u0e01 repositories, \u0e0a\u0e31\u0e49\u0e19\u0e42\u0e21\u0e40\u0e14\u0e25 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34.<\/p><\/div><\/article>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e19\u0e35\u0e49\u0e40\u0e25\u0e47\u0e01\u0e40\u0e01\u0e34\u0e19\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e30\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e1a\u0e19\u0e0a\u0e38\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e02\u0e19\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48 \u0e17\u0e38\u0e01\u0e20\u0e32\u0e29\u0e32 \u0e17\u0e38\u0e01\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25 \u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e35\u0e48\u0e22\u0e32\u0e27\u0e19\u0e32\u0e19 \u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e23\u0e27\u0e21\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e08\u0e38\u0e14\u0e19\u0e35\u0e49\u0e04\u0e27\u0e23\u0e15\u0e35\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32 \u201c\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e41\u0e15\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e43\u0e19\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u201d \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a\u0e41\u0e1a\u0e1a\u0e17\u0e31\u0e48\u0e27\u0e44\u0e1b.<\/p>\n\n\n\n<h2 id=\"user-experience\" class=\"wp-block-heading\">\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e08\u0e23\u0e34\u0e07\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e21\u0e32 \u2014 \u0e41\u0e25\u0e30\u0e04\u0e27\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e19\u0e31\u0e49\u0e19\u0e21\u0e32\u0e01\u0e41\u0e04\u0e48\u0e44\u0e2b\u0e19<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e08\u0e32\u0e01\u0e0a\u0e38\u0e21\u0e0a\u0e19\u0e08\u0e30\u0e21\u0e35\u0e04\u0e48\u0e32\u0e21\u0e32\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e42\u0e04\u0e23\u0e07\u0e01\u0e32\u0e23 \u0e07\u0e32\u0e19 \u0e42\u0e21\u0e40\u0e14\u0e25 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21 \u0e41\u0e25\u0e30\u0e01\u0e23\u0e2d\u0e1a\u0e40\u0e27\u0e25\u0e32 \u0e41\u0e15\u0e48\u0e08\u0e30\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e19\u0e48\u0e32\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e16\u0e37\u0e2d\u0e15\u0e48\u0e33\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e42\u0e1e\u0e2a\u0e15\u0e4c\u0e19\u0e31\u0e49\u0e19\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e27\u0e48\u0e32\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e2b\u0e19\u0e36\u0e48\u0e07 \u201c\u0e14\u0e39\u0e09\u0e25\u0e32\u0e14\u0e02\u0e36\u0e49\u0e19\u201d \u0e2b\u0e23\u0e37\u0e2d \u201c\u0e40\u0e23\u0e47\u0e27\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e01\u201d \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e15\u0e48\u0e32\u0e07 \u0e46 \u0e08\u0e30\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33 \u0e2a\u0e48\u0e27\u0e19\u0e02\u0e22\u0e32\u0e22 \u0e41\u0e25\u0e30\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e14\u0e39\u0e41\u0e25\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e08\u0e32\u0e01 Reddit \u0e43\u0e19\u0e1a\u0e23\u0e34\u0e1a\u0e17\u0e02\u0e49\u0e32\u0e07\u0e15\u0e49\u0e19\u0e0a\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e41\u0e25\u0e01\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a: \u0e01\u0e32\u0e23\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e23\u0e27\u0e14\u0e40\u0e23\u0e47\u0e27\u0e41\u0e25\u0e30\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e17\u0e19\u0e32\u0e2d\u0e32\u0e08\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e19\u0e43\u0e08\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e23\u0e30\u0e21\u0e31\u0e14\u0e23\u0e30\u0e27\u0e31\u0e07\u0e2d\u0e32\u0e08\u0e23\u0e39\u0e49\u0e2a\u0e36\u0e01\u0e0a\u0e49\u0e32\u0e01\u0e27\u0e48\u0e32 \u0e41\u0e15\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e19\u0e49\u0e2d\u0e22\u0e25\u0e07 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e17\u0e31\u0e1a\u0e0b\u0e49\u0e2d\u0e19\u0e01\u0e31\u0e1a\u0e1a\u0e31\u0e0d\u0e0a\u0e35\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e1c\u0e25\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e1e\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e17\u0e35\u0e48\u0e2b\u0e25\u0e32\u0e01\u0e2b\u0e25\u0e32\u0e22\u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e41\u0e0b\u0e07\u0e02\u0e2d\u0e07\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c\u0e43\u0e19\u0e23\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e08\u0e36\u0e07\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e02\u0e49\u0e2d\u0e01\u0e25\u0e48\u0e32\u0e27\u0e2d\u0e49\u0e32\u0e07\u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e14\u0e39\u0e41\u0e25\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e43\u0e01\u0e25\u0e49\u0e0a\u0e34\u0e14\u0e44\u0e14\u0e49 \u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e40\u0e2b\u0e15\u0e38\u0e1c\u0e25\u0e17\u0e35\u0e48\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e08\u0e32\u0e01\u0e0a\u0e38\u0e21\u0e0a\u0e19\u0e41\u0e25\u0e30\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e1a\u0e1a\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e04\u0e27\u0e23\u0e16\u0e39\u0e01\u0e19\u0e33\u0e40\u0e2a\u0e19\u0e2d\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e23\u0e27\u0e21\u0e40\u0e1b\u0e47\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a X harness \u0e22\u0e31\u0e07\u0e0a\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e40\u0e2b\u0e47\u0e19\u0e08\u0e38\u0e14\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e2d\u0e35\u0e01\u0e1b\u0e23\u0e30\u0e01\u0e32\u0e23\u0e2b\u0e19\u0e36\u0e48\u0e07: \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e2a\u0e48\u0e27\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e1b\u0e49\u0e32\u0e22\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e40\u0e14\u0e25\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e42\u0e1e\u0e2a\u0e15\u0e4c\u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e34\u0e49\u0e19\u0e44\u0e21\u0e48\u0e04\u0e27\u0e23\u0e16\u0e39\u0e01\u0e21\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01\u0e01\u0e32\u0e23\u0e2a\u0e33\u0e23\u0e27\u0e08 \u0e41\u0e15\u0e48\u0e04\u0e27\u0e23\u0e43\u0e0a\u0e49\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e30\u0e1a\u0e38\u0e04\u0e33\u0e16\u0e32\u0e21\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e2d\u0e07 \u2014 \u0e08\u0e33\u0e19\u0e27\u0e19\u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e41\u0e0b\u0e07 \u0e02\u0e19\u0e32\u0e14\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07 \u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1f\u0e37\u0e49\u0e19\u0e15\u0e31\u0e27\u0e08\u0e32\u0e01\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e1c\u0e34\u0e14.<\/p>\n\n\n\n<h2 id=\"globalgpt\" class=\"wp-block-heading\">\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e42\u0e04\u0e49\u0e14\u0e04\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e42\u0e04\u0e49\u0e14 Claude \u0e14\u0e49\u0e27\u0e22 GlobalGPT<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GlobalGPT \u0e04\u0e37\u0e2d <a href=\"https:\/\/www.glbgpt.com\/hub\/best-all-in-one-ai-tools-and-platforms-11-options-compared\/\">\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e25\u0e30\u0e2b\u0e25\u0e32\u0e22\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a<\/a>, \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e40\u0e14\u0e34\u0e21 \u0e1a\u0e17\u0e1a\u0e32\u0e17\u0e43\u0e19\u0e17\u0e32\u0e07\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e02\u0e2d\u0e07\u0e21\u0e31\u0e19\u0e04\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e02\u0e22\u0e32\u0e22\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e2d\u0e07\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48: \u0e43\u0e0a\u0e49\u0e42\u0e21\u0e40\u0e14\u0e25\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e2d\u0e37\u0e48\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e23\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e04\u0e34\u0e14\u0e40\u0e2b\u0e47\u0e19\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e1c\u0e19 \u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23 \u0e2b\u0e23\u0e37\u0e2d\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e17\u0e32\u0e07 \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48 Codex \u0e2b\u0e23\u0e37\u0e2d Claude Code \u0e22\u0e31\u0e07\u0e04\u0e07\u0e23\u0e31\u0e1a\u0e1c\u0e34\u0e14\u0e0a\u0e2d\u0e1a\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e40\u0e0a\u0e25\u0e25\u0e4c \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GlobalGPT \u0e40\u0e1c\u0e22\u0e41\u0e1e\u0e23\u0e48\u0e04\u0e39\u0e48\u0e21\u0e37\u0e2d CLI \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e40\u0e2d\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a <a href=\"https:\/\/www.glbgpt.com\/hub\/how-to-use-globalgpt-cli-in-codex\/\">\u0e42\u0e04\u0e40\u0e14\u0e47\u0e01\u0e0b\u0e4c<\/a> \u0e41\u0e25\u0e30 <a href=\"https:\/\/www.glbgpt.com\/hub\/how-to-use-globalgpt-cli-in-claude-code\/\">\u0e42\u0e04\u0e25\u0e14 \u0e42\u0e04\u0e49\u0e14<\/a>, \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07 Cursor \u0e14\u0e49\u0e27\u0e22 \u0e43\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e1a\u0e39\u0e23\u0e13\u0e32\u0e01\u0e32\u0e23 T5 \u0e41\u0e1a\u0e1a\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 CLI \u0e44\u0e14\u0e49\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e43\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e17\u0e35\u0e48\u0e40\u0e1b\u0e23\u0e35\u0e22\u0e1a\u0e40\u0e17\u0e35\u0e22\u0e1a\u0e01\u0e31\u0e19 \u0e43\u0e19 Codex \u0e40\u0e23\u0e32\u0e22\u0e31\u0e07\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e42\u0e21\u0e40\u0e14\u0e25 MCP \u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 \u0e41\u0e25\u0e30\u0e44\u0e14\u0e49\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 \u0e42\u0e2b\u0e25\u0e14 \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49 Skill GlobalGPT \u0e14\u0e49\u0e27\u0e22.<\/p>\n\n\n\n<style>.globalgpt-integration-card{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}.globalgpt-integration-card *{box-sizing:border-box}.globalgpt-integration-card .s-head{padding:24px 26px 20px;border-bottom:1px solid var(--line)}.globalgpt-integration-card .s-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.globalgpt-integration-card h3{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.globalgpt-integration-card .s-sub{margin:7px 0 0;color:var(--body);font-size:13px}.globalgpt-integration-card .s-body{padding:24px 26px}.globalgpt-integration-card .s-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.globalgpt-integration-card .s-stat{padding:15px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.globalgpt-integration-card .s-stat span{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.globalgpt-integration-card .s-stat strong{display:block;margin-top:5px;font-size:20px}.globalgpt-integration-card table{width:100%;border-collapse:collapse;font-size:12px}.globalgpt-integration-card th,.globalgpt-integration-card td{padding:11px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}.globalgpt-integration-card th{background:var(--soft)}.globalgpt-integration-card .s-note{margin:16px 0 0;padding:12px 14px;border-left:3px solid var(--blue);background:#f3f5ff;color:#38466c;font-size:12px}.globalgpt-integration-card details{margin-top:12px;border:1px solid var(--line);border-radius:6px}.globalgpt-integration-card summary{cursor:pointer;padding:12px 14px;font-size:12px;font-weight:800}.globalgpt-integration-card pre{max-height:560px;overflow:auto;margin:0;padding:14px;white-space:pre-wrap;background:#f5f6f8;color:#222936;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media(max-width:680px){.globalgpt-integration-card .s-grid{grid-template-columns:1fr}.globalgpt-integration-card .s-head,.globalgpt-integration-card .s-body{padding:20px}}<\/style><article class=\"globalgpt-integration-card\"><header class=\"s-head\"><p class=\"s-kicker\">\u0e01\u0e32\u0e23\u0e23\u0e27\u0e21 GlobalGPT \u00b7 \u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e19\u0e31\u0e1a\u0e43\u0e19\u0e04\u0e30\u0e41\u0e19\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a<\/p><h3>CLI \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e43\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19; MCP \u0e41\u0e25\u0e30 Skill \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27\u0e43\u0e19 Codex<\/h3><p class=\"s-sub\">\u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\u0e27\u0e31\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e1a\u0e39\u0e23\u0e13\u0e32\u0e01\u0e32\u0e23 \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e27\u0e48\u0e32 GlobalGPT \u0e08\u0e30\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e1a\u0e1a\u0e14\u0e31\u0e49\u0e07\u0e40\u0e14\u0e34\u0e21\u0e43\u0e14 \u0e46 \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48.<\/p><\/header><div class=\"s-body\"><table><thead><tr><th>\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07<\/th><th>\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21\u0e02\u0e2d\u0e07 Codex<\/th><th>\u0e01\u0e32\u0e23\u0e27\u0e34\u0e48\u0e07\u0e02\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e19\u0e23\u0e48\u0e27\u0e21\u0e07\u0e32\u0e19 Claude<\/th><\/tr><\/thead><tbody><tr><td>GlobalGPT CLI<\/td><td>\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e27\u0e22 gpt-5.6-sol \u0e41\u0e25\u0e30 gpt-5.6-luna<\/td><td>\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e14\u0e49\u0e27\u0e22\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e23\u0e30\u0e07\u0e31\u0e1a\u0e44\u0e27\u0e49\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19<\/td><\/tr><tr><td>MCP<\/td><td>\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e41\u0e1a\u0e1a\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27<\/td><td>\u0e44\u0e21\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e01\u0e32\u0e23\u0e27\u0e34\u0e48\u0e07<\/td><\/tr><tr><td>\u0e17\u0e31\u0e01\u0e29\u0e30<\/td><td>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07, \u0e42\u0e2b\u0e25\u0e14 \u0e41\u0e25\u0e30\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27<\/td><td>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e49\u0e27\u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e2a\u0e32\u0e22\u0e17\u0e35\u0e48\u0e04\u0e49\u0e32\u0e07<\/td><\/tr><tr><td>MCP \u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e14\u0e39\u0e41\u0e25<\/td><td>\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34<\/td><td>\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a<\/td><\/tr><\/tbody><\/table><details><summary>\u0e14\u0e39\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e01\u0e32\u0e23\u0e1a\u0e39\u0e23\u0e13\u0e32\u0e01\u0e32\u0e23\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19<\/summary><pre>\u0e2a\u0e23\u0e38\u0e1b\u0e1c\u0e25\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e1a\u0e39\u0e23\u0e13\u0e32\u0e01\u0e32\u0e23 # GlobalGPT\n\n\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a # #\n\nT5 \u0e27\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1a\u0e39\u0e23\u0e13\u0e32\u0e01\u0e32\u0e23\u0e02\u0e2d\u0e07 GlobalGPT \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e19\u0e31\u0e1a\u0e23\u0e27\u0e21\u0e43\u0e19\u0e04\u0e30\u0e41\u0e19\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e02\u0e2d\u0e07 Codex \u0e41\u0e1a\u0e1a\u0e14\u0e31\u0e49\u0e07\u0e40\u0e14\u0e34\u0e21 Yukie \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e43\u0e0a\u0e49\n\n## \u0e01\u0e32\u0e23\u0e25\u0e47\u0e2d\u0e01\u0e41\u0e25\u0e30\u0e2a\u0e16\u0e32\u0e19\u0e30\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e40\u0e14\u0e25\n\n- \u0e42\u0e21\u0e40\u0e14\u0e25 A: `gpt-5.6-sol`\n- \u0e42\u0e21\u0e40\u0e14\u0e25 B: `gpt-5.6-luna`\n- \u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1b\u0e23\u0e32\u0e01\u0e0f\u0e43\u0e19\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\n- \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e41\u0e1a\u0e1a\u0e40\u0e1a\u0e32\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e43\u0e2b\u0e49\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e27\u0e34\u0e40\u0e04\u0e23\u0e32\u0e30\u0e2b\u0e4c\u0e44\u0e14\u0e49\u0e41\u0e25\u0e30\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\n- \u0e42\u0e21\u0e40\u0e14\u0e25\u0e16\u0e39\u0e01\u0e25\u0e47\u0e2d\u0e01\u0e01\u0e48\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49 T5A \u0e41\u0e25\u0e30 T5B \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c CLI \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\n\n| \u0e07\u0e32\u0e19 | \u0e42\u0e21\u0e40\u0e14\u0e25 | \u0e2a\u0e16\u0e32\u0e19\u0e30 | \u0e23\u0e30\u0e22\u0e30\u0e40\u0e27\u0e25\u0e32 | \u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 | \u0e42\u0e17\u0e40\u0e04\u0e47\u0e19\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c | \u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19 |\n|---|---|---|---:|---:|---:|---:|\n| T5A | gpt-5.6-sol | Valid | 27 s | 2,116 | 1,207 | 6\/6 |\n| T5B | gpt-5.6-luna | Valid | 14 s | 2,116 | 1,441 | 6\/6 |\n\n\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e20\u0e32\u0e23\u0e01\u0e34\u0e08\u0e27\u0e32\u0e07\u0e41\u0e1c\u0e19\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e1c\u0e48\u0e32\u0e19 `glbgpt exec`, \u0e2a\u0e48\u0e07\u0e04\u0e37\u0e19\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e2d\u0e07\u0e40\u0e2b\u0e47\u0e19\u0e44\u0e14\u0e49\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e31\u0e07\u0e01\u0e24\u0e29 \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e1c\u0e22\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e43\u0e14\u0e46 \u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e38\u0e13\u0e20\u0e32\u0e1e\n\n## \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c MCP\n\n- `codex mcp list` \u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32 `globalgpt` \u0e16\u0e39\u0e01\u0e40\u0e1b\u0e34\u0e14\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\n- \u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19 Codex \u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e44\u0e14\u0e49\u0e04\u0e49\u0e19\u0e1e\u0e1a\u0e41\u0e25\u0e30\u0e1e\u0e22\u0e32\u0e22\u0e32\u0e21\u0e40\u0e23\u0e35\u0e22\u0e01 `mcp__globalgpt__glbgpt_list_models` \u0e41\u0e15\u0e48\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e16\u0e39\u0e01\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34 MCP \u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e14\u0e39\u0e41\u0e25 \u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e21\u0e35\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e2d\u0e19\u0e04\u0e25\u0e32\u0e22\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e04\u0e27\u0e32\u0e21\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e43\u0e14\u0e46\n- \u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19 Codex \u0e41\u0e1a\u0e1a\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e44\u0e14\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d MCP \u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27 GlobalGPT \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e19\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08 \u0e41\u0e25\u0e30\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e0a\u0e17 9 \u0e15\u0e31\u0e27\n- \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c: \u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07 MCP \u0e41\u0e1a\u0e1a\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27; \u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23 MCP \u0e41\u0e1a\u0e1a\u0e44\u0e21\u0e48\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e22\u0e31\u0e07\u0e04\u0e07\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\n\n\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e02\u0e2d\u0e07\u0e17\u0e31\u0e01\u0e29\u0e30 ##\n\n- \u0e17\u0e31\u0e01\u0e29\u0e30\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14 GlobalGPT \u0e41\u0e25\u0e30 GlobalGPT \u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e43\u0e19\u0e44\u0e14\u0e40\u0e23\u0e01\u0e17\u0e2d\u0e23\u0e35\u0e17\u0e31\u0e01\u0e29\u0e30\u0e02\u0e2d\u0e07 Codex \u0e1c\u0e48\u0e32\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e44\u0e1b\u0e22\u0e31\u0e07\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08\u0e17\u0e31\u0e01\u0e29\u0e30 CLI \u0e17\u0e35\u0e48\u0e21\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e01\u0e31\u0e19\n- \u0e17\u0e31\u0e01\u0e29\u0e30 GlobalGPT \u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e42\u0e2b\u0e25\u0e14\u0e41\u0e25\u0e30\u0e15\u0e34\u0e14\u0e15\u0e32\u0e21\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e17\u0e35\u0e48\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e44\u0e27\u0e49 \u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e1a\u0e1a\u0e40\u0e23\u0e35\u0e22\u0e25\u0e44\u0e17\u0e21\u0e4c \u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e35\u0e48\u0e1b\u0e25\u0e2d\u0e14\u0e20\u0e31\u0e22\u0e14\u0e49\u0e32\u0e19\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15 \u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\n- \u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c: \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e43\u0e19\u0e40\u0e27\u0e34\u0e23\u0e4c\u0e01\u0e42\u0e1f\u0e25\u0e27\u0e4c Codex \u0e17\u0e35\u0e48\u0e01\u0e33\u0e25\u0e31\u0e07\u0e17\u0e33\u0e07\u0e32\u0e19\u0e2d\u0e22\u0e39\u0e48\n\n## \u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b\u0e17\u0e35\u0e48\u0e08\u0e33\u0e01\u0e31\u0e14\n\n\u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01 CLI \u0e02\u0e2d\u0e07 GlobalGPT \u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01 MCP \u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e02\u0e2d\u0e07 GlobalGPT \u0e41\u0e1a\u0e1a\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e08\u0e32\u0e01 Codex \u0e41\u0e25\u0e30\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e17\u0e31\u0e01\u0e29\u0e30 GlobalGPT \u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e27\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25 \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e2a\u0e37\u0e48\u0e2d \u0e42\u0e2e\u0e2a\u0e15\u0e4c \u0e1a\u0e31\u0e0d\u0e0a\u0e35 \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 MCP \u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e17\u0e38\u0e01\u0e0a\u0e19\u0e34\u0e14\u0e08\u0e30\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e17\u0e14\u0e2a\u0e2d\u0e1a Yukie \u0e41\u0e25\u0e30\u0e44\u0e21\u0e48\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19\u0e02\u0e49\u0e2d\u0e2d\u0e49\u0e32\u0e07\u0e27\u0e48\u0e32 GlobalGPT \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48 Codex \u0e2b\u0e23\u0e37\u0e2d Claude Code.\n<\/pre><\/details><p class=\"s-note\">\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19: \u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49 CLI \u0e40\u0e09\u0e1e\u0e32\u0e30\u0e1a\u0e32\u0e07\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23, \u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19 MCP \u0e41\u0e1a\u0e1a\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07, \u0e41\u0e25\u0e30\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 Skill \u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\/\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 \u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1e\u0e34\u0e2a\u0e39\u0e08\u0e19\u0e4c\u0e16\u0e36\u0e07\u0e17\u0e38\u0e01\u0e42\u0e21\u0e40\u0e14\u0e25, \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e2a\u0e37\u0e48\u0e2d, \u0e42\u0e2e\u0e2a\u0e15\u0e4c \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34.<\/p><\/div><\/article>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19 Claude \u0e02\u0e2d\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e19\u0e23\u0e48\u0e27\u0e21\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e22\u0e37\u0e19\u0e22\u0e31\u0e19\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07 CLI \u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48 MCP \u0e14\u0e49\u0e32\u0e19 Claude \u0e17\u0e31\u0e01\u0e29\u0e30\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27\u0e44\u0e14\u0e49\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48\u0e19\u0e31\u0e48\u0e19 \u0e41\u0e15\u0e48\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e43\u0e0a\u0e49\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e41\u0e0a\u0e48\u0e41\u0e02\u0e47\u0e07 \u0e01\u0e32\u0e23\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49 Codex MCP \u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e22\u0e31\u0e07\u0e04\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e14\u0e49\u0e27\u0e22\u0e21\u0e37\u0e2d \u0e04\u0e27\u0e32\u0e21\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e25\u0e30\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e22\u0e31\u0e07\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e41\u0e1c\u0e19 GlobalGPT \u0e1b\u0e31\u0e08\u0e08\u0e38\u0e1a\u0e31\u0e19 \u0e14\u0e31\u0e07\u0e19\u0e31\u0e49\u0e19\u0e1c\u0e39\u0e49\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e04\u0e27\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e23\u0e32\u0e22\u0e0a\u0e37\u0e48\u0e2d\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e08\u0e23\u0e34\u0e07\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2a\u0e21\u0e21\u0e15\u0e34\u0e27\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25\u0e17\u0e38\u0e01\u0e15\u0e31\u0e27\u0e16\u0e39\u0e01\u0e23\u0e27\u0e21\u0e2d\u0e22\u0e39\u0e48.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GlobalGPT \u0e22\u0e31\u0e07\u0e04\u0e23\u0e2d\u0e1a\u0e04\u0e25\u0e38\u0e21\u0e16\u0e36\u0e07\u0e20\u0e32\u0e1e \u0e27\u0e34\u0e14\u0e35\u0e42\u0e2d \u0e40\u0e2a\u0e35\u0e22\u0e07 \u0e41\u0e25\u0e30\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e41\u0e1a\u0e1a\u0e21\u0e35\u0e04\u0e39\u0e48\u0e21\u0e37\u0e2d \u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 Slides, Document \u0e41\u0e25\u0e30 Image \u0e02\u0e2d\u0e07 Yukie \u0e08\u0e31\u0e14\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e2b\u0e21\u0e27\u0e14\u0e2b\u0e21\u0e39\u0e48\u0e17\u0e35\u0e48\u0e15\u0e48\u0e32\u0e07\u0e2d\u0e2d\u0e01\u0e44\u0e1b: \u0e1e\u0e27\u0e01\u0e21\u0e31\u0e19\u0e40\u0e2a\u0e19\u0e2d\u0e41\u0e21\u0e48\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e41\u0e25\u0e30\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e17\u0e35\u0e25\u0e30\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e1c\u0e48\u0e32\u0e19\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e02\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14 \u0e0b\u0e36\u0e48\u0e07\u0e2d\u0e32\u0e08\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e01\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e34\u0e14 CLI \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e01\u0e32\u0e23\u0e19\u0e33\u0e40\u0e2a\u0e19\u0e2d\u0e2b\u0e23\u0e37\u0e2d\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e41\u0e15\u0e48\u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e01\u0e32\u0e23\u0e23\u0e31\u0e19\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e44\u0e14\u0e49.<\/p>\n\n\n\n<style>.yukie-workflow-summary-card{--ink:#111318;--body:#414753;--muted:#707784;--line:#e4e7ec;--soft:#f6f7f9;--blue:#315efb;--violet:#7257e8;--green:#087a55;--greenSoft:#eaf8f2;--red:#a23131;--redSoft:#fff0f0;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;line-height:1.5;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 16px 42px rgba(24,32,56,.08)}.yukie-workflow-summary-card *{box-sizing:border-box}.yukie-workflow-summary-card .s-head{padding:24px 26px 20px;border-bottom:1px solid var(--line)}.yukie-workflow-summary-card .s-kicker{margin:0 0 6px;color:var(--muted);font:750 11px\/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.08em;text-transform:uppercase}.yukie-workflow-summary-card h3{margin:0;font-size:22px;line-height:1.2;letter-spacing:-.025em}.yukie-workflow-summary-card .s-sub{margin:7px 0 0;color:var(--body);font-size:13px}.yukie-workflow-summary-card .s-body{padding:24px 26px}.yukie-workflow-summary-card .s-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.yukie-workflow-summary-card .s-stat{padding:15px;border:1px solid var(--line);border-radius:6px;background:var(--soft)}.yukie-workflow-summary-card .s-stat span{display:block;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.yukie-workflow-summary-card .s-stat strong{display:block;margin-top:5px;font-size:20px}.yukie-workflow-summary-card table{width:100%;border-collapse:collapse;font-size:12px}.yukie-workflow-summary-card th,.yukie-workflow-summary-card td{padding:11px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}.yukie-workflow-summary-card th{background:var(--soft)}.yukie-workflow-summary-card .s-note{margin:16px 0 0;padding:12px 14px;border-left:3px solid var(--blue);background:#f3f5ff;color:#38466c;font-size:12px}.yukie-workflow-summary-card details{margin-top:12px;border:1px solid var(--line);border-radius:6px}.yukie-workflow-summary-card summary{cursor:pointer;padding:12px 14px;font-size:12px;font-weight:800}.yukie-workflow-summary-card pre{max-height:560px;overflow:auto;margin:0;padding:14px;white-space:pre-wrap;background:#f5f6f8;color:#222936;font:11px\/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}@media(max-width:680px){.yukie-workflow-summary-card .s-grid{grid-template-columns:1fr}.yukie-workflow-summary-card .s-head,.yukie-workflow-summary-card .s-body{padding:20px}}<\/style><article class=\"yukie-workflow-summary-card\"><header class=\"s-head\"><p class=\"s-kicker\">\u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19<\/p><h3>Yukie \u0e44\u0e14\u0e49\u0e19\u0e33\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e1a\u0e23\u0e32\u0e27\u0e4c\u0e40\u0e0b\u0e2d\u0e23\u0e4c-\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c<\/h3><p class=\"s-sub\">\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e42\u0e22\u0e0a\u0e19\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19\u0e40\u0e27\u0e47\u0e1a\u0e17\u0e35\u0e48\u0e21\u0e38\u0e48\u0e07\u0e40\u0e19\u0e49\u0e19\u0e07\u0e32\u0e19\u0e40\u0e09\u0e1e\u0e32\u0e30; \u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e0a\u0e49\u0e41\u0e17\u0e19\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25.<\/p><\/header><div class=\"s-body\"><table><thead><tr><th>\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19<\/th><th>\u0e40\u0e01\u0e13\u0e11\u0e4c\u0e44\u0e14\u0e49\u0e04\u0e23\u0e1a\u0e16\u0e49\u0e27\u0e19\u0e41\u0e25\u0e49\u0e27<\/th><th>\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01<\/th><\/tr><\/thead><tbody><tr><td>\u0e2a\u0e44\u0e25\u0e14\u0e4c<\/td><td>5\/6<\/td><td>\u0e44\u0e14\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e0a\u0e38\u0e14\u0e2a\u0e44\u0e25\u0e14\u0e4c 5 \u0e2a\u0e44\u0e25\u0e14\u0e4c\u0e41\u0e25\u0e49\u0e27; \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e1e\u0e39\u0e14\u0e44\u0e14\u0e49.<\/td><\/tr><tr><td>\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23<\/td><td>6\/6<\/td><td>\u0e1a\u0e17\u0e2a\u0e23\u0e38\u0e1b\u0e01\u0e32\u0e23\u0e27\u0e34\u0e08\u0e31\u0e22\u0e17\u0e35\u0e48\u0e21\u0e35\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e14\u0e49\u0e27\u0e22\u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e2a\u0e48\u0e07\u0e2d\u0e2d\u0e01\u0e41\u0e25\u0e30\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34\u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19.<\/td><\/tr><tr><td>\u0e20\u0e32\u0e1e + \u0e04\u0e33\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22<\/td><td>5\/6<\/td><td>\u0e20\u0e32\u0e1e\u0e2a\u0e35\u0e48\u0e40\u0e2b\u0e25\u0e35\u0e48\u0e22\u0e21\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19; \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e2d\u0e18\u0e34\u0e1a\u0e32\u0e22\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e02\u0e32\u0e14\u0e44\u0e1b.<\/td><\/tr><\/tbody><\/table><p class=\"s-note\">\u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b\u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07: \u0e08\u0e38\u0e14\u0e40\u0e02\u0e49\u0e32\u0e17\u0e35\u0e48\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e41\u0e25\u0e30\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e17\u0e35\u0e48\u0e21\u0e35\u0e23\u0e30\u0e1a\u0e1a\u0e19\u0e33\u0e17\u0e32\u0e07 \u0e02\u0e49\u0e2d\u0e2a\u0e23\u0e38\u0e1b\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19: \u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e44\u0e21\u0e48\u0e08\u0e33\u0e01\u0e31\u0e14 \u0e23\u0e32\u0e04\u0e32\u0e17\u0e35\u0e48\u0e41\u0e19\u0e48\u0e19\u0e2d\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e23\u0e2b\u0e31\u0e2a Codex\/Claude \u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c.<\/p><\/div><\/article>\n\n\n\n<h2 id=\"which-one\" class=\"wp-block-heading\">\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32\u0e2d\u0e34\u0e2a\u0e23\u0e30\u0e04\u0e27\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e15\u0e31\u0e27\u0e44\u0e2b\u0e19\u0e14\u0e35?<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0e40\u0e25\u0e37\u0e2d\u0e01 Codex<\/strong> \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e41\u0e1a\u0e1a\u0e01\u0e30\u0e17\u0e31\u0e14\u0e23\u0e31\u0e14\u0e41\u0e25\u0e30\u0e21\u0e35\u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15 \u0e01\u0e32\u0e23\u0e1c\u0e2a\u0e21\u0e1c\u0e2a\u0e32\u0e19\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e1e\u0e37\u0e49\u0e19\u0e1c\u0e34\u0e27\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48 \u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e21\u0e35\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e2a\u0e2d\u0e14\u0e04\u0e25\u0e49\u0e2d\u0e07\u0e01\u0e31\u0e1a\u0e27\u0e34\u0e18\u0e35\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13.<\/li>\n\n\n\n<li><strong>\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e23\u0e2b\u0e31\u0e2a Claude<\/strong> \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e01\u0e34\u0e14\u0e01\u0e32\u0e23\u0e27\u0e19\u0e25\u0e39\u0e1b\u0e43\u0e19\u0e40\u0e17\u0e2d\u0e23\u0e4c\u0e21\u0e34\u0e19\u0e31\u0e25\u0e2a\u0e19\u0e17\u0e19\u0e32 \u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e31\u0e1a\u0e41\u0e15\u0e48\u0e07\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27 \u0e2b\u0e23\u0e37\u0e2d\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e36\u0e49\u0e19 \u0e40\u0e0a\u0e48\u0e19 \u0e17\u0e35\u0e48\u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e40\u0e2b\u0e47\u0e19\u0e43\u0e19\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 \u0e08\u0e30\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e2a\u0e33\u0e04\u0e31\u0e0d\u0e21\u0e32\u0e01\u0e02\u0e36\u0e49\u0e19.<\/li>\n\n\n\n<li><strong>\u0e43\u0e0a\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e43\u0e14\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e38\u0e49\u0e19\u0e40\u0e04\u0e22<\/strong> \u0e40\u0e1e\u0e35\u0e22\u0e07\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e1c\u0e48\u0e32\u0e19\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e14\u0e49\u0e32\u0e19\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2a\u0e35\u0e48\u0e22\u0e07\u0e41\u0e25\u0e49\u0e27\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e15\u0e48\u0e32\u0e07\u0e01\u0e47\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e31\u0e1a\u0e07\u0e32\u0e19\u0e19\u0e31\u0e49\u0e19\u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e14\u0e35.<\/li>\n\n\n\n<li><strong>\u0e43\u0e0a\u0e49\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e23\u0e23<\/strong> \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e14\u0e22\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07\u0e04\u0e38\u0e49\u0e21\u0e04\u0e48\u0e32\u0e01\u0e31\u0e1a\u0e04\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e08\u0e48\u0e32\u0e22\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e40\u0e15\u0e34\u0e21\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2a\u0e21\u0e31\u0e04\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e07\u0e32\u0e19 \u0e43\u0e2b\u0e49\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e15\u0e31\u0e27\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e41\u0e1c\u0e19\u0e07\u0e32\u0e19 \u0e41\u0e17\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e17\u0e33\u0e0b\u0e49\u0e33\u0e07\u0e32\u0e19\u0e19\u0e31\u0e49\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e44\u0e21\u0e48\u0e04\u0e34\u0e14\u0e44\u0e15\u0e23\u0e48\u0e15\u0e23\u0e2d\u0e07.<\/li>\n\n\n\n<li><strong>\u0e40\u0e1e\u0e34\u0e48\u0e21 GlobalGPT<\/strong> \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e40\u0e2a\u0e49\u0e19\u0e17\u0e32\u0e07\u0e41\u0e1a\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e21\u0e40\u0e14\u0e25\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e2b\u0e21\u0e14\u0e40\u0e1b\u0e47\u0e19\u0e0a\u0e31\u0e49\u0e19\u0e17\u0e35\u0e48\u0e02\u0e32\u0e14\u0e2b\u0e32\u0e22\u0e44\u0e1b \u0e43\u0e2b\u0e49\u0e23\u0e31\u0e01\u0e29\u0e32\u0e01\u0e32\u0e23\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e01\u0e31\u0e1a\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e41\u0e1a\u0e1a\u0e40\u0e19\u0e17\u0e35\u0e1f\u0e44\u0e27\u0e49\u0e43\u0e19\u0e42\u0e2e\u0e2a\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e01\u0e32\u0e23\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e43\u0e0a\u0e49 7 \u0e27\u0e31\u0e19\u0e43\u0e2b\u0e49\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e14\u0e49\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e2d\u0e31\u0e19\u0e14\u0e31\u0e1a \u0e40\u0e25\u0e37\u0e2d\u0e01\u0e04\u0e38\u0e13\u0e2a\u0e21\u0e1a\u0e31\u0e15\u0e34\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e17\u0e35\u0e48\u0e08\u0e23\u0e34\u0e07\u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e1c\u0e25\u0e34\u0e15\u0e08\u0e23\u0e34\u0e07 \u0e02\u0e49\u0e2d\u0e1a\u0e01\u0e1e\u0e23\u0e48\u0e2d\u0e07\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e02\u0e49\u0e2d \u0e41\u0e25\u0e30\u0e17\u0e33\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u0e15\u0e23\u0e36\u0e07\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 prompt \u0e41\u0e25\u0e30\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 success \u0e44\u0e27\u0e49 \u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 diff \u0e17\u0e35\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e04\u0e23\u0e31\u0e49\u0e07\u0e41\u0e23\u0e01 \u0e01\u0e32\u0e23\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19 \u0e40\u0e27\u0e25\u0e32\u0e17\u0e35\u0e48\u0e1c\u0e48\u0e32\u0e19\u0e44\u0e1b \u0e01\u0e32\u0e23\u0e41\u0e17\u0e23\u0e01\u0e41\u0e0b\u0e07\u0e02\u0e2d\u0e07\u0e21\u0e19\u0e38\u0e29\u0e22\u0e4c \u0e02\u0e2d\u0e1a\u0e40\u0e02\u0e15\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e04\u0e32\u0e14\u0e04\u0e34\u0e14 \u0e41\u0e25\u0e30\u0e27\u0e34\u0e18\u0e35\u0e17\u0e35\u0e48\u0e07\u0e32\u0e19\u0e14\u0e31\u0e07\u0e01\u0e25\u0e48\u0e32\u0e27\u0e2a\u0e48\u0e07\u0e1c\u0e25\u0e15\u0e48\u0e2d\u0e1b\u0e23\u0e34\u0e21\u0e32\u0e13\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13 \u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e17\u0e35\u0e48\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e04\u0e37\u0e2d\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e23\u0e27\u0e08\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e44\u0e14\u0e49 \u0e41\u0e25\u0e30\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e23\u0e31\u0e01\u0e29\u0e32\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e43\u0e2b\u0e49\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e44\u0e14\u0e49.<\/p>\n\n\n\n<h2 id=\"faq\" class=\"wp-block-heading\">\u0e04\u0e33\u0e16\u0e32\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e1a\u0e1a\u0e48\u0e2d\u0e22\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e23\u0e2b\u0e31\u0e2a Codex vs Claude<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Codex \u0e14\u0e35\u0e01\u0e27\u0e48\u0e32 Claude Code \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e40\u0e0a\u0e48\u0e19\u0e19\u0e31\u0e49\u0e19\u0e43\u0e19\u0e17\u0e38\u0e01\u0e01\u0e23\u0e13\u0e35 \u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19\u0e2a\u0e35\u0e48\u0e07\u0e32\u0e19\u0e43\u0e19\u0e0a\u0e38\u0e14\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 Claude Code \u0e19\u0e33\u0e14\u0e49\u0e32\u0e19\u0e04\u0e27\u0e32\u0e21\u0e01\u0e27\u0e49\u0e32\u0e07\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u0e43\u0e19\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48 Codex \u0e21\u0e35\u0e42\u0e04\u0e23\u0e07\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e01\u0e23\u0e30\u0e0a\u0e31\u0e1a\u0e01\u0e27\u0e48\u0e32\u0e43\u0e19\u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e02\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e19\u0e33\u0e44\u0e1b\u0e43\u0e0a\u0e49\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e41\u0e1a\u0e1a\u0e44\u0e2b\u0e19\u0e14\u0e35\u0e01\u0e27\u0e48\u0e32\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a repositories \u0e02\u0e19\u0e32\u0e14\u0e43\u0e2b\u0e0d\u0e48?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e19\u0e32\u0e14\u0e40\u0e25\u0e47\u0e01\u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e15\u0e2d\u0e1a\u0e04\u0e33\u0e16\u0e32\u0e21\u0e19\u0e31\u0e49\u0e19\u0e44\u0e14\u0e49 \u0e42\u0e1b\u0e23\u0e14\u0e1b\u0e23\u0e30\u0e40\u0e21\u0e34\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e1a\u0e19\u0e07\u0e32\u0e19\u0e2a\u0e16\u0e32\u0e1b\u0e31\u0e15\u0e22\u0e01\u0e23\u0e23\u0e21\u0e41\u0e1a\u0e1a\u0e2d\u0e48\u0e32\u0e19\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e14\u0e35\u0e22\u0e27\u0e08\u0e32\u0e01\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13\u0e40\u0e2d\u0e07 \u0e01\u0e48\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e2d\u0e19\u0e38\u0e0d\u0e32\u0e15\u0e43\u0e2b\u0e49\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e15\u0e31\u0e27\u0e41\u0e17\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a\u0e15\u0e31\u0e27\u0e43\u0e14\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e14\u0e39\u0e41\u0e25\u0e19\u0e49\u0e2d\u0e22\u0e17\u0e35\u0e48\u0e2a\u0e38\u0e14?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e2a\u0e34\u0e48\u0e07\u0e19\u0e35\u0e49\u0e02\u0e36\u0e49\u0e19\u0e2d\u0e22\u0e39\u0e48\u0e01\u0e31\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e31\u0e14\u0e40\u0e08\u0e19\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19 \u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e42\u0e21\u0e40\u0e14\u0e25 \u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e43\u0e19\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35 \u0e41\u0e25\u0e30\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e42\u0e15\u0e49\u0e15\u0e2d\u0e1a\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 \u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49 Reddit \u0e23\u0e32\u0e22\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e44\u0e14\u0e49\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e14\u0e39\u0e41\u0e25\u0e17\u0e35\u0e48\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e41\u0e15\u0e48\u0e1b\u0e23\u0e30\u0e2a\u0e1a\u0e01\u0e32\u0e23\u0e13\u0e4c\u0e2a\u0e48\u0e27\u0e19\u0e15\u0e31\u0e27\u0e19\u0e31\u0e49\u0e19\u0e44\u0e21\u0e48\u0e43\u0e0a\u0e48\u0e01\u0e0e\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e44\u0e14\u0e49\u0e01\u0e31\u0e1a\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e2d\u0e31\u0e19\u0e44\u0e2b\u0e19\u0e16\u0e39\u0e01\u0e01\u0e27\u0e48\u0e32?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e2b\u0e25\u0e31\u0e01\u0e16\u0e39\u0e01\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49\u0e17\u0e35\u0e48 $20, $100 \u0e41\u0e25\u0e30 $200 \u0e15\u0e48\u0e2d\u0e40\u0e14\u0e37\u0e2d\u0e19 \u0e41\u0e15\u0e48\u0e04\u0e27\u0e32\u0e21\u0e08\u0e38\u0e17\u0e35\u0e48\u0e23\u0e27\u0e21\u0e44\u0e27\u0e49\u0e41\u0e25\u0e30\u0e01\u0e25\u0e44\u0e01\u0e01\u0e32\u0e23\u0e08\u0e33\u0e01\u0e31\u0e14\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e19 \u0e2a\u0e48\u0e27\u0e19\u0e40\u0e04\u0e23\u0e14\u0e34\u0e15\u0e41\u0e1a\u0e1a\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e43\u0e0a\u0e49\u0e41\u0e25\u0e30\u0e23\u0e30\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e04\u0e34\u0e14\u0e04\u0e48\u0e32\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e1c\u0e48\u0e32\u0e19 API \u0e40\u0e1b\u0e47\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e35\u0e48\u0e41\u0e22\u0e01\u0e01\u0e31\u0e19.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Claude \u0e41\u0e25\u0e30 Claude \u0e21\u0e35\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e0a\u0e23\u0e4c\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e43\u0e0a\u0e48\u0e04\u0e23\u0e31\u0e1a Claude \u0e41\u0e25\u0e30 Claude Code \u0e43\u0e0a\u0e49\u0e40\u0e0b\u0e2a\u0e0a\u0e31\u0e19\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e41\u0e25\u0e30\u0e08\u0e33\u0e01\u0e31\u0e14\u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e23\u0e31\u0e49\u0e07\u0e15\u0e48\u0e2d\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08 Pro \u0e2b\u0e23\u0e37\u0e2d Max \u0e17\u0e35\u0e48\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e2d\u0e22\u0e39\u0e48.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e07\u0e32\u0e19\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e41\u0e25\u0e30\u0e1a\u0e19\u0e04\u0e25\u0e32\u0e27\u0e14\u0e4c\u0e02\u0e2d\u0e07 Codex \u0e21\u0e35\u0e02\u0e35\u0e14\u0e08\u0e33\u0e01\u0e31\u0e14\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19\u0e41\u0e25\u0e30\u0e01\u0e32\u0e23\u0e2a\u0e19\u0e17\u0e19\u0e32\u0e1a\u0e19\u0e04\u0e25\u0e32\u0e27\u0e14\u0e4c\u0e21\u0e35\u0e0a\u0e48\u0e27\u0e07\u0e40\u0e27\u0e25\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e19 5 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07 \u0e41\u0e25\u0e30\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e23\u0e32\u0e22\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c\u0e14\u0e49\u0e27\u0e22.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">GlobalGPT \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e41\u0e17\u0e19\u0e17\u0e35\u0e48 Codex \u0e2b\u0e23\u0e37\u0e2d Claude Code \u0e44\u0e14\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0e44\u0e21\u0e48\u0e04\u0e23\u0e31\u0e1a \u0e21\u0e31\u0e19\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e02\u0e22\u0e32\u0e22\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e44\u0e14\u0e49\u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e42\u0e21\u0e40\u0e14\u0e25 CLI MCP Skills \u0e41\u0e25\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d\u0e41\u0e1a\u0e1a\u0e21\u0e31\u0e25\u0e15\u0e34\u0e42\u0e21\u0e14\u0e31\u0e25 \u0e41\u0e15\u0e48\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e16\u0e36\u0e07\u0e23\u0e35\u0e42\u0e1e\u0e2a\u0e34\u0e15\u0e2d\u0e23\u0e35\u0e41\u0e25\u0e30\u0e1e\u0e24\u0e15\u0e34\u0e01\u0e23\u0e23\u0e21\u0e02\u0e2d\u0e07\u0e40\u0e2d\u0e40\u0e08\u0e19\u0e15\u0e4c\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e22\u0e31\u0e07\u0e04\u0e07\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19\u0e23\u0e30\u0e1a\u0e1a\u0e42\u0e2e\u0e2a\u0e15\u0e4c.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0e1c\u0e21\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e43\u0e0a\u0e49 GlobalGPT \u0e08\u0e32\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e44\u0e14\u0e49\u0e44\u0e2b\u0e21\u0e04\u0e23\u0e31\u0e1a?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GlobalGPT \u0e43\u0e2b\u0e49\u0e04\u0e33\u0e41\u0e19\u0e30\u0e19\u0e33\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a CLI \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e23\u0e30\u0e1a\u0e1a \u0e40\u0e23\u0e32\u0e44\u0e14\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 CLI \u0e43\u0e19\u0e17\u0e31\u0e49\u0e07\u0e2a\u0e2d\u0e07\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21 \u0e23\u0e27\u0e21\u0e16\u0e36\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 MCP \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a Skill \u0e43\u0e19 Codex \u0e42\u0e14\u0e22\u0e21\u0e35\u0e02\u0e49\u0e2d\u0e08\u0e33\u0e01\u0e31\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e2d\u0e19\u0e38\u0e21\u0e31\u0e15\u0e34\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a MCP \u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u0e23\u0e32\u0e04\u0e32 \u0e01\u0e0e\u0e02\u0e2d\u0e07\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08 \u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e2d\u0e37\u0e48\u0e19 \u0e41\u0e25\u0e30\u0e2b\u0e25\u0e31\u0e01\u0e10\u0e32\u0e19\u0e17\u0e35\u0e48\u0e21\u0e32 \u0e44\u0e14\u0e49\u0e16\u0e39\u0e01\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e43\u0e19\u0e40\u0e14\u0e37\u0e2d\u0e19\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21 2026 \u0e23\u0e32\u0e22\u0e25\u0e30\u0e40\u0e2d\u0e35\u0e22\u0e14\u0e02\u0e2d\u0e07\u0e1c\u0e25\u0e34\u0e15\u0e20\u0e31\u0e13\u0e11\u0e4c\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.glbgpt.com\/home?inviter=hub_content_home&amp;login=1\">\u0e40\u0e1b\u0e34\u0e14 GlobalGPT<\/a> \u0e2b\u0e32\u0e01\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e0a\u0e31\u0e49\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e07\u0e32\u0e19\u0e41\u0e1a\u0e1a\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e21\u0e40\u0e14\u0e25\u0e41\u0e25\u0e30\u0e2b\u0e25\u0e32\u0e22\u0e42\u0e2b\u0e21\u0e14\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e01\u0e23\u0e30\u0e1a\u0e27\u0e19\u0e01\u0e32\u0e23\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e04\u0e49\u0e14\u0e17\u0e35\u0e48\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07\u0e04\u0e38\u0e13.<\/p>\n\n\n<\/article>","protected":false},"excerpt":{"rendered":"<p>Codex vs Claude Code is less about finding one universal winner and more about choosing the working style you can trust every day. Both products can inspect a repository, edit multiple files, run commands, execute tests, and explain a patch. The meaningful differences appear in how you delegate work, how often you steer the agent, [&hellip;]<\/p>","protected":false},"author":7,"featured_media":17361,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_robots_primary_cat":"","_seopress_titles_title":" Codex vs Claude Code: Features, Pricing & Hands-On Tests","_seopress_titles_desc":"A neutral Codex vs Claude Code comparison covering features, pricing, limits, real repository tests, user experience, and GlobalGPT integrations.","_seopress_robots_index":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-17342","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-chat"],"_links":{"self":[{"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/posts\/17342","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/comments?post=17342"}],"version-history":[{"count":2,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/posts\/17342\/revisions"}],"predecessor-version":[{"id":17393,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/posts\/17342\/revisions\/17393"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/media\/17361"}],"wp:attachment":[{"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/media?parent=17342"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/categories?post=17342"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/th\/wp-json\/wp\/v2\/tags?post=17342"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}