Files
trex-core/.proofline/criteria/ac-0008.md
T

2.3 KiB

id, status
id status
ac-0008 active

locked runtime build input과 운영 설정·자격증명의 이미지 비포함

Criterion

trex-core Dockerfile은 runtime dependency 설치에 필요한 pinned uv tool, pyproject.toml, repository-owned uv.lock과 allowlisted trex_core/ package source만 application build input으로 copy하고 repository 전체를 copy하지 않아야 한다. runtime environment는 lockfile을 실제 소비하는 uv sync --locked --no-dev --no-editable 또는 의미상 동등한 명령으로 생성해야 한다. .dockerignore는 최소한 .git, .env, .env.*, config/와 .proofline/을 build context에서 제외해야 한다. image filesystem·history·inspect metadata와 export archive에는 운영 per-instance TOML, .env, credential, token, private key, 실제 connection string 또는 synthetic canary marker가 없어야 한다. 필수 config와 secret은 runtime에 read-only mount, secret 또는 environment로만 주입하고, 문서는 digest pin과 이전 digest rollback을 안내하며 trex-core-reset을 자동 rollback 절차에 포함하지 않아야 한다.

Verification

  • 성공 조건: Dockerfile의 copy/install allowlist에 pinned uv, pyproject.toml, uv.lock, package source만 존재하고 locked runtime sync가 성공한다. 제외 대상 .env.ci-canary에 고정 marker TREX_SECRET_CANARY_DO_NOT_SHIP을 둔 build에서도 marker가 filesystem, docker history --no-trunc, docker image inspect와 exported archive 어디에도 없으며 runtime 문서는 외부 주입과 digest rollback 경계를 설명한다.
  • 실패·경계 조건: missing/mismatched lockfile, unlocked pip install . 등 lock 우회, 필수 ignore 누락, broad COPY ., synthetic canary 또는 금지 파일·값의 검사 surface 노출은 FAIL이다. helper stdout/stderr에 canary가 노출되거나 rollback 안내가 DB reset·자동 data mutation을 포함해도 FAIL이다.
  • 검사 방법: tests/release/test_image_contracts.py의 Dockerfile·.dockerignore·documentation contract tests, 의도적 pyproject.toml/uv.lock mismatch build, synthetic canary가 있는 실제 image build, filesystem/history/inspect/export archive scan과 helper local-output 검사를 실행한다. 실제 credential이나 운영 connection string은 fixture·명령·evidence에 사용하지 않는다.