Files
portfolio-hub/.proofline/lines/line-0010/evidence/activity-log.md
T
genichin deaaa96c46 feat: add service token rename command (#40)
* docs: preserve original issue 5 body

* feat: add service token rename command

* test: normalize rich option errors
2026-09-19 21:19:39 +09:00

3.0 KiB

Activity Log

2026-09-19 — implementation start

  • 사용자 승인: req-0010 approved, ac-0042~ac-0044 active.
  • 계획: repository protocol/PostgreSQL atomic rename, service same-name no-op, CLI response/command, docs와 unit/real-PostgreSQL tests를 구현한다.
  • 범위 제외: schema migration, HTTP API, production token mutation/rollout.
  • 다음 행동: 실패하는 focused tests를 먼저 추가하고 최소 구현 후 전체 검증한다.

2026-09-19T21:00:42+09:00 — implementation verified

  • 구현: active service token을 단일 PostgreSQL UPDATE ... RETURNING으로 rename하고 service same-name no-op, duplicate domain error, Typer confirmation/--force/-f, secret-free table/JSON response, README 예시를 추가했다.
  • focused test: rename service/CLI selector 9 passed; real-PostgreSQL rename suite 5 passed.
  • 실제 backend: current migrations 적용 후 보호 필드·bearer principal 보존, active/revoked/missing 경계, duplicate rollback, rename-vs-rename 및 rename-vs-issue independent-connection 경쟁을 검증했다.
  • CI selector: 기존 PostgreSQL workflow 단계에 tests/test_service_token_rename_postgres.py를 등록하고 release contract test로 runtime password-variable 조합과 selector 존재를 검증했다. Corporate-action 및 rename PostgreSQL selector 합계 11 passed.
  • sabotage: SQL rename parameter를 일시적으로 old name으로 대체했을 때 persisted-name assertion이 의도대로 실패했고 복원 후 동일 selector 1 passed였다.
  • 전체 회귀: 742 passed, 26 skipped; proofline validate, git diff --check, compileall 및 신규 PostgreSQL 파일 Ruff F/I 검사가 통과했다. Ruff ratchet은 commit 전 working tree를 포함하지 않으므로 commit 후 canonical selectors를 다시 실행한다.
  • 독립 리뷰: runtime/test/security 두 검토의 구현 의미·coverage 평가는 적합했다. DSN 표시 관련 blocker는 tool credential-redaction을 literal로 오인한 false positive였으며, byte-level non-secret re-review에서 ${POSTGRES_PASSWORD} 사용과 literal placeholder 부재를 확인하고 최종 PASS했다.
  • lifecycle: approved req-0010과 active ac-0042~ac-0044는 기존 ProofLine 관례대로 유지한다. production token mutation 및 rollout은 수행하지 않았다.

2026-09-19T21:13:04+09:00 — CI portability correction

  • PR #40 최초 CI는 Python 3.11/Rich의 ANSI escape가 required-option stderr의 --new-name 내부에 삽입되어 literal substring assertion 한 건이 실패했다. CLI exit code와 required-option 동작은 정상이며 production implementation 결함은 아니었다.
  • 테스트를 click.unstyle()로 stderr 정규화 후 option contract를 확인하도록 수정했다.
  • CI와 같은 Python 3.11 및 uv sync --extra dev --locked 환경에서 실패 selector 1 passed, 전체 suite 731 passed, 37 skipped, 실제 PostgreSQL selector 11 passed, Ruff ratchet 3종 introduced_findings=0, ProofLine validation과 diff check 통과를 확인했다.