-
Notifications
You must be signed in to change notification settings - Fork 0
File Based Body Run
2026-10-04. 최초 파일 실행은 개발 #1186·main #1187에서 확인했습니다.
작은 예제는 개발 #1200·
main #1201의 자체 CI·독립 증거와
정상 병합 뒤 깨끗한 main 01d21e92를 Go1.27.1로 설치했습니다. 아래 가장 작은
예제의 새 생성 2회·실행 4회에서 6/6과 원래 생성 Go가 일치했습니다. 한영 모델·
결정론도 새 생성 8회·판단 4회·실행 16회에서 1,024/1,024를 유지했습니다.
최신 설치·지원 범위는 현재 상태에 기록합니다. 기본 실행은 이미 설치한 Go1.27.1을 찾아 사용합니다. 자동 도구 선택에는 실제 설치 형태에서 확인한 생성·실행 결과와 도구 선택 순서가 있습니다.
원본 Gooo는 설계도, 레시피는 허용한 조립 순서, 기대값은 결과를 확인하는 작은 측정표입니다. 컴파일러가 바디를 조립하면 곧바로 Go로 빌드해 현재 입력을 두 번 실행합니다. 같은 바디가 다시 만들어지면 확인한 실행파일 한 개를 재사용합니다. 현재 입력과 기대값은 새로 검사합니다.
활동 안에 assembling을 작성하면 원본이 조립 계획을 함께 제공합니다.
저장소의 범위 분기 예제는 외부 계획 옵션 없이 실행할 수 있습니다.
gooo body-path-run \
--source examples/body-codegen/source-assembly.gooo.fixture \
--activity Clamp \
--cases examples/body-codegen/source-assembly-clamp-cases.json \
--repeat 2 --timing --out clamp-results선언 문법·모델 연결·유한 충족 지표를 함께 읽을 수 있습니다.
안내한 컴파일러 소스를 Go 1.27.1로 빌드하고 gooo를 PATH에 둡니다.
컴파일러 저장소 루트에서 다음 명령을 실행합니다.
gooo version --build
gooo body-path-run \
--source examples/body-codegen/typed-path-compound.gooo.fixture \
--activity Combined \
--path-plan examples/body-codegen/typed-path-compound-plan.json \
--cases examples/body-codegen/typed-path-runtime-cases.json \
--repeat 2 --out combined-results--out은 새 폴더 이름입니다. 이미 있는 경로를 주면 이유를 표시하고 종료합니다.
기본 실행은 PATH, 컴파일러의 로컬 GOROOT, 정확한 도구체인 캐시 경로 순으로
Go1.27.1을 확인합니다. 이미 설치된 도구를 사용하며 새 도구를 내려받지 않습니다.
원하는 도구가 있으면 --go-bin /path/to/go1.27.1/bin/go를 명시할 수 있습니다.
과거 설치 관측에서 간편 설치본은 모듈 버전을 기록하고 Git 소스 항목은 미연결이었습니다.
깨끗한 Git 체크아웃에서 빌드한 실행기는 main 4f6c7566을 기록했고, 지정한 도구로
같은 두 요청의 16/16 기대값을 확인했습니다.
설치 비교·기본 Go1.26.5 오류·저장 결과 재검산.
공구 경로 오류와 미관측 기대값은 실패와 다시 실행하기에 설명했습니다.
완료 0/128과 실행 전 unobserved에서 다음 작업을 고르는 법은
기대값과 관측 읽기에 있습니다.
이 예제는 변수 선택, 조건 분기와 선언 순서를 조립하는 Integer→Integer 과제입니다.
기존 파일을 바로 쓰는 작은 예제도 있습니다. 공개 연구 저장소 루트에서 별도 입력 준비 없이 다음 한 명령으로 조립하고 실행합니다.
gooo body-path-run \
--source examples/whole-candidate-order/source.gooo --activity Compose \
--path-plan examples/whole-candidate-order/recipe.json \
--cases examples/whole-candidate-order/cases.json \
--model publication/order-judge-initial-20261003/model.json \
--repeat 2 --timing --out order-model-results--model을 빼고 새 출력 폴더를 주면 결정론적으로 실행합니다. 깨끗한 후보
2420ad19에서 두 조건의 생성 4회·실행 8회가 기존 기대값 32/32를 충족했고
같은 Go로 조립됐습니다. 명령·전체 원본·현재 출력 재검산.
128개 기대값으로 확장한 한영 파일을 준비하는 방법은 다음과 같습니다.
공개 연구 저장소의 루트에서 다음 명령을 실행합니다. 공개 16 KiB 모델이 이 저장소에 포함돼 있습니다.
go run ./examples/file-body-run examples/whole-candidate-order file-body-inputs
gooo body-path-run --source file-body-inputs/ko-source.gooo \
--activity AssembleKorean --path-plan file-body-inputs/ko-recipe.json \
--cases file-body-inputs/cases-128.json \
--model publication/order-judge-initial-20261003/model.json \
--repeat 2 --out korean-body-results첫 명령은 고정 배열의 128개 기대값과 활동 이름을 바꾼 한영 파일을 준비합니다.
두 번째 명령에서 컴파일러가 실제 모델 판단, 바디 생성과 실행을 담당합니다.
--model을 생략하면 결정론적으로 조립합니다. 영어 파일은 en-source.gooo,
en-recipe.json, 활동 이름은 AssembleEnglish입니다. 현재 모델은 허용된 두
정수 연산의 순서를 포함한 여덟 후보를 비교합니다.
공유 FP32 모델의 정보 JSON과 가중치 두 개를 받습니다. 컴파일러 저장소 루트에서
아래 기존 변수·분기 예제를 실행합니다. hf 도구와 Go1.27.1이 필요합니다.
hf download asketeddy/gooo-shared-judgment-tiny-v1 \
--revision 7c2781cbbcf81edba89a50d0423276c042b082de \
--include 'research/compact-runtime-20261003/models/fp32/*' \
--local-dir ./gooo-models
gooo body-path-run \
--source examples/body-codegen/typed-path-compound.gooo.fixture \
--activity Combined \
--path-plan examples/body-codegen/typed-path-compound-plan.json \
--cases examples/body-codegen/typed-path-runtime-cases.json \
--model gooo-models/research/compact-runtime-20261003/models/fp32/model.json \
--repeat 2 --timing --out compound-model-results
gooo body-path-run --verify-timing --out compound-model-results--local-dir로 실제 일반 파일을 준비하고 같은 폴더에 정보와 가중치를 둡니다.
이 SDK 프로필은 모델 파일의 심볼릭 링크를 거부합니다. 소스·레시피 파일의 규칙은
파일 종류와 오류 읽기에서 따로 확인합니다.
실제로 내려받은 파일의 지문이 공개 FP32 원본과 같음을 확인했고, 후보 2420ad19에서
생성 2회·모델 판단 2회·실행 4회가 6/6을 충족했습니다. 첫/재사용 응답은
884.41/70.44ms입니다. 요청 해석·생성·실행 구간이며 모델 최초 준비와 저장·출력은
별도입니다. 기존 두 예제를 실행하는 사용법 확인으로, 추가 학습과 새 의도 과제는
0개입니다. 현재 배포 단계는 지원 상태에 연결합니다.
새 설치본 main 4f6c7566에서도 같은 다운로드 예제의 판단 2회·실행 4회·6/6을
확인했습니다. 첫/재사용 응답 1188.19/75.38ms와 전체 파일을 별도로 보존했고,
저장 파일 지문 검증도 통과했습니다. 각 시점의 첫 응답을 함께 읽습니다.
| 파일 | 확인할 내용 |
|---|---|
source.gooo, recipe.json, cases.json
|
이 요청에 실제 사용한 원본·계획·기대값 |
run-N-generated.go |
실제 생성한 Go 함수 |
run-N-response.json |
선택·생성·실행의 원본 결과 |
run-N-generation.json |
유한 후보 탐색, 모델 판단과 생성 기록 |
run-N-runtime.json |
실제 출력, 소스·부모 연결, 빌드와 두 실행 관측 |
summary.json |
요청별 상태, 충족 수·분모, 실제 실행 수와 재사용 여부 |
결과를 저장한 뒤 화면에 내보내고 다음 요청을 시작합니다. 생성 거부와 부분 실행
실패도 기록합니다. 미충족 기대값을 포함한 관측이 완료되면 종료 코드 0입니다.
자동화에서는 summary.json의 passed와 total을 함께 읽습니다. 생성 거부·실행
오류는 1, 사용법 오류는 2입니다.
response_ms는 요청 해석·생성·실행을 포함하고 최초 모델 준비와 파일 저장·출력을
제외합니다. 내부 생성·실행 시간은 응답 시간의 일부입니다. 현재 자식 CPU·RSS와
과거 빌드 비용, 모델 가중치 크기는 각각 다른 관측입니다.
--options options.json의 관측 설정으로 후보를 구별할 입력을 고를 수 있습니다.
별도 순수 Gooo 활동을 oracle로 선언하면 그 입력의 기대값을 관측해 후보를 줄입니다.
레시피의 한 예시에서 두 후보가 남은 실험에서는 원본이 0/2 기대값을 충족했고,
추가 관측으로 후보를 하나로 정해 2/2를 충족했습니다. 선택·탐색에 사용하지 않은
두 입력도 별도로 확인했습니다. 이 경로는 후보가 하나여서 모델 판단을 생략했습니다.
CI 문맥을 사용하는 피드백에는 지원 모델, step_attempts, feedback_rounds가
필요합니다. 현재 전체 후보 순서 모델은 기본 유한 탐색을 사용하고 CI 피드백·배치
옵션을 거부합니다. 원본 확인과 실제 실행은 현재 요청에서 수행합니다.
지원 범위는 순수 Integer→Integer 바디, 실행 입력 1..128개, 순차 반복 1..16회입니다.
owned runtime v2를 읽는 소비자 수정은 main #1189에
병합해 main 05746e4a로 설치했습니다. 저장한 생성·실행 파일을
completeness-delta --before ... --after ...에 전달할 수 있습니다.
비교 명령과 결과 읽기.
한영·모델·결정론 네 조건을 두 번씩 조립했습니다. 128개 정수 입력의 기대값을 요청마다 다시 검사해 8회 생성·실제 모델 판단 4회·실제 실행 16회와 1,024/1,024 기대값을 확인했습니다. 같은 정수 연산 과제에서 얻은 유한 관측입니다. 별도의 조건 분기·변수 선택 예제는 2회 생성·4회 실행에서 6/6을 충족했습니다.
반복 응답은 28.55–33.09ms였습니다. 최초 모델 응답 496.27ms·474.29ms도 함께 기록했습니다. 반복 때 현재 자식 CPU 합은 8.83–10.96ms, 최대 단일 자식 RSS는 약 14.24–14.42MB였습니다. 이전 빌드·모델 자체의 메모리· 전체 호스트 CPU는 이 값에 포함하지 않습니다.
기대값 하나를 바꾼 요청의 127/128과 모호한 원본의 0/4도 보존했습니다. 관측으로 유일 후보가 된 경로는 모델 판단 0회로 조립했습니다.