Skip to content

docs(style-guide): settle closing names, sentence caps, and the date rule - #2630

Open
bruno-andrade-azion wants to merge 9 commits into
mainfrom
docs/mm-16264-style-guide-coherence
Open

bruno-andrade-azion wants to merge 9 commits into
mainfrom
docs/mm-16264-style-guide-coherence

Conversation

@bruno-andrade-azion

@bruno-andrade-azion bruno-andrade-azion commented Nov 10, 2026 •

Copy link
Copy Markdown
Contributor

What & why

Related issue: MM-16264
Pages affected: 25 style guide pages under apps/docs/src/content/docs/en/pages/style-guide/ and 25 under apps/docs/src/content/docs/pt-br/pages/guia-de-estilo/. No permalink, frontmatter, or navigation change.

The style guide contradicted itself, and in places the code, on four rules: the hub table, the closing section, the sentence caps, and where a date may appear. This PR settles each rule once, points the other pages at it, and brings every sentence of the guide under 30 words in both languages.

Hub table. Already consistent on main since #2600: the guide, its pt twins, and ProductGuidesSection agree on name, type, and last updated, sorted alphabetically by navigation label (src/nav/resolve.ts:934). The one gap left was the video rows: the table also lists the YouTube videos that src/nav/videos.json tags with the section, with an empty date. Components now says so.

Closing sections. 352 en pages end with ## Related resources, but the guide's own 13 content-type pages ended with ## Related (pt: ## Relacionados). They now use the canonical name. No link pointed at the old anchors. Choose a content type now names the use case's closing, ## Guides in this use case, which the use-case template and all 27 en and 27 pt use-case pages already use. Bilingual pages lists its fixed pt form, ## Guias deste caso de uso.

Sentence caps. The use-case page set Descriptive, 20 words. Sentence structure gave Descriptive 25. Choose a content type made a use case a How-to, which is Procedural, 20. The use-case page itself calls a use case "theory, not a procedure": it explains a design, and every step lives in the guides it links. A use case now takes the explanation base form, with the descriptive 25-word cap. The cap table in Sentence structure lists every page kind with its base form, mode, and cap, including the use case, the changelog, and the navigation hub. Choose a content type, the use-case register, and the multi-resource comparison say the same in both languages. The comparison paragraph also said a use case "configures it, and proves it works"; it now describes what a use-case page holds. Three more sentences said the page builds its design: the absent-kinds list in Choose a content type, the placement list in Information architecture, and the When to use list in Architecture pages. They now say it explains the design and links the guides that build it. The docs-writer skill still applies How-to and 20 words to a use case (references/simplified-technical-english.md), so it needs the same change; it lives outside this repository.

Long sentences. Every sentence over 30 words is split: 47 en sentences and their pt twins, plus 17 pt sentences whose en twin was already 30 words or fewer. The split keeps the meaning, including whether a list is complete or a set of examples. Two run-on lists in Information architecture became bullet lists: the nested Platform Resources by parent, and where a nested resource is documented. The count comes from a script that skips frontmatter, code fences, tables, and JSX lines, counts inline code as one word, and treats a bold lead-in as its own sentence.

Sentences main en main pt-br This PR en This PR pt-br
Over 30 words 47 63 0 0
Over 25 words 104 161 58 114

Date rule. Five places disagreed. Numbers and units and Changelog said dates appear only in changelogs. Word choice exempted generated dates. Navigation hubs called the hub "the one place" a date may appear outside a changelog, while every page header renders a generated Last updated date (src/components/PageContent/PageContent.astro:42). Terminology allows dated agreements, and Components keeps the API v3 shutdown date in versionDeprecated. Numbers and units now holds the one list of where a date belongs, and Word choice, Changelog, and Navigation hubs point to it. The guide's own prose also loses its two dates: the ASD-STE100 issue date in Sentence structure, which used the day-first order the guide bans, and the example year in Terminology.

