feat(ci): verify course content against reality - #71
Open
miaulalala wants to merge 1 commit into
Open
miaulalala wants to merge 1 commit into
miaulalala wants to merge 1 commit into
Conversation
Adds scripts/verify-content.mjs with two modes. Offline checks gate pull requests: unknown template variables, a literal version that should have been templated, manifest entries pointing at files nobody wrote. Online checks run weekly and report rather than gate, because a vendor moving a URL must not block somebody's typo fix. The online half is what catches the drift that reading never does: links, image tags, whether nextcloud-docker-dev still defines the services the setup module tells readers to start, and whether the pinned version is still current. It found three things on its first run: an info.xml missed by the manual templating pass, a version range quoted in prose, and a broken occ docs link whose path segment had been dropped. Assisted-by: ClaudeCode:claude-opus-5 Signed-off-by: Anna Larch <anna@nextcloud.com>
This branch has not been deployed
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.
Course modules rot in two ways, and only one of them is visible. A stale version number gets reported by a reader; a
bootstrap.shthat quietly stopped doing what a module claims does not, and that is the kind that accumulates until a module has to be rewritten. This adds a check for the invisible kind.Stacked on #70, which must merge first: the checks assert against
course.targetNextcloudVersion.Two modes, deliberately:
{{template}}variables, a literal version that should have been templated, manifest entries pointing at files nobody wrote. Nothing leaves the machine, so it cannot fail for reasons outside this repository.nextcloud-docker-devstill defines the services the setup module tells readers to start, whetherbootstrap.shstill runsscripts/update-hosts, and whether the pinned version is still the current stable. A dead third-party link must not block somebody's typo fix, so this never runs on a PR; on failure it opens one issue and keeps it updated rather than filing a new one every Monday.It also prints, on every run, the release-specific claims a human must re-read when the pin moves — the paragraphs that are deliberately not templated because substituting them would turn a visibly stale number into a confidently wrong sentence. Currently 12 of them. That is the other half of the bump story from #70.
It found three things on its first run, all fixed here:
content/php/beginner/8.md:103— aninfo.xmlversion range missed by the manual templating pass in feat(content): take the target Nextcloud version from the manifest #70content/php/beginner/2.md:143— a version range quoted in prose, also missedcontent/php/beginner/1.md:290— a broken link: the admin manual dropped theconfiguration_server/path segment, so the occ reference had been 404ing. Now pinned to the course's target versionLoad: about 63 requests per online run, spaced, once a week. Placeholders (
YOUR_USERNAME,host.docker.internal,.local) are skipped, and 403/429 are warnings rather than failures, since they mean a server dislikes CI rather than that a page is gone.Current state on this branch: 0 failures, 0 warnings offline; 0 failures and 2 warnings online — one bot-blocked GitHub link, and the course targeting 34 while stable is 35, which is the signal working as intended.
Note there is an unmerged
ci/pull-request-buildbranch adding.github/workflows/pull-request.yml. This adds a separate workflow file rather than touching it, but the two want reconciling.🤖 Generated with Claude Code