Skip to content

dogfood 真实 boot 断言只钉 max-age=30,不钉 private —— 上线到线上的那一位安全指令在唯一观测真实 wire 的那层没有被钉住 #5396

Description

@baozhoutao

发现于 #5244(showcase 注释把 cacheTtl 的响应头写成 public)的实现过程。观察类,今天没有用户会踩到,只是一处可收紧的断言,记下来交 PM 分诊。

事实

packages/qa/dogfood/test/showcase-declarative-endpoints.dogfood.test.ts:202:

expect(res.headers.get('cache-control'), 'cacheTtl: 30 must reach the wire').toMatch(/max-age=30/);

这条断言只钉 max-age=30 这一半,不钉 private / public 这一位。也就是说:如果哪天运行时把
private 翻成 public,这条真实 boot 断言仍然是绿的。

而 private 在这条链上不是调优选择而是安全规则(packages/runtime/src/endpoint-policy.ts
的 computeCacheControl 文档块成文):任何一条响应都可能按调用者被 RLS 裁剪,共享缓存绝不能
存下来再发给别人。被漏钉的恰好是这条链上唯一有安全含义的那一位。

为什么仍然只算观察类,而不是缺陷

private 在下面三处是钉死的,真翻成 public 会被逮到:

  • packages/runtime/src/endpoint-policy.test.ts:312、:316、:331
  • packages/runtime/src/api-endpoint-step.test.ts:349、:522
  • packages/runtime/src/dispatcher-plugin.endpoint-fallback.integration.test.ts:499
    (这条查的是真实 Response 头)

所以这不是一个没人守的洞,而是唯一一层观察真实 boot wire 的断言比它下面几层松。收紧它的
价值在于:单测钉的是 computeCacheControl 的返回值,dogfood 钉的是「整条栈跑完之后真正发出去
的东西」—— 中间任何一层若改写了这个头,只有 dogfood 这层看得见,而它现在看不见这一位。

修法(一行)

.toMatch(/^private, max-age=30$/)

或至少 toContain('private')。同文件 :213 那条「错误答案不得带缓存指令」的断言是对的,不用动。

边界

Activity

  1. self-assigned this
    on Aug 5, 2026
  2. baozhoutao commented on Aug 5, 2026

    @baozhoutao
    ContributorAuthor

    分诊(cli 车道 PM,session_016FNvXhtSdnEGEfLEsMmvxh,2026-08-05):晋级 pm:queue 并即时派发。判据:step 0 明文的 auto-queue 类(test-only pin),一行收紧;被漏钉的恰是链上唯一有安全含义的那一位(private),且 dogfood 是唯一观测真实 wire 的层。落点 packages/qa,domain:cli。维护者可否决。

    认领:PM 循环第 1 轮(cli 车道)
    会话:session_016FNvXhtSdnEGEfLEsMmvxh
    分支:claude/issue-5396-dogfood-pin-private
    Worktree:objectstack-issue-5396
    域:domain:cli
    文件面:packages/qa/dogfood/test/showcase-declarative-endpoints.dogfood.test.ts(仅该条断言;与在飞 #5400 packages/runtime/**、#5403 packages/cli/** 不相交)

    执行口径:优先取正文的整行钉法 /^private, max-age=30$/;若真实 boot 输出含合法附加指令导致整行钉法脆断,退回 toContain('private') + 保留既有 max-age=30 断言,并在报告说明。:213 那条不动。不动运行时、不动 showcase 声明。


    Generated by Claude Code

  3. baozhoutao commented on Aug 5, 2026

    @baozhoutao
    ContributorAuthor

    验收(cli 车道 PM,session_016FNvXhtSdnEGEfLEsMmvxh):ACCEPT → PR #5411。

    • 前提复核::202 断言与下层三处 private 钉死点均在,「唯一观测真实 wire 的层比下层松」定性成立。
    • 按认领口径先测后选:整行钉法 /^private, max-age=30$/ 实测直接绿(锚定正则跑绿即证明 wire 值恰为该整串,无附加指令),未退回 toContain。
    • 反向验证两方向齐备,且把本单要消灭的盲区实锤:producer 临时翻 public 后旧断言仍绿、新断言红,报文原文在 PR;篡改已还原、最终 diff 仅测试文件。
    • 边界干净::213(现 :236)未动、运行时与 showcase 声明未动;test-only 走 skip-changeset 豁免(test(cli): #5000 前提被证伪 —— build/validate 一直按注册表 schema 解析,补上它缺的那份证据 #5380 先例)。dev 就同文件其余用例默认超时问题的「先测后判」结论(0–128ms,无暴露,记录不立单)予以采纳。

    下一步:CI 全绿后转 ready 并入合并队列,跟到 MERGED。


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions