Three defects in CODESTYLE.md's language coverage, grouped because settling the first decides the other two. Surfaced by the canonical-content review pass on the PR for #1075/#1120, which reads each unit whole as a carrier does. Deferred out of that PR because the first is a scope decision rather than a text fix.
CODESTYLE.md is carried at intent, whole file.
1. "Everything else is Python" is falsified by the authoring repo
CODESTYLE.md "Shell" states:
Bash, and only where a program cannot be Python: a bootstrap that installs the interpreter cannot be written in it, and a host tool that must run before a development toolchain exists cannot depend on one. Everything else is Python, with a test under the scripts tree's tests/ directory.
The hub tracks nine PowerShell programs, none of them Bash and none of them Python:
$ git ls-files '*.ps1' | head
host-setup/bootstrap.ps1
host-setup/menu.ps1
host-setup/windows/install-tools.ps1
scripts/skills_install.ps1
The fleet lint gate explicitly provides for them: GOVERNANCE.md "Running the Linters Locally" says "for a repo that carries .ps1 files, PSScriptAnalyzer", and PSScriptAnalyzerSettings.psd1 sits at the repo root. CODESTYLE.md has no PowerShell section, so an agent asked to change a Windows host-setup script reads this sentence as forbidding the language the file is already written in, and the doc offers no section to route to instead.
The decision this needs: does CODESTYLE.md grow a PowerShell section (paired with a powershell-codestyle Skill, per the pattern the other three language sections follow), or does the Shell section's sentence narrow to say what it actually means about Bash-versus-Python without claiming to cover every language?
2. "Shell" carries no scope note where ".NET" and "Python" both do
.NET and Python each open with an italic scope note:
This section applies only to the .NET side. A repo with no .NET projects still carries it (the file is carried whole) and ignores it.
Shell has none. A reader who has only that section, in a repo that ships no shell scripts, reads an unscoped fleet mandate about which language every program must be written in, with nothing saying the section is ignorable. Whether it gets the note depends on what item 1 decides the section claims.
3. cspell and CSpell in the same file, against the file's own rule
CODESTYLE.md "General" opens with "Use each tool's official casing in task labels, docs, and prose", then writes the tool two ways:
| Location |
Form |
General, the doc-lint set |
cspell |
Markdown and Spelling |
CSpell |
A reader applying the unit's own rule to a new task label has the file itself as evidence for both. Measured across the tree, 75 occurrences are lowercase and 9 capitalized, so most of the lowercase ones are the cspell.json filename and CLI invocations, which are correctly lowercase, and settling the prose form is a sweep rather than a one-line edit. The doc-lint list also reads consistently at present, since markdownlint and editorconfig-checker beside it are lowercase too.
Provenance
Canonical-content review pass against CODESTYLE.md "General" and "Shell", run on the branch for #1075/#1120/#1114/#1119/#1129/#1078. Items 1 and 3 verified against the tree directly.
Three defects in
CODESTYLE.md's language coverage, grouped because settling the first decides the other two. Surfaced by the canonical-content review pass on the PR for #1075/#1120, which reads each unit whole as a carrier does. Deferred out of that PR because the first is a scope decision rather than a text fix.CODESTYLE.mdis carried atintent, whole file.1. "Everything else is Python" is falsified by the authoring repo
CODESTYLE.md"Shell" states:The hub tracks nine PowerShell programs, none of them Bash and none of them Python:
The fleet lint gate explicitly provides for them:
GOVERNANCE.md"Running the Linters Locally" says "for a repo that carries.ps1files, PSScriptAnalyzer", andPSScriptAnalyzerSettings.psd1sits at the repo root.CODESTYLE.mdhas no PowerShell section, so an agent asked to change a Windows host-setup script reads this sentence as forbidding the language the file is already written in, and the doc offers no section to route to instead.The decision this needs: does
CODESTYLE.mdgrow a PowerShell section (paired with apowershell-codestyleSkill, per the pattern the other three language sections follow), or does the Shell section's sentence narrow to say what it actually means about Bash-versus-Python without claiming to cover every language?2. "Shell" carries no scope note where ".NET" and "Python" both do
.NETandPythoneach open with an italic scope note:Shellhas none. A reader who has only that section, in a repo that ships no shell scripts, reads an unscoped fleet mandate about which language every program must be written in, with nothing saying the section is ignorable. Whether it gets the note depends on what item 1 decides the section claims.3.
cspellandCSpellin the same file, against the file's own ruleCODESTYLE.md"General" opens with "Use each tool's official casing in task labels, docs, and prose", then writes the tool two ways:General, the doc-lint setcspellMarkdown and SpellingCSpellA reader applying the unit's own rule to a new task label has the file itself as evidence for both. Measured across the tree, 75 occurrences are lowercase and 9 capitalized, so most of the lowercase ones are the
cspell.jsonfilename and CLI invocations, which are correctly lowercase, and settling the prose form is a sweep rather than a one-line edit. The doc-lint list also reads consistently at present, sincemarkdownlintandeditorconfig-checkerbeside it are lowercase too.Provenance
Canonical-content review pass against
CODESTYLE.md"General" and "Shell", run on the branch for #1075/#1120/#1114/#1119/#1129/#1078. Items 1 and 3 verified against the tree directly.