컴백부터 K-뷰티까지 — K-컬쳐의 모든 것을 메일로 받아보세요메일로 받아보기

METAL MEDIA

코딩 에이전트는 일회용으로 쓰고, 소프트웨어 프로젝트 자체를 영구히 살아있게 만들어 컴파일러를 처음부터 만들게 한 실험

arXiv:2608.104502026-08-11

Persistent Recursive Worlds Enable Autonomous Software Evolution

코딩 에이전트는 일회용으로 쓰고, 소프트웨어 프로젝트 자체를 영구히 살아있게 만들어 컴파일러를 처음부터 만들게 한 실험

EvoX Genesis는 오래 사는 에이전트나 거대한 메모리를 두는 대신, '승인된 버전+경로'로 정의된 소프트웨어 세계를 영속시키고 그 안에 짧게 살다 사라지는 에이전트를 반복해서 투입하는 방식을 제안한다. DeepSeek V4 Flash로 컴파일러 구현이 전혀 없던 저장소에서 약 25만 줄 규모의 러스트 기반 C 컴파일러를 120시간 넘게 걸려 만들었고 모델 토큰 비용은 44달러였다. 같은 방식으로 GLM 5.2가 만든 컴파일러를 에이전트와 모델을 바꿔가며 이어서 개발했고, MESA 항성진화 코드 13개 모듈을 포트란에서 러스트로 다시 만들어 성능을 높이면서도 수치 결과를 그대로 유지했다.

METAL MEDIA 해설 도표

영속적 재귀 세계의 작동 구조

증거 상태측정 결과가 보고됨

  1. 승인된 버전 v + 경로 p프로젝트의 승인된 전체 상태와 역사(v)와, 에이전트가 시작하는 위치·책임 범위(p)를 함께 나타내는 로컬 소프트웨어 세계
  2. 짧게 사는 에이전트하나의 목표를 받아 후보 변경을 만들고 임무가 끝나면 사라지는 에이전트. 개인의 대화나 상태는 다음 에이전트로 이어지지 않는다
  3. 재귀적 위임상위 에이전트가 같은 버전 안에서 다른 경로에 하위 에이전트를 생성해 작업을 넘기는 과정. 버전을 즉시 바꾸지 않는다
  4. 승인 게이트상위 에이전트가 테스트·제약·통합 증거를 보고 변경을 수락, 거부, 재작업 요청 중 하나로 판단하는 단계
  5. 누적된 프로젝트 역사수락된 변경만 다음 버전으로 기록되어, 이후 투입되는 새 에이전트들이 상속받는 유일한 상태가 된다
METAL MEDIA이 원문을 바탕으로 재구성한 해설 도표이며, 논문 저자의 원문 figure가 아닙니다.

무엇을 했나

  1. 문제의식: 소프트웨어 시스템은 한 명의 코딩 에이전트가 살아있는 시간보다 훨씬 오래 개발이 이어지는데, 기존 방식은 긴 컨텍스트, 메모리, 관리자 에이전트처럼 에이전트 쪽 상태를 늘려서 연속성을 유지했다.
  2. 방법: Genesis는 '승인된 버전 v + 경로 p'로 정의되는 로컬 소프트웨어 세계를 만들고, 짧게 사는 에이전트가 이 세계에 들어와 변경을 제안하면 상위 에이전트가 테스트와 통합 증거로 수락, 거부, 재작업을 판단한다. 위임된 하위 작업(재귀적 위임)은 버전을 바꾸지 않고 경로만 옮기며, 오직 수락된 변경만 프로젝트 역사에 기록된다.
  3. 형성 실험: 컴파일러 구현이 전혀 없는 저장소에서 DeepSeek V4 Flash로 123.4시간 동안 1,019개 에이전트 에피소드를 거쳐 24만8,989줄짜리 러스트 C 컴파일러(jcc)를 만들었고, 모델 토큰 비용은 44.38달러였다.
  4. 지속 실험: GLM 5.2가 만든 완성된 컴파일러 저장소를 그대로 넘겨받아 한쪽은 GLM 5.2로, 다른 쪽은 DeepSeek V4 Flash로 이어서 개발했더니 두 갈래 모두 에이전트 교체와 모델 교체 후에도 개발이 계속됐다.
  5. 재개발 실험: MESA 항성진화 소프트웨어의 13개 모듈(포트란 약 13만9,414줄)을 DeepSeek V4 Flash로 러스트 워크스페이스(약 8만9,946줄)로 다시 작성했고, 6개 수치 작업에서 러스트 쪽이 더 빠르면서도(1.55배~6.87배) 수치는 거의 동일했다.
Figure 1: Persistent recursive worlds. a, An accepted software version can be viewed from different repository-relative paths, defining local worlds w=(v,p). The version v fixes the accepted project state and history, while the path p sets where an agent starts and what it is responsible for. Recursive delegation (v,p)↝(v,q) starts a child agent at path q without changing the accepted version v. b, A finite-lived agent receives a local objective and proposes a change. The responsible parent accepts, rejects or requests more work using tests, constraints and integration evidence. The isolated worktree is an execution workspace created from the accepted version; it is not a second software world or a partial repository in the formal model. c, Only an accepted change creates a software event (v,p)→(v′,p′) and advances the accepted version history. A rejected candidate leaves the accepted version unchanged, and the agent’s private execution state ends with the episode.
Figure 1: Persistent recursive worlds. a, An accepted software version can be viewed from different repository-relative paths, defining local worlds w=(v,p). The version v fixes the accepted project state and history, while the path p sets where an agent starts and what it is responsible for. Recursive delegation (v,p)↝(v,q) starts a child agent at path q without changing the accepted version v. b, A finite-lived agent receives a local objective and proposes a change. The responsible parent accepts, rejects or requests more work using tests, constraints and integration evidence. The isolated worktree is an execution workspace created from the accepted version; it is not a second software world or a partial repository in the formal model. c, Only an accepted change creates a software event (v,p)→(v′,p′) and advances the accepted version history. A rejected candidate leaves the accepted version unchanged, and the agent’s private execution state ends with the episode.
Table S1: Repository commits used in the three experiments.
RepositoryVersionCommit ID (SHA-1)
jccDeepSeek generated jcca8c116ec7ed3d59479ad3be8fed3e63384f50a87
jccGLM generated jcc37216cfa254a40e40af48cd528743fd7f2d6737c
jccGLM generated jcc continued with DeepSeek10077f65686102deef2c228e8a49b0569218ec48
jccGLM generated jcc continued with GLMab58a91460adb24e9349a554e02d4522d3ae2db4
mesa-rsDeepSeek ported mesa2ad071e658f8d4de21aa9f0e906592c364e10023
Figure 2: Formation of a C compiler with DeepSeek V4 Flash through recursive development. a, Growth of the jcc codebase and cumulative input-token use against elapsed time; the phase boundary separates initialization from optimization. b, Final validation across LLVM, c-testsuite, Csmith, LZ4, SQLite, Rust workspace tests and the internal compiler corpus. c, Active agents and completed episodes throughout development, with episodes distinguished by whether their contributions were retained in the final accepted repository history. d, Agent time partitioned among front-end, intermediate-representation and optimization, back-end, integration and validation, and cross-cutting work during the two phases. Dollar annotations denote model-token charges only, not total compute, infrastructure or labour cost.
Figure 2: Formation of a C compiler with DeepSeek V4 Flash through recursive development. a, Growth of the jcc codebase and cumulative input-token use against elapsed time; the phase boundary separates initialization from optimization. b, Final validation across LLVM, c-testsuite, Csmith, LZ4, SQLite, Rust workspace tests and the internal compiler corpus. c, Active agents and completed episodes throughout development, with episodes distinguished by whether their contributions were retained in the final accepted repository history. d, Agent time partitioned among front-end, intermediate-representation and optimization, back-end, integration and validation, and cross-cutting work during the two phases. Dollar annotations denote model-token charges only, not total compute, infrastructure or labour cost.
Table S2: Compiler archive and integration counts.
QuantityValue
Raw archived records1,019
Top-level agent_count field1,065
Direct missing-parent records4
Excluded descendants0
Records in reconstructed tree1,015
Initialization records312
Optimization records703
Retained929
No change78
Not integrated5
Git object unavailable3
First-parent commits327
Maximum observed delegation depth5
Peak active episodes29
Figure 3: Continuation of the same compiler world with GLM 5.2 and DeepSeek V4 Flash. a, Codebase growth and cumulative token use across initial GLM 5.2 development and the two continuations from the same completed GLM jcc world. b, Compiler validation and project growth for the three recorded snapshots. The retained LLVM SingleSource test sets differ among snapshots, so the fractions are reported within each snapshot rather than compared on one fixed test set. c, Concurrent agent activity across initial development and both continuation runs. d, Lines added and deleted during each continuation relative to the shared starting codebase. e, Cached and fresh input-token fractions and corresponding recorded or reconstructed model-token costs. The costs were obtained differently for the two continuation runs, and the runs did not use matched resources, so no normalized dollar-efficiency comparison is made.
Figure 3: Continuation of the same compiler world with GLM 5.2 and DeepSeek V4 Flash. a, Codebase growth and cumulative token use across initial GLM 5.2 development and the two continuations from the same completed GLM jcc world. b, Compiler validation and project growth for the three recorded snapshots. The retained LLVM SingleSource test sets differ among snapshots, so the fractions are reported within each snapshot rather than compared on one fixed test set. c, Concurrent agent activity across initial development and both continuation runs. d, Lines added and deleted during each continuation relative to the shared starting codebase. e, Cached and fresh input-token fractions and corresponding recorded or reconstructed model-token costs. The costs were obtained differently for the two continuation runs, and the runs did not use matched resources, so no normalized dollar-efficiency comparison is made.
Table S3: Compiler-formation resource use.
MetricObserved value
Elapsed wall time123.402 h
Raw agent-hours666.385 h
Median episode duration12.76 min
Input tokens4,134,593,954
Cached input tokens4,026,336,896
Uncached input tokens108,257,058
Cached input/input97.382%
Output tokens64,092,688
Total tokens4,198,686,642
Logged costUS$44.3760
Figure 4: Redevelopment of selected MESA modules in Rust. a, Repository growth and cumulative input-token use during the MESA-to-Rust migration. The plotted repository line count is the size of the generated repository, not the number of MESA source lines migrated. b, Mean prompt-cache hit rates for agent groups defined by total token use. c, Dependencies among the mapped modules, classified as present in both dependency graphs, absent as direct Rust crate dependencies, or newly present in Rust. d, Numerical agreement and median runtime for corresponding Fortran and Rust implementations across six audited workloads.
Figure 4: Redevelopment of selected MESA modules in Rust. a, Repository growth and cumulative input-token use during the MESA-to-Rust migration. The plotted repository line count is the size of the generated repository, not the number of MESA source lines migrated. b, Mean prompt-cache hit rates for agent groups defined by total token use. c, Dependencies among the mapped modules, classified as present in both dependency graphs, absent as direct Rust crate dependencies, or newly present in Rust. d, Numerical agreement and median runtime for corresponding Fortran and Rust implementations across six audited workloads.
Table S4: Compiler-formation resource use by phase.
PhaseRecordsWall time (h)Agent-hoursTotal tokensCost (US$)
Initialization31223.905163.9251,052,907,91213.5715
Optimization70799.497502.4603,145,778,73030.8045
Total1,019123.402666.3854,198,686,64244.3760
Supplementary Fig. S5: DeepSeek compiler-development tree. The radial tree shows the two root sessions and all 1,015 records used in the reconstructed parent–child tree after four records with missing parents were excluded. Radial distance shows delegation depth. Blue and coral show initialization and optimization; shade shows completion order within each phase. Symbols mark retained, no-change, not-integrated and Git-object-unavailable outcomes.
Supplementary Fig. S5: DeepSeek compiler-development tree. The radial tree shows the two root sessions and all 1,015 records used in the reconstructed parent–child tree after four records with missing parents were excluded. Radial distance shows delegation depth. Blue and coral show initialization and optimization; shade shows completion order within each phase. Symbols mark retained, no-change, not-integrated and Git-object-unavailable outcomes.
Table S5: Final compiler repository lines by tracked text-file type.
File typeFilesPhysical linesShare
Rust354219,67688.23%
Markdown7717,0056.83%
C source1305,0362.02%
Python143,2651.31%
C header493,1631.27%
Expected output1062710.11%
Shell31950.08%
Cargo.toml91320.05%
Makefile11010.04%
Cargo.lock1660.03%
TOML2420.02%
YAML1250.01%
.gitignore2100.00%
Info120.00%
Total750248,989100.00%
Supplementary Fig. S6: Final DeepSeek compiler repository. The final tracked repository contains 248,989 physical lines in 750 text files, including 219,676 Rust lines in 354 .rs files. a, Lines grouped by functional category. b, Line and file counts by tracked file type on a logarithmic scale. Counts include comments and blank lines and describe the whole repository, not compiler implementation alone.
Supplementary Fig. S6: Final DeepSeek compiler repository. The final tracked repository contains 248,989 physical lines in 750 text files, including 219,676 Rust lines in 354 .rs files. a, Lines grouped by functional category. b, Line and file counts by tracked file type on a logarithmic scale. Counts include comments and blank lines and describe the whole repository, not compiler implementation alone.
Table S6: Final compiler test results and limits.
TestMeasureResultRateNotes
LLVM test suitePassing cases32/3688.9%Four reported cases did not pass
c-testsuitePassing tests220/220100.0%Complete reported c-testsuite set
CsmithExecuted random programs93/93100.0%Seven of 100 seeds skipped; zero executed failures
LZ4Essential checks8/8100.0%All reported essential checks passed
SQLiteTest stages2/2100.0%Compile/link and deterministic SQL checks; not the upstream suite
Rust unit testsWorkspace count2,904 passedOne intentional ignore; no fixed external denominator
Internal corpusCompiler cases106/106100.0%86 compile-run and 20 compile-fail cases
Supplementary Fig. S7: Delegation trees for compiler continuation. The upper tree shows the 504 archived records from initial GLM development, including two root segments and depth to d5; agent roles were not recorded for this stage. The lower trees show the 97 archived GLM 5.2 continuation records and 168 archived DeepSeek V4 Flash continuation records. Distance from the centre shows delegation depth, node shape shows the recorded role where available and colour shade shows completion order.
Supplementary Fig. S7: Delegation trees for compiler continuation. The upper tree shows the 504 archived records from initial GLM development, including two root segments and depth to d5; agent roles were not recorded for this stage. The lower trees show the 97 archived GLM 5.2 continuation records and 168 archived DeepSeek V4 Flash continuation records. Distance from the centre shows delegation depth, node shape shows the recorded role where available and colour shade shows completion order.
Table S7: Compiler task and run settings.
ItemSetting
Run setupGenesis; two sequential root sessions; per-agent Git worktrees
ModelDeepSeek V4 Flash
Archived model identifierdeepseek:deepseek-v4-flash; model_id=deepseek flash
Reasoning effortxhigh
Context-compression threshold150,000 tokens
Initial codebase.gitignore and genesis.toml; no compiler implementation
Root-task inputsPhase-I compiler blueprint; Phase-II continuation with handoff summary
Turn limits2,048 root turns; 128 turns per non-root episode
Delegation and retry limitsMaximum depth 8; maximum retries 15
External test sourcesc-testsuite, LLVM test suite, LZ4 and SQLite
Generated-program testsCsmith through the committed harness
Rust toolchainRust stable; edition 2024; minimum Rust version 1.85; rustfmt and clippy
Compiler targetC11 primary and C23 stretch; x86 and x86-64 mandatory; AArch64 optional
Supplementary Fig. S8: Agent roles and delegation depth in compiler continuation. a, Role counts for the 97 archived GLM 5.2 continuation records and 168 archived DeepSeek V4 Flash records; roles were not recorded for initial development. b, Delegation-depth counts for initial development and both continuations. These counts describe archived records, not all spawned agents.
Supplementary Fig. S8: Agent roles and delegation depth in compiler continuation. a, Role counts for the 97 archived GLM 5.2 continuation records and 168 archived DeepSeek V4 Flash records; roles were not recorded for initial development. b, Delegation-depth counts for initial development and both continuations. These counts describe archived records, not all spawned agents.
Table S8: Machine and software environment for the compiler experiments.
ItemRecorded value
CPUAMD Ryzen 7 PRO 6850HS with Radeon Graphics
CPU layoutx86-64; one socket; 8 physical cores; 2 threads per core; 16 online logical CPUs
Memory64 GB
CPU frequency403.7300–4787.0820 MHz; frequency boost enabled
Cache256 KiB L1d, 256 KiB L1i, 4 MiB L2 and 16 MiB L3 in aggregate
NUMAOne node containing CPUs 0–15
Container and hostArchLinux container; NixOS-built Linux 6.18.39 host kernel
FilesystemZFS with copy-on-write worktrees
Tool isolationsystemd-run and cgroups for every agent tool call
Missing reproduction fieldsContainer digest, package lock, per-tool cgroup limits, exact Rust/linker revisions and host-load traces
Supplementary Fig. S9: Physical line counts during compiler continuation. Tracked Rust, Cargo.toml, Markdown and shell lines are shown for the initial GLM compiler and the two continuation results. The horizontal axis is logarithmic so that small project-control files remain visible. Counts include blank lines.
Supplementary Fig. S9: Physical line counts during compiler continuation. Tracked Rust, Cargo.toml, Markdown and shell lines are shown for the initial GLM compiler and the two continuation results. The horizontal axis is logarithmic so that small project-control files remain visible. Counts include blank lines.
Table S9: Compiler-continuation starting points and run settings.
SettingInitial developmentGLM continuationDeepSeek continuation
Model pathNew project → GLM 5.2GLM compiler → GLM 5.2Same GLM compiler → DeepSeek V4 Flash
Starting stateEmpty tracked projectCompleted compiler at 37216cfa254aSame completed compiler at 37216cfa254a
TaskBuild new compilerContinue existing compilerContinue existing compiler
Root roleNot recordedManagerManager
Depth and retry limits8; 158; 158; 15
Turn limits2,048 root; 128 delegated2,048 root; 128 delegated2,048 root; 128 delegated
Compression threshold150,000 tokens150,000 tokens150,000 tokens
Test familiesRust, LLVM, c-testsuite, LZ4, SQLiteSame familiesSame families
CsmithRequested; unavailableExcludedExcluded
Runs111
Shared fixed budgetNot specifiedNot specifiedNot specified
Supplementary Fig. S10: Module-level source line counts for MESA and Rust. For each of the 13 mapped modules, physical Fortran lines in the module directory, including local test programs, are compared with Rust library lines and Rust library-plus-crate-test lines. The logarithmic axis shows both larger and smaller ports. Counts include comments and blank lines and do not imply feature equivalence.
Supplementary Fig. S10: Module-level source line counts for MESA and Rust. For each of the 13 mapped modules, physical Fortran lines in the module directory, including local test programs, are compared with Rust library lines and Rust library-plus-crate-test lines. The logarithmic axis shows both larger and smaller ports. Counts include comments and blank lines and do not imply feature equivalence.
Table S10: Run summary for compiler continuation.
MetricInitial GLMGLM continuationDeepSeek continuation
Elapsed time (h)136.5621.9917.10
Spawned Agents56298178
Archived records50497168
Archive coverage89.7%99.0%94.4%
First-parent commits6198831
Maximum observed depth548
Peak active Agents21919
Mean active Agents2.862.945.70
Summed Agent-hours390.5764.6597.57
Median duration (min)14.416.117.0
90th-percentile duration (min)83.259.870.2
Code-changing records47990160
No-change records2578
Supplementary Fig. S11: Accepted Rust source changes over time. First-parent Git activity is shown for the 13 migrated crates during the 33.22-h run. Colour intensity represents log⁡(1+added+deleted) lines. The dashed line marks the root-level handoff at 31.72 h. Blank intervals mean that no first-parent source change was accepted at the plotted resolution; analysis or testing may still have been active.
Supplementary Fig. S11: Accepted Rust source changes over time. First-parent Git activity is shown for the 13 migrated crates during the 33.22-h run. Colour intensity represents log⁡(1+added+deleted) lines. The dashed line marks the root-level handoff at 31.72 h. Blank intervals mean that no first-parent source change was accepted at the plotted resolution; analysis or testing may still have been active.
Table S11: Archive coverage for compiler continuation.
StageSpawnedArchivedCoverageMissing-parent issue
Initial development56250489.7%Six absent parent IDs referenced by 15 records
GLM continuation989799.0%Two records reference absent parent 562
DeepSeek continuation17816894.4%No missing-parent reference among archived records
Supplementary Fig. S12: Concurrent agent episodes during migration. Active archived episodes are reconstructed at one-minute resolution and stacked by recorded role. The maximum overlap was 22 episodes. The plot uses archived start and finish times and does not show CPU use.
Supplementary Fig. S12: Concurrent agent episodes during migration. Active archived episodes are reconstructed at one-minute resolution and stacked by recorded role. The maximum overlap was 22 episodes. The plot uses archived start and finish times and does not show CPU use.
Table S12: Token use and cost in compiler continuation.
MetricInitial GLMGLM continuationDeepSeek continuation
Input tokens2,245,871,926543,563,883902,775,744
Cached input tokens2,163,779,584534,150,656884,375,552
Fresh input tokens82,092,3429,413,22718,400,192
Cached input/input96.34%98.27%97.96%
Output tokens19,334,8863,702,6978,704,733
Total tokens2,265,206,812547,266,580911,480,477
Input cost (US$)677.511916152.0576885.052314
Output cost (US$)85.07365916.2918672.437395
Total cost (US$)762.585575168.3495557.489709
Table S13: Tests reported at the end of compiler continuation.
Test targetInitial developmentGLM continuationDeepSeek continuation
Rust unit tests1,1361,226 (+90)1,350 (+214)
LLVM SingleSource1,558/1,870 (83.3%)1,445/1,448 (99.79%)1,820/1,820 (100%)
c-testsuite220/220220/220220/220
LZ44/4 files4/4 files4/4 files
SQLite at -O0Basic run passedCompiledCompiled, linked and ran
CsmithUnavailableExcludedExcluded
Table S14: Physical line counts for the compiler-continuation snapshots.
Included file typeTask 1GLM 5.2DeepSeek V4 Flash
Rust94,253104,264117,409
Cargo.toml202202202
Markdown10,32511,87614,718
Shell640649825
Total105,420116,991133,154
Table S15: MESA-to-Rust run and timing settings.
QuantityValue
ModelDeepSeek V4 Flash
Model settingsxhigh reasoning; 150,000-token compression threshold
Recorded agent rolesCodebase lead, manager, executor and codebase investigator
Controller limitsMaximum depth 8; retries 15; 2,048 root turns and 128 child turns
Source baselineModified MESA fork, commit 461dcba94f33
Timing hostShared Intel Xeon Platinum 8336C system; 64 physical cores / 128 hardware threads; benchmark processes pinned to CPUs 0–3
Timing runs25 direct-binary runs per workload after warm-up; separate 40-run burn-proxy check
Fortran buildgfortran 12.2.0; -O3 -march=native -ffp-contract=fast -std=f2008
Rust buildopt-level=3; fat LTO; codegen-units=1; panic=abort
Table S16: MESA-to-Rust resource use and archive coverage.
QuantityRecorded value
Experiment interval3–5 August 2026 (UTC)
Elapsed wall time33.219 h
Root-agent handoff31.720 h
Spawned agents272
Archived agent records260
Archive coverage95.6%
Input tokens771,755,551
Cached input tokens744,102,016
Cached input share96.4168%
Output tokens16,721,326
Total tokens788,476,877
Recorded model-token costUS$10.636892
Table S17: Module-level source line counts for MESA and mesa-rs.
LayerModuleFortran LOCRust libRust testsRust totalFortran/Rust
Foundationconst308836909260.33
Foundationutils3,5691,3843701,7542.03
Foundationmath1,0201,4748072,2810.45
Foundationmtx5,2068,2441,7289,9720.52
Foundationinterp_1d5,8512,0029372,9391.99
Foundationinterp_2d16,1765,5921,3006,8922.35
Foundationnum18,35710,2253,07813,3031.38
Physicschem4,4243,7539004,6530.95
Physicsrates18,54712,3044,97517,2791.07
Physicsneu2,2632,2229953,2170.70
Physicsnet17,79916,3322,42918,7610.95
Physicseos25,8171,4261,5142,9408.78
Physicskap20,0771,5798322,4118.33
AllTotal139,41467,37319,95587,3281.60
Table S18: Numerical agreement and runtime performance for six migrated workloads.
WorkloadFortran (s)Rust (s)SpeedupChecksum difference
End-to-end burn0.4460.2871.55×3.1×10−9
EOS lookup1.7861.1151.60×Bit-exact
Opacity lookup0.5320.2691.98×1.3×10−13
2D interpolation0.1590.1011.58×4.9×10−12
ROS2 integration0.7220.1365.30×5.1×10−15
Newton solve0.0840.0126.87×Bit-exact
Table S19: Separate 40-run timing check for the burn proxy.
StatisticFortran (s)Rust (s)Fortran/Rust
Minimum0.28970.23721.22×
P100.29220.23851.22×
P250.29270.23921.22×
Median0.29960.24271.23×
Mean0.34470.27351.26×
P750.44160.36091.22×
P900.44580.37291.20×
Maximum0.44900.38151.18×
Table S20: Mapped dependency counts for MESA and mesa-rs.
CategoryEdgesInterpretation
MESA142Provider-to-dependent edges parsed from INTERNAL_DEPENDS_ON
mesa-rs41Mapped crate dependencies parsed from Cargo.toml
Retained40Edges present in both mapped graphs
MESA-only102No matching direct Rust crate dependency in the mapped graph
Rust-only1Dependency introduced in mesa-rs
Table S21: What each experiment supports and what remains unresolved.
ExperimentWhat else could explain the resultEvidence in this studyWhat the result supports
Compiler formationThe task specification and model knowledge may explain part of the resulting organizationRepository with no compiler implementation, a 1,015-record reconstructed parent–child tree, repository counts and seven test familiesOne observed run formed and broadly tested a working compiler; no repeated mechanism test
Compiler continuationModel differences, unequal resource use or the source code alone may explain the observed continuationSame saved GLM starting world and instruction, but one run per path, different resource use, different LLVM case lists and no code-only or fresh-agent controlThe same completed compiler was continued with GLM 5.2 and DeepSeek V4 Flash
MESA migrationLimited module and workload coverage and the timing setup may explain part of the resultThirteen mapped module directories, 13 Rust crates, six 25-run workload summaries and a separate 40-run burn-proxy summaryNumerical agreement on the tested workloads and lower measured runtimes under the reported setup
Table S22: Observed failures, missing records and how they are handled.
ExperimentObserved issueHow it is handled
Compiler formationFour direct missing-parent records; four of 36 reported LLVM cases did not pass; seven of 100 Csmith seeds were skippedRows with missing parents are excluded only from the parent–child tree; non-passing and skipped test cases remain in the reported denominators
Compiler continuationGLM 5.2 passed 1,445/1,448 on its retained LLVM manifestThe exact count is reported. No cause is claimed for the three non-passing cases because per-case diagnostics are unavailable
Continuation archivesArchive coverage is 89.7% for initial GLM development, 99.0% for GLM continuation and 94.4% for DeepSeek continuationParent–child, role, depth and concurrency summaries use only the archived records available for each stage
MESA numerical checksFour of six tested workloads have small non-zero checksum differences; the module and workload coverage is incompleteThe numerical differences and coverage limits are reported directly; no claim of complete MESA equivalence is made
MESA timing checksOne noisy interleaved end-to-end timing run favoured Fortran (0.82× Rust/Fortran speed ratio), whereas the dedicated 40-run summary favoured Rust at 1.23× medianBoth observations are reported; runtime claims are limited to the reported host and timing setup and are not generalized to Rust versus Fortran
MESA line countsIndependent workspace counting paths differ by one physical Rust line (89,946 versus 89,945)The discrepancy is reported and is not used in the main comparison; the mapped 13-crate total of 87,328 lines is the comparison value

