Skip to content

dev to main - #1465

Merged
jth-nw merged 60 commits into
mainfrom
dev
Sep 1, 2026
Merged

dev to main#1465
jth-nw merged 60 commits into
mainfrom
dev

Conversation

@jth-nw

@jth-nw jth-nw commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

jth-nw and others added 30 commits August 24, 2026 12:08
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>
jth-nw and others added 24 commits August 31, 2026 11:39
…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>
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>
…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
… 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
@jth-nw
jth-nw requested review from a team as code owners September 1, 2026 16:03
…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>
@jth-nw
jth-nw merged commit a8b312c into main Sep 1, 2026
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants