Skip to content

fix: repoint the stale Codeberg org link and unlink pre-migration issue numbers - #215

Merged
rubenvdlinde merged 1 commit into
developmentfrom
fix/repoint-codeberg-links-to-github
Aug 24, 2026
Merged

fix: repoint the stale Codeberg org link and unlink pre-migration issue numbers#215
rubenvdlinde merged 1 commit into
developmentfrom
fix/repoint-codeberg-links-to-github

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

GitHub is the only host for this org — Codeberg was a mirror and is not used, including for issues.

The honest headline: in this repo, almost none of the ~415 codeberg occurrences are stale links. Codeberg is a supported forge feature of Versioniq, backed by live production config, live specs, PHPUnit tests and Playwright e2e fixtures. codeberg.org still serves that API. Rewriting any of it would break a shipped feature, not fix a dead link.

So the real scope was 5 files, 5 lines.

Counts by category

Category Count Action
Org link codeberg.org/Conduction in the docs Contact block 1 Repointed to github.com/ConductionNL
[issue #24](…/app-versions/issues/24) in openspec proposals/specs 4 URL removed, fact kept as text
tracking_issue_url in archived plan.json 4 Left (see below)
Forge-feature URLs (codeberg.org/api/v1, /user/settings/applications, codeberg.org web base) 24 Left — live feature
Non-URL forge identifiers ('codeberg', codeberg:{owner}/{repo}) ~380 Left — enum values

The issue-number decision — and the proof

The rule is that Codeberg issue numbers do not correspond to GitHub issue numbers. This repo demonstrates it exactly. The four archived plan.json records point at Codeberg issues #10#13. I resolved those same numbers on GitHub:

# Codeberg (what the record means) ConductionNL/versioniq on GitHub
10 improve-install-failure-diagnostics chore(deps): Bump vue from 3.5.29 to 3.5.32
11 move-to-admin-settings chore(deps-dev): Bump rector/rector …
12 codeberg-forge-support chore(deps-dev): Bump vite from 7.3.1 to 8.0.8
13 surface-external-sources-ui chore(deps-dev): Bump rector/rector …

Host-swapping those URLs would have made every archived change record cite an unrelated Dependabot bump. They are left untouched — reinforced by the fact that each record carries "tracking_issue": <n> and "tracker": "codeberg" as separate fields right beside the URL, so a repointed URL would contradict its own siblings.

Issue #24 was checked the same way and does correspond — GitHub versioniq#24 is "Add public Software Catalogus (softwarecatalog) as a discovery source", matching the sentence. I still applied the rule uniformly and removed the URL, but recorded the verified correspondence in the text so a reviewer can restore a link deliberately rather than by assumption.

Verification

  • Remaining codeberg hits reviewed; every one is a deliberate keep (categorised above).
  • https://github.com/ConductionNL200 (curl -L).
  • All four archived plan.json files re-parsed with json.load after the change → valid (they were not modified).
  • No files under lib/ were touched, so no PHPCS run was needed; no JS/YAML touched either. Diff is 5 insertions / 5 deletions.
  • The live-spec edit landed in a ## Notes bullet, not inside a WHEN/THEN requirement block, so no spec semantics changed.

Left alone deliberately — needs a human decision

  1. lib/Service/Source/ForgeRegistry.phppublic const FORGE_CODEBERG = 'codeberg' with api => https://codeberg.org/api/v1, web => https://codeberg.org, tokenCreateUrl => https://codeberg.org/user/settings/applications. Live production config for a supported forge.
  2. Live specs openspec/specs/external-sources/spec.md and openspec/specs/pat-management/spec.md — contain MUST requirements that mandate those exact Codeberg URLs.
  3. Live tests asserting CodebergForgeRegistryTest.php asserts https://codeberg.org/api/v1; InstallerServiceTrustedPatternTest.php asserts the trusted pattern codeberg:Conduction/openregister; ForgeReleaseSourceTest.php asserts https://codeberg.org/api/v1/repos/Conduction/pipelinq/releases; plus tests/e2e/fixtures/forge/server.mjs and the PAT e2e specs. A spec + test pair that mandates the word should not be inverted by a link sweep.
  4. .forgejo/ — kept, not deleted. Contains four issue templates and workflows/documentation.yml. ℹ️ It does not reference a CODEBERG_TOKEN secret (I checked).
  5. Archived 2026-06-14-codeberg-forge-support/ — the whole change (proposal, design, tasks, specs) documenting how Codeberg support was built. Historical record.
  6. docs/tutorials/admin/03-github-source.md — user documentation for the feature, including the codeberg:{owner}/{repo} binding syntax an admin actually types.

Worth a follow-up issue (out of scope here)

Several live specs and tests still use pre-rename org/repo names inside Codeberg example URLsConduction/openregister, Conduction/pipelinq. They are illustrative examples inside forge requirements, coupled to assertions in PHPUnit, so changing them is a spec change rather than a link fix.

Note on authorship: this repo has no local git identity, so the global one (Conduction Release Bot) would have been used. I set the commit author to Ruben to match the sibling PR in conduction-website; say the word if you'd prefer the bot identity.

…ue numbers

GitHub is the only host for this org; Codeberg was a mirror and is not
used, including for issues. In this repo the honest scope turned out to
be small, because most of the ~415 "codeberg" occurrences are not stale
links at all — they are a shipped feature.

Changed (5 files):

- docs/static/llms.txt — the Contact block still advertised
  `Codeberg: https://codeberg.org/Conduction` directly under a Source
  code line that already pointed at github.com/ConductionNL/versioniq.
  Now `GitHub: https://github.com/ConductionNL`.

- Four `[issue #24](codeberg…/app-versions/issues/24)` links in
  openspec proposals and specs lost their URL and kept the fact as
  plain text.

Issue-number decision: Codeberg issue numbers do NOT correspond to
GitHub issue numbers, and this repo proves it. The four archived
plan.json records point at Codeberg issues #10, #11, #12 and #13
(improve-install-failure-diagnostics, move-to-admin-settings,
codeberg-forge-support, surface-external-sources-ui). On GitHub those
same numbers are Dependabot dependency-bump PRs. Host-swapping those
URLs would have made every archived change record cite an unrelated
Dependabot bump — so all four plan.json files are left untouched, also
because each carries `"tracking_issue": <n>` and `"tracker":
"codeberg"` beside the URL. Issue #24 was checked the same way and does
correspond ("Add public Software Catalogus as a discovery source"), but
the rule was applied uniformly and the correspondence is recorded in
the text instead of as a link.

NOT changed, deliberately — Codeberg is a supported forge in this app,
not a dead mirror. `ForgeRegistry::FORGE_CODEBERG` is live production
config (api, web and tokenCreateUrl), and codeberg.org still serves it.
Rewriting any of it would break the feature. See the PR body for the
full list, including the `.forgejo/` directory, which is kept.
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/versioniq @ 5e6205b

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
build
composer ✅ 29/29
npm ✅ 282/282
app:check-code ⏭️
info.xml
REUSE
PHPUnit
Newman ⏭️
Playwright
Hydra gates

Quality workflow — 2026-08-24 10:14 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde
rubenvdlinde merged commit 3e356ee into development Aug 24, 2026
41 checks passed
@rubenvdlinde
rubenvdlinde deleted the fix/repoint-codeberg-links-to-github branch August 24, 2026 15:58
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