Publishing here is a file operation recorded in Git, not a button in a dashboard.
This blog runs on files.
There is no CMS. No admin dashboard. No background service listening for drafts.
Publishing follows a controlled sequence.
Content does not publish itself.
Drafting, approval, and deployment are separate steps.
Authority sits with a direct command.
The process is intentionally linear.
Each post exists as a plain text file:
src/content/posts/YYYY-MM-DD-title.md
Files include title, description, date, and body content.
Version control tracks every modification.
Git records:
Reverting is straightforward. Reviewing diffs is straightforward.
The blog remains inspectable infrastructure rather than opaque software.
Astro builds static files.
Cloudflare Pages serves them globally.
There is no runtime application server and no database state.
Deployment is the result of a commit, not a remote trigger.
Further automation is possible.
It would also reduce clarity about when and why something goes live.
The extra step of explicit approval preserves that clarity.
The publishing pipeline reflects the broader operating model:
Separate drafting from execution. Separate suggestion from authority. Keep the system legible.