Make the README a recipe, move the rationale into docs/, and publish it as a book - #17
Merged
Conversation
The README had grown to 552 lines and led with why the fleet is an explicit list rather than with how to get a board running. Someone who has just cloned this has one question, and it was buried. It is now 76 lines: what it is, what you need, the recipe from clone to open board, a table of the handful of things you actually do next, the URLs, and an index. The one piece of troubleshooting that bites every laptop user - every panel reading "No data" after the machine slept - stays on the front page. Nothing is deleted. The rest is recorded rationale, most of it written down precisely so nobody repeats a mistake, so it moves rather than goes: docs/configuration.md, docs/metrics.md, docs/dashboard.md, docs/serving.md and docs/operations.md, linked from the index and, for purging, the traps and alerting, from the "then what" table directly. Verified by checking that every line of the old README over 25 characters still appears in the new set - the only ones that do not are headings that were renamed and the old quickstart block the recipe replaces. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The five docs/ pages were only readable as raw files on GitHub. They are now a Material for MkDocs site at jebel-quant.github.io/monitoring, with search, a light/dark toggle and the org's logo, so it looks like the other Jebel-Quant books. mkdocs.yml is self-contained rather than `INHERIT: docs/mkdocs-base.yml` like the rhiza-managed repos: nothing syncs a base file into here, so an INHERIT line would point at a file that does not exist. The theme block is kept close to the org's base so the books still match, and the header says what to do if this repo is ever brought under rhiza. `strict: true` is the reason this is worth having in CI at all. These pages were split out of one 552-line README, so a stale relative link is the likeliest way they rot - strict turns that into a failed build. The workflow therefore builds on every pull request and deploys only from a push to main, and never from a fork, which must not be able to publish to this org's Pages site. mkdocs-material is pinned so an unrelated upstream release cannot redden a PR that only touched the collector. docs/index.md is a landing page rather than a copy of the README: the recipe, then a card per section. Each page carries title, description and keywords front matter for search engines and the site search. Verified by building locally with --strict: six pages, no warnings, and the five card icons render as SVG. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
The README had grown to 552 lines and led with why the fleet is an explicit list rather than with how to get a board running. Someone who has just cloned this repo has one question, and it was buried.
1. The README is now 76 lines
What it is → what you need → the recipe (clone,
up.sh, editrepos.yml,up.shagain, open the board) → a "Then what" table of the six things you actually do next → the URLs → a docs index.The one piece of troubleshooting that bites every laptop user — every panel reading No data after the machine slept — stays on the front page, because that is the question people ask before they ask anything else.
2. Nothing is deleted
Most of what was there is recorded rationale, much of it written down precisely so nobody repeats a mistake (the
or vector(0)trap, thegroup_leftduplicate-series trap, theper_page=1bug, why Fly.io was abandoned). It moves rather than goes:docs/configuration.mdrepos.yml,.env, dropping and purging a repo, the API budgetdocs/metrics.mdowner/namelabeldocs/dashboard.mddocs/serving.mddocs/operations.mdThe "Then what" table links straight into the relevant section for purging, the dashboard traps and alerting, so the warnings are one click from the action that needs them.
3. Those pages are now a book
A Material for MkDocs site at https://jebel-quant.github.io/monitoring/ — search, light/dark toggle, the org logo — so it looks like the other Jebel-Quant books.
docs/index.mdis a landing page rather than a copy of the README: the recipe, then a card per section.mkdocs.ymlis self-contained rather thanINHERIT: docs/mkdocs-base.ymllike the rhiza-managed repos. This repo is not rhiza-managed, so nothing syncs a base file into it and anINHERITline would point at a file that does not exist. The theme block is kept close to the org's base so the books match, and the header says what to do if this repo is ever brought under rhiza.Why the workflow builds on PRs
strict: trueis what makes this worth having in CI. These pages were split out of one long README, so a stale relative link is the likeliest way they rot — strict turns that into a failed build. So.github/workflows/book.ymlbuilds on every pull request and deploys only on a push to main, never from a fork, which must not be able to publish to this org's Pages site.mkdocs-materialis pinned so an unrelated upstream release cannot redden a PR that only touched the collector.4. Topics and keywords
Applied directly to the repo (it had none):
grafanaprometheusmonitoringobservabilitydashboardmetricsprometheus-exportergithub-apigithub-actionsci-cddevopsdocker-composeself-hosteddeveloper-toolsrepository-managementpythonThe description and homepage are set too, and every docs page carries
title/description/keywordsfront matter for search engines and the site search.Verification
mkdocs build --strictlocally: six pages, no warnings, all five card icons render as SVG.buildpasses,deploycorrectly skips.One thing to know before merging
Pages is already configured for this repo (
build_type: workflow), and the repo is public on a free org plan — so the published book is public. Pages access control (private/internal) is an Enterprise Cloud feature and is not available here. Nothing in these docs is secret and all of it is already readable in this public repo, so merging discloses nothing new — but if the intent was a genuinely access-restricted page, this does not achieve that and we should host it differently.🤖 Generated with Claude Code