Preflight and fixes
The fit-check validates each placement against its platform's real rules and returns a per-placement verdict — passing, or failing with one-click Fixes.
Before you publish, Inklate runs a fit-check (preflight) that validates each placement against the real rules of its platform and returns a per-placement verdict. A passing verdict means the channel is ready to schedule; a failing one names why and offers one-click Fixes, and media that’s still processing or failed is flagged beside the verdict.
Preflight is the same verdict publish itself would produce — it runs the exact ladder the write path and the publish worker use, so the fit-check can never promise what publishing would refuse.
What preflight checks
For each placement, preflight runs an ordered ladder and the first refusal wins:
- Reachability — is the channel connected and its grant active? A disconnected channel or expired token refuses here (category
auth) and needs a reconnect, not a retry. - Scopes — does the connection carry the permissions the format needs?
- Content — does the adapted text and media fit the platform’s rules: length, item counts, media count, aspect ratio, mixing?
- Org policy — banned terms and blocked links, if your organization configured them.
Quiet-hours rules aren’t checked in preflight (there’s no schedule yet) — they apply at schedule time.
Per-placement verdicts
The fit-check row under the editor shows each channel’s verdict:
- Fits — a calm green “ready to schedule” line.
- Needs a fix — a red row naming the exact reason (“truncated at 280”, a missing required image), with fix buttons where a repair exists.
- Warnings — amber notes for soft issues the adaptation surfaced (for example, “dropped 2 images” when a story carried more than a format allows), which don’t block publishing.
The Fix vocabulary
A Fix is a machine-readable repair the composer renders as a one-click button and an agent applies programmatically (via apply_fix). The vocabulary:
| Fix | When it appears | What it does |
|---|---|---|
trim_to_fold | Primary text is over the format’s limit | Trims the text to fit. |
rebalance_thread | Too many or too-long thread items | Caps the item count and trims each. |
crop_to | An image doesn’t match a required aspect ratio | Crops a derivative to the ratio. |
Only a content refusal from the connector carries fixes; a policy refusal (a banned term, a blocked link) names the reason but has no automatic repair — you edit the copy yourself.
Media-readiness signals
Media readiness is shown beside the placement verdicts, not inside them, because a still-uploading or broken file isn’t a content problem with a channel:
- Processing — an attached asset hasn’t finished. The composer waits.
- Failed — an asset is terminal (upload broke, rejected, or flagged by a scan). Remove it.
Neither lights a channel’s red Fix dot, but both hold the publish and schedule actions until they clear — each with its own honest message. See Images and video.
What preflight blocks
A failing preflight blocks scheduling and approval for the whole post: you can’t schedule a placement that won’t publish, and a reviewer is never asked to approve a version that can’t ship. Repair every flagged channel — and clear any processing or failed media — and the publish and schedule buttons unlock.
Images and video
Attach images and video that upload directly over a presigned PUT and are validated against each channel's limits, moving through processing to ready or failed.
Scheduling
Schedule each channel at its own time, watch one aggregate status roll up across them, and work in your local timezone while Inklate stores everything in UTC.