VibeShip VibeShip
Operations
· 1 min read

Drafts, schedules, and the discipline of public surfaces

Publishing is a business rule. Your build should enforce it.

Publishing is not a toggle

Most teams treat “draft” as a UI state. We treat it as a contract.

If a post is public, it must have:

  • a stable slug
  • a title and description that hold up in search and social
  • a publish date
  • an author, category, and tags

Where this goes wrong

Without rules, drafts leak into:

  • category/tag pages
  • RSS feeds
  • sitemaps
  • and search indexes

That’s how you accidentally ship broken metadata to Google.

The VibeShip posture

Our blog is a product surface. That means:

  • build-time validation is preferred over “best effort”
  • public lists only show public posts
  • “scheduled” is real: publish date in the future means not public yet

Shipping gets easier when your system refuses to lie.