Change pipeline
The Change pipeline screen lets you open a change for a new version of a prompt, skill, connector, rule, model,
policy, tool, agent or pack, and move it from draft to production through tests, security review and business approval,
with its evidence; a change can also be rejected. Portal path: /marketplace/changes. It is used by the publishers
(tenant_admin, developer) and by the security officers (security_officer) who review and reject.
What the screen shows
A Changes table with the filters Kind, Reference and Stage and Filter, then Refresh and New change:
| Column | Content |
|---|---|
| Kind | prompt, skill, connector, rule, model, policy, tool, agent or pack. |
| Reference | Reference of the object changed. |
| Version | Version carried by the change. |
| Title | Title of the change. |
| Stage | draft, test, security_review, business_approval, staging, production, monitoring, or rejected. |
| Pending approval | Identifier of the approval the next stage waits for, empty otherwise. |
| Updated | Date of the last change. |
A click on a line opens a side panel with the change read from the API. The list is read in one call. Empty state: No change, "Open a change for a new version, then advance it stage by stage with its evidence."
Actions
| Button or action | What it does | API call | Roles |
|---|---|---|---|
| Opening the screen, Kind, Reference, Stage then Filter | Reads the changes, optionally filtered. | GET /v1/marketplace/changes | Member of the tenant |
| New change then Create | Form Kind (required), Reference (required), Version (required), Title. The change starts at draft. | POST /v1/marketplace/changes | tenant_admin, developer |
| Click on a line | Opens the detail panel. | GET /v1/marketplace/changes/{id} | Member of the tenant |
Advance (stage neither monitoring nor rejected) | Dialog Approval and Evidence (JSON, {} by default); moves to the next stage, or opens the approval that stage needs and answers pending_approval with its identifier. The answer is shown. | POST /v1/marketplace/changes/{id}/advance | tenant_admin, developer, security_officer |
Reject (stage not rejected) | Dialog Reason (required); closes the change at rejected. | POST /v1/marketplace/changes/{id}/reject | tenant_admin, security_officer |
Roles
From services/control-plane/src/eai/domains/marketplace/routes.py: reading needs a principal inside a tenant;
creating requires PUBLISH_ROLES (tenant_admin, developer); advancing requires PUBLISH_ROLES or TRUST_ROLES
(tenant_admin, developer, security_officer); rejecting requires TRUST_ROLES (tenant_admin,
security_officer). platform_admin passes every check. The portal hides New change for the roles outside
ROLES.marketplacePublishers; Advance and Reject are shown to everyone and checked by the server.
Typical tasks
Bring a new prompt version to production
- Open the change. Button New change: Kind
prompt, Reference of the prompt, Version2.0.0, Title, then Create. Expected result: a line at stagedraft. If it fails:forbiddenwhen you are neithertenant_adminnordeveloper. - Advance with the evidence. Row menu > Advance, paste in Evidence the result of the tests (for example
the evaluation run identifier), submit. Expected result: the stage moves to
test, then the next stages. If it fails: the answer showspending_approvalwith an approval identifier when the stage needs a decision. - Pass the approval stages. When Pending approval is filled, other people decide it in Approvals inbox;
then Advance again with that identifier in Approval. Expected result: the stage moves on up to
production, thenmonitoring. If it fails: the approval is not approved yet.
Reject a change
- Reject. Row menu > Reject, type the Reason, submit. Expected result: the stage
rejected; Advance disappears. If it fails:forbiddenwhen you are neithertenant_adminnorsecurity_officer.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
change_closed (HTTP 409) | The change is already at monitoring or rejected. | Open a new change for a new version. |
change_not_found (HTTP 404) | Unknown change identifier. | Click Refresh. |
change_not_author (HTTP 403) | Only the author of a change, or a tenant_admin, advances it out of draft. | Ask the author or a tenant_admin. |
The answer of Advance is pending_approval | The next stage needs a four eyes approval. | Have it decided in Approvals inbox, then advance with the Approval identifier. |
forbidden (HTTP 403) | The action needs another role (see the Roles section). | Ask a tenant_admin or a security_officer. |
| No New change button | Your role is not a publisher role. | Ask a tenant_admin or a developer. |