Each governance document is a post of the hierarchical lh_governance_doc post type, shown at /governance/{slug}/. There is no archive, so a site can put its own page with the index block at /governance/.
Parents and types
A parent means only that a document implements its parent, for example a Child Safety Procedure under the Child Safety Policy. Documents are grouped by the lh_governance_type taxonomy, never by parent. Each site is seeded with Constitution, Policy, Procedure, Code of conduct and Terms of reference.
Fields
All fields are protected post meta (prefix _lh_governance_) registered with show_in_rest, so they can be read and written through the REST API and the LH MCP General Abilities create-post and update-post abilities.
approval_body: general-meeting, committee or officer.adopted: date first adopted.amended: every amendment date, kept sorted, not just the latest.review_cycle: none, 1y, 2y, 3y or on-change.next_review: derived and read-only. The latest of adopted and amended plus the cycle; empty for none and on-change. It is recalculated whenever adopted, amended or the cycle changes, and corrects itself if written directly.owner_userandowner_role: who is responsible. The user takes precedence.registered_date: for a constitution, the date lodged with the regulator.
Who can see a document is its post status. Private works as usual, and LH Membership’s restricted and confidential statuses apply to it like any other public post type.
Type defaults
When a document gets its type, any field that has never been set is filled in from that type: constitutions go to a general meeting with no review cycle; policies, codes of conduct and terms of reference go to committee every two years; procedures go to committee and take their parent’s cycle (two years without a parent). Every type defaults its owner role to administrator. A value set on purpose, including an empty one, is never overwritten.