Skip to content

docs: correct the repo docs against what the code actually does - #1478

Merged
feruzm merged 3 commits into
developfrom
feature/docs-accuracy-sweep
Aug 13, 2026
Merged

docs: correct the repo docs against what the code actually does#1478
feruzm merged 3 commits into
developfrom
feature/docs-accuracy-sweep

Conversation

@feruzm

@feruzm feruzm commented Aug 13, 2026

Copy link
Copy Markdown
Member

Docs only, plus two stale source comments. No behaviour changes.

An audit read every markdown file in the repo against the code it describes, and verified each finding against a cited file rather than against another document. This applies the result.

Wrong, where following the docs would mislead you

  • node ^18.17.x and pnpm 10.18.1 when engines says >=22.12 and packageManager says 11.5.0
  • getSdkAuthContext(activeUser, activeUser?.username) in two snippets, against a one-parameter signature
  • cp .env.template .env from the repo root, where no such file exists
  • NEXT_PUBLIC_HS_CLIENT_ID / NEXT_PUBLIC_HS_CLIENT_SECRET, which appear nowhere in the source. The real names are HIVESIGNER_CLIENT_ID and HIVESIGNER_SECRET, both server-only. Documenting a NEXT_PUBLIC_ prefix on a shared secret invites shipping it to the browser.
  • docker stack deploy -c docker-compose.yml from a root that has no compose file
  • master and development branches, which are main and develop
  • Two cache claims that were backwards: "logged-in users never see cached HTML" (only feed, feed-created and profile-feed go private; everything else is auth-class-equivalent and shared), and a "conservative 1h tier" on a post-age miss that is really a 60s entry-unknown

Incomplete, where the shape has moved on

pnpm test is web-only and pnpm build is not recursive, so both names oversell what they run. pnpm typecheck never reaches hosting/api, which sits outside the workspace globs. Production deploys both regions, not one. The tier table was missing dynamic-page and entry-unknown. The hosting diagram showed a "Domain Verify Service" that does not exist and omitted Redis. Model B read as an available deployment option when nothing implements it.

Missing, where a subsystem had no prose at all

The theme platform and its component seams, the claim landing, the signup funnel that customizes before payment, the free bundle path that creates no tenant, POST /v1/tools/compose-config, the static SEO writer, per-post SSI metadata, the Configuration Editor and how to cut a release. apps/self-hosted, an entire second application, was not mentioned in the root README.

Two of these are worth calling out because the docs actively contradicted the code:

  • CLAUDE.md said main publishes :latest. It does not. :latest moves only on a self-hosted-vX.Y.Z tag, which is exactly what the tag gating in Self-hosted: coherent versioning across images, configs and templates #1460 was built to guarantee, and cutting self-hosted-v1.0.0 yesterday confirmed it in the wild.
  • The claim landing's noindex is applied at RUNTIME and gated on the template flag, not written statically. That is deliberate, since a static noindex would deindex a live blog during any window where its config was missing, and nothing recorded the reason.

Counts

Directory counts had all drifted (25 features against 33 on disk, 64 shared against 101, and so on). They are dropped rather than re-pinned, since they go stale on the next merge either way.

Source comments

Two comments were stale in ways that would mislead someone extending the code, so they are corrected here rather than left for the next reader:

  • registry.ts still said "All five existing templates are CSS-only, so none carries a components key". Nine templates exist and five carry one.
  • The roster's add-a-template checklist named three steps. There is a fourth: style-template-display.ts is satisfies Record<StyleTemplate, StyleTemplateDisplay>, so it fails typecheck until the new id has a card.

Merge order

After #1475. The layout options that PR retires are already absent from this text, and it also takes the listType line out of DEPLOYMENT.md's layout example, which would otherwise conflict.

Every claim was checked against a cited file. Three items in the audit turned out to be wrong on re-verification and were corrected while applying rather than copied through: the compose stack has four services and not three, the add-a-template steps are four and not three, and Magazine overrides a seam without declaring the sidebar unsupported, so it keeps its sidebar.

An audit read every markdown file against the tree it describes. This applies
what it found, in three groups.

