Sync — pushing up
Sync carries what you built here up to the superior. It never pulls, and it never pushes on its own: you compute the difference, read it, select what should travel, and push that.

Compute first, then choose
Compute diff asks both instances what they have and stores the result as records you can filter, sort and save views on, like any other list in the platform. The list is the stored result of the last computation — the Computed column says when — so nothing moves against a picture you have not seen.
Then you select rows and press Push selected. Only what you ticked travels.
What is compared, and what can travel
| Lane | Compared how | Can it be pushed? |
|---|---|---|
| Schema definitions | Entity and field definitions, property by property | Yes — applied first, so the shape exists before anything depends on it |
| Administration — roles, groups and the roles they grant, applications and modules, forms, dialogs, actions, business rules, UI policies, visibility and view rules, numbering, REST messages, scripted REST | Content, key by key, with both values shown | Yes — in the order they depend on each other, after the schema |
| Configuration records | Presence on each side, by the identity the record carries across instances | Yes, except people |
| Workflows | By content: the name and the canonicalised graph, with positions on the canvas ignored | Yes — as exact copies, with their status and dates |
Two kinds of workflow never travel, by construction: the companion workflow a business rule creates for itself (it is recomposed by the destination from the rule) and workflows owned by a seeded package such as ITSM or Agile (the destination's own installer owns them). Pushing those would create duplicates that nobody asked for.
Rows you will see, and what they mean
- New here — exists on this instance, not on the superior. Pushable.
- Differs — exists on both, and the content is not the same. Pushable.
- New on the superior — exists only above. Informational: Sync pushes up, so this is something to notice, not something to act on here.
- Conflict — the two sides cannot be reconciled by a push: a field whose type differs between them, or a workflow the other side cannot compare. Never guessed: the row says so and the push refuses it.
What never goes up
Sync goes to production, and production's people are its own: people and the members of groups never go up, although roles and groups do. A numbering sequence goes up but keeps the superior's own counter. And the four things that never travel at all stay where they are: the event registry, the egress allowlist, connections and credentials, and the staging configuration.
Secrets are not in the comparison and are not on the wire — not a password, not a token, not a credential — and neither is operational noise such as timestamps and last-error messages. What is matched is the real identity of the thing: the entity and name of a rule, a role's slug, a message key, a workflow's own id.
The consequence is worth stating plainly: pushing a configuration up never carries the superior's credentials away, and never replaces them with the lower instance's own.