[SCM] PostGIS branch master updated. 3.7.0alpha1-637-gda4013969

git at osgeo.org git at osgeo.org
Sun Jul 19 06:32:49 PDT 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, master has been updated
       via  da401396910c2e24e403eb2c97a2cfac2c6bfbd0 (commit)
       via  5961ff4bf78c4d7dc8e453e236941e03942d851f (commit)
       via  712e8f58f4a51fa392673733b69869ac74d4df44 (commit)
      from  c93627be0371a55ef910c96b8417c1b88ce66d3c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit da401396910c2e24e403eb2c97a2cfac2c6bfbd0
Merge: c93627be0 5961ff4bf
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date:   Sun Jul 19 06:32:48 2026 -0700

    Merge pull request 'doc: fix development guide site navigation' (!399) from Komzpa/postgis:docs/developer-site-navigation into master
    
    Reviewed-on: https://gitea.osgeo.org/postgis/postgis/pulls/399


commit 5961ff4bf78c4d7dc8e453e236941e03942d851f
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Sun Jul 19 16:06:28 2026 +0400

    doc: hide development guide from global menu

diff --git a/doc/development/README.md b/doc/development/README.md
index 35aa5dd3f..a28e66fa0 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -2,8 +2,7 @@
 title: "PostGIS Development Guide"
 date: 2026-06-26
 weight: 10
-geekdocHidden: false
-geekdocCollapseSection: true
+geekdocHidden: true
 ---
 
 This directory is the repository home for PostGIS developer documentation.
diff --git a/doc/development/SKILL.md b/doc/development/SKILL.md
index 35aa5dd3f..a28e66fa0 100644
--- a/doc/development/SKILL.md
+++ b/doc/development/SKILL.md
@@ -2,8 +2,7 @@
 title: "PostGIS Development Guide"
 date: 2026-06-26
 weight: 10
-geekdocHidden: false
-geekdocCollapseSection: true
+geekdocHidden: true
 ---
 
 This directory is the repository home for PostGIS developer documentation.
diff --git a/doc/development/website.md b/doc/development/website.md
index 5285629ef..1a214d55f 100644
--- a/doc/development/website.md
+++ b/doc/development/website.md
@@ -41,13 +41,16 @@ may be copied into `postgis.net` content should include at least `title`,
 `date`, `weight`, and `geekdocHidden`. Do not repeat the front-matter title as a
 Markdown H1: the Geekdoc page layout renders that title already.
 
-The publisher maps this directory's `README.md` to the root `_index.md`.
-Nested section landing pages should live at `<section>/_index.md` and set
-`geekdocCollapseSection: true` to keep the file-tree menu compact. Do not use
-`layout: toplevel` for these pages; that layout appends another child-page list
-after the maintained section content. Draft-only migration aids should set
-`draft: true`, `geekdocHidden: true`, and `geekdocHiddenTocTree: false` so
-normal Hugo builds do not publish them accidentally.
+The publisher maps this directory's `README.md` to the root `_index.md`. The
+root sets `geekdocHidden: true` because the website links the guide from its
+`content/documentation/developer_docs.md` hub; hiding the imported root keeps
+the complete subtree out of the global file-tree menu. Nested section landing
+pages should live at `<section>/_index.md` and set
+`geekdocCollapseSection: true`. Do not use `layout: toplevel` for these pages;
+that layout appends another child-page list after the maintained section
+content. Draft-only migration aids should set `draft: true`,
+`geekdocHidden: true`, and `geekdocHiddenTocTree: false` so normal Hugo builds
+do not publish them accidentally.
 
 ## Content Areas
 
@@ -58,7 +61,7 @@ Website source content that overlaps with repository-maintained developer docs:
 | `content/development/source_code.md` | [Contributing workflow](contributing.md) and [Pull request and maintainer workflow](maintenance/_index.md) |
 | `content/development/getting_involved.md` | [Contributing workflow](contributing.md) |
 | `content/development/bug_reporting.md` | [Contributing workflow](contributing.md) |
-| `content/development/developer_docs.md` | [Documentation workflow](manual.md) and this `doc/development/` index |
+| `content/documentation/developer_docs.md` | [Documentation workflow](manual.md) and this `doc/development/` index |
 | `content/development/versions_eol.md` | [Release process](release-process.md) and [Release and upgrade rules](release/_index.md) |
 | `content/development/rfcs/*.md` | [Governance notes](governance/_index.md) and historical RFC pages |
 | New governance pages outside `rfcs/` | [Governance notes](governance/_index.md) and [PostGIS project inventory](governance/project-inventory.md) |

commit 712e8f58f4a51fa392673733b69869ac74d4df44
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Sun Jul 19 02:50:54 2026 +0400

    doc: fix development guide site navigation

diff --git a/AGENTS.md b/AGENTS.md
index 16312bcf0..232476da5 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -5,24 +5,24 @@ For build, test, and contributor workflow instructions, use
 
 * [`doc/development/environment/ubuntu.md`](doc/development/environment/ubuntu.md) covers local
   dependencies, PostgreSQL setup, build commands, install steps, and cleanup.
-* [`doc/development/testing.md`](doc/development/testing.md) covers regression
+* [`doc/development/testing/_index.md`](doc/development/testing/_index.md) covers regression
   commands, CUnit tests, coverage, dependency guards, and backtraces.
 * [`doc/development/contributing.md`](doc/development/contributing.md) covers Trac,
   code mirrors, mailing lists, and patch submission.
 * [`doc/development/style.md`](doc/development/style.md) covers source formatting,
   comments, Doxygen comments, and naming conventions.
-* [`doc/development/internals.md`](doc/development/internals.md) covers allocator
+* [`doc/development/internals/_index.md`](doc/development/internals/_index.md) covers allocator
   boundaries, PostgreSQL C API macros, detoasting, and geometry serialization
   structures.
 * [`doc/development/website.md`](doc/development/website.md) covers the `postgis.net`
   Hugo repository, website release pointers, and website validation.
-* [`doc/development/maintenance.md`](doc/development/maintenance.md) covers pull
+* [`doc/development/maintenance/_index.md`](doc/development/maintenance/_index.md) covers pull
   request landing, tracker trailers, `NEWS`, branch readback, and external
   service hygiene.
-* [`doc/development/governance.md`](doc/development/governance.md) covers the
+* [`doc/development/governance/_index.md`](doc/development/governance/_index.md) covers the
   current RFC-5 status, umbrella project list, and governance-documentation
   consolidation notes.
-* [`doc/development/release.md`](doc/development/release.md) covers SQL/C API
+* [`doc/development/release/_index.md`](doc/development/release/_index.md) covers SQL/C API
   compatibility, upgrade scripting, dependency guards, and support-window
   changes.
 * [`doc/development/release-process.md`](doc/development/release-process.md) covers
diff --git a/doc/developer.md b/doc/developer.md
index 9fa882e90..58b6c901b 100644
--- a/doc/developer.md
+++ b/doc/developer.md
@@ -1,6 +1,6 @@
-# PostGIS Developer Documentation
+# PostGIS Development Guide
 
 Developer documentation has moved to [doc/development/](development/).
 
 Start with [doc/development/README.md](development/README.md). The former
-developer how-to content is now [doc/development/release.md](development/release.md).
+developer how-to content is now [doc/development/release/_index.md](development/release/_index.md).
diff --git a/doc/development/README.md b/doc/development/README.md
index f6a1ec2ac..35aa5dd3f 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -1,13 +1,11 @@
 ---
