Change const owner = 'peptiderepo' → 'peptide-repo' in deploy-health.yml.
This fixes the GitHub API owner ref after the user→org migration so the
monitor correctly queries repos under the peptide-repo org.
All uses:/repository: refs across the estate were already updated at migration
time — this was the sole remaining owner slug ref.
Agent-Session: claude/org-ref-fix-20260617
OS deps are pre-installed on the self-hosted peptide-vps runner host.
--with-deps invokes apt-get which fails under the runner's NoNewPrivileges
sandbox hardening. Flag was already dropped in e00f777; this adds an
inline comment so the intent is self-documenting for future maintainers.
Agent-Session: smoke-no-withdeps-20260617
Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
Drop --with-deps from npx playwright install chromium. The peptide-vps runner has OS deps pre-installed; --with-deps invokes apt-get blocked by NoNewPrivileges hardening. Binary-only install verified for ghrunner via SSH.
Agent-Session: smoke-playwright-nodeps-20260617
Reusable workflow uses: refs do not follow GitHub transfer redirects.
Update owner string from peptiderepo to peptide-repo post org-migration.
Agent-Session: fix-e2e-ref-20260617
Shared pipeline deploy-staging + deploy-production (deploy-app.yml) and the Playwright staging smoke (smoke.yml) now run on the org self-hosted runner [self-hosted, peptide-vps] from the VPS stable IP, fixing the Hostinger rotating-runner-IP throttle. CI/validate stay GitHub-hosted. v1.7.1.
QA: APPROVE-WITH-P2-NOTES (2026-06-17-e6f6b67); P2 = pre-existing stale peptiderepo/ owner refs (work via redirect, ref-cleanup batch).
Agent-Session: deploy-self-hosted-20260617
deploy-production now needs smoke; a smoke FAILURE blocks prod while a skipped
smoke (run_smoke:false) still allows it. Automated functional gate replacing
the removed human approval gate — hands-off but safe.
Agent-Session: cto gate-smoke
Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
Compare prod-deployment SHA to main and ignore changes confined to .github/,
tests/, and docs/build files (which the deploy excludes) — so infra-only commits
don't trip a false 'prod behind main' alert every day.
Agent-Session: cto monitor-drift-filter
Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
* ci(deploy): retry rsync on Hostinger runner-IP throttle + best-effort inventory guard
Pilot surfaced an exit-255 SSH connection timeout (documented Hostinger
rate-limiting of concurrent runner IPs). rsync now retries 4x/25s; the plugin
count guard is best-effort so a throttled check can't fail a good deploy.
Agent-Session: cto harden-deploy
* ci: add daily Deploy Health Monitor (drift + deploy-failure)
Scheduled GitHub Actions check (runs on GitHub infra, not the dead local cron):
for each app repo, compares the latest production deployment SHA to main and
flags failed deploy runs. Opens one de-duplicated 'deploy-health' issue when
something is off — the alarm that was missing when deploys silently broke.
Agent-Session: cto deploy-health-monitor
---------
Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
Single staging→smoke→production pipeline callable by every plugin/theme repo
via workflow_call. Replaces six copy-pasted per-repo deploy.yml files so deploy
logic is fixed once. Includes the pre/post active-plugin-count guard, LiteSpeed
purge, and health checks. Callers pass target_path + secrets: inherit.
Agent-Session: cto reusable-deploy
Co-authored-by: peptiderepo <peptiderepo@users.noreply.github.com>
When smoke.yml runs via workflow_call from another repo (peptide-repo-core,
peptide-starter-theme, etc.), GitHub Actions checks out the CALLER's repo
by default. The caller has no package-lock.json, so setup-node's npm cache
lookup fails with 'Some specified paths were not resolved'.
Fix: add repository/ref to the checkout step so we always fetch peptide-e2e
regardless of who calls the workflow. This ensures npm ci and Playwright
have the correct test code and dependency lockfile.