What is wrong-account prevention?
Before publish execution, Cenelira validates the persisted destination account against the schedule's workspace and platform, and refuses when that binding is missing or invalid.
Destination refusal
Before publish execution, Cenelira validates the persisted connected account for the platform inside the active workspace. If that binding is missing, deleted, cross-workspace, or on the wrong platform, the schedule is refused with a typed reason.
During account selection, the server can auto-resolve one clear account. When more than one matching account exists, it refuses instead of choosing. This page separates those paths and names the proof fields that record the destination when publish is allowed.
Before publish execution, Cenelira validates the persisted destination account against the schedule's workspace and platform, and refuses when that binding is missing or invalid.
Inside the target identity flow. Selection can auto-resolve one clear account. Persisted schedule execution requires an exact connectedAccountId and returns HTTP 409 with a typed reason when the target needs repair.
This is a publish-path refusal. It does not re-authenticate the platform user at publish time, and it does not audit posts that predate the connection.
Who this is for
The refusal surface earns its rent in workspaces where more than one account, workspace, or platform can plausibly be picked. It has less value when there is only one of each.
Mechanism
The target identity flow lives in src/lib/schedules/targetIdentity.ts. resolveConnectedAccountForPlatformSelection handles account choice and can auto-resolve one clear candidate. resolveScheduleTargetIdentity validates the persisted schedule target before execution. Repair cases use ScheduleTargetIdentityError with HTTP 409 and the shared error code target_repair_required.
At execution, the persisted schedule carries no connectedAccountId. The publish path refuses instead of choosing a destination.
409 target_repair_requiredThe saved connectedAccountId points at a row that no longer exists.
409 target_repair_requiredThe saved account row exists but belongs to a different workspace than the schedule. Cross-workspace delivery is refused.
409 target_repair_requiredThe saved account row exists but is bound to a different platform than the schedule.
409 target_repair_requiredNo connected account exists for this workspace and platform. The caller did not pass one, and the workspace has none.
409 target_repair_requiredTwo or more connected accounts match the workspace and platform, and the caller did not specify which one. The resolver refuses instead of choosing.
409 target_repair_requiredProof artifact
When proof exports are generated, the record uses schedule and connected-account state from the server. There is no separate marketing copy for the destination; the value is read from stored publish data.
Two columns in the 17-field proof record carry the resolved destination:
targetAccount stores the server-resolved label of the destination account. It is derived from the schedule's ConnectedAccount relation, not from caption text.
platform stores the platform identifier on the schedule. The export does not rerun target repair; it records the server-side schedule and account state for schedules in the selected range.
The signed PDF and CSV twin both carry these columns. See the proof record schema for the full 17-field inventory and the signing primitives.
What this does not claim
A publish-path refusal is one gate in a larger system. This page is explicit about where the gate stops.
FAQ
Six typed target-repair reasons, all returned as HTTP 409 target_repair_required across selection and execution paths: connected_account_required, connected_account_not_found, connected_account_wrong_workspace, connected_account_wrong_platform, connected_account_missing_for_platform, and connected_account_ambiguous_for_platform.
The resolver returns connected_account_ambiguous_for_platform when the caller did not specify which account to use. The schedule cannot move forward until an exact account is chosen.
The resolver returns connected_account_not_found and the schedule needs target repair before review or publish.
No. External reviewers approve a content version on a review link. Wrong-account prevention is a publish-path check. The two gates are independent and both run.
In the targetAccount and platform columns of the signed proof export. They are produced from server-side schedule and connected-account state, not from caption text or buyer-written copy.
Last reviewed 2026-04-24
A short checklist on how to set up workspace and account bindings so the refusal surface cannot drift. Leave an email and we will send it when the checklist is ready.