Files
portfolio-hub/.proofline/lines/line-0002/evidence/implementation-progress.md
T

5.8 KiB

구현 진행 상황 — GitHub Issue #25 비정식 증적

이 문서는 ProofLine canonical lifecycle artifact가 아니다. #25 구현 당시 GitHub 댓글을 출처와 함께 원문 보존한 비정식 증적이다. 이 증거는 로컬 구현·검증 상태를 기록하지만 ProofLine 정식 implementation chronology, delivery closure, push, publication, release 또는 deployment 완료를 소급 증명하지 않는다. Source: https://github.com/fourblocks2020/portfolio-hub/issues/25#issuecomment-5277080186 Comment ID: IC_kwDOR4l8PM8AAAABOonaeg Author: genichin Created: 2026-08-13T06:57:02Z Original body SHA-256: 1b616d14c9f05a75da1345ef58b7a69a05b1bf2e62b79063476490b758e06bd0


구현 진행 상황

  • 대상: discovery: requester-versioned GHCR 이미지 게시 계약
  • 브랜치: feat/25-ghcr-image-publication
  • 기준: origin/main (35e85981af845489236c18d709d0545c830e7f03)
  • 상태: 구현·검증·독립 리뷰 완료 — 로컬 커밋 완료, push/PR/publication/배포 미수행
  • 최종 업데이트: 2026-08-13T16:23:22+09:00

구현 계획 및 작업 목록

  • migration/Alembic resource를 installable package data로 전환하고 source↔wheel inventory parity를 검증한다.
  • Python 3.11·uv.lock 기반 multi-stage non-root Docker image와 deny-by-default build context를 구현한다.
  • strict vX.Y.Z tag-only, build-once, tested-artifact handoff, no-rebuild GHCR publication workflow를 구현한다.
  • image ID·archive SHA-256·OCI revision·canary·commit/version selector same-digest fail-closed helper와 contract tests를 구현한다.
  • installed payload, DB-disabled /health, isolated PostgreSQL migration + DB ping smoke와 cleanup 검증을 구현한다.
  • branch/main 무게시 검증 CI와 tag publication 권한 경계를 구현한다.
  • 게시된 image digest와 pre-start pfhub migrate-db, secret/read-only/writable mount의 operator handoff 경계를 문서화한다(배포 구현 제외).
  • focused release tests와 전체 pytest, lock/diff hygiene 및 실제 local image smoke를 통과한다.
  • 독립 코드 리뷰 결과를 반영하고 최종 작업 상태를 기록한다.

진행 기록

  • 2026-08-13T15:56:37+09:00 — 승인된 OQ(1-A, 2-B, 3-A, 4-A, 5-A, 6-A)를 구현 범위로 고정했다.
  • 2026-08-13T15:56:37+09:00 — 최신 원격 origin/main 35e85981af845489236c18d709d0545c830e7f03에서 격리 worktree와 기능 브랜치를 생성했다.
  • PR 생성, tag push, 실제 GHCR publication, GitHub Release 및 운영 배포는 이 구현 실행 범위에 포함하지 않는다.
  • 2026-08-13T15:58:13+09:00 — requester 확인에 따라 운영 배포 기능·배포 설정·배포 실행을 명시적으로 제외했다. digest 관련 문서는 게시 산출물의 operator handoff identity와 image rollback 경계 설명에만 한정한다.
  • 2026-08-13T16:05:01+09:00 — release focused tests 22 passed, scoped Ruff 통과.
  • 2026-08-13T16:06:34+09:00 — migration 경로 변경에 따른 기존 테스트를 정합화한 뒤 전체 pytest 통과.
  • 2026-08-13T16:07:00+09:00 — Python 3.11 locked non-root 로컬 이미지 build 성공.
  • 2026-08-13T16:07:26+09:00 — 구현 runner가 600초 제한으로 timeout 종료했다. 변경은 worktree에 보존되었고, 마지막 installed inventory/image smoke는 중단되어 미검증 상태다. 다음 담당은 팀장이며 diff 검토, 배포 문서 범위 보정, 실제 image smoke와 독립 리뷰를 계속한다.
  • 2026-08-13T16:08:49+09:00 — 보존된 로컬 이미지에서 installed inventory, DB-disabled /health, isolated PostgreSQL migration·DB ping, DB-enabled /health, non-root, cleanup smoke를 재실행해 exit 0 확인.
  • 2026-08-13T16:10:50+09:00 — 배포 범위를 넘던 실행 예시를 제거하고 publication artifact/operator handoff 계약만 남겼다. release contract에서 배포 명령 부재를 회귀 검증한다.
  • 2026-08-13T16:10:50+09:00 — 최종 스냅샷에서 uv lock --check, scoped Ruff, release 22 passed, 전체 620 passed, 6 skipped, git diff --check 통과. 이미지 UID/GID 10001:10001, OCI revision 기준 SHA 일치, installed migration 28개(0028 포함), .proofline 변경 없음 확인.
  • 2026-08-13T16:16:37+09:00 — 독립 리뷰 FAIL(1 MAJOR, 1 MINOR, 0 BLOCKER). MAJOR: canary가 docker create 출력에서 검출될 때 생성된 scan container cleanup이 누락될 수 있음. MINOR: startup cleanup tests가 정확한 attempted/removed resource identity 대신 호출 개수만 검사함.
  • 2026-08-13T16:20:45+09:00 — MAJOR를 수정해 docker create ID를 canary 검사 전에 보존하고 모든 post-create 실패에서 정확한 ID cleanup을 보장했다. MINOR를 수정해 attempted/removed container·network·volume identity가 정확히 일치하도록 구현·테스트를 강화했다.
  • 2026-08-13T16:21:20+09:00 — 보정 후 release 23 passed, 전체 621 passed, 6 skipped, 실제 image canary scan 및 startup smoke, lock·Ruff·diff 검증 통과.
  • 2026-08-13T16:22:58+09:00 — 독립 재리뷰 PASS. 기존 MAJOR/MINOR 모두 CLOSED, 새 회귀 및 배포 범위 확장 없음.
  • 2026-08-13T16:23:22+09:00 — 로컬 커밋 96260b6302e050c6e564f3eca4e723558f26246f(feat(release): add verified image publication pipeline) 생성. 작업트리 clean 확인.
  • 구현·검증·독립 리뷰는 완료했다. 기능 브랜치 push, PR, tag push, 실제 GHCR publication, GitHub Release 및 운영 배포는 수행하지 않았다.

각 작업이 실제로 완료되고 검증될 때마다 이 댓글의 체크박스와 진행 기록을 갱신한다. 체크 표시는 구현 완료 또는 해당 검증의 실제 통과를 의미하며, 배포·릴리스 완료를 의미하지 않는다.