Changelog tags. The Changelog page listed tags as optional. pnpm lint:changelog (#2634) and CONTRIBUTING.md require exactly one tag on a new entry, from a closed list. The page now requires one tag, points to that list, and says a new tag joins the list and the check in the same pull request. A second entry on the same date keys its anchor on the tag, as CONTRIBUTING.md says. The archive example also loses its years ("from 2016 to 2021"): it now says the archive holds the entries from before the current release notes, which start in January 2022. Word choice now limits its no-date sentence to hand-written prose, so it no longer contradicts the list of exceptions in Numbers and units.

Merged with main. #2636 (group hubs) changed the same paragraphs of Information architecture and Navigation hubs. The merge keeps its facts inside the split sentences: a group hub for a nested Platform Resource with no Overview, a Quickstart group with a group hub, Shape 3, and the group-hub bullets. The "one place the guide allows a date" sentence that #2636 kept takes this PR's wording. main had also added sentences over 30 words to Reference, Code, and Headings (en and pt-br), which are split here. The Long sentences table was measured before the merge. After the split, a word count over the merged guide finds no sentence over 30 words that this branch did not already pass before the merge.

DocUpdate anchor. Components said label is the anchor. The id does fall back to the slugified label, but the right rail lists only entries that pass anchor (src/util/docUpdateHeadings.ts:20), which is why Changelog requires it. The example now passes anchor, and the bullet says to always pass it.

How I checked it:

  • docs_gate.py --check on the 47 files: no new finding. The 3 pt description length findings exist on main.
  • rewrite-check.py on each file against main: 0 measured values and 0 link targets dropped in all 47.
  • linkcheck.py: 0 broken links, 0 cross-language links, every namespace paired. The URL taught inside code at docs-as-code.mdx:60 (en and pt) fails the same way on main.
  • The 8 new or renamed fragments resolve in the built HTML, for example #format-a-date-only-where-a-date-belongs and #recursos-relacionados.
  • Greps: no ## Related or ## Relacionados closing left, every register line matches the cap table, no page says dates belong only in changelogs, and no month or year is left in guide prose outside code.
  • pnpm build:local after the rebase on main: 2092 pages built, frontmatter check clean.
  • After merging main (63993ebc7) and the changelog-tags commit: docs_gate.py --check on the 50 files finds only the 3 pt description lengths that exist on main; linkcheck.py finds 0 broken links and every namespace paired; pnpm build:local built 2156 pages with the frontmatter check clean, and the new Changelog text and the #format-a-date-only-where-a-date-belongs fragment render. The Greps above hold on the merged tree. rewrite-check.py was not re-run on these commits: they drop one fact by design (the archive's years) and turn the tag from optional to required.
  • The use-case commits (e9d505a0a and 55ca95fa5, 12 of the 47 files): docs_gate.py --check and linkcheck.py find nothing new; rewrite-check.py against 41ffd0b79 drops 0 measured values and 0 link targets; no prose sentence runs over 30 words; each en and pt pair keeps the same ##, ###, and table-row counts. pnpm build:local on 55ca95fa5: 2092 pages built, frontmatter check clean, and the new text renders on the six en pages and their pt twins.
  • Not run: pnpm lint:links, which skips the style-guide tree by design (scripts/lint-links.ts:127). I did not open the pages in a browser.

Left out, for follow-up: scripts/lint-links.ts accepts only ## Next steps and ## Related resources as a closing, so it reports every use-case page. That is a code change and goes in its own PR, #2632. The pt-br Code page lacks the JSON Lines paragraph and the jsonl example that #2642 added to the English page; that is a translation follow-up to #2642.

Type of change

  • 🆕 New content (feat)
  • 🩹 Fix (fix) — typo, broken link, wrong information
  • ♻️ Content update (docs) — rewrite, expansion, upkeep
  • 🌐 Translation sync (i18n)
  • 🏗️ Platform / structure (refactor / chore) — reviewed by UXE, no content mixed in

Author checklist

  • PR title follows type(scope): summary (see GOVERNANCE.md §4)
  • Frontmatter complete: title, description, meta_tags, namespace, permalink, last_reviewed — no frontmatter changed; none of the 47 style guide pages carries last_reviewed, before or after this PR
  • No legacy "edge-" product names in the copy
  • How-to/tutorial content includes at least one runnable, copy-paste-tested code block — no how-to or tutorial page in this PR
  • Screenshots (if any) have alt text and follow image standards — no screenshot is added or changed
  • Internal links are relative and resolve locally
  • If any permalink changed or page moved: redirect added in this PR — no permalink changed and no page moved
  • i18n: pt-br updated in this PR or follow-up i18n issue created: pt-br updated in this PR
  • I ran pnpm build:local (build + frontmatter check) without errors

…word cap

A use case is theory, not a procedure: it explains a design and links
the guides that build it. Choose a content type gave it the how-to base
form, and Sentence structure kept a 20-word exception for it. Move it to
the explanation form, with the descriptive 25-word cap, in the cap
table, the page-kind catalog, the use-case register, and the
multi-resource comparison, in en and pt-br.

The comparison paragraph also said a use case configures the design and
proves it works. It now says what the use-case page holds: the design,
the requirements table, and the metrics, with every step in the guides.
The use case now explains a design and links the guides that build it.
Three sentences still said the page builds it: the absent-kinds list in
Choose a content type, the placement list in Information architecture,
and the When to use list in Architecture pages. Reword them in en and
pt-br, and keep the requirements table and the metrics as what a
multi-resource guide lacks.
@marcus-souza-azion

Copy link
Copy Markdown
Contributor

Bruno, uma pendência que veio da revisão da #2634 (lint de changelog, MM-16259):

A página de changelog do style guide, em en e pt-br, ainda diz que tags é opcional ("The Platform Resource and the version: tags={['<Platform Resource>']} … when the release names a Platform Resource"). O lint da #2634 exige exatamente uma tag, da lista fechada em .github/CONTRIBUTING.md#changelog-entries. A decisão foi manter o lint como está e alinhar o style guide.

Você consegue incluir nesta PR (MM-16264), nas duas línguas:

  • tags passa para os componentes obrigatórios: uma tag por entrada, da lista fechada do CONTRIBUTING;
  • description="Version <x.y.z>" / description="Versão <x.y.z>" continua opcional;
  • se fizer sentido, uma linha apontando para o pnpm lint:changelog.

A #2634 pode entrar antes desta, e a divergência fecha quando esta entrar.

…uide-coherence

* origin/main: (56 commits)
  docs(architectures): keep security-modernization and bot-management as API v3 versions (#2589)
  fix(runtime): clean up unused imports and JSDoc in the Node.js API samples (#2649)
  docs(platform): retire the v3 build and deploy journey pages (#2587)
  fix(compliance): correct the SOC report cadence and PCI DSS version (#2585)
  docs(runtime): fix the azion dev port and the function size limit (#2583)
  docs(console): apply the review of the Console path convention (#2644)
  docs(workloads): review the Workloads section with the style guide and correct it from live tests (#2570)
  fix(ai-inference): review the AI Inference section and correct it from live tests (#2641)
  docs(templates): apply the review of the migrated template guides (#2645)
  docs(templates): point Deploy links to the current Marketplace catalog (MM-16236) (#2582)
  docs(orchestrator): split how-tos into API v4 and API v3 pages (#2584)
  fix(accounts): hyphenate Real-Time Purge and name the Bills tab in the permissions table (#2581)
  chore(lint): accept the English-only Marketplace Agreement and lower the linkcheck baseline (#2647)
  fix(links): point the v3 Applications reference and the guides at the current pages (#2646)
  docs(runtime): migrate Node.js API samples to the ES Modules handler (MM-16245) (#2592)
  docs(observe): use the current GraphQL dataset names across Observe and guides (#2579)
  docs(templates): list the Astro templates that only the showcase covered (#2595)
  docs(orchestrator): consolidate duplicate guides and write How it works (#2588)
  docs(secure): retire the pre-Workloads security journey and guide pages (#2586)
  docs(applications): Run Function needs only Functions; fix WEBP and CORS prerequisites (#2580)
  ...

# Conflicts:
#	apps/docs/src/content/docs/en/pages/style-guide/content/information-architecture.mdx
#	apps/docs/src/content/docs/en/pages/style-guide/content/navigation-hubs.mdx
#	apps/docs/src/content/docs/pt-br/pages/guia-de-estilo/conteudo/arquitetura-de-informacao.mdx
#	apps/docs/src/content/docs/pt-br/pages/guia-de-estilo/conteudo/hubs-de-navegacao.mdx
…main added

The changelog page now requires exactly one tag from the closed list in
CONTRIBUTING.md, which pnpm lint:changelog enforces, and keys a same-date
anchor on the tag. Word choice limits its no-date rule to hand-written prose,
and the changelog archive example drops its years. The sentences over 30
words that main added to Reference, Code, and Headings are split, en and pt-br.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants