Skip to content

예비 보안 점검 결과 — ContextualWisdomLab/appguardrail #132

Closed

Description

@seonghobae

예비 보안 점검 결과 — ContextualWisdomLab/appguardrail

공개 GitHub 리포지토리 기준의 정적 예비 점검입니다. 로컬 클론, 테스트 실행, 전체 의존성 트리 분석, 실제 패키지 배포물 검증은 수행하지 않았으므로 “감사 완료”가 아니라 우선 조치가 필요한 보안 리뷰 초안으로 보는 것이 적절합니다.

요약

appguardrail은 AI로 만든 앱을 대상으로 보안 가드레일, 스캔, 리뷰, 모니터링, 수정 지원을 제공하는 CLI/워크플로 중심 도구로 보입니다. README는 Python 3.9 이상, pip install appguardrail, appguardrail scan, Trivy/CodeGraph 연동, 시크릿·의존성·인증 누락·Firebase/Supabase/CORS/Stripe 관련 패턴 탐지를 설명하고 있습니다. pyproject.toml 기준 런타임 Python 의존성은 비어 있고, 콘솔 엔트리포인트는 scanner.cli.appguardrail:main입니다. (GitHub)

가장 우선적으로 볼 이슈는 네이티브 시크릿 탐지 결과가 매칭된 코드 라인을 그대로 출력할 수 있는 점입니다. 이 도구가 CI에서 실행될 경우 실제 시크릿이 로그나 아티팩트에 남을 가능성이 있어, 보안 도구 자체의 목적과 충돌합니다. 반면 Trivy 연동 결과에서는 시크릿 값을 억제하는 처리도 보여, 네이티브 스캐너에도 동일한 정책을 적용하는 것이 타당합니다. (GitHub)


적용 기준

이번 예비 점검에는 다음 기준을 적용했습니다.

기준 | 적용 범위 -- | -- OWASP ASVS 5.0.0 | 보안 검증 요구사항의 기준선. ASVS 최신 안정 버전은 5.0.0으로 공개되어 있습니다. (OWASP) OWASP Top 10:2025 — A03 Software Supply Chain Failures | 의존성, CI/CD, 빌드·배포 파이프라인, 패키지 무결성, SBOM, 취약점 모니터링. OWASP는 A03에서 취약·오래된 컴포넌트, 추적되지 않는 의존성, CI/CD 보안 약화, SBOM 및 CVE/NVD/OSV 모니터링을 명시합니다. (OWASP) OWASP Top 10 CI/CD Security Risks | Poisoned Pipeline Execution, Dependency Chain Abuse, Excessive Permissions, Credential Hygiene, Artifact Integrity 등. (OWASP) CWE | 확인된 취약 패턴을 약점 유형으로 매핑. CVE / GHSA / OSV 후보 확인 | 공개적으로 보이는 직접 의존성 핀을 기준으로 제한적 확인. 전체 SBOM 없이는 확정 불가.

개발자 티켓 초안

Ticket 1 — Secret scan output redaction

Severity: High
Type: CWE-532 / CWE-200
Affected area: scanner/cli/appguardrail.py, scanner/rules/secrets.yml

Description:
Native secret detection can print the matched source line as a finding snippet. If real credentials are present, scan output may expose them in terminal or CI logs.

Acceptance criteria:

  1. Secret-related findings never print the matched secret value.

  2. Default output shows file, line, rule ID, severity, and redacted snippet only.

  3. Unit tests confirm fake Stripe/OpenAI/JWT/DB URL values do not appear in stdout/stderr.

  4. Trivy secret suppression behavior and native scanner behavior are consistent.


Ticket 2 — Harden AI review workflow permissions

Severity: Medium
Type: CI/CD hardening, OWASP CICD-SEC-5 / CICD-SEC-6

Description:
Review workflows use privileged contexts and external runtime tools. Existing mitigations are present, but permissions and third-party package execution should be further minimized.