-title: "PostGIS Developer Documentation"
+title: "PostGIS Development Guide"
 date: 2026-06-26
 weight: 10
-layout: toplevel
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# PostGIS Developer Documentation
-
 This directory is the repository home for PostGIS developer documentation.
 Trac remains the project issue tracker, but development workflow notes should
 live here so they are reviewed with code and branch changes.
@@ -21,26 +19,22 @@ Modules:
 
 * [Contributing workflow](contributing.md) explains Trac tickets, code mirrors,
   mailing lists, and patch submission.
-* [Development environments](environment.md) links the Ubuntu, Windows, and Docker
-  setup paths.
-* [Ubuntu setup](environment/ubuntu.md) gives a practical package-based setup,
-  build commands, installation into a test cluster, and cleanup.
-* [Windows setup](environment/windows.md) records the current MSYS2 and Winnie
-  MinGW build surfaces.
-* [Testing and debugging](testing.md) explains SQL regression tests, CUnit,
-  dependency guards, and backtraces.
+* [Development environments](environment/_index.md) links the supported local,
+  CI, and container setup paths.
 * [Development TODO](todo.md) records high-level future work ideas that are not
   accepted designs or release blockers.
+* [Testing and debugging](testing/_index.md) explains SQL regression tests, CUnit,
+  dependency guards, and backtraces.
 * [Coding style](style.md) covers C formatting, comments, Doxygen comments, and
   source naming conventions.
 * [Developer tools](tools.md) covers `logbt`, formatting, coverage, and profiling
   entry points.
-* [PostGIS internals](internals.md) covers allocator boundaries, PostgreSQL
+* [PostGIS internals](internals/_index.md) covers allocator boundaries, PostgreSQL
   function macros, detoasting, geometry serialization structures, empty
   geometry semantics, spatial collections, raster affine georeferencing,
   raster physical georeferencing parameters, raster storage/WKB, and
   raster/GDAL driver boundaries.
-* [Release and upgrade rules](release.md) indexes SQL/C API compatibility,
+* [Release and upgrade rules](release/_index.md) indexes SQL/C API compatibility,
   upgrade scripting, dependency guards, regression roles, and support-window
   changes.
 * [Release process](release-process.md) covers version numbering, release
@@ -50,17 +44,11 @@ Modules:
   translated manuals, images, and Doxygen output.
 * [Website maintenance](website.md) covers the `postgis.net` Hugo repository,
   public development pages, release pointer updates, and website validation.
-* [Pull request and maintainer workflow](maintenance.md) covers source-of-truth
+* [Pull request and maintainer workflow](maintenance/_index.md) covers source-of-truth
   branches, mirror PR handling, tracker trailers, `NEWS`, and public readback.
-* [Pull request metadata](maintenance/pull-request-metadata.md) covers labels,
-  milestones, draft state, and mirror metadata for PostGIS pull requests.
-* [Backpatching fixes](maintenance/backpatching.md) covers supported-branch
-  fix propagation, commit provenance, `NEWS`, Trac follow-up, and CI readback.
-* [Governance notes](governance.md) records PSC process, core-contributor
+* [Governance notes](governance/_index.md) records PSC process, core-contributor
   governance, project/service inventory, and governance-documentation
   consolidation notes.
-* [Docker setup](environment/docker.md) summarizes the development container
-  options historically documented on the Trac developer wiki.
 
 The generated Doxygen manuals are published at
 <https://postgis.net/docs/doxygen/>. User-facing manuals remain at
diff --git a/doc/development/SKILL.md b/doc/development/SKILL.md
index f6a1ec2ac..35aa5dd3f 100644
--- a/doc/development/SKILL.md
+++ b/doc/development/SKILL.md
@@ -1,13 +1,11 @@
 ---
-title: "PostGIS Developer Documentation"
+title: "PostGIS Development Guide"
 date: 2026-06-26
 weight: 10
-layout: toplevel
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# PostGIS Developer Documentation
-
 This directory is the repository home for PostGIS developer documentation.
 Trac remains the project issue tracker, but development workflow notes should
 live here so they are reviewed with code and branch changes.
@@ -21,26 +19,22 @@ Modules:
 
 * [Contributing workflow](contributing.md) explains Trac tickets, code mirrors,
   mailing lists, and patch submission.
-* [Development environments](environment.md) links the Ubuntu, Windows, and Docker
-  setup paths.
-* [Ubuntu setup](environment/ubuntu.md) gives a practical package-based setup,
-  build commands, installation into a test cluster, and cleanup.
-* [Windows setup](environment/windows.md) records the current MSYS2 and Winnie
-  MinGW build surfaces.
-* [Testing and debugging](testing.md) explains SQL regression tests, CUnit,
-  dependency guards, and backtraces.
+* [Development environments](environment/_index.md) links the supported local,
+  CI, and container setup paths.
 * [Development TODO](todo.md) records high-level future work ideas that are not
   accepted designs or release blockers.
+* [Testing and debugging](testing/_index.md) explains SQL regression tests, CUnit,
+  dependency guards, and backtraces.
 * [Coding style](style.md) covers C formatting, comments, Doxygen comments, and
   source naming conventions.
 * [Developer tools](tools.md) covers `logbt`, formatting, coverage, and profiling
   entry points.
-* [PostGIS internals](internals.md) covers allocator boundaries, PostgreSQL
+* [PostGIS internals](internals/_index.md) covers allocator boundaries, PostgreSQL
   function macros, detoasting, geometry serialization structures, empty
   geometry semantics, spatial collections, raster affine georeferencing,
   raster physical georeferencing parameters, raster storage/WKB, and
   raster/GDAL driver boundaries.
-* [Release and upgrade rules](release.md) indexes SQL/C API compatibility,
+* [Release and upgrade rules](release/_index.md) indexes SQL/C API compatibility,
   upgrade scripting, dependency guards, regression roles, and support-window
   changes.
 * [Release process](release-process.md) covers version numbering, release
@@ -50,17 +44,11 @@ Modules:
   translated manuals, images, and Doxygen output.
 * [Website maintenance](website.md) covers the `postgis.net` Hugo repository,
   public development pages, release pointer updates, and website validation.
-* [Pull request and maintainer workflow](maintenance.md) covers source-of-truth
+* [Pull request and maintainer workflow](maintenance/_index.md) covers source-of-truth
   branches, mirror PR handling, tracker trailers, `NEWS`, and public readback.
-* [Pull request metadata](maintenance/pull-request-metadata.md) covers labels,
-  milestones, draft state, and mirror metadata for PostGIS pull requests.
-* [Backpatching fixes](maintenance/backpatching.md) covers supported-branch
-  fix propagation, commit provenance, `NEWS`, Trac follow-up, and CI readback.
-* [Governance notes](governance.md) records PSC process, core-contributor
+* [Governance notes](governance/_index.md) records PSC process, core-contributor
   governance, project/service inventory, and governance-documentation
   consolidation notes.
-* [Docker setup](environment/docker.md) summarizes the development container
-  options historically documented on the Trac developer wiki.
 
 The generated Doxygen manuals are published at
 <https://postgis.net/docs/doxygen/>. User-facing manuals remain at
diff --git a/doc/development/contributing.md b/doc/development/contributing.md
index 0ae130882..9576e24ed 100644
--- a/doc/development/contributing.md
+++ b/doc/development/contributing.md
@@ -5,8 +5,6 @@ weight: 20
 geekdocHidden: false
 ---
 