Wrong, where a reader following the docs would be misled: the Node and pnpm
versions, `getSdkAuthContext`'s arity, the private-API host resolution,
`cp .env.template` from a path that does not exist, Hivesigner variables named
with a NEXT_PUBLIC_ prefix that would ship a server secret to the browser,
compose paths, and `master`/`development` branch names that have been `main`
and `develop` for a while. Two cache claims were confidently backwards: most
tiers ARE cached for logged-in users (only the mute-filtered feeds go private),
and the post-age cold miss is a 60s `entry-unknown` tier rather than an hour.

Incomplete, where the shape has moved on: `pnpm test` is web-only and `pnpm
build` is not recursive, so both names oversell what they run; `pnpm typecheck`
does not reach hosting/api at all; production deploys BOTH regions; the tier
table was missing two tiers; the hosting diagram showed a service that does not
exist and omitted Redis; Model B was described as an option rather than as the
alternative that was rejected.

Missing, where a whole subsystem had no prose: the theme platform and its
component seams, the claim landing and its runtime-gated noindex, the signup
funnel that customizes before payment, the free bundle path that creates no
tenant, `POST /v1/tools/compose-config`, the SEO writer, per-post SSI metadata,
the Configuration Editor, and how to cut a release. `apps/self-hosted` was not
mentioned in the root README at all.

Counts that drift every merge are dropped rather than re-pinned.

Two source comments are corrected in the same pass, both stale in ways that
would mislead: registry.ts still said all five templates are CSS-only, and the
roster's add-a-template checklist omitted the display catalog, which is
satisfies-checked and so fails typecheck on a missing id.

Depends on #1475: the layout options it retires are already absent here.
@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@feruzm, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 70 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ba9cba68-c2f6-4a53-8f19-d4b320bc8db7

📥 Commits

Reviewing files that changed from the base of the PR and between 61a1397 and d24eae1.

📒 Files selected for processing (9)
  • .github/workflows/self-hosted.yml
  • CLAUDE.md
  • README.md
  • apps/self-hosted/DEPLOYMENT.md
  • apps/self-hosted/hosting/README.md
  • apps/self-hosted/hosting/api/src/style-templates.ts
  • apps/self-hosted/src/themes/registry.ts
  • packages/render-helper/README.md
  • packages/wallets/README.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai

coderabbitai Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@feruzm, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 96 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c66fdc92-6ea6-406d-addd-f15f920d23e1

📥 Commits

Reviewing files that changed from the base of the PR and between df47c67 and 01dd8be.

📒 Files selected for processing (9)
  • .github/workflows/self-hosted.yml
  • CLAUDE.md
  • README.md
  • apps/self-hosted/DEPLOYMENT.md
  • apps/self-hosted/hosting/README.md
  • apps/self-hosted/hosting/api/src/style-templates.ts
  • apps/self-hosted/src/themes/registry.ts
  • packages/render-helper/README.md
  • packages/wallets/README.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Aug 13, 2026

Copy link
Copy Markdown

PR Summary by Qodo

Docs: align repository documentation with current code and deployment flows

📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Correct outdated setup, environment, and branch guidance to match the current codebase.
• Document previously missing subsystems (self-hosted app, theme platform, claim/signup flows,
 hosting tools).
• Clarify production deploy/tagging and caching behavior to prevent operational and security
 mistakes.
Diagram

graph TD
  U["Developer / Operator"] --> D1["Repo Docs"] --> CI["CI (GitHub Actions)"] --> IMG["Docker Images"]
  U --> SPA["Self-hosted SPA"] --> API["Hosting API"] --> R[("Redis")]
  API --> DB[("Postgres")]
  SPA --> N1["Tenant nginx"]
  N1 --> META["SSI Meta Endpoint"] --> API
  subgraph Legend
    direction LR
    _svc["Service"] ~~~ _doc["Docs"] ~~~ _db[("Data store")]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Add doc drift checks (CI assertions)
  • ➕ Prevents future regressions (e.g., engines/packageManager, workflow tag behavior)
  • ➕ Makes accuracy failures visible at review time
  • ➖ Requires maintaining a set of assertions/tests
  • ➖ Not everything in prose is easily machine-verifiable
2. Generate/derive docs from source (single source of truth)
  • ➕ Reduces duplication for things like env vars, scripts, endpoint lists
  • ➕ Can keep reference tables (tiers/routes) in sync automatically
  • ➖ Tooling effort and maintenance cost
  • ➖ Generated docs can be harder to read/curate than hand-written prose
3. Move operational invariants into ADRs + link from README
  • ➕ Separates long-lived decisions (e.g., :latest gating, caching classes) from how-to docs
  • ➕ Improves historical context for future changes
  • ➖ Adds another documentation surface area
  • ➖ Requires discipline to keep ADRs current

Recommendation: Land this PR as-is: the manual audit fixes multiple high-impact doc hazards (notably secret env var prefixes and release-tag/:latest semantics). Follow up with lightweight CI assertions for the most failure-prone invariants (Node/pnpm versions, release tag regex/gating, and presence/paths of referenced files) to keep the docs from drifting again.

Files changed (9) +374 / -114

Documentation (9) +374 / -114
self-hosted.ymlClarify main branch publishing semantics in deploy workflow comment +1/-1

Clarify main branch publishing semantics in deploy workflow comment

• Updates a stale comment to reflect that 'main' publishes a moving channel tag rather than ':latest'. Reinforces that only 'develop' deploys to the managed host.

.github/workflows/self-hosted.yml

CLAUDE.mdExpand developer commands and document self-hosted/hosting architecture details +54/-17

Expand developer commands and document self-hosted/hosting architecture details

• Corrects build filtering examples and adds explicit test paths for web, self-hosted SPA, hosting API, and python scripts. Adds missing explanations for the theme platform, deployment/tagging rules, and hosted claim/signup/free-bundle flows, with concrete file references.

CLAUDE.md

README.mdFix onboarding/setup docs (branches, env vars, scripts, caching, self-hosted app) +102/-63

Fix onboarding/setup docs (branches, env vars, scripts, caching, self-hosted app)

• Corrects branch names, Node/pnpm requirements, env file path, and SDK auth snippet arity. Rewrites cache-policy guidance (logged-in caching classes, 'entry-unknown' tier, and observability header semantics), clarifies private API host resolution, and adds a full section documenting 'apps/self-hosted' and its deployment/tagging model.

README.md

DEPLOYMENT.mdDocument theme/template mechanics, config editor behavior, and release-tag semantics +114/-14

Document theme/template mechanics, config editor behavior, and release-tag semantics

• Adds a download-first shortcut via the hosting UI and substantially expands the style template documentation (CSS-only vs structural templates, manifest seams, and enforced add-template steps). Clarifies retired config options, explains the in-browser Configuration Editor (tabs, save vs download behavior), updates tag guidance to reflect the first release, and refines operational notes (SEO feed paging limits and payment options).

apps/self-hosted/DEPLOYMENT.md

README.mdCorrect hosting platform diagram and add missing subsystem prose +75/-9

Correct hosting platform diagram and add missing subsystem prose

• Updates the topology diagram to match reality (Node.js/Hono, correct API host, add Redis, remove standalone domain-verify service). Adds detailed descriptions of the static SEO writer, per-post SSI metadata pipeline with fallbacks, and 'POST /v1/tools/compose-config' behavior/stripping rules; marks Model B as not implemented and updates the tenant status check example.

apps/self-hosted/hosting/README.md

style-templates.tsRefresh roster comment to match enforced template onboarding steps +12/-5

Refresh roster comment to match enforced template onboarding steps

• Rewrites the header comment to reflect the current four enforced steps (roster id, CSS + guard test, display catalog typing, i18n typing) and clarifies when a manifest is required for structural templates. No runtime logic changes.

apps/self-hosted/hosting/api/src/style-templates.ts

registry.tsUpdate manifest registry comment to describe CSS-only vs structural templates +13/-4

Update manifest registry comment to describe CSS-only vs structural templates

• Replaces an outdated comment that implied all templates were CSS-only, documenting the current split and the specific seams overridden by structural templates. Clarifies the rationale for asserting seam identity to avoid remounts.

apps/self-hosted/src/themes/registry.ts

README.mdCorrect package build list to include @ecency/ui +1/-1

Correct package build list to include @ecency/ui

• Updates the monorepo build guidance to reflect the current set of packages built by 'pnpm build:packages'.

packages/render-helper/README.md

README.mdClarify wallet mutation ownership (SDK) and compatibility re-export +2/-0

Clarify wallet mutation ownership (SDK) and compatibility re-export

• Adds a note that blockchain mutations live in '@ecency/sdk' and that 'useWalletOperation' is re-exported from wallets for compatibility. Helps avoid duplication/confusion for contributors.

packages/wallets/README.md

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 01dd8be3be

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread CLAUDE.md
- ✅ Configurable sidebar and branding
- ✅ Claim landing: an unclaimed subdomain serves the shared template config and renders a claim CTA plus a read-only live preview, instead of a blog

**The theme platform.** `src/themes/manifest.ts` defines a `ThemeComponents` seam (Shell, Navigation, Sidebar, ArchiveList, PostCard); a template's manifest in `src/themes/registry.ts` overrides the seams it owns and everything absent falls back to the shared default, so a CSS-only template resolves to the very same component functions. A manifest also declares `unsupportedOptions` (today `['sidebar']`), which the Configuration Editor uses to HIDE the control rather than leave a toggle that does nothing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document both unsupported theme options

The documented value of unsupportedOptions does not match the theme manifests: Journal, Reader, Gallery, and Terminal all declare ['sidebar', 'listType'], and ThemeOptionKey includes both values. A contributor relying on this architecture guide could omit the required listType declaration when adding a structural theme, contrary to the manifest contract described elsewhere; either list both values or clarify that only sidebar currently corresponds to a visible editor control.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both of you flagged this line, and the mismatch was real on the commit you reviewed, but the cause is the branch base rather than the sentence. Resolved in d24eae1.

This branch was cut from df47c67, and #1475 (which retires listType) merged afterwards. So at the head you reviewed, the code genuinely said one thing and the docs another:

reviewed head 01dd8be develop today
ThemeOptionKey 'sidebar' | 'listType' 'sidebar'
journal / reader / gallery / terminal ['sidebar', 'listType'] ['sidebar']

The PR description marked it "merge after #1475" for exactly this reason. #1475 is now merged and deployed, so I merged develop in rather than editing the sentence: unsupportedOptions really is ['sidebar'] today, and widening the docs to re-include listType would have reintroduced the drift in the opposite direction, documenting an option that no longer exists.

Worth saying plainly, though: the underlying check was the right one to make. A docs PR is exactly where a stale base produces a claim that is wrong at merge time, and neither of you could see the pending PR that resolved it.

It also made me re-read my own neighbouring text, where I found a genuine version of the same error and fixed it in the same commit. The registry comment said each of the five structural themes "declares what it cannot honour in unsupportedOptions". That is true of four. Magazine overrides ArchiveList but keeps the shared shell, so its sidebar still works and it declares nothing. Owning a seam and dropping an option are separate things, and the comment now says so.

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can type 'qodo, fix this' on a finding and the fix lands right on your PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Informational

1. Wrong unsupportedOptions docs 🐞 Bug ≡ Correctness
Description
CLAUDE.md now states manifests declare unsupportedOptions as “today ['sidebar']”, but the theme
manifest type and registry include listType as a supported/used unsupported option as well. This
can mislead contributors working on template support or Configuration Editor gating.
Code

CLAUDE.md[239]

+**The theme platform.** `src/themes/manifest.ts` defines a `ThemeComponents` seam (Shell, Navigation, Sidebar, ArchiveList, PostCard); a template's manifest in `src/themes/registry.ts` overrides the seams it owns and everything absent falls back to the shared default, so a CSS-only template resolves to the very same component functions. A manifest also declares `unsupportedOptions` (today `['sidebar']`), which the Configuration Editor uses to HIDE the control rather than leave a toggle that does nothing.
Evidence
The new CLAUDE.md sentence asserts only sidebar is an unsupported option, but the theme manifest
type includes both sidebar and listType, and the registry shows templates declaring both as
unsupported.

CLAUDE.md[235-243]
apps/self-hosted/src/themes/manifest.ts[18-38]
apps/self-hosted/src/themes/registry.ts[64-81]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`CLAUDE.md` claims `unsupportedOptions` is currently `['sidebar']`, but the self-hosted theme manifest contract supports both `sidebar` and `listType`, and several manifests use both. This is a docs-vs-code mismatch.

## Issue Context
The new CLAUDE.md theme-platform paragraph is intended to be an accurate guide for extending templates and the Configuration Editor.

## Fix Focus Areas
- CLAUDE.md[239-243]

## Proposed fix
Update the parenthetical to reflect reality (e.g. “(e.g. `['sidebar', 'listType']` depending on template)” or remove the “today ...” claim and describe the mechanism generically: `unsupportedOptions` can include `sidebar` and/or `listType`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Context
Review mode: ⚖️ Balanced: Although predominantly documentation, the PR also changes a CI workflow comment and two source comments, while making many independent factual claims across deployment, caching, security-sensitive environment guidance, and hosting behavior; this warrants a complete single-pass review rather than the

Grey Divider

Tip of the day
💡 Did you know, you can type 'qodo, fix this' on a finding and the fix lands right on your PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment thread CLAUDE.md
- ✅ Configurable sidebar and branding
- ✅ Claim landing: an unclaimed subdomain serves the shared template config and renders a claim CTA plus a read-only live preview, instead of a blog

**The theme platform.** `src/themes/manifest.ts` defines a `ThemeComponents` seam (Shell, Navigation, Sidebar, ArchiveList, PostCard); a template's manifest in `src/themes/registry.ts` overrides the seams it owns and everything absent falls back to the shared default, so a CSS-only template resolves to the very same component functions. A manifest also declares `unsupportedOptions` (today `['sidebar']`), which the Configuration Editor uses to HIDE the control rather than leave a toggle that does nothing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Informational

1. Wrong unsupportedoptions docs 🐞 Bug ≡ Correctness

CLAUDE.md now states manifests declare unsupportedOptions as “today ['sidebar']”, but the theme
manifest type and registry include listType as a supported/used unsupported option as well. This
can mislead contributors working on template support or Configuration Editor gating.
Agent Prompt
## Issue description
`CLAUDE.md` claims `unsupportedOptions` is currently `['sidebar']`, but the self-hosted theme manifest contract supports both `sidebar` and `listType`, and several manifests use both. This is a docs-vs-code mismatch.

## Issue Context
The new CLAUDE.md theme-platform paragraph is intended to be an accurate guide for extending templates and the Configuration Editor.

## Fix Focus Areas
- CLAUDE.md[239-243]

## Proposed fix
Update the parenthetical to reflect reality (e.g. “(e.g. `['sidebar', 'listType']` depending on template)” or remove the “today ...” claim and describe the mechanism generically: `unsupportedOptions` can include `sidebar` and/or `listType`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both of you flagged this line, and the mismatch was real on the commit you reviewed, but the cause is the branch base rather than the sentence. Resolved in d24eae1.

This branch was cut from df47c67, and #1475 (which retires listType) merged afterwards. So at the head you reviewed, the code genuinely said one thing and the docs another:

reviewed head 01dd8be develop today
ThemeOptionKey 'sidebar' | 'listType' 'sidebar'
journal / reader / gallery / terminal ['sidebar', 'listType'] ['sidebar']

The PR description marked it "merge after #1475" for exactly this reason. #1475 is now merged and deployed, so I merged develop in rather than editing the sentence: unsupportedOptions really is ['sidebar'] today, and widening the docs to re-include listType would have reintroduced the drift in the opposite direction, documenting an option that no longer exists.

Worth saying plainly, though: the underlying check was the right one to make. A docs PR is exactly where a stale base produces a claim that is wrong at merge time, and neither of you could see the pending PR that resolved it.

It also made me re-read my own neighbouring text, where I found a genuine version of the same error and fixed it in the same commit. The registry comment said each of the five structural themes "declares what it cannot honour in unsupportedOptions". That is true of four. Magazine overrides ArchiveList but keeps the shared shell, so its sidebar still works and it declares nothing. Owning a seam and dropping an option are separate things, and the comment now says so.

feruzm added 2 commits August 13, 2026 12:18
#1475 has landed, so the retired layout options are now absent from the code
this branch documents.
…comment

Magazine overrides ArchiveList but keeps the shared shell, so its sidebar still
works and it declares no unsupportedOptions. Saying every structural theme
declares one was the same class of docs-vs-code drift this branch exists to fix.
@feruzm
feruzm merged commit a53c17c into develop Aug 13, 2026
12 checks passed
@feruzm
feruzm deleted the feature/docs-accuracy-sweep branch August 13, 2026 12:43
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.

1 participant