Acceptance criteria:

  1. Remove id-token: write unless an explicit OIDC trust relationship requires it.

  2. Document why each permission is required.

  3. Replace runtime npx -y installs with hash-locked or containerized tooling.

  4. Add workflow linting and dependency review as required checks.


Ticket 3 — Hash-lock release dependencies and generate SBOM

Severity: Medium
Type: Supply chain hardening, OWASP A03:2025

Description:
Release workflow uses pinned versions for build tooling but does not appear to enforce hash-based dependency integrity.

Acceptance criteria:

  1. requirements-release.txt is generated with hashes.

  2. CI uses pip install --require-hashes.

  3. Release pipeline emits SBOM.

  4. Release job runs OSV or pip-audit against resolved dependencies.

  5. Published artifacts include provenance or attestations.


결론

이 리포지토리는 보안 목적의 도구답게 승인 범위 문서, 책임 있는 테스트 안내, CI 권한 제한, 액션 SHA 핀, PyPI OIDC 게시 등 긍정적인 통제가 이미 보입니다. 가장 먼저 고쳐야 할 부분은 시크릿 탐지 결과의 원문 출력 방지입니다. 그 다음은 AI/CI 워크플로의 권한·외부 도구·토큰 노출면 축소, 릴리스 의존성 무결성 강화, SBOM/CVE 자동 검증 순서가 적절합니다.

다음 단계는 승인된 범위에서 로컬 appguardrail scan, pip-audit, OSV-Scanner, SBOM 결과를 함께 대조해 CVE 후보를 확정하는 것입니다.

## 예비 보안 점검 결과 — `ContextualWisdomLab/appguardrail`

공개 GitHub 리포지토리 기준의 정적 예비 점검입니다. 로컬 클론, 테스트 실행, 전체 의존성 트리 분석, 실제 패키지 배포물 검증은 수행하지 않았으므로 “감사 완료”가 아니라 우선 조치가 필요한 보안 리뷰 초안으로 보는 것이 적절합니다.

요약

appguardrail은 AI로 만든 앱을 대상으로 보안 가드레일, 스캔, 리뷰, 모니터링, 수정 지원을 제공하는 CLI/워크플로 중심 도구로 보입니다. README는 Python 3.9 이상, pip install appguardrail, appguardrail scan, Trivy/CodeGraph 연동, 시크릿·의존성·인증 누락·Firebase/Supabase/CORS/Stripe 관련 패턴 탐지를 설명하고 있습니다. pyproject.toml 기준 런타임 Python 의존성은 비어 있고, 콘솔 엔트리포인트는 scanner.cli.appguardrail:main입니다. ([GitHub]1)

가장 우선적으로 볼 이슈는 네이티브 시크릿 탐지 결과가 매칭된 코드 라인을 그대로 출력할 수 있는 점입니다. 이 도구가 CI에서 실행될 경우 실제 시크릿이 로그나 아티팩트에 남을 가능성이 있어, 보안 도구 자체의 목적과 충돌합니다. 반면 Trivy 연동 결과에서는 시크릿 값을 억제하는 처리도 보여, 네이티브 스캐너에도 동일한 정책을 적용하는 것이 타당합니다. ([GitHub]2)


적용 기준

이번 예비 점검에는 다음 기준을 적용했습니다.

기준 적용 범위
OWASP ASVS 5.0.0 보안 검증 요구사항의 기준선. ASVS 최신 안정 버전은 5.0.0으로 공개되어 있습니다. (OWASP)
OWASP Top 10:2025 — A03 Software Supply Chain Failures 의존성, CI/CD, 빌드·배포 파이프라인, 패키지 무결성, SBOM, 취약점 모니터링. OWASP는 A03에서 취약·오래된 컴포넌트, 추적되지 않는 의존성, CI/CD 보안 약화, SBOM 및 CVE/NVD/OSV 모니터링을 명시합니다. ([OWASP]4)
OWASP Top 10 CI/CD Security Risks Poisoned Pipeline Execution, Dependency Chain Abuse, Excessive Permissions, Credential Hygiene, Artifact Integrity 등. (OWASP)
CWE 확인된 취약 패턴을 약점 유형으로 매핑.
CVE / GHSA / OSV 후보 확인 공개적으로 보이는 직접 의존성 핀을 기준으로 제한적 확인. 전체 SBOM 없이는 확정 불가.

