Skip to content

Add OpenFact 6.x docs collection as a preview (latest stays on 5.x) - #459

Open
miharp wants to merge 1 commit into
OpenVoxProject:masterfrom
miharp:docs/openfact6-cutover
Open

Add OpenFact 6.x docs collection as a preview (latest stays on 5.x)#459
miharp wants to merge 1 commit into
OpenVoxProject:masterfrom
miharp:docs/openfact6-cutover

Conversation

@miharp

@miharp miharp commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Phase 1 of the major-version cutover in MAINTAINING.md for OpenFact, following #430 (core), #457 (server), and #458 (OpenVoxDB): docs/_openfact_5x copied to docs/_openfact_6x, the collection registered in _config.yml, nav_map.yml, navigation.yml, and products.yml with a 6.0.0 reference pin. latest stays on 5.x.

OpenFact 6.0.0 is already GA (2026-07-31), so this could have been a Phase 1+2 promotion. I kept latest on 5.x deliberately: 5.x is what the stable openvox-agent 8.x bundles (5.6.1 in 8.28.x per the component-versions data), and OpenFact 6 ships only with the 9.x agent. Moving latest here would put 6.x docs in front of readers of the stable agent docs. It moves with the OpenVox 9 promotion instead. Happy to flip it in this PR if you would rather track the OpenFact release itself.

Part of #456.

What changed beyond the copy

File Change
index.md Title; which agent series bundles OpenFact 6 (9.x; the 8.x agent bundles 5); Ruby 3.0+ requirement; component-versions link to the 9.x page
custom_facts.md Note on the /opt/puppetlabs/bin search-path addition (openfact#138); note that time_limit/limit are deprecated aliases of timeout (#114); the exec/which deprecation note extended to the 6.0 runtime warnings (#121)
release_notes.md Rewritten for the 6 series (full rewrite; see the GitHub diff view)
_data/products.yml New 6x version pinned to ref: "6.0.0"; latest stays 5x

Generated pages

core_facts.md and cli.md are gitignored in the collection and CI regenerates them from the pin at build time, as for the other generated collections. A local bundle exec rake references:openfact VERSION=6.0.0 COLLECTION=_openfact_6x INSTALLPATH=docs run succeeds (about 11 seconds), and the output differs from the 5.6.1 pages only in built_from_commit, the generation-date note, and the canonical front matter, which correctly localizes to /openfact/6.x/. The 6.0.0 man-page .El fix does not change the rendered CLI page.

How the content was checked

Screenshots

01-openfact6-index 02-openfact6-release-notes 03-openfact6-custom-facts-timeouts 04-openfact6-custom-facts-search-path 05-openfact5-index-selector

Diffs for the small edits

diff against the 5.x source
--- a/index.md
+++ b/index.md
@@ -1,6 +1,6 @@
 ---
 layout: default
-title: "OpenFact 5"
+title: "OpenFact 6"
 ---
 
 OpenFact is a cross-platform system profiling library that discovers and reports per-node facts —
@@ -32,8 +32,12 @@ ad-hoc inspection, debugging, or scripting without triggering a full agent run.
 ## Included in openvox-agent
 
 OpenFact ships inside the `openvox-agent` package and does not need to be installed separately.
+OpenFact 6 is the series bundled with `openvox-agent` 9.x; the 8.x agent bundles OpenFact 5.
 The version bundled with a given agent release is listed in
-[Component versions in openvox-agent](/openvox/latest/about_agent.html).
+[Component versions in recent releases](/openvox/9.x/component_versions.html).
+
+OpenFact 6 requires Ruby 3.0 or later (the 9.x agent bundles Ruby 4.0). It drops support for
+Ruby 2.5 through 2.7. See the [release notes](./release_notes.html) for the other changes in 6.0.
 
 ## Getting started
 
--- a/custom_facts.md
+++ b/custom_facts.md
@@ -108,6 +108,10 @@ execute shell commands:
 - If your fact is more complicated than that, you can call `Facter::Core::Execution.execute('uname --hardware-platform')` from within the `setcode do`...`end` block.
   Whatever the `setcode` statement returns is used as the fact's value.
 - Your shell command is also a Ruby string, so you need to escape special characters if you want to pass them through.
+- When you pass a bare command name rather than a full path, OpenFact looks for it in `$PATH`
+  and then in `/sbin`, `/usr/sbin`, and, starting in OpenFact 6.0, `/opt/puppetlabs/bin`. The
+  last entry means facts that call `puppet`, `puppetserver`, or `puppetdb` resolve even when the
+  agent runs as a service without the `/etc/profile.d/puppet-agent.sh` `PATH` additions.
 
 > **Note:** Not everything that works in the terminal works in a fact. You can use the pipe (`|`) and similar operators as you normally would.
 > but Bash-specific syntax like `if` statements do not work. The best way to handle this limitation is to write your conditional logic in Ruby.
@@ -285,6 +289,9 @@ Timeout per execute method
 Facter::Core::Execution::execute('<cmd>', options = {:timeout => 5})

+> Note: The time_limit and limit option keys are compatibility aliases for timeout.
+> Starting in OpenFact 6.0 they emit a deprecation warning; use timeout.
+

Facter.add(:sleep) do
  setcode do
@@ -312,7 +319,7 @@ Facter.add(:application_config) do
end

-> Please note that Facter::Core::Execution::exec has been deprecated in favor of Facter::Core::Execution::execute. This is important when migrating from older versions of Facter.
+> Please note that Facter::Core::Execution.exec has been deprecated in favor of Facter::Core::Execution.execute, as have Facter::Util::Resolution.exec and Facter::Util::Resolution.which. Starting in OpenFact 6.0 these methods emit a runtime deprecation warning and will be removed in a future major release. This is important when migrating from older versions of Facter.

Logging


</details>

## Follow-ups

- The 5.x pin is still `5.6.1` while `5.7.0` (2026-07-12) exists; a one-line bump in a separate PR.
- At the OpenVox 9 promotion (Phase 2), move `openfact.latest` to `6x` together with the other products.

@miharp
miharp requested a review from a team as a code owner August 27, 2026 13:03
@miharp
miharp force-pushed the docs/openfact6-cutover branch from df83044 to 42cbfa8 Compare August 27, 2026 13:37
miharp added a commit to miharp/openvox-docs that referenced this pull request Aug 27, 2026
Add an upgrade-planning page to the 9.x collection covering what to
review before moving a production deployment from OpenVox 8 to 9,
alongside the existing package-mechanics page (upgrade_minor):

- Component version table: Ruby 3.2 -> 4.0, OpenSSL 3.0 -> 3.5,
  OpenFact 5.x -> 6.x, JRuby 9.4 -> 10.1, Java 21/25 (17 dropped)
- Ruby 4.0 review guidance for custom facts, functions, types,
  providers, and agent/server-installed gems
- Behavior changes verified against the 9.0.0 prerelease sources:
  deferred functions preprocessed by default again (openvox#462),
  reports default store -> none (openvox#583), and the server
  setting fallback deprecation (openvox#536 - root agents still
  fall back with a warning, non-root runs fail; the code keeps the
  root fallback in beta2, so the page documents the deprecation
  rather than a hard removal)
- Removed settings (configprint, pluginsync, data_binding_terminus,
  environment_data_provider) and other removals (regsubst encoding
  argument, pe_serverversion fact, zone_core module, Java keystores,
  legacy PAL APIs)
- Server/OpenVoxDB notes: Java 17 dropped, Jetty 12, OpenVoxDB
  Debian 11/12 packages discontinued, openvox-server 9 requires
  openvox-agent 9 on the same host
- Test-then-upgrade checklist and upgrade order

Also add the nav entry and cross-link the page from the breaking-
changes callout in upgrade_minor.

Updated after the server, OpenVoxDB, and OpenFact 6 preview cutovers
(OpenVoxProject#457, OpenVoxProject#458, OpenVoxProject#459): per-component release-notes links, OpenVox Server 9
also dropping Debian 11/12 and Amazon Linux 2, the OpenVox Server 9
filebucket read-authorization change (openvox-server#549), the OpenVoxDB
bootstrap.cfg jetty10-service pitfall for upgrades from 8.14.0 or
earlier, the PostgreSQL 14 minimum, and the concrete OpenFact 6 changes
that affect fact code.

Part of OpenVoxProject#456

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
Phase 1 of the major-version cutover in MAINTAINING.md for OpenFact: copy
docs/_openfact_5x to docs/_openfact_6x, register the collection, nav map,
product bar entry, and products.yml version pinned to the 6.0.0 tag, and
leave `latest` on 5.x, which is the series bundled with the stable 8.x
agent. OpenFact 6 is bundled with openvox-agent 9.x, so `latest` moves
with the OpenVox 9 promotion.

The generated pages (core_facts, cli) are gitignored and CI regenerates
them from the pin; a local `rake references:openfact VERSION=6.0.0
COLLECTION=_openfact_6x INSTALLPATH=docs` run succeeds and the output
differs from 5.6.1 only in build metadata and the localized canonical.

Authored content updated for 6.0.0:

- index: title, which agent series bundles OpenFact 6, Ruby 3.0+
  requirement, component-versions link to the 9.x page
- custom_facts: the /opt/puppetlabs/bin search-path addition
  (openfact#138), the time_limit/limit alias deprecation (OpenVoxProject#114), and
  the exec/which runtime deprecation warnings (OpenVoxProject#121)
- release_notes: rewritten for the 6 series

Part of OpenVoxProject#456

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
@miharp
miharp force-pushed the docs/openfact6-cutover branch from 42cbfa8 to 95ec14c Compare August 27, 2026 21:53
miharp added a commit to miharp/openvox-docs that referenced this pull request Aug 27, 2026
Add an upgrade-planning page to the 9.x collection covering what to
review before moving a production deployment from OpenVox 8 to 9,
alongside the existing package-mechanics page (upgrade_minor):

- Component version table: Ruby 3.2 -> 4.0, OpenSSL 3.0 -> 3.5,
  OpenFact 5.x -> 6.x, JRuby 9.4 -> 10.1, Java 21/25 (17 dropped)
- Ruby 4.0 review guidance for custom facts, functions, types,
  providers, and agent/server-installed gems
- Behavior changes verified against the 9.0.0 prerelease sources:
  deferred functions preprocessed by default again (openvox#462),
  reports default store -> none (openvox#583), and the server
  setting fallback deprecation (openvox#536 - root agents still
  fall back with a warning, non-root runs fail; the code keeps the
  root fallback in beta2, so the page documents the deprecation
  rather than a hard removal)
- Removed settings (configprint, pluginsync, data_binding_terminus,
  environment_data_provider) and other removals (regsubst encoding
  argument, pe_serverversion fact, zone_core module, Java keystores,
  legacy PAL APIs)
- Server/OpenVoxDB notes: Java 17 dropped, Jetty 12, OpenVoxDB
  Debian 11/12 packages discontinued, openvox-server 9 requires
  openvox-agent 9 on the same host
- Test-then-upgrade checklist and upgrade order

Also add the nav entry and cross-link the page from the breaking-
changes callout in upgrade_minor.

Updated after the server, OpenVoxDB, and OpenFact 6 preview cutovers
(OpenVoxProject#457, OpenVoxProject#458, OpenVoxProject#459): per-component release-notes links, OpenVox Server 9
also dropping Debian 11/12 and Amazon Linux 2, the OpenVox Server 9
filebucket read-authorization change (openvox-server#549), the OpenVoxDB
bootstrap.cfg jetty10-service pitfall for upgrades from 8.14.0 or
earlier, the PostgreSQL 14 minimum, and the concrete OpenFact 6 changes
that affect fact code.

Part of OpenVoxProject#456

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
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