Skip to content

🐛 fix: the wiki's guards read every language a page is written in - #886

Merged
edgarmesquita merged 5 commits into
mainfrom
fix/the-wiki-guards-read-every-language
Oct 13, 2026
Merged

edgarmesquita merged 5 commits into
mainfrom
fix/the-wiki-guards-read-every-language

Conversation

@edgarmesquita

@edgarmesquita edgarmesquita commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Closes #885

What

Before: the wiki's guards read two languages. WikiVocabularyTests allowed a retired spelling by page file, one entry per language, so the Spanish, French and German copies of PackageArchitecture, which the wiki's master gained in 7eb1524, failed the test job of every pull request whose wiki branch is master. WikiDiagnosticsTests and WikiShellRealizationsTests read the English and the Portuguese page by name, so a translation could drift with nothing to see. The working agreement said a wiki page changes in English and Portuguese.

After: an allowance names the English page and covers every copy of it, and is stale only when no copy carries the word. The Diagnostics and Capabilities guards read every language the page is written in, the English and the Portuguese page still required, and the Capabilities guard knows the word for an unavailable contract in all five languages and fails on a language whose word it does not know rather than leave it unread. CLAUDE.md, AGENTS.md and the pull request template say a wiki page changes in every language it is written in, and a new page is written in all five.

For a developer who uses the SDK, nothing changes.

How: WikiClone.Copies(page) answers every copy of a page with its language, and WikiClone.PageOf(path) answers the English page a copy translates. The three guards read through them.

Why

Every open pull request without a wiki branch of its own reads the wiki's master, and since 7eb1524 its test job fails on PackageArchitecture-de.md, -es.md and -fr.md, which tell the same history of eQuantic.UI.Core the English page is allowed to tell.

OpenSpec

openspec/changes/archive/2026-10-13-the-wiki-reads-in-five-languages/, archived. It modifies the working-agreement requirement "The wiki's master moves with main" (every language a page is written in, a new page in all five) and adds "A docs guard reads every language a page is written in".

Proof

  • Against the wiki's master at 7eb1524, TheWikiSpeaksTheTreesCurrentNames fails on main and passes on this branch.
  • A probe of the wiki made each guard fail on a translation alone: eQuantic.UI.Core added to a German page, the word removed from every copy of Icons (its allowance then stale), a German Diagnostics page without the EQ2004 row, and a French Capabilities page in words the guard does not know for French. The probe was discarded afterwards.
  • The Capabilities guard knows the word for an unavailable contract in all five languages, as the Spanish, French and German tables ✨ feat: a link opens the app on a phone #879 brings write it (nicht verfügbar, no disponible, indisponible). With those three pages in the wiki and the cells of main's shells, the guard passes, and it fails on each language without its word.
  • eQuantic.UI.Web.Tests passes against the wiki's master (1,047), and WorkflowSectionTests holds the two copies of the Workflow section equal.
  • ./scripts/check-openspec.sh passes (57 items), and ./scripts/check-commit-messages.sh reads the three commits clean.

Checklist

  • dotnet test on the affected test projects, and dotnet build src/eQuantic.UI.Runtime -t:TestRuntime if TypeScript changed (the embedded Bun runs tsc, then vitest run)
  • This PR's checks include a run named CI with jobs in it (build-packages, test (ubuntu-latest), test (windows-latest), openspec, session-start, wiki-checkout)
  • ./scripts/check-openspec.sh passes: the OpenSpec change validates strictly, and it is archived before the merge
  • dotnet build samples/DefaultUIDashboard: not affected, the change is to tests and documents
  • A broken contract has a line in the migration notes: none is broken
  • The documentation changed with the behaviour: CLAUDE.md, AGENTS.md and the pull request template here; the wiki does not change
  • One docs/LEDGER.md line for this event, citing the issue
  • The diff reviewed by its author before the PR opened; every Copilot thread answered and resolved: Copilot's first round found nothing
  • No "widget" in prose; the project's word is component

The wiki reads in English, Portuguese, Spanish, French and German, and its guards knew two. An allowance named one page file, so the German, Spanish and French copies of PackageArchitecture, which tell the history their English page is allowed to tell, failed every pull request reading the wiki's master. An allowance now covers every copy of its page, and is stale only when no copy carries the word. The Diagnostics and Capabilities guards read every copy of their page, English and Portuguese still named as the contract, and the Capabilities one fails on a language it has no word for.
The working agreement, the pull request template and the working-agreement spec name the wiki's five languages, and a new page is written in all five.
Copilot AI balanced review requested due to automatic review settings October 13, 2026 15:02

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.

🟢 Approval recommended

The implementation consistently satisfies issue #885 and no unresolved defects were found.

0 open findings

What changed in this PR

Corrige os guardas da wiki para validar todas as traduções disponíveis, conforme o issue #885.

Changes:

  • Adiciona descoberta e normalização das traduções.
  • Valida Diagnostics, Capabilities e vocabulário em todos os idiomas.
  • Atualiza o acordo de trabalho e a especificação OpenSpec.
File Description
tests/​eQuantic.UI.Web.Tests/​WikiClone.cs Adiciona helpers para cópias traduzidas.
tests/​eQuantic.UI.Web.Tests/​WikiVocabularyTests.cs Compartilha allowances entre traduções.
tests/​eQuantic.UI.Web.Tests/​WikiDiagnosticsTests.cs Valida todas as páginas Diagnostics.
tests/​eQuantic.UI.Web.Tests/​WikiShellRealizationsTests.cs Valida Capabilities por idioma.
openspec/​specs/​working-agreement/​spec.md Registra os novos requisitos.
openspec/​changes/​archive/​2026-10-13-the-wiki-reads-in-five-languages/​tasks.md Registra as tarefas concluídas.
openspec/​changes/​archive/​2026-10-13-the-wiki-reads-in-five-languages/​specs/​working-agreement/​spec.md Arquiva o delta da especificação.
openspec/​changes/​archive/​2026-10-13-the-wiki-reads-in-five-languages/​proposal.md Documenta motivação e escopo.
openspec/​changes/​archive/​2026-10-13-the-wiki-reads-in-five-languages/​.openspec.yaml Define metadados da mudança.
docs/​LEDGER.md Registra o evento e o issue.
CLAUDE.md Atualiza o acordo para cinco idiomas.
AGENTS.md Mantém o acordo sincronizado.
.github/​pull_request_template.md Atualiza o checklist de traduções.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

…ract in all five languages

Spanish, French and German copies of the Capabilities page are on their way with #879, and the guard failed on a language whose word it did not know. It knows each one now, as the translated tables write it: nicht verfügbar, no disponible, indisponible.
Main gained #876 after this branch was cut, and both added an entry at the end of the ledger's
chronology. The entry of #876 keeps its place and this branch's follows it. Nothing else conflicted.
Main gained #889 after the last merge, and both added an entry at the end of the ledger's
chronology. The entries of #889 keep their place and this branch's follows them. Nothing else
conflicted.
@edgarmesquita
edgarmesquita merged commit b1567b1 into main Oct 13, 2026
19 checks passed
edgarmesquita pushed a commit that referenced this pull request Oct 13, 2026
Main gained #886, whose entry is the chronology's last. This branch's entry stays where the merge
put it, one place up: an entry at the chronology's end is the one point every other pull request
writes, and what conflicted here twice (#892). Nothing else conflicted.
edgarmesquita pushed a commit that referenced this pull request Oct 13, 2026
Main gained #886. Both wrote the same two places: the pull request template, where each changed
one of two lines side by side, and the end of the working agreement's spec, where each added a
requirement. Both sides are kept, main's requirement first. The entry of #886 was written into the
chronology before this rule, so the comparison failed on it as it should (187 entries where the
record had 186), and the chronology is recorded as it is now.
@edgarmesquita edgarmesquita mentioned this pull request Oct 13, 2026
7 of 8 tasks
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.

The wiki's guards fail every pull request once the wiki reads in five languages

3 participants