Repository navigation
WP10: Rulebook.Levels with New-RulebookOffLevel and the generated level pages, the off-level script and the authoring guide - #80
Merged
Merged
Conversation
…l pages Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…okLevelDocs in a Rulebook.Levels module Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…verything-off root level Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…vels/ with a drift test Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… and the architecture recipes for stages and removals Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… its basedOn level Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…d page folder and encoded links - the script and New-RulebookOffLevel read the settings before writing and only warn when they cannot - both refuse a catalog entry without a boolean enabledByDefault, with the same message - New-RulebookLevelDocs refuses a folder with a Markdown file that is not a generated page, and a level slug readme - table cells fold any CR or LF; docs URLs encode parentheses and whitespace - the module writes through <file>.tmp like the script; a synthetic catalog pins the script's sort key Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
OV-09 / DR-022: AA0021 None/Info/Warning/Warning, for the WP10 live run. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ded off-level names and the -WhatIf scope - link labels escape pipes and brackets; docs URLs also encode | < > ] - an unknown action names its id; a catalog entry without an id is left to the catalog reader - New-RulebookOffLevel warns before replacing a published level's file and refuses the slug readme (script too) - Build-Template help and the authoring guide say -WhatIf is a drift check for a committed state - sort-key parity covers a seven-digit id and an id outside the pattern Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This reverts commit 5465f74 (OV-09 / DR-022, AA0021 at Info in Recommended) after card (a) of the WP10 live run. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…nfirm only when asked, HTML-safe cells and the Listed sentence - the script warns like the module before replacing a published level's file; the module help says it does not require the settings - New-RulebookLevelDocs forwards -Confirm only when the caller bound it - table cells escape & < > as entities, also for id, analyzer, from and to; pages regenerated (AA0462 title) - the Listed sentence names the endpoints through Get-EndpointFileName and counts ids outside the catalog Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s entry Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… a direct push, then merge The pull request that adds a level fails Validate (C11, C12) until the endpoints and skeletons exist; with Validate as a required check it cannot be merged. The script's next steps, the authoring guide and the architecture recipe now name the branch route; merging first stays the alternative. Card (b) of the live run records the finding. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…script and the module A clone with core.autocrlf true checks base/off.ruleset.json out with CRLF line endings; the byte comparison then reported it as differing and asked for -Force. Content equal apart from CRLF and a missing final newline is now current and the file is not rewritten. Cards (b) to (d) of the live run recorded. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…he branch route Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…guide Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…vel, in the module and the script Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Comment-based help only; docs/authoring-levels.md section 6 already lists the property. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Member
Author
|
137973e adds CatalogCount to the comment-based help of Get-RulebookLevelSummary (a finding of the docs review of ALCops/rulebook wp10/levels-docs). It is a help-text line only, no code or test change, so no further review round; docs/authoring-levels.md section 6 already listed the property. |
This was referenced Oct 9, 2026
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.
Summary
Rulebook.Levels(new module):Get-RulebookOffLevelEntryandNew-RulebookOffLevelwrite the everything-off root level an organization adds itself (D25: none is shipped);Get-RulebookLevelSummaryis the model of one level page (rows with From, To and a lowered flag against the chain below, grouped by analyzer, counts per stage over every catalog id);ConvertTo-LevelDocsMarkdown,ConvertTo-LevelDocsIndexMarkdownandNew-RulebookLevelDocswrite the Markdown pages and their index for any repository.scripts/New-RulebookOffLevel.ps1: the self-contained download-and-run copy, run in a clone of the organization repository. It writes the same bytes as the module (pinned by a parity test on the fixture catalog, the shipped catalog and a synthetic one per sort-key prefix), never edits the settings, and prints the entry to paste and the next steps.tools/rulebook/Build-Template.ps1: a sixth step,New-RulebookLevelDocsfromtemplate/into the engine'sdocs/levels/(-LevelDocsDir), with the generatedREADME.mdand the four pages committed. The drift test regenerates them outside its template scratch copy and compares bytes; a new test ties each page's counts to the V14 table indocs/rulebook/README.md.Rulebook.Template:Sync-GeneratedFolderexported withSupportsShouldProcess(no behaviour change for the generators).docs/authoring-levels.md(maintainer guide: placement changes, how they reach organizations, the level pages, the organization recipes, reference, live run), ADR D49 (the shipped level pages live in the engine'sdocs/levels/), ARCHITECTURE 5.1 recipes (add a stage, remove a level or stage, the branch route), a new 5.9 for the module, section 8 and the naming table; README, CONTRIBUTING,template-content.mdanddocs/rulebook/README.mdupdated.Interview decisions (2026-10-09)
New-RulebookLevelDocs), the shipped set byBuild-Template.ps1into the engine'sdocs/levels/with a drift test; per-organization pages come with the WP14 site from the same model (D49).Get-RulebookSkeletons.ps1: writesbase/off.ruleset.json, refuses a differing file without-Force, prints the settings entry and the next steps.Arthurvdv/rulebook-e2e-templateandArthurvdv/rulebook-e2e-levels.Deviations from the issue text
docs/levels/, not intemplate/docs/levels/and not "regenerated by Publish" (D49); per-organization pages come with WP14.New-RulebookOffLevel -RepositoryRoot [-Name]instead of-CatalogPath -OutputPath, and delivered as a self-contained script as well.matrix/resolved.json; a test proves the shipped counts equal the matrix table.Build-RulebookBase/Build-RulebookStagesseparately) and step 4 ("release notes line") are outdated: the guide statesBuild-Template.ps1and D38 (pull request title plus label).docs/design/folder: design notes are in ARCHITECTURE.md anddocs/authoring-levels.md.Found in the live run and decided on the way:
github.ref_name).core.autocrlftrue, a checkout givesbase/off.ruleset.jsonCRLF endings and the byte comparison reported it as differing. The script and the module now treat content equal apart from line endings (and a missing final newline) as current and leave the file alone.Arthurvdv/rulebook-e2e-templatewas recreated (not re-seeded) from this branch'stemplate/with the actions pinned to@wp10/levels.Live run
Scratch repositories Arthurvdv/rulebook-e2e-template and Arthurvdv/rulebook-e2e-levels; details in
docs/authoring-levels.mdsection 7.level:recommended, the job summary showed the tables (#75 fixed)'off'choice;base/off.ruleset.jsonuntouchedlevel:house; init script refusesessential,Baselineworks.nightlyendpoints (off.nightly equals off) and skeletons and thenightlychoice; the first scan recorded tools 18.0.43.1464, tools 30.0.42.60748-beta and alcops 1.3.1 with no new id, so no quarantine file changed (D46); merged as 9bab05f (Validate green; no Publish run, the workflow's path filter leavescatalog/out), second scan "No new package version ...; nothing to do"Both branch-route variants were observed: a direct commit (card (c)) and a pull request into the branch (cards (d), (e)). Card (a)'s throwaway commit 5465f74 is reverted on this branch by ded07c5; the net diff touches neither
docs/rulebook/nortemplate/.Review
Three Sonnet
code-reviewrounds at effort high (approve with fixes each; no must-fix bugs in any round) plus a targeted pass on the three post-round-3 code commits (approve, notes only). Round 1: settings read before the write, catalog parity, a guarded page folder, the readme slug, cell and URL encoding. Round 2: the revert of card (a) as merge gate, link-label escaping, the -WhatIf scope. Round 3: the script's published-level warning, Confirm forwarding, HTML-safe cells, the Listed sentence. After round 3, from the live run: the CRLF handling (bd7f192, module, script and tests) and the branch-route wording (2cc9220, script text and docs); the targeted pass added a data-driven test set pinning the line-ending decisions. Every other later commit is docs only.Spin-offs (to file at close-out)
scripts/New-RulebookOffLevel.ps1added to the places that hard-codemainURLs (comment on WP13: move the init script and al-project.md URLs from main to v1 in one place; merge the duplicated rulebook.json rows in ARCHITECTURE 13 #63).Closes #12
🤖 Generated with Claude Code