실제로 확인된 결과

  • 컴파일러 형성: 123.4시간, 1,019개 에이전트 에피소드, 24만8,989줄 저장소, 모델 토큰 비용 44.38달러, c-testsuite 220/220, LLVM 32/36, Csmith 93/93, 러스트 워크스페이스 테스트 2,904개 통과.
  • 컴파일러 지속: 같은 GLM 5.2 컴파일러 저장소에서 GLM 5.2 계속 개발은 자체 LLVM 테스트셋 1,445/1,448 통과, DeepSeek V4 Flash로 교체한 계속 개발은 1,820/1,820 통과. 단 두 테스트셋이 서로 다르고 자원 사용도 다르므로 직접 비교는 아니다.
  • MESA 재개발: 33.22시간, 272개 에이전트, 러스트 워크스페이스 8만9,946줄, 1,052개 테스트 통과(무실패, 18개 무시), 모델 토큰 비용 10.64달러.
  • 6개 수치 작업 중 EOS 조회와 뉴턴 해법은 비트 단위로 완전히 일치했고, 나머지 4개는 상대 체크섬 차이가 5.1×10⁻¹⁵~3.1×10⁻⁹ 수준으로 매우 작았으며, 러스트가 모든 작업에서 더 빨랐다(1.55배~6.87배).
  • 40회 반복한 별도 연소(burn) 검증에서는 포트란 0.2996초, 러스트 0.2427초로 1.23배 차이였고, 두 구현의 적분 스텝 수 등 핵심 지표는 동일했다.

어디에 쓸 수 있나

  • 오랜 기간 여러 사람·모델이 교대로 참여해야 하는 대규모 저장소 개발에 프로젝트 중심 지속성 모델을 적용해볼 수 있다.
  • 레거시 과학 소프트웨어(포트란 등)를 다른 언어로 이전하면서 기존 수치 검증 결과를 유지해야 하는 작업에 참고할 수 있다.
  • 특정 파운데이션 모델에 종속되지 않고 모델을 교체하면서도 기존 코드베이스 개발을 이어가야 하는 상황에 시사점을 준다.

한계와 남은 검증

  • 보고된 실험은 각각 1회 실행(컴파일러 형성 1회, 지속 2갈래, MESA 1회)으로, 반복 실행 시 성공률이나 재현성은 추정되지 않았다.
  • 지속 실험의 두 갈래(GLM 5.2, DeepSeek V4 Flash)는 테스트셋과 자원 사용이 서로 달라 모델 간 성능 비교로 해석할 수 없다.
  • MESA 재개발은 star, astero, binary 등 상위 엔진과 전체 EOS 블렌드, REACLIB 데이터셋 전체를 포함하지 않은 13개 핵심 모듈에 한정된다.
  • 포트란과 러스트의 타이머 구현이 서로 다르고(system_clock/cpu_time vs Instant) 호스트 부하에 민감해, 속도 비교는 이 특정 빌드·환경에 한정된 결과다.
  • 재귀적 위임이나 승인 절차 같은 구성 요소가 실제로 결과에 필수적인지 가르는 인과 실험(코드는 고정하고 비코드 기록만 바꾸는 실험 등)은 아직 수행되지 않았다.

