
REODE
Code migration
ก่อนแก้ไข หาสาเหตุร่วมก่อน
เอเจนต์ไมเกรตโค้ด Java/Spring ผสานการแปลงตามกฎเข้ากับการซ่อมที่ใช้โมเดลช่วย และตรวจโค้ดที่เปลี่ยนด้วย build และ test เป็นโปรเจกต์งาน
REODE vocabulary
- assess
- plan
- explore
- transform
- validate
- fix
- measure
- recipes
- docker isolation
- equivalence
- escalation
- checkpoint
- learnings
Assess: assess_node · assessment_report · frameworks_detected · SOCRATIC RISK ANALYSIS · clarity_score · BASELINE BUILD · baseline_build_success · detect_spring_features · SpringAssessment · memory_context · get_local_jdk_versionPlan: plan_node · migration_plan · incremental_recipe_chain · get_recipe_chain · project_constraints · llm_structural · get_migration_strategy · is_fw_to_boot_migration · hitl_level · memory_contextExplore: _explore_before_fix · AFFECTED FILES · read_file · @Data · pom.xml · classify_build_error · ErrorCategory · get_category_prompt_hint · _batch_errors · _detect_fix_patterns · CANNOT FIND SYMBOL · compute_error_signatureTransform: llm_structural · transform_node · rewrite-maven-plugin · _ensure_openrewrite_plugin · rewrite:run · java_openrewrite_run · recipes_applied · _BATCH_SIZE · source_path_backup · structural_changes · resume_from_batchValidate: BASELINE BUILD · validate_node · java_build · java_test · java_lint · build_error_output · test_error_output · test_pass_rate · _route_after_validate · build_verification_tasks · verify-compat-check · SubAgentManager · _BackpressureExecutor · docker_maven_command · max_iterationsFix: memory_context · _explore_before_fix · @Data · pom.xml · get_category_prompt_hint · _detect_fix_patterns · build_error_output · test_error_output · fix_node · _fix_deterministic_pass · _apply_deterministic_fixes · LOMBOK 1.18.34 · annotationProcessorPaths · _fix_architect_editor_pass · FixPlan · _execute_llm_fix · _BackpressureExecutor · fix_attempts · java-migration-diagnostic · _determine_escalation · _build_full_project_context · fix-iter-{iteration} · AUTO-LEARNINGSMeasure: baseline_build_success · recipes_applied · test_pass_rate · measure_node · MigrationScorecard · G1 BUILD SUCCESS · G2 TEST EQUIVALENCE · G3 COVERAGE PRESERVATION · G4 TEST INTEGRITY · G5 NO TEST EXCLUSION · _count_deleted_test_files · _count_surefire_excludes · automation_ratio · S/A/B/C GRADERecipes: detect_spring_features · incremental_recipe_chain · get_recipe_chain · rewrite-maven-plugin · java_openrewrite_run · UpgradeToJava17 · UpgradeToJava21 · JavaxMigrationToJakarta · UpgradeSpringBoot_3_2 · UpgradeSpringSecurity_6_2 · JUnit4to5Migration · rewrite-migrate-java · rewrite-spring · SPRING_RECIPE_CHAINS · java_openrewrite_listDocker Isolation: JDK_DOCKER_IMAGES · maven:3.9-eclipse-temurin-22 · needs_docker_build · docker_maven_command · get_local_jdk_version · is_docker_available · docker_build_mode · local_jdk_version · _maven_cache_dir · JDK MISMATCHEquivalence: source_path_backup · verify-compat-check · java_app_start · e2e_smoke_test · java_app_stop · run_jar_comparison · detect_jar_type · deploy_dual_stack · discover_endpoints · api_equivalence_rate · api_breaking_changes · teardown_dual_stackEscalation: _route_after_validate · fix_attempts · _determine_escalation · claude-opus-4-6 · _build_full_project_context · _is_stuck · CONVERGENCE · CIRCUIT BREAKER · recovery_attempted · max_iterations · budget_usd · _check_budget_gateCheckpoint: _BATCH_SIZE · PipelineCheckpoint · reode/checkpoint · fix-iter-{iteration} · resume_from_batch · _resume_skip_nodes · MigrationProgressTracker · migration_progress.json · _save_node_progress · --resumeLearnings: FixPlan · FixEventLog · FixEvent · fix_events.jsonl · query_by_signature · format_learnings · compute_error_signature · AUTO-LEARNINGS · LEARNINGS.md · _append_learning · AVOID THIS APPROACH
ลูปไมเกรชันที่แยกหลักฐานการซ่อมออกจากการยอมรับ
บันทึกสถานะ build ต้นฉบับและใช้การแปลงตามกฎ แล้วรวบรวมหลักฐานจากซอร์สและ POM ก่อนซ่อม หลังโมเดลแก้ไข จะตรวจ build, test และความสมบูรณ์ของเทสต์อีกครั้ง และรายงานการรันที่จบเพราะถึงขีดจำกัดหรือค้างแยกจากความสำเร็จ
งาน REODE ในรีโพซิทอรี ช่วงร่วมงานกับ pinxlab March 16, 2026 ถึง May 26, 2026
เครื่องมือ CLI ที่ใช้ในงาน
การแปลงตามกฎ
สถานะต้นฉบับถูกเก็บเป็น baseline หลังการแปลงตามกฎ build และ test ตรวจยืนยัน แล้วการรันไปสู่การวัดผล
ซอร์ส · POMข้อมูล: ซอร์ส · POMสถานะต้นฉบับ · compile
การตรวจต้นฉบับรับซอร์สและ POM ของ Java/Spring ที่จะไมเกรต ไม่แสดงโค้ดและหน้าจอของลูกค้า
สถานะต้นฉบับ · compile
การตรวจต้นฉบับข้อมูล: compile ต้นฉบับbaseline · ค่าที่ไม่ทราบไม่ได้วัดสถานะการรันก่อนการแปลง จะเลือกรันไทม์และ compile ต้นฉบับ build ที่พังอยู่แล้วจึงถูกเก็บไว้ใน baseline ค่าเริ่มต้นของ test และ coverage ใน baseline ไม่ใช่ค่าที่วัดได้
สถานะต้นฉบับ · compile
การตรวจต้นฉบับรัน · การตัดสิน: การแปลงตามกฎแผน → การแปลงตามกฎการแปลงกราฟการรันเป็นไปตาม ตรวจต้นฉบับ → แผนการแปลง → การแปลงตามกฎ → การตรวจยืนยัน การแปลงที่กฎรองรับได้จะถูกใช้ก่อน
แผน → การแปลงตามกฎ
การแปลงรัน · การตัดสิน: build · testbuild · test · รอบ +1การตรวจยืนยันbuild และ test ตรวจยืนยันโค้ดที่แปลงแล้วและนับรอบเพิ่มหนึ่ง ผลลัพธ์กลับไปยังสถานะการรัน
build · test · รอบ +1
การตรวจยืนยันข้อมูล: ผลลัพธ์ · จำนวนรอบทำต่อ · วัดผล · สูงสุด 3ขั้นถัดไปความสำเร็จของ build อัตราผ่าน test และจำนวนรอบเป็นตัวตัดสินขั้นถัดไป
ทำต่อ · วัดผล · สูงสุด 3
ขั้นถัดไปรัน · การตัดสิน: ผ่าน · ขีดจำกัด · ค้างสัดส่วนกฎ · เทสต์ · coverageการวัดผลเมื่อ build และ test ผ่านทั้งคู่ ถึงขีดจำกัดรอบ หรือตรวจพบการค้าง (หลังพยายามกู้คืนหนึ่งครั้งหากยังไม่เคยทำ) การรันจะไปสู่การวัดผล การไปสู่การวัดผลไม่ได้หมายถึงความสำเร็จ
baseline · ค่าที่ไม่ทราบไม่ได้วัด
สถานะการรันข้อมูล: เปรียบเทียบกับ baselineสัดส่วนกฎ · เทสต์ · coverageการวัดผลการวัดผลอ่าน baseline ที่เก็บไว้ในสถานะการรัน ไม่ใช่การรัน baseline ใหม่
เกณฑ์การยอมรับ 5 ข้อ
การวัดผลข้อมูล: การให้เกรดscorecard · เกรดbuild สำเร็จ อัตราผ่าน test 100% การเปลี่ยนแปลงของ coverage −5 หรือดีกว่า (เฉพาะเมื่อทราบ baseline) เทสต์ที่ถูกลบเป็นศูนย์ การยกเว้น surefire เป็นศูนย์ ให้เกรดเฉพาะเมื่อผ่านครบทั้งห้าข้อ
การซ่อมตามสาเหตุ
รวบรวมหลักฐานก่อนแก้ไข และการแก้ไขแบบเชิงกำหนดมาก่อน หากบิลด์ใหม่ผ่าน จะข้ามโมเดล หากไม่ผ่าน โมเดลซ่อมด้วยหลักฐานและคำสั่ง แล้วตรวจยืนยันผลอีกครั้ง
build · test · รอบ +1
การตรวจยืนยันข้อมูล: ผลลัพธ์ · จำนวนรอบทำต่อ · วัดผล · สูงสุด 3ขั้นถัดไปความสำเร็จของ build อัตราผ่าน test และจำนวนรอบเป็นตัวตัดสินขั้นถัดไป
ทำต่อ · วัดผล · สูงสุด 3
ขั้นถัดไปรัน · การตัดสิน: ล้มเหลว · ลองใหม่หลักฐานสาเหตุ · ซอร์ส 3 ไฟล์ · POMสำรวจก่อนแก้ไขหาก build ล้มเหลวหรืออัตราผ่าน test ต่ำกว่า 100% และยังไม่ถึงขีดจำกัดรอบ (ค่าเริ่มต้น 3) การรันจะไปสู่การซ่อม
หลักฐานสาเหตุ · ซอร์ส 3 ไฟล์ · POM
สำรวจก่อนแก้ไขการสังเกต · รายงาน: บันทึกก่อนแก้ไขcheckpoint ก่อนแก้ไขบันทึกการกู้คืนcheckpoint ถูกบันทึกก่อนการแก้ไข เป็นแบบ best-effort การบันทึกที่ล้มเหลวไม่ได้หยุดการซ่อม และการบันทึกไม่ใช่หลักฐานของความสำเร็จ
หลักฐานสาเหตุ · ซอร์ส 3 ไฟล์ · POM
สำรวจก่อนแก้ไขข้อมูล: หลักฐาน · ข้อผิดพลาดที่จัดกลุ่มแก้รูปแบบที่รู้จักการแก้ไขแบบเชิงกำหนดรวบรวมไฟล์ Java ที่ล้มเหลว บรรทัดแรก ๆ ของซอร์สสูงสุดสามไฟล์ การตั้งค่า annotation, POM และ annotation processor และ import ที่ความลึก 2 เป็นตัวอย่างที่มีขอบเขต ไม่ใช่ความเข้าใจโค้ดเบสทั้งหมด
ตรวจการบิลด์ใหม่
การแก้ไขแบบเชิงกำหนดรัน · การตัดสิน: ผ่าน · ข้าม LLMbuild · test · รอบ +1การตรวจยืนยันหากการแก้รูปแบบที่รู้จักแบบเชิงกำหนด (เช่น การตั้งค่า Lombok) ทำให้บิลด์ใหม่ผ่าน จะไม่เรียกโมเดล การรันยังคงกลับไปที่การตรวจยืนยัน นี่จึงไม่ใช่การยอมรับขั้นสุดท้าย
ตรวจการบิลด์ใหม่
การแก้ไขแบบเชิงกำหนดความล้มเหลว · ขีดจำกัด: บิลด์ใหม่ล้มเหลวแก้ด้วยหลักฐาน · คำสั่งการซ่อมด้วยโมเดลหากบิลด์ใหม่ล้มเหลว หลักฐานที่รวบรวมและคำสั่งแก้ไขจะถูกส่งไปยังการซ่อมด้วยโมเดล การอ่านโค้ดแสดงว่าข้อความข้อผิดพลาดที่ส่งไปด้วยคือข้อผิดพลาดของ build ครั้งแรก ไม่ใช่ข้อผิดพลาดใหม่ของการบิลด์ใหม่ จึงต้องไม่อ่านว่า “ส่งต่อเฉพาะข้อผิดพลาดที่เหลือ” ไม่ใช่ข้อบกพร่องที่ทำซ้ำได้ในการรัน
การแก้ไขก่อนหน้า ข้อผิดพลาดเดียวกัน
บันทึกการกู้คืนข้อมูล: การแก้ไขก่อนหน้าแก้ด้วยหลักฐาน · คำสั่งการซ่อมด้วยโมเดลการแก้ไขก่อนหน้าที่บันทึกไว้ภายใต้ลายเซ็นข้อผิดพลาดเดียวกันจะถูกค้นและแนบมา เป็นบันทึกที่เพิ่มเข้าไปในอินพุต ไม่ใช่การฝึกโมเดล
แก้ด้วยหลักฐาน · คำสั่ง
การซ่อมด้วยโมเดลรัน · การตัดสิน: ตรวจยืนยันอีกครั้งbuild · test · รอบ +1การตรวจยืนยันโมเดลแก้ไขผ่านเส้นทาง architect/editor แบบมีโครงสร้าง หรือใช้พรอมต์แบบ tool-use เมื่อเส้นทางนั้นใช้ไม่ได้หรืออยู่ระหว่างกู้คืน แล้ว build และ test ตรวจยืนยันอีกครั้ง การแก้ไขของโมเดลไม่ใช่ build ที่ผ่านในตัวเอง
ผ่าน กับ ค้าง
เกรดต้องผ่านเกณฑ์ครบทั้งห้าข้อ เทสต์ที่ถูกลบหรือยกเว้น และทางออกจากขีดจำกัดหรือการค้าง ไม่นับว่าสำเร็จ
ทำต่อ · วัดผล · สูงสุด 3
ขั้นถัดไปรัน · การตัดสิน: ผ่าน · ขีดจำกัด · ค้างสัดส่วนกฎ · เทสต์ · coverageการวัดผลเมื่อ build และ test ผ่านทั้งคู่ ถึงขีดจำกัดรอบ หรือตรวจพบการค้าง (หลังพยายามกู้คืนหนึ่งครั้งหากยังไม่เคยทำ) การรันจะไปสู่การวัดผล การไปสู่การวัดผลไม่ได้หมายถึงความสำเร็จ
baseline · ค่าที่ไม่ทราบไม่ได้วัด
สถานะการรันข้อมูล: เปรียบเทียบกับ baselineสัดส่วนกฎ · เทสต์ · coverageการวัดผลการวัดผลอ่าน baseline ที่เก็บไว้ในสถานะการรัน ไม่ใช่การรัน baseline ใหม่
เกณฑ์การยอมรับ 5 ข้อ
การวัดผลข้อมูล: การให้เกรดscorecard · เกรดbuild สำเร็จ อัตราผ่าน test 100% การเปลี่ยนแปลงของ coverage −5 หรือดีกว่า (เฉพาะเมื่อทราบ baseline) เทสต์ที่ถูกลบเป็นศูนย์ การยกเว้น surefire เป็นศูนย์ ให้เกรดเฉพาะเมื่อผ่านครบทั้งห้าข้อ
เกณฑ์การยอมรับ 5 ข้อ
การวัดผลความล้มเหลว · ขีดจำกัด: ลบ · ยกเว้น · ล้มเหลวรายงานความล้มเหลว · การค้างการผ่านที่ได้จากการลบเทสต์หรือจากการยกเว้นของ surefire และ build หรือ test ที่ล้มเหลว ยังคงเป็นความล้มเหลว การตรวจการลบและการยกเว้นนับเป็นศูนย์เมื่ออ่าน Git หรือ POM ไม่ได้ จึงไม่ใช่หลักฐานว่าจับการละเมิดได้ทุกกรณี
ทำต่อ · วัดผล · สูงสุด 3
ขั้นถัดไปการสังเกต · รายงาน: ทางออกจากขีดจำกัด · การค้างรายงานความล้มเหลว · การค้างการรันที่จบเพราะถึงขีดจำกัดหรือค้างยังผ่านการวัดผล แต่ไม่ถูกรายงานว่าสำเร็จ นี่คือการระบุวิธีรายงาน ไม่ใช่ทางลัดข้ามการวัดผล
ทุกการเชื่อมต่อมีน้ำหนักเท่ากัน เลือกโฟลว์เพื่อไฮไลต์เฉพาะเส้นทางของโฟลว์นั้นพร้อมขั้นตอนที่มีหมายเลข
- เส้นทึบ · ทิศทางของอินพุต ผลลัพธ์ และบันทึก
- เส้นประ · รัน การตัดสิน คำขอ
- จุดยาว · การสังเกตและการรายงาน แยกจากการตัดสิน
- เส้นประสั้น · ความล้มเหลว การหยุด ขีดจำกัด
- เส้นดำหนา · โฟลว์ที่เลือก ตัวเลขบอกลำดับ
- กล่อง · ขอบเขตของโค้ดหรือสถานะ ระบุชื่อในส่วนหัว
- ชิปด้านใน · องค์ประกอบของขอบเขตนั้น
- กล่องจุด · อยู่นอกขอบเขตนั้น
- เส้นขอบสีส้ม · จุดที่โมเดลตัดสินใจ
- ขั้นของไปป์ไลน์ · การซ่อม
- การตรวจยืนยัน · การกำหนดทาง · การยอมรับ
- สถานะ · บันทึก
- สำรวจก่อนแก้ไข
วาดจากบันทึกการพัฒนาและงานที่เป็นส่วนตัว ชื่อเป็นชื่อสาธารณะทั่วไป ไม่แสดงพาธโค้ดหรือข้อมูลลูกค้า
- อินพุตหลังบิลด์ใหม่ล้มเหลว
- การซ่อมด้วยโมเดลได้รับหลักฐานที่รวบรวมและคำสั่งแก้ไข แต่ข้อความข้อผิดพลาดที่ส่งไปด้วยคือข้อผิดพลาดของ build ครั้งแรก ไม่ใช่ข้อผิดพลาดใหม่ของการบิลด์ใหม่ ยืนยันด้วยการอ่านโค้ด ไม่ได้ทำซ้ำในการรัน และไม่ได้เปลี่ยนซอร์ส
- ข้อจำกัดของเกณฑ์
- หากไม่ทราบ baseline ของ coverage เกณฑ์นั้นจะถูกข้าม การตรวจ surefire นับการยกเว้นใน POM ปัจจุบัน ไม่ใช่ผลต่างจาก baseline การตรวจการลบและการยกเว้นนับเป็นศูนย์เมื่ออ่าน Git หรือ POM ไม่ได้
- กรณีและตัวเลข
- ข้อผิดพลาด setter ราว 40 รายการที่ไล่ไปถึงสาเหตุเดียว คือการตั้งค่า Lombok และ POM เป็นการวินิจฉัยที่บันทึกในตอนนั้น ไม่ใช่ตัวเลขปริมาณงาน ความแม่นยำ หรือการส่งมอบสุดท้าย