주요 발견 사항

ID 발견 사항 위험도 OWASP / CWE 매핑 근거 권고 조치
AG-01 시크릿 탐지 결과가 실제 매칭 라인을 출력할 수 있음 높음 OWASP A03:2025, OWASP CI/CD Credential Hygiene, CWE-532, CWE-200 secrets.yml은 Stripe, OpenAI, JWT, DB URL, 일반 하드코딩 시크릿을 HIGH/CRITICAL로 탐지합니다. _scan_file은 매칭 라인을 snippet으로 저장하고, 출력 함수는 Code: {snippet} 형태로 표시합니다. ([GitHub]2) 시크릿 계열 룰은 기본적으로 [REDACTED] 처리. --show-snippets 같은 명시 옵션이 있을 때만 컨텍스트를 보여주되, 매칭 값은 항상 마스킹. CI 로그에는 시크릿 원문이 남지 않도록 테스트 추가.
AG-02 pull_request_target 기반 AI/리뷰 워크플로의 잔여 위험 중간 OWASP A03:2025, CICD-SEC-4 PPE, CICD-SEC-5 PBAC, CICD-SEC-6 Credential Hygiene, CWE-269, CWE-829 opencode-review.yml은 pull_request_target과 workflow_dispatch를 사용하고, 일부 경로에서 id-token: write, GITHUB_TOKEN, 모델 토큰, 런타임 npx MCP 패키지를 사용합니다. 다만 same-repo 조건, 권한 제한, 액션 SHA 핀, CLI SHA256 검증 등 완화책도 있습니다. GitHub는 pull_request_target에서 신뢰되지 않은 PR 코드를 체크아웃·실행하면 높은 권한과 시크릿 노출 위험이 있다고 경고합니다. (GitHub) id-token: write가 실제 필요하지 않다면 제거. MCP/npm 도구는 해시 고정 또는 사전 빌드된 신뢰 컨테이너로 격리. AI 에이전트 실행 시 egress allowlist, 최소 권한 토큰, 비밀 없는 리뷰 모드, 환경 보호 규칙 적용.
AG-03 릴리스 의존성은 버전 핀은 있으나 해시 잠금은 보이지 않음 중간 OWASP A03:2025, CICD-SEC-3 Dependency Chain Abuse, CICD-SEC-9 Artifact Integrity, CWE-494, CWE-829 PyPI 배포 워크플로는 액션 SHA 핀과 PyPI OIDC 게시를 사용합니다. 그러나 requirements-release.txt는 build==1.5.0, twine==6.2.0처럼 버전 핀만 있고 --require-hashes 기반 무결성 고정은 보이지 않습니다. OWASP A03은 SBOM, 의존성 추적, 신뢰 가능한 소스, 서명 패키지, CI/CD 및 아티팩트 무결성 강화를 권고합니다. ([GitHub]7) 릴리스 의존성에 pip install --require-hashes 적용. pip-compile --generate-hashes, OSV/pip-audit, SBOM 생성, Sigstore/attestation, 릴리스 환경 승인 규칙 추가.
AG-04 보안 범위·책임 있는 테스트 문서는 양호 낮음 / 긍정 OWASP Testing Guide 관점의 승인 범위 관리, CWE-693 보안 메커니즘 관리 관점 responsible-testing.md는 소유하거나 명시적으로 허가받은 앱만 테스트하고, 실제 사용자 데이터·파괴적 테스트·DoS를 금지합니다. scope-and-authorization.md도 명시적 서면 승인, 범위 정의, 금지 행위를 요구합니다. GitHub 보안 정책 페이지도 비공개 보고와 재현 정보 제출을 안내합니다. (GitHub) 배포 패키지, README, CLI 도움말에도 “승인된 범위에서만 사용” 문구를 반복 노출하면 오남용 방지에 유리합니다.
AG-05 스캐너 구현에 일부 방어적 처리 확인 낮음 / 긍정 CWE-22, CWE-78, CWE-59 관련 완화 초기화 경로에서 심볼릭 링크를 확인하고, 스캔 시 symlink·비정규 파일·대용량 파일을 건너뛰며, Trivy/CodeGraph 실행은 shell=True가 아닌 인자 배열 기반 subprocess.run 형태로 보입니다. ([GitHub]9) 현재 방어 로직을 회귀 테스트로 고정. symlink, path traversal, command injection, oversized file 테스트 케이스 추가.

