Carry the Host Tool Declaration, and Declare Hugo In It - #91
Merged
Conversation
host-tools.json is a carried baseline file the hub added, so every repository owes one. This is not the empty stub, because this repository genuinely needs a tool the fleet declaration does not carry. Hugo is the site generator and this repository's whole output, and AUDIT.md section 3 runs it locally to prove the URL contract, so a host auditing this repository needs it rather than only the CI runner. The floor is 0.164.0, a target anchored to the version .github/actions/install-hugo pins, since that action states a minor bump can change rendered output. The entry is honest that a floor cannot enforce a pin: a floor is a minimum and the pin is exact, so a newer Hugo passes here and can still build output CI would not, and the checksum-verified install is what guarantees reproducibility. The vendored theme's own 0.146.0 minimum is recorded as the lower measured boundary. Only Hugo is declared. The deploy reaches rsync and ssh and the live check reaches curl, but all three run on the CI runner or the VPS rather than on a maintainer's host, so declaring them would fail a host that never needed them. The file carries no $schema pointer, because the schemas are hub-only and a relative pointer would resolve to a path this repository does not have. The carried spec/secrets.json already omits its own for the same reason. One correction the previous pull request's sweep missed: the Repository Layout bullet still described repo-config/ as holding "the apply script", which was deleted there. That sweep grepped for the path, and a bullet describing the file without naming it cannot be found that way. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds this repository’s local host tool declaration and documents it in the repository layout so hosts running the hub’s audit/gate tooling can validate they have an adequate Hugo version available.
Changes:
- Add
host-tools.jsondeclaring Hugo (minimum0.164.0) as a required host tool for local URL-contract auditing. - Update
GOVERNANCE.md“Repository Layout” to reflect the removal of the old apply-script reference and to documenthost-tools.json.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| host-tools.json | Introduces the repo-local host tool overlay, requiring Hugo at a minimum version aligned with the CI-pinned installer. |
| GOVERNANCE.md | Updates the repository layout bullets to remove the outdated “apply script” wording and to add host-tools.json. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 10, 2026
Merged
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 freeto 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.
Step 3 of the resync. Follows #89 (instruction set) and #90 (the
configure.shretirement).Not the empty stub
host-tools.jsonis a carried baseline file the hub added, so every repository owes one, and a repository with nothing to add carries a stub with an emptytoolslist. This repository is not that case, and I checked rather than defaulting.Hugo is the site generator and this repo's whole output, and
AUDIT.mdsection 3 runs it locally to prove the URL contract. So a host auditing this repository needs it, not only the CI runner. The fleet declaration does not carry it.The floor, and what it cannot do
0.164.0, a target floor anchored to the version.github/actions/install-hugopins. That action states the reason itself: "a minor bump can change rendered output" and "the site is reproducible only if the generator is".The entry is explicit about the limit rather than implying more: a floor is a minimum and the pin is exact, so a host above
0.164.0passes this check and can still build output CI would not. The checksum-verified install in that action is what guarantees reproducibility; this entry catches only the too-old half. The vendored PaperMod theme's own0.146.0minimum is recorded as the lower measured boundary, and the extended build requirement is noted as not expressible as a version.Only Hugo is declared. The deploy reaches
rsyncandssh, the live check reachescurl, but all three run on the CI runner or the VPS rather than on a maintainer's host, so declaring them would fail a host that never needed them.No
$schemapointer: the schemas are hub-only and a relative pointer would resolve to a path this repo does not have. The carriedspec/secrets.jsonalready omits its own for the same reason.A miss from #90's sweep, corrected here
The
Repository Layoutbullet still describedrepo-config/as holding "the apply script" — deleted in #90.That sweep grepped for the path, and this bullet describes the file without naming it, so the grep structurally could not find it. Worth knowing generally: a path grep finds uses of a file and misses descriptions of it.
Repository Layoutisintentfidelity, so it is this repo's to edit.Verification
The hub's gate, run from a hub checkout against this repo:
Tighten-only verified in both directions, not just the passing one: raising a floor is honoured, and a deliberate relaxation is refused with
local tool jq tried to lower the floor from 1.7 to '1.0', which is a relaxation, so the hub floor stands.All 18 verbatim
GOVERNANCE.mdsections re-checked by content hash after theRepository Layoutedit: still matching.prose_lint,repo_gate --check eol,markdownlint-cli2,editorconfig-checkerclean.Remaining
README structure: a retired section name, unsorted link groups, and four
3rd Party Toolsdescription mismatches.🤖 Generated with Claude Code