Skip to content

Language standards state coding controls directly - #260

Merged
Marius Storhaug (MariusStorhaug) merged 5 commits into
mainfrom
language-standard-writing
Nov 11, 2026
Merged

Marius Storhaug (MariusStorhaug) merged 5 commits into
mainfrom
language-standard-writing

Conversation

@MariusStorhaug

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Language-specific coding standards use direct en-US technical prose and state the existing controls without idioms. PowerShell guidance also distinguishes diagnostic policy from runtime behavior and declared GUID identity from content integrity. Runtime behavior, pinning policy, compatibility requirements, and technical examples do not change. No adoption action is required.

Changed: Language-specific standards state controls directly

PowerShell, Terraform, TypeScript, and YAML guidance uses concrete descriptions, shorter sentences, and present-tense statements. Direct instructions remain imperative. The same version bounds, optional identity checks, native help, parameter and output contracts, VS Code compatibility floor, and YAML obligations remain in force.

The PowerShell factual corrections are bounded by official sources and reproducible probes. Cmdlets and advanced functions support the Debug common parameter. Write-Error is non-terminating by default, with termination controlled by effective error-action settings. Important information summaries still should be visible without Verbose, but the default information preference suppresses display unless the caller selects a visibility setting. A module GUID checks declared identity metadata, not immutable contents or publisher authenticity.

Technical details

Immutable coverage: MSXOrg/docs 1b0d4893c8fefabe604d04393068a8ff6f848082 to cd29fcb9d2fe3247aca71ae4f137279c0e8ed1cd. Five small logical commits are pushed. This draft opened after the first complete improvement, abfd5a48850124a565f71930ad6db3892af924ba, before the rest of the assigned part was implemented. The diff changes only the 10 declared Markdown paths below: 174 insertions and 164 deletions. The worktree is clean.

Full-read dispositions: every assigned page was read in full, including examples, native help, and handwritten PowerShell index content. Paths below are relative to src/docs/Coding-Standards/.

Fully read path Disposition Concrete acceptance evidence
PowerShell/Classes.md Changed reach for becomes use; behaviour becomes behavior. Class selection, member order, and the complete class example remain unchanged.
PowerShell/Functions.md Changed for free, honour, and breadcrumbs become direct feature, error-action, and diagnostic descriptions. Native help, parameter sets, output contracts, and SHOULD force remain intact. WhatIf retains the existing state-change condition.
PowerShell/index.md Changed, handwritten prose only gluing tools together, string surgery, and quietly winning become tool integration, custom string manipulation, and an accidental write that fails. The generated INDEX block is unchanged.
PowerShell/Messaging.md Changed plumbing becomes implementation details. The false Debug/termination/automatic-visibility statements are corrected without changing the diagnostic-channel policy.
PowerShell/Requires-Modules.md Changed flow in, would break you, and false green become accepted releases, an incompatible next major, and a false-success result. GUID is explicitly declared metadata, not a content hash or proof of publisher authenticity.
PowerShell/Scripts.md Changed flow in, would break you, freeze out patches, and reach for it become available patches, an incompatible-major bound, excluded later patches, and a separate declared-identity control.
PowerShell/Testing.md No change The complete page matches the baseline. Its Simple/Standard/Advanced documentation profiles, discovery precedence, filenames, sibling suppression, and root-only phases already use direct evergreen guidance.
PowerShell/Version-Constraints.md Changed Range semantics and the PSResourceGet/.NET bare-version distinction are stated directly. GUID identity is separate from contents/authenticity. All range tables and examples retain their exact values.
Terraform.md Changed labelled becomes labeled; dependency-graph rationale identifies redundant depends_on entries directly. Version, state, naming, and module controls are unchanged.
TypeScript.md Changed quietly drops users, escape hatch, and when a needed API lands become explicit compatibility-floor and type-exception guidance. Exact dependency pins, the engine caret exception, paired single-commit updates, and the package-error example are unchanged.
YAML.md Changed next year becomes existing content and later additions. All three MUST obligations, the pre-commit filename exception, and native suppression example remain unchanged.

Test-first evidence and preservation: ten page-level prose cases failed before editing and pass after it. The three Messaging factual cases and three GUID qualification cases also have recorded before/after evidence. Read-only comparisons preserve all 22 fenced blocks, every original inline identifier in order, every numeric/version literal, every heading/anchor, all generated source INDEX content, navigation keys, and uppercase normative keywords. Manual review preserves the conditional controls and requirement force; the function-help description retains SHOULD rather than becoming mandatory.

The only added code spans are $InformationPreference, SilentlyContinue, -InformationAction Continue, -ErrorAction Stop, $ErrorActionPreference = 'Stop', and -TargetObject. These explain existing runtime conditions. No original inline identifier or executable example is removed or changed. The GUID qualification adds no identifier, version, or pinning-policy change.

Source and factual evidence: the fixed-baseline Documentation Model, Natural Language, Technical Writing Guide, Markdown, Documentation, and Standard template supplied the writing criteria. The official STEMG overview/FAQ and relevant Issue 9 rules and dictionary were consulted. The PDF/extract remain local; the PDF MD5 is 9c720341c350ed77943b2c73d01c716f. Automated scans and counts do not establish full STE conformance.

Exact PowerShell 7.6.9 probe commands/results verify Debug metadata/output, continued execution for ErrorAction Continue, catchable termination for both Stop controls, hidden information by default, and displayed information with InformationAction Continue. Companion probes verify structured TargetObject context and conditional WhatIf availability. Immutable MicrosoftDocs/PowerShell-Docs sources are 5f46b78db1f0b6593e1854c5fefdea75abd13e52 for common parameters and 3bcc275f46fd8537780ee1549c0862bb0266e06c for Write-Error and Write-Information.

The GUID definition uses MicrosoftDocs/PowerShell-Docs 364305cae1cd43135147df815661f0a1dddd9967, reference/7.6/Microsoft.PowerShell.Core/About/about_Module_Manifests.md#guid. Two local manifests with equal declared GUID/version and different anonymous descriptions have different SHA-256 values; both pass Test-ModuleManifest. This verifies the metadata/content distinction, not package signing or gallery trust. The Task retains the source, exact declared values, hashes, and bounded interpretation.

Final validation at cd29fcb9d2fe3247aca71ae4f137279c0e8ed1cd:

Existing check or evidence Result
markdownlint-cli2 0.24.0 / markdownlint 0.42.0, shared repository config 11 assigned files, 0 issues.
Test-DocumentationLink.ps1 All links resolve across 130 documentation files.
Test-CrossRepositoryLink.ps1, scoped to the assigned pages 1 qualifying same-repository GitHub target resolves across 11 files. No claim that this local scope checks all external URLs.
Existing index generator and Zensical 0.0.59 CI-equivalent regeneration in a temporary copy, then zensical build --clean --strict: no issues. A second copied-index Check passes. Only the expected Coding Standards and PowerShell index copies regenerate; source tables remain untouched.
Rendered-output acceptance All 11 pages exist. Changed controls, runtime conditions, GUID limits, and regenerated class description occur in rendered main content.
Preservation, scope, and whitespace All invariants pass; only the 10 owned Markdown files differ; git diff --check passes; clean worktree.
GitHub CI for the exact final head Lint, Test, Links, Build, and Cross-repository links succeed. Publish is skipped as expected for a PR.
Explicit automated review Review 5768663442 approves the exact final head with 0 inline comments. Wait-CopilotReview reports a clean round. The earlier review of 6c4102d is not used as final-head evidence.

The declared Zensical 0.0.59 was restored in isolated session storage only after the installed 0.0.50 failed the version preflight. Repository requirements and the global installation are unchanged. No tool or dependency is added to the repository.

Standards and framework alignment:

Changed surface Standards checked Framework or domain docs checked Result
Seven changed PowerShell/ pages Fixed-baseline Documentation Model, Natural Language, Writing Guide, Markdown, Documentation, Standard template; original language contracts Official PowerShell common parameters, Write-Error, Write-Information, and module-manifest GUID references for bounded factual repairs Fixed in this PR; existing declaration-scope interpretation is recorded below.
Terraform.md Same writing sources and original Terraform contract None (no framework-specific docs) Fixed in this PR.
TypeScript.md Same writing sources and original TypeScript/VS Code compatibility contract None (no framework-specific docs) Fixed in this PR.
YAML.md Same writing sources and original YAML/linter contract None (no framework-specific docs) Fixed in this PR.

Accepted differences and exclusions: exact technical terms, commands, native help, code examples, imperative instructions, normative target contracts, and generated descriptions retain their purpose. Observed Pester exit-code evidence retains its tested versions and unknown cause. A normative requirement is not proof of implementation or enforcement. The shared standards, GitHub Actions page, top-level index, all code/configuration/tests, and #240 remain untouched. No heading, page path, requirement, or enforcement mechanism is added. No repository audit/planning file is created. No cross-owned anchor repair is needed; CI derives dependent index descriptions.

Unresolved interpretation: Scripts places module dependencies in #Requires, while Module Requirements excludes verdict-reporting entry scripts. Both existing contracts remain unchanged. The policy scope needs a separate clarification; this PR does not infer a new loading policy. There is no delivery blocker for the requested prose/factual slice.

Issue convergence: the scoped open-issue search used PowerShell, Terraform, TypeScript, YAML, and language in titles. #55 requires new display UX policy, and #136 requires updater implementation; neither is delivered by this diff. No additional issue converges. Only the native Task below is closed on a later merge.

This PR remains DRAFT and open. It is not marked ready or merged. No auto-merge or Agent merge action is taken; GitHub auto_merge is null.

Related references

Copilot AI previously approved these changes Nov 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approved

No active review issues are reported for these coding-standard documentation clarifications.

No open issues 🎉

What changed in this PR

This documentation-only PR advances #245 by making language-specific coding standards clearer and more direct. It preserves technical examples and coding controls while correcting PowerShell diagnostic-runtime descriptions.

Changes:

  • Replaces figurative wording with direct en-US prose across PowerShell, Terraform, TypeScript, and YAML guidance.
  • Clarifies module version constraints, script structure, function contracts, and class selection.
  • Corrects PowerShell Debug availability, error termination, and information-stream visibility guidance without changing runtime behavior.
File Description
src/​docs/​Coding-Standards/​YAML.md Clarifies linting, suppression scope, and workflow checks.
src/​docs/​Coding-Standards/​TypeScript.md Clarifies typing rules and VS Code compatibility constraints.
src/​docs/​Coding-Standards/​Terraform.md Simplifies infrastructure, state, dependency, and tooling guidance.
src/​docs/​Coding-Standards/​PowerShell/​Version-Constraints.md Clarifies version-range semantics and separate identity controls.
src/​docs/​Coding-Standards/​PowerShell/​Scripts.md States script structure and dependency controls directly.
src/​docs/​Coding-Standards/​PowerShell/​Requires-Modules.md Clarifies module constraints and documented exit-code observations.
src/​docs/​Coding-Standards/​PowerShell/​Messaging.md Clarifies channel policy and corrects runtime descriptions.
src/​docs/​Coding-Standards/​PowerShell/​index.md Simplifies shared conventions while preserving generated navigation.
src/​docs/​Coding-Standards/​PowerShell/​Functions.md Clarifies parameters, pipelines, state changes, and native help.
src/​docs/​Coding-Standards/​PowerShell/​Classes.md States class-selection and organization guidance directly.

Review effort: Balanced

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approved

No active review issues were identified for this documentation-only clarification of coding standards.

No open issues 🎉

Review effort: Balanced

@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as ready for review November 4, 2026 14:43
Marius Storhaug (MariusStorhaug) added a commit that referenced this pull request Nov 11, 2026
Shared coding standards use direct en-US guidance and present-tense
contracts. Explanations replace idioms and distinguish what each check
verifies. Module GUID guidance distinguishes declared metadata from
content identity. Commands, examples, anchors, and technical
requirements remain unchanged. No consumer action is required.

<!-- ANNOUNCEMENT STOP -->

## Changed: Shared standards explain rules directly

Twelve shared standards explain their existing rules with concrete terms
and shorter sentences. The guidance covers function reuse, code layout,
naming, errors, dependency updates, performance, pre-commit checks,
security, documentation, natural language, Markdown, and testing. The
Technical Writing Guide is unchanged because it already gives direct
source-reading, artifact-format, preservation, and verification
instructions.

The changes improve guidance, not the software or enforcement it
describes. A local check result is not proof of every standard or every
CI result. Native help requirements, exact commands and examples,
settings filenames, pinning and security controls, compatibility
boundaries, and normative force remain intact. No migration or
configuration action is required.

<details>
<summary>Technical details</summary>

**Source identities and delivery.** The scoped base is
`1b0d4893c8fefabe604d04393068a8ff6f848082`; the final candidate is
`74bc8b9e634538cd7fb19ad0bcea694692f3ab67`. The comparison changes only
12 eligible Markdown pages, with 163 insertions and 163 deletions. The
remote branch and PR report that same head, and the worktree is clean.
This is scoped implementation evidence, not an invented publication
baseline.

The five pushed commits are `2a47f05d5ac4ad49e9ccf54c08b12ef0071a6dbd`,
`4d144df3ed360596e7c9c69662e515aab16c8cc3`,
`2337c5456d51e9212664ae46fae0cd624bfc60f0`,
`62b521bc1fca219fbc1324f86f526d113e478c18`, and
`74bc8b9e634538cd7fb19ad0bcea694692f3ab67`. The draft opened immediately
after the first complete, one-page Markdown improvement. The remaining
pages and the source-backed GUID factual correction were completed in
the same PR.

**Fixed review criteria.** The authoritative review sources are pinned
to the base commit: [Documentation
Model](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Ways-of-Working/Documentation-Model.md),
[Natural
Language](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Natural-Language.md),
[Technical Writing
Guide](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Writing-Guide.md),
[Markdown](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Markdown.md),
[Documentation](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Documentation.md),
and the applicable [standard
template](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Ways-of-Working/Spec-Driven-Development-Templates.md#standard).
Editing a source-owning page does not weaken the criteria.

The official [STEMG overview](https://www.asd-ste100.org/about_STE.html)
and [FAQ](https://www.asd-ste100.org/STE_faq.html) were read. The local
[Issue 9](https://doi.org/10.5281/zenodo.23666006) PDF matched MD5
`9c720341c350ed77943b2c73d01c716f`. Selected rule summaries and
explanations were consulted in its local extract, including terminology,
en-US, full word forms, clear sentences, direct instructions, and
descriptive structure. The PDF was not exhaustively reviewed or
republished. No scan, count, automated approval, or overview is treated
as full STE conformance.

**Owned read and acceptance evidence.** Every eligible page was read in
full at the fixed baseline. Changed passages and their surrounding rules
were reviewed again after editing. The following excerpts are prose
acceptance evidence, not required-string tests.

| Path | Read/change result | Before and after | Preserved contract |
| --- | --- | --- | --- |
| `src\docs\Coding-Standards\Code-Layout.md` | Full; changed | `hold in
your head` becomes `Keep functions small`; formatter acceptance becomes
verification of configured rules only | Standard-first derivation,
screen-fit guidance, and file-layout rules |
| `src\docs\Coding-Standards\Dependencies.md` | Full; changed |
`maximizes control but rots` becomes excluded fixes and delayed
adoption; `where you sit` becomes source, compatibility risk, and
consumer role | Identity/version axes, pin forms, owned-major limits,
human review, library/application roles |
| `src\docs\Coding-Standards\Documentation.md` | Full; changed | `This
is a floor, not a ceiling` becomes a direct native-format requirement
for internal and private units | Public minimum content, internal help,
comment examples, and the decision-rationale table |
| `src\docs\Coding-Standards\Error-Handling.md` | Full; changed |
`fulfil` becomes `fulfill`; `pushes the bug downstream` becomes failures
found by later callers | Immediate errors, typed catches, propagation,
separate channels, secret exclusion, cleanup |
| `src\docs\Coding-Standards\Functions.md` | Full; changed |
`hand-rolled version` becomes `custom implementation`; the `weak link`
guidance explicitly improves the shared function for all callers | Reuse
order, validation, pure core logic, preview-or-confirm behavior |
| `src\docs\Coding-Standards\Markdown.md` | Full; changed | `labelled`
becomes `labeled`; `behaviour` becomes `behavior`; the `honour` sentence
becomes direct rule statements; `Every code fence has a language tag.`
identifies the correct element | Lint settings, commands, anchor
examples, links, configuration precedence |
| `src\docs\Coding-Standards\Naming.md` | Full; changed | `turns it into
a riddle` becomes the direct explanation that `notReady = false` means
ready | All identifiers, including `daysUntilExpiry`, settings
filenames, overrides, and exceptions |
| `src\docs\Coding-Standards\Natural-Language.md` | Full; changed |
`source code for humans and agents` becomes instructions and
information; evergreen prose states the supported contract | Issue 9
MUST, en-US, audience-language policy, quotations, negative tables,
fenced examples |
| `src\docs\Coding-Standards\Performance.md` | Full; changed |
`catastrophic for ten thousand` becomes `Code acceptable for ten items
can be too slow for ten thousand.`; a second measurement replaces a
`hunch` | Quadratic-growth example, data structures, filtering,
streaming, safe caching, clarity first |
| `src\docs\Coding-Standards\Pre-Commit.md` | Full; changed | `a commit
that passes locally passes the gate` becomes `A local pass covers only
the checks and inputs that local run examined.` | Configured-hook MUST,
prohibition on new rules, immutable revisions, CI gate, commands,
exceptions |
| `src\docs\Coding-Standards\Security.md` | Full; changed | `don't hope`
becomes `Revoke and rotate it.`; the image-secret prohibition is direct
| Least privilege, external pins, owned-major limits, PR-author
identity, event names, trusted follow-up data |
| `src\docs\Coding-Standards\Testing.md` | Full; changed | `the suite
stays green forever` becomes the same wrong anchor in two
implementations; `the check is decoration` becomes a controlled broken
case that must fail | Observable behavior, independent results, no
source-freezing tests, zero-count exceptions, protected live APIs,
unexecuted coverage |
| `src\docs\Coding-Standards\Writing-Guide.md` | Full; no change |
Existing direct instructions already cover sources, formats,
preservation, and verification limits | Bytes identical to the fixed
baseline |

The test-first Task existed before repository edits. Its before-text
observations established the prose gaps before implementation. Baseline
Markdown, links, Pester, and site checks passed. The final one-off
preservation comparison examines all 13 pages and retains 104 heading
lines, all 77 original link targets in order, 194 inline code spans, 13
fenced blocks, and 14 normative token occurrences. One official
module-manifest reference is added, for 78 extracted link targets. Front
matter, Natural Language's tables and blockquoted examples, and all
generated index blocks are unchanged. These comparisons establish
preservation of the extracted surfaces, not full correctness or STE
conformance. Manual reading supplies the meaning comparison. No
source-freezing policy test was added.

**Final validation at `74bc8b9e634538cd7fb19ad0bcea694692f3ab67`.**

| Existing check | Result |
| --- | --- |
| Markdown CLI with the repository configuration | Pass:
markdownlint-cli2 0.24.0, all 13 eligible files, 0 issues |
| Relative-link and anchor validator | Pass: 130 files scanned |
| Cross-repository-link validator | Pass: 7 links checked in 134 files |
| Pester 6.0.1 through the existing runner | Pass: 66 passed, 0 failed,
0 skipped, 6 suites |
| Local Zensical build | Pass: no issues; installed version 0.0.50, not
the pinned-version oracle |
| [Docs CI run
41833563676](https://github.com/MSXOrg/docs/actions/runs/41833563676) |
Pass: Build, Links, Lint, Test; Publish skipped for the PR |
| [CI Build
job](https://github.com/MSXOrg/docs/actions/runs/41833563676/job/126586592277)
| Pass using the unchanged pinned `zensical==0.0.59` requirement |
| [Cross-repository-link CI run
41833563852](https://github.com/MSXOrg/docs/actions/runs/41833563852) |
Pass; immutable head matches this candidate |
| [Final automated
review](#258 (review))
| Approved on this candidate; 0 new inline comments |
| Scoped `git diff --check` and worktree check | Pass; clean worktree
and pushed head |

The local/CI Zensical versions are reported separately; CI supplies the
pinned-version result. No local package was installed, and no dependency
was added or changed. The baseline has no tracked
`.pre-commit-config.yaml`, so no configured local hook run is claimed. A
normative requirement for hooks is not evidence that they exist here.

**Standards and framework alignment.** `Fixed criteria` below means the
immutable writing, Markdown, Documentation, and standard-template
sources linked above. `Fixed model` means the immutable Documentation
Model. The standard artifact purpose is preserved: rules carry their
reasoning, and author actions remain direct imperatives. No framework
implementation, schema, supported command, or consumer configuration
changes, so no producer/template migration applies.

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| `src\docs\Coding-Standards\Code-Layout.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Dependencies.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Documentation.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Error-Handling.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Functions.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Markdown.md` | Fixed criteria | Fixed model
| Fixed in this PR |
| `src\docs\Coding-Standards\Naming.md` | Fixed criteria | Fixed model |
Fixed in this PR |
| `src\docs\Coding-Standards\Natural-Language.md` | Fixed criteria |
Fixed model | Fixed in this PR |
| `src\docs\Coding-Standards\Performance.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Pre-Commit.md` | Fixed criteria | Fixed
model | Fixed in this PR |
| `src\docs\Coding-Standards\Security.md` | Fixed criteria | Fixed model
| Fixed in this PR |
| `src\docs\Coding-Standards\Testing.md` | Fixed criteria | Fixed model
| Fixed in this PR |

**Other read-only paths.** The following repository paths were read for
context, fixed criteria, process, or existing validation. All remain
unchanged. Reads are complete except the two explicitly marked ranges.

```text
AGENTS.md
README.md
.github\CONTRIBUTING.md
src\docs\index.md
src\docs\Coding-Standards\index.md
src\docs\Ways-of-Working\Documentation-Model.md
src\docs\Ways-of-Working\Spec-Driven-Development-Templates.md
src\docs\Ways-of-Working\Issues\index.md
src\docs\Ways-of-Working\Issues\Types\Task.md
src\docs\Ways-of-Working\Issues\Process\Format.md
src\docs\Ways-of-Working\PR-Format.md
src\docs\Ways-of-Working\Commit-Conventions.md
src\docs\Ways-of-Working\Contribution-Workflow.md
src\docs\Ways-of-Working\Comparative-Review-Orchestration.md
src\docs\Ways-of-Working\Workflow.md
src\docs\Ways-of-Working\Workflow-Stages\Implement.md
src\docs\Ways-of-Working\Workflow-Stages\Maintain-Guidance.md
src\docs\Ways-of-Working\Definition-of-Ready-and-Done.md
src\docs\Ways-of-Working\Branching-and-Merging.md
.github\workflows\Docs.yml
.github\workflows\Cross-Repository-Links.yml
.github\linters\.markdown-lint.yml
requirements.txt
.github\scripts\Invoke-PesterSuite.ps1
.github\scripts\Wait-CopilotReview.ps1 (lines 1-160)
src\zensical.toml (lines 1-100)
```

The local coordination frame was read in full. The PDF was
hash-verified; selected extract rules were read at lines 1700-1795,
2540-2570, 3220-3325, 3675-3707, and 3990-4035, with targeted
rule-location searches. The official overview and FAQ were read in full,
as were the published Documentation Model and Ways of Working index
reached through the installed skill routes. Their published aliases
redirected to `msx.no`; the immutable Git sources remain the criteria.
No local issue-template directory or legacy issue-template file exists.
The configured parent-relative `AGENTS.md` is absent in this worktree
layout; the repository's own `AGENTS.md` is present and was followed.

**Task progress and issue convergence.** All implementation-plan items
in #242 are complete for this draft delivery. The Task
remains open for its normal merge closure. The convergence search used
open MSXOrg/docs issues with `"shared coding" in:title,body`,
`"ASD-STE100" in:title,body`, and `"Markdown.md" in:title,body`. These
returned this Task, the 15 separately owned campaign Tasks, and
#150 and #186. Both existing non-campaign issues
were read in full and are not satisfied by this prose-only diff. No
additional issue receives a closing keyword.

**Accepted differences and open questions.** Technical nouns, native
syntax, exact examples, normative contracts, direct instructions,
intentional negative examples, and generated indexes retain their
purpose. Existing heading idioms and contractions remain unchanged to
preserve anchors. No new enforcement, functional changes, broad
restructure, repository audit files, or edits to the scripts/tests
reserved by #240 are included.

The source-precedence question remains unresolved. [The coding-standards
index](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/index.md)
says configuration derives from standards.
[Markdown](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Coding-Standards/Markdown.md#the-shared-configuration-is-the-source-of-truth)
makes its configuration authoritative if they differ.
[Implement](https://github.com/MSXOrg/docs/blob/1b0d4893c8fefabe604d04393068a8ff6f848082/src/docs/Ways-of-Working/Workflow-Stages/Implement.md#1-orient)
says repo-local linter configuration wins. This PR preserves these
contracts and selects no new precedence rule. The decision-rationale
table's relationship to durable decision records remains a scope
question. The GUID equivalence is a factual error corrected below, not a
new supply-chain policy.

Published-URL checking remains #150, and the redirecting
alias/canonical-domain decision remains #186. The absent
local pre-commit configuration is not treated as an implemented
enforcement gate. One remote push rejection was resolved by a normal
retry, without force-pushing. No implementation blocker remains. Full
STE conformance is not claimed.

The two checked-in workflows run lint, links, tests, and a Zensical
Pages build/deploy without a versioned Release Management route. No
release decision block or `release:*` label applies. This PR remains
draft and assigned to its author, with no auto-merge request. No
readiness, merge, auto-merge, or Agent merge action is taken.

</details>

<details>
<summary>Related references</summary>

- Resolves #242
- References #150
- References #186
- References #240; its scripts and tests are outside this PR

</details>

## Fixed: Declared module identity is distinct from content integrity

A PowerShell module GUID is declared identity metadata, not a content
hash. A matching module name, GUID, and version does not prove that the
module bytes are unchanged. The dependency table and related
explanations distinguish fixed version selection from fixed content.

The existing optional GUID check, version and pinning policy, all
`#Requires` examples, SHA/digest controls, and normative force remain
unchanged. No new enforcement mechanism or consumer action is required.

<details>
<summary>Technical details</summary>

The official [module-manifest GUID
reference](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_module_manifests?view=powershell-7.5#guid),
verified against [Microsoft's immutable
source](https://github.com/MicrosoftDocs/PowerShell-Docs/blob/364305cae1cd43135147df815661f0a1dddd9967/reference/7.5/Microsoft.PowerShell.Core/About/about_Module_Manifests.md#guid),
defines an optional declared identifier that distinguishes same-named
modules. The introduction and GUID sections were read; no full-article
review is claimed.

Before this correction, Dependencies grouped a module GUID with content
hashes as a binding to immutable bytes. The identity/exact table also
reported no change before re-pinning and reproducibility as `Yes`. Those
are descriptive factual claims, not policy choices to preserve when
false. The Task plan was extended before editing, with the source and a
controlled counterexample.

Two locally generated, valid manifests both report module name
`Example`, GUID `11111111-2222-4333-8444-555555555555`, and version
`1.0.0`. They use different controlled description text.
`Test-ModuleManifest` confirms the matching identity/version, while
`Get-FileHash` returns different SHA-256 values:
`95DA5C13989DF87D9E97D0176654FF5D7BC6E8128DA59563FF8F8B58D467F300` and
`0E31D8A4833862CF4AB6459671D112F0246E736EF9F7710A05B9EE89B0F866BF`.
Matching metadata therefore does not fix manifest bytes. Both temporary
fixtures and their empty directories were removed.

Commit `74bc8b9e634538cd7fb19ad0bcea694692f3ab67` changes only
Dependencies, with 7 insertions and 5 deletions. It adds one official
source link, distinguishes declared identity from content hashes,
qualifies the identity/exact table, and corrects coupled reproducibility
inferences. All existing examples, identifiers, links, and normative
tokens remain intact.

The language-specific owner reports matching clarification in PowerShell
`Scripts.md`, `Requires-Modules.md`, and `Version-Constraints.md`, in
#260 at `cd29fcb9d2fe3247aca71ae4f137279c0e8ed1cd`. Optional
checks, version constraints, exact examples, and pinning policy remain
unchanged there. No enforcement mechanism is added. These are separately
owned changes, not additional files read or edited in this PR.

| Changed surface | Standards checked | Framework docs checked | Result
|
| --- | --- | --- | --- |
| `src\docs\Coding-Standards\Dependencies.md` | Fixed writing criteria
and the verified official GUID reference | Fixed Documentation Model |
Fixed in this PR |

</details>

<details>
<summary>Related references</summary>

- References #260

</details>
@MariusStorhaug
Marius Storhaug (MariusStorhaug) merged commit f23bb2f into main Nov 11, 2026
22 checks passed
@MariusStorhaug
Marius Storhaug (MariusStorhaug) deleted the language-standard-writing branch November 11, 2026 14:49
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.

[documentation-writing-alignment] Clarify language-specific coding standards

2 participants