session-mechanism:解析不到文档库根时如实报错留痕(第 11 条禁令)
⚠️ 这批改动**不是本次会话写的**,是本机协作机制里别的会话留在工作区的;我按用户「就可以提交仓库」
的授权一并入库,提交前只做了语法校验 —— 三个 py 过 `py_compile`,`handoff-guard.sh` 过 `bash -n`。
- `install.py` `write_roots()`:`DSH_DOCS_ROOT` 解析不到时,原行为是**整行不生成、不报错、不留痕**
⇒ 锁类脚本读不到该键 ⇒ `handoff-guard.sh` 回落到技能包自己的 `scripts/` ⇒ 锁根落进技能包
(另一台机器实测已在 `<技能包>/scripts/05-交接单/.locks` 长出一把锁)。现改为**如实报错 + 留痕**,
并写明「本区确实没有 dsh 文档库时就写本工作区根」这条出路。
- `collabd.py` / `hooks/lock-guard-hook.py` / `lock/handoff-guard.sh`:同批配套(68 增 / 12 删)。
This commit is contained in:
1 parent
f2d07b47ad
commit
22799fc9c2
4 files changed
+68
-12
No files matched your search
@@ -43,7 +43,21 @@ if [ -f "$_SM_PKG/env/roots.env" ]; then
|
||||
elif [ -f "$_SM_PKG/roots.env" ]; then
|
||||
. "$_SM_PKG/roots.env"
|
||||
fi
|
||||
ROOT="${DSH_DOCS_ROOT:-$(cd "$_SM_HERE/.." && pwd)}"
|
||||
# 🔴 2026-10-15 修(第 11 条禁令 + D 盘实测事故):
|
||||
# 原写 `ROOT="${DSH_DOCS_ROOT:-$(cd "$_SM_HERE/.." && pwd)}"` —— 回落值是
|
||||
# `$_SM_HERE/..` = **本技能包自己的 `scripts/`** ⇒ 锁根落进技能包
|
||||
# (实测已在 `<技能包>/scripts/05-交接单/.locks` 长出一把锁,本该落文档库)。
|
||||
# ✅ 现行:取不到 ⇒ **如实报错 + 留痕 + 退出码 2**,⛔ 不回落到包内、⛔ 不猜路径。
|
||||
if [ -z "${DSH_DOCS_ROOT:-}" ]; then
|
||||
_SM_ERR="${_SM_PKG}/logs/handoff-guard.err.log"
|
||||
mkdir -p "$(dirname "$_SM_ERR")" 2>/dev/null || true
|
||||
printf '%s ⛔ 取不到 DSH_DOCS_ROOT(本包 env/roots.env 缺该键)⇒ 退出码 2\n' \
|
||||
"$(date '+%Y-%m-%d %H:%M:%S')" >> "$_SM_ERR" 2>/dev/null || true
|
||||
printf '⛔ 取不到文档库根(DSH_DOCS_ROOT)—— 锁根无法定位 ⇒ 停手(退出码 2)。\n' >&2
|
||||
printf ' ✅ 修法:把本工作区根写进 <技能包>/env/roots.env 的 DSH_DOCS_ROOT,或跑 install.py --apply。\n' >&2
|
||||
exit 2
|
||||
fi
|
||||
ROOT="$DSH_DOCS_ROOT"
|
||||
cd "$ROOT" || exit 2
|
||||
LOCKDIR="$ROOT/05-交接单/.doing-"
|
||||
LOCKEXEC="$ROOT/05-交接单/.exec-lock"
|
||||
|
||||
Reference in new issue
Block a user