fix(docs): restore Norwegian Bokmål diacritical marks across nb/ locale - #384
Merged
Conversation
Deploying archgate-cli with
|
| Latest commit: |
ef8c302
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://41cfd0e5.archgate-cli.pages.dev |
| Branch Preview URL: | https://claude-hungry-mclaren-839ebc.archgate-cli.pages.dev |
Contributor
Code Coverage
Full HTML report available in workflow artifacts. Per-directory breakdown
|
Norwegian translations under docs/src/content/docs/nb/ had systematically missing diacritical marks (å, ø, æ) in three patterns: stripped entirely (e.g. "monster" for "mønster"), ASCII approximations (e.g. "aa" for "å"), and HTML entities (e.g. "å" for "å"). This violates GEN-002 which mandates correct Norwegian characters. Fixed all ~500+ occurrences across 35 files covering reference pages, guides, examples, and case studies. Signed-off-by: Rhuan Barreto <rhuan@barreto.work>
rhuanbarreto
force-pushed
the
claude/hungry-mclaren-839ebc
branch
from
May 29, 2026 21:33
c320253 to
e8e1356
Compare
Restore 4 missing Norwegian diacritical marks missed in the initial pass: - Kjor → Kjør, systemmiljo → systemmiljø (cli/index.mdx) - Foreslatt → Foreslått (×2, rule-api.mdx) Signed-off-by: Rhuan Barreto <rhuan@barreto.work>
Merged
rhuanbarreto
pushed a commit
that referenced
this pull request
May 30, 2026
# archgate ## [0.42.0](v0.41.1...v0.42.0) (2026-05-30) ### Features * **engine:** add inline suppression via archgate-ignore comments ([#383](#383)) ([1240860](1240860)) ### Bug Fixes * **deps:** resolve dependency dashboard deprecation and lookup warnings ([#387](#387)) ([18eae44](18eae44)), closes [#107](#107) * **docs:** restore Norwegian Bokmål diacritical marks across nb/ locale ([#384](#384)) ([ef98b39](ef98b39)) * **shims,docs:** resolve CodeQL and AI code quality findings ([#388](#388)) ([63ec93f](63ec93f)) --- This PR was generated with [simple-release](https://github.com/TrigenSoftware/simple-release). <details> <summary>📄 Cheatsheet</summary> <br> You can configure the bot's behavior through a pull request comment using the `!simple-release/set-options` command. ### Command Format ````md !simple-release/set-options ```json { "bump": {}, "publish": {} } ``` ```` ### Useful Parameters #### Bump | Parameter | Type | Description | |-----------|------|-------------| | `version` | `string` | Force set specific version | | `as` | `'major' \| 'minor' \| 'patch' \| 'prerelease'` | Release type | | `prerelease` | `string` | Pre-release identifier (e.g., "alpha", "beta") | | `firstRelease` | `boolean` | Whether this is the first release | | `skip` | `boolean` | Skip version bump | | `byProject` | `Record<string, object>` | Per-project bump options for monorepos | #### Publish | Parameter | Type | Description | |-----------|------|-------------| | `skip` | `boolean` | Skip publishing | | `access` | `'public' \| 'restricted'` | Package access level | | `tag` | `string` | Tag for npm publication | ### Usage Examples #### Force specific version ````md !simple-release/set-options ```json { "bump": { "version": "2.0.0" } } ``` ```` #### Force major bump ````md !simple-release/set-options ```json { "bump": { "as": "major" } } ``` ```` #### Create alpha pre-release ````md !simple-release/set-options ```json { "bump": { "prerelease": "alpha" } } ``` ```` #### Publish with specific access and tag ````md !simple-release/set-options ```json { "bump": { "prerelease": "beta" }, "publish": { "access": "public", "tag": "beta" } } ``` ```` ### Access Restrictions The command can only be used by users with permissions: - repository owner - organization member - collaborator ### Notes - The last comment with `!simple-release/set-options` command takes priority - JSON must be valid, otherwise the command will be ignored - Parameters apply only to the current release execution - The command can be updated by editing the comment or adding a new one </details> <!-- Please do not edit this comment. simple-release-pull-request: true simple-release-branch-from: release simple-release-branch-to: main --> Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Merged
rhuanbarreto
added a commit
that referenced
this pull request
Jul 26, 2026
…ity (#523) Closes #516. ## The gap was live, not hypothetical GEN-002 has always required correct diacritics — *"DO use correct diacritical marks in Portuguese — `não` not `nao`, `código` not `codigo`"* — but nothing enforced it. The companion rules checked only **structure**: page parity, translation drift, link prefixes. So six `pt-br` pages sat in `main` with their diacritics stripped, plus a seventh with a corrupted frontmatter `description`. `nb` hit the identical failure in #384: ~500 occurrences across 35 files, fixed in two manual passes, where the second pass caught four cases the first missed. Manual review is not a reliable detector for this. ## Content Diacritics restored across seven `pt-br/examples` pages — prose, headings, and frontmatter descriptions. Verified mechanically: **0 stripped forms remain**, and **fenced code blocks are byte-identical to `main` in all seven files**, so no identifier, command, or path was touched. ## Rules Two additions to `GEN-002-docs-i18n.rules.ts`, both `error`: - **`i18n-encoding-corruption`** — accented characters written as HTML entities (`å`, `ç`) or as double-encoded UTF-8. Detection requires a `0xC2`/`0xC3` lead byte **followed by** a `0x80`–`0xBF` continuation byte. A bare lead-byte scan would flag legitimate uppercase Portuguese, where `Ã` precedes an ASCII letter — `ÃO` already occurs twice in this tree. - **`i18n-diacritic-density`** — accented characters per 1000 prose letters per locale, ignoring fenced and inline code. Thresholds come from measuring the corpus, not from taste: | | healthy minimum | stripped pages | threshold | |---|---|---|---| | `nb` | 5.9 / 1000 | — | 2 | | `pt-br` | 15.2 / 1000 | 0.0–1.1 | 5 | **A whole-file "has at least one diacritic" check was tried and rejected.** Measured against the six corrupt files it caught **one**: `wrapper-enforcement.mdx` was fully stripped in prose but contained `Não` inside a code sample, which defeats it. Density caught five of six, with a 14× gap between the bands. Accented characters in the rules file are numeric code-point sets, never literals, so the check cannot be broken by the corruption it detects. ## Documented limits `i18n-diacritic-density` is a bulk-stripping detector, not a spell checker. It does **not** catch isolated stripped words in otherwise-correct prose — `max-file-length.mdx` scored a healthy 26.6 while its frontmatter was stripped, and only a word-level scan found it — and it skips pages under 200 prose letters. Both limits are written into GEN-002's Compliance section as review responsibilities rather than left implicit. ## Verification `bun run validate` green: 1675 tests, 49/49 rules, build clean. Fire-tested both directions: | Case | Result | |---|---| | Stripped page restored from `main` | density rule fires, names the file | | `å` injected | caught, correct line | | Double-encoded `ø` injected | caught, correct line | | `VALIDAÇÃO COMPLETA` in `pt-br` | not flagged | ## Review request **Please read the Portuguese as a native speaker.** The automated checks count accents; they cannot tell a correct accent from a confidently wrong one. `à` versus `a` (crasis) and `é` versus `e` are the places to look — I added several of each. An orthography review agent returned PASS here, but its per-word annotations were fabricated, so its verdict carries no weight. --------- Signed-off-by: Rhuan Barreto <rhuan@barreto.work>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/src/content/docs/nb/monster→mønster,a→å)aa→å,oe→ø)å/ø/æconverted to literal UTF-8 charactersMotivation
GEN-002 mandates correct Norwegian characters (æ, ø, å) in
nb/translations. Pre-existing content had systematically broken diacriticals across reference pages, guides, examples, and case studies.Test plan
bun run lint— passbun run typecheck— passbun run format:check— pass (oxfmt applied to all MDX files)bun run test— 1218 pass, 19 skipbun run cli check— 39/39 rules passbun run cli check --adr GEN-002— 3/3 rules pass (page parity, locale links, translation drift)bun run build:check— pass