Phase 11 adds a production control plane without changing DevPulse's manual-publishing boundary.
- Generation invocations from external cron, manual overrides, and recovery actions
- Visual PNG/PDF rendering and durable-storage stages
- Owned-repository synchronization
- Service-health checks and retention cleanup
OperationalRun stores the invocation outcome, duration, current stage, retry chain, bounded error classification, and recovery instruction. OperationalEvent stores stage timings. Metadata is limited to counts and internal identifiers; prompts, post bodies, credentials, and visitor identifiers are not operational telemetry.
The authenticated Operations page checks:
| Service | Probe |
|---|---|
| PostgreSQL | SELECT 1 through Prisma |
| DeepSeek | Authenticated models request; no completion tokens |
| Cloudflare R2 | Two-byte write followed by deletion |
| GitHub | Authenticated rate-limit request |
| Visual renderer | In-memory font-backed PNG render |
| External cron | Age and outcome of the latest observed cron generation invocation |
| Deployment | Presence and consistency of required environment groups; values are never returned |
Health snapshots are historical. The newest snapshot per service is displayed, and idle cron runs refresh snapshots at most once every six hours.
- Generation: only failed Phase 2+ jobs with a valid persisted checkpoint can resume. Research continues at
nextChunkIndex; completed research resumes at write. Existing sources are preserved. - Visual: only failed assets can retry. The stored, previously audited visual brief is reused and the same asset row is completed.
- Repository: only the selected owned repository is re-synced. Existing incremental cursors and deduplication rules remain active.
Recovery never publishes to X or LinkedIn.
Opening Operations marks operational heartbeats older than 20 minutes as failed, visual renders older than 15 minutes as failed, and repository syncs older than 20 minutes as failed. Operational runs, their cascading events, and health snapshots are retained for 30 days. Active runs are never deleted.
- Apply the Prisma schema:
npx prisma db push. - Deploy the current build to Vercel.
- Open Operations and run health checks.
- Trigger the external cron once.
- Refresh Operations and confirm
cronbecomes healthy with an invocation less than 45 minutes old.