actions/checkout@v4, actions/setup-node@v4 (resolved via github.com)
runner-probe-first: probe the runner environment before any real test/build/publish step
healthcheck.sh --connect --innodb_initialized for MariaDB 11 readiness (not mysqladmin ping)
ubuntu-latest runs-on label (runner advertises ubuntu-latest, not self-hosted)
created
modified
.gitea/workflows/runner-probe.yml
D-PROBE-01: runs-on must be ubuntu-latest (not self-hosted) — runner has no self-hosted label; all downstream ci.yml workflows (Plans 02-04) MUST use runs-on: ubuntu-latest
D-PROBE-02: runner is Docker-executor mode (/.dockerenv present) — services: works; DB_HOST=mariadb in ci.yml
D-PROBE-03: MariaDB service container works and is reachable on hostname mariadb; DB readiness must use healthcheck, NOT mysql CLI (not installed in runner image)
D-PROBE-04: actions/cache@v4 is unreliable (timeout) — do NOT use cache in Plans 02/03; at most best-effort
D-PROBE-06: ChristopherHX/gitea-upload-artifact@v4 works — plans 03/04 MUST use this fork, never actions/upload-artifact@v4
D-PROBE-07: short SHA via ${GITHUB_SHA:0:7} produces 7 chars — D-04 publish tag expression confirmed valid
D-PROBE-08: GITEA_REGISTRY_PAT deferred to Plan 04 (operator decision; PAT not exercised in probe)
Probe-before-build: all CI phase work starts with a non-destructive probe run to confirm runner unknowns
No mysql CLI: DB readiness gating must use MariaDB service healthcheck or Node mysql2-based wait
Gitea artifact upload: always ChristopherHX/gitea-upload-artifact@v4, never actions/upload-artifact@v4
CI-01
CI-02
30min (Tasks 1+2 authoring) + probe run ~5min
2026-06-11
Phase 08 Plan 01: Runner Probe Summary
Gitea act_runner probed via runner-probe.yml (Docker-executor mode confirmed); all P-01..P-13 fork answers recorded — Plans 02-04 now have confirmed DB_HOST, runs-on label, cache strategy, artifact upload fork, and WebKit feasibility
Performance
Duration: ~35 min (authoring + probe execution)
Started: 2026-06-11T12:00:00Z
Completed: 2026-06-11T14:30:00Z
Tasks: 3 (1 human-action, 1 auto, 1 human-verify)
Files modified: 1 created
Accomplishments
Registered act_runner on the Unraid host (operator); GITEA_REGISTRY_PAT repo secret created (deferred to Plan 04)
Authored .gitea/workflows/runner-probe.yml covering all P-01..P-13 unknowns from 08-RESEARCH §Runner-Probe Checklist
Probe run completed (Gitea Actions run id 2, head sha 134d4db, conclusion: success, ~5 min); all downstream fork decisions are now grounded in real runner behavior
Probe Fork Answers
These answers are the primary output of Plan 01. Plans 02, 03, and 04 MUST consume them.
Probe
Question
Result
Implication
P-03
Runner mode
Docker-executor (/.dockerenv present)
services: works in all downstream jobs; DB_HOST=mariadb
P-05
Service container spawn
WORKS — mariadb:11 started healthy (Up (healthy) 3306/tcp)
Use services: mariadb in ci.yml
P-06
DB reachability via CLI
INCONCLUSIVE — mysql CLI not installed in runner image (command not found for both mariadb and 127.0.0.1); mariadb hostname resolves at Docker-network level
DB readiness gating in Plans 02/03 MUST NOT shell out to mysql CLI — use MariaDB healthcheck (healthcheck.sh --connect --innodb_initialized) and/or a Node mysql2-based wait; or explicitly install mariadb-client if a CLI step is required
P-08
Action resolution
WORKS — actions/checkout@v4 and actions/setup-node@v4 (node 22) cloned from github.com; first-run clone slow (~60-75 s each) but reliable
Do NOT use actions/cache in Plans 02/03; at most continue-on-error: true best-effort
P-10
Playwright WebKit deps
OK — npx playwright install --with-deps webkit chromium exits 0 (runs as root; no sudo/apt failure)
Phase-7 harness in CI is feasible; no extra apt workaround needed
P-11
Artifact upload
WORKS — ChristopherHX/gitea-upload-artifact@v4 uploaded (Artifact ID 1, download URL returned)
Plans 03/04 MUST use this fork; actions/upload-artifact@v4 is broken on Gitea
P-13
Short SHA
WORKS — ${GITHUB_SHA:0:7} = 134d4db (7 chars)
D-04 publish tag expression git.bergerhouse.net/.../familysync:${GITHUB_SHA:0:7} is valid
Security (T-08-01)
Secrets in probe log
CLEAN — probe references no secrets; log audit found no leak
PAT untouched in this plan
KEY DEVIATION for all downstream workflows
The runner advertises ubuntu-latest (and ubuntu-24.04 / ubuntu-22.04), NOT self-hosted. Plans 02, 03, and 04 MUST use runs-on: ubuntu-latest — NOT runs-on: self-hosted. The probe was originally authored with runs-on: self-hosted and fixed in commit 134d4db.
Task Commits
Task 1: Register act_runner + create registry PAT (operator-only) — no commit (infra only)
Task 3: Probe run + fork answers recorded — this SUMMARY (docs)
Files Created/Modified
.gitea/workflows/runner-probe.yml — probe-only workflow covering P-01..P-13; triggers only on gsd/phase-08-gitea-ci branch; non-destructive (no migrations, no pushes, no writes to main)
Decisions Made
D-PROBE-01 (runs-on label):ubuntu-latest is the correct label; self-hosted would leave jobs queued indefinitely. All downstream ci.yml workflows use ubuntu-latest.
D-PROBE-02 (executor mode): Docker-executor confirmed — services: is the correct DB bring-up path; the host-executor fallback (docker run) is not needed.
D-PROBE-03 (DB readiness): No mysql CLI in runner image — healthcheck-based wait is the only viable approach without additional apt installs.
D-PROBE-04 (cache):actions/cache timed out — skip cache in critical path; note in ci.yml comments.
D-PROBE-08 (PAT): Registry PAT deferral confirmed — probe exercised no secrets; PAT secret creation is a Plan 04 prerequisite.
Found during: Task 3 (probe run) — probe job stayed queued with no eligible runner
Issue: The plan specified runs-on: self-hosted but the runner advertises ubuntu-latest/ubuntu-24.04/ubuntu-22.04, not the self-hosted label
Fix: Changed runs-on: self-hosted to runs-on: ubuntu-latest in .gitea/workflows/runner-probe.yml; also updated the plan's key_links.via pattern to document the correct label
Verification: Probe run 2 (run id 2, head sha 134d4db) completed successfully (conclusion: success, ~5 min)
Committed in:134d4db
Total deviations: 1 auto-fixed (Rule 1 - Bug: wrong runs-on label)
Impact on plan: Fix was necessary for the probe to execute at all. No scope creep.
Issues Encountered
First probe run (run id 1) queued indefinitely because runs-on: self-hosted matched no runner. Identified and fixed in commit 134d4db. Second run completed successfully.
actions/cache@v4 timed out (P-09) — expected per 08-RESEARCH Pitfall 7; recorded as finding, not a failure.
mysql CLI absent from runner image (P-06) — inconclusive DB CLI reachability; mitigated by confirmed Docker-network hostname resolution and healthcheck-based wait strategy for Plans 02/03.
User Setup Required
act_runner registered on Unraid host (DONE — operator confirmed)
GITEA_REGISTRY_PAT repo secret with write:package scope — deferred to Plan 04 (operator decision; not needed until the publish job is designed)
Next Phase Readiness
Plans 02-04 have everything they need from this probe:
DB bring-up:services: mariadb:11 with healthcheck.sh --connect --innodb_initialized; DB_HOST=mariadb
runs-on:ubuntu-latest (confirmed label)
Cache: skip or continue-on-error: true only
Playwright:npx playwright install --with-deps webkit chromium works as-is
Artifact upload:ChristopherHX/gitea-upload-artifact@v4 only