← /geode/portfolioGEODE . 문서
GitHub
레퍼런스
레퍼런스

Petri 번들 격리

petri-publish.yml workflow + validator + hygiene ratchet 의 운영자 reference. site 빌드 실패와 무관하게 alignment audit 번들이 살아 있도록 보장.

왜 격리되어 있나

`pages.yml` 한 워크플로우에 site + petri-bundle 이 묶여 있으면, site Next.js 빌드 실패가 petri-bundle 배포까지 끌어내립니다. PR #1314 로 ratchet 을 분리: petri 변경은 site 와 무관한 별도 워크플로우에서 검증, site 빌드 실패는 petri 의 deploy 를 막지 못함.

구성 요소

파일역할
.github/workflows/petri-publish.yml전용 PR-gate + 매일 cron. docs/self-improving/petri-bundle/** + validator + hygiene 변경 시 가동
.github/workflows/pages.ymlvalidator 호출을 npm install/build 직전 으로 이동. 빌드 비용 낭비 차단
scripts/validate_petri_bundle.pyzip 내부 header.json.results 까지 검증 (results=None / empty scores / empty metrics 거부)
scripts/check_repo_hygiene.pyPETRI_EVAL_FLOOR=9 삭제 보호 ratchet
zipfile-zstd dev depPython 3.12-3.13 의 zstd shim. 3.14+ 에서는 no-op

운영자 트리거

# 로컬 검증
uv run python scripts/validate_petri_bundle.py
uv run python scripts/check_repo_hygiene.py

# 수동 workflow 실행
gh workflow run petri-publish.yml --ref main

# 직전 회귀 점검
gh run list --workflow=petri-publish.yml --limit=10

알려진 trigger 패턴

`inspect_ai #1747` 의 `formatPrettyDecimal(g.metrics[i].value)` TypeError. 원인은 header.json 의 results=None / scores[] 빈 배열 / metrics 빈 dict. validator 는 위 세 케이스를 PR-gate 에서 차단합니다. 직전 사례: PR #1129 partial archive, PR #1130 error archive.

참조: PR #1314, `tests/test_validate_petri_bundle.py` (13 tests).