Skip to content

Keep links to the renamed Repository Standard page resolving #108

Description

#96 renamed Modules/Repository-Defaults to Modules/Repository-Standard. Restoring publishing (#106) makes that rename go live, and at that moment every existing link to the old path starts returning 404. Eight files across four repositories point at the old path today, and three of them are files that Template-PSModule copies into every new module repository, so the count grows with each repository created.

Observed behavior

The old path is still the only one that resolves, because the site has not been republished since 2026-07-18:

# old path — still serves the superseded page
curl -sI https://psmodule.github.io/docs/Modules/Repository-Defaults/   # 301 -> https://psmodule.io/docs/Modules/Repository-Defaults/  (200)
# new path — does not exist yet
curl -sI https://psmodule.io/docs/Modules/Repository-Standard/          # 404

Once #106 merges and the site rebuilds, these invert: the new path resolves and the old one 404s. Referrers, found with gh search code "Repository-Defaults" --owner PSModule:

Repository Files
Template-PSModule README.md, AGENTS.md, CONTRIBUTING.md
PSSemVer AGENTS.md, CONTRIBUTING.md
Lovdata README.md, AGENTS.md, CONTRIBUTING.md
CasingStyle AGENTS.md, CONTRIBUTING.md — added by PSModule/CasingStyle#22, after the scan above

All eight use https://psmodule.github.io/docs/Modules/Repository-Defaults/, which is a second, independent drift: psmodule.github.io only 301s to the canonical psmodule.io declared as site_url in src/zensical.toml.

Expected behavior

A reader or agent following a repository-defaults link from any PSModule repository reaches the Repository Standard page. New repositories created from the template carry a link that resolves on the canonical domain.

Reproduction

  1. Merge Publish the documentation site on push and schedule again #106 and let the site republish.
  2. Open AGENTS.md in any repository in the table and follow the repository-defaults link.
  3. Observe a 404.

Environment

PSModule/docs built with Zensical and served from GitHub Pages at https://psmodule.io/docs/; psmodule.github.io redirects there with a 301.

Regression

Introduced by #96, which renamed the page without updating referrers outside this repository. Not yet observable, because #106 keeps the rename from reaching the live site.

Workaround

None. The old path stops resolving the moment publishing is restored.

Acceptance criteria

  • Following the repository-defaults link from Template-PSModule, PSSemVer, and Lovdata reaches a page that resolves.
  • A repository newly created from Template-PSModule carries a link that resolves.
  • The links use the canonical psmodule.io host rather than relying on the psmodule.github.io redirect.
  • A decision is recorded about links outside the organization, which cannot be enumerated or edited.

References


Technical decisions

Redirect versus fixing referrers: fix the referrers. Zensical has no redirect support — zensical/backlog#23, "Support mkdocs-redirects plugin functionality", is open, and this site's zensical.toml loads only the meta and search plugins. A redirect would therefore have to be a hand-written stub page under Modules/Repository-Defaults.md doing a client-side meta refresh or script hop. That stub is a real page: it is built, indexed by search, and has to be excluded from navigation and kept correct forever, and it teaches future readers that renames are free. Against that, the referrers are enumerable, in-organization, and editable, and the link text already reads "repository defaults" rather than a URL. Fixing them is the smaller and more honest correction.

Host. Update to https://psmodule.io/docs/Modules/Repository-Standard/. Keeping psmodule.github.io works only through a 301 and hides which host is canonical.

Blast radius: resolved, and worse than a fixed set. AGENTS.md, CONTRIBUTING.md, and README.md are copied into module repositories, so the referrer set is not a list to be drained — it grows every time a repository adopts the baseline files. PSModule/CasingStyle#22 demonstrated this within hours: it was opened after the scan above and would have shipped two more dead links, from a branch created before the correction existed. The organization has 58 repositories with Type: Module, and #63 wants these files distributed to all of them, so a one-time sweep is a floor, not a fix. Template-PSModule is therefore the blocking referrer — every other copy is downstream of it — and the sweep is only durable once distribution carries the correction forward. Recorded on #63.

External links. Links from outside the organization cannot be fixed and will 404. Accepted, given that Zensical cannot express a redirect today. Revisit if zensical/backlog#23 ships.

Verification. No automated test exists for cross-repository link health. The equivalent repeatable verification is a search for the old path returning no hits, plus a request for the new path returning 200.


Implementation plan

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions