Skip to content

Repair the two PROJECT-MAP entries the wrap-step severed - #214

Merged
Jason-Vaughan merged 1 commit into
mainfrom
chore/project-map-truncation
Sep 8, 2026
Merged

Repair the two PROJECT-MAP entries the wrap-step severed#214
Jason-Vaughan merged 1 commit into
mainfrom
chore/project-map-truncation

Conversation

@Jason-Vaughan

Copy link
Copy Markdown
Owner

What

  • PROJECT-MAP.md — the docs/ and tanglebrain/ bullets both ended mid-list with an unclosed parenthesis. Both are repaired, as single physical lines, and the file's header comment now says why they must stay that way. tanglebrain/ also gains cli.py as the primary surface and integrity.py, neither of which the severed text reached.
  • .gitignore — coverage output (.coverage, .coverage.*, htmlcov/) was not ignored.
  • CHANGELOG.md — both under ### Internal. No user-visible behaviour changes.

Why

The severed entries are not a typo — they are a mechanism, and it will fire again.

git log -p -- PROJECT-MAP.md shows it happening. In #155 a session wrote a correct three-line docs/ description. In #159 the project-map wrap-step, logging only "Project Map: membership/descriptions refreshed", deleted its two continuation lines and left the sentence cut after data-model,. The step reads the bullet list line-by-line, so any bullet wrapped across lines loses everything after the first. That is the whole description, in a file whose entire job is to point somewhere.

So a hand fix that wraps is not a fix — it is the same content queued for deletion at the next wrap. Hence single physical lines, over the ~100-col soft wrap on purpose. Nothing in this repo can enforce that, so the header comment carries the reason and names the two commits that demonstrate it; the next editor's instinct is to rewrap, and the damage is silent.

The generator bug itself is TangleClaw's, not this repo's, and is filed separately.

Relationship to #150

This is the surviving half of #150 (chore/janitor-sweep-2026-09), rebuilt on current main. That branch is based on f68fe90, sixty PRs behind, and conflicts in three files. Taken piece by piece:

#150's change Carried here?
FEATURES.md — drop ten TBD stubs No. Main has since replaced them with 27 lines of real descriptions. Merging #150 would delete that content, not restore it.
PROJECT-MAP.md — fill placeholders Superseded. #150's wording predates the current entries, and it wrapped its bullets, so the next wrap-step would have re-severed it. Repaired here against today's tree instead.
.gitignore — coverage patterns Yes, unchanged.

#150 is closed in favour of this.

Test plan

  • make test791 passed, 17 skipped; ruff and mypy clean (the test target runs lint first). Docs and gitignore only, so this is a regression check, not evidence for new behaviour.
  • git check-ignore -v resolves all three new patterns to their own lines (.gitignore:60/61/62) against real .coverage, .coverage.abc and htmlcov/x.html files, since removed. One ^\.coverage$ line in the file — no duplicate.
  • Claims in the new PROJECT-MAP.md text checked against the tree rather than copied from the old text: docs/design/ holds nine documents plus README.md, whose ## Known gaps section exists (line 47); every module named under tanglebrain/ exists.

Note for the reviewer

  • prawduct-hook check-change-log-entry reports no-entry structurally here — .prawduct/ is gitignored by owner ruling, so git cannot see .prawduct/change-log.md. The tracked CHANGELOG.md entry is under [Unreleased] / ### Internal, which is the correct tier: patch, no user-visible change.
  • The single-line bullets deliberately break the soft-wrap convention. If you disagree, the alternative is fixing the wrap-step upstream first and leaving these two entries severed until it lands.

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.
@Jason-Vaughan
Jason-Vaughan merged commit d2cd633 into main Sep 8, 2026
5 checks passed
@Jason-Vaughan
Jason-Vaughan deleted the chore/project-map-truncation branch September 8, 2026 07:27
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