Skip to content

docs(blog): postmortem — five freshness incidents in 47 days - #5087

Merged
huangruiteng merged 1 commit into
mainfrom
codex/freshness-postmortem-blog
Sep 26, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/freshness-postmortem-blog

Conversation

@huangruiteng

Copy link
Copy Markdown
Collaborator

Summary

Adds a paired en/zh blog post, Five freshness incidents in 47 days: a LoopX postmortem. It includes three diagrams and a listing at the top of both blog indexes.

The post is a redacted postmortem of one long-running advisory deployment on LoopX. Five times in 47 days, the agent answered from stale, partial, unread, or wrong-scope sources while every health signal stayed green, and LoopX raised no alert. The post covers:

Accuracy notes

Validation

  • node examples/blog-bilingual-index-smoke.mjs: ok (4 paired articles)
  • apps/presentation/site: npm run build + npm run smoke:seo pass; both new routes appear in sitemap-pages.xml
  • loopx check --scan-path on all 10 changed files: public boundary scan clean
  • git diff --check clean
  • Manual preview of both editions: first screen, figures, and the JSON block do not overflow at desktop width

First-screen review requested per docs/development/design.md. Not self-merging.

Paired en/zh article with three diagrams: a redacted postmortem of one
long-running advisory deployment that answered from stale, partial, or
unread sources five times while every health signal stayed green, why
local fixes were not enough, and the source-freshness and projection
envelope contracts (#5075, #5085, both still in review).

Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes conclusion (author-owned PR; GitHub blocks formal self-review)

结论:REQUEST_CHANGES。主要阻塞是公开内容的来源边界。 完整评审 head 7ebc49b78a14a6305162305c2f3e932cdafbc253,基线 71dbfd5e605da4e7efdb58c87cd3f4a96d39e0e5。构建和浏览器检查通过,但技术可用性不能证明私有部署叙述适合公开。

动机

文章希望帮助读者区分“配置正常、调用成功”和“信源新鲜、投影完整”,这个教育目标有实际价值。两种语言、图解、合同说明和明确限制让静态阅读路径基本完整。但当前公开文案仍围绕真实私有运行记录组织,未达到仓库要求的公开安全来源边界;开篇与部分图注也把候选合同效果写成当前能力。持续维护的公共边界和读者对当前产品能力的理解都受到影响,因此不能以构建通过认定这个发布目标完成。

改动思路

页面复用了现有双语博客布局、公共样式、目录、语言切换和可键盘聚焦的横向图形区域,适合这类解释性内容。运行时事实 owner 仍是相关 Decision Context 和 TypeScript kernel 的合同;此 PR 只增加静态呈现,不实现新检测或授予读取权限。我同时读了 #5075、#5085 的候选改动和当前状态:两者仍未合入。文章已有正确的未发布、provider 计数、Agent 合规与待接入入口限制,应保留这些边界并把它们带到首次出现效果声明的位置。

具体改动

十个文件覆盖英文和中文文章、三类图解的六份 SVG,以及两个索引的新入口。两篇文章解释失效类型、逐次修复为何不能形成统一保证、信源字段与投影 envelope 的职责,再给出示例、限制和启示。图解分别呈现时间线、信号与事实的差异、读取事实到 kernel 封装的路径。索引和语言链接正确,metadata、canonical/hreflang 与 sitemap 检查通过;共用 CSS 没有变化。问题需要在所有语言、图形标签和入口摘要一起修复,单改正文的一段无法清除来源或能力措辞的传播。

关键代码讲解

  • blog/five-freshness-incidents/index.html:60 的部署与事故段落:新增的是解释性 HTML,没有运行时调用。来源声明仍强调按原始记录保留事件组织,后面的双语正文和时间线沿用这一来源,这正是需要重新泛化的边界。
  • 同文件 :117 的合同段落:source freshness 与 envelope owner 分工基本清楚,但“每个投影”和当前渲染效果的措辞超过未合入候选当前覆盖的三个入口;应就地写明候选状态和范围。
  • 同文件 :158 的限制段落:已经正确承认未发布、空正文检测依赖 provider 报告计数、消费者披露不能被强制,以及其他入口尚未接入。这里不是缺少限制,而是前面的声明需要与这些限制一致。
  • 两个 blog/index.html 的新增条目:实际把文章置于公共发现路径,构建会复制文章和六份图形资产。因此 source/privacy 判断是发布前的实际义务,不能仅凭扫描器未命中来放行。

对主干的风险

[P1] 公开安全改写必须先完成。 英文来源声明及其中文镜像明确依赖真实私有部署的 turn/repair 记录,事故段落和图形仍按这些记录重建运行过程。仓库 Public And Private Boundary 禁止把价值依赖私有组织或本地运营语境的规划、状态及运行叙述放入公共制品;删除名称并不能替代泛化。最低修复是把两篇文章、图形、索引摘要改为明确的合成案例、provider 无关的失败类型,或可追溯的公共复现行为。原始证据留在忽略的私有位置,不要为证明文章而上传原始记录。已推送历史引用或缓存如需处理,由维护者另行处理并保留明确剩余项。

[P2] 候选效果需要就地标明。 lead、部分图注、合同的全部投影措辞和示例引导语采用当前时态,而 #5075/#5085 仍开放。后文虽然已有正确限制,第一次阅读仍可能理解为当前可用。请在这些位置明确“候选/提议”,并把覆盖范围写为候选的 status、global-summary、global-gates;保留现有 provider 与消费者限制。这个措辞建议本身不构成新增运行时缺陷,主要阻塞仍是 P1。

实际验证:双语索引 smoke 通过(四组文章);site build/SEO 通过;两篇新文章与六个 SVG 实际返回 200,基线对应路由缺失,共用样式逐字节相同。英文/中文在桌面与 390px 宽度没有整页溢出,三幅图加载成功,滚动区域可接受键盘焦点。六项风险选择 canary 与 diff 检查通过。没有读取或等待远端 CI,也没有执行私有信源读取。首屏的 owner 审批仍是独立要求,此技术评审不替代它。

语义与 CI 对齐

这里违反的是已经生效的公共/私有来源义务,不是要求实现未来 RFC。触发是新的公共叙述持续使用私有运行来源;观察来自完整双语正文和图形,静态工具无法替代这个来源判断。改写后重读完整 diff,并重跑双语索引、构建、SEO、公共边界扫描和具体首屏预览。合同字段复用相关候选词汇即可,无须在这篇文章增加新的 schema、检测器或 Agent 强制义务。

我的整体评价

REQUEST_CHANGES:静态呈现与链接路径完成,持续维护的来源边界和读者对现有能力的判断仍有实质问题。最小修复在现有内容 owner 内,保留有用的图解结构,压缩真实运行时间线为可复用公共案例,并统一候选状态。未来维护方向是公共可复现来源和清晰的发布边界,无须新增框架。修复后重新审两种语言、六份图和索引,并取得首屏 owner 认可;不能把当前通过的构建当作文章事实或发布权限的证明。

English verdict: REQUEST_CHANGES - head 7ebc49b. The new public narrative retains private deployment-derived operating context; generalize both editions, figures and index copy before publication. Clarify proposed versus shipped contract effects. Build, SEO, bilingual, browser and local canary checks passed; these do not certify source provenance or grant first-screen approval.

@huangruiteng
huangruiteng merged commit aab47e9 into main Sep 26, 2026
26 of 29 checks passed
@huangruiteng
huangruiteng deleted the codex/freshness-postmortem-blog branch September 26, 2026 12:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant