Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions shared/lockdown/l0_guard.hexa
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,41 @@ fn cmd_verify(project, repo) {
if fp { println(" PASS force_push_blocked"); pass = pass + 1 } else { println(" FAIL force_push_blocked"); fail = fail + 1 }
if dl { println(" PASS branch_delete_blocked"); pass = pass + 1 } else { println(" FAIL branch_delete_blocked"); fail = fail + 1 }

// 4. L0 .hexa 파일 파싱 가능성 (phantom 차단)
// M1_l0_strict — airgenome rebuild v2 진입의 핵심.
// "파일 존재" 만 검증하면 dead code 가 L0 자격 유지하는 상태가 발생.
// 각 .hexa L0 파일을 hexa 로 실행, "Parse error" 출력 0건 = PASS.
// 부수 효과: 파일이 top-level 에서 무거운 작업을 하면 매 verify 마다 실행됨.
// 완화: env gating (CORE_SELF_TEST=1 등) 권장.
println("")
println("── 4. L0 .hexa 파일 파싱 가능성 ──")
if paths_str != "" {
let plines = paths_str.split("\n")
let mut k = 0
while k < len(plines) {
let p = plines[k].trim()
if p != "" {
let n = len(p)
if n >= 5 {
let suffix_check = exec("echo '" + p + "' | grep -c '\\.hexa$'").trim()
if suffix_check == "1" {
let abs = root + "/" + p
let perr_count = exec(HEXA + " '" + abs + "' 2>&1 < /dev/null | grep -c 'Parse error'").trim()
let pe = to_int(perr_count)
if pe == 0 {
println(" PASS parse: " + p)
pass = pass + 1
} else {
println(" FAIL parse: " + p + " (" + to_string(pe) + " parse errors)")
fail = fail + 1
}
}
}
}
k = k + 1
}
}

println("")
println("═══ 결과: " + to_string(pass) + " PASS / " + to_string(fail) + " FAIL ═══")
if fail == 0 {
Expand Down
Loading