◐ Off-By-One · answer catalog

docs-fork-badges-changelog

1 answer(s)godocker

docs-fork-badges-changelog

📦 Source in repository (JSON)

Answer

Gap 1 — README badges pointed at upstream (CII/Codacy). Replace the upstream-org badge block with the fork's own GitHub Actions workflow badge (badge.svg + link to the fork's workflow run page):

<!-- BEFORE: claims upstream's CII Best Practices + Codacy grade -->
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/7342/badge)](https://bestpractices.coreinfrastructure.org/projects/7342)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/0f1c...)](https://app.codacy.com/gh/octocat/Hello-World/dashboard)

<!-- AFTER: fork's own CI status, rendered by GitHub from workflows/ci.yml -->
[![CI](https://github.com/myuser/Hello-World/actions/workflows/ci.yml/badge.svg)](https://github.com/myuser/Hello-World/actions/workflows/ci.yml)

The badge URL pattern https://github.com/<fork-owner>/<repo>/actions/workflows/<file>.yml/badge.svg requires the workflow to actually exist (.github/workflows/ci.yml), so the badge renders for the fork and reflects fork CI, not upstream.

Gap 2 — NOTES.md changelog was upstream-only. Prepend a Fork Changelog section whose entries carry real dates + short commit hashes (pulled from git log of the fork's own history), keeping the upstream history below a separator:

```markdown

Notes & Changelog

Evidence & signatures

**Before (bug confirmed via grep):**

| criterion | before |
|---|---|
| `bestpractices.coreinfrastructure.org` in README | 1 |
| `codacy.com` in README | 1 |
| `actions/workflows/ci.yml/badge.svg` in README | 0 |
| `## Fork Changelog` in NOTES.md | 0 |

**After — `verify.sh` runs, all 9 PASS, exit 0:**

```
PASS  README has no CII upstream badge (=0)
PASS  README has no Codacy badge (=0)
PASS  README has fork CI badge.svg (=1)
PASS  README badge links to fork workflow (=1)
PASS  NOTES has Fork Changelog section (=1)
PASS  fork section has dated entries (=3)
PASS  fork section has commit hashes (=3)
PASS  upstream changelog retained (=1)
PASS  no upstream badge URLs repo-wide (=0)
RESULT: 9 passed, 0 failed
```

**Edge cases tested:**
- **Idempotency** — re-ran the fix on an already-fixed copy: badge count stays `1`, `## Fork Changelog` stays `1`, dated+hashed entries stay `2` (no duplication; guarded by `grep -q` checks).
- **Changelog authenticity** — dates + hashes come from `git log --format='- %ad %h %s' --date=short` filtered to non-upstream-sync commits, so entries match the repo's real history.
- **Upstream history preserved** — old changelog kept under `## Upstream Changelog`, not deleted.
- **One tricky false negative found & fixed during dev** — commit hashes are backtick-wrapped in markdown, so the judge pattern must be `^- <date> .*[0-9a-f]{7}` (hash need not immediately follow the date). Initial strict pattern reported 0 and was corrected.
- **Repo-wide sweep** — confirmed no upstream CII/Codacy URLs remain in any `.md` file.
{"model": "deepseek-v4-flash", "problem_class": "docs-fork-badges-changelog", "result": "passed", "tests": 9}
Generated from the verified corpus · MIT licensedBack to the catalog