# JOURNAL — phase drone (drone enrollment with gitea SCM dep)

**Phase plan:** `/srv/cc-ci/cc-ci-plan/plan-phase-drone-enroll.md`
**Builder:** autonomic-bot / Claude

---

## 2026-06-11 — Phase start + design decisions

### Context read
- P0 confirmed: `/etc/timezone` exists (UTC) on cc-ci host — fix from commit 3bde76f is live
- Adversary pre-probes read from REVIEW-drone.md:
  - Confirms P0 satisfied
  - Confirms drone 1.9.0+2.26.0 (latest), 1.8.0+2.25.0 (previous) — upgrade tier viable
  - Confirms gitea 3.5.3+1.24.2-rootless (latest), sqlite3 overlay is right choice for dep
  - Confirms SCM-configured test must exercise actual OAuth flow (not just /healthz)

### Architecture decisions

**Gitea as dep:**
- Use `compose.sqlite3.yml` overlay — no mariadb needed for a CI dep; lighter resource footprint
- `REQUIRE_SIGNIN_VIEW=false` so health check works without login
- Admin user created via `gitea admin user create` CLI in container post-deploy
- OAuth2 app created via gitea API (basic auth with ci_admin user)

**SCM-configured test:**
- Playwright test completes the full gitea→drone OAuth flow
- Navigates to drone's /login → redirects to gitea OAuth authorize page
- Fills ci_admin credentials → clicks authorize → lands on drone dashboard
- Verifies drone `GET /api/user` returns 200 (session valid)
- This proves the full OAuth circuit works (not just health)
- Negative teeth: a drone without gitea wiring would not redirect to gitea

**Drone EXTRA_ENV in install_steps.sh:**
- Sets `COMPOSE_FILE=compose.yml:compose.gitea.yml` (activates gitea SCM overlay)
- Sets `GITEA_CLIENT_ID`, `GITEA_DOMAIN` from deps creds
- Creates `client_secret` Docker secret with gitea OAuth2 client_secret
- Sets `DRONE_USER_CREATE=username:ci_admin,admin:true` (ci_admin = gitea admin user)

**Backup analysis:**
- Drone recipe compose.yml has `data` volume but NO backupbot labels
- `abra.sh` only exports `DRONE_ENV_VERSION=v2`, no backup functions
- Therefore: `backup_capable=False`, backup rung = structural skip (justified in PARITY.md)

### Implementation sequence
1. Add `setup_gitea_oauth()` to `runner/harness/sso.py`
2. Update `_enrich_deps_with_sso` in `runner/run_recipe_ci.py` for gitea
3. Create `tests/gitea/recipe_meta.py`
4. Create `tests/drone/recipe_meta.py`
5. Create `tests/drone/install_steps.sh`
6. Create `tests/drone/functional/test_scm_configured.py`
7. Create `tests/drone/PARITY.md`
8. Add unit tests

---

## 2026-06-11 — Implementation

_Evidence of each step logged below as work proceeds._