AG-01 상세: 시크릿 로그 노출

위험

현재 구조에서는 예를 들어 .env 또는 설정 파일에 실제 Stripe/OpenAI/JWT/DB URL이 있을 때, 스캐너가 이를 탐지하면서 해당 라인을 Code: 출력에 포함할 수 있습니다. 보안 도구가 CI에서 실행되면 GitHub Actions 로그, PR 코멘트, 저장된 아티팩트, 외부 로그 수집기로 시크릿이 유출될 수 있습니다. secrets.yml은 여러 시크릿 패턴을 CRITICAL/HIGH로 정의하고 있고, 출력 함수는 매칭 라인 snippet을 보여주는 구조입니다. (GitHub)

권장 수정 방향

시크릿 탐지 룰은 “파일명, 라인 번호, 룰 ID, 심각도, 설명”만 출력하고, 매칭 값은 항상 숨기는 방식이 안전합니다.

예시 정책:

Before:
Code: STRIPE_SECRET_KEY=sk_live_xxxxxxxxx

After:
Code: STRIPE_SECRET_KEY=[REDACTED]

구현 방향은 다음과 같습니다.

SENSITIVE_RULE_TOKENS = (
    "secret",
    "password",
    "token",
    "jwt",
    "database-url",
    "db-url",
    "stripe",
    "openai",
    "supabase-service-role",
)

def is_sensitive_rule(rule_id: str) -> bool:
    lowered = rule_id.lower()
    return any(token in lowered for token in SENSITIVE_RULE_TOKENS)

def safe_snippet(rule_id: str, snippet: str) -> str:
    if is_sensitive_rule(rule_id):
        return "[REDACTED: sensitive match suppressed]"
    return snippet

더 나은 방식은 “라인 전체 삭제”보다 매칭된 값만 마스킹하는 것입니다. 다만 첫 패치는 보수적으로 전체 snippet을 숨기는 편이 안전합니다.

검증 방법

승인된 로컬 테스트 디렉터리에서만 다음 성격의 테스트를 추가합니다.

mkdir -p /tmp/appguardrail-redaction-test
cat > /tmp/appguardrail-redaction-test/.env <<'EOF'
OPENAI_API_KEY=sk-test-redaction-example-not-real
JWT_SECRET=example-jwt-secret-not-real
EOF

appguardrail scan /tmp/appguardrail-redaction-test 2>&1 | tee /tmp/ag.out

# 실패 조건: 원문 시크릿이 출력에 포함됨
grep -E 'sk-test-redaction-example|example-jwt-secret' /tmp/ag.out && exit 1

# 성공 조건: 룰은 탐지되지만 값은 마스킹됨
grep -E 'REDACTED|sensitive match suppressed' /tmp/ag.out

CI/CD 및 AI 리뷰 워크플로 평가

