Skip to content

Clear unfilled stubs from the generated indexes and ignore coverage output - #150

Closed
Jason-Vaughan wants to merge 2 commits into
mainfrom
chore/janitor-sweep-2026-09
Closed

Clear unfilled stubs from the generated indexes and ignore coverage output#150
Jason-Vaughan wants to merge 2 commits into
mainfrom
chore/janitor-sweep-2026-09

Conversation

@Jason-Vaughan

Copy link
Copy Markdown
Owner

What

Janitor sweep — repository hygiene only. No source files, no tests, no behaviour change.

  • FEATURES.md — removed ten auto-stubbed **TBD** — touched in this session: <path> entries under two dated headings. Each recorded only that a file had been touched, which git already records, and not one named a feature — the file's entire subject. Eight named a design document; the other two named PROJECT-MAP.md and CONTRIBUTING.md.
  • PROJECT-MAP.md — the tanglebrain/ entry stopped mid-sentence and the docs/ entry was still the literal <!-- describe --> placeholder. Both now describe the tree as it is, leading with cli.py because project-state.yaml names it the primary surface.
  • .gitignore — coverage output (.coverage, .coverage.*, htmlcov/) was not ignored.

Both index files are TangleClaw-maintained scaffolds whose auto-population is currently broken, with a fix expected upstream. The files and their structure stay deliberately — including the empty Server / API and Governance / Engines headings the wrap-step appends into. Only content that was never captured in the first place was removed; nothing was filled in by hand that a generator is meant to own.

Why

These are two of the first files a stranger opens, and this repo now has outside contributors. A map whose entry stops mid-sentence and an index whose visible content is ten TBD placeholders are worse than either file being absent — they read as abandoned rather than pending.

Separately: .coverage is a build artifact, and it had already reached a branch once.

Also in this sweep, not in this diff

  • 18 stale local branches deleted. git branch --merged reported none of them — main squash-merges, so branch commits never appear in main and the built-in check is blind here. Mapping against the merged-PR list found 17 leftovers plus pr112. The four apparent orphans were checked for unique content before deletion: chore/oss-r0-gitignore's six gitignore patterns are all already in main, and the three wrap/* branches only re-added the same scaffold header. SHAs recorded locally in .prawduct/deleted-branches-2026-09-06.txt.
  • First Norm Health sweep since ratification. Erosion measured at zero across five enforceable norms; recorded in project-state.yaml so the next sweep reads a trend rather than re-deriving a point. The broad-catch norm holds at 11 sites — 10 explicitly waived, the 11th re-raising and so exempt from BLE001 by construction, with no per-file ignore hiding anything.
  • One norm trigger examined and re-affirmed unchanged. The formatting norm revisits "when a second regular contributor arrives and style starts costing review time". A contributor arrived; the cost did not — four contributor PRs reviewed this session, not one finding about style. It was first reported as fired, which was an overstatement of a conjunction. Owner re-affirmed the norm and declined to widen it.

Test plan

  • make test664 passed, 17 skipped, ruff and mypy clean. (664 rather than 673 because this branch is off main and does not carry Note a lost measurement write, once per process #148's tests.)
  • Line widths: only the lines this branch already touched were rewrapped. CHANGELOG.md carries ~90 pre-existing lines over the ~100-col soft wrap (one at 185); reflowing those would be the reformatting the no-formatter ruling exists to prevent.
  • No source files touched, so the suite is a regression check rather than evidence for new behaviour.
  • git check-ignore confirms the new patterns resolve, with no duplicate coverage entry.
  • Verified nothing in the repo reads either removed FEATURES.md section, and that every docs/design/* file named in the new docs/ description exists.

Review

  • Critic, round 1 rev-20260906T192656Z-2515796f — 0 blocking, 2 warnings, 3 notes. Both warnings were errors in my own prose: an unchecked "every one named a design document" that was false in 2 of 10 cases, and a map that omitted cli.py, the primary surface it exists to point at. The first landed in the same commit whose message cites the sibling rule about copying counts.
  • Critic, round 2 rev-20260906T193251Z-8582657f — 0 blocking, 0 warnings, 6 notes. Three folded into the second commit (an unchecked universal in PROJECT-MAP.md — the same rule again, in the sibling file), three accepted.
  • Independent PR review — 0 blocking, 0 warnings, 2 notes, both ridden along. It fact-checked every claim the diff adds against the tree, including scanning the reflog and unreachable objects to confirm .coverage really had reached a branch (it had: 75d2dc9, on a branch this sweep deleted).
  • All fourteen findings dispositioned in the evidence store.

A cost I paid and would not repeat: round 1's fixes went in as an --amend, which rewrote the tree and destroyed the review fact, so verify-resolutions was refused and a full cumulative had to run. Round 2's fixes went in as a second commit and cost-of-commit priced them free — same fixes, no round. On a branch carrying a review fact, amend is the expensive option.

Note for the reviewer

prawduct-hook check-change-log-entry reports no-entry structurally on this repo: .prawduct/ is gitignored by owner ruling (.gitignore:41), so git cannot see .prawduct/change-log.md. Both entries were verified by hand — the private one at change-log.md:262, and the tracked public CHANGELOG.md entry under [Unreleased] / ### Internal. ### Internal is the correct tier: dev tooling and docs with no user-visible change.

Janitor sweep. These two files are TangleClaw-maintained scaffolds whose
auto-population is not currently working; a fix is expected upstream, so the
files and their structure stay. What goes is the content that was never
captured in the first place.

`FEATURES.md` carried ten `**TBD** — touched in this session: <path>` entries
under two dated auto-stub headings. Each recorded that a file had been touched,
which git already records, and not one named a feature — the file's entire
subject. Eight named a design document; the other two named `PROJECT-MAP.md`
and `CONTRIBUTING.md`. The two real entries stay, as do the empty section
headings the wrap-step appends into.

`PROJECT-MAP.md` had a `tanglebrain/` entry that stopped mid-sentence and a
`docs/` entry that was still the literal `<!-- describe -->` placeholder. Both
now describe the tree as it actually is, naming `cli.py` first because
`project-state.yaml` calls it the primary surface — the file exists to answer
"where does this live" before anyone greps.

`.coverage` is a build artifact and was not ignored. It and its siblings are
ignored now.

No source files touched; suite green.
Review notes, all free to fold in (`cost-of-commit`: no path moves coverage).

`PROJECT-MAP.md` said "one subpackage per remaining surface" — a universal over
a tree that changes with nothing recomputing it, which is the same rule that
fired on the CHANGELOG's "every one" claim earlier in this branch. The sentence
now just names them. `settings.py` joins it, since it holds the paid-backend
gate and is plausibly the module a stranger most needs to find, as does
`atomic.py`.

`CHANGELOG.md` loses a stray second blank line before the `[0.21.0]` heading,
and its coverage-pattern list now matches what `.gitignore` actually gained
(`.coverage.*` was missing). The entry is rewrapped only where this branch
already touched it; the file has ~90 pre-existing lines over the soft wrap and
reflowing those would be the reformatting the no-formatter ruling exists to
prevent.
@Jason-Vaughan

Copy link
Copy Markdown
Owner Author

Closing in favour of #214, which rebuilds the surviving half of this sweep on current main.

This branch is based on f68fe90 (#143) and main is now at 3547a65 — sixty PRs later. It conflicts in CHANGELOG.md, FEATURES.md and PROJECT-MAP.md, and rebasing would not have been the cheap part. Taken piece by piece:

The wrap-step bug itself is TangleClaw's and is filed separately.

Jason-Vaughan added a commit that referenced this pull request Sep 8, 2026
The `docs/` and `tanglebrain/` bullets both ended mid-list with an unclosed
parenthesis. They were not written that way. #155 wrote a correct three-line
`docs/` description; #159's project-map wrap-step, logging only "descriptions
refreshed", deleted its two continuation lines. The step reads the list
line-by-line, so a bullet wrapped across lines loses everything after the
first — which is the whole sentence, in a file whose entire job is to point.

Both entries are now single physical lines. That is over the ~100-col soft
wrap on purpose: a long line survives the next wrap-step and a wrapped one
does not, and correctness of the map beats the wrap convention. Nothing in
this repo can enforce it, so the file's header comment now says it and names
the two commits that demonstrate it — the next editor's instinct will be to
rewrap, and the damage is silent.

`tanglebrain/` also gains `cli.py` as the primary surface and `integrity.py`,
neither of which the severed text reached.

Also: gitignore coverage output (`.coverage`, `.coverage.*`, `htmlcov/`), a
build artifact that had reached a branch once already.

This is the surviving half of #150, rebuilt on current main. That branch's
FEATURES.md change is not carried: it deleted ten TBD stubs, and main has
since replaced them with real descriptions, so merging it would delete
content rather than restore it.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant