Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.2.2] - 2026-07-31

### Added
- **English-language enforcement (#23)**: `Test-TierModelPrerequisites` now fails fast — before any deployment or audit change — when the environment is not English (`en-US`). Two unconditional checks run up front and are inherited by both `Deploy-TierModel.ps1` and `Audit-TierModel.ps1`:
- **Host operating system** — reads the local machine's static `InstallLanguage` LCID (`HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language`) and requires an English variant (primary language `0x09`, e.g. en-US/en-GB). Runs after the elevation check and **before** the Pester/module checks, and returns immediately on a non-English host so the operator is never asked to install modules on an unsupported OS.
- **Active Directory** — resolves three well-known groups by SID (Domain Admins `<DomainSID>-512`, Server Operators `S-1-5-32-549`, Account Operators `S-1-5-32-548`) and requires each directory `Name` to be its English value. Child-domain safe (no Enterprise/Schema Admins); names are read from AD (never client-side SID translation, which the local OS would localize into a false pass). A confirmed localized name always fails closed even if another well-known group cannot be resolved.
- Both checks emit friendly `Errors`/`Remediation` and record diagnostics in `EnvironmentSnapshot` (`HostInstallLanguage`, `HostOsEnglish`, `AdLanguageEnglish`, `AdLanguageMismatches`, …).
- **Documentation**: new `docs/language-support.md` documenting the English-only requirement, the 18 fully-localized Windows Server languages that are detected and stopped, and a future community-localization roadmap. Prerequisite notes added to the README, the quick/detailed deployment guides, and the FAQ.

### Notes
- No configuration changes are required and English (`en-US`) deployments and audits are unaffected (full suite: **1,435** automated tests passing; module scope ~91% coverage). Non-English environments are a documented, unsupported scenario — see `docs/language-support.md`.

## [1.2.1] - 2026-07-30

### Fixed
Expand Down
15 changes: 9 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,30 +31,32 @@ To get started with TierModel, please refer to our comprehensive documentation:
- **[CI/CD Integration](https://microsoft.github.io/ActiveDirectoryTierModel/ci-cd/)** - Pipeline integration and automation
- **[Test Tag Matrix](https://microsoft.github.io/ActiveDirectoryTierModel/test-tag-matrix/)** - Pester test organization
- **[Test Coverage](https://microsoft.github.io/ActiveDirectoryTierModel/test-coverage/)** - Comprehensive test coverage analysis and roadmap
- **[Language Support](https://microsoft.github.io/ActiveDirectoryTierModel/language-support/)** - Supported languages (English only today) and the localization roadmap

### 🔧 Technical Specifications
- **[Feature Specification](specs/001-tier-model-module/spec.md)** - Complete requirements and user stories
- **[Implementation Plan](specs/001-tier-model-module/plan.md)** - Technical architecture and design decisions

## 🧪 Testing & Quality Assurance

**Current Test Status: ✅ ALL TESTS PASSING** *(Last run: July 30, 2026)*
**Current Test Status: ✅ ALL TESTS PASSING** *(Last run: July 31, 2026)*

| Test Suite | Test Files | Test Cases | Status | Coverage |
|------------|-----------|------------|--------|----------|
| **Unit Tests** | 17 files | 1,137 tests | ✅ 100% Pass | **88.68%** |
| **Unit Tests** | 17 files | 1,147 tests | ✅ 100% Pass | **88.72%** |
| **Integration Tests** | 7 files | 288 tests | ✅ 100% Pass | **100%** |
| **Manual Integration Tests** | 1 file | 331 tests | ✅ 100% Pass | **100%** |
| **Total** | **25 files** | **1,756 tests** | ✅ **All Passing** | **88.68%** |
| **Total** | **25 files** | **1,766 tests** | ✅ **All Passing** | **88.72%** |

### Test Coverage Highlights
- ✅ **63/63** production files have comprehensive test coverage (5 new Windows LAPS cmdlets added in v1.2.0)
- ✅ **100%** of all automated 1,425 test cases passing
- ✅ **100%** of all automated 1,435 test cases passing
- ✅ **100%** of all manual 331 test cases passing
- ✅ **88.68%** overall docs-scope line coverage — `modules/TierModel/*` module scope ~91% (all above 80% CI gate); `Audit-TierModel.ps1` at 73.1% (new fail-fast/alignment paths need live-AD or PS<7 to exercise), `Deploy-TierModel.ps1` at 81.4%
- ✅ **88.72%** overall docs-scope line coverage — `modules/TierModel/*` module scope ~91% (all above 80% CI gate); `Audit-TierModel.ps1` at 73.1% (new fail-fast/alignment paths need live-AD or PS<7 to exercise), `Deploy-TierModel.ps1` at 81.4%
- ✅ `Get-TierModelConditionalGroupNames` — new function with full test coverage (6 unit tests)
- ✅ **New in v1.2.0:** Unit and integration test files for Windows LAPS (Unit.WinLapsAclOperations.Tests.ps1, Integration.WinLapsDeployment.Tests.ps1)
- ✅ **New in v1.2.1:** UI & reliability bug fixes (BUG-001..011) — see CHANGELOG.
- ✅ **New in v1.2.2:** English-language enforcement (#23) — fail-fast host-OS and Active Directory (en-US only) prerequisite checks (10 new unit tests); see [Language Support](https://microsoft.github.io/ActiveDirectoryTierModel/language-support/).
- ✅ Mock-based testing (no Active Directory connectivity required)
- ✅ WhatIf support validation across all deployment operations

Expand Down Expand Up @@ -138,6 +140,7 @@ cd ActiveDirectoryTierModel
- **Elevation**: Administrator privileges required
- **Domain Admin**: Membership in Domain Admins group
- **Modules**: ActiveDirectory, GroupPolicy (see `config/dependencies.json`)
- **Language**: English (`en-US`) only — both the **host OS** (the machine you run the scripts from) and **Active Directory** must be English (see [Language Support](https://microsoft.github.io/ActiveDirectoryTierModel/language-support/))

*For detailed prerequisite validation, run `Test-TierModelPrerequisites`*

Expand All @@ -150,7 +153,7 @@ cd ActiveDirectoryTierModel

---

**Version**: 1.2.1 | **License**: MIT | **Status**: ✅ Production Ready
**Version**: 1.2.2 | **License**: MIT | **Status**: ✅ Production Ready

## 🚀 Releasing

Expand Down
2 changes: 2 additions & 0 deletions docs/detailed-deployment-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ This guide provides a step-by-step deployment workflow using scoped deployment p

For a streamlined full deployment workflow, see the [Quick Deployment Guide](quick-deployment-guide.md).

> **Supported environment:** English (`en-US`) only — the **host OS** (the machine you run the scripts from) and **Active Directory** must both be English. Non-English environments are detected and stopped during prerequisite validation. See [Language Support](language-support.md).

## Overview

This detailed approach deploys Tier Model components one type at a time, following the proper dependency order:
Expand Down
7 changes: 7 additions & 0 deletions docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,12 @@ The high-level migration path is:
- **Domain Admin** membership is required for full deployment
- Scoped deployments (e.g., `-OuAclsOnly`) may work with delegated permissions — to be confirmed per use case

### What language or locale is supported?
- **English (`en-US`) only, at this time.** Both the **host** you run the scripts from (your workstation or the domain controller) and **Active Directory** must be English.
- The tool runs **two fail-fast prerequisite checks** — one for the host OS install language, one for the well-known Active Directory group names — and stops with a clear message on a non-English environment **before making any change**.
- Only 18 languages fully localize Windows Server (including AD group names); English is supported and the other 17 are detected and stopped. Language Interface Packs (e.g. Hindi, Bengali) and non-bold language packs (e.g. Arabic) keep English AD names and are unaffected.
- See [Language Support](language-support.md) for the full language list and the future localization roadmap.

### What PowerShell modules must be installed?
- `ActiveDirectory` (v1.0.1.0 or later)
- `GroupPolicy` (v1.0 or later)
Expand Down Expand Up @@ -324,6 +330,7 @@ The time and energy spent trying to minimize the Tier Model footprint would be f
- Confirm you are running as Domain Admin
- Confirm network connectivity to the `-PreferredDc` specified
- Check that all required modules are installed at the correct versions
- Confirm the **host OS** (where you run the scripts) and **Active Directory** are English (`en-US`) — non-English environments are not supported (see [Language Support](language-support.md))

### An OU was not created. Why?
- The OU may already exist (check the log for "OU already exists" INFO messages)
Expand Down
4 changes: 4 additions & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ Welcome to the Active Directory Tier Model documentation.
- **[Test Tag Matrix](test-tag-matrix.md)** - Test organization, tagging, and execution strategies
- **[Test Coverage](test-coverage.md)** - Comprehensive test coverage analysis and roadmap
- **[CI/CD Integration](ci-cd.md)** - Continuous Integration and Deployment pipelines

## Reference

- **[Language Support](language-support.md)** - Supported languages (English only today), the 18 fully-localized Windows Server languages, and the roadmap and challenges for community localization
Loading