fix(templates): remove dead sourceUrl links from the four seeded templates - #466
Merged
Merged
Conversation
The four seeded application templates all carried https://codeberg.org/Conduction/concurrentie-analyse/src/branch/main/ app-builder/README.md#user-stories which returns HTTP 404. Confirmed with curl rather than assumed. The repository was not deleted, it was renamed: `concurrentie-analyse` is now `ConductionNL/market-intelligence` on GitHub. Found by reading the git remote of the local checkout that still uses the old directory name, since a GitHub search for the old name finds only unrelated repos. Verified before repointing, not after: app-builder/README.md .... exists on main (46,313 bytes) #user-stories anchor ..... `## User Stories` is a real heading (line 515) Left as-is deliberately: this repo is PRIVATE. That is the right target anyway. `sourceUrl` is defined in openbuild_register.json as "Link back to the originating user-story / RFP / blog post for traceability", and the only thing that reads it is EditTemplateMetadataDialog — an admin edit field, not a link rendered to end users. Traceability wants the true origin; pointing it at some public stand-in would make it accurate-looking and wrong. Three other Codeberg references in this app were checked and left alone: the forge-type dropdown in RoadmapPageEditor.vue, where `codeberg` is a valid option a user can pick, is not a stale link.
…ivate repo Correcting the previous commit on this branch. Repointing the dead Codeberg link to `ConductionNL/market-intelligence` fixed the 404 for us and left it broken for everyone else: buildiq is PUBLIC (visibility=PUBLIC), these four templates ship inside it, and market-intelligence is private. Every admin outside Conduction would click through to a login wall. My earlier reasoning — that this is admin-only traceability metadata so the private target is fine — does not survive the app being open source. The templates are public data; who reads the field does not change who can reach the URL. The alternative was pointing at https://openbuild.conduction.nl/docs/intro, the app's only live public docs page. That is worse: it resolves, so it looks right, while claiming these user stories came from a generic intro page they did not come from. False provenance beats no provenance only until someone follows it. So the field is removed. `sourceUrl` is optional — ApplicationTemplate.required is [slug, title, description, useCase, category, manifest, isSeeded, version] — and all four templates still carry every required key. If the origin material is ever published, the honest fix is to add the field back pointing at the real public URL.
Contributor
Quality Report — ConductionNL/buildiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| check-gitignore | ✅ | ||||
| check-nc-floor | ✅ | ||||
| format | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| composer | ✅ | ✅ 106/106 | |||
| npm | ✅ | ✅ 642/642 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ❌ | ||||
| Newman | ❌ | ||||
| Playwright | ❌ | ||||
| Hydra gates | ❌ |
Quality workflow — 2026-08-26 09:23 UTC
Download the full PDF report from the workflow artifacts.
Contributor
Quality Report — ConductionNL/buildiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| test-l10n | ✅ | ||||
| check-gitignore | ✅ | ||||
| check-nc-floor | ✅ | ||||
| format | ✅ | ||||
| check-l10n-js | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| composer | ✅ | ✅ 106/106 | |||
| npm | ✅ | ✅ 642/642 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| PHPUnit | ✅ | ||||
| Newman | ✅ | ||||
| Playwright | ✅ | ||||
| Hydra gates | ✅ |
Quality workflow — 2026-08-26 11:05 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
All four seeded application templates carried a
sourceUrlreturning HTTP 404:Why the field is removed rather than repointed
My first commit on this branch repointed it.
concurrentie-analysewas renamed toConductionNL/market-intelligence, the file and its#user-storiesanchor both verified live — so the 404 was fixed.For us. Not for anyone else.
buildiqisvisibility=PUBLIC, these templates ship inside it, andmarket-intelligenceis private. Every admin outside Conduction would have clicked through to a login wall. My reasoning that "it's admin-only traceability metadata, so a private target is fine" does not survive the app being open source: the templates are public data, and who reads the field does not change who can reach the URL.The tempting wrong fix
Point all four at
https://openbuild.conduction.nl/docs/intro— the app's only live public docs page (everything else I probed 404s).That is worse than leaving it broken. It resolves, so it looks correct, while claiming these user stories originated from a generic intro page they did not come from. False provenance beats no provenance only until someone follows it.
What ships
The field is dropped.
sourceUrlis optional:All four templates still carry every required key; JSON re-parsed clean.
If the origin material is ever published, the honest fix is to add the field back pointing at the real public URL.
Deliberately left alone
RoadmapPageEditor.vuealso mentions codeberg — as a valid forge-type option a user can select ('codeberg'|'forgejo'|'gitea'|'github'). That is a working feature, not a stale link.Sibling fix: ConductionNL/stackiq#748, which repointed 32 dead register configuration URLs to a public GitHub target.