Wires a new required CI step — 'Check PRAUTOBLOGGER_* constants' — that
fails the build when any PRAUTOBLOGGER_* constant referenced in the
shipped plugin PHP is neither:
(a) define()d in prautoblogger.php (including conditional OPIK defines), nor
(b) protected by a defined() guard at the reference site.
This closes the regression class that caused the v0.19.0 admin-500 incident:
PR #156 deleted three constants from prautoblogger.php; CI stayed green because
tests/bootstrap.php holds fallback copies, masking the gap until prod boot.
Deliverables:
- scripts/check-constants.php (212 lines, no Composer deps, PHP 8.1+)
- .github/workflows/ci.yml: new 'check-constants' job
- CHANGELOG.md: one-line note under [Unreleased - Internal]
No plugin version bump (CI-only; shipped artifact unchanged).
AC-1 verified locally (Python3 equivalent logic):
- HEAD passes clean (0 violations)
- Remove PRAUTOBLOGGER_DEFAULT_RUN_CEILING_USD -> 2 violations caught
- Remove PRAUTOBLOGGER_DEFAULT_REQUEST_JSON_RETENTION_DAYS -> 3 violations caught
- Remove PRAUTOBLOGGER_DEFAULT_REASONING_MAX_TOKENS -> 1 violation caught
Agent-Session: ci-constants-guard-20260614
WordPress plugin that auto-researches topics from Reddit, generates
SEO-optimized articles via OpenRouter LLMs, runs them through a chief
editor agent, and publishes on a daily schedule.
Includes:
- Full generation pipeline (collect → analyze → score → generate → review → publish)
- Cost tracking and budget enforcement
- Admin UI: settings, review queue, metrics, activity log
- CI/CD pipeline (GitHub Actions → WordPress REST deploy)
- Unit test suite (PHPUnit + Brain Monkey)
- Structured logging with configurable verbosity
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>