Conversation
scripts/check-anchors.sh stripped underscores when slugifying headings, disagreeing with the github-slugger algorithm Docusaurus actually uses (which keeps underscores). The vale-dale autofix trusted this checker and rewrote anchor links like #customize-analysis-tasks-for-the- box_filemetrics-job to .../boxfilemetrics-job across accessanalyzer 11.6 and 12.0 docs, satisfying the buggy local check but breaking the real Docusaurus build (~140+ broken anchors, causing the build-and- deploy job to fail). Fix the slugify regex to keep underscores, and restore the underscores in every anchor link the autofix stripped. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
scripts/vale-autofix.sh had its own slugify() that diverged from github-slugger (used by Docusaurus): it stripped underscores and collapsed/trimmed hyphens, neither of which github-slugger does. This is the same class of bug just fixed in scripts/check-anchors.sh, and it lives in update_heading_anchors(), the function that auto-rewrites anchor links in vale-autofix.yml's "Fix heading anchors" step whenever a heading is renamed — so a future underscore-containing heading rename would silently compute the wrong new anchor and reproduce this PR's original failure. Also corrects two now-incorrect expectations in test-slugify.sh that had encoded the old (wrong) hyphen-collapsing behavior. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ests _word_overlap_score() in vale-autofix.sh counted empty array elements (produced by uncollapsed hyphen runs after the earlier slugify fix) in its maxlen denominator, deflating scores enough to push real heading renames below the match threshold — silently skipping an anchor repair that used to work. Also extracts the duplicated slugify() (previously hand-synced between vale-autofix.sh and check-anchors.sh, and the source of two rounds of the same underscore bug) into a single scripts/lib/slugify.sh both scripts source. test-slugify.sh now tests that shared implementation directly instead of only vale-autofix.sh's copy. Wires scripts/test-slugify.sh and scripts/test-anchor-update.sh into CI (new `npm run test:scripts`, run as a step in vale-autofix.yml) so regressions in either script are caught automatically instead of only by manual review. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ord-overlap matches slugify() stripped leading "## " but nothing trailing, so a heading like "## Clients " (or "## Overview ##") slugged to "clients-"/"overview-". Docusaurus doesn't see that trailing whitespace — remark trims it from the heading's text node before github-slugger ever runs — so the two disagreed. check-anchors.sh was already like this (harmless there: read-only, and the step is continue-on-error). It became load-bearing in vale-autofix.sh once the consolidation removed that script's old trailing-hyphen trim, letting update_heading_anchors() write a "#clients-" anchor that would 404 at build time. Verified against remark+github-slugger directly. Also fixes _word_overlap_score() double-counting a repeated old-slug token against the same new-slug token (e.g. two "the"s both matching one "the"), which could inflate a score past the match threshold. Matched tokens are now marked consumed so each new-slug word can only satisfy one match. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…t, avoid SCRIPT_DIR clobber Addresses process-level review findings: the vale-autofix workflow's path filter meant test:scripts never ran on PRs that only touched the scripts it tests; test-md-extension-autofix.sh wasn't wired into any test entry point despite md-extension-autofix.sh running as a real PR check; and vale-autofix.sh's unnamespaced SCRIPT_DIR silently clobbered test-anchor-update.sh's own variable of the same name when sourced. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ing-docs # Conflicts: # docs/accessanalyzer/2601/connectors/sharepoint-online/azure-permissions.md # docs/passwordpolicyenforcer/11.2/admin/hibpupdater.md
Dependabot's npm updater touches package.json, which is in this workflow's paths trigger, but Dependabot PRs get no VALE_TOKEN secret, so checkout ran unauthenticated. Fork PRs hit the same empty-token issue. Guard matches the convention already used in claude-code-review.yml. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
gh pr diff hard-fails above 300 changed files, and the trailing "|| true" swallowed that failure, so count=0 was written and every downstream step (Vale, Dale, anchor fixes, anchor-link check) was silently skipped with a green check. Confirmed live on this PR's own 3,454-file run (32916117907). Switch to a git diff against origin/dev, which has no file-count limit and matches the origin/dev usage already relied on by the --anchors-only step. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The anchor/slugify test step ran inside vale-autofix with no continue-on-error, gating Vale, Dale, anchor fixes, and the summary comment on every docs PR regardless of whether scripts/ or package.json changed. A future regression in any of the three test suites would silently kill autofix for unrelated doc-only PRs, the same failure class as the file-count bug fixed in the prior commit. Move it to its own job, gated on scripts/**/package.json actually changing in the diff, so a script-test failure surfaces as its own check without blocking unrelated docs work. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Without a needs: relationship, vale-autofix ran in parallel with test-scripts and could push script changes to docs before the unit tests reported a failure. Adding needs: test-scripts serializes them; it still resolves to success when test-scripts skips its inner steps (scripts unchanged), so the existing scripts-changed guard composes fine.
test-scripts omitted ref:, so it checked out the default pull_request ref (refs/pull/<N>/merge) while vale-autofix checks out head.ref. On a PR with merge conflicts against dev, the merge ref goes missing and checkout fails, which now (via needs: test-scripts) skips vale-autofix entirely. Pinning to head.sha keeps both jobs diffing the same commit and works for fork PRs too. Also stop wrapping the git diff itself in `|| true` in "Get changed markdown files" — that swallowed real diff failures (bad ref, fetch issue) as "no files changed", the same silent-success bug class this PR was fixing for gh pr diff. Only the grep filter (legitimately empty when no docs/*.md changed) is now allowed to fail quietly.
Mechanical Vale fixes, sentence-initial capitalization repair, and per-file Dale (passive voice, idioms, wordiness) and Vale (Oxford comma, FollowTheStepsTo, WeakLinkText, NoteThat admonitions, etc.) fixes across the Auditor 10.9 docs, plus a handful of content bugs (garbled sentences, duplicated steps, mis-numbered steps, an undefined acronym, and a broken heading anchor the repo's checker can't resolve inside a nested list). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…er/11.6 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ing-docs # Conflicts: # docs/accessanalyzer/2601/install/quickinstall.md # docs/accessanalyzer/2601/install/system/network.md # docs/auditor/10.7/configuration/fileservers/delldatastorage/objectaccess.md # docs/auditor/10.7/configuration/fileservers/delldatastorage/overview.md # docs/auditor/10.7/configuration/fileservers/delldatastorage/securityeventlog.md # docs/auditor/10.7/configuration/networkdevices/ciscoasa.md # docs/auditor/10.7/configuration/networkdevices/ciscoios.md # docs/auditor/10.7/configuration/networkdevices/fortinetfortigate.md # docs/auditor/10.7/configuration/networkdevices/juniper.md # docs/auditor/10.7/configuration/networkdevices/paloalto.md # docs/auditor/10.7/configuration/networkdevices/sonicwall.md # docs/auditor/10.8/configuration/fileservers/delldatastorage/objectaccess.md # docs/auditor/10.8/configuration/fileservers/delldatastorage/overview.md # docs/auditor/10.8/configuration/fileservers/delldatastorage/securityeventlog.md # docs/auditor/10.8/configuration/networkdevices/ciscoasa.md # docs/auditor/10.8/configuration/networkdevices/ciscoios.md # docs/auditor/10.8/configuration/networkdevices/fortinetfortigate.md # docs/auditor/10.8/configuration/networkdevices/juniper.md # docs/auditor/10.8/configuration/networkdevices/paloalto.md # docs/auditor/10.8/configuration/networkdevices/sonicwall.md # docs/auditor/10.9/admin/monitoringplans/azurefiles.md # docs/auditor/10.9/admin/monitoringplans/datasources.md # docs/auditor/10.9/admin/monitoringplans/useractivity/overview.md # docs/auditor/10.9/admin/settings/longtermarchive.md # docs/auditor/10.9/api/prerequisites.md # docs/auditor/10.9/configuration/azurefiles/overview.md # docs/auditor/10.9/configuration/azurefiles/stateintime.md # docs/auditor/10.9/configuration/fileservers/delldatastorage/objectaccess.md # docs/auditor/10.9/configuration/fileservers/delldatastorage/overview.md # docs/auditor/10.9/configuration/fileservers/delldatastorage/securityeventlog.md # docs/auditor/10.9/configuration/networkdevices/ciscoasa.md # docs/auditor/10.9/configuration/networkdevices/ciscoios.md # docs/auditor/10.9/configuration/networkdevices/fortinetfortigate.md # docs/auditor/10.9/configuration/networkdevices/juniper.md # docs/auditor/10.9/configuration/networkdevices/paloalto.md # docs/auditor/10.9/configuration/networkdevices/sonicwall.md # docs/auditor/10.9/tools/passwordexpirationnotifier/overview.md # docs/directorymanager/11.1/admincenter/applications/portal/server/nativeiis.md # docs/endpointprotector/install/migrationprocedure/migration-legacy-5x-to-2510.md
edit.md pointed at a /docs/ path for a static image instead of /images/, and an unescaped <MP name> placeholder inside bold text was parsed as an unclosed JSX tag, both breaking the Docusaurus build. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…into chore/vale-dale-remaining-docs
Two more images in this file used the same /docs/ instead of /images/ path typo that broke the previous build fix. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The vale/dale autofix pass had condensed the full WorkflowState value list into a link with a #workflow-states anchor that doesn't exist on the target page, breaking Docusaurus's broken-anchor check. Restored the original content (matching the current version) and reapplied the style fixes (contractions, descriptive link text) to keep it consistent with the rest of the autofix pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ry 3.1 Applies Dale rules (passive voice, wordiness, undefined acronyms, idioms) and Vale rules (contractions, Oxford comma, filler phrases, hedging language) across the identityrecovery 3.1 docs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…on 8.0 Fixes passive voice, wordiness, "Follow the steps to", "the desired X", formal hedging, contractions, and other style violations across the threatprevention 8.0 doc set (excluding kb/). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…into chore/vale-dale-remaining-docs
…on 7.5 Fixes passive voice, wordiness, "Follow the steps to", "the desired X", formal hedging, contractions, and other style violations across the threatprevention 7.5 doc set (excluding kb/). Also corrects a repeated "Pwnd" typo for the Have I Been Pwned (HIBP) integration, including the resulting anchor link updates. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Without channel=stable, Keygen returns the newest artifact across all channels, which can be a pre-release or dev build instead of the latest stable release. Also drops "wizard" in favor of "installer" in the install docs for consistent terminology.
Pin AA26 installer download to the stable channel
NPS-D: clarify MongoDB 8 migration requirements
vale dale remaining docs
… files The anchor-repair sweep rewrote heading links across every file in a product/version folder (or all of docs/kb/) whenever Phase 1 mechanically changed a heading, and the final commit step staged all of docs/ rather than just the files Vale/Dale/Claude were scoped to. Both let the workflow push changes to files the PR author never touched. Phase 1 now skips heading lines entirely, and the Vale/Dale AI phases are instructed to skip heading violations, removing the need for the sweep. The commit step now stages only the files in changed-files.txt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ed-files fix(vale-autofix): stop editing headings, scope commits to changed files
…a storage (#1464) * Added Windows Server 2025 and SQL Server 2025 as supported OS and data storage Update NAA Product documentation to reflect Windows Server 2025 and SQL Server 2025 as supported. Updated the following sections: - System Requirement - SQL Server Requirement - FSAA Proxy supported OS - SPAA agent - NAA Upgrade - Database solution target - AIC Requirement - SDD Add-on supported OS (11.6) AAL-1660 * fix(vale): auto-fix style issues (Vale + Dale) --------- Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
tay-caliguiri
temporarily deployed
to
development
September 1, 2026 16:47 — with
GitHub Actions
Inactive
tay-caliguiri
temporarily deployed
to
development
September 1, 2026 17:04 — with
GitHub Actions
Inactive
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.
No description provided.