Skip to content

Replace dead pup.pt short links with docs.openvoxproject.org URLs #277

Description

@miharp

Summary

OpenBolt has 71 references to pup.pt short links, and that domain is no longer a
redirector. It now serves a parked lander page:

$ curl -sL https://pup.pt/bolt-commands
<!DOCTYPE html><html><head><script>window.onload=function(){window.location.href="/lander"}</script></head></html>

Every slug returns the same bounce. So all of these are broken links today, and the
hostname is on the resale market, which means whoever buys it inherits URLs that
OpenBolt prints in CLI help text, JSON schemas, generated Puppetfile comments, and
error messages.

Found by Yury Bushmelev via git grep pup.pt; URL mapping below verified against the
live docs site.

Recommendation

Replace the short links with full https://docs.openvoxproject.org/openbolt/latest/
URLs rather than standing up a replacement short domain. This is the convention
README.md and CONTRIBUTING.md already use.

The indirection is what failed here: a third-party redirector disappeared and took 71
links with it, silently and with no way for CI to notice. A replacement domain adds a
renewal obligation and a redirect map to maintain, for the sake of URL length in help
text.

If short links turn out to be wanted later, they can live as a path prefix on the
domain we already control (docs.openvoxproject.org/go/<slug>), with no new
registration.

Scope

71 total hits, but 12 are in CHANGELOG.md and HISTORY.md. Those are historical
release records and should be left as-is. The actionable set is 59:

Location Count
lib/bolt/bolt_option_parser.rb 24
guides/*.yaml 18
lib/bolt/** (other) 15
schemas/*.json 2

The schemas/*.json hits are generated from the OPTIONS hashes in
lib/bolt/config/options.rb and lib/bolt/inventory/options.rb, so they are fixed at
the source and regenerated with rake schemas:all.

Also reaches openvox-docs

One reference lives downstream: docs/_openbolt_5x/bolt_installing_modules.md shows a
sample Puppetfile carrying the pup.pt/bolt-modules comment. It originates from the
generated comment in lib/bolt/module_installer/puppetfile.rb, so fixing it here fixes
it there on the next docs regen. That is the only pup.pt hit in openvox-docs.

URL mapping

All targets verified to return 200. Base:
https://docs.openvoxproject.org/openbolt/latest/

pup.pt slug Target
bolt-commands running_bolt_commands.html
bolt-modules modules.html
bolt-plugins using_plugins.html
bolt-plans plans.html
bolt-puppet-plans writing_plans.html
bolt-yaml-plans writing_yaml_plans.html
bolt-inventory inventory_files.html
bolt-inventory-reference bolt_inventory_reference.html
bolt-tasks tasks.html
bolt-scripts bolt_running_scripts.html
bolt-projects projects.html
bolt-project-reference bolt_project_reference.html (keep the #modulepath anchor)
bolt-module-specs bolt_installing_modules.html#manually-specify-modules-in-a-bolt-project
bolt-plugin-hooks writing_plugins.html
bolt-cache experimental_features.html#plugin-caching
bolt-parallelism experimental_features.html#parallelism-in-bolt-plans
bolt-dotted-facts developer_updates.html#deprecating-dotted-fact-names
bolt-loading-files developer_updates.html#how-bolt-loads-scripts
bolt-dev-updates developer_updates.html
bolt-changelog release_notes.html
bolt-hiera hiera.html
bolt-logging logs.html
bolt-apply applying_manifest_blocks.html
bolt-getting-started getting_started_with_bolt.html
bolt-examples bolt_examples.html
bolt-troubleshooting troubleshooting.html
task-failure troubleshooting.html#my-task-fails-with-a-permission-denied-error-noexec-issue

The anchor targets were checked against the rendered id= attributes on the live pages.
Three call sites carry their own anchor, which is preserved:
bolt-project-reference#modulepath, bolt-commands#specify-a-transport, and
bolt-inventory#transport-configuration.

bolt-reference splits by context:

  • guides/transports.yaml uses it for transport configuration options and defaults, so
    it should point at bolt_transports_reference.html.
  • guides/links.yaml uses it as a generic "Reference Documentation" entry. Pointing it
    at the docs root would duplicate the entry above it, so it becomes a "Configuration
    Reference" entry pointing at configuring_bolt.html.

One that needs a decision rather than a mapping

bolt-analytics in lib/bolt/analytics.rb tells users how to opt out of data
collection. There is no analytics page in the OpenBolt docs. Analytics are already
force-disabled in this fork (config = { 'disabled' => true }), and the message sits
inside unless ENV['BOLT_DISABLE_ANALYTICS'] || true, so it is unreachable today.
Removing the block is preferable to repointing it.

Related stale links in the same files

guides/links.yaml is what bolt guide links prints. Beyond its pup.pt entries it
still advertises:

  • https://bolt.guide (now redirects to help.puppet.com)
  • https://slack.puppet.com/
  • https://github.com/puppetlabs/bolt/

Worth updating in the same pass, since it is six lines.

Note that the replacement URLs are long enough to break that file's two-column layout
at 80 columns, so it needs a small reflow rather than a straight substitution.


Research for this issue was AI-assisted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions