Writing a Repair Program - kimjooyoon/meta-ontology-go GitHub Wiki
2026-10-03 ์๋ด: ์๋ ์์ ์ ๊ด์ธก์ ๊ฐ ์ ์ ๊ณ ์ ๋ ์์คยท๋๊ตฌ์ฒด์ธ์ ๊ธฐ์ค์ผ๋ก ์ฝ์ต๋๋ค. ์ต์ ๋ฐ๋ ์์ฑ๊ณผ ์์ฒด ์ํ ๋ชจ๋ธ์ ํ๋ฆ์ ๋ชจ๋ธ๊ณผ ๋ฉํํ๋ก๊ทธ๋๋ฐ, ์ง๊ธ ์ฌ์ฉํ ๋ฒ์ ์ ํ์ฌ ์ํ์ ์์ํ๊ธฐ์ ์ ๋ฆฌํ์ต๋๋ค.
Gooo ์์ ํ๋ก๊ทธ๋จ์ ์ด๋ ์ ๋ ฅ์ ์ด๋ค ๋ณ๊ฒฝ์ ์ ์ํ ์ง๋ฅผ ์ ์ธํฉ๋๋ค. ์ปดํ์ผ๋ฌ๋ ์ ์ธ์ ์ฐ๊ฒฐ๋ ์ฝ๋๋ฅผ ๋ง๋ค์ง๋ง, ๊ทธ ์ฝ๋์ ์ฑํ๊น์ง ์ค์ค๋ก ์น์ธํ์ง๋ ์์ต๋๋ค.
์ด ๊ฐ์ด๋์์๋ ์ ์ฑ ์์ฑ ํ๋กํ์ ์ฌ๋์ฉ ์ถ๋ ฅ์ด ์คํจํ๋๋ฐ๋ ์ฑ๊ณต์ผ๋ก ๋๋๋ ๋์์ ๋ค๋ฃน๋๋ค. ๊ฐ์ ํจ์์ ์ด๋ฏธ ์๋ ์ถ๋ ฅ ์ค๋ฅ ์ฒ๋ฆฌ ๋ธ๋ก์ ์ ํํด ์์ ํ๋ณด๋ฅผ ๋ง๋ญ๋๋ค. ์์์ Go ์ฝ๋๋ฅผ ์์์ ๊ณ ์น๋ ๋ฒ์ฉ ๋๊ตฌ๋ฅผ ์ค๋ช ํ๋ ๋ฌธ์๋ ์๋๋๋ค.
์ด ์ค์ต์ ๊ธฐ์ค์ ๊ฐ๋ฐ ๋ธ๋์น์ ๋ณํฉ๋ #854์ ๋ฒ์
1c0d251๊ณผ Go 1.27.0์ ๋๋ค. ๊ณต๊ฐ ๋ฆด๋ฆฌ์ค ์ ์ฒด์ ์ง์ ์ฝ์๊ณผ๋ ๊ตฌ๋ถํฉ๋๋ค.
| ์ง๋ฌธ | ์ด ์ค์ต์ ๋ต |
|---|---|
| ๋ฌด์์ ์ ๋ ฅํ๋์? | Gooo ์์ ์ ์ธ๊ณผ ๊ณ ์ ๋ ์๋ณธ Go ํ์ผ |
| ๋ฌด์์ ์ป๋์? | ์์ฑ๋ Go ์ฝ๋์ ๊ทธ ์ถ์ฒ๋ฅผ ๋ด์ JSON |
| ์๋ณธ์ด ์๋์ผ๋ก ๋ฐ๋๋์? | ์๋๋๋ค. ์ ์ฉยท์คํยท์ฑํ์ ๋ณ๋ ์์ ์ ๋๋ค. |
์ฒ์๋ถํฐ ๋๊น์ง ํ ํ๋ฆ์ ์ฝ๊ณ ์ถ๋ค๋ฉด ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋ ์์ฑ ์ค์ต์ ๋จผ์ ๋ณผ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ ์ธ์ ์ด๋ป๊ฒ ์ ํํ๊ณ ํด์ํ๋๊ฐ์ ์ง์คํฉ๋๋ค.
๋ค๋ฅธ ์์ ๊ณผ ๋ถ๋ฆฌ๋ ์ฒดํฌ์์์์ ๋ค์ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
git clone https://github.com/kimjooyoon/meta-ontology-go.git gooo-repair-lab
cd gooo-repair-lab
git checkout 1c0d2519c6c80da127b57b932e1b280ef4676c77์
๋ ฅ์ internal/meta/policycompilation/testdata/go-error-guard/profile-original.go.golden์
๋๋ค. ์ค์ ๊ณผ๊ฑฐ ๊ณต๊ฐ CLI ๊ตฌํ์ ๋ณด์กดํ ์๋ณธ์ด๋ฉฐ, ํ์ฌ ์ฝ๋๋ฅผ ์ผ๋ถ๋ฌ ๋ง๊ฐ๋จ๋ ค ๋ง๋ ์
๋ ฅ์ด ์๋๋๋ค.
์ด ํ์ผ์ ์ฐ๊ฒฐ๋ ์๋ณธ ์๋ณ๊ฐ์ sha256:7ee9cec15457d359c3df81d5ea54131c72a5eb909496500bbfdb91ac1bdfbc7a์
๋๋ค. ๋ค๋ฅธ ํ์ผ์ ๋ฃ๊ณ ์ด ์๋ณ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์๋ณธ ๋ถ์ผ์น๋ก ๊ฑฐ์ ๋์ด์ผ ํฉ๋๋ค.
work="$(mktemp -d)"
cat > "$work/guard.gooo" <<'GOOO'
package goerrorguard
namespace goerrorguard
entity Source id "gooo://error-guard/source"
entity Candidate id "gooo://error-guard/candidate"
activity GuardWrite(Source) -> Candidate computes "go-error-guard:v2;function=runMetaPolicyGenerationProfile;writer=stdout;writer-type=interfaceWriter;source=sha256:7ee9cec15457d359c3df81d5ea54131c72a5eb909496500bbfdb91ac1bdfbc7a;handler=sha256:bc804b799d7c744cba976e1c83f66751fc4485ccc2840129d6fe35782e8affdb"
GOOO๋ฌธ์์ด์ด ๊ธธ์ง๋ง, ์ ์ธํ๋ ์ ํ์ ๋ค์ฏ ๊ฐ์ง์ ๋๋ค.
| ์ ํ | ์ด ํ๋ก๊ทธ๋จ์ ๊ฐ | ์ ํ์ํ๊ฐ์? |
|---|---|---|
| ํจ์ | runMetaPolicyGenerationProfile |
๋ค๋ฅธ ํจ์๊น์ง ๊ณ ์น์ง ์๋๋ก ๋์์ ํ์ ํฉ๋๋ค. |
| ์ถ๋ ฅ ๋งค๊ฐ๋ณ์ | stdout |
์ด๋ค ์ถ๋ ฅ์ ๋ฒ๋ ค์ง ์ค๋ฅ๋ฅผ ๋ค๋ฃฐ์ง ์ ํฉ๋๋ค. |
| ๋ก์ปฌ writer ํ์ | interfaceWriter |
์ด๋ฆ๋ง ๋น์ทํ ์์ ํ์ ์ ์ถ๋ ฅ ๋์์ผ๋ก ์ถ์ธกํ์ง ์์ต๋๋ค. |
| ์๋ณธ ์๋ณ๊ฐ | source |
์ด๋ค ์๋ณธ ๋ฐ์ดํธ๋ฅผ ์ ์ ๋ก ํ ์์ฒญ์ธ์ง ๊ณ ์ ํฉ๋๋ค. |
| ๊ธฐ์กด ์ฒ๋ฆฌ ๋ธ๋ก ์๋ณ๊ฐ | handler |
๊ฐ์ ธ์ฌ ์ค๋ฅ ์ฒ๋ฆฌ ๋ธ๋ก์ ๊ณ ์ ํฉ๋๋ค. |
Source์ Candidate๋ ์
๋ ฅ๊ณผ ์์ฑ๋ฌผ์ ๋ํ๋ด๊ณ , GuardWrite ํ๋์ด ๋์ ์ฐ๊ฒฐํฉ๋๋ค. ๊ธฐ์กด Gooo ํ๋ฐํธ์๋๋ ์ด๋ฅผ ์๋ฏธ ๋ชจ๋ธ์ธ IR๋ก ๋ด๋ฆฝ๋๋ค. ์ปดํ์ผ๋ฌ๋ ๊ทธ ๋ชจ๋ธ์ ์
๋ ฅ ์ฌ์ฉยท๊ฒฐ๊ณผ ์์ฑ ๊ด๊ณ์ ์ค์ ์์ ํ๋์ด ๋ง๋์ง ํ์ธํฉ๋๋ค.
go-error-guard:v2๋ ์๋ฌด ๋ฒ์ ๋ฒํธ๋ ๋ถ์ด๋ ํ์ง๊ฐ ์๋๋๋ค. ์ ํํ ๊ท์น์ ์๋ฏธ์ ์ง์ ๋ฒ์์
๋๋ค. ๋ค๋ฅธ ํํ์ ์ฝ๋๋ฅผ ํต๊ณผ์ํค๋ ค๊ณ v1์ ์๋ฏธ๋ฅผ ์๋ฌต์ ์ผ๋ก ๋ฐ๊พธ๋ ๋์ , ๋ณ๋ ํ๋กํ์ ์ ํํฉ๋๋ค.
go run ./examples/meta-policy-compilation/go-error-guard \
-program "$work/guard.gooo" \
-source ./internal/meta/policycompilation/testdata/go-error-guard/profile-original.go.golden \
> "$work/proposal.json"์ด ์ด๋ํฐ๋ ์ ๋ ฅ์ ์ฝ๊ณ JSON์ ํ์ค ์ถ๋ ฅ์ผ๋ก ๋ด๋ณด๋ ๋๋ค. ์ ์์์๋ ํธ์ถ์๊ฐ ์ง์ ํ ๋ฆฌ๋ค์ด๋ ์ ์ด ์์ ๊ฒฐ๊ณผ ํ์ผ์ ๋ง๋ญ๋๋ค. ์๋ณธ ํ๋ก์ ํธ๋ฅผ ์์ ํ๊ฑฐ๋ ์์ฑ๋ ์ฝ๋๋ฅผ ์คํํ์ง ์์ต๋๋ค.
jq๊ฐ ์๋ค๋ฉด ํฐ Go ์ฝ๋ ๋ฌธ์์ด์ ํผ์น๊ธฐ ์ ์ ๋ค์ ํ๋๋ง ์ฝ์ ์ ์์ต๋๋ค.
jq '{state, reason, activity_id, program_digest, semantic_digest,
source_digest, candidate_digest, edit_start, edit_end,
admission, mutation_authority, promotion_authority}' "$work/proposal.json"| ๊ฒฐ๊ณผ | ์ฝ๋ ๋ฐฉ๋ฒ |
|---|---|
state: PROPOSED |
์ ํํ ๊ท์น์ผ๋ก ํ๋ณด๊ฐ ์์ฑ๋์ต๋๋ค. |
candidate_source |
์ค์ ์์ฑ๋ Go ์ฝ๋์ ๋๋ค. |
edit_start, edit_end
|
์๋ณธ์ ์ ํ ๊ตฌ๊ฐ์ ๋๋ค. 0๋ถํฐ ์์ํ๋ ๋ฐ์ดํธ ์ขํ์ด๋ฉฐ ๋์ ์ ์ธํฉ๋๋ค. |
admission.state: UNKNOWN |
์ด ์์ฑ ๊ฒฐ๊ณผ ์์ฒด์๋ ๋ ๋ฆฝ๋ ์ฑํ ํ์ ์ด ์์ต๋๋ค. |
์์ ยท์น๊ฒฉ ๊ถํ 0
|
ํ๋ณด๊ฐ ํ๋ก์ ํธ๋ฅผ ๊ณ ์น๊ฑฐ๋ ์น๊ฒฉํ ๊ถํ์ ์ป์ ๊ฒ์ ์๋๋๋ค. |
์ด ๋ฒ์ ์ ์์ ํ๋ณด๋ฅผ ๋ง๋ญ๋๋ค. ์ฌ๋์ด ๋ณด๊ธฐ ์ข์ ํ์ ์ ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ๋ค์์ ์๊ฐํ๋ ๋ ํ๋ ํ์ดํ๋ผ์ธ์ ํ์ ์ ๋ฆฌ ๊ธฐ๋ฅ๊น์ง ์ด ๋ณํฉ ๋ฒ์ ์ ๋ค์ด ์๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ธ์.
์ด ๋ฌธ์์ ํธ์ถ ํ์์ ๋ณํฉ๋ ์ด๋ํฐ์ CI์ ์ค์ ์์ฑ ์ ๋ ฅ์ ๊ทผ๊ฑฐํฉ๋๋ค. ๋ฌธ์์ ์ ธ ์ ์ฐจ ์ ์ฒด๋ฅผ ๋ณ๋ ์ฌ์ฉ์ ์ธ์ ์์ ์คํํ๋ค๋ ๋ป์ ์๋๋๋ค.
๊ธฐ์กด ์ฌ๋์ฉ ์ถ๋ ฅ์ ์ฐ๊ธฐ ํธ์ถ์ ํ ๋ค ๊ทธ ์ค๋ฅ๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ฑ๊ณต์ ๋ฐํํ์ต๋๋ค. ์์ฑ๋ ํ๋ณด๋ ๊ฐ์ ํธ์ถ์ ๊ธฐ์กด ์คํจ ๋ฐํ์ ์ฐ๊ฒฐํฉ๋๋ค.
์๋๋ ์ฝ๊ธฐ ์ฝ๊ฒ ์ค๋ฐ๊ฟํ ์ค๋ช
์ฉ Go ์กฐ๊ฐ์
๋๋ค. ์ ํํ ์์ฑ ๋ฐ์ดํธ๋ candidate_source์ ๊ทธ ์๋ณ๊ฐ์ผ๋ก ์ถ์ ํฉ๋๋ค.
if _, err := fmt.Fprintf(
stdout,
"generated profile: %s\npolicy: %s\nartifact: %s\njudge: %s\nmanifest: %s\n",
policycompilation.PublicProfileID,
artifacts.paths[0], artifacts.paths[1], artifacts.paths[2], artifacts.paths[3],
); err != nil {
return exitFailure
}
return exitOK๋ชฉํ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ฑ๊ณต์ผ๋ก ๋ง๋๋ ๊ฒ์ด ์๋๋๋ค. ์ถ๋ ฅ ์คํจ๋ฅผ ์ ํํ๊ฒ ์คํจ๋ก ๋ณด๊ณ ํ๋ฉด์, ์ด๋ฏธ ์์ฑํ ์ธ๋ถ ํ์ผ๊ณผ ์ ์ ์ถ๋ ฅ์ ์ ์งํ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ์ด ๋ณ๊ฒฝ์ ๋ชจ๋ ์ ๋ ฅ์์ ์๋ณธ๊ณผ ๋์์ด ๊ฐ์์ผ ํ๋ ๋ฆฌํฉํฐ๋ง์ด ์๋๋๋ค. ํน์ ์คํจ ์ํฉ์ ๋์์ ๋ฐ๊พธ๋ ๋ฒ๊ทธ ์์ ํ๋ณด์ ๋๋ค. ์ฝ๋ ๋ณํ๊ณผ ํจ๊ณผ์์ ๋ ์ข ๋ฅ์ ๊ฒ์ฆ ๊ธฐ์ค์ ๊ตฌ๋ถํฉ๋๋ค.
| ์ํ | ์ | ๋ค์ ํ๋จ |
|---|---|---|
UNKNOWN / DIRECT_MISSING |
์ ํํ ํจ์๊ฐ ์์ | ์ด๋ค ์ ๋ ฅ์ด๋ ๋์ ์ ์ธ์ด ๋น ์ก๋์ง ํ์ธํฉ๋๋ค. |
UNKNOWN / AMBIGUOUS |
๋์์ด ํ๋๋ก ์ ํด์ง์ง ์์ | ํ๋ณด๊ฐ ๋ฌด์์ ์ ํํด์ผ ํ๋์ง ๋ช ํํ ํฉ๋๋ค. |
UNKNOWN / UNBOUNDED |
๊ท์น์ด ์ง์ํ์ง ์๋ ํ์ ยท์ ์ด ํ๋ฆ | ์ง์ ๋ฒ์๋ฅผ ํ์ธํ๊ณ ๋ค๋ฅธ ์๋๋ฅผ ๋ณ๋๋ก ์ค๋นํฉ๋๋ค. |
REFUTED |
์๋ณธ ๋๋ ์ฒ๋ฆฌ ๋ธ๋ก์ pin์ด ์ค์ ์ ๋ ฅ๊ณผ ๋ค๋ฆ | ๋ชจ์๋ ์ฐ๊ฒฐ์ ์กฐ์ฌํฉ๋๋ค. ์ฆ๊ฑฐ ๋ถ์กฑ๊ณผ ์์ง ์์ต๋๋ค. |
stage, step, reason, unknown_class, next_operation, blocked_by๋ฅผ ํจ๊ป ์ฝ์ต๋๋ค. UNKNOWN์ ์๋ณธ ํ๋ก๊ทธ๋จ์ ์๋ฏธ๊ฐ ํ๋ ธ๋ค๋ ์ ์ธ๋, ๋ชจ๋ ๋ค๋ฅธ ์์
์ ์ค๋จํ๋ผ๋ ๋ป๋ ์๋๋๋ค.
๋ค๋ฅธ ์๋๋ฅผ ์ํด ์ ํ์ ๋ฐ๊ฟ ์๋ ์์ต๋๋ค. ๋ค๋ง ์๋ณธยท์ ํยทํ๊ฐ ๊ธฐ์ค์ด ๋ฐ๋์๋ค๋ฉด ์๋ก์ด ์๋๋ก ๊ตฌ๋ถํด์ผ ํฉ๋๋ค. ์์ ์คํจ๋ฅผ ์ง์ฐ๊ฑฐ๋ ๊ธฐ๋๊ฐ์ ๋ฎ์ถฐ ๊ฐ์ ๊ฐ์ ์ด ์ฑ๊ณตํ๋ค๊ณ ๊ธฐ๋กํ์ง ์์ต๋๋ค.
๊ฐ์ ๊ณ ์ ๊ธฐ๋๊ฐ์ผ๋ก ์๋ณธ๊ณผ ์์ฑ ํ๋ณด๋ฅผ ์คํํ #854์ CI์์ ๋ค์์ด ๊ด์ธก๋์ต๋๋ค.
| ๊ณต๊ฐ ์ ์ฑ ์์ฑ ํ๋กํ์ ๊ณ ์ ์ฌ๋ก | ์๋ณธ | ์์ฑ ํ๋ณด |
|---|---|---|
| ์ฌ๋์ฉ ์ถ๋ ฅ ๊ฑฐ์ | FAIL | PASS |
| JSON ์ถ๋ ฅ ๊ฑฐ์ | PASS | PASS |
| ์ฌ๋์ฉ ์ ์ ์ถ๋ ฅ | PASS | PASS |
| JSON ์ ์ ์ถ๋ ฅ | PASS | PASS |
| ์ ํํ ์ธ๋ถ ์์ฑ ํ์ผ 4๊ฐ ์ ์ง | PASS | PASS |
| ํฉ๊ณ | 4 PASS / 1 FAIL | 5 PASS / 0 FAIL |
์ฒซ ํ์ PASS๋ ์ถ๋ ฅ์ด ์ ๋ฌ๋๋ค๋ ๋ป์ด ์๋๋๋ค. ์ถ๋ ฅ ๊ฑฐ์ ์ ์ฃผ์ ํ์ ๋ CLI๊ฐ ์คํจ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณด๊ณ ํ๋ค๋ ๋ป์ ๋๋ค. ์ด ๋ค์ฏ ์ฌ๋ก๋ ์ ์ฑ ์์ฑ ํ๋กํ์ ๋ฒ์์ด๋ฉฐ, ์ผ๋ฐ ์์ฑ ๋ช ๋ น์ด๋ ์ ์ฑ ์์ ํ๋กํ์ ๋ชจ๋ ๋์๊น์ง ๋์ ์ฆ๋ช ํ์ง ์์ต๋๋ค.
์ ๋ ฅยทIRยท์์ฑ ์ฝ๋์ ์์ฉ ๊ทผ๊ฑฐ ์ถ์ ํ๊ธฐ
- native producer head:
4eac9bdcb0cd1796e8c2a1bb74e3acd659411fab. - Gooo ํ๋ก๊ทธ๋จ:
sha256:7c64ecf45b10ff7e49546615efaaf9c2b7ad1d7de993f5cf203645651e27d698. - ์๋ฏธ IR:
sha256:dee485c90b963efae03326845871a097e126de99771679341d99b60991c8333f. - ์์ ์์ฑ ํ๋ณด:
sha256:61b0b3e5cac9ab4721831a28fee959a509bc859ce250d3a2414c2f4c7a44806e. -
์์ฑยท์คํ artifact 10338929847์
test.json์์gooo return guard witness์TestGoReturnGuardActualPublicProfileUsesFrozenNativeOracle๋ฅผ ์ฐพ์ต๋๋ค. - ์ปดํ์ผ๋ฌ์ ์ต์ข ์์ฉ ๊ธฐ๋ก์ ์ ์ฒด CI ์์ฉ๊ณผ ์์ ํ์ ๋ ๊ธฐ๋ฅ ์ฌ๋ก๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
- ๊ณต๊ฐ ๊ตฌํ์ ์์ฑ ์ฝ๋๋ฅผ ์ ์ฉํ๋ ๊ฒฝ๋ก๋ ์ปดํ์ผ๋ฌ ์ ์๊ณผ ๋ณ๋๋ก ์ถ์ ํฉ๋๋ค.
์ด ํด์๋ค์ ์ ๋ ฅ๊ณผ ์ฐ์ถ๋ฌผ์ ๋์ผ์ฑ์ ์ฐ๊ฒฐํฉ๋๋ค. ์์ฑ์ ์ ๋ขฐ, ๋ชจ๋ ์์กด์ฑ์ ๋ฌด๊ฒฐ์ฑ, ์๋ฏธ์ ์ฌ๋ฐ๋ฆ ๋๋ ์ฌ์ฉ์ ํจ์ฉ๊น์ง ๋์ ํ์ง ์์ต๋๋ค. CI artifact๋ ๋ณด์กด ๊ธฐ๊ฐ์ด ์์ผ๋ฏ๋ก ์๊ตฌ ๋ฆด๋ฆฌ์ค ํ์ผ๋ก ์ทจ๊ธํ์ง ์์ต๋๋ค.
ํ๋ณด๋ฅผ ๋ง๋ ์ฃผ์ฒด๊ฐ ์๊ธฐ ํ๊ฐ ๊ธฐ์ค๋ ๋ฐ๊ฟ ์ฑ๊ณต์ ์ ์ธํ๋ฉด, ๋ฌด์์ด ์ค์ ๋ก ์ข์์ก๋์ง ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
Gooo ์ ์ธ์ ์ ํ์ ๋ช ์ํ๊ณ , ์์ฑ ๊ฒฐ๊ณผ๋ ๊ทธ ์ ํ๊ณผ ๋ฐ์ดํธ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ๊ณ ์ ๋ ๊ฒ์ฌ๋ ์ค์ ๋์์ ๋น๊ตํ๊ณ , ์ฑํ์ ์ ํด์ง ๊ถํ ์์์ ๋ฐ๋ก ๊ฒฐ์ ํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ค์ ์คํ์ด ์ฑํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํด์ผ ์ผํ์ฑ ํ๋ณด ์์ฑ ์ด์์ ๊ฒฝ๋ก๊ฐ ๋ฉ๋๋ค.
์ด ์ด๋ํฐ๋ ์ธ๋ถ CI ๊ฒฐ๊ณผ๋ฅผ ์๋ ํ๋ณด JSON์ ๋ฎ์ด์ฐ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ณผ๊ฑฐ ํ๋ณด์ ์ฑํ ์ํ UNKNOWN๊ณผ ๊ทธ ๋ค์ ์คํ ๊ทผ๊ฑฐ๊ฐ ํจ๊ป ๋จ์ ์ ์์ต๋๋ค. ๊ฐ๋ฐ ๊ณผ์ ์์๋ ํ๋ณด ์ปค๋ฐ, ํ ์คํธ ์ ๋ ฅ, CI ์คํ, ๋ณํฉ, ํ์ ์คํ์ ์๋ก ๋ค๋ฅธ ์ฌ๊ฑด์ผ๋ก ์ฐ๊ฒฐํฉ๋๋ค.
๊ฑฐ์ ๋ ์ ์์ ์ธ ์ข ๋ฃ์ง๋ง ๊ฐ์ ์ฑ๊ณต์ผ๋ก ์ธ์ง๋ ์์ต๋๋ค. ๊ฒฐ์ ์ ์ฌ์คํ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค๋ ๊ทผ๊ฑฐ์ด์ง, ์ ์ฉํด์ก๋ค๋ ๊ทผ๊ฑฐ๊ฐ ์๋๋๋ค. ์๋ยท๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์ญ์ ๋น๊ต ๊ฐ๋ฅํ ์ค์ ์ ํ ๊ด์ธก์ด ํ์ํฉ๋๋ค.
Provenance์ ๊ฒฐ์ ยท ๊ฑฐ๋ฒ๋์ค์ ๊ธฐ์ฌ ยท ํ ์คํธยท์คํ ๋น์ฉยท์ฌ์ฌ์ฉ
| ๋ฒ์ | ์ ํ๊ณผ ๊ฒฝ๊ณ |
|---|---|
| ์ด ์ค์ต ๋ฒ์ ์ v1 | ์๋ก ๋ค๋ฅธ io.Writer, ์ธ์ ํ ๋ถ๊ธฐ, ์ง๋จ ์ถ๋ ฅ๊ณผ ๋ฐํ์ด ์๋ ์ฒ๋ฆฌ๊ธฐ |
| ์ด ์ค์ต ๋ฒ์ ์ v2 | ๋ช ์ํ ๋ก์ปฌ writer ์ธํฐํ์ด์ค, ๋จผ์ ๋ฐํํ๋ ๋ถ๊ธฐ, ๋ฐํ๋ง ํ๋ ์ฒ๋ฆฌ๊ธฐ |
| ๋ณ๋ ํ์ดํ๋ผ์ธ ์คํ |
Source -> RawCandidate -> Candidate๋ก ์์ฑ๊ณผ ํ์ ์ ๋ฆฌ ์ฐ๊ฒฐ |
| ์ผ๋ฐ ์์ฑ ๋ช ๋ น์ฉ v3 ์ค๋น | ์ค์ฒฉ๋ ์ฌ๋์ฉ ์ถ๋ ฅ ์ง์ ๊ณผ ์ฒซ ์คํจ์์ ์ค๋จํ๋ ๋์์ ๋ช ์ |
์๋ ๋ ํญ๋ชฉ์ ์์์ ๊ณ ์ ํ ๋ณํฉ ๋ฒ์ ์ ์ค์ต์ ํฌํจ๋์ง ์์ต๋๋ค. ํ์ดํ๋ผ์ธ์ #855์ #856, ์ผ๋ฐ ์์ฑ ๋ช ๋ น์ ํ์ ์ฌ๋ก๋ #857์์ ์์ฉ ์ฌ๋ถ์ ์ค์ ์ฆ๊ฑฐ๋ฅผ ํ์ธํฉ๋๋ค. ์ค๋น๋ v3์ ์ฌ๋ ์ฌ๋ก๋ฅผ ์ด๋ฏธ ํต๊ณผํ ์ฌ๋ก๋ก ์ธ์ง ์์ต๋๋ค.