Skip to content

Consolidate issue comments into bodies (9 issues, 26 comments) + add the body-is-truth rule to CLAUDE.md #358

Description

@TortoiseWolfe

Body is current truth. Nothing important goes in comments — which is the point of this issue.

Applies the convention already adopted in cd-hubzilla, cd-nextcloud and Chattanooga-Digital
on 2026-07-25. Do this from a ScriptHammer terminal, not another repo's — the value is in
catching contradictions, and that needs this repo's CLAUDE.md, git history and graphify graph.

The rule

The issue BODY is the finding. A comment is not.

The body is the always-current truth and gets rewritten as things change. Comments are history.
If something matters, edit the body. A comment on issue 42 is the file nobody opens, wearing a
different hat. Use comments only for genuine history — what someone said and when, what a
previous state was. If a comment is load-bearing, it belongs in the body and the comment
should go.

Scope — 9 issues, 26 comments

issue comments title
#259 8 Chatt twin: import geolocated buildings from SketchUp, optimization wall
#188 5 Track remaining skipped E2E placeholders
#280 3 [EPIC] Enterprise-ready
#225 3 Chatt diorama: buildings render ON the river
#353 2 Sign-up has no bot protection
#300 2 E2E flaky watch: game-3d touch-drag camera
#326 1 Chatt twin coverage: city-limits boundary
#292 1 Chattanooga atlas (Cesium) — remaining Build Plan phases
#265 1 Migration anchor: Supabase → ASP.NET

#115 is EXEMPT — it is the session-prime roadmap and its ~100 comments are the audit trail
by design. Do not touch it. Every other repo keeps exactly this one exception.

Do not mechanically concatenate — the value is in the catches

Four of nine issues in the Chattanooga-Digital pass had a comment that contradicted its own
body
. Read for these patterns specifically:

  1. A comment retracts the body's premise. CD#243's body asked the client "which mark is the
    real brand?" while a comment underneath had already answered it from git history. Anyone
    opening that issue was about to ask a settled question.
  2. A later comment withdraws an earlier comment. CD#12 had one comment recommending option C
    and a later one withdrawing C as incoherent — and the body mentioned neither. Reading the
    wrong comment gave you a retracted answer.
  3. A comment records the work is already done. CD#113 read "we should contribute upstream"
    while a comment held the filed drupal.org URLs.
  4. A comment carries the "why this is still open" framing. CD#50/docs(stability): record post-#44 state, add cross-issue tracking plan #55 bodies read like
    deliverables; only a comment said each needed a decision, not delivery.
  5. A comment adds the decisive fact. CD#248 gained a release-schedule table showing a
    five-month horizon, which is what made "not urgent" defensible.

Suspects here, from titles alone and unverified: #259 (8 comments on an "optimization wall"
— likely a running log where only the final state matters), #188 (5 comments tracking
skipped tests — the current list is the finding), #292 and #326, which are the Cesium
atlas arc and may have superseded plans in comments.

Put whatever changes the reader's mind at the top of the body.

Also: add the rule to CLAUDE.md

This repo's CLAUDE.md does not carry it (checked 2026-07-25, zero matches). Without it the
convention drifts back on the next session. Word it to fit this repo's existing style rather than
pasting cd-hubzilla's version.

Two practical gotchas that cost time elsewhere

  • gh issue view returns GraphQL node IDs (IC_kwDOTgfimM8AAAAB…), and the delete endpoint
    wants REST numeric IDs. Get them from gh api /repos/OWNER/REPO/issues/N/comments --jq '.[].id'
    or the delete 404s.
  • Assert every anchor before pushing a body. A patch that silently fails to match leaves an
    orphaned ** or drops an edit, and && on the gh call does not catch it — the assertion has
    to be inside the script that rewrites the text.

Done when

Every open issue except #115 has zero comments, each body carries what its comments held with the
mind-changing part first, and CLAUDE.md states the rule.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions