rfd-blog-engine
rfd-blog-engine is the publishing backbone for the devlog. It treats WordPress and YAML as two stores that must stay in sync, and it refuses to pretend they are when they aren’t.
The Problem
A blog post has a life cycle: draft, schedule, publish, syndicate, update, reschedule. Each step touches WordPress, the local YAML inventory, and sometimes Dev.to. Do any step partially and you end up with a post rescheduled in WordPress but not in YAML, or syndicated to Dev.to without the correct canonical URL pointing back home.
The Solution
Atomic reschedule: reschedule_post updates WordPress first, then the local YAML inventory. If the YAML write fails after WordPress succeeded, it raises. The two stores are never allowed to diverge silently.
Idempotent Dev.to sync: devto_sync runs daily. It supports --dry-run so you can preview what would change, and it verifies the canonical URL before writing anything to Dev.to. The same post running twice does not create a duplicate.
Honest reconciliation: The current phase is Inventory Reconciliation Tools. A systemic audit found zero tags, zero featured images, and no meaningful categories across the entire live blog. That is documented as a known finding driving the next engine phase, not as something to gloss over. The engine is being extended to close those gaps, not to hide them.
The Discipline
The engine does not claim posts are “managed” if the metadata is missing. The reconciliation tools will backfill only what the source data supports, and they will report what they cannot fix.
GitHub: RFD_Blog_Engine
Built with Python, the WordPress REST API, and the Dev.to API. 184 tests, 0 failures.