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.
Summary
OpenBolt has 71 references to
pup.ptshort links, and that domain is no longer aredirector. It now serves a parked lander page:
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 thelive 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.mdandCONTRIBUTING.mdalready 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 newregistration.
Scope
71 total hits, but 12 are in
CHANGELOG.mdandHISTORY.md. Those are historicalrelease records and should be left as-is. The actionable set is 59:
lib/bolt/bolt_option_parser.rbguides/*.yamllib/bolt/**(other)schemas/*.jsonThe
schemas/*.jsonhits are generated from theOPTIONShashes inlib/bolt/config/options.rbandlib/bolt/inventory/options.rb, so they are fixed atthe source and regenerated with
rake schemas:all.Also reaches openvox-docs
One reference lives downstream:
docs/_openbolt_5x/bolt_installing_modules.mdshows asample Puppetfile carrying the
pup.pt/bolt-modulescomment. It originates from thegenerated comment in
lib/bolt/module_installer/puppetfile.rb, so fixing it here fixesit there on the next docs regen. That is the only
pup.pthit in openvox-docs.URL mapping
All targets verified to return 200. Base:
https://docs.openvoxproject.org/openbolt/latest/pup.ptslugbolt-commandsrunning_bolt_commands.htmlbolt-modulesmodules.htmlbolt-pluginsusing_plugins.htmlbolt-plansplans.htmlbolt-puppet-planswriting_plans.htmlbolt-yaml-planswriting_yaml_plans.htmlbolt-inventoryinventory_files.htmlbolt-inventory-referencebolt_inventory_reference.htmlbolt-taskstasks.htmlbolt-scriptsbolt_running_scripts.htmlbolt-projectsprojects.htmlbolt-project-referencebolt_project_reference.html(keep the#modulepathanchor)bolt-module-specsbolt_installing_modules.html#manually-specify-modules-in-a-bolt-projectbolt-plugin-hookswriting_plugins.htmlbolt-cacheexperimental_features.html#plugin-cachingbolt-parallelismexperimental_features.html#parallelism-in-bolt-plansbolt-dotted-factsdeveloper_updates.html#deprecating-dotted-fact-namesbolt-loading-filesdeveloper_updates.html#how-bolt-loads-scriptsbolt-dev-updatesdeveloper_updates.htmlbolt-changelogrelease_notes.htmlbolt-hierahiera.htmlbolt-logginglogs.htmlbolt-applyapplying_manifest_blocks.htmlbolt-getting-startedgetting_started_with_bolt.htmlbolt-examplesbolt_examples.htmlbolt-troubleshootingtroubleshooting.htmltask-failuretroubleshooting.html#my-task-fails-with-a-permission-denied-error-noexec-issueThe 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, andbolt-inventory#transport-configuration.bolt-referencesplits by context:guides/transports.yamluses it for transport configuration options and defaults, soit should point at
bolt_transports_reference.html.guides/links.yamluses it as a generic "Reference Documentation" entry. Pointing itat 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-analyticsinlib/bolt/analytics.rbtells users how to opt out of datacollection. There is no analytics page in the OpenBolt docs. Analytics are already
force-disabled in this fork (
config = { 'disabled' => true }), and the message sitsinside
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.yamlis whatbolt guide linksprints. Beyond itspup.ptentries itstill advertises:
https://bolt.guide(now redirects tohelp.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.