判断现状要看真正在跑的那一份
# 判断现状要看真正在跑的那一份
结论
你反复踩的是同一个坑:你检查的那个东西,不是实际在运行的那个东西。 仓库里的文件、配置文件、部署状态页、接口返回、另一个目录里的产物 —— 它们都只是 「应该是什么」的声明,不是**「现在是什么」的事实**。 判据一句话:我看到的这一份,是此刻正在被执行的那一份吗? 答不上来,就先别下结论。
八处证据:每一处都是「查的不是在跑的那份」
| 出处 | 你以为在看的 | 实际在跑的 | 症状 |
|---|---|---|---|
| 功能缺失先确认运行的是哪份产物 | 刚构建出的新版本 | 安装目录里没更新的旧产物 | 新功能「没做」 |
| 改配置后要确认部署真的用了新配置 | 「redeploy 成功」的状态 | 平台复用的旧部署清单(空 startCommand) | 新配置根本没生效 |
| 仓库残留会误导对现状的判断 | 仓库里的 prototypes/、旧文档 | 运行时实际走的 DB row | 反复误判架构 |
| worktree是独立目录产物与配置都隔离 | 主目录改好的 .env.local | 另一个 worktree 目录的产物 | 改了环境变量不生效 |
| 改版后旧路由仍指向旧实现 | 新布局组件 | 旧 route 仍 import 的旧组件 | 入口点进去还是旧界面 |
| 接口验证通过不等于浏览器已登录 | API 返回 200(账号有效) | 浏览器实际持有的 session cookie | 接口通过但页面仍是未登录 |
| 验收要按唯一标识选中实例 | 按名字激活/截图的那个实例 | Launch Services 按名字解析到的旧安装 | 验收看的是旧 UI |
| 端口占用会把你连到别人的服务 | 自己刚起的 Agent(3102) | 另一个 worktree 的 Next Web 占着该端口 | 上传失败,且排查方向全被带偏 |
综合判断
-
「声明」和「事实」之间隔着一个执行路径,这个路径可能指向别处。 文件说配置改了、部署说成功了、接口说账号对了 —— 每一句都为真,但每一句都不是 「此刻正在跑的那一份」。要判断现状,必须把观测点放在执行路径的末端:产物版本号、 部署后实际生效的清单、运行时读的 DB、当前目录的服务进程、该端口上实际监听的是谁、 入口实际 import 的组件、浏览器真正持有的 cookie。
-
这类错误全部静默。 旧产物不会报错,它只是「没有新功能」;旧路由不会报错,它只是 「长得不一样」;复用旧清单的部署不会报错,它只是「没生效」。所以症状永远是 「我明明改了 / 做了」,而没有任何一条错误信息指向「你看错了对象」。
-
可迁移的动作:任何「改了却没效果 / 做了却没有」的场合,先问三句 —— 「我看的是哪一份?」「它在哪条路径上被执行?」「这条路径和我改的那条是同一条吗?」 三句都答得上,再去怀疑代码本身。
与既有 synthesis 的关系
- 先定位归属层再动手 —— 那条解决**「是哪一层」;本条解决「是哪一份」**。两者是排障的 前两个动作:先定层,再定实例。
- 判据要用真值而非代理 —— 那条讲写判据时不要用代理量;本条讲核查现状时不要用代理物 (文件、状态页、接口返回都是「现状」的代理)。同源:代理在典型情况下与真值一致,只在边界处静默分叉。
- 能力要靠消费方认账 —— 那条讲「对面没认账」;本条讲「你查的根本不是对面在跑的那份」。
- 存量不会自动跟上新逻辑 —— 那条讲新逻辑到不了旧对象;本条讲你观测不到真正的运行态。
相关
- 仓库残留会误导对现状的判断
- 功能缺失先确认运行的是哪份产物
- 改配置后要确认部署真的用了新配置
- 本地开发脚本可能连生产资源 —— 同类:本地脚本实际连的是生产资源,不是你以为的本地
- 验收要按唯一标识选中实例 —— 第七处证据:按名字选中的不是刚构建的那一份