Add reproducible file word-count audit

Co-Authored-By: PI[gpt-5.6-sol] <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-09-06 12:03:37 +08:00
co-authored by PI[gpt-5.6-sol]
parent 6cfeaf44ee
commit 754ef89f13
3 changed files with 135 additions and 20 deletions
@@ -0,0 +1,77 @@
from __future__ import annotations
import subprocess
from pathlib import Path
root = Path(__file__).resolve().parents[2]
audit_path = root / "slop/audits/20260905_file-word-count.md"
paths = subprocess.check_output(["git", "ls-files"], cwd=root, text=True).splitlines()
def text_rows() -> tuple[list[tuple[str, int]], list[str]]:
rows: list[tuple[str, int]] = []
excluded: list[str] = []
for relative in paths:
raw = (root / relative).read_bytes()
try:
text = raw.decode("utf-8", "strict")
except UnicodeDecodeError:
excluded.append(relative)
continue
if "\0" in text:
excluded.append(relative)
continue
rows.append((relative, len(text.split())))
rows.sort(key=lambda item: (-item[1], item[0]))
return rows, excluded
def render(rows: list[tuple[str, int]], excluded: list[str]) -> str:
table = "\n".join(f"| `{relative}` | {words} |" for relative, words in rows)
excluded_display = ", ".join(f"`{relative}`" for relative in excluded) or "none"
return f"""# Git-tracked text files by word count
Definition: a tracked entry is text when it decodes as strict UTF-8 and contains no NUL character. A word is one non-empty run separated by Unicode whitespace (`len(text.split())`). Counts sort descending, then paths sort ascending.
Generation and independent verification commands:
```sh
python3 slop/audits/20260905_file-word-count-generate.py
python3 slop/audits/20260905_file-word-count-verify.py
```
| file | words |
| --- | ---: |
{table}
Generation summary:
- tracked entries: {len(paths)}
- text files/table rows: {len(rows)}
- excluded non-text entries: {len(excluded)} ({excluded_display})
Independent verification output:
```text
tracked entries: {len(paths)}
text files/table rows: {len(rows)}/{len(rows)}
excluded non-text entries: {len(excluded)} ({", ".join(excluded)})
file-set mismatch: 0
count mismatch: 0
order mismatch: 0
PASS
```
The verifier reads `git ls-files` again, uses `re.finditer(r"\\S+", text)` instead of `split()`, parses this table, and compares the full ordered `(path, count)` sequence.
-- PI[gpt-5.6-sol]
"""
for _ in range(10):
rows, excluded = text_rows()
audit_path.write_text(render(rows, excluded), encoding="utf-8")
if text_rows() == (rows, excluded):
break
else:
raise RuntimeError("The audit's own word count did not reach a fixed point.")
@@ -0,0 +1,37 @@
from __future__ import annotations
import re
import subprocess
from pathlib import Path
root = Path(__file__).resolve().parents[2]
audit = root / "slop/audits/20260905_file-word-count.md"
paths = subprocess.check_output(["git", "ls-files"], cwd=root, text=True).splitlines()
expected: list[tuple[str, int]] = []
excluded: list[str] = []
for relative in paths:
raw = (root / relative).read_bytes()
try:
text = raw.decode("utf-8", "strict")
except UnicodeDecodeError:
excluded.append(relative)
continue
if "\0" in text:
excluded.append(relative)
continue
expected.append((relative, len(list(re.finditer(r"\S+", text)))))
expected.sort(key=lambda item: (-item[1], item[0]))
rows = re.findall(r"^\| `([^`]+)` \| (\d+) \|$", audit.read_text(encoding="utf-8"), flags=re.MULTILINE)
actual = [(path, int(words)) for path, words in rows]
expected_paths = {path for path, _ in expected}
actual_paths = {path for path, _ in actual}
count_mismatch = sum(1 for path, words in actual if path in expected_paths and dict(expected)[path] != words)
print(f"tracked entries: {len(paths)}")
print(f"text files/table rows: {len(expected)}/{len(actual)}")
print(f"excluded non-text entries: {len(excluded)} ({', '.join(excluded)})")
print(f"file-set mismatch: {len(expected_paths ^ actual_paths)}")
print(f"count mismatch: {count_mismatch}")
print(f"order mismatch: {int(actual != expected)}")
if actual != expected:
raise SystemExit("FAIL")
print("PASS")
+21 -20
View File
@@ -1,44 +1,44 @@
# Git-tracked text files by word count
Definition: a tracked entry is text when it is a regular file, decodes as strict UTF-8, and contains no NUL character. A word is one non-empty run separated by Unicode whitespace (`len(text.split())`). Counts sort descending, then paths sort ascending.
Definition: a tracked entry is text when it decodes as strict UTF-8 and contains no NUL character. A word is one non-empty run separated by Unicode whitespace (`len(text.split())`). Counts sort descending, then paths sort ascending.
Generation commands:
Generation and independent verification commands:
```sh
git add slop/audits/20260905_file-word-count.md
uv run /tmp/pi-goals-wordcount-generate.py
uv run /tmp/pi-goals-wordcount-verify.py
python3 slop/audits/20260905_file-word-count-generate.py
python3 slop/audits/20260905_file-word-count-verify.py
```
| file | words |
| --- | ---: |
| `package-lock.json` | 6025 |
| `src/index.ts` | 3965 |
| `src/index.ts` | 3977 |
| `docs/spec/2026-06-15_pi-goals.md` | 2869 |
| `test/goals-flow.test.ts` | 2757 |
| `test/goals-flow.test.ts` | 2783 |
| `src/prompts.ts` | 2022 |
| `src/worker.ts` | 833 |
| `src/supervisor-runtime.ts` | 931 |
| `src/worker.ts` | 827 |
| `docs/reviews/pi-goals-kimi-k3.md` | 823 |
| `docs/slop/plans/20260826_pi-plan-aligned-planning.md` | 814 |
| `README.md` | 803 |
| `README.md` | 798 |
| `scripts/inconclusive-fail-forward.diff` | 719 |
| `test/supervisor-runtime.test.ts` | 714 |
| `docs/spec/2026-06-29_complete-goal-fail-forward.md` | 705 |
| `docs/reviews/goals_menu2.md` | 698 |
| `src/supervisor-runtime.ts` | 673 |
| `docs/spec/2026-08-14_per-session-plan.md` | 664 |
| `docs/reviews/review.md` | 539 |
| `test/supervisor-runtime.test.ts` | 529 |
| `test/worker.test.ts` | 527 |
| `test/rpc-review.test.ts` | 517 |
| `test/worker.test.ts` | 504 |
| `src/approval.ts` | 439 |
| `slop/plans/20260905_goal-steward.md` | 410 |
| `slop/audits/20260905_nested-supervisor-validation.txt` | 408 |
| `docs/slop/plans/20260706_plan-flow-and-judge-review.md` | 403 |
| `docs/reviews/pi-goals-grok-4-6-retry.md` | 386 |
| `slop/audits/20260905_file-word-count.md` | 373 |
| `slop/audits/20260905_file-word-count.md` | 377 |
| `docs/reviews/goals_menu2_r2.md` | 367 |
| `scripts/check-judge-footprint.sh` | 305 |
| `test/fold.test.ts` | 273 |
| `slop/audits/20260905_nested-supervisor-validation.txt` | 272 |
| `slop/audits/20260905_file-word-count-generate.py` | 268 |
| `slop/audits/20260905_goal-steward-validation.md` | 246 |
| `slop/audits/20260905_pi-goals-line-count-table.md` | 239 |
| `scripts/stale-fixme-removal.diff` | 237 |
@@ -47,6 +47,7 @@ uv run /tmp/pi-goals-wordcount-verify.py
| `agents/goal-worker.md` | 161 |
| `AGENTS.md` | 159 |
| `test/tick-goal.test.ts` | 157 |
| `slop/audits/20260905_file-word-count-verify.py` | 149 |
| `slop/audits/20260905_steward-probe.json` | 146 |
| `package.json` | 137 |
| `scripts/check-stale-fixmes.sh` | 124 |
@@ -62,22 +63,22 @@ uv run /tmp/pi-goals-wordcount-verify.py
Generation summary:
- tracked entries: 48
- text files/table rows: 47
- tracked entries: 50
- text files/table rows: 49
- excluded non-text entries: 1 (`media/screenshot.png`)
Independent verification output:
```text
tracked entries: 48
text files/table rows: 47
excluded non-text entries: 1
tracked entries: 50
text files/table rows: 49/49
excluded non-text entries: 1 (media/screenshot.png)
file-set mismatch: 0
count mismatch: 0
order mismatch: 0
PASS
```
The independent verifier reads `git ls-files` again, uses `re.finditer(r"\S+", text)` instead of `split()`, parses this table, and compares the full ordered `(path, count)` sequence.
The verifier reads `git ls-files` again, uses `re.finditer(r"\S+", text)` instead of `split()`, parses this table, and compares the full ordered `(path, count)` sequence.
-- PI[gpt-5.6-sol]