opencode-review.yml은 pull_request, pull_request_target, workflow_dispatch를 모두 다루며, same-repo 조건, 신뢰 워크플로 체크아웃, persist-credentials: false, OpenCode CLI SHA256 검증, 에이전트 권한 deny 설정 등 여러 완화책을 갖고 있습니다. 이 점은 긍정적입니다. ([GitHub]6)

다만 pull_request_target은 설계상 base repository 권한·시크릿 접근과 연결될 수 있어, PR head 코드를 실행하거나 그 입력이 명령 실행에 영향을 주면 위험이 커집니다. GitHub는 pull_request_target에서 신뢰되지 않은 코드를 체크아웃·실행하는 패턴을 특히 경고하며, GITHUB_TOKEN은 워크플로 내 액션이 접근할 수 있으므로 최소 권한으로 제한하라고 안내합니다. ([The GitHub Blog]10)

권장 우선순위는 다음과 같습니다.

우선순위 조치
1 opencode-review-target의 id-token: write가 실제 OIDC 연동에 필요하지 않다면 제거.
2 npx -y @...로 런타임 설치되는 MCP 패키지를 해시 고정, lockfile 기반 설치, 사전 빌드된 컨테이너, 또는 내부 미러로 전환.
3 AI 에이전트 실행 작업에 egress 제한을 적용하고, 모델 토큰·GitHub 토큰이 프롬프트 또는 분석 대상 코드에 의해 간접 노출되지 않도록 별도 샌드박스 사용.
4 pull_request_target 경로에서는 PR head 코드를 “읽기 전용 분석 대상”으로만 다루고, 그 안의 스크립트·패키지 설치·빌드 명령은 실행하지 않는 정책을 문서화.
5 actionlint, CodeQL workflow analysis, OSSF Scorecard, dependency review를 CI 필수 검사로 추가.

CVE 후보 확인

공개 파일에 보이는 직접 핀 기준의 제한적 확인입니다. 전체 전이 의존성, 실제 설치 환경, lockfile, SBOM이 없으므로 최종 판정은 아닙니다.

패키지 / 버전 CVE / Advisory 후보 현재 판단 근거
google-cloud-aiplatform==1.133.0 CVE-2026-2473 / GHSA-wh2j-26j7-9728 해당 CVE 기준 영향 가능성 낮음. Advisory는 영향을 받는 범위를 >=1.21.0, <1.133.0, 수정 버전을 1.133.0으로 표시합니다. requirements-strix-ci.txt에 1.133.0이 고정되어 있고, OSV/GHSA 정보상 해당 버전은 수정 버전 경계입니다. ([GitHub]11)
python-multipart==0.0.31 CVE-2026-53540 / GHSA-v9pg-7xvm-68hf 해당 CVE 기준 영향 가능성 낮음. Advisory는 수정 버전을 0.0.31로 표시합니다. requirements-strix-ci.txt에 0.0.31이 고정되어 있고, OSV/GHSA 정보상 해당 버전은 수정 버전입니다. ([GitHub]11)
build==1.5.0, twine==6.2.0 확인 필요 직접 파일 기준 버전 핀은 있으나, 해시 잠금과 전이 의존성 검증 자료는 보이지 않습니다. 릴리스 요구사항 파일에는 두 패키지가 정확 버전으로만 고정되어 있습니다. ([GitHub]12)
cryptography==49.0.0, strix-agent==1.0.4 확인 필요 공개 파일상 직접 핀은 확인되지만, 전체 SBOM 없이 CVE 영향 여부를 확정하기 어렵습니다. requirements-strix-ci.txt에 직접 의존성으로 표시됩니다. ([GitHub]11)

권고 조치 우선순위

