change-trains.list模块 24Staged change trains
先把变更推给集群的一部分,对照测得的信号检查,再逐阶段向前推进。
change-trains.list 读取工作区中的列车。每列列车携带一项变更(策略、包、角色或适配器)经过 staged、canary、rollout 和 promoted。只有在您推进它且其关卡通过时才会前进;失败或未测量的检查会使其停在原地。
change-trains.list模块 24先把变更推给集群的一部分,对照测得的信号检查,再逐阶段向前推进。
change-trains.list 读取工作区中的列车。每列列车携带一项变更(策略、包、角色或适配器)经过 staged、canary、rollout 和 promoted。只有在您推进它且其关卡通过时才会前进;失败或未测量的检查会使其停在原地。
对于策略、角色和适配器的载荷,列车只是一条记录加一个 exposure 回答;没有任何东西替您应用变更。请在请求路径上询问 exposure,或用 canary: true 注册包,然后 advance 和 sync。
trainsid、cargo(kind、ref、version)、stage、cohort、gate、rolloutSteps 和 。stage 接受 kind(policy、pack、role 或 adapter)、ref 和 version,以及可选的 、一个群组和一个关卡。已安排的列车不暴露给任何人。
在共享的演示工作区中使用演示密钥运行:任何人都可以看到其中的内容,因此请勿发送任何私密信息。 change-trains.list 文档
点击运行,将左侧的请求发送到共享演示工作区。
在共享的演示工作区中使用演示密钥运行:任何人都可以看到其中的内容,因此请勿发送任何私密信息。
一个符合 API 接受格式的请求,以及模块返回格式的示例响应。
GET /api/v1/acp/change-trains/list Authorization: Bearer av_workspace_•••• → 200 { trains, stages }
用 canary: true 注册包以安排一列列车。推进它并 sync 该包:只有列车暴露的智能体会被登记并获得授权。
适配器用智能体的 DID 调用 exposure,得知该智能体当前能看到哪些活动列车,答案仅来自活动列车。
在推进之前先读取 gate。结论会列出每个阻拦项,例如停留时间太短、缺少信任样本或有新冲突,并且不移动任何东西。
模块是对一件狭窄事情的强力保证。请仅在其确切范围内依赖它。
staged 直接晋升。kind 和 ref 只能有一列活动列车;安排第二列会返回 409 并指明第一列。默认值为 dwellMinutes 60、minTrustScore 60、minSamples 10 和 maxNewConflicts 0。stage 可以分别设置。它们针对暴露的群组测量,而不是整个集群。
百分比群组是基于列车 id 和智能体的 FNV-1a 分桶,因此不同的列车在不同的智能体上做金丝雀。未给出群组时,列车从 5% 开始。
使用工作区 API 密钥作为 Bearer 令牌进行认证。基础 URL 为 https://api.intramedial.com。
/api/v1/acp/change-trains/list列出列车,可按 kind 或 live 筛选,并给出每个阶段的数量。/api/v1/acp/change-trains/gethistorystagesdwellMinutes60。minTrustScore60。minSamples10。maxNewConflicts0。rolloutSteps[25, 50, 100]。historyat、from、to、why,以及允许前进的关卡读数。previousVersiongate 报告列车现在是否会前进,并指明每一个阻拦项,不移动任何东西。
advance 把 staged 推到 canary,然后是 rollout,按推出步骤逐步扩大,再到 promoted。被阻拦时返回 409 及原因。
revert 从任何活动阶段(包括 promoted)恢复被取代的版本。首次交付没有可退回的版本,因此 revert 会拒绝它,应使用 abort。
{
"trains": [
{
"id": "train_8d41",
"cargo": {
"kind": "policy",
"ref": "billing-writes",
"version": "2"
},
"previous": {
"version": "1"
},
"stage": "canary",
"cohort": {
"percent": 5
},
"gate": {
"dwellMinutes": 60,
"minTrustScore": 60,
"maxNewConflicts": 0,
"minSamples": 10
},
"rolloutSteps": [
25,
50,
100
],
"rolloutIndex": -1,
"departedAt": "2026-11-01T09:00:00.000Z",
"updatedAt": "2026-11-01T09:05:00.000Z",
"history": [
{
"at": "2026-11-01T09:00:00.000Z",
"from": "staged",
"to": "staged",
"why": "staged"
},
{
"at": "2026-11-01T09:05:00.000Z",
"from": "staged",
"to": "canary",
"why": "departed into canary"
}
]
}
],
"stages": {
"canary": 1
}
}回退一列列车,把被取代的版本放回去并停止暴露新版本。对于包,sync 随后撤销金丝雀曾授予的内容。
mandates.compile;列车不读取或应用授权源码。packs.list,其注册路由在您要求金丝雀发布时会安排一列列车。revert 或 abort。exposure 的消费方,或包的 sync 路由,才会据列车采取行动。当载荷带来了注册表尚未登记的智能体时,向 gate 或 advance 传入 candidates,使百分比取自正确的集合。
stage 需要 policies.propose。advance、revert 和 abort 需要 policies.approve。读取不需要。
kind 和 ref 一列活动列车;kind 是 policy、pack、role 或 adapter 之一。promoted、reverted 或 aborted 的列车不再前进,abort 会拒绝已处于其中之一的列车。advance 返回 409,并要求您再次推进。/api/v1/acp/change-trains/stage安排一列列车;在推进之前它不暴露给任何人。/api/v1/acp/change-trains/gate读取关卡结论而不移动列车。/api/v1/acp/change-trains/advance向前移动一个阶段,或返回阻拦项。/api/v1/acp/change-trains/revert恢复被取代的版本并停止暴露新版本。/api/v1/acp/change-trains/abort停止一列没有可退回版本的列车。/api/v1/acp/change-trains/exposure询问某智能体当前能看到哪些活动列车。此模块没有 MCP 操作。请通过 REST 从任何智能体或程序调用它。
coordination.approve05civics.settings23Workspace constitution为此工作区的每种紧急程度,设定真人必须多快回答您的智能体的提问,以及谁值班。lenses.run26Governance lenses对您交给它的数据运行固定的检查,得到带证据的通过或失败,每次答案都相同。attestation.policy27Artifact build attestation决定您接受哪些构建者来构建策略快照和检测器包,并拒绝受信任作者签名但由另一次构建产生的内容。pack-revenue.balances28Pack revenue ledger在任何人获得付款之前,查看每位包作者赚了多少、还欠多少,每一个最小货币单位都有账可查。