Repository navigation
Conversation
卡片由每轮 ensureIssue() 按标题维持,手工关掉不持久;源码里真正的关闭路径只有 autoclose 与 dependencyDashboard:false 两条。取前者、不拉后者:这周那个"半个 eslint 上限"正是从这张卡上看出来的,关掉它等于把 minimumReleaseAge 与排程挡住的队列重新变回黑盒。 - renovate.json: dependencyDashboardAutoclose = true - scripts/renovate-config.test.mjs: 钉住三条(卡开着 / autoclose 开着 / 没有规则把分支 永久停在卡里),两组正对照实测变红 - docs/dependabot-behavior.md: 新增该卡的生命周期判据(它今天还关不掉:35 条 Awaiting Schedule + 8 条 Pending Status Checks + 一条 replacement 条目)
全量 `npm test` 下 6 例撞 vitest 默认 5s 超时(5 条 star-import + 1 条 lib→hook
方向),pre-commit 因此假红、阻断提交。同一文件单独跑是绿的(323 passed/15s/rc=0),
CI 最近一次 `npm test` 也是 success ⇒ 不是仓库逻辑缺陷,而是「每个用例各自重走一遍
src 树 + 重读全部文件」的单例成本,在慢环境(195 个 vitest worker、FS 经 broker 拦截)
里超过 5s 预算。
- src/test/architecture-guard.test.ts:
- globTsFiles 按目录记忆化、readFile 按路径记忆化(清单与内容语义不变,只改算几次)
- components/lib/hooks 三份清单提到模块作用域,并在导入期把清单内文件读一遍——
fixture 加载不是测试逻辑,留在用例里就会把成本记在某个用例的 5s 预算上
(只做记忆化时正是「第一条」star-import 用例独吞 lib 首次读取而超时)
- 新增 2 条缓存契约断言(重复调用返回同一实例),改前必红
- docs/specs/architecture-guard-fs-walk-cost.md:9 行场景矩阵 + 三段证据
- docs/DOCS-INDEX.md:登记新 spec;顺带删掉一条既有的孤儿残行(e2e-parallel-port-
isolation 条目的重复片段、无列表前缀,存在于 HEAD);本行同时带上 AAV-1329 的
spec 登记(其代码在紧随的下一个 commit)
实测:单文件 1 failed → 325 passed(15s → 7–9s);全量 `npm test` 6 failed → 0 failed
(4090 → 4098 passed,增量 = 6 例转绿 + 2 条新断言,用例数只增不减)。
不放宽 testTimeout、不改 vitest 全局配置。
`waitForLoadState('networkidle')` 等的是网络静默,但被测页面自身零取数:H1、`h2#faq`
与 12 条 FAQ 来自同一次同步渲染,而 `src/App.tsx` 在模块加载时就 prefetch `/markets`
与 side-data(与路由无关)。整条 pre-push 套件向 staging 发上百个请求的那几分钟里,
那个静默窗口永不到达 ⇒ 三个用例首步撞 60s 超时,而独立跑恒绿。
- e2e/defi-yield-tracker-faq-anchor.spec.ts:3 处等待换成内联 waitForPageReady(page)
(H1 + h2#faq 可见);断言一行未动,不引入 skip
- scripts/e2e-wait-strategy.test.mjs:新增静态守卫(扫 e2e/ 全部 .ts,注释感知、大小写
敏感、行内 allow 逃生阀)。随既有 `npm test` 生效,不新增 npm script、不改 hook
- docs/specs/aav-1329-faq-anchor-wait-strategy.md:14 行场景矩阵 + 沙箱拦阻留档
实测:整条 e2e 套件 3 次样本,本 spec 均 9/9 绿、单例 1.6–3.1s(改动前是 60s 超时)。
顺带撞见 `.husky/pre-push` 的失败传播缺口(`&&` 链无 `|| exit 1`,三次 rc=0 假绿),
已单独建票 AAV-1330,本 commit 不动公共 hook。
- docs/issue-roadmap.md:
- Last inventory 改写成「AAV-1329 与 AAV-1331 同日交付关闭」(commit `3430b65b` /
`a0c8982f`,**仅本地 lovable、尚未 push**),并补记本轮的环境阻塞与绕行
- AAV-1329 从 Active Medium 表移出 → Recently Completed(带 3 次整条套件样本口径)
- AAV-1331 入 Recently Completed;AAV-1330 入 Urgent/High(**保持 open**)
- 上一版那句「AAV-1329 已交付关闭(Done)」在改前一度是**未兑现的**(提交当时还没落地),
本 commit 是在两个提交真的落地、Linear 已流转 Done 之后才把它订正为事实
- SESSION-BOARD.md:`wb-1009a` 注销(active → done),补交付叙事、环境阻塞绕行
(沙箱 broker 使 `eslint .` 恒 EPIPE;绕行=清空 `NODE_OPTIONS`)与遗留项
(`origin/lovable` 未更新;`nested-scroll:38` 待用户裁是否开票)
三张票的交付记录(含测试数字、根因、沙箱偏差、未纳入项)在 Linear 评论里,是唯一权威源。
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Droid finished @0xPabloLI's task —— View job No candidate findings were submitted for validation, and an independent read of the full diff surfaced no high-confidence issues. The PR is a well-documented maintenance batch: the e2e wait-strategy fix replaces flaky network-idle waits with page-owned readiness signals backed by a static guard, the architecture-guard memoization preserves scan semantics with contract assertions and import-time warmup, and the renovate autoclose toggle matches its new config assertions. The lockfile bump and docs/board updates are consistent. 0 inline comments posted |
看板里「origin/lovable 未更新」已被这次推送推翻:带代理跑 pre-push 全门 PUSH_RC=0,tip=48ec366a,连带把 wb-1009a 的 AAV-1329/1331 三笔一起带走(推的是分支 ref,不是固定 SHA)。 同时记下出口判据:直连取 staging /markets 要 37.9s、第二次 90s 只传完 120,920 字节,同一 payload 经代理 1.85s;同一棵树无代理 = 3 failed/10 flaky/36.7m,有代理 = 0 failed/3.9m ⇒ 本 session 那批 e2e 红全是环境。
板上那句「未合并,等用户」已不成立:#767 用 MERGE 进 dev(5829fe54),lovable 成为 dev 祖先(behind_by=0)。 两次被门挡下的判据都指向本机出口而非代码:直连 50 passed/3 failed/36.7m(三条红全是 tbody tr[data-reserve-id] 30s 等不到;直连取 412,891 字节的 /markets 要 37.9s,第二次 90s 只传完 120,920),带代理同一棵树 64 passed/0 failed/3.9m。没加排除项、没用 --no-verify。 dev→main 建成 #768 按规则不合并;main 领先的一笔 bot 同步用 update-branch 并回 dev,前后 tree SHA 同为 ee6668b 证明零内容变更。本地两条已交付分支删除。
lovable → dev 的常规合流。含 3 张票的工作 + 1 笔 bot 同步,其中
a388408d是本 PR 的主项,其余两笔属 wb-1009a session(我这次推送把它们一起带上了lovable,见下)。1.
chore(renovate): Dependency Dashboard 队列清空时自行关闭(a388408d)起因是"那张 Dependency Dashboard 卡能不能处理掉"。判据来自一手源码
lib/workers/repository/dependency-dashboard.ts:卡片由每轮ensureIssue()按标题维持,手工关掉不持久;真正的关闭路径只有两条——dependencyDashboardAutoclose为真,且那一轮!hasBranches && !hasDeprecationsOrReplacements;dependencyDashboard: false⇒ 走ensureIssueClosing(),此后readDashboardBody()连读都不读它。schema 默认
dependencyDashboardAutoclose=False⇒ 不配就永远不关。取 1、不取 2:本仓那个"半个 eslint 上限"(matchPackageNames只钉@eslint/js、漏eslint本体,而eslint-plugin-import的 peer 只到^9⇒ 严格npm ci挂在 dev/main 都必填的peer-dep-check)正是从这张卡的update dependency eslint to v10一行看出来的;拉总开关等于把minimumReleaseAge: 7 days与排程挡住的队列重新变回黑盒。验证:
scripts/renovate-config.test.mjs第 9 条先红(undefined ≠ true)后绿;两组正对照实测变红(临时dependencyDashboard:false⇒ 红;临时给 packageRule 加dependencyDashboardApproval:true⇒ 红),renovate.json事后按 sha256 校验为逐字节还原。2.
test(e2e): faq-anchor 改用页面自身就绪判据 + networkidle 静态守卫(3430b65b)— AAV-1329,wb-1009a3.
test(guard): architecture-guard 的 FS 扫描改为一次性(a0c8982f)— AAV-1331,wb-1009a4.
chore(hardcode): sync hardcoded assets and mappings(eb2a7f45)— botpackage-lock.json里@aave-dao/aave-address-book4.72.2 → 4.73.0。本地node_modules未重装,所以这条由 dev 的严格npm ci(peer-dep-check)来验。本地门禁
E2E_PROXY=http://127.0.0.1:7897 npm run ci:remote+ pre-push 全门,PUSH_RC=0:4098 passed | 14 skipped | 6 todo(192 files);✓ built in 3.52s0 failedNo issues found;semgrep / knip / dup 全过值得一提:同一棵工作树在不带代理时曾跑出
50 passed / 3 failed / 10 flaky / 36.7m,三条失败全是tbody tr[data-reserve-id]30s 等不到——实测直连取staging-api…/markets(412,891 字节)要 37.9s、第二次 90s 只传了 120,920 字节。所以那批红是本机出口,不是代码;带代理同一份 payload 1.85s。wb-1009a 板上"本沙箱跑不出可信结果"由此得到解释,也顺带说明本轮推送为何会连带他们的提交。