-# Contributing Workflow
-
 PostGIS development planning happens in the
 [PostGIS Trac instance](https://trac.osgeo.org/postgis/). For non-trivial
 changes, file or find a Trac ticket and link your patch, pull request, or public
@@ -50,7 +48,7 @@ convenience. Pull requests on a mirror are welcome, but they are easier to miss
 unless they also have a matching Trac ticket.
 
 Maintainers landing mirror pull requests should follow the
-[Pull request and maintainer workflow](maintenance.md), including canonical
+[Pull request and maintainer workflow](maintenance/_index.md), including canonical
 branch readback, tracker trailers, and `NEWS` conventions.
 
 Subscribe to the
@@ -99,13 +97,13 @@ Patch submission basics:
 * Keep each patch focused on one ticket or reviewable topic.
 * Add regression or CUnit coverage for behavior changes.
 * Run the focused local validation described in [Ubuntu setup](environment/ubuntu.md)
-  and [Testing and debugging](testing.md).
+  and [Testing and debugging](testing/_index.md).
 * Follow [Coding style](style.md) for C naming, formatting, and Doxygen
   comments before writing or submitting source patches.
 * Add documentation in the same change when a feature adds or changes SQL
   user-visible behavior.
 * For SQL API, upgrade, and release-policy changes, read
-  [Release and upgrade rules](release.md) before opening a pull request.
+  [Release and upgrade rules](release/_index.md) before opening a pull request.
 * Git patches sent by email are also accepted; see
   <https://git-send-email.io/> for a practical walkthrough.
 
diff --git a/doc/development/environment.md b/doc/development/environment.md
deleted file mode 100644
index 84ac1ea1c..000000000
--- a/doc/development/environment.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "Development Environments"
-date: 2026-06-26
-weight: 30
-geekdocHidden: false
----
-
-# Development Environments
-
-These pages describe repeatable environments for building and testing PostGIS.
-
-* [Ubuntu setup](environment/ubuntu.md) covers a local Ubuntu package-based environment.
-* [macOS setup](environment/macos.md) covers the Homebrew-based GitHub Actions environment.
-* [FreeBSD setup](environment/freebsd.md) covers the FreeBSD VM GitHub Actions environment.
-* [Windows setup](environment/windows.md) covers the current MSYS2 and Winnie MinGW build
-  surfaces.
-* [Docker setup](environment/docker.md) covers the OSGeo and `postgis-build-env` container
-  workflows.
-
-Keep environment-specific setup here. Put test strategy in [Testing and
-debugging](testing.md), source-formatting rules in [Coding style](style.md),
-and release policy in [Release and upgrade rules](release.md).
diff --git a/doc/development/environment/_index.md b/doc/development/environment/_index.md
new file mode 100644
index 000000000..16e1f508e
--- /dev/null
+++ b/doc/development/environment/_index.md
@@ -0,0 +1,21 @@
+---
+title: "Development Environments"
+date: 2026-06-26
+weight: 30
+geekdocHidden: false
+geekdocCollapseSection: true
+---
+
+These pages describe repeatable environments for building and testing PostGIS.
+
+* [Ubuntu setup](ubuntu.md) covers a local Ubuntu package-based environment.
+* [macOS setup](macos.md) covers the Homebrew-based GitHub Actions environment.
+* [FreeBSD setup](freebsd.md) covers the FreeBSD VM GitHub Actions environment.
+* [Windows setup](windows.md) covers the current MSYS2 and Winnie MinGW build
+  surfaces.
+* [Docker setup](docker.md) covers the OSGeo and `postgis-build-env` container
+  workflows.
+
+Keep environment-specific setup here. Put test strategy in [Testing and
+debugging](../testing/_index.md), source-formatting rules in [Coding style](../style.md),
+and release policy in [Release and upgrade rules](../release/_index.md).
diff --git a/doc/development/environment/docker.md b/doc/development/environment/docker.md
index 480ed33b4..ebbc046ba 100644
--- a/doc/development/environment/docker.md
+++ b/doc/development/environment/docker.md
@@ -5,8 +5,6 @@ weight: 30
 geekdocHidden: false
 ---
 
-# Docker Development Environment
-
 PostGIS has two container families that are useful for development and testing.
 Production images are documented separately at
 <https://github.com/postgis/docker-postgis> and should not be treated as build
diff --git a/doc/development/environment/freebsd.md b/doc/development/environment/freebsd.md
index cb20e65e4..58ec98895 100644
--- a/doc/development/environment/freebsd.md
+++ b/doc/development/environment/freebsd.md
@@ -5,8 +5,6 @@ weight: 30
 geekdocHidden: false
 ---
 
-# FreeBSD Development Environment
-
 The current FreeBSD pull-request build is defined in
 `.github/workflows/ci-freebsd.yml`. Use that workflow as the source of truth
 when checking platform-specific dependencies or flags.
diff --git a/doc/development/environment/macos.md b/doc/development/environment/macos.md
index 261b53e9b..ac5319fea 100644
--- a/doc/development/environment/macos.md
+++ b/doc/development/environment/macos.md
@@ -5,8 +5,6 @@ weight: 20
 geekdocHidden: false
 ---
 
-# macOS Development Environment
-
 The current macOS pull-request build is defined in
 `.github/workflows/ci-macos.yml`. Use that workflow as the source of truth when
 checking platform-specific dependencies or flags.
diff --git a/doc/development/environment/ubuntu.md b/doc/development/environment/ubuntu.md
index e1d1c27de..7ff95ccd6 100644
--- a/doc/development/environment/ubuntu.md
+++ b/doc/development/environment/ubuntu.md
@@ -5,8 +5,6 @@ weight: 10
 geekdocHidden: false
 ---
 
-# Ubuntu Development Environment
-
 This document aims to get an Ubuntu development environment ready quickly so you
 can build and test the PostGIS codebase. The package list below targets Ubuntu
 24.04.
@@ -137,7 +135,7 @@ PostgreSQL instance:
 sudo make install
 ```
 
-See [Testing and debugging](../testing.md) for regression commands, CUnit
+See [Testing and debugging](../testing/_index.md) for regression commands, CUnit
 tests, coverage, dependency guards, and backtrace capture. Optional tooling such
 as `logbt` setup lives in [Developer tools](../tools.md).
 
@@ -157,4 +155,4 @@ If you created a private cluster instead of using the packaged one, stop it with
 Review [Coding style](../style.md) for source-formatting preferences, including
 `git clang-format` usage for C and C++ changes. For release policies, upgrade
 implications, and naming conventions for new features, read
-[Release and upgrade rules](../release.md).
+[Release and upgrade rules](../release/_index.md).
diff --git a/doc/development/environment/windows.md b/doc/development/environment/windows.md
index cbde8a78f..98471c91f 100644
--- a/doc/development/environment/windows.md
+++ b/doc/development/environment/windows.md
@@ -5,8 +5,6 @@ weight: 20
 geekdocHidden: false
 ---
 
-# Windows Development Environments
-
 PostGIS has two maintained Windows build surfaces:
 
 * The MSYS2 GitHub Actions job in `.github/workflows/msys.yml`.
diff --git a/doc/development/governance.md b/doc/development/governance/_index.md
similarity index 96%
rename from doc/development/governance.md
rename to doc/development/governance/_index.md
index 33cc58e26..a99283482 100644
--- a/doc/development/governance.md
+++ b/doc/development/governance/_index.md
@@ -3,10 +3,9 @@ title: "Governance Notes"
 date: 2026-06-26
 weight: 120
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# Governance Notes
-
 This page is the maintained source for current PostGIS governance text in this
 repository. Published governance pages on <https://postgis.net/development/>
 remain the public reference until the PSC publishes this maintained structure
@@ -77,12 +76,12 @@ historical RFC text.
 ## Project and Service Inventory
 
 Current umbrella projects, related repositories, and project-operated services
-are tracked in [PostGIS project inventory](governance/project-inventory.md). Keep source
+are tracked in [PostGIS project inventory](project-inventory.md). Keep source
 routing and service ownership there, rather than mixing it into the PSC process
 or historical RFC notes.
 
 For source-of-truth rules when landing pull requests or routing component work,
-see [Pull request and maintainer workflow](maintenance.md).
+see [Pull request and maintainer workflow](../maintenance/_index.md).
 
 ## Related Projects To Check Before Major Releases
 
diff --git a/doc/development/governance/project-inventory.md b/doc/development/governance/project-inventory.md
index 860354c04..ceec9548f 100644
--- a/doc/development/governance/project-inventory.md
+++ b/doc/development/governance/project-inventory.md
@@ -5,8 +5,6 @@ weight: 10
 geekdocHidden: false
 ---
 
-# PostGIS Project Inventory
-
 This page records the project codebases and services that need governance or
 maintainer routing. It is intentionally separate from the PSC process so the
 governance notes can describe how decisions are made while this page describes
@@ -29,7 +27,7 @@ explicit in-tree backpatches.
 | `postgis_tiger_geocoder` | <https://git.osgeo.org/gitea/postgis/postgis_tiger_geocoder> |
 
 For pull-request routing, source-of-truth branches, and mirror handling, see
-[Pull request and maintainer workflow](../maintenance.md).
+[Pull request and maintainer workflow](../maintenance/_index.md).
 
 ## Project Services
 
@@ -39,7 +37,7 @@ For pull-request routing, source-of-truth branches, and mirror handling, see
 | `postgis.net/stuff` | Release tarballs, checksums, and generated documentation artefacts | [Release process](../release-process.md) |
 | Debbie build host and build jobs | Release builds, distribution checks, and build-bot jobs referenced during release work | [Release process](../release-process.md) |
 | OSGeo Trac | Tickets, legacy wiki, roadmap, reports, and historical project records | [Contributing workflow](../contributing.md) |
-| Weblate | Translation repository maintenance for the PostGIS manual | [Pull request and maintainer workflow](../maintenance.md) and [Manual documentation workflow](../manual.md) |
+| Weblate | Translation repository maintenance for the PostGIS manual | [Pull request and maintainer workflow](../maintenance/_index.md) and [Manual documentation workflow](../manual.md) |
 | Mailing lists and chat | Public development discussion, user support, and community coordination | [Contributing workflow](../contributing.md) |
 
 Keep credentials, server-specific secrets, and deployment tokens out of this
diff --git a/doc/development/internals.md b/doc/development/internals/_index.md
similarity index 59%
rename from doc/development/internals.md
rename to doc/development/internals/_index.md
index 2f2270615..afc1e2555 100644
--- a/doc/development/internals.md
+++ b/doc/development/internals/_index.md
@@ -3,51 +3,50 @@ title: "PostGIS Internals"
 date: 2026-06-26
 weight: 70
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# PostGIS Internals
-
 These notes cover implementation details that are useful when working inside
 PostGIS rather than only using the SQL API.
 
 ## Core SQL And Memory
 
-* [Memory management](internals/memory.md) covers allocator boundaries and ownership rules.
-* [PostgreSQL internals for PostGIS developers](internals/postgresql.md) covers PostgreSQL
+* [Memory management](memory.md) covers allocator boundaries and ownership rules.
+* [PostgreSQL internals for PostGIS developers](postgresql.md) covers PostgreSQL
   C function macros, varlena detoasting, serialized geometry handling, and a
   typical SQL function flow.
 
 ## Geometry And Measurement
 
-* [Empty geometry semantics](internals/empty-geometry.md) covers how `EMPTY` differs
+* [Empty geometry semantics](empty-geometry.md) covers how `EMPTY` differs
   from SQL `NULL`, how empties are serialized and indexed, and how accessors,
   measurements, predicates, and collections handle empty inputs.
-* [Spatial collections and raster/vector crossings](internals/spatial-collections.md)
+* [Spatial collections and raster/vector crossings](spatial-collections.md)
   covers current geometry collection handling and explains how the retired
   raster/vector spatial-collection abstraction relates to current code.
-* [2D and 3D distance internals](internals/distance.md) covers how geometry distance
+* [2D and 3D distance internals](distance.md) covers how geometry distance
   functions dispatch 2D and 3D candidate checks, including segment-segment and
   surface cases.
-* [Precision and tolerance internals](internals/precision-tolerance.md) maps the current
+* [Precision and tolerance internals](precision-tolerance.md) maps the current
   GEOS grid-size, snap-tolerance, topology-precision, and MVT quantization
   surfaces.
 
 ## Raster Internals
 
-* [Raster affine georeferencing](internals/raster-affine.md) covers the scale, skew,
+* [Raster affine georeferencing](raster-affine.md) covers the scale, skew,
   rotation, and upper-left coefficients used to convert raster cell
   coordinates into spatial coordinates.
-* [Raster physical georeferencing parameters](internals/raster-physical-parameters.md)
+* [Raster physical georeferencing parameters](raster-physical-parameters.md)
   covers the reverse calculation from stored affine coefficients back to pixel
   sizes, rotation, and basis-vector separation.
-* [Raster storage and WKB](internals/raster-storage.md) covers the current
+* [Raster storage and WKB](raster-storage.md) covers the current
   PostgreSQL varlena representation, Raster WKB/HexWKB paths, out-db band
   storage, and raster catalog contracts.
-* [PostGIS Raster and the GDAL driver](internals/raster-gdal-driver.md) records the
+* [PostGIS Raster and the GDAL driver](raster-gdal-driver.md) records the
   boundary between PostGIS-maintained raster storage/catalog behavior and the
   external GDAL `PostGISRaster` driver.
 
 ## Topology Internals
 
-* [Topology internals](internals/topology.md) covers internal topology
+* [Topology internals](topology.md) covers internal topology
   implementation helpers such as edge end stars.
diff --git a/doc/development/internals/distance.md b/doc/development/internals/distance.md
index c3d30fabe..0c6539ce0 100644
--- a/doc/development/internals/distance.md
+++ b/doc/development/internals/distance.md
@@ -5,8 +5,6 @@ weight: 90
 geekdocHidden: false
 ---
 
-# 2D and 3D Distance Internals
-
 This page is the maintained version of the useful design notes from the Trac
 `3DDistancecalc` page, checked against the current distance code in
 `liblwgeom/measures.c`, `liblwgeom/measures3d.c`, and the SQL wrappers in
diff --git a/doc/development/internals/empty-geometry.md b/doc/development/internals/empty-geometry.md
index 914efbec3..0903a6745 100644
--- a/doc/development/internals/empty-geometry.md
+++ b/doc/development/internals/empty-geometry.md
@@ -5,8 +5,6 @@ weight: 30
 geekdocHidden: false
 ---
 
-# Empty geometry semantics
-
 Empty geometries are valid geometry values with no coordinates. They are not
 SQL `NULL`: `NULL` means an unknown or absent SQL value, while `EMPTY` is a
 known geometry value that can be produced by a successful spatial operation.
diff --git a/doc/development/internals/memory.md b/doc/development/internals/memory.md
index cb9774125..999ddd4ff 100644
--- a/doc/development/internals/memory.md
+++ b/doc/development/internals/memory.md
@@ -5,8 +5,6 @@ weight: 10
 geekdocHidden: false
 ---
 
-# Memory Management
-
 Use the allocator that matches the layer you are editing:
 
 | Area | Allocators |
diff --git a/doc/development/internals/postgresql.md b/doc/development/internals/postgresql.md
index 1d9aa917e..c001bbfb7 100644
--- a/doc/development/internals/postgresql.md
+++ b/doc/development/internals/postgresql.md
@@ -5,8 +5,6 @@ weight: 20
 geekdocHidden: false
 ---
 
-# PostgreSQL Internals for PostGIS Developers
-
 This page collects implementation notes for C code that crosses the PostgreSQL
 extension boundary. Use [Memory management](memory.md) for allocator ownership
 rules.
diff --git a/doc/development/internals/precision-tolerance.md b/doc/development/internals/precision-tolerance.md
index 167545b30..ef0474a43 100644
--- a/doc/development/internals/precision-tolerance.md
+++ b/doc/development/internals/precision-tolerance.md
@@ -5,8 +5,6 @@ weight: 100
 geekdocHidden: false
 ---
 
-# Precision And Tolerance Internals
-
 PostGIS does not have one global tolerance model for all geometry operations.
 Precision and tolerance are handled at the API boundary where they affect a
 specific algorithm.
diff --git a/doc/development/internals/raster-affine.md b/doc/development/internals/raster-affine.md
index 712b589e6..aaeb17dfa 100644
--- a/doc/development/internals/raster-affine.md
+++ b/doc/development/internals/raster-affine.md
@@ -5,8 +5,6 @@ weight: 50
 geekdocHidden: false
 ---
 
-# Raster affine georeferencing
-
 PostGIS raster stores the relationship between raster cell coordinates
 `(i, j)` and spatial coordinates `(x, y)` as the same six-coefficient
 geotransform used by GDAL world files:
diff --git a/doc/development/internals/raster-gdal-driver.md b/doc/development/internals/raster-gdal-driver.md
index 7b4acd483..037053ee9 100644
--- a/doc/development/internals/raster-gdal-driver.md
+++ b/doc/development/internals/raster-gdal-driver.md
@@ -5,8 +5,6 @@ weight: 80
 geekdocHidden: false
 ---
 
-# PostGIS Raster And The GDAL Driver
-
 The PostGIS Raster SQL type, loader, catalog views, and server-side GDAL use live
 in this repository. The `PostGISRaster` GDAL driver itself lives in GDAL, so
 developer documentation here should explain the boundary and the PostGIS-side
diff --git a/doc/development/internals/raster-physical-parameters.md b/doc/development/internals/raster-physical-parameters.md
index d8b069c8f..bea93618d 100644
--- a/doc/development/internals/raster-physical-parameters.md
+++ b/doc/development/internals/raster-physical-parameters.md
@@ -5,8 +5,6 @@ weight: 60
 geekdocHidden: false
 ---
 
-# Raster physical georeferencing parameters
-
 PostGIS raster stores georeferencing as six affine coefficients, but some SQL
 and C entry points expose a more physical model:
 
diff --git a/doc/development/internals/raster-storage.md b/doc/development/internals/raster-storage.md
index a8efafdce..02661e6e8 100644
--- a/doc/development/internals/raster-storage.md
+++ b/doc/development/internals/raster-storage.md
@@ -5,8 +5,6 @@ weight: 70
 geekdocHidden: false
 ---
 
-# Raster storage and WKB
-
 PostGIS Raster has three related representations that are easy to confuse:
 
 * The PostgreSQL `raster` type is a variable-length value declared in
diff --git a/doc/development/internals/spatial-collections.md b/doc/development/internals/spatial-collections.md
index 040e130ac..fe7f5c1ae 100644
--- a/doc/development/internals/spatial-collections.md
+++ b/doc/development/internals/spatial-collections.md
@@ -5,8 +5,6 @@ weight: 40
 geekdocHidden: false
 ---
 
-# Spatial collections and raster/vector crossings
-
 The historical `DevWikiSpatialCollectionTutorial` page described an internal
 `SPATIAL_COLLECTION` abstraction intended to erase the difference between
 vector geometries and rasters. That abstraction is not present in the current
diff --git a/doc/development/internals/topology.md b/doc/development/internals/topology.md
index 11541b574..53e13500c 100644
--- a/doc/development/internals/topology.md
+++ b/doc/development/internals/topology.md
@@ -5,8 +5,6 @@ weight: 110
 geekdocHidden: false
 ---
 
-# Topology Internals
-
 The topology extension has SQL-facing documentation in the user manual. This
 page is for implementation notes that matter when changing the C topology
 engine or its PostgreSQL wrappers.
diff --git a/doc/development/maintenance.md b/doc/development/maintenance/_index.md
similarity index 88%
rename from doc/development/maintenance.md
rename to doc/development/maintenance/_index.md
index f20d0a75d..a3a0a9bb1 100644
--- a/doc/development/maintenance.md
+++ b/doc/development/maintenance/_index.md
@@ -3,13 +3,12 @@ title: "Pull Request and Maintainer Workflow"
 date: 2026-06-26
 weight: 130
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# Pull Request and Maintainer Workflow
-
 This page collects maintainer-facing workflow notes for landing patches and
 pull requests. Contributor-facing setup and submission notes live in
-[Contributing workflow](contributing.md).
+[Contributing workflow](../contributing.md).
 
 ## Source of Truth
 
@@ -50,8 +49,8 @@ design notes, or documentation in that component repository.
 
 RFC-5, published at <https://postgis.net/development/rfcs/rfc05/>, records the
 core contributor guideline for commit practice, Trac references, `NEWS`, code
-provenance, and legal review. Use [Governance notes](governance.md) and
-[PostGIS project inventory](governance/project-inventory.md) for current PSC
+provenance, and legal review. Use [Governance notes](../governance/_index.md) and
+[PostGIS project inventory](../governance/project-inventory.md) for current PSC
 process, repository routing, and service ownership.
 
 Write access to the canonical repository is granted by the Project Steering
@@ -66,18 +65,18 @@ from other projects, and discuss unusual licensing situations with the PSC or
 OSGeo legal counsel before committing.
 
 For the maintained commit-message, branch-target, authorship, and post-push
-rules distilled from RFC-5, see [Commit and branch guidelines](maintenance/commit-guidelines.md).
+rules distilled from RFC-5, see [Commit and branch guidelines](commit-guidelines.md).
 For supported-branch fix propagation, provenance, `NEWS`, and Trac follow-up
-rules, see [Backpatching fixes](maintenance/backpatching.md).
+rules, see [Backpatching fixes](backpatching.md).
 For labels, milestones, draft state, and mirror metadata on pull requests, see
-[Pull request metadata](maintenance/pull-request-metadata.md).
+[Pull request metadata](pull-request-metadata.md).
 
 ## First Pass
 
 Before editing a public branch, public pull request body, or Trac ticket state,
 read the current source of truth:
 
-* `CONTRIBUTING.md`, [Coding style](style.md), and the relevant page under
+* `CONTRIBUTING.md`, [Coding style](../style.md), and the relevant page under
   this directory.
 * The Trac ticket, including all comments, attachments, and linked context.
 * The pull request description, commits, diff, review threads, and CI state.
@@ -94,13 +93,13 @@ When a mirror pull request, mailing-list patch, or Trac ticket needs contributor
 follow-up instead of maintainer-side branch repair, point the contributor to the
 specific workflow section rather than sending them back to this maintainer page:
 
-* [Contributing workflow](contributing.md) for Trac tickets, mirror pull
+* [Contributing workflow](../contributing.md) for Trac tickets, mirror pull
   requests, mailing lists, chat, and security reports.
-* [First contribution path](contributing.md#first-contribution-path) for a
+* [First contribution path](../contributing.md#first-contribution-path) for a
   small-patch checklist from fork through focused validation.
-* [Development environments](environment.md) and
-  [Testing and debugging](testing.md) for local build and regression setup.
-* [Release and upgrade rules](release.md) when a proposed change affects SQL
+* [Development environments](../environment/_index.md) and
+  [Testing and debugging](../testing/_index.md) for local build and regression setup.
+* [Release and upgrade rules](../release/_index.md) when a proposed change affects SQL
   API compatibility, extension upgrades, dependency policy, or backpatch scope.
 
 ## Review and CI Readback
@@ -116,7 +115,7 @@ head commit that produced it, not to a later force-push.
 ## Commit Messages
 
 The maintained commit-message and branch-target rules live in
-[Commit and branch guidelines](maintenance/commit-guidelines.md). The short summary below is
+[Commit and branch guidelines](commit-guidelines.md). The short summary below is
 for common pull request landings.
 
 For a single-commit pull request that can be represented cleanly on the target
@@ -170,7 +169,7 @@ Before backpatching, confirm the target release line is open in `Version.config`
 and `NEWS`. Stable branches normally receive bug fixes, not new features. End of
 life branches should not receive new work without explicit release-manager
 direction.
-Use [Backpatching fixes](maintenance/backpatching.md) for the two-pass branch
+Use [Backpatching fixes](backpatching.md) for the two-pass branch
 scan, one-to-one commit provenance, `NEWS` expectations, and per-ticket Trac
 follow-up wording.
 
@@ -197,4 +196,4 @@ work before merge or reset operations, and unlock when the repository is clean.
 For website maintenance, use the OSGeo Gitea `postgis/postgis.net` repository.
 The site is a Hugo project; update release pointers and news there during
 release work, run `make check`, and do not edit the vendored theme. See
-[PostGIS website maintenance](website.md).
+[PostGIS website maintenance](../website.md).
diff --git a/doc/development/maintenance/backpatching.md b/doc/development/maintenance/backpatching.md
index ea6f02952..4531fdc19 100644
--- a/doc/development/maintenance/backpatching.md
+++ b/doc/development/maintenance/backpatching.md
@@ -5,8 +5,6 @@ weight: 20
 geekdocHidden: false
 ---
 
-# Backpatching Fixes
-
 Backpatching keeps supported release lines consistent without turning stable
 branches into feature branches. Use this checklist when a bug fix, release-line
 CI fix, or security fix may need to move between `master` and supported
diff --git a/doc/development/maintenance/commit-guidelines.md b/doc/development/maintenance/commit-guidelines.md
index fcc5df73f..90497b430 100644
--- a/doc/development/maintenance/commit-guidelines.md
+++ b/doc/development/maintenance/commit-guidelines.md
@@ -5,8 +5,6 @@ weight: 10
 geekdocHidden: false
 ---
 
-# Commit and Branch Guidelines
-
 This page keeps the source-control practices from the historical RFC-5
 contributor guideline in a maintained form. Use it together with
 [Contributing workflow](../contributing.md), [Coding style](../style.md), and the
diff --git a/doc/development/maintenance/pull-request-metadata.md b/doc/development/maintenance/pull-request-metadata.md
index 0b40da206..cc53221f5 100644
--- a/doc/development/maintenance/pull-request-metadata.md
+++ b/doc/development/maintenance/pull-request-metadata.md
@@ -5,8 +5,6 @@ weight: 30
 geekdocHidden: false
 ---
 
-# Pull Request Metadata
-
 Use labels, milestones, and draft state to make the maintainer queue sortable.
 They are triage metadata, not a substitute for reading the pull request body,
 the Trac ticket, the diff, current review threads, and CI.
diff --git a/doc/development/manual.md b/doc/development/manual.md
index 6b57059b9..dc902d667 100644
--- a/doc/development/manual.md
+++ b/doc/development/manual.md
@@ -5,8 +5,6 @@ weight: 100
 geekdocHidden: false
 ---
 
-# Manual Documentation Workflow
-
 PostGIS documentation is written in DocBook XML under `doc/`. The root file is
 `doc/postgis.xml`, which includes chapter and reference XML files. The same XML
 also generates SQL comments for functions.
@@ -81,7 +79,7 @@ pixels are embedded in the generated SVG container rather than checked in as a
 manual screenshot.
 
 Garden checks combine documentation examples with behavior validation. Keep the
-command and review guidance in [Testing and debugging](testing.md#garden-checks)
+command and review guidance in [Testing and debugging](testing/_index.md#garden-checks)
 and link back here when manual examples need attention.
 
 Generated Doxygen documentation for supported branches is linked from the
diff --git a/doc/development/release-process.md b/doc/development/release-process.md
index d9ea7e381..579e873e1 100644
--- a/doc/development/release-process.md
+++ b/doc/development/release-process.md
@@ -5,8 +5,6 @@ weight: 90
 geekdocHidden: false
 ---
 
-# Release Process
-
 Date: 2022-09-25
 
 ## Versioning Scheme
diff --git a/doc/development/release.md b/doc/development/release/_index.md
similarity index 66%
rename from doc/development/release.md
rename to doc/development/release/_index.md
index f1efc1524..e1ed60806 100644
--- a/doc/development/release.md
+++ b/doc/development/release/_index.md
@@ -3,10 +3,9 @@ title: "Release and Upgrade Rules"
 date: 2026-06-26
 weight: 80
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# Release and Upgrade Rules
-
 This directory collects release-policy and upgrade-safety rules consolidated
 from the former `doc/developer.md` and the developer wiki. Use it when a patch
 changes SQL API, C API, extension upgrade behavior, dependency requirements, or
@@ -14,17 +13,17 @@ supported PostgreSQL versions.
 
 ## Topics
 
-* [API compatibility](release/api.md) indexes SQL/C API compatibility rules.
-* [Versioning policy](release/versioning.md) explains version terminology, library naming,
+* [API compatibility](api.md) indexes SQL/C API compatibility rules.
+* [Versioning policy](versioning.md) explains version terminology, library naming,
   and release-line compatibility constraints.
-* [Deprecating and removing API](release/deprecation.md) explains SQL-visible object
+* [Deprecating and removing API](deprecation.md) explains SQL-visible object
   removals and C API stubs for `pg_upgrade`.
-* [SQL upgrade and deprecation](release/sql-scripting.md) explains `Availability:`,
+* [SQL upgrade and deprecation](sql-scripting.md) explains `Availability:`,
   `Changed:`, `Replaces`, before/after upgrade hooks, and parser-sensitive SQL
   style.
-* [Dependency and support guards](release/dependencies.md) explains dependency-version
+* [Dependency and support guards](dependencies.md) explains dependency-version
   guards and the checklist for dropping PostgreSQL support.
-* [Testing and debugging](testing.md) explains sandboxed regression roles used
+* [Testing and debugging](../testing/_index.md) explains sandboxed regression roles used
   by CI and downstream builders.
 
 ## Quick Rules
diff --git a/doc/development/release/api.md b/doc/development/release/api.md
index 69116886a..ee984937f 100644
--- a/doc/development/release/api.md
+++ b/doc/development/release/api.md
@@ -5,8 +5,6 @@ weight: 10
 geekdocHidden: false
 ---
 
-# API Compatibility
-
 Use these pages when a patch changes user-visible SQL objects, C symbols,
 extension library names, or upgrade-sensitive compatibility rules.
 
diff --git a/doc/development/release/dependencies.md b/doc/development/release/dependencies.md
index d8ac90df4..9d6c91827 100644
--- a/doc/development/release/dependencies.md
+++ b/doc/development/release/dependencies.md
@@ -5,8 +5,6 @@ weight: 50
 geekdocHidden: false
 ---
 
-# Dependency and Support Guards
-
 This page explains how to guard functionality that depends on newer libraries
 and how to remove support for older PostgreSQL versions.
 
diff --git a/doc/development/release/deprecation.md b/doc/development/release/deprecation.md
index 271a27c5f..918b478b5 100644
--- a/doc/development/release/deprecation.md
+++ b/doc/development/release/deprecation.md
@@ -5,8 +5,6 @@ weight: 30
 geekdocHidden: false
 ---
 
-# Deprecating and Removing API
-
 Several removal types affect user upgrades and must be considered carefully:
 
 * SQL API functions
diff --git a/doc/development/release/sql-scripting.md b/doc/development/release/sql-scripting.md
index 6a5b47e26..77c2ea8ee 100644
--- a/doc/development/release/sql-scripting.md
+++ b/doc/development/release/sql-scripting.md
@@ -5,8 +5,6 @@ weight: 40
 geekdocHidden: false
 ---
 
-# SQL Upgrade and Deprecation
-
 This page covers SQL API changes, upgrade metadata comments, upgrade hooks, and
 parser-sensitive SQL style used by PostGIS upgrade-script generators.
 
diff --git a/doc/development/release/versioning.md b/doc/development/release/versioning.md
index eb4452831..0b81b3172 100644
--- a/doc/development/release/versioning.md
+++ b/doc/development/release/versioning.md
@@ -5,8 +5,6 @@ weight: 20
 geekdocHidden: false
 ---
 
-# Versioning Policy
-
 PostGIS version names use three digits separated by periods:
 
 ```text
diff --git a/doc/development/style.md b/doc/development/style.md
index c46faee1e..d075dfee1 100644
--- a/doc/development/style.md
+++ b/doc/development/style.md
@@ -5,13 +5,11 @@ weight: 60
 geekdocHidden: false
 ---
 
-# Coding Style Guidelines
-
 This page covers source formatting, comments, Doxygen comments, and naming
 conventions. For broader developer workflow notes, including release policy,
 SQL API upgrade rules, and the `Availability:`, `Changed:`, and `Replaces`
 comments parsed by the upgrade script generator, see
-[PostGIS Developer Documentation](README.md).
+[PostGIS Development Guide](README.md).
 
 ## Preamble
 
diff --git a/doc/development/testing.md b/doc/development/testing/_index.md
similarity index 97%
rename from doc/development/testing.md
rename to doc/development/testing/_index.md
index 5732963d7..c03319aee 100644
--- a/doc/development/testing.md
+++ b/doc/development/testing/_index.md
@@ -3,10 +3,9 @@ title: "Testing and Debugging"
 date: 2026-06-26
 weight: 40
 geekdocHidden: false
+geekdocCollapseSection: true
 ---
 
-# Testing and Debugging
-
 PostGIS uses both SQL regression tests and CUnit tests. Choose the lowest layer
 that exercises the behavior you changed.
 
@@ -82,7 +81,7 @@ unprivileged.
 ## Standard Test Runs
 
 Tests expect PostgreSQL to be running and the current user to be able to create
-databases. The setup in [Building PostGIS](environment/ubuntu.md) configures a packaged
+databases. The setup in [Building PostGIS](../environment/ubuntu.md) configures a packaged
 cluster for local testing.
 
 Export connection parameters so every helper uses the same cluster:
@@ -133,7 +132,7 @@ Other useful targets:
   is public, use `@handle (GitHub user: partial name)` to credit both forms and
   keep all handle-first entries together at the start of the list. Do not infer
   a person's name from an email address.
-* [CI inventory standards](testing/ci.md) describe how to keep build-bot and badge
+* [CI inventory standards](ci.md) describe how to keep build-bot and badge
   inventories checkable instead of copying stale dashboard markup into
   maintained prose.
 
@@ -193,7 +192,7 @@ Open `coverage-html/index.html` in a browser or upload the report to CI
 artifacts to inspect missing lines.
 
 If you rely on the `ci/github/run_*.sh` wrappers, export `PGHOME` and `PGDATA`
-as described in [Building PostGIS](environment/ubuntu.md) and replace
+as described in [Building PostGIS](../environment/ubuntu.md) and replace
 `/usr/local/pgsql/bin/pg_ctl` in those scripts with the packaged location or
 create a symlink at `/usr/local/pgsql/bin` pointing to `${PGHOME}/bin`.
 
diff --git a/doc/development/testing/ci.md b/doc/development/testing/ci.md
index 6cfeb9082..bc27ffe0e 100644
--- a/doc/development/testing/ci.md
+++ b/doc/development/testing/ci.md
@@ -5,8 +5,6 @@ weight: 10
 geekdocHidden: false
 ---
 
-# CI Inventory Standards
-
 The old Trac `ContinuousIntegration` page is a useful warning: a build-badge
 dashboard combines live service URLs, branch names, CI job names, dependency
 versions, and human-readable host notes. That kind of table becomes stale
@@ -87,7 +85,7 @@ readback.
 
 ## Relationship To Other Docs
 
-Use [Testing and debugging](../testing.md) for test commands and local validation
+Use [Testing and debugging](_index.md) for test commands and local validation
 workflows. Use [Release process](../release-process.md) for release-manager
 greenlight checks, Debbie release jobs, and branch-opening steps. Use
 [Website maintenance](../website.md) and the public website compatibility matrix
diff --git a/doc/development/todo.md b/doc/development/todo.md
index 8afc22cbf..8b5a2c183 100644
--- a/doc/development/todo.md
+++ b/doc/development/todo.md
@@ -5,8 +5,6 @@ weight: 35
 geekdocHidden: false
 ---
 
-# Development TODO
-
 This page records high-level development ideas that survived the Trac/wiki
 documentation migration but are not accepted designs, release blockers, or
 scheduled work. Move an item to a Trac ticket, design document, or pull request
diff --git a/doc/development/tools.md b/doc/development/tools.md
index d7d7bb6bb..e4ff764e3 100644
--- a/doc/development/tools.md
+++ b/doc/development/tools.md
@@ -5,8 +5,6 @@ weight: 50
 geekdocHidden: false
 ---
 
-# Developer Tools
-
 These tools support debugging, formatting, profiling, and coverage work. Install
 the relevant packages through your development environment first, then use the
 focused workflow for the task at hand.
@@ -26,7 +24,7 @@ ulimit -c unlimited
 
 When running under constrained CI where you cannot change `kernel.core_pattern`,
 skip the `logbt` setup and use the manual `gdb` workflow in
-[Testing and debugging](testing.md#backtraces).
+[Testing and debugging](testing/_index.md#backtraces).
 
 ## Formatting
 
@@ -35,7 +33,7 @@ rules.
 
 ## Coverage
 
-Use the coverage workflow in [Testing and debugging](testing.md#coverage).
+Use the coverage workflow in [Testing and debugging](testing/_index.md#coverage).
 
 ## Profiling
 
diff --git a/doc/development/website.md b/doc/development/website.md
index b457ae047..5285629ef 100644
--- a/doc/development/website.md
+++ b/doc/development/website.md
@@ -5,8 +5,6 @@ weight: 110
 geekdocHidden: false
 ---
 
-# PostGIS Website Maintenance
-
 The public website source lives in the OSGeo Gitea repository:
 
 ```sh
@@ -40,10 +38,16 @@ uses `tomlq`, `curl`, and `md5sum`.
 
 Website content pages use YAML front matter. Developer documentation pages that
 may be copied into `postgis.net` content should include at least `title`,
-`date`, `weight`, and `geekdocHidden`. Section landing pages may also set
-`layout: toplevel`. Draft-only migration aids should set `draft: true`,
-`geekdocHidden: true`, and `geekdocHiddenTocTree: false` so normal Hugo builds
-do not publish them accidentally.
+`date`, `weight`, and `geekdocHidden`. Do not repeat the front-matter title as a
+Markdown H1: the Geekdoc page layout renders that title already.
+
+The publisher maps this directory's `README.md` to the root `_index.md`.
+Nested section landing pages should live at `<section>/_index.md` and set
+`geekdocCollapseSection: true` to keep the file-tree menu compact. Do not use
+`layout: toplevel` for these pages; that layout appends another child-page list
+after the maintained section content. Draft-only migration aids should set
+`draft: true`, `geekdocHidden: true`, and `geekdocHiddenTocTree: false` so
+normal Hugo builds do not publish them accidentally.
 
 ## Content Areas
 
@@ -51,15 +55,15 @@ Website source content that overlaps with repository-maintained developer docs:
 
 | Website source | Repository-maintained destination |
 |----------------|-----------------------------------|
-| `content/development/source_code.md` | [Contributing workflow](contributing.md) and [Pull request and maintainer workflow](maintenance.md) |
+| `content/development/source_code.md` | [Contributing workflow](contributing.md) and [Pull request and maintainer workflow](maintenance/_index.md) |
 | `content/development/getting_involved.md` | [Contributing workflow](contributing.md) |
 | `content/development/bug_reporting.md` | [Contributing workflow](contributing.md) |
 | `content/development/developer_docs.md` | [Documentation workflow](manual.md) and this `doc/development/` index |
-| `content/development/versions_eol.md` | [Release process](release-process.md) and [Release and upgrade rules](release.md) |
-| `content/development/rfcs/*.md` | [Governance notes](governance.md) and historical RFC pages |
-| New governance pages outside `rfcs/` | [Governance notes](governance.md) and [PostGIS project inventory](governance/project-inventory.md) |
+| `content/development/versions_eol.md` | [Release process](release-process.md) and [Release and upgrade rules](release/_index.md) |
+| `content/development/rfcs/*.md` | [Governance notes](governance/_index.md) and historical RFC pages |
+| New governance pages outside `rfcs/` | [Governance notes](governance/_index.md) and [PostGIS project inventory](governance/project-inventory.md) |
 | `content/community/mailinglists.md` and `content/community/chat.md` | [Contributing workflow](contributing.md) |
-| `content/community/conduct.md` | [Governance notes](governance.md) |
+| `content/community/conduct.md` | [Governance notes](governance/_index.md) |
 | `content/documentation/manual.md` | [Documentation workflow](manual.md) |
 | `content/documentation/training.md` | Public website; only the workshop repository is an umbrella project |
 
@@ -75,7 +79,7 @@ keep repository guidance in [Dependency support](release/dependencies.md).
 The maintained governance text in this repository should publish to ordinary
 website governance pages instead of replacing the old numbered RFC files in
 place. Keep `content/development/rfcs/*.md` as historical RFC archives, and use
-the repository [Governance notes](governance.md) plus
+the repository [Governance notes](governance/_index.md) plus
 [PostGIS project inventory](governance/project-inventory.md) as the source for
 the current PSC process, core-contributor rules, umbrella projects, and project
 service inventory.

-----------------------------------------------------------------------

Summary of changes:
 AGENTS.md                                          | 10 +++----
 doc/developer.md                                   |  4 +--
 doc/development/README.md                          | 33 +++++++---------------
 doc/development/SKILL.md                           | 33 +++++++---------------
 doc/development/contributing.md                    |  8 ++----
 doc/development/environment.md                     | 22 ---------------
 doc/development/environment/_index.md              | 21 ++++++++++++++
 doc/development/environment/docker.md              |  2 --
 doc/development/environment/freebsd.md             |  2 --
 doc/development/environment/macos.md               |  2 --
 doc/development/environment/ubuntu.md              |  6 ++--
 doc/development/environment/windows.md             |  2 --
 .../{governance.md => governance/_index.md}        |  7 ++---
 doc/development/governance/project-inventory.md    |  6 ++--
 .../{internals.md => internals/_index.md}          | 25 ++++++++--------
 doc/development/internals/distance.md              |  2 --
 doc/development/internals/empty-geometry.md        |  2 --
 doc/development/internals/memory.md                |  2 --
 doc/development/internals/postgresql.md            |  2 --
 doc/development/internals/precision-tolerance.md   |  2 --
 doc/development/internals/raster-affine.md         |  2 --
 doc/development/internals/raster-gdal-driver.md    |  2 --
 .../internals/raster-physical-parameters.md        |  2 --
 doc/development/internals/raster-storage.md        |  2 --
 doc/development/internals/spatial-collections.md   |  2 --
 doc/development/internals/topology.md              |  2 --
 .../{maintenance.md => maintenance/_index.md}      | 33 +++++++++++-----------
 doc/development/maintenance/backpatching.md        |  2 --
 doc/development/maintenance/commit-guidelines.md   |  2 --
 .../maintenance/pull-request-metadata.md           |  2 --
 doc/development/manual.md                          |  4 +--
 doc/development/release-process.md                 |  2 --
 doc/development/{release.md => release/_index.md}  | 15 +++++-----
 doc/development/release/api.md                     |  2 --
 doc/development/release/dependencies.md            |  2 --
 doc/development/release/deprecation.md             |  2 --
 doc/development/release/sql-scripting.md           |  2 --
 doc/development/release/versioning.md              |  2 --
 doc/development/style.md                           |  4 +--
 doc/development/{testing.md => testing/_index.md}  |  9 +++---
 doc/development/testing/ci.md                      |  4 +--
 doc/development/todo.md                            |  2 --
 doc/development/tools.md                           |  6 ++--
 doc/development/website.md                         | 29 +++++++++++--------
 44 files changed, 120 insertions(+), 209 deletions(-)
 delete mode 100644 doc/development/environment.md
 create mode 100644 doc/development/environment/_index.md
 rename doc/development/{governance.md => governance/_index.md} (96%)
 rename doc/development/{internals.md => internals/_index.md} (59%)
 rename doc/development/{maintenance.md => maintenance/_index.md} (88%)
 rename doc/development/{release.md => release/_index.md} (66%)
 rename doc/development/{testing.md => testing/_index.md} (97%)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list