Milestone 0: import zappier billing, Verae middleware, and Zapier research

Compose-ready workspace: packages/zappier (rate card, portal, Stripe),
packages/verae-zapier-middleware (timestamp + NATS), packages/verae-zapier
(CLI app), vendor/zapier-platform, and research/zapier vendor corpus.

Gate 0 structure checks pass. Product code and research are not yet wired.
This commit is contained in:
George Lambert 2026-09-09 02:37:36 -04:00
commit b4150c8250
1364 changed files with 6814366 additions and 0 deletions

View file

@ -0,0 +1,42 @@
> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zapier.com/llms.txt
> Use this file to discover all available pages before exploring further.
# Pushing unlabelled semantic versions must be sequential
> Unlabelled integration versions must be published in order via `zapier-platform push`.
*Effective: 2026-02-23*
## What changed
These rules apply to **unlabelled** [semantic versions](/integrations/manage/versions#version-numbering) only (for example `1.2.3`). **[Labelled versions](/integrations/manage/labeled-versions)** (such as `1.2.3-beta` or `0.0.0-my-feature`) are not part of these checks.
When you push a new unlabelled version, the platform validates **two** things in addition to existing format checks.
### 1. You cannot skip a required predecessor
The API must see the right **previous** unlabelled release before it accepts the new one:
* **Patch bump** (`1.2.3`): the exact unlabelled `1.2.2` must already exist.
* **Minor bump** (`1.3.0`): at least one unlabelled `1.2.x` must exist.
* **Major bump** (`2.0.0` when coming from `1.x`): at least one unlabelled `1.x.x` must exist.
`1.0.0` is unchanged: there is no prior semver to require.
If the predecessor is missing, push fails with **403** and guidance like: *Version X requires Y to exist. Push version Y, then try again.*
### 2. You cannot insert an “intermediate” version behind a newer line
You also cannot push a version if a **newer** unlabelled version already exists in the segment that would make yours a backward insert:
* **`1.2.3`**: blocked if any unlabelled **`1.2.4` or higher** on the same `1.2.*` line already exists. Pushing **`1.3.0`** is still allowed when only `1.3.x` or `2.x.x` exists—those are not on the `1.2.*` patch line.
* **`1.3.0`**: blocked if any unlabelled **`1.4.x` or higher** on the same major (`1.*`) already exists. **`2.0.0`** is still allowed when only `2.x.x` exists.
* **`2.0.0`**: blocked if any unlabelled **`3.x.x` or higher** already exists.
If that applies, push fails with **403** and a message that an existing version would make this an intermediate release, which is not allowed.
## What this means for you
* Plan **patch → patch → minor → major** (or the minimal chain your history needs) using **unlabelled** semver when you are ready to record real releases; use **labelled** snapshots while iterating.
* If you are stuck because old versions were removed, you may still use **[deprecation](/integrations/manage/versions#deprecating-versions)** and, when appropriate, **[delete a deprecated version](/integrations/manage/deprecate#deleting-deprecated-versions)** so your remaining unlabelled history matches what you want to push next.