Publishing looks simple when viewed from the final interface. Someone presses a button and an article appears.
The button hides the system.
A reliable publication process must know which version was approved, who authorized release, when it should become public, which validations must pass, and how the final result will be verified.
A publish time is an instruction. A publishing control proves what was released and why it was allowed to happen.
The approved artifact
A scheduler should release the exact article that was reviewed. It should not rewrite, summarize, or regenerate the content at publication time.
The source should therefore be stable before its status changes to approved. Any later change should create a new review event rather than silently altering what authorization covered.
The execution boundary
Time alone should not authorize publication. The workflow should require both an eligible timestamp and an approved status.
This separates two questions:
- When may the article be released?
- Has this specific artifact been authorized?
An article can be overdue but unapproved. It should remain unpublished. An article can be approved but scheduled for the future. It should wait.
Validation before action
Before writing to the public Journal, the system should confirm required metadata, a valid slug, an explicit timezone, an available source file, an unused destination, acceptable punctuation, and a recognizable Journal structure.
If any validation fails, the entire publication should stop visibly. Partial publication creates a harder problem than delayed publication.
Idempotency after action
A successful run changes the queue status to published and refuses to overwrite an existing destination. These controls allow the scheduler to run repeatedly without creating duplicate articles.
Repeated execution is normal in automation. Repeated consequences should not be.
The evidence record
The useful output is more than a public page. The workflow should retain the scheduled time, actual publication time, source path, output path, queue status, and Git commit.
That evidence answers a basic operational question:
Can we reconstruct what became public, when it happened, and which approved instruction caused it?
This is a small publishing system. The principle applies to larger financial workflows as well. Automation becomes dependable when execution leaves behind enough evidence to explain itself.