[FIX] Resolve the STATE-CLAIM; [HARDENING] file PENDING-163; add the preservation instrument
STATE-CLAIM: memory-index-claims-reviewed-127-unplaced -> resolved, pointing at
7a92460. Verified end to end by re-running governance-drift-check.py rather than
trusting the write: "1 of 3 open are NOW FALSE" -> "2 tracked, none falsified /
plus 1 RESOLVED", no dangling-pointer defect, so the resolution parses AND its
pointer resolves. The `resolved:` form was derived from the parser, not from
memory of the schema, which is also why the correction commit had to come first.
What that discharge is evidence for is written into the item so it cannot be
quoted as more: one marked claim, marked by its own author, corrected in the
immediately following session. Expressibility, not adoption. The 57 unmarked
claims are untouched.
PENDING-163 [HARDENING]: the global pre-commit hook refuses files over 5MB and
prints "Consider using Git LFS", but measures `wc -c < "$file"` — working-tree
size — so an LFS-tracked file stages as a ~130-byte pointer and is still refused.
Tried it; same refusal, same file. The hook is NOT modified: it is global and
governed by REVIEWED-100/105.
preserve-transcripts.py: PENDING-147 option (i). The archive itself is NOT in this
repo — 115MB of transcripts is not dotfiles material, which is what the hook was
right about even though its reasoning measures the wrong thing. It lives at
~/_Dev/claude-transcript-archive, outside the harness's pruned path, which is what
actually stops the clock. 43 transcripts, read-back PASS.
No guard was bypassed: no --no-verify, no per-repo core.hooksPath override, and no
empty .git left behind that would make the archive look tracked when it is not.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NvZAKSf9aqratbqHbU9LK5
This commit is contained in:
co-authored by
Claude Opus 5
parent
7a92460a60
commit
57f83740a5
+47
-3
@@ -5461,10 +5461,19 @@ on the coverage inversion this exposes.**
|
||||
<!-- STATE-CLAIM: memory-index-claims-reviewed-127-unplaced
|
||||
since: 2026-08-25
|
||||
claims: the memory index says the steward still owes the placement of REVIEWED-127. ⚠ The line MOVED at the 2026-08-25 evening wrap: it is now in MEMORY-reference.md with the demoted Active Session block, not in MEMORY.md. Deliberately carried rather than discharged by the rotation — correcting it is next session's agreed first act, and a claim that vanishes as a side effect of housekeeping is not a claim that was answered.
|
||||
falsified-by: text-present REVIEWED.md ## REVIEWED-127 — PENDING-157 + PENDING-158 -->
|
||||
falsified-by: text-present REVIEWED.md ## REVIEWED-127 — PENDING-157 + PENDING-158
|
||||
resolved: 2026-08-26 — commit 7a92460 corrected the line in MEMORY-reference.md, struck rather than deleted so instance six keeps its evidence -->
|
||||
|
||||
**Awaiting:** nothing. Discharged by correcting the MEMORY.md line at the next wrap or wake, then
|
||||
setting `resolved:` with a pointer to the commit that did it.
|
||||
**Awaiting:** nothing — **DISCHARGED 2026-08-26**, as the agreed first act of the next session.
|
||||
The line was corrected in `7a92460` and struck rather than deleted, because it is the evidence for
|
||||
instance six and a silent deletion removes the error and the record of it together.
|
||||
|
||||
⚠ **What this discharge is evidence FOR, stated before it gets quoted as more.** The marker worked:
|
||||
it reported FALSIFIED at every wake until someone acted, and the correction happened in the first
|
||||
session after it was filed. That is one instance, on a claim its own author marked, in the session
|
||||
immediately following — the easiest possible case. **It bears on expressibility, not on adoption,
|
||||
and adoption is the open question REVIEWED-127 C2 named.** The 57 unmarked claims are untouched by
|
||||
this and nothing here says otherwise.
|
||||
|
||||
---
|
||||
|
||||
@@ -5809,3 +5818,38 @@ central finding is that care is not a mechanism.
|
||||
|
||||
**Files affected:** none.
|
||||
**Awaiting:** steward and jurist. ⚠ **The 09-08 read should not be run as though clean until this is ruled.**
|
||||
|
||||
---
|
||||
|
||||
## PENDING-163 — The pre-commit size guard measures the working tree, so the remedy it prints cannot satisfy it
|
||||
**Date:** 2026-08-26
|
||||
**Tag:** [HARDENING]
|
||||
**Summary:** The global pre-commit hook refuses any staged file over 5 MB and prints *"Consider using Git LFS for large files."* The check reads `wc -c < "$file"` — the **working-tree** size — so an LFS-tracked file, which stages as a ~130-byte pointer, still measures 17 MB and is still refused. Following the guard's own instruction does not clear the guard.
|
||||
|
||||
**Measured, not inferred** (2026-08-26, while preserving transcripts under PENDING-147):
|
||||
| | |
|
||||
|---|---|
|
||||
| hook | `~/dotfiles/git/hooks/pre-commit`, global via `core.hooksPath` |
|
||||
| the check | `for file in $(git diff --cached --name-only); … size=$(wc -c < "$file"); if [ $size -gt 5242880 ]` |
|
||||
| the advice | `echo "Consider using Git LFS for large files"` |
|
||||
| tried | `git lfs install --local` + `git lfs track "*.jsonl"` + `git add -A` → **same refusal, same file** |
|
||||
| `git-lfs` present | 3.7.1, and already declared in `Brewfile:40` — so this is not an unavailable remedy |
|
||||
|
||||
**Why this is a defect and not the rule working.** ⚠ Filed with the 2026-08-25 flag deliberately applied first — *filed a non-defect as a defect, twice in one direction in one day* — so the working-as-intended reading is stated before the defect reading:
|
||||
|
||||
- **Working-as-intended reading:** the ceiling means *"no large files in the working tree of any repo, LFS or not"*, and the LFS line is merely a pointer to a different workflow, not a promise.
|
||||
- **Against it:** the LFS line is printed **by the failing branch, as its remediation**, immediately after the error. A remedy printed at the point of refusal is a claim that it resolves the refusal. And LFS *does* serve the check's evident purpose — repository bloat — because the committed blob is a pointer; it is only the implementation, working-tree size, that LFS cannot change.
|
||||
|
||||
**So the narrow claim, and it is the only one made here:** the check and its printed advice disagree. Either the advice is wrong and should be removed or reworded, or the check should measure the staged blob (`git cat-file -s :"$file"`) so LFS actually clears it. **Which of those is correct is a policy question, not a bug fix** — it decides whether large files may enter these repos at all.
|
||||
|
||||
**⚠ Not fixed, and deliberately.** This hook is global to every repo and is governed by REVIEWED-100 and REVIEWED-105; its own doctrine is that *a disarmed hook must not look like an armed one*. Changing what it measures changes what it permits everywhere at once. It was also not bypassed: no `--no-verify`, no per-repo `core.hooksPath` override.
|
||||
|
||||
**Options:**
|
||||
- **(i) Reword the advice** to say the ceiling applies to the working tree and LFS does not exempt it. Smallest change; keeps current permissions exactly.
|
||||
- **(ii) Measure the staged blob** (`git cat-file -s :"$file"`), so LFS-tracked files pass. Makes the printed advice true; **widens what may be committed everywhere**, which is the part needing a ruling.
|
||||
- **(iii) Per-repo declaration** — let a repo opt out of the ceiling via the existing `.precommit-triggers` mechanism REVIEWED-100 already established, rather than a global change.
|
||||
|
||||
**Recommendation: (i) now, (iii) if a large-file repo is actually wanted.** (i) costs nothing and stops the guard from giving advice that fails; (ii) is the one that changes policy and should not ride in on a wording fix. ⚠ **No option here is urgent** — nothing is currently blocked by this. The transcript preservation it surfaced during is complete on disk and needs no commit to be safe.
|
||||
|
||||
**Files affected:** `~/dotfiles/git/hooks/pre-commit` (not modified).
|
||||
**Awaiting:** Steward authorization.
|
||||
|
||||
Reference in New Issue
Block a user