From 802336366cb187385b80d0810ece5622679ebd1e Mon Sep 17 00:00:00 2001 From: AutoGenUI <231675956+AutoGenUI@users.noreply.github.com> Date: Tue, 13 Oct 2026 18:26:25 +0800 Subject: [PATCH] Record v1.0.0 production release and operational evidence --- docs/CURRENT_STATE.json | 256 +++++++++++++++++++++++++++++++++----- docs/PROJECT_CONTEXT.md | 37 ++++-- docs/operations/README.md | 12 +- docs/releases/v1.0.0.md | 30 ++++- 4 files changed, 282 insertions(+), 53 deletions(-) diff --git a/docs/CURRENT_STATE.json b/docs/CURRENT_STATE.json index c171483..d111cf5 100644 --- a/docs/CURRENT_STATE.json +++ b/docs/CURRENT_STATE.json @@ -13,47 +13,50 @@ "documentsAndCodeIntegrityVerified": true }, "production": { - "evidence": "Sites metadata and source refreshed on 2026-10-13; private environment values were not read", + "evidence": "Formal v1.0.0 publication receipts, Sites metadata/source and read-only public checks on 2026-10-13; private environment values and subscriber rows were not read", "url": "https://ag-ui.ai", - "publishedVersion": 12, - "deploymentStatusAtHandoff": "succeeded", - "sourceCommit": "6027589c4bac13e456ad47d5ef2f0981ef18d94e", - "sourceTree": "f961865e0d744fffa8fffb3e4d978e8185f56f93", - "publicMailEnabledAtHandoff": true, - "domainVerifiedAtHandoff": true, - "mailAcceptancePassedAtHandoff": true, + "platformUrl": "https://ag-ui-ai.channely.chatgpt.site", + "projectId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926", + "publishedVersion": 13, + "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_e5bc604caacc819184c81bd223d5c9ee", + "deploymentId": "appgdep_6ace04b15f408191ad18bdcbbe4be3d3", + "deploymentStatus": "succeeded", + "deploymentCompletedAt": "2026-10-13T10:15:25.780042+00:00", + "sourceCommit": "8512d230c7df3bece70c503af02ff2acce0dbe9d", + "sourceTree": "661f59e806ce2174a33d6d87b9b44d0959400554", + "githubReleaseCommit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", + "environmentSetRevision": 12, + "hasMcp": true, + "publicAccessMetadataVerified": true, + "activeMetadataVerified": true, + "publicMailEnabledAtObservation": true, "confirmedSubscriberCapacity": 250, - "dailySubmissionLimitAtHandoff": 300, - "weeklySubmissionBudgetAtHandoff": 250, + "publicAggregateAtObservation": { + "confirmedPublic": 1, + "remaining": 249, + "scope": "Public aggregate only; no subscriber rows or signed links read" + }, "existingSchedulesPreserved": true, - "metadataObservedAt": "2026-10-13T10:10:32Z" + "automationCountAtObservation": 2, + "observedOn": "2026-10-13" }, "github": { - "observedAt": "2026-10-13T10:10:32Z", + "observedOn": "2026-10-13", "repository": "AutoGenUI/ag-ui.ai", "defaultBranch": "main", - "mainAtObservation": "f670b23d32e6de1e4497f46113ef277fc3fc97cc", + "mainAtObservation": "71ff116e033f0295a44415d13acd92bf1c0b97b6", + "evidence": "Formal release publication receipts; later documentation commits are not part of the immutable release tag", "syncBranch": null, - "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/4", + "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/5", "draftAtObservation": false, "mergedAtObservation": true, - "codeAndCiVerificationCommit": "b0f0a40748474e3ce1f5918a7f9c4acff6f1a4f3", - "documentationCommitsFollowVerificationCommit": true, - "importedSourceCommits": 11, - "importedTrackedFiles": 174, - "conflicts": [], + "mergedAt": "2026-10-13T10:13:52Z", + "validatedPullRequestHead": "04c99295995993c93c0cb3596a55f049369601f7", + "validatedTree": "661f59e806ce2174a33d6d87b9b44d0959400554", "requiredCheck": "verify", "branchProtectionPreserved": true, - "historicalSyncBranch": "codex/ag-ui-ai-v12-sync", - "mergedAt": "2026-10-13T09:47:47Z", - "validatedPullRequestHead": "219dd12bbac3662662f942257c6c6b292f37f577", - "validatedTree": "e36d9422315db154c01f4f9eaa44ac0230506ded", - "primaryMainBeforeSynchronization": "525ec78904ab7e2b97717adc7ac13bfd3f5f3db0", - "primaryMainAtObservation": "f670b23d32e6de1e4497f46113ef277fc3fc97cc", "branchPolicy": "Keep only main after completed iterations; temporary PR branches allowed and cleaned after verified merge", - "branchesAtLastCompletedCleanup": [ - "main" - ], + "documentationFollowup": "Public receipt updates use a temporary PR branch; no new Sites deployment and no movement of v1.0.0 tag", "recoverablePreCleanupBundleVerified": true, "protectedManagedWorktreeRetained": true }, @@ -244,7 +247,8 @@ "pushedAtObservation": true, "mergedAtObservation": true, "historicalBranch": "codex/ag-ui-ai-v12-sync", - "rebasedRepairCommit": "c62c5c874d408c35635adc0ee74f299f8012d7c2" + "rebasedRepairCommit": "c62c5c874d408c35635adc0ee74f299f8012d7c2", + "historical": true }, "limitations": { "anonymousEmailTrackingNotEquivalentToDisabledTracking": true, @@ -257,7 +261,9 @@ "secretValuesReadOrExported": false, "realMailSent": false, "newPaidActions": false, - "testsUseIsolatedLocalD1AndDisabledMail": true + "testsUseIsolatedLocalD1AndDisabledMail": true, + "historical": true, + "scope": "Earlier v12 GitHub synchronization only; formal publication is recorded separately in release" }, "openEngineeringWork": [ "Track 8 moderate dependencies without weakening the audit gate", @@ -267,7 +273,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": "Before the next iteration read live GitHub state and docs/operations/README.md; use dated handoff evidence for production until an authorized refresh. GitHub merge does not deploy Sites. Keep private operational data outside this repository.", + "refreshRule": "Before the next iteration read live GitHub state and docs/operations/README.md. The completed v1.0.0 release receipt is dated evidence, not live configuration. GitHub merge does not deploy Sites. Preserve immutable release tag and keep private operational data outside this repository.", "operationsHandoff": { "scope": "Public maintenance documentation; not production account inspection or deployment", "index": "docs/operations/README.md", @@ -283,7 +289,8 @@ "publicHttpsFromCurrentEgress": "Cloudflare 403; not a new browser acceptance", "accountDnsInventoryAndDkimSelectorVerified": false, "managedD1BackupRestoreCapabilitiesVerified": false, - "documentationCommit": "Query GitHub; this snapshot does not self-reference its own commit" + "documentationCommit": "Query GitHub; this snapshot does not self-reference its own commit", + "historical": true }, "releaseCandidate": { "version": "1.0.0", @@ -326,6 +333,189 @@ "schemaChanged": false, "productionSecretsRead": false, "productionConfigurationChanges": false, - "rolloutLimit": "New client requires subscriptionType; use matching client and Worker and refresh open pages after rollback" + "rolloutLimit": "New client requires subscriptionType; use matching client and Worker and refresh open pages after rollback", + "historical": true, + "archivedBy": "release.version 1.0.0; original candidate evidence retained without rewriting its phase" + }, + "productionV12Snapshot": { + "historical": true, + "evidence": "Sites metadata and source refreshed on 2026-10-13; private environment values were not read", + "url": "https://ag-ui.ai", + "publishedVersion": 12, + "deploymentStatusAtHandoff": "succeeded", + "sourceCommit": "6027589c4bac13e456ad47d5ef2f0981ef18d94e", + "sourceTree": "f961865e0d744fffa8fffb3e4d978e8185f56f93", + "publicMailEnabledAtHandoff": true, + "domainVerifiedAtHandoff": true, + "mailAcceptancePassedAtHandoff": true, + "confirmedSubscriberCapacity": 250, + "dailySubmissionLimitAtHandoff": 300, + "weeklySubmissionBudgetAtHandoff": 250, + "existingSchedulesPreserved": true, + "metadataObservedAt": "2026-10-13T10:10:32Z" + }, + "historicalV12Synchronization": { + "historical": true, + "observedAt": "2026-10-13T10:10:32Z", + "repository": "AutoGenUI/ag-ui.ai", + "defaultBranch": "main", + "mainAtObservation": "f670b23d32e6de1e4497f46113ef277fc3fc97cc", + "syncBranch": null, + "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/4", + "draftAtObservation": false, + "mergedAtObservation": true, + "codeAndCiVerificationCommit": "b0f0a40748474e3ce1f5918a7f9c4acff6f1a4f3", + "documentationCommitsFollowVerificationCommit": true, + "importedSourceCommits": 11, + "importedTrackedFiles": 174, + "conflicts": [], + "requiredCheck": "verify", + "branchProtectionPreserved": true, + "historicalSyncBranch": "codex/ag-ui-ai-v12-sync", + "mergedAt": "2026-10-13T09:47:47Z", + "validatedPullRequestHead": "219dd12bbac3662662f942257c6c6b292f37f577", + "validatedTree": "e36d9422315db154c01f4f9eaa44ac0230506ded", + "primaryMainBeforeSynchronization": "525ec78904ab7e2b97717adc7ac13bfd3f5f3db0", + "primaryMainAtObservation": "f670b23d32e6de1e4497f46113ef277fc3fc97cc", + "branchPolicy": "Keep only main after completed iterations; temporary PR branches allowed and cleaned after verified merge", + "branchesAtLastCompletedCleanup": [ + "main" + ], + "recoverablePreCleanupBundleVerified": true, + "protectedManagedWorktreeRetained": true + }, + "release": { + "version": "1.0.0", + "phase": "completed", + "recordedAt": "2026-10-13T10:21:15Z", + "notes": "docs/releases/v1.0.0.md", + "github": { + "commit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", + "tree": "661f59e806ce2174a33d6d87b9b44d0959400554", + "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/5", + "mergedAt": "2026-10-13T10:13:52Z", + "pullRequestHead": "04c99295995993c93c0cb3596a55f049369601f7", + "requiredVerify": { + "status": "passed", + "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665" + }, + "postMergeVerify": { + "status": "passed", + "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252" + }, + "annotatedTag": "v1.0.0", + "remoteTagVerified": true, + "tagObject": "55ef990ca2a893c5d72e0a67806c2743cc832e6a", + "peeledCommit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", + "releaseUrl": "https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0", + "publishedAt": "2026-10-13T10:18:34Z", + "draft": false, + "prerelease": false + }, + "sites": { + "projectId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926", + "versionNumber": 13, + "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_e5bc604caacc819184c81bd223d5c9ee", + "sourceCommit": "8512d230c7df3bece70c503af02ff2acce0dbe9d", + "sourceTree": "661f59e806ce2174a33d6d87b9b44d0959400554", + "matchesGithubReleaseTree": true, + "deploymentId": "appgdep_6ace04b15f408191ad18bdcbbe4be3d3", + "status": "succeeded", + "completedAt": "2026-10-13T10:15:25.780042+00:00", + "environmentSetRevisionPreserved": 12, + "hasMcp": true, + "active": true, + "audience": "public", + "automationCount": 2 + }, + "validation": { + "localTests": { + "base": 35, + "newsAndMail": 42, + "subscriptionUi": 10, + "localHttp": 8, + "total": 95 + }, + "localChecks": [ + "typescript", + "content", + "lint", + "build" + ], + "localD1Isolated": true, + "localMailDisabled": true, + "localBrowserViewports": [ + "390x844", + "1440x900" + ], + "localBrowserLanguages": [ + "zh", + "en" + ], + "focusTest": "Temporary CDP focus emulation; restored after verification; not a second physical-device test", + "audit": { + "moderate": 8, + "high": 0, + "critical": 0, + "unchangedHighSeverityGate": "passed" + }, + "bundle": { + "javascriptBytes": 919625, + "javascriptGzipBytes": 267506, + "cssBytes": 115604, + "cssGzipBytes": 22853, + "budgetsPreserved": true, + "javascriptRawMarginBytes": 375 + }, + "productionReadOnlyChecks": { + "subscriptionPages": { + "zhHttp": 200, + "enHttp": 200 + }, + "rssHttp": { + "zh": 200, + "en": 200, + "compatibility": 200 + }, + "anonymousAdminHttp": 403, + "publicStatus": { + "enabled": true, + "confirmedPublic": 1, + "remaining": 249 + }, + "zhBrowser": { + "status": "passed", + "publicAggregateVisible": true, + "firstPartyStatisticsVisible": true, + "consoleErrors": 0 + }, + "enBrowser": { + "status": "not-completed", + "evidence": "HTTP and RSS passed; subsequent browser connection timed out, so no additional production English DOM assertion was made; this is not evidence of a site fault" + }, + "network": { + "currentConfiguredEgressHttp": 200, + "directEgressHttp": 403, + "allNetworksAccessibleClaim": false + } + }, + "links": "Passed in required GitHub verify; local documentation references also validated" + }, + "userConfirmationReport": { + "date": "2026-10-13", + "evidence": "User reported a new inbox and active webpage confirmation with public count 1; no email or signed URL retained" + }, + "boundaries": { + "schemaChanged": false, + "dnsChanged": false, + "productionMailGatesChanged": false, + "schedulesChanged": false, + "secretValuesReadOrExported": false, + "productionSubscriberRowsRead": false, + "newRealMailSent": false, + "newPaidActions": false + }, + "rolloutLimit": "New client requires subscriptionType; use matching client and Worker and refresh open pages after rollback", + "documentationFollowup": "Receipt-only PR after publication does not redeploy Sites or move the immutable v1.0.0 tag; query GitHub for its eventual commit instead of self-reference" } } diff --git a/docs/PROJECT_CONTEXT.md b/docs/PROJECT_CONTEXT.md index e2c9a27..2b19126 100644 --- a/docs/PROJECT_CONTEXT.md +++ b/docs/PROJECT_CONTEXT.md @@ -2,13 +2,30 @@ 本说明用于在同一个项目中持续迭代。它仅保留可公开的工程事实,未复制私人运营审计、账户、验收邮箱、生产数据或秘密值。机器可读记录见 [CURRENT_STATE.json](CURRENT_STATE.json)。 -## v1.0.0 发布接续 +## v1.0.0 正式发布与接续 -2026-10-13 用户报告已在邮件落地页主动确认,新邮箱正式人数显示 1。本轮修复最后一步可见性、邮件两步说明、签名页语言切换与回到原页刷新,并以隔离 D1/合成身份完成 95 项测试及手机/桌面浏览器验收。发布候选从 main `f670b23d32e6de1e4497f46113ef277fc3fc97cc`(维护 PR #4 已合并)继续,尚需 required CI、正常 PR 合并及 Sites 终态成功。 +2026-10-13 已完成订阅体验修复并正式发布 [v1.0.0](https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0)。[PR #5](https://github.com/AutoGenUI/ag-ui.ai/pull/5) 于 10:13:52 UTC 正常 rebase 合入 main;release commit 为 `71ff116e033f0295a44415d13acd92bf1c0b97b6`,tree 为 `661f59e806ce2174a33d6d87b9b44d0959400554`。[PR required verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665) 和 [main verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252) 均通过,主分支保护保留。 -[版本说明](releases/v1.0.0.md) 规定最终凭据:GitHub 的带注释 `v1.0.0` tag/Release 与实际 Sites deployment。文档为时间快照,不能将候选版本号解释为已上线。旧章节中的“本轮”“尚未部署”描述此前 GitHub 同步/维护阶段;本次用户已授权正式发布,生产秘密、DNS、现有邮件开关/任务均保留,不额外发送验收邮件。Sites 元数据已重新核对生产仍为数字版本 12,源码 `6027589c…`;没有读取私有环境值。 +带注释 tag `v1.0.0` 已推送远端,tag 对象 `55ef990ca2a893c5d72e0a67806c2743cc832e6a` 解析到上述 release commit。GitHub Release 于 10:18:34 UTC 正式发布,非 draft、非 prerelease。收尾文档仍走临时 PR;它们不移动此标签,也不追加一次 Sites 代码部署。 -## 证据时间与状态区分 +| 正式发布凭据 | 已核验的公开记录 | +| --- | --- | +| Sites 项目 | 原项目 `appgprj_6a5dcacfcbb4819193bac2b2104ed926`,active、public、`has_mcp=true`,保留自定义域名 [ag-ui.ai](https://ag-ui.ai) 与平台地址 [ag-ui-ai.channely.chatgpt.site](https://ag-ui-ai.channely.chatgpt.site) | +| Sites 数字版本序号 / version_id | `13` / `appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_e5bc604caacc819184c81bd223d5c9ee`;序号和 opaque ID 为不同字段 | +| Sites 源码 | `8512d230c7df3bece70c503af02ff2acce0dbe9d`,tree 与 GitHub release 完全相同;两个 Git 历史的 commit SHA 不要求相同 | +| 部署终态 | `appgdep_6ace04b15f408191ad18bdcbbe4be3d3`,succeeded,2026-10-13 10:15:25.780042 UTC | +| 配置保留 | `env_set_revision=12` 原样保留;无 schema 迁移、DNS、邮件开关或任务修改;Sites 元数据仍有 2 项任务,但不代表每轮任务已成功 | +| 工程验证 | 隔离本地 D1/关闭邮件,35 基础 + 42 新闻邮件 + 10 订阅 UI + 8 HTTP,共 95 项通过;TypeScript、内容、lint、构建、链接与 required CI 通过;8 moderate、0 high、0 critical,既有门槛保留 | +| 发布构建体积 | JS 919625 / gzip 267506,CSS 115604 / gzip 22853 字节;原预算不变,JS 原始体积余量 375 字节 | +| 本地浏览器 | 中英双语、390×844 / 1440×900 视口;确认、语言链接、偏好、退订和公开容量刷新。焦点刷新使用临时 CDP 模拟且已还原,不是第二台物理设备实测 | +| 生产只读检查 | 中英订阅页与三个 RSS 入口 HTTP 200;匿名管理 API 403;公开状态 enabled、confirmed 1、remaining 249;中文生产 DOM 显示 1/249 和第一方统计,0 控制台错误 | +| 英文生产浏览器边界 | 英文 HTTP/RSS 已通过;后续浏览器连接超时,未追加英文生产 DOM 断言。该超时不能记录为网站故障 | + +本次修复突出邮件落地页的最后一步主动确认、明确邮件两步说明,并保留签名页语言切换与回到原页刷新。发布前用户报告新邮箱已主动确认、公众人数为 1;此真实成功案例只归因用户报告,不扩大为本地验收的跨物理设备证据。没有读取秘密或订阅行,也没有新增真实邮件或付费调用。当前配置出口访问为 200、直连出口仍为 403,不承诺全网络或中国大陆可达。 + +完整 [版本回执](releases/v1.0.0.md) 与机器状态的 `release` 保存最终映射。生产 v12、73/90 项旧验证和发布候选在下文及 JSON 中保留为历史;旧段落的“本轮”“尚未部署”只描述此前 GitHub 同步/维护阶段,不能覆盖本节正式发布状态。下一轮重新核对实时状态和授权,不将本说明当作配置值。 + +## 历史交接:证据时间与状态区分 - **生产交接快照**:2026-10-13 05:26:10 UTC(新加坡时间 13:26:10),来自交接版本 28。本轮读取了经过校验的上下文文件,没有重新读取生产环境或邮件账户。 - **GitHub 合并与分支核验**:PR #3 于 2026-10-13 09:03:38 UTC 正常 rebase 合并,PR head 与 main 的 required `verify` 均通过。09:18 UTC 完成分支清理;维护文档更新前重新查询远端,仅 main 指向 `24edc498f5c135e283d773d946fcab3e99d239bd`。 @@ -70,7 +87,7 @@ 同步及修复使用独立 worktree,并保存可恢复 Git 快照。首次同步时原 main 为 `525ec78904ab7e2b97717adc7ac13bfd3f5f3db0`,完整 v12 导入无冲突。之后按用户授权,将原 main 的四项补丁与合并历史逐项核对为等价内容,原 checkout main 已安全同步到 `24edc498…`,没有丢弃本地工作;原依赖目录未覆盖。分支清理前另存完整 bundle,核对同步分支 tree、range-diff 与另一个分支的补丁等价后删除已合并分支。受保护的同步 worktree 保留为 detached checkout;后续文档任务复用它创建临时 PR 分支。 -首次同步在正式源码之外追加 CI 和公开文档。CI 增加 TypeScript、新闻/邮件、订阅 UI 测试,以及隔离本地 D1/Worker 的初始化、ready 等待与清理;保留全部原检查和阈值。本轮依赖及构建修复是生产 v12 之后的 GitHub 分支迭代,尚未部署到 Sites。 +首次同步在正式源码之外追加 CI 和公开文档。CI 增加 TypeScript、新闻/邮件、订阅 UI 测试,以及隔离本地 D1/Worker 的初始化、ready 等待与清理;保留全部原检查和阈值。该同步阶段的依赖及构建修复是生产 v12 之后的 GitHub 分支迭代,当时尚未部署到 Sites,随后随本节前述 v1.0.0 正式发布。 下列代码检查对应 `b0f0a407…` 基线,结果来自本对话此前执行与留存的核验记录,不表示本次文档更新重新运行了全部套件: @@ -83,9 +100,9 @@ | 体积预算 | 失败;Node 24 构建 JS 934566 / gzip 275319 字节,CSS 132412 / gzip 24990 字节,均超过既有预算 | | GitHub required `verify` | [基线运行失败](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38353374564/job/115150601215),停在安全审计,后续步骤被跳过 | -以上是修复前的历史失败结果。随后保留安全与体积门槛完成修复并通过 CI、合并 PR #3;main 的 required `verify`、严格更新要求、管理员约束、线性历史及禁止 force-push/删除均保留。未使用 bypass。生产 v12 与修复后 GitHub 主线仍是不同发布状态。 +以上是修复前的历史失败结果。随后保留安全与体积门槛完成修复并通过 CI、合并 PR #3;main 的 required `verify`、严格更新要求、管理员约束、线性历史及禁止 force-push/删除均保留。未使用 bypass。在该阶段,生产 v12 与修复后 GitHub 主线仍是不同发布状态;最新发布映射见本文首节。 -## 已合并 CI 修复与验证 +## 历史:已合并 CI 修复与验证 用户已授权在 v12 同步分支修复安全审计与资源体积问题,并通过 PR #3 合入 main。修复开始前保存可恢复 Git 快照;后续按用户新指示清理已合并分支,只保留 main。下列本地验证对应原修复提交 `42c1e0c762621294652a9dacfe02b94f940bdf1e`;最新 PR head 和 main 的 GitHub required `verify` 另有链接证据。 @@ -95,7 +112,7 @@ - 独立回归复核发现原始字符串深度检查可被路径规范化和引号绕过,已改为每模式最多 16 个开括号字符的保守上限,并补充两条复现及转义、ignore、负模式、同步/异步回归。该限制仅服务受信任构建模式,并非完整 fast-glob API。 - Tailwind 扫描范围限定为实际源码,停止为未被页面引用的模板生成工具类;Vite 顶层启用客户端 Terser 两轮压缩,RSC/SSR 保持不压缩。课堂由服务器提供当前语言的展示字段,完整 16 课和双语 RAG 语料保留;客户端仅导入课程类型。页面、AG-UI 传输与 Markdown 功能均保留,未修改原体积预算。 -| 本轮检查 | 当前状态与范围 | +| 当时检查 | 历史状态与范围 | | --- | --- | | 安装后安全审计 | 0 high、0 critical、8 moderate;既有 high 门槛通过,剩余项为 drizzle-kit/esbuild 及 gray-matter/sprintf-js 依赖链,未隐藏或降低门槛 | | 独立依赖安装 | Node 22.23.1 / npm 10.9.8 的干净 `npm ci` 通过;同步 worktree 使用自己的依赖目录,原 checkout 安装未改变 | @@ -112,8 +129,8 @@ 接续时先核对实际分支、工作区、远端和 PR,复用合适 worktree,保留用户改动。更新本说明时记录来源时点与验证范围,不将私人交接包整包提交。 -当前 GitHub/文档接续范围不包含重新部署、DNS、邮件开关、秘密、定时任务或真实邮件。后续功能与发布以用户当轮授权为准,不从交接推定额外权限。保持零新增付费与默认无付费模型调用。 +v1.0.0 发布已完成;本次收尾仅更新公开文档,不再次部署或移动 release tag。后续功能与发布以用户当轮授权为准,不从交接推定 DNS、邮件开关、秘密、定时任务或真实邮件权限。保持零新增付费与默认无付费模型调用。 -本地 HTTP 验证只用隔离 D1 和本地 Worker,邮件三个开关均 false,无真实密钥,不使用生产站点作 `SITE_TEST_BASE_URL`,不伪造所有者。完整验证入口见 [README](../README.md)、[CI 工作流](../.github/workflows/ci.yml) 与 [部署维护](operations/deployment-maintenance.md)。本轮维护资料更新走临时 PR 分支与 required `verify`,完成后清理该分支;没有重新部署、DNS、生产配置、任务或真实邮件动作。 +本地 HTTP 验证只用隔离 D1 和本地 Worker,邮件三个开关均 false,无真实密钥,不使用生产站点作 `SITE_TEST_BASE_URL`,不伪造所有者。正式发布后的公开 HTTP/浏览器只读检查与本地测试分开记录。完整验证入口见 [README](../README.md)、[CI 工作流](../.github/workflows/ci.yml) 与 [部署维护](operations/deployment-maintenance.md)。收尾资料更新走临时 PR 分支与 required `verify`,完成后清理该分支;不额外执行部署、DNS、生产配置、任务或真实邮件动作。 当前待持续处理:moderate 依赖链、体积余量、完整关闭邮件跟踪、受限网络验证、真实排队取消及退信场景,以及授权生产维护时的账户权限/完整 DNS/迁移 ledger/托管 D1 备份恢复/实际任务运行状态刷新。不要把这些尚未核验事项记录为完成。 diff --git a/docs/operations/README.md b/docs/operations/README.md index 58c61fd..a3f0406 100644 --- a/docs/operations/README.md +++ b/docs/operations/README.md @@ -11,8 +11,10 @@ ## 当前主线与证据 -- GitHub 主线为 [AutoGenUI/ag-ui.ai 的 main](https://github.com/AutoGenUI/ag-ui.ai)。v12 源码、依赖安全门槛与资源体积修复已通过 [PR #3](https://github.com/AutoGenUI/ag-ui.ai/pull/3) 合入,2026-10-13 09:18 UTC 清理完成时只保留 main。每次迭代可使用临时 PR 分支,合并并核对内容后清理,不改主分支保护。 -- 生产 v12 / 公众邮件开放 / 既有采编任务来自 2026-10-13 的已校验交接。GitHub 修复合并不代表 Sites 已部署这些修复;本轮文档工作未修改生产配置、域名、任务或发送真实邮件。 +- GitHub 主线为 [AutoGenUI/ag-ui.ai 的 main](https://github.com/AutoGenUI/ag-ui.ai)。[PR #5](https://github.com/AutoGenUI/ag-ui.ai/pull/5) 已正常合并,远端带注释 tag [v1.0.0 / 正式 Release](https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0) 指向 `71ff116e033f0295a44415d13acd92bf1c0b97b6`;[PR verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665) 和 [main verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252) 通过。每次迭代可使用临时 PR 分支,合并并核对内容后清理,长期仅保留 main,不改主分支保护。 +- 正式 v1.0.0 已于 2026-10-13 10:15:25.780042 UTC 部署至原 Sites 项目,数字版本序号 13,deployment `appgdep_6ace04b15f408191ad18bdcbbe4be3d3` 终态 succeeded。Sites source `8512d230c7df3bece70c503af02ff2acce0dbe9d` 的 tree 与 release tree `661f59e806ce2174a33d6d87b9b44d0959400554` 一致。完整 version_id、tag 对象及验收见 [发布回执](../releases/v1.0.0.md)。GitHub 合并仍不自动代表 Sites 部署;本次两者各有独立凭据。 +- 原公众邮件开关和既有采编任务保留,`env_set_revision=12`,平台元数据仍有 2 项任务。本次发布没有 schema、DNS、邮件开关或任务修改,没有读取秘密/订阅行或新增真实邮件。本轮收尾只补充文档,不再次部署或移动 `v1.0.0` 标签;v12 交接和旧 CI 数据保留为历史。 +- 发布后的只读检查确认中英订阅页、三个 RSS HTTP 200,匿名管理 API 403,公开人数 1、剩余 249;中文生产 DOM 和第一方统计可见、0 控制台错误。英文生产证据限于 HTTP/RSS,本地双语浏览器已验收;后续英文浏览器连接超时未追加 DOM 断言,不能当作网站故障。当前配置出口 200、直连出口 403,全网络可达未验证。 - 唯一 Sites 项目身份保存于 [.openai/hosting.json](../../.openai/hosting.json),D1 逻辑绑定为 `DB`。复用此项目,不因交接重新创建网站、域名、数据库或任务。 - DNS 文档另含当日公共解析/TLS 观察;它不能替代 DNSPod 完整 zone 清单、Brevo 认证状态或 Sites 部署状态。所有时间点与缺口必须保留。 @@ -21,7 +23,7 @@ 1. 检查 checkout、未提交改动、远端、PR、最新 CI 和工作区附着。保留用户文件与依赖目录;不要静默 reset、clean、stash、覆盖锁文件或切换脏工作区。 2. 明确本轮授权:仅代码/文档、发布、DNS、任务、邮件验收是不同动作。按当前授权推进,读取不必要的秘密或发送验收邮件不是接手前提。 3. 通过各平台的安全登录/授权流程确认权限。GitHub 权限、Sites 项目权限和应用 `SITE_OWNER_EMAIL` 身份是不同层;GitHub 写权限不提供生产 owner 权限。账户密码、OTP 和服务端密钥不进入聊天、PR 或命令输出。 -4. 需要生产动作时,先取得实际部署版本与源码映射、待执行迁移、D1 备份/恢复能力、DNSPod 完整清单、Brevo sender/domain/webhook 状态及既有任务最后成功记录。当前文档没有重新读取这些账户;缺项先核实,不能用旧快照代替。 +4. 需要生产动作时,先刷新实际部署版本与源码映射、待执行迁移、D1 备份/恢复能力、DNSPod 完整清单、Brevo sender/domain/webhook 状态及既有任务最后成功记录。本次只刷新了 Sites 公开发布元数据/源码与只读站点结果,没有重新读取 DNSPod/Brevo 账户或秘密;缺项先核实,不能用旧快照代替。 5. 本地使用 Node 22、`npm ci`、隔离 D1/Worker 与关闭邮件的配置。完成适用检查后经 required `verify` PR 合入;另获发布授权时才走 Sites 的保存版本、部署及终态验证流程。 6. 回报提交、PR、CI、生产是否变更、证据时间和未完成项;更新公开上下文。机器状态不循环引用自身文档提交 SHA,最新提交用 GitHub 查询。 @@ -37,9 +39,9 @@ ## 尚需后续验证 -- 8 项 moderate 依赖问题与 JS 原始体积仅 1169 字节余量:未来依赖/页面修改重新审计和构建,不降门槛。 +- 8 项 moderate 依赖问题与 v1.0.0 JS 原始体积仅 375 字节余量(919625 / 920000):未来依赖/页面修改重新审计和构建,不降门槛。旧 CI 修复的 1169 字节余量仅属于历史构建。 - 邮件匿名跟踪已按交接接受并披露;完全关闭像素与链接改写尚未验证。中国大陆可访问性不保证。 - 当前账户权限、完整 DNS 清单、DKIM selector、实际部署版本、迁移 ledger、托管 D1 备份/恢复方式、实时任务状态与 provider 剩余额度均需在授权的生产维护中刷新。 - 真实 queued cancellation 与完整退信场景未全部观察;本地测试和历史验收不能扩写为所有生产情形都已验收。 -旧 [首发清单](../LAUNCH_CHECKLIST.md) 和 [2026-07-20 上线记录](2026-07-20-public-launch.md) 仅用于追溯。它们的删 DNS/恢复私有站点方案不适用于已开放邮件的 v12。 +旧 [首发清单](../LAUNCH_CHECKLIST.md) 和 [2026-07-20 上线记录](2026-07-20-public-launch.md) 仅用于追溯。它们的删 DNS/恢复私有站点方案不适用于已开放邮件的当前生产站点。 diff --git a/docs/releases/v1.0.0.md b/docs/releases/v1.0.0.md index 94490de..cd5ea76 100644 --- a/docs/releases/v1.0.0.md +++ b/docs/releases/v1.0.0.md @@ -1,6 +1,26 @@ -# AG-UI.AI v1.0.0 发布说明与验收条件 +# AG-UI.AI v1.0.0 发布说明与公开回执 -记录日期:2026-10-13。本文编写时为从 main `f670b23d32e6de1e4497f46113ef277fc3fc97cc` 继续的发布候选;用户已授权完成修复后正式发布并推送 tag。本文不预写尚未发生的合并 SHA、CI 或 Sites 部署成功。最终凭据见 GitHub 远端 tag、对应 PR/CI 和 [公开状态](../CURRENT_STATE.json),接续前重新查询。 +记录日期:2026-10-13。从 main `f670b23d32e6de1e4497f46113ef277fc3fc97cc` 继续的候选已正常合并、部署至原 Sites 项目,并发布远端带注释 tag 和 [正式 GitHub Release](https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0)。本回执与 [公开状态](../CURRENT_STATE.json) 为带时间的证据;接续前重新查询实际远端和平台状态。收尾文档提交不重新部署 Sites,也不移动 release 标签。 + +## 正式发布回执 + +| 凭据 | 实际记录 | +| --- | --- | +| PR / 合并 | [PR #5](https://github.com/AutoGenUI/ag-ui.ai/pull/5),2026-10-13 10:13:52 UTC 正常 rebase 合并;候选 head `04c99295995993c93c0cb3596a55f049369601f7` | +| GitHub release commit / tree | `71ff116e033f0295a44415d13acd92bf1c0b97b6` / `661f59e806ce2174a33d6d87b9b44d0959400554` | +| 必需 CI | [PR verify 通过](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665),[main verify 通过](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252) | +| 远端 tag / Release | 带注释 `v1.0.0`,tag 对象 `55ef990ca2a893c5d72e0a67806c2743cc832e6a`,解析到上述 release commit;Release 2026-10-13 10:18:34 UTC 正式发布,非 draft、非 prerelease | +| 原 Sites 项目 | `appgprj_6a5dcacfcbb4819193bac2b2104ed926`;active、public、`has_mcp=true`;[自定义域名](https://ag-ui.ai) 与 [平台域名](https://ag-ui-ai.channely.chatgpt.site) 保留 | +| 数字版本序号 / version_id | `13` / `appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_e5bc604caacc819184c81bd223d5c9ee` | +| Sites source commit / tree | `8512d230c7df3bece70c503af02ff2acce0dbe9d` / `661f59e806ce2174a33d6d87b9b44d0959400554`;与 GitHub release tree 相同 | +| 部署 | `appgdep_6ace04b15f408191ad18bdcbbe4be3d3`,succeeded,2026-10-13 10:15:25.780042 UTC | +| 保留的配置 | `env_set_revision=12`;无 schema 迁移、DNS、生产邮件开关或任务修改;平台仍有 2 项任务,未把数量作为运行成功证据 | + +本地工程验证为 35 基础 + 42 新闻邮件 + 10 订阅 UI + 8 隔离 HTTP,共 95 项通过,TypeScript、内容、lint、构建和链接通过。审计为 8 moderate、0 high、0 critical;原安全门槛和资源预算保留。发布构建 JS 919625 / gzip 267506,CSS 115604 / gzip 22853 字节,JS 原始体积余量 375 字节。 + +本地双语浏览器覆盖 390×844 / 1440×900 视口。公开容量的焦点刷新使用临时 CDP focus emulation,已还原;这不是第二台物理设备的实测。跨设备确认成功案例仅来自下文用户反馈。本轮不读取秘密或订阅行,也没有新增真实邮件或付费调用。 + +生产只读检查:中英订阅页与 `/zh/feed.xml`、`/en/feed.xml`、`/feed.xml` 均 HTTP 200;匿名管理 API 403;公开状态 enabled、confirmed 1、remaining 249。中文生产 DOM 显示 1/249 和第一方统计,0 控制台错误。英文 HTTP/RSS 已通过,但后续浏览器连接超时,未追加英文生产 DOM 断言;此超时不是网站故障证据。当前配置出口为 200,直连出口仍为 403,不承诺全网络或中国大陆可达。 ## 本版解决的问题 @@ -13,9 +33,9 @@ - 签名响应区分 public/test,测试页明确不进入正式周报、不占名额;不自动将测试身份转正式。 - 保留容量原子控制、代际/epoch、防重复投递、unknown/uncertain 不自动重发、退订与抑制,以及现有生产配置与任务。 -2026-10-13 用户报告用新邮箱完成公众确认后,页面已确认人数为 1。该报告说明公众确认路径有实际成功案例,不证明此候选已上线或取代完整验收;公开记录不保留邮箱、签名链接、邮件内容或订阅行。 +发布前,2026-10-13 用户报告用新邮箱完成公众确认后,页面已确认人数为 1。该报告说明公众确认路径有实际成功案例;本版是否上线由上述部署/tag 凭据证明,用户反馈不能取代完整验收。公开记录不保留邮箱、签名链接、邮件内容或订阅行。 -## 发布前与发布后必须留下的证据 +## 验收与接续规则 | 检查 | 验收条件 | | --- | --- | @@ -24,7 +44,7 @@ | 测试与异常边界 | test 确认始终不占正式名额并显示测试身份;坏签名、到期、满额、代际更新、退订/抑制及未知提交不产生虚假成功或重发 | | 页面交互 | 桌面/手机双语确认、签名页语言切换、原标签页重新聚焦刷新、偏好与退订;旧 API 缺少身份字段显示保守错误,刷新匹配版本后恢复 | | GitHub | 经必需检查正常合入 main,远端 `v1.0.0` 指向已验证的 release commit;记录 PR、CI 和 tag 解析结果,不改写已有 tag | -| Sites | 原项目、原域名、公开权限、DB 与安全配置保持;记录真实 source commit、数字版本 ID、deployment ID/最终状态,以及 GitHub SHA 对应关系 | +| Sites | 原项目、原域名、公开权限、DB 与安全配置保持;记录真实 source commit、数字版本序号、原样的 version_id、deployment ID/最终状态,以及 GitHub SHA 对应关系 | | 上线验证 | 查询部署最终成功后,检查双语页面、RSS、公开容量、匿名管理隔离和网络边界;不将首页 200 当作数据库、真人投递或全球可访问性证明 | 本地 mock 与用户既有反馈不能补成新增真实周报、退信或 webhook 验收。发布检查不主动申请订阅、drain、mail-test 或伪造 Delivered;需要额外真实投递时按 owner 明确授权和 [邮件维护](../operations/email-subscriptions.md) 执行。