Enforce shared Oxford spelling - #42
Conversation
Add the estate-wide en-GB-oxendict dictionary, conditional untracked cache, deterministic config generator, and Oxford-form harvester. Exercise local and HTTP freshness, offline recovery, atomic writes, config drift, and the pinned `typos` consumer through the full CI gate. Correct every spelling finding exposed in this repository while retaining narrow local exceptions for product names, identifiers, and deliberate negative fixtures.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughAdd an Oxford-based shared spelling dictionary, deterministic generation and refresh tooling, a CI spelling gate, comprehensive tests, operational documentation, and repository-wide spelling consistency edits. ChangesShared spelling rollout
Sequence Diagram(s)sequenceDiagram
participant Developer
participant Makefile
participant Rollout as typos_rollout_cli.py
participant Typos
Developer->>Makefile: run make spelling
Makefile->>Rollout: generate shared configuration
Rollout->>Typos: write typos.toml
Makefile->>Typos: check repository spelling
Typos-->>Developer: report spelling results
Possibly related issues
Poem
Caution Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional.
❌ Failed checks (1 error, 4 warnings)
✅ Passed checks (15 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Exclude generated configs, local overlays, dependency locks, and build output from harvest evidence before suffix classification. Curate 49 generic Oxford stems observed across all 96 accessible non-empty estate repositories. Split the executable CLI from the core helper to preserve the 400-line file limit, cover harvest exclusions, and correct the newly enforced foundation spellings.
There was a problem hiding this comment.
Sorry @leynos, your pull request is larger than the review limit of 150000 diff characters
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@coderabbitai review |
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 10
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@agents/subagents.yml`:
- Around line 296-297: Rewrite the sentence in the relevant gate-order
documentation to attribute cache contention prevention to sequential gate
execution, explicitly stating that uv, cargo, and .pytest_cache do not serialize
access themselves.
In `@docs/developers-guide.md`:
- Around line 302-305: Update the adjacent make ci target-list bullet to include
spelling after test, keeping it consistent with the documentation stating that
CI runs the spelling gate.
In `@Makefile`:
- Line 44: Update the Makefile ci target to remove spelling from its
prerequisites and invoke +$(MAKE) spelling in the ci recipe after check-fmt,
lint, typecheck, and test complete, ensuring spelling generation is serialized
after the existing CI checks.
In `@scripts/typos_rollout_cli.py`:
- Line 6: Expand the module docstring in scripts/typos_rollout_cli.py to explain
the CLI’s purpose, utility, and usage, including cache, network, filesystem, and
JSONL behavior. Add NumPy-style docstrings to the public cli, generate, and
harvest functions, documenting their parameters, returns, side effects, and
command behavior.
In `@scripts/typos_rollout.py`:
- Line 1: Document the public API in scripts/typos_rollout.py using NumPy-style
docstrings: expand the module docstring with usage guidance, and add structured
Parameters, Returns, and Raises sections to every public class and function,
including the interfaces around the referenced ranges; ensure parameter types,
return values, raised exceptions, and behavior are accurately described.
- Around line 342-353: harvest_repository currently filters tracked files using
only the shared dictionary, so repository-specific exclusions are ignored.
Before iterating over tracked files, load the repository’s typos.local.toml
overlay and merge it with the shared dictionary, then pass the merged dictionary
to is_harvest_excluded so excluded fixtures such as tests/test_typos_rollout.py
are skipped.
- Around line 258-272: Update _refresh_local to determine cache freshness from
the authoritative metadata recorded by _write_metadata, rather than comparing
filesystem mtimes alone. Read and validate the metadata source and mtime against
the supplied source; treat missing, malformed, or mismatched metadata as stale,
then load and atomically write the local source content and refresh metadata.
In `@skills/code-review/guides/security-issues.md`:
- Line 72: Update the remaining documentation occurrences of
“Sanitise”/“sanitise” to “Sanitize”/“sanitize” in the referenced security guide,
including the examples around the existing filename-sanitization checklist and
all additionally noted occurrences, while preserving the surrounding wording and
formatting.
In `@tests/test_typos_rollout.py`:
- Line 27: Add descriptive messages to every assertion in
tests/test_typos_rollout.py, including the assertions around spec loading at
line 27 and lines 66–69. Split the compound assertion into separate assertions
for spec and spec.loader, each with a clear failure message, and ensure all
remaining bare assertions use the assert expression, "message" form.
- Around line 319-327: The spelling gate test does not verify the required typos
configuration and exclusion flags. In
test_makefile_spelling_gate_uses_pinned_typos, add an assertion that Makefile
contains the exact command segment "--config typos.toml --force-exclude ."
alongside the existing generator and version assertions.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: edfbc55a-a12b-4b46-ab1a-9f2e56c570ec
📒 Files selected for processing (46)
.gitignoreMakefileREADME.mdadd-repositoriesagents/subagents.ymlbootstrap-commondata/typos-oxendict-base.tomldocs/adr/002-subagent-manifest-loader.mddocs/cmd-mox-users-guide.mddocs/developers-guide.mddocs/execplans/adopt-vendcurl.mddocs/srgn.mdget-github-toolinghooks/test_post_turn_quality_stop_hook.pypyproject.tomlrust-setupscripts/typos_rollout.pyscripts/typos_rollout_cli.pyskills/ansible-testing/SKILL.mdskills/biomejs/references/lint-solutions.mdskills/biomejs/references/strict-rules.mdskills/code-review/SKILL.mdskills/code-review/guides/performance-concerns.mdskills/code-review/guides/security-issues.mdskills/code-review/language-specific.mdskills/code-review/templates/review-prompt.mdskills/codescene-health-rules/SKILL.mdskills/execplans/SKILL.mdskills/firecrawl/SKILL.mdskills/grepai/SKILL.mdskills/hexagonal-architecture/SKILL.mdskills/hexagonal-architecture/references/language-specific.mdskills/implementation-postmortem/references/mvc-action-template.mdskills/logisphere-design-review/SKILL.mdskills/logisphere-design-review/references/expert-profiles.mdskills/logisphere-experts/SKILL.mdskills/logisphere-experts/references/expert-profiles.mdskills/odw-authoring/SKILL.mdskills/odw-supervision/SKILL.mdskills/odw-testing/SKILL.mdskills/sem/SKILL.mdskills/zod4-typescript/SKILL.mdtests/test_bootstrap_common.pytests/test_typos_rollout.pytypos.local.tomltypos.toml
Key local cache freshness to its authoritative source and merge local exclusions before harvesting. Serialize spelling generation after tests, expand the behavioural coverage, and document the shared-base contract.
All ten findings were addressed in c0bc7c5, the threads are resolved, and the replacement GitHub and local gates are green.
Summary
This branch establishes the shared en-GB-oxendict spelling foundation for the
leynoscode estate. It adds a curated global dictionary, conditionallyrefreshes an untracked local cache only when the authoritative copy is newer,
merges narrow repository overlays, generates deterministic
typosconfiguration, harvests both Oxford and plain-British forms, and enforces the
result through the repository's CI gate.
The base was curated from exclusion-aware harvests of all 96 non-empty,
accessible repositories in the estate inventory. Generated spelling configs,
local overlays, lockfiles and build output were removed before contextual
classification; 49 observed generic Oxford stems joined the original
reference set. The branch also corrects every spelling finding exposed in this
repository. Product names, identifiers, configuration keys and deliberate
negative test fixtures remain unchanged through narrow local exclusions rather
than global exceptions.
No repository roadmap task, implementation ExecPlan, or open issue was found
for this foundation work. Issue #28 is already satisfied on
mainand is notclosed by this branch.
Review walkthrough
and architecture decision
to review the estate-wide Oxford policy and its trade-offs.
for source-aware local and HTTP refresh, atomic writes, deterministic
generation, dictionary merging, local harvest exclusions and evidence
collection.
for the directly runnable
generateandharvestcommands.for property and regression coverage of freshness, source identity, offline
recovery, conflicts, harvest exclusions, TOML validity, config drift and the
real pinned consumer.
and local overlay
for the serialized CI entrypoint and deliberately narrow repository
exceptions.
and users' guide
for the curation and consumer workflows.
Validation
make ci: passed; 126 tests, config generation, and the pinned spellinggate are green.
shellcheck -x add-repositories bootstrap-common get-github-tooling rust-setup:passed.
mbake validate Makefile: passed.git diff --check: passed.Lines evidence under the rollout workspace.
tests, prose and comments; no public or serialized application interface
changed.
Notes
All ten CodeRabbit findings were addressed in
c0bc7c5, including the twocorrectness defects in source-aware cache validity and local harvest
exclusions. The corresponding threads have responses and are resolved.
The untracked cache files are ignored, while the generated
typos.tomlremainstracked and protected by a byte-for-byte drift test. The shared base accepts
only estate-wide vocabulary; repository-specific terms stay in local overlays
so a false positive in one project cannot weaken enforcement elsewhere.