- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次) - .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…), 目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪 - .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/) - .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*) - .gitignore 补:备份件(*.bak-*) - 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
64 lines
3.9 KiB
Python
64 lines
3.9 KiB
Python
import json, sys, os, shutil, datetime
|
||
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
|
||
|
||
WS = r"E:/ProgramData/AIProject/ai1net-dsh-server"
|
||
TG = os.path.join(WS, "交付物/任务图-会话协作自检.json")
|
||
INBOX = os.path.join(WS, "tmp/supervise-inbox")
|
||
CLAIM = os.path.join(INBOX, "claims/S12")
|
||
BAK = TG + ".bak-s12-clean-20261002-2215"
|
||
|
||
EV = ("2026-10-02 22:0x–22:1x【本棒 · 走 SQL 直连通道,收尾完成】"
|
||
"改前只读盘点 = **9 条**(⛔ prompt 说的 29 条不成立:那是 09-18 点前旧读数,"
|
||
"那批多数已在 18:0x 那一棒被 deleted_at 软删,只剩这 9 条漏网)"
|
||
"⇒ 判据 deleted_at IS NULL ∧ status='ACTIVE' ∧ schedule_type='once' ∧ next_run_at IS NULL。"
|
||
"**9 条逐条单发 UPDATE(status→PAUSED,⛔不删行)+逐条回读四元组 (PAUSED,once,None,None) "
|
||
"+ rowcount=1 ⇒ 9/9 OK**;改后回读计数 **= 0** ✅。"
|
||
"总行数 141→141(未删行);PRAGMA integrity_check = ok(改前也先跑基线)。"
|
||
"**误伤回归**:recurring ACTIVE 3→3、待跑 once(next_run_at 非空)2→2 ⇒ 周期排期与 follow/waker 时钟一条没少。"
|
||
"脚本内置 assert(盘点=列表、且拒改本会话排期 45d4e2d4)⇒ 不一致即停手。"
|
||
"⛔ 全程未用 automation_update(P0-26 属主边界会假成功),只走 sqlite3 SQL + busy_timeout=10000,"
|
||
"⛔ 未做任何文件级 cp/mv(避 WAL 三件套)。"
|
||
"⛔ **状态=待核对(await-verify),不标 done**:产物只有「9→0」这一条读数,"
|
||
"需下一次 collabd.py --once 的体检报告确认这 9 条不再出现在 notes 段才可转 done;"
|
||
"⚠️ 本轮体检大概率仍 skipped(本自动化会话在跑 ⇒ health() busy 恒跳过,另有 300s 节流戳)。"
|
||
"产物:机制排查与修复/S12_清理报告_20261002.md + 两个可复跑脚本(盘点/停用,幂等)。"
|
||
"⛔ queue.json/queue.md/NEXT.md 是 collabd 派生产物,未手改。")
|
||
|
||
# 1) 任务图 S12 -> await-verify
|
||
g = json.load(open(TG, encoding="utf-8"))
|
||
shutil.copy2(TG, BAK)
|
||
hit = 0
|
||
for n in g.get("nodes", []):
|
||
if n.get("id") == "S12":
|
||
n["status"] = "await-verify"
|
||
n["evidence"] = EV
|
||
n["_待核对"] = ("计数判据已过(9→0);状态判据待下一次体检报告确认这 9 条不出现在 notes 段。"
|
||
"⚠️ 本轮体检 skipped(本会话在跑 ⇒ busy)。")
|
||
hit += 1
|
||
assert hit == 1, f"S12 节点命中数异常:{hit}"
|
||
g["updated"] = datetime.datetime.now().isoformat(timespec="seconds")
|
||
tmp = TG + ".tmp-s12"
|
||
json.dump(g, open(tmp, "w", encoding="utf-8"), ensure_ascii=False, indent=2)
|
||
os.replace(tmp, TG)
|
||
print("[1] 任务图 S12 -> await-verify OK (bak:", os.path.basename(BAK), ")")
|
||
|
||
# 2) 出队:删 claims/S12
|
||
if os.path.isdir(CLAIM):
|
||
holder = os.path.join(CLAIM, "holder")
|
||
who = open(holder, encoding="utf-8").read().strip() if os.path.exists(holder) else "(无 holder)"
|
||
shutil.rmtree(CLAIM)
|
||
print("[2] claims/S12 已删(出队) holder =", who)
|
||
else:
|
||
print("[2] claims/S12 不存在(本就未取件登记)⇒ 无需出队,未做任何删除动作")
|
||
|
||
# 3) 落地一份可核对的出队/待核对记录(append)
|
||
rec = os.path.join(INBOX, "advance.md")
|
||
line = ("\n- **2026-10-02 22:1x · S12 出队 · 状态=待核对(await-verify)** —— "
|
||
"机制排查与修复-S12-一次性排期清理 | 一次性排期在册 **9 → 0**(逐条停用,⛔未删行,integrity ok)| "
|
||
"recurring 3→3、未跑 once 2→2(无误伤)| ⛔ 29 条为旧读数,现场 9 条 | "
|
||
"产物 `机制排查与修复/S12_清理报告_20261002.md` | 判据:等下次体检报告确认 notes 段已无这 9 条再转 done\n")
|
||
with open(rec, "a", encoding="utf-8") as f:
|
||
f.write(line)
|
||
print("[3] advance.md 已追加待核对记录 OK")
|
||
print("DONE")
|