왜 중요한가

이 결과는 에이전트 하나를 오래 살리는 대신 '프로젝트 자체'를 영속시키는 조직화 방식으로도 사람이 개입하기 어려운 장기 소프트웨어 개발을 이어갈 수 있음을 보여준다. 대규모 코드베이스를 다루는 개발자나 연구자에게는, 에이전트 교체나 모델 교체가 곧 개발 중단으로 이어지지 않게 만드는 새로운 설계 축을 제시한다는 점에서 의미가 있다.

이 논문의 용어

  • EvoX Genesis · 논문이 제안하는 시스템 이름. 소프트웨어 프로젝트를 '영속적 재귀 세계'로 표현해 에이전트가 짧게 살아도 개발이 이어지게 한다
  • 영속적 재귀 세계 (persistent recursive world) · 승인된 버전과 저장소 경로 쌍으로 정의되는 로컬 작업 공간. 버전은 유지되고 경로를 통해 새 에이전트가 반복 투입된다
  • 재귀적 위임 · 상위 에이전트가 같은 버전 안에서 다른 경로에 하위 에이전트를 만들어 작업을 넘기는 것. 이 과정 자체는 프로젝트 버전을 바꾸지 않는다
  • MESA · 별의 진화를 1차원으로 계산하는 오픈소스 천체물리 소프트웨어 모음(Modules for Experiments in Stellar Astrophysics)
  • c-testsuite / Csmith · C 컴파일러의 정확성을 검증하는 데 쓰이는 외부 테스트 모음 및 무작위 C 프로그램 생성기

저자 · Beichen Huang

arXiv에서 원문 보기

최신 논문

논문 전체 보기 →

METAL MEDIA 최신 기사

그림 출처: Beichen Huang et al., arXiv:2608.10450, arxiv-nonexclusive