---
title: "PR Review Pipeline + Refractor Rename + CI/CD Modernization"
description: "Reviewed 12 PRs across all PD repos, completed Refractor rename on Discord PRs, converted CI to tag-based builds, built /release skill, migrated pd-ops agent."
type: context
domain: paper-dynasty
tags: [paper-dynasty, deployment, discord, database, card-creation, ci-cd, refractor]
---

# PR Review Pipeline + Refractor Rename + CI/CD Modernization

**Date:** 2026-03-23
**Repos:** paper-dynasty-umbrella, paper-dynasty-database, paper-dynasty-discord, paper-dynasty-card-creation

## What Was Done

Major cross-repo operations session covering PR review, feature work, and infrastructure modernization.

1. **Reviewed 12 PRs across all repos** — Ran pd-ops GO/NO-GO assessment on `ai-reviewed` PRs, then launched 11 parallel pr-reviewer agents against all `ai-reviewing` PRs. Results: 4 approved, 7 changes requested, 1 do-not-merge.

2. **Merged 3 clean PRs** — card-creation #30 (pytest.mark.asyncio), card-creation #41 (timeout fix), database #127 (SQLite refs cleanup). Closed database #99 as superseded by #89.

3. **Completed Refractor rename on Discord PRs #87 and #88** — Renamed Evolution system to Refractor across cog files, test files, tier names, and badge labels. Multiple review-fix-push cycles to nail down the final tier names.

4. **Finalized Refractor tier names** — Base Card (T0) → Base Chrome (T1) → Refractor (T2) → Gold Refractor (T3) → Superfractor (T4). Badge labels: [BC], [R], [GR], [SF]. No badge for T0.

5. **Closed PR #84 and created fresh migration PR #128** — Old migration had schema drift (single player_season_stats vs split batting/pitching). Validated dev database has all evolution tables already applied; prod does not. New migration SQL generated from actual dev schema.

6. **Converted CI/CD to tag-based Docker builds** — Replaced branch/PR-triggered builds with tag-only triggers matching Major Domo pattern. Created PRs: database #129, discord #110. Removed calver/docker-tags/gitea-tag reusable actions. Added build cache to database workflow.

7. **Built `/release` skill** — Shell script at `.claude/skills/release/release.sh` that validates repo state, auto-increments CalVer from existing git tags, creates tag, and pushes to trigger CI. Supports database, discord, and card-creation services.

8. **Migrated pd-ops agent to project-level** — Moved from `~/.claude/agents/pd-ops.md` to `.claude/agents/pd-ops.md` in the umbrella repo. Updated with `/release` skill reference and new CI/CD conventions.

9. **Fixed card-creation #47** — Pushed url_get return type fix (dict, not aiohttp.ClientResponse). PR reviewer found the function body also needs updating — still returns raw response object.

## Decisions

### Refractor Tier Names (Final)
Settled on baseball card collecting terminology. T3 and T4 were both "Superfractor" initially — Cal corrected to shift all tiers down by one so each tier has a unique name. T4 ("Superfractor") is the only fully-evolved state.

### Tag-Based CI Over Auto-Tag
Chose fully manual tagging (Major Domo pattern) over auto-tag-on-merge. Auto-tagging adds noise — not every merge is release-worthy. The `/release` skill provides the convenience layer without the automation overhead.

### pd-ops Stays One Agent (No Separate pd-ci)
CI/CD knowledge belongs in pd-ops, not a separate agent. Release coordination is a natural extension of pd-ops' merge and deploy responsibilities. A `/release` skill gives the action without splitting the persona.

### context7 MCP Not Worth Adding Yet
Researched context7 for live library docs. FastAPI and aiohttp are well-indexed, but discord.py and Peewee (the two most hallucination-prone libraries) are not. Coverage too patchy to justify the overhead.

## Follow-Up

| Item | Repo | Priority |
|---|---|---|
| Merge CI PRs #129 and #110 | database, discord | High |
| Final review pass on Discord #87 and #88 | discord | High |
| Fix card-creation #47 (url_get body + hardcoded token) | card-creation | Medium |
| Address database #128 reviewer feedback (card_type uniqueness, rollback section) | database | Medium |
| Fix database #125 (skill scripts pagination + false assertions) | database | Medium |
| Fix database #126 (compose.production.yml + docs cleanup) | database | Low |
| Rotate exposed secrets (card-creation #50, database #9) | card-creation, database | High |
| Run evolution migration on prod when ready | database | Medium |
