Carry the .fogsettings key rename into the docs, and clear the pre-rename PR backlog - #132
Merged
Merged
Conversation
.fogsettings renamed all 79 managed keys to CATEGORY_lower_snake_case in nine categories, leaving 66: six retired, nine absorbed into settings that already existed, and two promoted from internal variables. install-fogsettings.md now documents all 66 by category, marking each with its kind, and makes the preference/record/hand-set/inferred taxonomy explicit rather than implied -- which is what tells a reader whether a hand edit will survive the next run. Adds the canonical-path model that retires acmeLeaf: a PKI_ path is fixed and the admin makes it resolve to their file, so "is this leaf mine?" is a filesystem question rather than a flag that could disagree with the vhost. command-line-options.md was showing the pre-1.6 option list. Its full option block is now rendered from the shipped installer's own help output rather than transcribed, so --install-mode, --netboot-proto, --public-web-cert and --rebuild-ipxe-with-my-ca are covered along with the four install-mode presets. Drops --no-ca-trust and --no-sb-name-constraints, which were removed with the settings behind them, and says so rather than leaving readers to find out by passing them. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gj9EW4NNDT8JHHghG3pZDt
Eight pages still named settings that the 1.6 rename retired. Swept per hit rather than mechanically: the storage-node `sslpath` CSV field in csv_import_export.md is deliberately left alone, because it is that endpoint's own field name mapping to a storageNode column, not a key in this file. Two are behaviour corrections rather than renames, because the setting they told the reader to set no longer exists: - external-ca-lets-encrypt.md told the ACME client to install straight to FOG's canonical leaf paths and then set acmeLeaf=yes. Under 1.6 that is the failure it was written to prevent -- FOG decides a leaf is its own by where the canonical path resolves, so a real file sitting at that path reads as FOG's and gets re-issued from the stored request while the ACME key sits beside it. The client now owns its own directory and the canonical paths are symlinked at it. - pki-zones.md relocated a certificate by sed-ing the path in .fogsettings. Canonical paths are recomputed every run, so that edit moves nothing; the path has to resolve elsewhere instead. Also drops the two retired flags where pages still recommended them (--no-sb-name-constraints in pki-zones.md and secure-boot-setup-mode-enrollment.md), and fixes wikilinks inside table cells in the settings reference: an unescaped pipe there is read as a column separator, so the link rendered literally as [[page with no warning from the build. Verified with npm run docs:build -- clean, and every internal link and in-page anchor on both rewritten pages resolves. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gj9EW4NNDT8JHHghG3pZDt
Both PRs predate the .fogsettings rename and each had one file that master has since replaced, so the salvageable content is carried here rather than merged. From #125, the substantive correction to secure-boot-signing.md: FOG *does* sign its own iPXE binaries with this server's Secure Boot key, so the page no longer claims it cannot. The real tradeoff is whether a custom binary is worth enrolling a key before the machine can netboot -- not "signed shim or custom binary". Its local-esp-boot.md is dropped; merged #129 put a newer version of that page on master. From #128, the Let's Encrypt walkthrough, with step 2 rewritten. As written it set acmeLeaf=yes and repointed the certificate paths, and under 1.6 that is the failure it was written to prevent: acmeLeaf is retired, repointing a canonical path moves nothing because the installer recomputes it, and a real file at the canonical path sits inside FOG's own web zone -- so FOG concludes the leaf is its and re-issues it. The page now symlinks the canonical paths at the ACME files and sets PKI_web_cert_publicly_trusted, and separates the two questions FOG answers differently: who renews the leaf is derived from the filesystem, what it chains to is the one thing that must be declared. Neither PR's kb/how-tos/index.md is used -- both branched before #129 added the Secure Boot section and would have removed it. The one new entry is added by hand instead. Also drops a dev branch name that had leaked into admin-facing text in migrating-fog-server.md, where --external-ca was described as the working-1.6 spelling; both spellings ship and work. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gj9EW4NNDT8JHHghG3pZDt
darksidemilk
force-pushed
the
claude/fogsettings-key-rename-docs-b1i2vg
branch
from
August 23, 2026 10:39
d37d196 to
fb75986
Compare
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.
FOG 1.6 (GH-1120) renamed all 79 managed
.fogsettingskeys toCATEGORY_lower_snake_case, leaving 66 — six retired, nine absorbed, two promoted. That change deliberately left the admin-facing docs alone ("The admin-facing fog-docs pages, and the still-stalecommand-line-options.md, remain a separate change"). This is that change.Key names, flag list and behaviour all come from the shipped
working-1.6code —managedKeys/deprecatedKeysinlib/common/functions.sh, the option handlers inbin/installfog.sh— not from the plan. The plan's own Outcome section records where the two diverged.The two pages that were asked for
docs/management/server/install-fogsettings.md— rewritten to the nine-category model. All 66 keys documented by category, each tagged preference / record / hand-set / inferred preference. That taxonomy was previously implicit; it is now explicit and stated once up front, because it is the thing that tells a reader whether a hand edit survives the next installer run. Includes why a preference and a record can never share one key, using theBOOT_url_protobug as the worked example.docs/installation/server/command-line-options.md— regenerated; it was still showing the pre-1.6 option list.--install-mode(with the four presets),--netboot-proto,--public-web-certand--rebuild-ipxe-with-my-caare all covered.The full option block is now rendered from the installer's own
--helpoutput rather than transcribed by hand. That is what caught--no-ca-trustand--no-sb-name-constraints, both removed in 1.6 with the settings behind them, and picked up help text the page predated:-Cimplying--recreate-keys,-K's warning that every registered fog-client must be re-pinned, and--no-secure-bootnow declining enrolment rather than signing.Two corrections that are not renames
Some pages did not merely name retired settings — they told readers to set them, and following them now breaks a server.
The ACME instructions inverted.
external-ca-lets-encrypt.mdhad the ACME client install certificates straight to FOG's canonical leaf paths and then setacmeLeaf=yes. Under 1.6 that produces the exact failure it was written to prevent:_externallyManagedLeaf()decides ownership by asking whetherPKI_web_vhost_certresolves outside_pkiZoneDir web, so a real file at that path reads as FOG's own and gets re-issued from the stored CSR while the ACME private key sits beside it — a mismatched pair and a web server that will not start, silently, under-y. The client now owns its own directory and the canonical paths are symlinked at it.Relocating a certificate by editing the path.
pki-zones.mddid this withsedon.fogsettings. Canonical paths are recomputed every run, so that edit moves nothing.PR backlog
Five PRs predated the rename and overlapped it.
master;masteris merged back into this branch.migrating-fog-server.mdtidy. Itslocal-esp-boot.mdwas superseded by merged Document booting FOG from a machine's own ESP, and what db enrolment replaces #129.httpProto,sslPath) and, in Document the install modes and every undocumented installer flag #127's case, the two removed flags. Their surviving substance is folded in.Neither #125's nor #128's
kb/how-tos/index.mdwas usable: both branched before #129 and would have deleted the Secure Boot section it added. The one new entry is added by hand instead.Each closed PR carries a comment explaining what moved and why.
Verification
cd quartz && npm i && npm run docs:build— clean, no warnings (110 files, 954 emitted).managedKeys).external-ca-lets-encryptstill land.[[in the built HTML held at 12, all pre-existing and unrelated — 9 are shell[[ -z $var ]]inside code blocks, 3 are old MediaWiki links in pages not touched here.sslpathCSV field that ADR 0024 explicitly excludes (it is that endpoint's own field name mapping to astorageNodecolumn).One trap worth knowing
A wikilink inside a table cell needs its pipe escaped —
[[target\|Text]]. Unescaped, the|is read as a column separator and the link renders literally as[[page, and the build does not warn. This bit the change once before being caught in the built HTML. The check isgrep -rnE '^\|.*\[\[[^]]*[^\\]\|' docs --include=*.md, and it may be worth adding toCLAUDE.mdalongside the existing newline-wrapped-wikilink warning.🤖 Generated with Claude Code
https://claude.ai/code/session_01Gj9EW4NNDT8JHHghG3pZDt
Generated by Claude Code