순위 조치 기대 효과
1 네이티브 스캐너 시크릿 출력 마스킹 CI 로그·PR 코멘트·터미널 기록을 통한 실제 시크릿 유출 방지
2 릴리스/CI 의존성 해시 잠금 및 SBOM 생성 패키지 공급망 변조, typosquatting, 레지스트리 변조 위험 감소
3 pull_request_target 워크플로 권한 재검토 PR 기반 권한 상승, 토큰 노출, OIDC 오용 위험 감소
4 AI 에이전트 실행 샌드박스 강화 프롬프트 인젝션, 도구 호출 오남용, 외부 유출 위험 감소
5 보안 회귀 테스트 추가 symlink, command injection, secret redaction, oversized file 처리의 안정성 확보

개발자 티켓 초안

Ticket 1 — Secret scan output redaction

Severity: High
Type: CWE-532 / CWE-200
Affected area: scanner/cli/appguardrail.py, scanner/rules/secrets.yml

Description:
Native secret detection can print the matched source line as a finding snippet. If real credentials are present, scan output may expose them in terminal or CI logs.

Acceptance criteria:

  1. Secret-related findings never print the matched secret value.
  2. Default output shows file, line, rule ID, severity, and redacted snippet only.
  3. Unit tests confirm fake Stripe/OpenAI/JWT/DB URL values do not appear in stdout/stderr.
  4. Trivy secret suppression behavior and native scanner behavior are consistent.

Ticket 2 — Harden AI review workflow permissions

Severity: Medium
Type: CI/CD hardening, OWASP CICD-SEC-5 / CICD-SEC-6

Description:
Review workflows use privileged contexts and external runtime tools. Existing mitigations are present, but permissions and third-party package execution should be further minimized.

Acceptance criteria:

  1. Remove id-token: write unless an explicit OIDC trust relationship requires it.
  2. Document why each permission is required.
  3. Replace runtime npx -y installs with hash-locked or containerized tooling.
  4. Add workflow linting and dependency review as required checks.

Ticket 3 — Hash-lock release dependencies and generate SBOM

Severity: Medium
Type: Supply chain hardening, OWASP A03:2025

Description:
Release workflow uses pinned versions for build tooling but does not appear to enforce hash-based dependency integrity.

Acceptance criteria:

  1. requirements-release.txt is generated with hashes.
  2. CI uses pip install --require-hashes.
  3. Release pipeline emits SBOM.
  4. Release job runs OSV or pip-audit against resolved dependencies.
  5. Published artifacts include provenance or attestations.

결론

이 리포지토리는 보안 목적의 도구답게 승인 범위 문서, 책임 있는 테스트 안내, CI 권한 제한, 액션 SHA 핀, PyPI OIDC 게시 등 긍정적인 통제가 이미 보입니다. 가장 먼저 고쳐야 할 부분은 시크릿 탐지 결과의 원문 출력 방지입니다. 그 다음은 AI/CI 워크플로의 권한·외부 도구·토큰 노출면 축소, 릴리스 의존성 무결성 강화, SBOM/CVE 자동 검증 순서가 적절합니다.

다음 단계는 승인된 범위에서 로컬 appguardrail scan, pip-audit, OSV-Scanner, SBOM 결과를 함께 대조해 CVE 후보를 확정하는 것입니다.

Activity

  1. seonghobae commented on Jun 29, 2026

    @seonghobae
    ContributorAuthor

    재확인 결과 (2026-06-29)

    현재 develop 기준으로 이슈 내용을 다시 대조했습니다.

    • Ticket 1 — Secret scan output redaction: 완료된 상태입니다. scanner/cli/appguardrail.py에 _SENSITIVE_RULE_TOKENS, _is_sensitive_rule(), _safe_snippet()가 있고, secret category 또는 secret-like rule id는 [REDACTED: sensitive match suppressed]로 출력됩니다. tests/test_appguardrail.py에도 Stripe/OpenAI/JWT/DB URL 원문이 stdout/stderr에 나오지 않는 회귀 테스트가 있습니다.
    • Ticket 2 — Harden AI review workflow permissions: 이 저장소의 현재 develop에는 .github/workflows/opencode-review.yml이 없습니다. 해당 AI review workflow는 중앙 .github workflow 계열 사안으로 보이며, 관련 중앙 PR ContextualWisdomLab/.github#132는 이미 merge되어 있습니다. appguardrail 로컬 코드 이슈로 바로 닫기는 어렵습니다.
    • Ticket 3 — Hash-lock release dependencies and generate SBOM: 아직 미완료입니다. requirements-release.txt는 build==1.5.0, twine==6.2.0 버전 핀만 있고, release workflows는 pip install --require-hashes를 사용하지 않으며 SBOM artifact도 생성하지 않습니다.

    따라서 이 이슈는 전체 close 대상은 아니고, 남은 실질 작업은 release dependency hash locking + SBOM emission으로 좁혀서 별도 PR로 처리하는 것이 맞습니다.

  2. seonghobae commented on Oct 9, 2026

    @seonghobae
    ContributorAuthor

    Regression linkage update: Draft #1424 at exact head 3a79d830a495bb87a7affedb9c09eb5506425786 converts this incident class into the packaged HIGH/CWE-829 rule github-actions-runtime-package-without-integrity.

    The retained corpus covers direct npx -y/--yes and npm exec -y/--yes workflow execution, with explicit FP/FN boundaries. The repository's reproduced CodeGraph path is repaired with a committed SHA-512 lock, npm ci --ignore-scripts, local binary execution, and CODEGRAPH_NO_DOWNLOAD=1. Local exact-tree verification is 1,101/1,101 plus focused 35/35; hosted exact-head jobs failed before any step materialized, so #1424 remains Draft/Proposed and unmerged.

  3. seonghobae commented on Oct 9, 2026

    @seonghobae
    ContributorAuthor

    Detector review repair and owner boundary

    Draft detector PR #1424 is now at exact head 1a923ea9659462f95e6e8d333acb4186f6e6e80c, tree 9143b1291b1cdb455bc6f48cda54e161d0faa011.

    Independent review rejected the predecessor's PR-owned lock/workflow repair as an untrusted bootstrap boundary and found three further detector-scope/coverage issues. All four Important findings were repaired through additive commits. The effective PR diff is now detector/test/docs only; the protected workflow remains exactly one positive HIGH regression incident.

    Local exact-tree evidence is 1,103/1,103 full tests, 37/37 focused tests, and clean diff check. Hosted current-head jobs failed before steps materialized, so the PR remains Draft.

    Central #532 repaired central internal use but did not release a reusable immutable consumer contract. That remaining canonical owner prerequisite is now tracked by ContextualWisdomLab/.github#2610. This issue must remain open until the owner contract is protected, released, and consumed; no leaf lockfile workaround or finding suppression is treated as completion.

  4. seonghobae commented on Oct 9, 2026

    @seonghobae
    ContributorAuthor

    Final detector candidate

    Draft #1424 is now exact a0fab92ab9f854e641b2f7de46a3e39fea2562e3, tree 0c7c7f5b0705ca9d5c30625ac0ebb5591a2c5513.

    Successive independent reviews converted the initial proximity regex into a deterministic step/run and heredoc-state analyzer. It now covers compact/expanded env mappings, intervening YAML comments, block-scalar blank lines, exact package-selector and variable boundaries, heredoc delimiter resumption, and exact-target executable-wrapper materialization. The retained protected workflow remains exactly one expected HIGH incident.

    Evidence: 1,115/1,115 full tests, 69/69 GitHub Actions focused, Critical 0 / Important 0 final read-only review, clean diff check, and no protected workflow/package/lock/bootstrap change. Hosted current-head jobs still fail before steps materialize, so #1424 remains Draft.

    The actual consumer repair remains open at canonical owner ContextualWisdomLab/.github#2610; this issue is not complete until that immutable release is consumed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions