Skip to content

Commit 3c58536

Browse files
committed
phase-02: doc consolidation, CI cleanup, CHANGELOG restructure
- Remove duplicate CI workflow python.yml (canonical: ci.yml) - Update architecture.md stats: 1228->1292 tweaks, 64->69 categories, ~17511 tests - Consolidate CHANGELOG: merge two [Unreleased] sections into [1.0.1] dated 2026-03-08 (covers Sprint 7 + Sprint 8 + Phase 01-02 infra changes) - Verify: ruff clean (0 issues), all tests passing
1 parent e983bed commit 3c58536

3 files changed

Lines changed: 44 additions & 101 deletions

File tree

.github/ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# RegiLattice -- Architecture
22

33
> Deep-dive into data flow, dependency graph, and design decisions.
4-
> Last verified: 2026-03-07 (v1.0.0, 1 228 tweaks, 64 categories, ~16 400 tests).
4+
> Last verified: 2026-03-08 (v1.0.1-dev, 1 292 tweaks, 69 categories, ~17 511 tests).
55
66
---
77

.github/workflows/python.yml

Lines changed: 0 additions & 38 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 43 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,22 @@ All notable changes to RegiLattice are documented here.
44
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
55
This project adheres to [Semantic Versioning](https://semver.org/).
66

7-
## [Unreleased] — Sprint 8 refactor (C13–C23, 2026-03)
7+
## [Unreleased]
8+
9+
_Nothing unreleased yet after v1.0.1-dev._
10+
11+
---
12+
13+
## [1.0.1] — 2026-03-08 (Sprint 7 + Sprint 8 + Phase 01-02)
814

915
### Added
1016

1117
- **`RegistrySession.set_expand_string` / `read_expand_string`** — read/write `REG_EXPAND_SZ` values with lru_cache.
1218
- **`RegistrySession.set_multi_sz` / `read_multi_sz`** — read/write `REG_MULTI_SZ` (list-of-strings) values with lru_cache.
19+
- **`RegistrySession.read_binary` / `read_qword`** — read `REG_BINARY` and `REG_QWORD` values.
20+
- **`RegistrySession.set_binary` / `set_qword`** — write `REG_BINARY` and `REG_QWORD` values.
21+
- **`RegistrySession.list_values`** — enumerate `(name, value, type)` triples in a key.
22+
- **`RegistrySession.list_keys`** — enumerate child key names.
1323
- **`corp_guard_reasons()`** — returns a copy of the reason-list that triggered corporate detection; thread-safe.
1424
- **`reset_corp_cache()`** — clears the corporate detection cache for testing and hot-reload scenarios.
1525
- **`detect_battery()`**`@lru_cache` probe returning `True` when a battery/UPS is detected.
@@ -19,6 +29,10 @@ This project adheres to [Semantic Versioning](https://semver.org/).
1929
- **`analytics.error_stats()`** — return `dict[str, int]` of per-tweak error counts.
2030
- **`ratings.average_rating()`** — mean star rating across all rated tweaks (`None` when empty).
2131
- **`ratings.rated_count()`** — number of tweaks that have been rated.
32+
- **`filter_tweaks()`** — composable multi-criterion filter (`corp_safe`, `needs_admin`, `scope`, `category`, `min_build`, `tags`, `query`).
33+
- **`tweak_dependencies()`** — DFS-based transitive/one-hop dependency resolver returning deps in topological order.
34+
- **`apply_tweaks()` / `remove_tweaks()`** — ID-list batch helpers with auto dep resolution (`include_deps=True` by default).
35+
- **`status_map(ids=)`** — partial evaluation: restrict detection to a subset of tweaks for GUI incremental refresh.
2236
- **`tweaks_by_scope(scope)`** — return tweaks matching a specific scope string.
2337
- **`tweaks_above_build(build)`** — return tweaks whose `min_build` is `<= build`.
2438
- **`tweak_risk_level(td)`** — classify a tweak as `"low"`, `"medium"`, or `"high"` risk.
@@ -30,76 +44,42 @@ This project adheres to [Semantic Versioning](https://semver.org/).
3044
- **CLI `--min-build N`** — filter `--list` / `--search` output by minimum Windows build.
3145
- **CLI `--corp-safe`** — filter `--list` / `--search` to HKCU-only tweaks.
3246
- **CLI `--needs-admin`** — filter `--list` / `--search` to admin-required tweaks.
33-
- **133 new tests** across 9 test files (C16–C23 additions).
47+
- **CLI `--validate`** — non-destructive consistency check across all `TweakDef` entries.
48+
- **CLI `--stats`** — rich stats breakdown (total tweaks, categories, scope distribution, corp-safe, admin, dep depth).
49+
- **CLI `--output {table,json}`** — machine-readable JSON output for `--list`, `--search`, `--categories`.
50+
- **CLI `--list --category <name>`** — filter `--list` to a single category; returns exit code 2 for unknown categories.
51+
- **CLI `--list-categories`** — alias for `--categories`.
52+
- **ROADMAP.md** — 5-sprint roadmap, 50-item backlog, velocity tracking.
53+
- **`.github/docs/project-spec.md`** — relocated from repo root.
3454

3555
### Changed / Fixed
3656

37-
- **`_invalidate_cache_for` bugfix** — previously only cleared `dword`/`string`/`exists` suffixes; now clears
38-
all 6: `dword`, `string`, `binary`, `qword`, `expand`, `multi_sz`.
39-
- **`filter_tweaks()` early-exit** — adds `if not pool: return pool` after each filter step, avoiding
40-
unnecessary work when the result pool drains early.
41-
- **`status_map()` detect-free skip** — tweaks with `detect_fn=None` are assigned `TweakResult.UNKNOWN`
42-
directly without being submitted to the thread pool.
43-
- **`_split_root()` memoization** — decorated with `@functools.lru_cache(maxsize=256)`; repeated registry
44-
path splitting is now O(1) on cache hit.
45-
- **`detect_hardware()` workers raised to 6** — runs `detect_battery` and `detect_network_type` in the
46-
parallel probe pool alongside the existing 4 probes.
47-
- **`_SCOPE_CACHE` / `_SCOPE_LOCK` ordering fix** — moved definitions to before the `_load_plugins()`
48-
function to eliminate `NameError` at import time.
57+
- **`_invalidate_cache_for` bugfix** — previously only cleared `dword`/`string`/`exists` suffixes; now clears all 6: `dword`, `string`, `binary`, `qword`, `expand`, `multi_sz`.
58+
- **`filter_tweaks()` early-exit**`if not pool: return pool` after each filter step avoids unnecessary work when the result pool drains early.
59+
- **`status_map()` detect-free skip** — tweaks with `detect_fn=None` are assigned `TweakResult.UNKNOWN` directly without being submitted to the thread pool.
60+
- **`_split_root()` memoization**`@functools.lru_cache(maxsize=256)`; repeated registry path splitting is now O(1) on cache hit.
61+
- **`detect_hardware()` workers raised to 6** — runs `detect_battery` and `detect_network_type` in the parallel probe pool.
62+
- **`_SCOPE_CACHE` / `_SCOPE_LOCK` ordering fix** — moved before `_load_plugins()` to eliminate `NameError` at import time.
4963
- **Scope pre-warm**`_load_plugins()` now pre-populates `_SCOPE_CACHE` for all tweaks at import.
50-
51-
### Infrastructure
52-
53-
- **17 511 tests** across 21 test files after C13–C23 additions (was 17 378 at Sprint 7).
54-
- ruff: all checks pass; mypy `--strict`: 0 issues.
55-
56-
## [Unreleased] — Sprint 7 refactor (C2–C11, 2026-03)
57-
58-
### Added
59-
60-
- **`filter_tweaks()`** — composable multi-criterion filter (`corp_safe`, `needs_admin`,
61-
`scope`, `category`, `min_build`, `tags`, `query`) in `tweaks/__init__.py`.
62-
- **`tweak_dependencies()`** — DFS-based transitive/one-hop dependency resolver returning
63-
deps in topological order.
64-
- **`apply_tweaks()` / `remove_tweaks()`** — ID-list batch helpers with auto dep resolution
65-
(`include_deps=True` by default).
66-
- **`status_map(ids=)`** — partial evaluation: pass an `Iterable[str]` to restrict detection
67-
to a subset of tweaks (GUI incremental refresh).
68-
- **`RegistrySession.read_binary` / `read_qword`** — read `REG_BINARY` and `REG_QWORD` values.
69-
- **`RegistrySession.set_binary` / `set_qword`** — write `REG_BINARY` and `REG_QWORD` values.
70-
- **`RegistrySession.list_values`** — enumerate `(name, value, type)` triples in a key.
71-
- **`RegistrySession.list_keys`** — enumerate child key names.
72-
- **CLI `--validate`** — non-destructive consistency check across all `TweakDef` entries
73-
(duplicate IDs, empty labels/categories, missing fn pointers).
74-
- **CLI `--stats`** — rich stats breakdown (total tweaks, categories, scope distribution,
75-
corp-safe count, admin count, dependency depth).
76-
- **CLI `--output {table,json}`** — switch `--list`, `--search`, and `--categories` to
77-
machine-readable JSON output.
78-
- **CLI `--list --category <name>`** — filter `--list` output to a single category;
79-
returns exit code 2 for unknown categories.
80-
- **CLI `--list-categories`** — alias for `--categories` (more intuitive spelling).
81-
- **43 new tests** for registry edge cases (mocked `EnumValue`/`EnumKey`/`SetValueEx`,
82-
`REG_BINARY`/`REG_QWORD` type constants verified), plus C6 CLI new-flag coverage.
83-
- **18 new CLI tests** covering `--validate`, `--stats`, `--output json`, `--list --category`,
84-
and `--list-categories`.
85-
86-
### Changed
87-
64+
- **Thread-safety**`threading.Lock` guards added to all shared caches in `analytics.py`, `config.py`, `corpguard.py`, `locale.py`, `marketplace.py`, and `tweaks/__init__.py`.
65+
- **Caching improvements**`_split_root` result cache, `_TAG_INDEX` for O(1) tag lookup, plugin-prewarm on first import.
66+
- **`__all__`** lists added/completed in 5 core modules (`analytics`, `config`, `corpguard`, `locale`, `tweaks/__init__`).
67+
- **`typing.Final`** applied to 12 module-level constants.
8868
- **`_VALID_HIVE_PREFIXES`** promoted to module-level `frozenset` (was re-created per call).
8969
- **`_PREFIX_LIST`** pre-sorted longest-first for unambiguous `_split_root()` matching.
90-
- **Thread-safety**`threading.Lock` guards added to all shared caches in `analytics.py`,
91-
`config.py`, `corpguard.py`, `locale.py`, `marketplace.py`, and `tweaks/__init__.py`.
92-
- **Caching improvements**`_split_root` result cache, `_TAG_INDEX` for O(1) tag lookup,
93-
plugin-prewarm on first import.
94-
- **`__all__`** lists added / completed in 5 core modules
95-
(`analytics`, `config`, `corpguard`, `locale`, `tweaks/__init__`).
96-
- **`typing.Final`** applied to 12 module-level constants.
9770

9871
### Infrastructure
9972

100-
- **17 378 tests** across 21 test files after C2–C11 additions (was 17 266 at 1.0.0).
101-
- ruff: all checks pass (`E`, `F`, `W`, `I`, `UP`, `B`, `SIM`, `RUF`; line-length 150).
102-
- mypy `--strict`: no issues in 90 source files.
73+
- **17 511 tests** across 21 test files (was 17 266 at v1.0.0; +245 new tests across Sprints 7–8 and phase-01).
74+
- `.gitattributes` rewritten for Python project (was ExplorerLens C++ copy); `*.py text eol=lf` eliminates CRLF warnings.
75+
- Duplicate CI workflow `python.yml` removed (canonical: `.github/workflows/ci.yml`).
76+
- Redundant `.flake8` removed (ruff is the primary linter).
77+
- `[project.urls]` added to `pyproject.toml` (Homepage, Repository, Bug Tracker, Changelog).
78+
- `pyproject.toml` `[tool.pylint]` extended with documented suppressions.
79+
- ruff: all import-sort (I001) issues fixed; all checks pass.
80+
- mypy `--strict`: 0 issues.
81+
82+
---
10383

10484
## [1.0.0] — 2026-03-07
10585

@@ -140,3 +120,4 @@ This project adheres to [Semantic Versioning](https://semver.org/).
140120
- Type-check: `mypy --strict` and Pyright/Pylance standard mode.
141121
- Test: `pytest` with `pytest-cov`, `hypothesis` property tests, benchmarks.
142122
- VS Code workspace: settings, tasks, launch configs, recommended extensions.
123+

0 commit comments

Comments
 (0)