* docs: preserve original issue 5 body * feat: add service token rename command * test: normalize rich option errors
3.0 KiB
3.0 KiB
Activity Log
2026-09-19 — implementation start
- 사용자 승인:
req-0010approved,ac-0042~ac-0044active. - 계획: 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 suite5 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과 activeac-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환경에서 실패 selector1 passed, 전체 suite731 passed, 37 skipped, 실제 PostgreSQL selector11 passed, Ruff ratchet 3종introduced_findings=0, ProofLine validation과 diff check 통과를 확인했다.