Repository navigation
Description
Migrated from planning/deferred.md, retired in the move to the PR-body-as-spec convention (#50).
Goal and current status
Replace Material for MkDocs with Zensical as the builder for the org site and per-project docs sites.
Rechecked 2026-11-14 against Zensical 0.1.1. The release gate has fired: 0.1.1 shipped November 10 and is classified Beta. Re-evaluation can proceed, but migration is not yet verified ready. Validation parity remains the main blocker; local template fixes and output verification are also required.
The recorded migration deadline remains 2027-05-05, when Material for MkDocs critical maintenance ends (see upstream announcement).
Keep mkdocs.yml during evaluation and set theme.variant: classic, as recommended by the migration guide. A TOML rewrite is unnecessary. The old July spike branch was not retained.
Verified build findings
Scope: temporary copies of the seven current docs sites outside lite-bootstrap: .github, modern-di, that-depends, httpware, semvertag, faststream-outbox and faststream-redis-timers. The org checkout matched origin/main at 097e571; the other sites were tested from local working copies, not asserted to match remote HEADs. Production files were unchanged. lite-bootstrap was excluded and remains unverified.
- With
theme.variant: classic, the org site passeszensical build --strict. The other six fail withRuntimeError: unknown method: string has no method named endswithin their custommain.htmloverrides. - Replacing
config.site_url.endswith('/')withconfig.site_url[-1:] == '/'in temporary overrides makes all seven strict builds pass. This is a required migration fix, not a production change already made. - Configured
exclude_docsworks: noagents/oradr/HTML is emitted by the six sites excluding those paths. A minimal fixture confirms both directories stay excluded.that-dependshas no such exclusions and emits its three agents pages; that is not an exclusion regression. modern-diemits bothllms.txt(9,872 bytes) andllms-full.txt(548,787 bytes) with its current plugin configuration.that-dependsalso emits both files, correcting the earlier claim that only modern-di uses llmstxt. Generation is verified; content parity is not.- The org homepage title and social titles equal
Modern Python. Sites usingnav.homepageproduce the expected homepage social titles. Contrary to the previous issue body,that-dependsstill usespage.is_homepage; its generated homepage social title isQuick-Start · that-dependsand needs the same workaround.
Remaining blockers and completion checks
1. Preserve validation behavior, or explicitly decide what loss is acceptable
The v0.1.1 config mapper still drops omitted_files and unrecognized_links. It recognizes absolute_links only for the relative_to_docs resolution mode; the existing absolute_links: warn does not preserve MkDocs warning behavior. Link and anchor validation remain supported.
Executed regression probe: with an explicit nav containing only index.md, an additional orphan.md, and validation.omitted_files: warn, Zensical strict mode reports no issues and publishes orphan/index.html. MkDocs 1.6.1 strict mode exits 1 and reports the omitted page. Passing Zensical strict mode therefore does not establish validation parity.
No upstream orphan-page issue was identified in this investigation. backlog#63 concerned not_in_nav, not orphan detection. The validation docs still provide no orphan-page equivalent.
- Restore equivalent diagnostics through upstream support or a separate check, or record an explicit decision accepting each lost check.
- Verify strict-mode failures with negative fixtures, including omitted pages and the existing link-warning cases.
2. Make template overrides compatible
- Replace
.endswith()in all six tested project overrides with a compatible expression; rerun strict builds. - Replace
page.is_homepageinthat-dependswithnav.homepage and page.url == nav.homepage.url; verify homepage and inner-page metadata. - Inspect lite-bootstrap separately before migrating it.
nav.homepage is explicitly exposed in the v0.1.1 navigation view. The page model has no built-in is_homepage field.
3. Verify llmstxt content parity
Native llmstxt support accepts the current settings, including sections, globs and full_output; generation is no longer an upstream blocker.
- Compare MkDocs and Zensical output for modern-di and that-depends: sections, glob expansion, code blocks, page coverage and exclusion of internal content.
4. Verify classic visual and deployment behavior
- Compare classic output against the current sites in light/dark modes and mobile layouts, including navigation and custom CSS.
- Verify generated titles, social metadata, assets and excluded directories in the migration PRs.
- Update each site's build/hosting configuration and demonstrate a successful build, including that-depends' Read the Docs setup.
No visual parity or deployment verification was performed in this check.
Reproduction
Run in temporary copies, with theme.variant: classic for the site builds:
uv tool run --from zensical==0.1.1 zensical build -f mkdocs.yml --strict
uv tool run --from mkdocs==1.6.1 mkdocs build -f mkdocs.yml --strictFor the orphan/exclusion probe, create docs/index.md, docs/orphan.md, docs/agents/private.md and docs/adr/private.md with simple headings and use:
site_name: Probe
nav:
- Home: index.md
exclude_docs: |
/agents/
/adr/
validation:
omitted_files: warn
absolute_links: warn
unrecognized_links: warn
anchors: warn
Activity
docs: adopt the PR-body-as-spec convention, retiring planning/ and ar…
lesnik512 commentedon Sep 6, 2026
Triage Notes
Parked as
needs-triage: the revisit trigger has not fired.Gate check (2026-09-06): Zensical is at 0.0.59 on PyPI. The issue's snapshot was 0.0.46 on 2026-07-05, so upstream has shipped 13 releases since, but is still 0.0.x and has not reached the beta/1.0 threshold this issue is conditioned on.
Confirmed not started: there is no
zensical.tomlin this repo and no Zensical reference anywhere in the tree. As the body notes, the spike branch was not kept, so the port is a redo frommkdocs.ymlwhenever it happens.The four re-check criteria remain open. I did not re-test any of them against 0.0.59, since the version gate has not fired:
page.is_homepageand siblings exposed to custom templatesvalidationparity for the docs-heavy repos:omitted_files/ orphaned-page detection andabsolute_linksclassicvariant fidelity against the live sitenot_in_navequivalent, which this repo now relies on to keepdocs/adr/out of the site menu while still building itNext action: re-run this gate when Zensical announces beta or 1.0. There is no work to do before then, for a human or an agent.
lesnik512 commentedon Sep 6, 2026
Revisit check — 2026-09-06
Ran the trigger against Zensical 0.0.59. It has not fired. Every claim below is cited to a
primary source: the PyPI JSON API, the
zensical/zensicalandzensical/uisource at the statedtags, zensical.org, mkdocs.org, and squidfunk.github.io/mkdocs-material. Nothing was installed or
built — where docs are silent, the finding is read from source and labelled as such.
Paths are repo-relative within the org;
org/means this repo.Verdict: the trigger has not fired — Zensical is still self-described alpha (0.0.59), all three original blockers remain open, and a fourth has appeared (
exclude_docsis unsupported), so keep the issue open with an updated trigger and re-check after the beta release.All findings below apply to Zensical 0.0.59 (released 2026-09-03), its docs at
zensical/docscommit
94cc5b4(2026-09-03), and the bundled theme UIzensical/uiv0.0.27 (2026-09-02),unless stated otherwise. Delta baseline is 0.0.46/0.0.47 (the spike, 2026-07-05).
Trigger status
Applies to: 0.0.59.
0.0.59, uploaded 2026-09-03T18:40:51Zhttps://pypi.org/pypi/zensical/json(info.version,releases)Development Status :: 3 - Alpha0.0.472026-07-05 →0.0.592026-09-03; no0.0.49)444b71e"chore: release v0.0.59", 2026-09-03https://github.com/zensical/zensical(git log -1)The project's own words, verbatim:
No beta or 1.0 date is given anywhere; the roadmap explicitly declines dates ("Rather than
promising concrete dates, we prefer to make our work visible"). Beta has not been reached.
Delta since 2026-07-05 that matters to us
0.0.53—strictis now settable inmkdocs.yml/zensical.toml, not just--strict(
https://github.com/zensical/zensical/releases/tag/v0.0.53, "supportstrictconfiguration option (#840)").0.0.56—unresolved_referencesfurther retired: "Please disableunresolved_references-it is not supported anymore"; autorefs checking moved under
invalid_links(
https://github.com/zensical/zensical/releases/tag/v0.0.56).0.0.58— build-architecture rewrite (ZRX scheduler); six new plugin replacements(
meta,redirects,minify,tags,literate-nav,awesome-nav); 30–40 % less peak memory(
https://github.com/zensical/zensical/releases/tag/v0.0.58).0.0.47–0.0.59release notes touchespage.is_homepage,exclude_docs,omitted_files, orabsolute_links.Blocker 1 —
page.is_homepagein custom templatesApplies to: Zensical 0.0.59 / ui v0.0.27. Status: still broken, and now demonstrably so at the source level.
Not documented anywhere. Zensical's theme-customization page documents
custom_dir, theblock list, and MiniJinja compatibility but publishes no template-context/variable reference at all
(
https://zensical.org/docs/customization/, sourcedocs/customization.md). So this is"not documented", not "documented as absent".
Source says it does not exist. In
crates/zensical/src/structure/page.rs(0.0.59), the rendercontext is built in
Page::render_templateascontext! { generator, nav, base_url, extra_css, extra_javascript, config, page => self, ..variables }.The serialized
pageobject isPageData+Page, whose fields are exactly:url,canonical_url,edit_url,path,title, plus the flattenedMarkdownfieldsmeta,content,toc(crates/zensical/src/structure/markdown.rs), plusancestors,previous_page,next_page. There is nois_homepage—grep -rn is_homepageover the wholezensical/zensicalrepo at 0.0.59 returns nothing.
And Zensical's own theme still references it, so the failure is silent:
zensical/uisrc/base.htmlL89 (tagv0.0.27) readspage.is_homepageis simply undefined → falsy → the homepage falls through thepage.meta.titlebranch. This is precisely the duplicated
<title>the 2026-07 spike papered over.MkDocs documents
is_homepageas aPageproperty ("Evaluates to True for the homepage of thesite and False for all other pages"), with the exact idiom our overrides use —
https://www.mkdocs.org/dev-guide/themes/(Page object reference).Supported way to special-case the home page today
There is no documented one. From source, the workable, builder-portable expression is a URL
comparison against the navigation homepage:
nav.homepageis exposed to templates —NAVIGATION_FIELDS = ["items", "homepage", "hash"]in
crates/zensical/src/structure/nav/view.rsL38, resolved at L161–163 by serializingnavigation.homepage(aNavigationItem, which carriesurl).{% if nav.homepage and page.url == nav.homepage.url %}works under Zensical and equallyunder MkDocs (
nav.homepageis part of the MkDocs Navigation object).This is a source-derived workaround, not documented behaviour, and it is not the fix the issue's
trigger asked for.
Blast radius, corrected
The issue implies only the org site is affected. In fact all four override files use
page.is_homepage:org/overrides/main.html(twice:htmltitleandextrahead)faststream-outbox/overrides/main.html(extrahead, og/twitter title)modern-di/overrides/main.html(same)lite-bootstrap/overrides/main.html(same)Under Zensical, each would silently emit a wrong
og:title/twitter:titleon the home page, andthe org site would additionally get a doubled
<title>.Blocker 2 — validation parity
Applies to: Zensical 0.0.59. Status: partially improved (strict is fully there), core gap unchanged.
MkDocs' tree (
https://www.mkdocs.org/user-guide/configuration/#validation; a bare top-level keysuch as
absolute_links:sets bothnav:andlinks:) vs Zensical(
https://zensical.org/docs/setup/validation/, sourcedocs/setup/validation.md), cross-checkedagainst the mapper in
python/zensical/config.pyL613–653 ofzensical/zensical@ 0.0.59:validation.links.not_found(unrecognized_links's sibling)invalid_linkssetup/validation.md§invalid_links;config.pyL642 mapsnot_found != "ignore"validation.links.anchors/invalid_link_anchorsinvalid_link_anchorsinvalid_link_anchors;config.pyL644validation.nav.omitted_files(orphan pages)config.pyL625–626 comment: "we only support validation of links right now, as navigation will change significantly". Officially acknowledged as an open backlog item:https://github.com/zensical/backlog/issues/63(OPEN, opened 2025-11-20) — "Right now, Zensical [does] not warn about Markdown pages that are not referenced in the navigation … as MkDocs does"validation.{nav,links}.absolute_links(incl.relative_to_docs)setup/validation.md; not in the mapper's key set (config.pyL614–622), so silently droppedvalidation.links.unrecognized_links--strictzensical build --strict, andstrict: trueinmkdocs.ymlsince 0.0.53https://github.com/zensical/zensical/releases/tag/v0.0.53unresolved_references,unresolved_footnotes,unused_definitions,unused_footnotes,shadowed_definitions,shadowed_footnotesunresolved_references"is not supported anymore"Two behaviours worth knowing, both from
python/zensical/config.py@ 0.0.59:links,not_found,anchors, and Zensical's own eight keys ("We only support a subset of MkDocs' validationsettings, so we ignore the ones we don't support", L639–640). No warning is emitted.
"ignore"means "on".warnandinfoare indistinguishable.Replacement is promised but unshipped: the deprecated checks will "be replaced with functionally
equivalent ones once we publish our Python Markdown parser and integrate it with Zensical"
(
docs/setup/validation.md). Nothing in the docs promises replacements foromitted_filesorabsolute_links.What
faststream-outboxactually depends onfaststream-outbox/mkdocs.ymldeclares, as top-level (i.e.nav-and-links) keys:
CI runs
just docs-build→uvx --with-requirements docs/requirements.txt mkdocs build --strict(
faststream-outbox/justfileL56, invoked by.github/workflows/docs.yml).modern-diandlite-bootstrapcarry the identicalvalidation:block; the org repo has none and relies on
mkdocs build --strictalone(
org/.github/workflows/ci.yml,deploy.yml).Net effect of switching that repo to Zensical today:
--strictstill fails the build, andanchorsstill maps, but three of its four declared checks vanish without a warning — orphanedpages, absolute links, and unrecognized relative links stop being caught. Because
validation.omitted_filesis what currently keepsdocs/agents/anddocs/adr/honest alongsideexclude_docs, that is a real regression in the repo the issue itself calls the hard case.Blocker 3 —
classicvariant fidelityApplies to: Zensical 0.0.59. Status: resolved as far as primary sources can settle it —
classicis documented, current, and recommended for exactly our case.modern(default —variantis commented out in the bootstrap config,python/zensical/bootstrap/zensical.tomlL22) andclassic.classicvariant preserves the appearance of Material for MkDocs, while both variantsretain the same HTML structure. We recommend using
classicwhen moving an existing Material forMkDocs project or when custom CSS and JavaScript depend on its established appearance."
—
https://zensical.org/docs/compatibility/mkdocs/migration/#theme-variantclassictheme variant thatpreserves the look of Material for MkDocs"; "[additional CSS] and [JavaScript] work without
changes when using the
classictheme" —https://zensical.org/docs/compatibility/mkdocs/theme in both
classicandmodernvariants"(
https://github.com/zensical/zensical/releases/tag/v0.0.47); the roadmap states "You can keepthe original look of Material for MkDocs, or opt into the new, modern design" and claims
"Identical HTML output" (
https://zensical.org/about/roadmap/).Caveat: pixel-level fidelity against our live sites is a claim only a build can settle, and the
spike branch was not kept. Nothing in primary sources contradicts it; nothing verifies it either.
Config-surface gap check
Union of keys actually used across
org/,faststream-outbox/,modern-di/,lite-bootstrap/(the only four repos with a
mkdocs.yml;chat-app,modern-di-faststream,modern-di-pytest,litestar-sqlalchemy-templatehave none). Status is for Zensical 0.0.59.site_name,site_url,site_descriptionhttps://zensical.org/docs/setup/basics/repo_url,repo_name,edit_urihttps://zensical.org/docs/setup/repository/docs_dirsetup/basics.md#docs_dirnavhttps://zensical.org/docs/compatibility/mkdocs/migration/exclude_docsexclude_docs,draft_docs,not_in_nav,hooks,remote_branch,remote_name; tracked athttps://github.com/zensical/backlog/issues/65(OPEN, 2025-11-22). Source confirms: noexclude_docshandling inpython/zensical/config.py, and the RustProjectstruct (crates/zensical/src/config/project.rsL48) has nodeny_unknown_fields, so the key is silently dropped —docs/adr/anddocs/agents/would be published with no warningtheme.name: materialmaterial"https://zensical.org/docs/customization/#theme-configurationtheme.custom_dirhttps://zensical.org/docs/customization/#configuring-overridestheme.logo,theme.faviconhttps://zensical.org/docs/setup/logo-and-icons/theme.icon.{edit,view,repo}https://zensical.org/docs/setup/repository/theme.palette(list,media/`scheme: default/toggle.icon/toggle.name`)palette.primary: custom+accent: custom(CSS vars inextra_css)https://zensical.org/docs/setup/colors/(primary: custom+--md-primary-fg-color*in extra CSS)theme.features:navigation.instant,.top,.sections,.expand,.footerhttps://zensical.org/docs/setup/navigation/,.../setup/footer/theme.features:header.autohide,announce.dismisshttps://zensical.org/docs/setup/header/theme.features:content.code.copy,content.code.annotatehttps://zensical.org/docs/authoring/code-blocks/theme.features:content.action.edit,content.action.viewhttps://zensical.org/docs/setup/repository/theme.features:search.suggest(org only)docs/setup/search.md(onlysearch.highlightis documented); present in the UI's feature union,zensical/uisrc/assets/javascripts/_/index.tsL58extra_csshttps://zensical.org/docs/customization/#additional-cssextra.social(icon/link/name)https://zensical.org/docs/setup/footer/validation.*markdown_extensions:admonition,attr_list,def_list,md_in_html,toc.permalinkhttps://zensical.org/docs/compatibility/markdown/python-markdown/markdown_extensions:pymdownx.{highlight(anchor_linenums,line_spans,pygments_lang_class), inlinehilite, snippets, superfences, tabbed(alternate_style), details}https://zensical.org/docs/compatibility/markdown/python-markdown-extensions/pymdownx.emojiwith!!python/name:material.extensions.emoji.*(org only)material.namespace is auto-rewritten!!python/name:zensical.extensions.emoji.twemoji(.../python-markdown-extensions/#emoji); source shim rewrites it for you:python/zensical/config.pyL177–181 replaces"material.extensions"→"zensical.extensions"(andmaterialx→zensical.extensions) in the raw YAML before parsing. The rewrite is source-level, not documentedmarkdown_extensions:codehilite: {use_pygments: true}(all three project repos)python/zensical/config.py::_convert_markdown_extensions(L1197+) has no allowlist andpython/zensical/markdown/render.pyL76–79 hands the names straight toMarkdown(extensions=...), so the stock Python-Markdown extension would load. Rendering/styling parity unverifiedplugins.llmstxt(modern-dionly)https://zensical.org/docs/compatibility/mkdocs/plugins/, which covers autorefs, awesome-nav, glightbox, literate-nav, macros, markdown-exec, meta, minify, mkdocstrings, offline, redirects, search, section-index, table-reader, tags). Tracked athttps://github.com/zensical/backlog/issues/83(OPEN, 2026-01-05)mkdocs-material>=9.7.5(org) />=9,<10(projects)https://zensical.org/docs/compatibility/mkdocs/migration/#templates-and-overridesFlagged — no documented equivalent:
exclude_docs(silently ignored),validation.omitted_files,validation.absolute_links,validation.unrecognized_links(all silently ignored),plugins.llmstxt. Flagged — undocumented but working per source:search.suggest,codehilite, thematerial.extensions.emojinamespace rewrite, andnav.homepageas anis_homepagesubstitute.The issue's closing note is stale:
not_in_navis no longer used anywhere in the org. Three ofthe four repos use
exclude_docsinstead (org/mkdocs.yml"Repo-internal docs that must not bepublished";
faststream-outbox/mkdocs.yml,modern-di/mkdocs.ymlexclude/agents/and/adr/;lite-bootstrap/mkdocs.ymlhas neither key). That swap makes the situation worse, not better:not_in_navandexclude_docsare both unsupported, butexclude_docsfailing open means unlistedinternal pages get published, not merely mis-navigated.
Next step
https://zensical.org/docs/upgrade/#versioningis where the wording will change; the newsletter and GitHub releases are the announcement channels).
exclude_docssupport —https://github.com/zensical/backlog/issues/65(new; blocks the three sites that use it, fails silently by publishing internal docs)validation.omitted_files—https://github.com/zensical/backlog/issues/63page.is_homepage(or a documented template-context reference) — affects all fouroverrides/main.html, not just the orgvalidation.absolute_links/unrecognized_linksDrop the
not_in_navnote and the "classic variant fidelity" item; replace the latter with aone-line "verify by build" task, since
classicis documented, recommended for migrations, andstill actively shipped.
zensical/backlog#65and#63rather than re-running this survey.page.is_homepagein the fouroverrides/main.htmlfiles withpage.url == nav.homepage.url, which is correct under MkDocs now and would survive a future port.Item 4 above is now tracked separately as #71 — it is correct under MkDocs today and does not
depend on this issue.
lesnik512 commentedon Sep 15, 2026
Revisit check — 2026-09-15
Trigger has not fired. Kept
enhancement+needs-triage, nothing to port.0.0.62, uploaded 2026-09-13https://pypi.org/pypi/zensical/json0.0.60,0.0.61,0.0.62Development Status :: 3 - Alphahttps://zensical.org/docs/upgrade/#versioningexclude_docs)https://github.com/zensical/backlog/issues/65not_in_nav)https://github.com/zensical/backlog/issues/63llmstxt)https://github.com/zensical/backlog/issues/83Release notes for 0.0.60–0.0.62 cover the
table-readerplugin, page and anchor redirects,mkdocs-callouts, and relaxed plugin-settings validation. None touchexclude_docs,omitted_files,absolute_links,unrecognized_links, or the template context.Redundancy check: no
zensical.tomland no Zensical reference anywhere in the org tree. Not started.Body corrections
mkdocs.yml, not four: the original.github,faststream-outbox,modern-di,lite-bootstrap, plushttpware,faststream-redis-timers,semvertag,that-depends. Seven of the eight useexclude_docs(all butthat-depends), and six declare avalidation:block (.githubandthat-dependsdo not). Trigger items 1 and 2 therefore block seven and six repos respectively, not three.page.is_homepage) is now worked around everywhere. Replace page.is_homepage with a builder-portable homepage check in every overrides/main.html #71 covered four repos on 2026-09-06; the three repos added since are fixed in httpware#126, semvertag#70 (both merged) and faststream-redis-timers#76 (open, blocked on unrelated lint drift). The underlying gap — no documented template context in Zensical — is unchanged, so the item stays on the trigger list as "re-verifynav.homepageat port time".Next re-check when the versioning wording at
https://zensical.org/docs/upgrade/#versioningchanges, or backlog#65 / #63 move.lesnik512 commentedon Oct 3, 2026
Checked 2026-10-03 against 0.0.67. Still blocked, but two things moved.
The four blockers:
exclude_docs: Supportexclude_docsanddraft_docssettings inmkdocs.ymlzensical/backlog#65 is still open.not_in_navsetting inmkdocs.ymlzensical/backlog#63 is still open.page.is_homepage: not re-checked here.plugins.llmstxt: Support formkdocs-llmstxtplugin functionality zensical/backlog#83 was closed as completed on 2026-10-02. Its replacement shipped in 0.0.67, so this one needs a build check, not a wait.lesnik512 commentedon Oct 10, 2026
Checked 2026-10-10 against Zensical 0.0.69 (released 2026-10-08): still blocked. PyPI still lists it as
Development Status :: 3 - Alpha.Of the four items in the revisit trigger:
exclude_docs(backlog#65): still open.page.is_homepage: not re-checked.plugins.llmstxt(backlog#83): resolved. A replacement shipped in Zensical 0.0.67 and the issue is closed. Porting modern-di'sllmstxtconfig to it would still need a build check.The two hardest blockers (1 and 2) remain, so nothing changes here yet.
lesnik512 commentedon Oct 24, 2026
Checked 2026-10-24 against Zensical 0.0.72 (released 2026-10-23): still blocked. PyPI still lists
Development Status :: 3 - Alpha, and 0.1.0 is still planned for 2026-11-05.Of the four items in the revisit trigger:
exclude_docs(backlog#65): resolved. 0.0.70 addedexclude_docs,draft_docsandnot_in_nav, and ci: gate PRs on local links, and stop publishing the ADRs #65 is closed. This was the fail-open blocker. At port time, check by build thatdocs/adr/anddocs/agents/stay out of the output.not_in_nav, which 0.0.70 added. It was never aboutvalidation.omitted_files, so the issue body links it to the wrong thing. No 0.0.70 to 0.0.72 release note mentionsvalidation,omitted_files,absolute_linksorunrecognized_links, and no backlog issue tracks them.page.is_homepage: not re-checked.plugins.llmstxt: unchanged since the last check. It needs a build check, not a wait.Item 2 is now the main gap. Without a replacement, the six repos with a
validation:block lose orphaned-page checks without any warning.lesnik512 commentedon Nov 4, 2026
Checked 2026-11-04: the release gate has not fired.
Latest Zensical is 0.0.74, still classified Alpha. The upstream announcement still schedules 0.1.0 for November 5, 2026. Recheck after that release, then verify validation parity, excluded directories and theme fidelity by building before proceeding with migration.
[-]Re-evaluate Zensical as the docs builder when it reaches beta/1.0[/-][+]Evaluate Zensical Beta migration: validation and template blockers[/+]