skill-harvest: /wrap-up §6.5 — a scoped add of a shared file still annexes

Earned today at 860c3df and caught by hand at this wrap (da0f22f). Firing moment
declared: a named step in /wrap-up, not executor recall.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wn9mxsFjHJkzYjuDdrtxwp
This commit is contained in:
David F Glidden
2026-08-31 13:02:50 +02:00
co-authored by Claude Opus 5
parent a9226e226d
commit 8b5d90da66
+11
View File
@@ -595,3 +595,14 @@ it, which is the argument for the step.
| — | patch | `/wake-up` digest (`wake-digest.py`) | **`PREVIOUS SESSION DID NOT WRAP` is a negative state-claim with no falsifier, in the instrument every session reads first.** Today it fired while the other session was **live** — still writing its transcript, and it had committed to `dotfiles` one minute into the sibling's wake. The digest was right that no wrap existed and **wrong about why**, and the wrong half is the dangerous one: a session that believes the other is finished has no reason not to write to `PENDING.md`. Collision avoided by one session reading an mtime attentively, not by any mechanism. Proposed: distinguish *no wrap recorded* from *the session has ended* — the transcript's mtime and a recent-commit check already answer it — and say **`ANOTHER SESSION MAY BE LIVE`** when they do. ⚠ **Honest limit:** mtime is a heuristic and a genuinely idle session looks live; the failure it introduces (an unnecessary caution) is the cheap direction, which is the whole argument. | at every wake — already the ritual, already this script | mechanical detector (strongest tier) | | — | patch | `/wake-up` digest (`wake-digest.py`) | **`PREVIOUS SESSION DID NOT WRAP` is a negative state-claim with no falsifier, in the instrument every session reads first.** Today it fired while the other session was **live** — still writing its transcript, and it had committed to `dotfiles` one minute into the sibling's wake. The digest was right that no wrap existed and **wrong about why**, and the wrong half is the dangerous one: a session that believes the other is finished has no reason not to write to `PENDING.md`. Collision avoided by one session reading an mtime attentively, not by any mechanism. Proposed: distinguish *no wrap recorded* from *the session has ended* — the transcript's mtime and a recent-commit check already answer it — and say **`ANOTHER SESSION MAY BE LIVE`** when they do. ⚠ **Honest limit:** mtime is a heuristic and a genuinely idle session looks live; the failure it introduces (an unnecessary caution) is the cheap direction, which is the whole argument. | at every wake — already the ritual, already this script | mechanical detector (strongest tier) |
⚠ **Both are filed as PROPOSED and neither was applied, though the first would otherwise have been a clean FIX with an exact 2026-08-24 precedent.** The `/wrap-up` §1.6 FIX lane is **PROVISIONAL until a steward–jurist check-in that its own index says is due and that has not happened in 29 days** — see PENDING-168 ADDENDUM 1, which files the `DEFERRED-DECISION` block that now surfaces it. The lane's own rule: *until that review, treat a borderline call as `[PROPOSAL]`*. ⚠ **Both are filed as PROPOSED and neither was applied, though the first would otherwise have been a clean FIX with an exact 2026-08-24 precedent.** The `/wrap-up` §1.6 FIX lane is **PROVISIONAL until a steward–jurist check-in that its own index says is due and that has not happened in 29 days** — see PENDING-168 ADDENDUM 1, which files the `DEFERRED-DECISION` block that now surfaces it. The lane's own rule: *until that review, treat a borderline call as `[PROPOSAL]`*.
---
### 2026-08-31 — `/wrap-up` §6.5: a scoped add of a SHARED file still annexes another session's work
**Tag:** `[PROPOSAL]` · **Firing moment: DECLARED** — a named step in `/wrap-up` (§6.5), the "ritual juncture that already exists" row. Not executor-recall.
**Earned, expensively, today.** §6.5 says *"Scoped add only — never `git add .` or `-A`"*, and that rule was followed. It is insufficient: `PENDING.md` is a **shared** file, `git add <path>` is a whole-file act, and a second interactive session had uncommitted work sitting in it. Commit `860c3df` therefore carried the chamber session's `PENDING-176`/`-177` under this session's message, `Co-Authored-By` and `Claude-Session` trailer. Content unharmed; attribution permanently wrong in git. Disclosed at `7578f5a` on the steward's instruction (*"disclose, don't rewrite"*) rather than rebased away.
**Proposed patch:** before the `git add` in §6.5, read `git status --short` **and** `git diff --cached` and separate any hunk this session did not write into its own commit, attributed. Add the standing line: **a scoped add is not a safe add when the path is shared.**
**Evidence it would work:** applied by hand at this wrap four hours later, it caught fifteen lines of the chamber session's `PENDING-177 AMENDMENT 1` in the same file, which were committed alone as `da0f22f` instead of annexed.
**Why `[PROPOSAL]` and not the FIX lane:** it changes the executor's commit-boundary conduct on governed artifacts, so the two-clause test's first branch is arguably met; and the lane is provisional and its check-in is `COME DUE`, under which the skill's own instruction is to treat a borderline call as `[PROPOSAL]`.
**Kin:** PENDING-104 (concurrency on shared governance state) — this is its commit-boundary form, distinct from ADDENDUM 1's corrupted read and ADDENDUM 2's interleaved write. Not covered by PENDING-174, which is the memory layer, not the commit step.
**Awaiting:** steward authorization.