From e986452372ff93173a653c55a67964e94f14a425 Mon Sep 17 00:00:00 2001 From: AutoGenUI <231675956+AutoGenUI@users.noreply.github.com> Date: Tue, 13 Oct 2026 20:47:44 +0800 Subject: [PATCH] Record v15 rollout and ordinary recipient role release --- docs/CURRENT_STATE.json | 112 ++++++++++++++---- docs/PROJECT_CONTEXT.md | 6 +- .../2026-10-13-normal-subscription.md | 20 +++- 3 files changed, 110 insertions(+), 28 deletions(-) diff --git a/docs/CURRENT_STATE.json b/docs/CURRENT_STATE.json index 258dc4b..7999044 100644 --- a/docs/CURRENT_STATE.json +++ b/docs/CURRENT_STATE.json @@ -13,17 +13,17 @@ "documentsAndCodeIntegrityVerified": true }, "production": { - "evidence": "Sites v14 deployment/source and public read-only HTTP checks on 2026-10-13; private environment and subscriber rows not read", + "evidence": "Sites v15 source/deployment, authenticated scoped role release and readback, and read-only public HTTP checks; no raw subscriber rows, signatures, mailbox contents or secret values exported", "url": "https://ag-ui.ai", "platformUrl": "https://ag-ui-ai.channely.chatgpt.site", "projectId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926", - "publishedVersion": 14, - "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_c60692fd0b988191b251e97a8b7b285e", - "deploymentId": "appgdep_6ace173e29688191b6636567e98e443d", + "publishedVersion": 15, + "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_5439f39b4eec8191923b907739149ead", + "deploymentId": "appgdep_6ace27243ef4819182c1308c573c4305", "deploymentStatus": "succeeded", - "deploymentCompletedAt": "2026-10-13T11:34:36.106757+00:00", - "sourceCommit": "32af985205988054ac77619828f0d5ab0112eee0", - "sourceTree": "545ab7adf8b2a8f5040ba1c8f8d51f4cdcdebd2b", + "deploymentCompletedAt": "2026-10-13T12:42:27.377707+00:00", + "sourceCommit": "40a5fe54ce86e261c031321d8ed823dde94ed178", + "sourceTree": "20002bc90b075a584c4ab883860684e6bd15d3f1", "githubReleaseCommit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", "environmentSetRevision": 12, "hasMcp": true, @@ -39,25 +39,25 @@ "existingSchedulesPreserved": true, "automationCountAtObservation": 2, "observedOn": "2026-10-13", - "githubIterationCommit": "ce64f39c158e72e06549cde97c6810c77a2ff5d8" + "githubIterationCommit": "5a4ef6df9ad0de3861aabb54ad0e838de83ade7b" }, "github": { "observedOn": "2026-10-13", "repository": "AutoGenUI/ag-ui.ai", "defaultBranch": "main", - "mainAtObservation": "ce64f39c158e72e06549cde97c6810c77a2ff5d8", - "evidence": "Subscription polish PR7 and main verify succeeded; separate documentation receipt may follow without redeployment", + "mainAtObservation": "5a4ef6df9ad0de3861aabb54ad0e838de83ade7b", + "evidence": "PR9 and main required verify succeeded; public receipt documentation follows without another deployment", "syncBranch": null, - "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/7", + "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/9", "draftAtObservation": false, "mergedAtObservation": true, - "mergedAt": "2026-10-13T11:32:18Z", - "validatedPullRequestHead": "96e7930fc0bcef8ba5c11517440031d01099b430", - "validatedTree": "545ab7adf8b2a8f5040ba1c8f8d51f4cdcdebd2b", + "mergedAt": "2026-10-13T12:39:14Z", + "validatedPullRequestHead": "d5b884f07423e311eca8f052b6ced71fab6404bd", + "validatedTree": "20002bc90b075a584c4ab883860684e6bd15d3f1", "requiredCheck": "verify", "branchProtectionPreserved": true, "branchPolicy": "Keep only main after completed iterations; temporary PR branches allowed and cleaned after verified merge", - "documentationFollowup": "Public v14 receipt via protected temporary PR; no further Sites deployment and no movement of v1.0.0 tag", + "documentationFollowup": "Protected temporary PR records v15 and authorized no-send role release; do not create v1.0.1 before user acceptance", "recoverablePreCleanupBundleVerified": true, "protectedManagedWorktreeRetained": true }, @@ -274,7 +274,7 @@ "Observe real queued cancellation and additional bounce scenarios only under authorized acceptance", "Before authorized production maintenance, refresh account permissions, full DNS/DKIM inventory, actual Sites deployment, D1 migration ledger and backup/restore capability, schedules and provider allowance" ], - "refreshRule": "Read current GitHub and operations/README.md before maintenance. Subscription polish v14 is dated evidence; docs-only receipts may follow deployed source. GitHub merge does not deploy Sites. Preserve immutable v1.0.0 tag and keep private operational data outside repository.", + "refreshRule": "Read live GitHub and operations docs before maintenance. v15 is deployed with scoped historical test-role release verified; docs-only receipts may follow the matching code tree. v1.0.1 requires explicit user acceptance. Preserve immutable v1.0.0 and private operational data.", "operationsHandoff": { "scope": "Public maintenance documentation; not production account inspection or deployment", "index": "docs/operations/README.md", @@ -650,7 +650,7 @@ }, "normalSubscriptionIteration": { "recordedOn": "2026-10-13", - "phase": "local-verification-complete-awaiting-required-CI-and-Sites", + "phase": "deployed-awaiting-user-acceptance", "baseMain": "e3df53558f72534a7c6f43909b689b30e8ffb27b", "notes": "docs/iterations/2026-10-13-normal-subscription.md", "requestedBehavior": [ @@ -662,7 +662,9 @@ "releaseGate": { "plannedTag": "v1.0.1", "tagCreated": false, - "requiresUserAcceptance": true + "requiresUserAcceptance": true, + "userAccepted": false, + "releaseCreated": false }, "schemaChanged": false, "secretsRead": false, @@ -709,9 +711,79 @@ "consoleErrors": 0 }, "testStability": "61-case suite passed 20 bounded runs after forced reverse-winner preference regression fix; first truncated 60/61 cause remains unconfirmed", - "httpStartupLimit": "Local ProxyWorker had one connection-lost 500 immediately after restart; direct owner-rejection 403 and subsequent ready 8/8 passed; no production inference" + "httpStartupLimit": "Local ProxyWorker had one connection-lost 500 immediately after restart; direct owner-rejection 403 and subsequent ready 8/8 passed; no production inference", + "links": "passed in PR and main required verify" }, "ownerStatusRead": "Authenticated sanitized status only; configured test role was unsubscribed, four historical deliveries delivered, no raw subscriber rows, email, signatures or secrets read", - "productionRoleRelease": "pending-deployment" + "productionRoleRelease": { + "status": "released", + "recipientRole": "public", + "independentReadback": "public", + "realMailSent": false + }, + "githubCodeCommit": "5a4ef6df9ad0de3861aabb54ad0e838de83ade7b", + "githubTree": "20002bc90b075a584c4ab883860684e6bd15d3f1", + "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/9", + "requiredVerify": { + "status": "passed", + "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38398627667/job/115300182530" + }, + "mainVerify": { + "status": "passed", + "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38398882271/job/115301067921" + }, + "sites": { + "version": 15, + "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_5439f39b4eec8191923b907739149ead", + "sourceCommit": "40a5fe54ce86e261c031321d8ed823dde94ed178", + "sourceTreeMatchesGithub": true, + "deploymentId": "appgdep_6ace27243ef4819182c1308c573c4305", + "status": "succeeded", + "completedAt": "2026-10-13T12:42:27.377707+00:00", + "environmentRevision": 12, + "hasMcp": true, + "existingAutomations": 2 + }, + "productionDataChanges": "Only owner-authorized configured recipient role release; no automatic opt-in, mail send, history deletion, quota reset or unrelated subscriber changes", + "publicHttp": [ + { + "path": "/zh/subscribe", + "http": 200 + }, + { + "path": "/en/subscribe", + "http": 200 + }, + { + "path": "/zh/feed.xml", + "http": 200 + }, + { + "path": "/en/feed.xml", + "http": 200 + }, + { + "path": "/feed.xml", + "http": 200 + }, + { + "path": "/api/subscription/status", + "http": 200, + "publicAggregate": { + "enabled": true, + "confirmedCount": 1, + "capacity": 250, + "remaining": 249, + "full": false, + "dailyLimit": 300, + "weeklyLimit": 250 + } + }, + { + "path": "/api/admin", + "http": 403 + } + ], + "productionBrowserLimit": "No new production DOM claim; previous agent browser navigation blocked. Synthetic desktop/mobile browser proof and native deployment/HTTP evidence are recorded separately." } } diff --git a/docs/PROJECT_CONTEXT.md b/docs/PROJECT_CONTEXT.md index 6157e32..d960451 100644 --- a/docs/PROJECT_CONTEXT.md +++ b/docs/PROJECT_CONTEXT.md @@ -4,11 +4,13 @@ ## 当前迭代:普通订阅身份与统一卡片顺序(2026-10-13) -用户最新要求覆盖上一轮的表单/反馈位置:容量卡片靠上,状态反馈统一在操作表单与取消/退订卡片之前。当前候选基线 main `e3df53558f72534a7c6f43909b689b30e8ffb27b`。完成本地检查、受保护 PR 合并和既有 Sites 发布后,将单独记录公开凭据;下节 v14 仅为前一轮发布。 +用户最新要求覆盖上一轮的表单/反馈位置:容量卡片靠上,状态反馈统一在操作表单与取消/退订卡片之前。迭代基线 main `e3df53558f72534a7c6f43909b689b30e8ffb27b`。[PR #9](https://github.com/AutoGenUI/ag-ui.ai/pull/9) 正常合入 `5a4ef6df9ad0de3861aabb54ad0e838de83ade7b`,[PR verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38398627667/job/115300182530) 与 [main verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38398882271/job/115301067921) 全通过。下节 v14 仅为前一轮发布。 用户已明确授权让历史固定测试收件人通过正常读者流程订阅。采用仅 owner 可调用、精确匹配固定配置目标且无发信的角色释放:保留测试历史与安全抑制,使旧签名失效;释放后仅为普通退订身份,仍需用户自己申请并完成邮件确认。不能把确认过的测试身份自动计为公众订阅,不能匿名释放任意测试地址或清零配额。公共仓库不记录真人邮箱、秘密或签名。 -本轮最终本地 35 基础 + 61 新闻/邮件 + 11 订阅 UI + 8 HTTP,共 115 项通过,TypeScript、内容、lint、审计、构建与原预算通过;JS 919522/gzip267400,CSS116185/gzip23035。双语桌面和手机验证统一卡片顺序;signup 布局用本地响应 mock,未发送邮件。补测强制反向赢家修复有效 pending 的语言/主题被重复申请覆盖问题,修复后 61 项连续 20 轮通过;初次截断失败与本地启动连接瞬断的界限保留在迭代记录。已读取获授权的脱敏 owner 状态,但生产角色释放仍需匹配版本部署后执行。 +本轮最终本地 35 基础 + 61 新闻/邮件 + 11 订阅 UI + 8 HTTP,共 115 项通过,TypeScript、内容、lint、审计、构建与原预算通过;JS 919522/gzip267400,CSS116185/gzip23035。双语桌面和手机验证统一卡片顺序;signup 布局用本地响应 mock,未发送邮件。补测强制反向赢家修复有效 pending 的语言/主题被重复申请覆盖问题,修复后 61 项连续 20 轮通过;初次截断失败与本地启动连接瞬断的界限保留在迭代记录。部署后已执行获授权的精确目标角色释放,返回 released/public;独立 owner status 再次确认 public。该操作不发信、不替用户确认;用户必须重新申请并使用新邮件确认,旧测试签名失效。未将真人地址或订阅行提交到公共仓库。 + +Sites 平台版本 **15** 于 12:42:27 UTC 部署成功,version ID `appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_5439f39b4eec8191923b907739149ead`,deployment `appgdep_6ace27243ef4819182c1308c573c4305`;源码 `40a5fe54ce86e261c031321d8ed823dde94ed178`,tree `20002bc90b075a584c4ab883860684e6bd15d3f1` 与 GitHub 已验版本一致。env revision 12、public、active、MCP 和原 2 项任务保留;无 schema、DNS、邮件开关或计划修改。公开中英订阅与三个 RSS HTTP 200、匿名管理 403、人数仍 1/250,余位249。没有新生产 DOM 验收结论;本地浏览器与生产 native/HTTP 证据分开记录。 `v1.0.1` 标签须等待用户验收确认,本轮只部署供验收;不创建该标签、GitHub Release 或移动 `v1.0.0`。详细记录见 [本轮维护说明](iterations/2026-10-13-normal-subscription.md)。 diff --git a/docs/iterations/2026-10-13-normal-subscription.md b/docs/iterations/2026-10-13-normal-subscription.md index a1a14be..09230ee 100644 --- a/docs/iterations/2026-10-13-normal-subscription.md +++ b/docs/iterations/2026-10-13-normal-subscription.md @@ -1,6 +1,6 @@ -# 2026-10-13 名额、反馈布局与正常订阅候选 +# 2026-10-13 名额、反馈布局与正常订阅 -本文记录 [订阅打磨 v14](2026-10-13-subscription-polish.md) 之后的新一轮用户授权:容量靠上,统一反馈放在表单及取消/退订动作上方;历史固定测试身份可由 owner 安全释放,再由读者自己走正常订阅确认。本页记录时是工作树候选,没有宣称正式目标已释放、下一次 Sites 部署已完成或真实邮件已送达。当前 GitHub/Sites 映射以 [PROJECT_CONTEXT.md](../PROJECT_CONTEXT.md) 和 [CURRENT_STATE.json](../CURRENT_STATE.json) 为准,不在文档中预填尚不存在的 SHA 或平台版本。 +本文记录 [订阅打磨 v14](2026-10-13-subscription-polish.md) 之后的新一轮用户授权:容量靠上,统一反馈放在表单及取消/退订动作上方;历史固定测试身份可由 owner 安全释放,再由读者自己走正常订阅确认。Sites v15 已部署,owner 无发信操作已释放指定历史测试角色并读回确认;正常读者的新邮件使用仍由用户验收,v1.0.1 等待用户确认。当前 GitHub/Sites 映射以 [PROJECT_CONTEXT.md](../PROJECT_CONTEXT.md) 和 [CURRENT_STATE.json](../CURRENT_STATE.json) 为准,不记录真人邮箱或签名。 ## 统一阅读顺序 @@ -30,7 +30,7 @@ release 不调用提供商/drain、不发送邮件、不关闭或开启公众邮 | 项目 | 本页当前记录状态 | | --- | --- | -| 布局与角色释放代码 | 候选;独立只读复核未发现具体阻塞,发布与真实释放另行核验 | +| 布局与角色释放代码 | 已部署;独立只读复核未发现具体阻塞,实际 owner 角色释放已读回确认 | | 隔离本地测试 | 基础 35、新闻/邮件 57 + 模板 4 = 61、订阅 UI 11、HTTP 8,共 115 项通过;新闻/邮件/模板修复后连续 20 轮完整通过;合成身份、隔离数据库和 mock 提供商,无真实投递 | | release 回归 | 新增 6 组:状态操作不发信/历史和额度保留、精确固定目标、抑制与未知提交及事务重查、并发 winner/幂等、预加载 producer/claim/签名管理、事务内历史时钟与跨代际回调;匿名 admin/MCP release 在调用数据库前拒绝,隔离 HTTP 覆盖匿名 403 | | TypeScript、lint 与依赖审计 | TypeScript 通过;lint 0 错误、2 条既有警告;audit 8 moderate、0 high、0 critical,原门槛保留 | @@ -40,9 +40,9 @@ release 不调用提供商/drain、不发送邮件、不关闭或开启公众邮 | 申请 UI-only mock | CDP 只 mock status/signup,表单保留、反馈在表单上方、容量在反馈上方,返回按钮数量 0;未真实收集地址或发送邮件 | | 退订与 pending 取消 | 合成英文订阅主动退订后公众人数为 0、表单数量 0,容量仍在反馈之前;合成中文 pending 管理 GET 的状态在取消按钮上方,GET 不取消,明确点击后进入退订终态 | | 浏览器范围与控制台 | 桌面 1440px、手机 390px;本轮上述本地浏览器控制台错误为 0。合成身份和 UI-only mock 不等于真实邮箱/生产 DOM 验收 | -| required GitHub verify、PR 合并 | 待本轮结果;本地构建不等于 CI 通过 | -| 本轮 Sites 部署、源码树与配置保留 | 待发布回执;不预设下一数字版本或声称 GitHub 自动部署 | -| 真实固定目标释放 | 尚未记录执行结果;不能从 mock 推断已完成 | +| required GitHub verify、PR 合并 | PR #9 正常合入 main,PR 与 main required verify 均通过 | +| 本轮 Sites 部署、源码树与配置保留 | Sites v15 succeeded,源码树匹配;env revision12、public、MCP和2项任务保留 | +| 真实固定目标释放 | owner release 返回 released/public,另一次 owner status 确认 public;无发信或自动订阅 | | 读者正常申请/确认或新真实投递 | 未记录本轮真实验收;须区分用户报告、provider 提交、回调与实际收件 | 隔离 HTTP 首轮在新启动的本地 dev ProxyWorker 请求 `/mcp` 时出现一次 `Network connection lost`/500,失败日志已保留。后续直接请求返回预期匿名 403,ready 后完整 8 项通过;这是本地开发代理瞬断观察,没有为此修改源码,也不能用后续通过抹去首次失败或推断生产故障。 @@ -52,3 +52,11 @@ schema、DNS、生产邮件开关、秘密、定时任务和免费预算应保 本轮先供用户验收,不创建 `v1.0.1` tag 或 GitHub Release;用户确认后才能另行标记版本。不可变 `v1.0.0` 与 v14 公开回执保留为历史,不移动旧标签。受保护 main 通过临时 PR 分支正常合并;完成核对后恢复长期仅 main 的策略。 Brevo 既有跟踪披露、提交/送达/收件区别和部分网络 Cloudflare 拦截继续保留;本地 mock、邮件合成预览或 HTTP 200 不扩大为真实投递/全网络可达证据。维护入口为 [邮件维护](../operations/email-subscriptions.md)、[owner 管理](../operations/owner-management.md)、[部署维护](../operations/deployment-maintenance.md) 与 [采编合同](../../public/automation.md)。 + +## 发布与角色释放回执 + +[PR #9](https://github.com/AutoGenUI/ag-ui.ai/pull/9) 与合并后 main 的 required verify 全通过。Sites 平台 v15 于 2026-10-13 12:42:27 UTC succeeded;源码与 GitHub tree 一致,env revision12、public、MCP、原2项任务保留。完整 SHA、opaque ID 与检查链接见 PROJECT_CONTEXT/CURRENT_STATE。 + +部署后 owner 使用精确匹配的 expectedRecipient 执行无发信 release,返回 released/public,另一次 status 确认 public。它不直接确认订阅或发送邮件;用户仍须申请并使用新确认邮件。公开人数仍1/250、余位249;中英订阅、三个RSS与状态200,匿名管理403。未读取秘密、实际邮箱内容或其他订阅行,未触发真实发送,也未新获生产DOM验收。 + +v1.0.1 标签与 GitHub Release 尚未创建,等待用户确认部署结果;v1.0.0 未移动。后续公开回执为文档提交,不追加一次部署。