AMR 生产发布影响报告

生成时间:2026-09-21 02:56:42Z(UTC);触发事件:生产环境已全量发布。发布已完成:四个服务 EKS Ready Pod 与 Catalog 均已运行 origin/main HEAD feb5eb7fafix(ci): delegate production authorization to runtime (#37)),因此当前六个维度的净待发布变更均为 0

口径:Web / API / Link / Admin 以 EKS Ready Pod 实际运行镜像 tag 里的 commit 为生产发布点;DB migration 与 Model Routing Catalog 以对应 Forgejo workflow 最近一次成功运行的 commit_sha 为生产发布点。本次发布窗口定义为「上一次生产观测(2026-09-21 02:04Z)里的发布点 → 本次发布后的生产实态」,本报告的 feature 表列出该窗口内进入生产的 feature(现已全部生效);窗口之前上线的内容统一放在「已在生产生效」一节。

全量发布确认

当前生产发布点(四个服务取 EKS Pod 实态,DB / Catalog 取 Forgejo workflow 记录)

Web、API、Link、Admin 的发布点来自 Grafana / Prometheus 查询 kube_pod_container_infokube_pod_status_ready{condition="true"}(namespace, pod) 关联后的 Ready Pod 镜像;DB migration 与 Catalog 的发布点来自 Forgejo workflow 最近一次成功运行的 commit_sha。越新的发布点意味着该维度已上线越多内容,feature 表里只允许列出发布点之后的变更;发布点之前的内容归入「已在生产生效」一节。

Web · EKS Pod 实态
Workload:nexu/amr-web · container web · 镜像仓库 amr-web
观察时间:2026-09-21 02:46:40Z
Ready Pods:2 / 2(updated 2,available 2)
实际 commit:feb5eb7fa(= origin/main HEAD)
镜像 digest:sha256:5978fd2e2a31a121a61947292689e59a64e9964ab7b172559466e6d6bd74de13
Pod 与镜像:186593931982.dkr.ecr.us-east-1.amazonaws.com/amr-web:prod-feb5eb7fa7df3c997d10460c7c856861d166ac1b
Workflow 审计:deploy-web-eks-prod.yml 最近成功 run #47540 @ 2026-09-21T02:30:15Z(2026-09-21T02:36:03Z 结束),与 Pod 实态一致
本次发布窗口(0abec4e99…feb5eb7fa,起点 2026-09-21 02:04Z):32 commits,其中 1 个触及该服务目录
API · EKS Pod 实态
Workload:nexu/amr-api · container api · 镜像仓库 amr-api
观察时间:2026-09-21 02:46:43Z
Ready Pods:2 / 2(updated 2,available 2)
实际 commit:feb5eb7fa(= origin/main HEAD)
镜像 digest:sha256:ce9939f10b5da205dfc354e7d41fb63462eb46d097238edf40c590f10fca7740
Pod 与镜像:186593931982.dkr.ecr.us-east-1.amazonaws.com/amr-api:prod-feb5eb7fa7df3c997d10460c7c856861d166ac1b
Workflow 审计:deploy-api-eks-prod.yml 最近成功 run #47537 @ 2026-09-21T02:22:15Z(2026-09-21T02:24:40Z 结束),与 Pod 实态一致
本次发布窗口(0abec4e99…feb5eb7fa,起点 2026-09-21 02:04Z):32 commits,其中 0 个触及该服务目录
Link · EKS Pod 实态
Workload:nexu/amr-link · container link · 镜像仓库 amr-link
观察时间:2026-09-21 02:46:46Z
Ready Pods:3 / 3(updated 3,available 3)
实际 commit:feb5eb7fa(= origin/main HEAD)
镜像 digest:sha256:fb52aa1b671f110d1615f560017703b85ecf38d9f613b158f358b821d454adca
Pod 与镜像:186593931982.dkr.ecr.us-east-1.amazonaws.com/amr-link:prod-feb5eb7fa7df3c997d10460c7c856861d166ac1b
Workflow 审计:deploy-link-eks-prod.yml 最近成功 run #47539 @ 2026-09-21T02:30:07Z(2026-09-21T02:34:04Z 结束),与 Pod 实态一致
本次发布窗口(180a48b23…feb5eb7fa,起点 2026-09-21 02:04Z):34 commits,其中 2 个触及该服务目录
Admin · EKS Pod 实态
Workload:nexu/amr-admin · container admin · 镜像仓库 amr-admin
观察时间:2026-09-21 02:46:54Z
Ready Pods:2 / 2(updated 2,available 2)
实际 commit:feb5eb7fa(= origin/main HEAD)
镜像 digest:sha256:38602be657776d73314da9fc33fb4696fc4ecdd6323100829e26e446fa87ddfa
Pod 与镜像:186593931982.dkr.ecr.us-east-1.amazonaws.com/amr-admin:prod-feb5eb7fa7df3c997d10460c7c856861d166ac1b
Workflow 审计:deploy-admin-eks-prod.yml 最近成功 run #47536 @ 2026-09-21T02:22:03Z(2026-09-21T02:23:19Z 结束),与 Pod 实态一致
本次发布窗口(58e310d6f…feb5eb7fa,起点 2026-09-21 02:04Z):33 commits,其中 0 个触及该服务目录
deploy-db-migrations-prod.yml · workflow 记录
维度:DB migration(发布点来自该 workflow 最近成功 run)
最近成功 run:#47209 · 2026-09-20T08:16:13Z
发布点 commit:ff912897dDeploy DB Migrations Prod
本次新增(ff912897d…feb5eb7fa):4 commits,其中 0 个命中该维度目录
窗口内 4 个 commit 均未触及 db/migrationsdb/schema无待执行 migration
deploy-model-routing-catalog-prod.yml · workflow 记录
维度:Model Routing Catalog(发布点来自该 workflow 最近成功 run)
最近成功 run:#47325 · 2026-09-20T12:10:49Z
发布点 commit:feb5eb7faDeploy Model Routing Catalog Prod
本次新增(feb5eb7fa…feb5eb7fa):0 commits,其中 0 个命中该维度目录
发布点即 HEAD,窗口内新增 commit 数为 0:catalog 与 main 完全对齐,无新增 seed / data 变更

EKS 观察口径:每个服务先用业务容器 + 镜像仓库精确过滤 kube_pod_container_info{container="…", image=~".*/amr-…:prod-[0-9a-f]{40}"},再按 (namespace, pod) 关联 Ready 指标,因此结果不含 API CronJob、Link Redis、metrics exporter 等附属工作负载。四个服务的 Ready Pod 在各自集合内 commit 与 digest 完全一致,spec / updated / available 副本数一致(2/2/2、2/2/2、3/3/3、2/2/2),样本时间距查询时刻均小于 5 分钟。四个服务的 deploy-*-eks-prod.yml 此前在 Forgejo 无运行记录,本次发布已产生可审计的成功记录,且与 Pod 实态一致。

本次全量发布涉及的 feature 和影响面

下表为本次全量发布窗口(2026-09-21 02:04Z 的生产发布点 → feb5eb7fa)内进入生产的 feature,现已全部在生产运行;六个维度分别以各自发布点计算。窗口之前已生效的内容见 「已在生产生效」 一节。

Feature 聚合规则:以业务行为、用户路径、数据契约和部署依赖为准;PR、commit、path 只作为可点击的追溯证据。

Feature / Author / Commits Web API Link Admin DB schema / migration DB catalog(seed)
MProvider 失败诊断与余额耗尽检测(Link)

Provider 调用失败时不再只留下合成的 502 upstream_credentials_exhausted:先在重试归一化之前输出结构化 attempt 日志(保留上游原始 status_code / code / type / message,按 request / provider / model / attempt 上下文关联最终错误);再把已确认的 OpenRouter(HTTP 402 / code=402)与 TeamoRouter(enterprise_insufficient_balance / insufficient_balance)余额耗尽契约归一为 failure_reason=balance_exhausted,并累加低基数计数器 gateway_provider_balance_exhausted_total(启动与目录重载时预热零值序列,保证 increase() 能看到首个事件)。Bifrost 重试、凭据轮换、最终响应与用量结算行为均不变,属于可观测性 / 运维面变更。对应 OPEND-3260,是排障能力与余额耗尽告警的前置依赖。

Author:nettee

已生效于 Link 发布点 feb5eb7fa;窗口内 Link 目录变更:3 个 commit(另有 8241f4ceb 只改 e2e 测试与 specs,无运行时变更)。

无。 无。 变更 services/link/internal/bifrostengine/engine.go(attempt 结构化日志)、third_party/bifrost-core/bifrost.goschemas/bifrost.go(透传原始 provider 错误)、internal/handlers/openai.go;新增 internal/providerfailure/classifier.go(余额耗尽分类契约)、internal/server/server.go(装配与指标预热)、internal/usage/metrics.go(指标注册),含单测与 e2e 回归。 无。 无。 无。
S认证定价页年付文案去重(Web)

AMR 两处定价面(Public Pricing embed 与 Cloud Pricing)的简体中文年付副行去掉重复的省钱金额:按年计费 · $168/年(省 $72)按年计费 · $168/年;独立折扣标签保留,卡片仍只表达一次优惠。新增单测契约同时校验两处文案来源,防止回归。对应 OPEND-3386,属用户可见文案变更,无数据或接口契约变化。

Author:Liu Yi

已生效于 Web 发布点 feb5eb7fa;窗口内 Web 目录变更:1 个 commit

变更 apps/web/src/components/commerce/plans/landing-pricing-content.tspricing-plans.tsx(各 1~2 行文案)与 apps/web/tests/unit/landing-pricing-sync.test.ts;仅影响 /pricing 云订阅与公共定价嵌入的中文年付副行渲染。 无。 无。 无。 无。 无 catalog 变更(data/json/public_pricing.json 早在 deploy-public-pricing-prod run #47216 @ 2026-09-20 08:27Z 就已在 057e94ed1 上发布,本次无净新增)。
S生产发布工作流授权收敛(CI,不产生 runtime 变更)

生产发布入口鉴权从「固定审批人名单」改为「Forgejo 授权 workflow + 运行时授权」:deploy-*-prod.yml 统一改为调用 authorize-prod-deployer.yml,并拒绝 run_attempt != 1 的原生重跑(重跑无法识别当前操作人)。这批 commit 位于六个维度发布点之后,影响的是发布执行方式而非运行时行为:发布必须由有权限的操作人从 main 发起一次新的 dispatch。本次 admin / api / link / web 四次 dispatch(#384#387)均在该规则下成功,说明授权链路已在生产生效。

Author:Liu Yi

无 runtime 变更。 无 runtime 变更。 无 runtime 变更。 无。 不影响 migration 执行内容(只决定谁能触发 workflow)。 不影响 seed 内容(只决定谁能触发 workflow)。

范围说明:本次发布窗口的 commit 区间里还包含 apps/cli(vela CLI:#8/#22/#29/#31 等)、docs/ops#30 发布 runbook 迁移到 Forgejo)、tools/e2e/ 与其余 CI / dev 变更。它们不由 Web / API / Link / Admin / DB / Catalog 六个维度发布(CLI 走 vela-cli-release.yml),因此不计入本次 AMR 生产发布的影响面,也不影响上表结论。

已在生产生效(本次发布窗口之前,本次未变化)

以下内容的 commit 均在本次发布窗口起点(2026-09-21 02:04Z 的生产发布点)之前,已在生产运行,本次发布没有变化。

发布后验证与后续观测

  1. 发布结果确认(已完成):admin / api / link / web 四个 workflow run(#384#387)均为 success;四个 Deployment 的 spec / updated / available 副本数一致,Ready Pod 的 commit 与 digest 完全一致,均运行 feb5eb7fa。
  2. Link 观测
    • 日志:{namespace="nexu", pod=~"amr-link-.*"} |= "provider_attempt_failed" | json,确认 upstream_status_codefailure_reason 与最终 502 可按 request 上下文关联。
    • 指标:gateway_provider_balance_exhausted_total 的零值序列应在启动 / 目录重载后即可见(increase() 可观测首个事件)。
    • 健康:错误率 / 延迟与 upstream_credentials_exhausted 比例不应因日志与分类逻辑变化而改变(重试与响应语义未变);如有偏差优先回看 e3ac842fb / ba534f3f6
    • 配套 GitOps 余额耗尽告警 PR powerformer/apps#573 的前置依赖(Link 变更)本次已上线,可进入启用阶段。
  3. Web 观测:中文环境下 /pricing 与公共定价嵌入的年付副行应显示为 按年计费 · $168/年,折扣标签仍显示一次优惠、无重复省钱提示;必要时清理 CDN / 浏览器缓存后复看。
  4. 发布流程注意:授权收敛后(#35#37),生产发布必须由有权限的操作人从 main 发起一次新的 workflow_dispatch,不能复用历史 run 的原生重跑。
  5. 下一次发布:当前生产发布点 = HEAD,净待发布为 0;下一次只需在 main 有新 commit 后按 DB → Catalog → Link → API → Web → Admin 的依赖顺序评估,并重新生成本报告。

备注:本报告的 workflow、commit、PR 与 compare range 均使用 Forgejo 链接(code.powerformer.net/core/amr);四个服务的 compare range 基于 EKS Pod 观察到的 BASE,DB / Catalog 基于各自 workflow 最近成功 run 的 commit。本次发布窗口起点取自 2026-09-21 02:04Z 的一次生产 Ready Pod 观测记录,仅用于界定「本次全量发布带入了什么」,不改变「当前生产发布点 = feb5eb7fa」的结论。