The work-log rule returns, restricted to a single file — plus the gate that keeps it single. Refs the sprawl Frank named: one agent, fifty-odd logs, none of them the place to look.
What changed
agent/APPEND_SYSTEM.md § 1 — new subsection THE WORK LOG IS ONE FILE: one page in the knowledge base (omp-docs/log.md here, whichever change-log page a repo's index names elsewhere), read before starting, written in the same commit as the change it describes. Banned by name: per-directory logs, per-project/branch/run logs, NOTES.md / PROGRESS.md / STATUS.md / worklog/, dated diaries. If a KB has no log page, the fix is one at its root plus an index entry.
scripts/kb-lint.sh — reports any log.md that is not the bundle root's. Law without a gate is a wish.
omp-docs/core/log.md destroyed — it existed "for tracking core directory modifications": two entries of migration bookkeeping, and an OKF-conversion date (2026-07-15) matching neither the bundle log (2026-01-15) nor git (the OKF rebuild lands 2026-08-28). core/index.md still linked it, which is how a stale page stays in circulation. Moved to omp-docs/core/.AGENTTRASH/log.md per the trash convention; the index now points one level up.
omp-docs/references/okf-spec.md + okf-maintenance.md — the spec called log.md "reserved" and maintenance said every bundle "has one", which read as "any directory may have one". Now: one file, at the root. Maintenance also taught the wrong format — one line per file changed, exampled with absolute paths (/docs/ghostty.md) that kb-lint cannot resolve because OKF links are relative — replaced with what this bundle actually runs: what changed plus the durable lesson, a few lines, laws and incidents rather than manifests.
Both gates skipped nothing before: they walked .AGENTTRASH/, so trashing a page turned them red (frontmatter demanded of a quarantined page, an index demanded for the trash dir). A gate that only goes green once the quarantined copy is deleted is a gate that deletes history, so both now skip any path containing .AGENTTRASH.
Verification
Red-then-green where it matters: with the gate in place and the second log still present, the shipped-bundle tests failed — a bundle has one work log, log.md, at the bundle root; found: core/log.md, log.md. Destroying the duplicate is what turned them green, so the gate demonstrably catches the thing it exists for.
New tests: 2 for the one-log rule, 1 for the quarantine exemption in kb-lint, and a first test file for kb-coverage.py (4 tests — it had none, and it now has behaviour worth pinning).
cwd: /home/blank/.omp/wt/wt-20261019-125509-7c8a99d · session: 01a155bb-6474-7366-be9d-629f74af0e05 (built in the worktree ~/.omp/wt/wt-onelog)
The work-log rule returns, restricted to a single file — plus the gate that keeps it single. Refs the sprawl Frank named: one agent, fifty-odd logs, none of them the place to look.
## What changed
- **`agent/APPEND_SYSTEM.md` § 1** — new subsection **THE WORK LOG IS ONE FILE**: one page in the knowledge base (`omp-docs/log.md` here, whichever change-log page a repo's index names elsewhere), read before starting, written in the same commit as the change it describes. Banned by name: per-directory logs, per-project/branch/run logs, `NOTES.md` / `PROGRESS.md` / `STATUS.md` / `worklog/`, dated diaries. If a KB has no log page, the fix is one at its root plus an index entry.
- **`scripts/kb-lint.sh`** — reports any `log.md` that is not the bundle root's. Law without a gate is a wish.
- **`omp-docs/core/log.md` destroyed** — it existed "for tracking core directory modifications": two entries of migration bookkeeping, and an OKF-conversion date (2026-07-15) matching neither the bundle log (2026-01-15) nor git (the OKF rebuild lands **2026-08-28**). `core/index.md` still linked it, which is how a stale page stays in circulation. Moved to `omp-docs/core/.AGENTTRASH/log.md` per the trash convention; the index now points one level up.
- **`omp-docs/references/okf-spec.md` + `okf-maintenance.md`** — the spec called `log.md` "reserved" and maintenance said every bundle "has one", which read as "any directory may have one". Now: one file, at the root. Maintenance also taught the wrong format — one line per file changed, exampled with absolute paths (`/docs/ghostty.md`) that kb-lint cannot resolve because OKF links are relative — replaced with what this bundle actually runs: what changed plus the durable lesson, a few lines, laws and incidents rather than manifests.
- **Both gates skipped nothing before**: they walked `.AGENTTRASH/`, so trashing a page turned them red (frontmatter demanded of a quarantined page, an index demanded *for the trash dir*). A gate that only goes green once the quarantined copy is deleted is a gate that deletes history, so both now skip any path containing `.AGENTTRASH`.
## Verification
- Red-then-green where it matters: with the gate in place and the second log still present, the shipped-bundle tests failed — `a bundle has one work log, log.md, at the bundle root; found: core/log.md, log.md`. Destroying the duplicate is what turned them green, so the gate demonstrably catches the thing it exists for.
- New tests: 2 for the one-log rule, 1 for the quarantine exemption in `kb-lint`, and a first test file for `kb-coverage.py` (4 tests — it had none, and it now has behaviour worth pinning).
- `env -u LC_ALL bats tests/` = **116 ok, 0 failures**. `LC_ALL=C bats tests/` = 115 ok, 1 failure: the pre-existing gen-keybinds locale bug, owned by [gen-keybinds: a C locale lost every section header — match the dash as a literal](https://gitea.franksdank.cloud/dank/command-center/pulls/55).
- `kb-lint`: 0 violations · `kb-coverage`: 0 issues.
## Stacking note
This branch **contains** the commits of [APPEND_SYSTEM: report a PR as its link plus its title — and commit the doctrine that has been live but uncommitted since Oct 19](https://gitea.franksdank.cloud/dank/command-center/pulls/56), merged in rather than rebased, because both edit `agent/APPEND_SYSTEM.md` § 1 and a rebase is not on the table. Merge #56 first and this diff reduces to just the work-log changes; merge this one first and #56 lands as an already-contained no-op. Either order is clean.
---
cwd: /home/blank/.omp/wt/wt-20261019-125509-7c8a99d · session: 01a155bb-6474-7366-be9d-629f74af0e05 (built in the worktree `~/.omp/wt/wt-onelog`)
The live deployment has been running this rewrite of rule 1 since 2026-10-19, but
the file was never committed: agent/APPEND_SYSTEM.md is prose tier, outside the
live-sync allowlist, so the heartbeat surfaces the dirt instead of committing it —
which is correct behaviour, and it left the fleet's system prompt with no history
and no way for another machine to pull it. Committed verbatim as it runs, no
editorial changes: the purpose test, the dead-weight-number law, and the
deletion-is-an-update clause.
A config that only exists on one disk is not a deployment; it is a pending loss.
"#54" made Frank go hunting: numbers are per-repository across the forges this
fleet uses, and a number carries no hint of which work is being reported. Every
mention of a PR now pairs its web URL with its title — gitea.franksdank.cloud for
the Dankclaw Gitea, the equivalent for any other forge.
Refs the AGENTS.md convention that an open PR gets opened in Frank's browser: the
rule covers prose, where the browser tab does not help.
The bundle had two work logs. `core/log.md` was created "for tracking core directory
modifications" and holds two entries of pure migration bookkeeping (file moved,
directory created, log created) — every one recoverable from `git log` — plus a date
for the OKF conversion (2026-07-15) that matches neither the bundle log (2026-01-15)
nor git history, where the OKF rebuild lands 2026-08-28. `core/index.md` was still
linking it, which is exactly how a stale page stays in circulation. kb-lint now reports
any `log.md` that is not the bundle root's; the page moved to omp-docs/core/.AGENTTRASH/
per the trash convention, and the core index points one level up.
Both gates also walked `.AGENTTRASH/`, so trashing a page turned them red: kb-lint
demanded frontmatter from a quarantined page and kb-coverage demanded an index for the
trash directory. A gate that only goes green once the quarantined copy is deleted is a
gate that deletes history, so both skip any path containing `.AGENTTRASH` — pinned by a
test in each suite, and kb-coverage finally gets its own test file.
The spec listed `log.md` as a reserved name and the maintenance page said every bundle
"has a `log.md`" — neither said there is only one, so a subdirectory could invent its own
and look compliant. Which is how the sprawl Frank banned started: with fifty logs the
entry is never where the next reader looks, and every copy re-dates the same event.
The maintenance page also taught the wrong format: "one line per change with file path",
exampled as `/docs/ghostty.md — Updated keybind table`, i.e. a manifest duplicating git,
with absolute paths that kb-lint cannot resolve because OKF links are relative. Replaced
with the law this bundle already runs: what changed plus the durable lesson, a few lines,
relative links, laws and incidents rather than bookkeeping.
Rule 1 lost its work-log sentence in the point-of-use rewrite. Restoring it plainly would
re-create the old failure, where one agent kept logs in fifty-odd files and none of them
was the place to look. So the restored rule names the file: a single page in the
knowledge base — omp-docs/log.md here, whichever change-log page a repo's index names
elsewhere — read before starting, written in the same commit as the change it describes,
under that page's own entry law. Explicitly banned: per-directory logs, per-project or
per-run logs, NOTES.md/PROGRESS.md/STATUS.md/worklog/, dated diaries. If a KB has no log
page, the fix is one at its root plus an index entry, never a log somewhere else.
The bundle's own log records the change and the two-log incident it came out of.
dank
merged commit ab94c91bcf into main2026-10-20 22:23:22 -07:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The work-log rule returns, restricted to a single file — plus the gate that keeps it single. Refs the sprawl Frank named: one agent, fifty-odd logs, none of them the place to look.
What changed
agent/APPEND_SYSTEM.md§ 1 — new subsection THE WORK LOG IS ONE FILE: one page in the knowledge base (omp-docs/log.mdhere, whichever change-log page a repo's index names elsewhere), read before starting, written in the same commit as the change it describes. Banned by name: per-directory logs, per-project/branch/run logs,NOTES.md/PROGRESS.md/STATUS.md/worklog/, dated diaries. If a KB has no log page, the fix is one at its root plus an index entry.scripts/kb-lint.sh— reports anylog.mdthat is not the bundle root's. Law without a gate is a wish.omp-docs/core/log.mddestroyed — it existed "for tracking core directory modifications": two entries of migration bookkeeping, and an OKF-conversion date (2026-07-15) matching neither the bundle log (2026-01-15) nor git (the OKF rebuild lands 2026-08-28).core/index.mdstill linked it, which is how a stale page stays in circulation. Moved toomp-docs/core/.AGENTTRASH/log.mdper the trash convention; the index now points one level up.omp-docs/references/okf-spec.md+okf-maintenance.md— the spec calledlog.md"reserved" and maintenance said every bundle "has one", which read as "any directory may have one". Now: one file, at the root. Maintenance also taught the wrong format — one line per file changed, exampled with absolute paths (/docs/ghostty.md) that kb-lint cannot resolve because OKF links are relative — replaced with what this bundle actually runs: what changed plus the durable lesson, a few lines, laws and incidents rather than manifests..AGENTTRASH/, so trashing a page turned them red (frontmatter demanded of a quarantined page, an index demanded for the trash dir). A gate that only goes green once the quarantined copy is deleted is a gate that deletes history, so both now skip any path containing.AGENTTRASH.Verification
a bundle has one work log, log.md, at the bundle root; found: core/log.md, log.md. Destroying the duplicate is what turned them green, so the gate demonstrably catches the thing it exists for.kb-lint, and a first test file forkb-coverage.py(4 tests — it had none, and it now has behaviour worth pinning).env -u LC_ALL bats tests/= 116 ok, 0 failures.LC_ALL=C bats tests/= 115 ok, 1 failure: the pre-existing gen-keybinds locale bug, owned by gen-keybinds: a C locale lost every section header — match the dash as a literal.kb-lint: 0 violations ·kb-coverage: 0 issues.Stacking note
This branch contains the commits of APPEND_SYSTEM: report a PR as its link plus its title — and commit the doctrine that has been live but uncommitted since Oct 19, merged in rather than rebased, because both edit
agent/APPEND_SYSTEM.md§ 1 and a rebase is not on the table. Merge #56 first and this diff reduces to just the work-log changes; merge this one first and #56 lands as an already-contained no-op. Either order is clean.cwd: /home/blank/.omp/wt/wt-20261019-125509-7c8a99d · session: 01a155bb-6474-7366-be9d-629f74af0e05 (built in the worktree
~/.omp/wt/wt-onelog)