memory: 2026-10-06 tab 按创建时间排序(含 declared_at 被块丢掉的静默坑)
This commit is contained in:
1 parent
746e4f2afe
commit
1c5ee377ff
1 file changed
+75
@@ -90,3 +90,78 @@
|
|||||||
配置里的 `taskgraph` 指针(删载体要连"谁指向它"一起查,否则常驻每 10 s 刷 `Errno 2`)。
|
配置里的 `taskgraph` 指针(删载体要连"谁指向它"一起查,否则常驻每 10 s 刷 `Errno 2`)。
|
||||||
- 备份:`ai1net-dsh-server/tmp/bak/agent-product-misbuild-20261005/`。
|
- 备份:`ai1net-dsh-server/tmp/bak/agent-product-misbuild-20261005/`。
|
||||||
- **交接姿态**:常驻**故意没重起**(用户令"让那个会话自己建立")⇒ **我不再插手该工作区**。
|
- **交接姿态**:常驻**故意没重起**(用户令"让那个会话自己建立")⇒ **我不再插手该工作区**。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三十六、⚠️ 技能总仓「提交/推送」发现**历史分叉**(未决 · 待用户拍板)
|
||||||
|
|
||||||
|
用户 05:0x 说「提交」⇒ 核实两仓后发现**技能仓不能直接推**:
|
||||||
|
|
||||||
|
| 仓 | 本地 | 远端 | 关系 |
|
||||||
|
|---|---|---|---|
|
||||||
|
| 工作区 `ai1net-dsh-server` | `746e4f2` | 有上游 | ✅ 正常可推 |
|
||||||
|
| 技能总仓 `workbuddy_skills` | `5dc6ced`(含 5 个未推提交) | `19101ac` | 🔴 **两边无共同祖先** |
|
||||||
|
|
||||||
|
- 🔴 **远端是"重建的干净库"**:远端唯一提交 `19101ac init: workbuddy_skills 重建,仅收录 session-mechanism`
|
||||||
|
⇒ 有人**把远端历史重写过**(`git fetch` 报 `+ fe6ce9f...19101ac master (forced update)`)。
|
||||||
|
- 🔴 **本地是旧的多提交历史**:`5dc6ced`/`e4cbd2f`/`935e423`/`4adc431`/`1eec42e` + 更早。
|
||||||
|
- ⇒ `git merge-base HEAD origin/master` **为空** ⇒ **无法快进、无法普通合并**。
|
||||||
|
直接 `push` 会被拒(non-fast-forward);要上去只能 **`push --force`(覆盖远端历史)**。
|
||||||
|
- ⚠️ **这是不可逆的对外动作**(`--force` 会丢弃远端那个 init 提交)⇒ ⛔ **不擅自决定,必须用户拍板**。
|
||||||
|
- ⚠️ 另:技能仓还有 **19 个文件的未提交改动**(515 增/692 删,非本轮产物,疑似别的会话或早前轮次在途)
|
||||||
|
⇒ ⛔ **不代它提交**(无边界扫进来=伪造别人的工作)。
|
||||||
|
- ⚠️ 推送用 **`git@work.alotbuy.com:maogeigei/workbuddy_skills.git`**(work 域名,非 github)
|
||||||
|
⇒ 与 `~/.ssh/config` 里的 github 密钥路由**无关**(别去翻那套)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三十七、看板 tab 改「按创建时间」稳定排序(用户:「tab 的排列顺序 应该按照创建时间顺序来」)
|
||||||
|
|
||||||
|
### 为什么改(活跃度排序的真实毛病)
|
||||||
|
|
||||||
|
- 旧键 `tab_hot` = 该块**最近会话活动**距今分钟数(`age_min`),10-04 定的「最新在运行的排前面」。
|
||||||
|
- 🔴 **病根**:会话活动**每次协作都会变** ⇒ tab 顺序**自己会漂**。
|
||||||
|
用户脑子里认的是「第几个 tab 是什么」⇒ 位置一变就**要重新找**,且**无从判断为什么变了**。
|
||||||
|
- ✅ 新键 `tab_created` = `goal.json` 的 **`declared_at`**(目标声明时间)—— 目标建立后**不动**
|
||||||
|
⇒ 顺序**稳定**。
|
||||||
|
- ⚠️ **为什么不用 `topics_declared_at`**:两者多数相同,但 `declared_at` 是**目标本身**的建立时间,
|
||||||
|
`topics_declared_at` 是**任务类别清单**的确认时间(可能后补/缺失)。语义要取前者。
|
||||||
|
- ⚠️ **缺 `declared_at` 的块垫底**(`"~"` 大于任何 ISO 时间串),⛔ **不许猜**一个时间塞进去。
|
||||||
|
|
||||||
|
### 🔴🔴 本轮最大的坑:`declared_at` 被块**丢掉**了(排序静默失效)
|
||||||
|
|
||||||
|
- 块里的 `goal` **子字典只留 3 键**(`title`/`short`/`acceptance`,`board.py:1795`)
|
||||||
|
⇒ `declared_at` **不在里面**。
|
||||||
|
- 我第一版从 `_b["goal"].get("declared_at")` 取 ⇒ **恒为空** ⇒ 三块 `tab_created` 全是 `'~'`
|
||||||
|
⇒ **排序形同没做**,而"升序"判据**照样绿**(因为三个都一样,升序恒真)。
|
||||||
|
- ✅ 正解:在 `_goal_block()` 里**单独带出 `goal_declared_at` 字段**(从**形参 `g`** 取)。
|
||||||
|
⚠️ 从 `g` 取而非回读 `INBOX/goal.json`:peer 块传的是**对方**的 goal ⇒ 取到对方时间,正确。
|
||||||
|
- 🔴 **同族教训(第 N 次)**:**块是"精简过的视图",不是 goal 原样**
|
||||||
|
⇒ 任何"要参与逻辑的字段"都必须**显式带出来**,⛔ 不能指望它在块里躺着。
|
||||||
|
|
||||||
|
### 判据重写(附变异对照,证有牙)
|
||||||
|
|
||||||
|
- 夹具改成**时间乱序**(t2 10-01 最老/t0 10-02/t3 10-03),且**文件出现次序就是时间倒序**
|
||||||
|
⇒ 排序一旦失效,输出顺序**立刻不同**(⛔ 三个时间同序 ⇒ 判据恒绿,同族栽过)。
|
||||||
|
- 新增**真造第四块**(**没有** `declared_at`)⇒ 必须垫底且 `tab_i` 最后一位
|
||||||
|
(⛔ 不造这块 ⇒ 判据恒真 = 假绿)。
|
||||||
|
- 新增**防回退**判据:源码里 ⛔ 不许再出现 `tab_hot` 当排序键。
|
||||||
|
- ⚠️ **我自己写判据时取错层**(`short` 在 `goal` 子字典里,⛔ 不在块顶层)⇒ 判据**恒红**,已修。
|
||||||
|
⇒ 写判据也要先确认"字段在哪一层",⛔ 别凭印象。
|
||||||
|
- **变异对照**:A 排序 `reverse=True` ⇒ 红 ✅|B 排序键换回 `tab_hot` ⇒ **五条同时红** ✅|还原 ⇒ 绿 ✅。
|
||||||
|
|
||||||
|
### 验收
|
||||||
|
|
||||||
|
- `selftest` **PASS 97 / FAIL 0**|`install.py --verify` **✅ 全绿**|`--manifest` 56 份/语法失败 0。
|
||||||
|
- 真起看板实测:`i=0 本机协作(2026-10-01T22:29)` → `i=1 vibe-product(2026-10-05T18:04)` ✅。
|
||||||
|
- ⛔ **`board.py` 代码改动 ⇒ 必须重启看板**(走 `dsh-board-keepalive` 计划任务,⛔ 不手动裸起)。
|
||||||
|
- 提交:`5e77f0e`(技能仓,未推送)。
|
||||||
|
|
||||||
|
### ⚠️ 顺带记录:本机裸 `nohup python board-launch.py &` 活不过工具调用边界
|
||||||
|
|
||||||
|
- 实测:`nohup ... &` 起看板 ⇒ 打印了「看板已起」但**进程随即消失**(工具调用结束即被收走)。
|
||||||
|
- ✅ **唯一可行起法 = 触发计划任务** `dsh-board-keepalive`(`Start-ScheduledTask`)
|
||||||
|
⇒ 与记忆里「常驻起来只有两条路:计划任务 / 会话后台任务+stdout 重定向」一致。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in new issue
Block a user