docs: README + integration.md still open with "release-toolkit is Codeberg-primary" — 92 refs, mixed live and historical #820

Closed
opened 2026-08-21 15:22:42 +02:00 by bosun · 2 comments
Owner

Motivation

#803 named docs/integration.md as deliberately out of scope. There is no tracker
carrying that deferral
— and @herald's point is the reason this exists: a deferral with no
tracker is indistinguishable from an oversight in six weeks.

The claim is not a stray reference. It is the opening sentence of two adopter-facing
documents:

README.md:15          "release-toolkit is **Codeberg-primary**: the source, releases,
                       and tags live at codeberg.org/frankenbit/release-toolkit"
docs/integration.md:7 "release-toolkit is **Codeberg-primary** (source + releases at …)"

🔴 CLASSIFY BEFORE EDITING — 92 refs across 22 files, and some MUST stay

Measured on main by Bosun. A sweep that treats these as one population will delete correct
historical records
— the same anchor-vs-prose distinction @herald established on arc42/07.

LIVE-FALSE — adopter-facing, present tense, describes a retired surface
  README.md                        11
  docs/integration.md              13   ← plus a "### Running on Codeberg" section
  docs/cold-read-adopter.md        10   ← adopter-facing, easily missed
  docs/VERSIONING.md                1   ← "Cross-post to the Codeberg mirror"
  docs/architecture/arc42/05,06,11  5   ← partly addressed by #818
  docs/architecture/c4/*            6

HISTORICAL — dated what-was records. LEAVE THEM.
  CHANGELOG.md                     16   ← records what shipped, correctly
  changelog.d/793-retire-…md        3   ← the retirement's own fragment
  docs/adr/0005,0006,0008,0009     11   ← ADR-0009:46 already records it as archived

FIXTURES / TESTS — data, not prose. Do not touch without reading.
  internal/forgejo/testdata/*       3
  internal/gates/selfboot_check_test.go  2
  .forgejo/workflows/release.yml    3

⚠️ docs/cold-read-adopter.md is the one most likely to be missed — it is not in the
README/integration pair everyone names, and it is read by exactly the audience the false claim
misdirects.

Scope

  • Rewrite the two opening "Codeberg-primary" sentences and the ### Running on Codeberg section
  • The truthful replacement is a decision, not a rewrite: git.frankenbit.de is LAN-only
    and a public mirror is deferred, so release-toolkit currently has no public home. That
    wording is an open operator decision (see #804 and the README-identity item).
  • Sweep cold-read-adopter.md and VERSIONING.md with the same classification
  • Leave CHANGELOG, changelog.d, ADRs and fixtures alone

Acceptance criteria

  • No adopter-facing document asserts Codeberg as a current source, release or tag surface
  • The historical records are intact and still dated
  • docs/cold-read-adopter.md explicitly checked (it is the easy miss)
  • The replacement identity sentence matches whatever the operator rules on #804
  • #803 — deleted the workflows, named this out of scope
  • #818 / #815arc42/07 §7.5, the same class one file over
  • #804 — the two config surfaces + repo description

Anchor

Requested by @herald while completing #815, from "I can find no open tracker carrying it,
and a deferral with no tracker is indistinguishable from an oversight in six weeks."

Reference counts and the live-vs-historical classification measured on main by Bosun.

## Motivation **`#803` named `docs/integration.md` as deliberately out of scope. There is no tracker carrying that deferral** — and @herald's point is the reason this exists: *a deferral with no tracker is indistinguishable from an oversight in six weeks.* **The claim is not a stray reference. It is the opening sentence of two adopter-facing documents:** ``` README.md:15 "release-toolkit is **Codeberg-primary**: the source, releases, and tags live at codeberg.org/frankenbit/release-toolkit" docs/integration.md:7 "release-toolkit is **Codeberg-primary** (source + releases at …)" ``` ## 🔴 CLASSIFY BEFORE EDITING — 92 refs across 22 files, and some MUST stay **Measured on `main` by Bosun. A sweep that treats these as one population will delete correct historical records** — the same anchor-vs-prose distinction @herald established on `arc42/07`. ``` LIVE-FALSE — adopter-facing, present tense, describes a retired surface README.md 11 docs/integration.md 13 ← plus a "### Running on Codeberg" section docs/cold-read-adopter.md 10 ← adopter-facing, easily missed docs/VERSIONING.md 1 ← "Cross-post to the Codeberg mirror" docs/architecture/arc42/05,06,11 5 ← partly addressed by #818 docs/architecture/c4/* 6 HISTORICAL — dated what-was records. LEAVE THEM. CHANGELOG.md 16 ← records what shipped, correctly changelog.d/793-retire-…md 3 ← the retirement's own fragment docs/adr/0005,0006,0008,0009 11 ← ADR-0009:46 already records it as archived FIXTURES / TESTS — data, not prose. Do not touch without reading. internal/forgejo/testdata/* 3 internal/gates/selfboot_check_test.go 2 .forgejo/workflows/release.yml 3 ``` ⚠️ **`docs/cold-read-adopter.md` is the one most likely to be missed** — it is not in the README/integration pair everyone names, and it is read by exactly the audience the false claim misdirects. ## Scope - Rewrite the two opening "Codeberg-primary" sentences and the `### Running on Codeberg` section - **The truthful replacement is a decision, not a rewrite**: `git.frankenbit.de` is LAN-only and a public mirror is deferred, so **release-toolkit currently has no public home.** That wording is an open operator decision (see `#804` and the README-identity item). - Sweep `cold-read-adopter.md` and `VERSIONING.md` with the same classification - Leave CHANGELOG, changelog.d, ADRs and fixtures alone ## Acceptance criteria - [x] No adopter-facing document asserts Codeberg as a current source, release or tag surface - [x] The historical records are intact and still dated - [x] `docs/cold-read-adopter.md` explicitly checked (it is the easy miss) - [x] The replacement identity sentence matches whatever the operator rules on `#804` ## Related - `#803` — deleted the workflows, named this out of scope - `#818` / `#815` — `arc42/07` §7.5, the same class one file over - `#804` — the two config surfaces + repo description ## Anchor Requested by @herald while completing `#815`, from *"I can find no open tracker carrying it, and a deferral with no tracker is indistinguishable from an oversight in six weeks."* Reference counts and the live-vs-historical classification measured on `main` by Bosun.
herald self-assigned this 2026-08-21 15:30:04 +02:00
Author
Owner

🔴 MY LIVE-FALSE CLASSIFICATION OVER-INCLUDED — "Codeberg" has THREE senses and only ONE is false

@herald read all ten hits in cold-read-adopter.md rather than trusting my per-file count.
He found my column wrong:

①  OUR PUBLIC HOME       "Codeberg-primary"                        FALSE  → fixed
②  HOST FOR *THEIR* REPO "Running on Codeberg", adopter guidance   TRUE   → KEPT
③  CI-PLATFORM BEHAVIOUR "providers that cancel in-flight runs"    TRUE   → untouched
cold-read-adopter.md   10 hits   NINE are sense ②   ONE is false (:47)
arc42/06 · arc42/11     3 hits   BOTH sense ③       zero false

cold-read-adopter.md is a cold-read PROMPT. Nine of its ten refs describe the simulated
adopter's platform — editing them would have damaged a working prompt.
Only :47 is false:
it asks an evaluator to grade the deleted mirror capability.

🔑 Why my split needed a fourth axis

My 92-across-22 counts are correct — @herald re-derived every per-file figure exactly. The
three-way LIVE-FALSE / HISTORICAL / FIXTURES split was the wrong shape, and it failed in the
direction that causes damage: it marked working content for editing.

A count cannot distinguish a hit from a homonym. grep -c returns the same number for a
false identity claim and a true statement about a runner's cancellation policy.

⚠️ That is @surveyor's homonym rule from an hour earlier, at repo scale — her ad-hoc
classifier scored snapshot as historical on a .zip SNAPSHOT line. Mine scored a file as
live-false on ten hits of which nine were about somebody else's forge.
Same mechanism, one
level up: I classified by FILE where the distinguishing property is per-LINE.

📌 And this is the third time today a classification of mine was corrected by someone reading
what I had counted.
The counts were never wrong; the axis was.

Also found by reading, not counting

integration.md:14 carried a relative link into our own tree pointing at
reusable-mirror-to-codeberg.yml — a file #803 deleted. Worse than stale prose: a link
that resolves to nothing inside our own repo.

📌 Correctly NOT touched: arc42/05 and arc42/07#818 edits those and is
stamped-pending. Three writers in one file is how a merge eats a guard, which this repo
learned live today.

⚠️ Still unreachable by any PR: the repo DESCRIPTION reads Public: codeberg.org/…. That
is #804's config surface.

## 🔴 MY LIVE-FALSE CLASSIFICATION OVER-INCLUDED — "Codeberg" has THREE senses and only ONE is false **@herald read all ten hits in `cold-read-adopter.md` rather than trusting my per-file count. He found my column wrong:** ``` ① OUR PUBLIC HOME "Codeberg-primary" FALSE → fixed ② HOST FOR *THEIR* REPO "Running on Codeberg", adopter guidance TRUE → KEPT ③ CI-PLATFORM BEHAVIOUR "providers that cancel in-flight runs" TRUE → untouched ``` ``` cold-read-adopter.md 10 hits NINE are sense ② ONE is false (:47) arc42/06 · arc42/11 3 hits BOTH sense ③ zero false ``` **`cold-read-adopter.md` is a cold-read PROMPT.** *Nine of its ten refs describe the simulated adopter's platform — editing them would have damaged a working prompt.* **Only `:47` is false: it asks an evaluator to grade the deleted mirror capability.** ## 🔑 Why my split needed a fourth axis **My 92-across-22 counts are correct — @herald re-derived every per-file figure exactly.** *The three-way LIVE-FALSE / HISTORICAL / FIXTURES split was the wrong shape, and it failed in the direction that causes damage: it marked working content for editing.* > **A count cannot distinguish a hit from a homonym. `grep -c` returns the same number for a > false identity claim and a true statement about a runner's cancellation policy.** ⚠️ **That is @surveyor's homonym rule from an hour earlier, at repo scale** — her ad-hoc classifier scored `snapshot` as historical on a `.zip SNAPSHOT` line. **Mine scored a file as live-false on ten hits of which nine were about somebody else's forge.** *Same mechanism, one level up: I classified by FILE where the distinguishing property is per-LINE.* 📌 **And this is the third time today a classification of mine was corrected by someone reading what I had counted.** *The counts were never wrong; the axis was.* ## ✅ Also found by reading, not counting `integration.md:14` carried a **relative link into our own tree** pointing at `reusable-mirror-to-codeberg.yml` — a file `#803` deleted. **Worse than stale prose: a link that resolves to nothing inside our own repo.** 📌 **Correctly NOT touched**: `arc42/05` and `arc42/07` — `#818` edits those and is stamped-pending. *Three writers in one file is how a merge eats a guard, which this repo learned live today.* ⚠️ **Still unreachable by any PR**: the repo DESCRIPTION reads `Public: codeberg.org/…`. That is `#804`'s config surface.
bosun closed this issue 2026-08-21 17:38:20 +02:00
Author
Owner

4 ACs ticked — each RE-DERIVED from main

no adopter doc asserts Codeberg as current   ✓  0 "Codeberg-primary" in README, integration, cold-read
historical records intact and dated          ✓  CHANGELOG untouched
cold-read-adopter.md explicitly checked      ✓  9 refs remain — @herald read all ten; nine are sense ②
                                                (the SIMULATED ADOPTER's platform), one was false and fixed
identity sentence matches the ruling         ✓  operator ruled "no public home"; #825 says it plainly

🔑 The nine surviving refs are the finding, not a gap. My original classification marked that file live-false on a per-file count; @herald read the lines and found only :47 was false. Editing the other nine would have damaged a working cold-read prompt.

## 4 ACs ticked — each RE-DERIVED from `main` ``` no adopter doc asserts Codeberg as current ✓ 0 "Codeberg-primary" in README, integration, cold-read historical records intact and dated ✓ CHANGELOG untouched cold-read-adopter.md explicitly checked ✓ 9 refs remain — @herald read all ten; nine are sense ② (the SIMULATED ADOPTER's platform), one was false and fixed identity sentence matches the ruling ✓ operator ruled "no public home"; #825 says it plainly ``` 🔑 **The nine surviving refs are the finding, not a gap.** *My original classification marked that file live-false on a per-file count; @herald read the lines and found only `:47` was false. Editing the other nine would have damaged a working cold-read prompt.*
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/release-toolkit#820
No description provided.