Commit e23584

2026-09-14 10:46:55 Dan Alexander: Add company wiki standards and VoxelCore docs This change establishes the shared company knowledge structure, governance, engineering, security, and incident/change standards. It also adds the VoxelHorizons product tree with a complete VoxelCore documentation set covering architecture, operations, authoring, version support, resource pack compilation, runtime reloads, and testing/release workflows.
/dev/null .. company/architecture-decisions.md
@@ 0,0 1,14 @@
+# Architecture Decisions
+
+Use an Architecture Decision Record (ADR) for a choice that will constrain future work or otherwise be expensive to rediscover.
+
+Good ADR subjects include persistence models, compatibility strategy, identity schemes, protocol boundaries, framework selection and cross-product service contracts. Routine implementation details do not need an ADR.
+
+## Decision states
+
+- **Proposed** — under review.
+- **Accepted** — current decision.
+- **Superseded** — replaced by a newer ADR; retain the old record and link both directions.
+- **Rejected** — considered but not chosen; retain when the rejected option is likely to recur.
+
+An ADR should explain context, decision, alternatives, consequences and follow-up work. Use [[Templates/Architecture-Decision-Record]].
/dev/null .. company/change-management.md
@@ 0,0 1,17 @@
+# Change Management
+
+Use a proportional process: small reversible changes need less ceremony than migrations or compatibility changes, but every production-affecting change needs an understood verification and rollback path.
+
+## Before a change
+
+Identify the affected product/service, expected behaviour, dependencies, data/config migrations, compatibility impact, validation method and rollback method. For high-risk changes, record an explicit maintenance window and recovery owner outside the wiki if required.
+
+## During a change
+
+Capture the deployed version/commit and avoid mixing unrelated changes into the same recovery boundary. Stop when validation fails rather than stacking further speculative changes over an unknown state.
+
+## After a change
+
+Verify the intended behaviour, record any operator-facing differences, update affected wiki reference pages, and close temporary migration instructions once they are no longer needed.
+
+For releases, start from [[Templates/Release-Checklist]].
/dev/null .. company/documentation-standards.md
@@ 0,0 1,56 @@
+# Documentation Standards
+
+These conventions keep the wiki predictable as more Soatrix products are added.
+
+## Information architecture
+
+Use this broad hierarchy:
+
+```text
+Home
+├── Company
+│ ├── shared standards
+│ ├── governance
+│ └── operating practices
+├── Products
+│ └── <product family>
+│ └── <product or service>
+│ ├── overview/current status
+│ ├── user or operator guides
+│ ├── architecture/developer reference
+│ └── roadmap
+└── Templates
+```
+
+Do not create a new top-level category when an existing one fits.
+
+## Naming
+
+- Give every page one clear `# H1` title.
+- Keep Git filenames and directories simple, lower-case and URL-safe.
+- Prefer descriptive page names over generic names such as `notes` or `misc`.
+- Use the first heading for the human-readable title.
+
+## Writing rules
+
+- State exact versions, paths and dates when they affect correctness.
+- Put commands and configuration in fenced code blocks.
+- Explain destructive or irreversible effects immediately before the action.
+- Separate **current behaviour**, **known limitations** and **planned work**.
+- Prefer one canonical explanation and link to it rather than copying the same rule across pages.
+- Keep troubleshooting symptom-driven: symptom → likely cause → check → recovery.
+
+## Repository-backed products
+
+A well-maintained product tree should normally contain:
+
+- `Index` — purpose and navigation;
+- `Current Status` — baseline commit, supported surface and notable recent changes;
+- `Getting Started` — minimum path to a working system;
+- `Architecture` — boundaries and data flow;
+- configuration and command/reference pages;
+- build/testing/release information;
+- operations/troubleshooting;
+- roadmap/scope.
+
+Use [[Templates/Product-Documentation]] when starting a new product.
/dev/null .. company/engineering-standards.md
@@ 0,0 1,31 @@
+# Engineering Standards
+
+This page establishes baseline expectations for Soatrix-maintained software. Individual products may impose stronger requirements.
+
+## Design
+
+- Prefer explicit interfaces and dependency direction over cross-module reach-through.
+- Keep stable identity separate from presentation/rendering identifiers.
+- Validate external or authored input at the boundary before it enters runtime state.
+- Prefer immutable published state where practical; publish replacements atomically rather than mutating a live registry piecemeal.
+- Make compatibility claims explicit and testable. A version range is not equivalent to a validated exact-version matrix.
+
+## Changes
+
+A change is ready to merge when its behavioural contract is understood, relevant tests are added or updated, and operations/documentation are changed where needed. Compatibility changes should include regression coverage at the boundary they introduce.
+
+## Failures
+
+- Fail startup when continuing would publish corrupt or unsupported state.
+- For reloadable systems, build and validate candidate state before replacing known-good state.
+- Error messages should identify the invalid input or dependency chain rather than masking it with a generic failure.
+
+## Dependencies
+
+- Pin or constrain dependencies deliberately.
+- Isolate platform/version-specific APIs behind adapters when multiple runtime generations are supported.
+- Avoid leaking implementation-specific APIs into common modules unless the common contract genuinely depends on them.
+
+## Testing
+
+Use multiple layers where appropriate: unit tests for rules, integration tests for component boundaries, and real-runtime smoke tests for compatibility claims that mocks cannot establish.
/dev/null .. company/incident-response.md
@@ 0,0 1,18 @@
+# Incident Response
+
+Incidents should optimise first for safe restoration, then for understanding and prevention.
+
+## Lifecycle
+
+1. **Detect and scope** — identify the user-visible impact and affected systems.
+2. **Stabilise** — stop further damage; prefer a known-good rollback when appropriate.
+3. **Recover** — restore the service and verify from the user's perspective.
+4. **Preserve evidence** — keep relevant logs, timestamps, deploy IDs and configuration diffs.
+5. **Review** — document contributing conditions and follow-up actions without blame.
+6. **Improve** — implement fixes, monitoring and documentation changes.
+
+## Communication
+
+Use exact times with time zones for material events. Distinguish confirmed facts from hypotheses. Never paste secrets into incident pages.
+
+Use [[Templates/Incident-Review]] for the durable record and create or update a runbook when the incident revealed a repeatable recovery procedure.
/dev/null .. company/index.md
@@ 0,0 1,18 @@
+# Company Knowledge System
+
+The **Company** tree contains rules and shared knowledge that apply across Soatrix products. It should remain stable even as individual products are created, renamed or retired.
+
+## Core pages
+
+- [[Company/Wiki-Governance]] — ownership, lifecycle and source-of-truth rules.
+- [[Company/Documentation-Standards]] — writing and page-structure conventions.
+- [[Company/Engineering-Standards]] — baseline engineering expectations.
+- [[Company/Security-and-Access]] — safe handling of credentials, access and sensitive material.
+- [[Company/Change-Management]] — how production-affecting changes should be planned and verified.
+- [[Company/Incident-Response]] — incident lifecycle and post-incident documentation.
+- [[Company/Architecture-Decisions]] — when and how to record ADRs.
+- [[Company/Service-Catalogue]] — how products, services and dependencies should be indexed.
+
+## Boundary
+
+This section defines **shared practice**, not product behaviour. VoxelCore implementation details, for example, belong under [[Products/Voxel-Horizons/VoxelCore/Index]].
/dev/null .. company/security-and-access.md
@@ 0,0 1,27 @@
+# Security and Access
+
+The wiki should describe **how** to obtain or rotate access, never store the secret itself.
+
+## Never commit
+
+Do not place these in wiki Markdown, attachments or repository history:
+
+- passwords;
+- API tokens and personal access tokens;
+- OAuth/OIDC client secrets;
+- private keys or recovery codes;
+- database connection strings containing credentials;
+- session cookies;
+- private customer or employee data that does not belong in the documentation repository.
+
+## Document instead
+
+Record the system name, purpose of the credential, where it is managed, who/which role is expected to have access, rotation expectations, and the recovery/escalation procedure.
+
+## Least privilege
+
+Service and human access should be scoped to the minimum permissions required. Administrative credentials should not be reused as application credentials.
+
+## Incident handling
+
+If a secret is accidentally committed, deleting the page is insufficient because Git history may retain it. Rotate/revoke the secret first, then remove it from current content and rewrite repository history only when appropriate. Record the event using [[Templates/Incident-Review]] without reproducing the exposed secret.
/dev/null .. company/service-catalogue.md
@@ 0,0 1,24 @@
+# Service Catalogue
+
+The service catalogue is the navigation layer between business/product names and their technical components.
+
+## Catalogue model
+
+Each product or service should document:
+
+- purpose and audience;
+- owning product family/team or maintainer;
+- source repository/repositories;
+- production/runtime entry points;
+- upstream/downstream dependencies;
+- authentication and data stores at a descriptive level;
+- monitoring/runbook links;
+- lifecycle status such as active, experimental, deprecated or retired.
+
+## Current catalogue
+
+### Voxel Horizons
+
+- **VoxelCore** — version-aware Minecraft content foundation. See [[Products/Voxel-Horizons/VoxelCore/Index]].
+
+Additional Soatrix products can be added beneath [[Products/Index]] without changing the company-level structure.
/dev/null .. company/wiki-governance.md
@@ 0,0 1,49 @@
+# Wiki Governance
+
+The wiki is the human-readable knowledge layer for Soatrix. It is Git-backed so documentation changes have history, authorship and reversible revisions.
+
+## Source-of-truth hierarchy
+
+Use this order when sources disagree:
+
+1. Running production behaviour and validated runtime configuration.
+2. Merged source code and automated tests on the product's documented baseline branch/commit.
+3. Product wiki reference pages.
+4. Repository README files and release notes.
+5. Planning documents, tickets, chat discussions and historical notes.
+
+A lower source should be updated when it is proven stale; it should not be used to override a higher source silently.
+
+## Page lifecycle
+
+Every substantive product area should be recognisable as one of four states:
+
+- **Reference** — describes implemented behaviour.
+- **Runbook** — executable operational procedure.
+- **Decision** — durable architectural or policy rationale.
+- **Plan** — proposed/future work that is not yet a supported contract.
+
+Avoid wording that makes a plan sound implemented.
+
+## Verification dates
+
+Pages that describe fast-moving software should state the baseline used for verification. For repository-backed products, record the branch and abbreviated commit SHA near the top of the product's **Current Status** page. Do not place a mutable word such as “latest” in a durable page without a date or commit.
+
+## Changes
+
+When a code change alters a documented contract, update the relevant wiki page in the same release/change window. Examples include:
+
+- a new supported runtime version;
+- a command or permission change;
+- a configuration schema change;
+- a new content authoring field;
+- a different persistence or rollback guarantee;
+- a changed operational requirement.
+
+## Deleting and superseding pages
+
+Prefer a short superseded page that links to the replacement when old links are likely to exist. Delete only when the page was erroneous, sensitive or has no useful historical navigation value.
+
+## Git safety
+
+The wiki repository history may contain old text even after a page is edited. Never commit passwords, private keys, tokens, one-time secrets, database credentials or personal data that should not persist in Git history. Use a secrets manager or the relevant platform's protected configuration facility instead.
home.md ..
@@ 1,28 1,29 @@
-## Welcome to your wiki!
-
-Your Otter Wiki is up and running.
-
-This is your [[Home]] Page, the first page you see when you access your
-wiki.
-
-The first steps you might want to do:
-
-1. [Register an account](/-/register). The very first account is an
- admin account which is able to configure the wiki.
-2. Check the [configuration](/-/admin#application_preferences) of your wiki.
- You can change its name, configure the permissions necessary to
- view and edit pages or upload attachments.
-3. If you require users to confirm their email address (recommended),
- make sure that you will configure and test your [Email Preferences](/-/admin#mail_preferences).
-4. [Edit your Home](/Home/edit)! Do not like the change? Visit the
- page [history](/Home/history) and revert any change ever made.
-5. You can [attach](/Home/attachments) images and other files to any page
- and then display them and link to them inside the page.
-6. [Create new pages](/-/create)! If you need help with the Markdown syntax,
- check out the [Markdown guide](/-/help/syntax).
-7. Read the [user guide](/-/help) and learn about An Otter Wikis features.
-
-We hope that An Otter Wiki is just what you are looking for.
-If you have any suggestions, feature requests or run into any
-issues, please reach out and report them
-via [github](https://github.com/redimp/otterwiki/issues).
+# Soatrix Knowledge Base
+
+Welcome to the central technical and operational knowledge base for **Soatrix** products and services.
+
+This wiki is designed as a long-lived source of truth rather than a collection of disconnected notes. Company-wide standards live under **Company**, product documentation lives under **Products**, and reusable documentation patterns live under **Templates**.
+
+## Start here
+
+- [[Company/Index]] — how the knowledge base is organised and governed.
+- [[Products/Index]] — product catalogue and technical documentation.
+- [[Templates/Index]] — reusable page structures for future services, decisions, incidents and releases.
+
+## Current product documentation
+
+### Voxel Horizons
+
+- [[Products/Voxel-Horizons/Index]]
+- [[Products/Voxel-Horizons/VoxelCore/Index]] — complete VoxelCore item/content MVP documentation.
+- [[Products/Voxel-Horizons/VoxelCore/Current-Status]] — implementation snapshot pinned to `452b569` on `14 September 2026`.
+
+## Knowledge-base principles
+
+1. **The implementation wins.** Runtime code, tests and deployed configuration are authoritative when a prose page conflicts with reality.
+2. **Implemented and planned behaviour are never mixed.** Roadmaps are labelled as plans; reference pages describe what exists now.
+3. **Pages are scoped.** Company standards should not contain product-specific implementation details; product pages should link to company standards instead of duplicating them.
+4. **Operational knowledge is actionable.** Commands, paths, validation steps and rollback behaviour should be documented where people need them.
+5. **Changes are reviewable.** OtterWiki's Git-backed history is part of the documentation workflow, not merely a backup.
+
+See [[Company/Wiki-Governance]] for the maintenance model.
/dev/null .. products/index.md
@@ 0,0 1,9 @@
+# Products
+
+Product documentation is grouped by product family so implementation detail does not leak into company-wide standards.
+
+## Current families
+
+- [[Products/Voxel-Horizons/Index]] — Minecraft/content platform projects.
+
+When adding another Soatrix product family, create a new directory beneath `products/`, add an index page, then register it here and in [[Company/Service-Catalogue]].
/dev/null .. products/voxel-horizons/index.md
@@ 0,0 1,13 @@
+# Voxel Horizons
+
+This section contains technical documentation for the Voxel Horizons software ecosystem.
+
+## Components
+
+### VoxelCore
+
+VoxelCore is the version-aware content foundation currently being rebuilt to provide a stable, data-driven base for Voxel Horizons gameplay systems.
+
+- [[Products/Voxel-Horizons/VoxelCore/Index]]
+- [[Products/Voxel-Horizons/VoxelCore/Current-Status]]
+- [[Products/Voxel-Horizons/VoxelCore/Roadmap-and-Scope]]
/dev/null .. products/voxel-horizons/voxelcore/architecture.md
@@ 0,0 1,53 @@
+# Architecture
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+VoxelCore separates **authoring**, **compiled definitions**, **render allocation**, **runtime publication** and **platform adaptation**. That separation is the central design decision of the current rebuild.
+
+```mermaid
+flowchart TD
+ A[Content pack files] --> B[ContentPackDiscovery]
+ B --> C[ContentLoader + ItemDefinitionParser]
+ C --> D[ItemInheritanceResolver]
+ D --> E[ItemDefinitionCompiler]
+ E --> F[Immutable ItemDefinitionRegistry]
+ F --> G[RenderAllocationRegistry reconcile]
+ G --> H[Platform preflight validation]
+ H --> I[Atomic ContentSnapshot]
+ I --> J[ItemManager]
+ J --> K[VersionAdapter / ItemPlatformAdapter]
+ K --> L[Minecraft ItemStack]
+ F --> M[JavaPackCompiler]
+ G --> M
+ M --> N[Deterministic resource-pack ZIP]
+```
+
+## Stable identity
+
+`ContentID` is the gameplay identity. It is namespaced, normalised and independent of:
+
+- model path;
+- numeric Custom Model Data;
+- structured Custom Model Data indices;
+- generated pack files.
+
+That allows rendering schemes to change across Minecraft generations without changing the identity consumed by gameplay code.
+
+## Immutable publication
+
+Authored YAML is not retained as mutable runtime truth. The loader compiles it into immutable definitions, reconciles render allocations, validates them against the active platform, then publishes a complete `ContentSnapshot` through the runtime. Reload creates a candidate snapshot separately and only replaces current state after validation succeeds.
+
+## Adapter boundary
+
+Common code depends on `VersionAdapter`/`ItemPlatformAdapter` rather than embedding all server-version details in item definitions. Version modules provide their implementation through `PlatformProvider` service registration.
+
+## Pack compiler boundary
+
+`voxelcore-pack` consumes the same definitions and render allocation authority used by runtime item creation. This avoids a class of bugs where generated assets and server-side item metadata allocate different render identifiers.
+
+## Current module shape
+
+See [[Products/Voxel-Horizons/VoxelCore/Module-Reference]]. The current repository has common, pack, plugin and six version/distribution modules, including exact Minecraft/Paper 26.2 support.
/dev/null .. products/voxel-horizons/voxelcore/build-ci-and-release.md
@@ 0,0 1,58 @@
+# Build, CI and Release
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+## Maven reactor
+
+Build all distribution artifacts:
+
+```bash
+mvn -U clean package
+```
+
+Build one family plus required modules:
+
+```bash
+mvn -pl voxelcore-v1_19_4 -am clean package
+```
+
+## Java release targets
+
+The root defaults to Maven `release=8`; newer modules override it:
+
+- v1.12 and v1.14 families: Java 8 bytecode;
+- v1.19.4 family: Java 17;
+- v1.20.5 and v1.21.4 families: Java 21;
+- v26.2: Java 25.
+
+CI itself sets up JDK 25 so Maven can compile all of those modules in one reactor. The Shade plugin is `3.6.2`, which supports the Java 25 build path used by the newest module.
+
+## Distribution packaging
+
+Each version module shades the common/plugin implementation and relocates SnakeYAML to `org.voxelhorizons.shaded.snakeyaml` to avoid collisions with YAML libraries supplied by old server platforms.
+
+Representative final names:
+
+```text
+VoxelCore-<version>-mc1.12-1.13.jar
+VoxelCore-<version>-mc1.14-1.19.3.jar
+VoxelCore-<version>-mc1.19.4-1.20.4.jar
+VoxelCore-<version>-mc1.20.5-1.21.3.jar
+VoxelCore-<version>-mc1.21.4.jar
+VoxelCore-<version>-mc26.2.jar
+```
+
+## CI workflows
+
+The repository contains:
+
+- `.github/workflows/build.yml` — builds all distributions and publishes/upload artifacts;
+- `.github/workflows/mvp-smoke.yml` — live-server compatibility matrix;
+- `.github/scripts/mvp-smoke.sh` — behaviour assertions inside each smoke environment.
+
+The current smoke matrix has seven rows and uses Java 25/Paper for Minecraft 26.2 alongside the older Java/runtime combinations.
+
+See [[Products/Voxel-Horizons/VoxelCore/Testing]] for what the matrix proves.
/dev/null .. products/voxel-horizons/voxelcore/commands-and-permissions.md
@@ 0,0 1,93 @@
+# Commands and Permissions
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+The base Bukkit command is:
+
+```text
+/voxelcore
+```
+
+with alias:
+
+```text
+/vc
+```
+
+The base command requires `voxelcore.use`. All currently declared permissions default to server operators. `admin` also has the alias `a`.
+
+## Administrative reload
+
+```text
+/voxelcore admin reload
+/voxelcore admin rl
+```
+
+This calls the same atomic content reload path and requires `voxelcore.admin.reload`.
+
+## Content
+
+```text
+/voxelcore admin content info
+/voxelcore admin content reload
+/voxelcore admin content rl
+```
+
+Permissions:
+
+- `voxelcore.admin.content`
+- `voxelcore.admin.content.info`
+- `voxelcore.admin.content.reload`
+
+## Items
+
+```text
+/voxelcore admin item list
+/voxelcore admin item info <content-id>
+/voxelcore admin item give <content-id> [amount] [player]
+/voxelcore admin item identify
+/voxelcore admin item id
+/voxelcore admin item verify <content-id>
+/voxelcore admin item test <content-id>
+```
+
+`items` is an alias of the `item` command group. `id` aliases `identify`; `test` aliases `verify`.
+
+Permissions:
+
+- `voxelcore.admin.item`
+- `voxelcore.admin.item.list`
+- `voxelcore.admin.item.info`
+- `voxelcore.admin.item.give`
+- `voxelcore.admin.item.identify`
+- `voxelcore.admin.item.verify`
+
+Important current behaviour: `item list` filters the compiled registry to definitions whose `bound` value is `true`, then sorts their ContentIDs deterministically. `item info` can still inspect a known unbound definition by ID.
+
+`give` restricts amount to 1–64. Console callers must supply a valid player; player callers default the target to themselves.
+
+`identify` is player-only because it inspects the main-hand item. `verify` is console-safe and performs a create → persisted identity round trip.
+
+## Resource packs
+
+```text
+/voxelcore admin pack info
+/voxelcore admin pack validate [target]
+/voxelcore admin pack build [target]
+```
+
+Permissions:
+
+- `voxelcore.admin.pack`
+- `voxelcore.admin.pack.info`
+- `voxelcore.admin.pack.validate`
+- `voxelcore.admin.pack.build`
+
+Known targets are listed in [[Products/Voxel-Horizons/VoxelCore/Resource-Pack-Compiler]].
+
+## Administrative root
+
+`voxelcore.admin` protects the `admin`/`a` command group. Child commands then require their more specific permissions described above.
/dev/null .. products/voxel-horizons/voxelcore/configuration.md
@@ 0,0 1,32 @@
+# Configuration
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+The bundled configuration schema is currently version `1`:
+
+```yaml
+version: 1 # DO NOT CHANGE
+game:
+ bedrock_support: false
+```
+
+## `version`
+
+`version` is managed by VoxelCore and should not be manually changed. At startup VoxelCore compares the current file with the bundled schema version.
+
+When the schema changes or the version is missing, VoxelCore:
+
+1. creates an incremental backup (`config.yml.old`, then `.old.1`, `.old.2`, ...);
+2. merges newly introduced defaults;
+3. preserves existing user values;
+4. writes the new schema version;
+5. reloads the configuration.
+
+This is intentionally non-destructive; current migration logic does not replace an operator's whole configuration merely because a schema version changed.
+
+## `game.bedrock_support`
+
+This setting exists as a future integration point. Setting it to `true` **does not currently implement Bedrock support** in the item/content MVP. Bedrock/Geyser presentation and mappings remain roadmap work.
/dev/null .. products/voxel-horizons/voxelcore/content-packs.md
@@ 0,0 1,72 @@
+# Content Packs
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+VoxelCore discovers self-contained content packs under `plugins/VoxelCore/content/`.
+
+## Layout
+
+```text
+plugins/VoxelCore/content/
+└── <pack-directory>/
+ ├── pack.yml
+ ├── content/
+ │ └── **/*.yml
+ └── assets/
+ └── <namespace>/
+ ├── models/
+ ├── textures/
+ ├── font/
+ └── sounds/
+```
+
+The pack directory name is organisational. Identity comes from the manifest namespace and keys in the content files.
+
+`content/` is scanned recursively for `.yml`/`.yaml` definitions in deterministic order, so authors can create arbitrarily useful nested organisational folders without changing ContentIDs.
+
+## `pack.yml`
+
+```yaml
+schema: 1
+namespace: mypack
+dependencies:
+ - shared
+ - core
+```
+
+Supported manifest keys are `schema`, `namespace`, and optional `dependencies`. Unknown or malformed keys are rejected rather than silently ignored.
+
+## Namespaces and dependencies
+
+Each pack namespace must be unique. A pack may always reference:
+
+- its own namespace;
+- Minecraft resources where valid.
+
+A cross-pack parent or model reference requires the referenced namespace to be declared in `dependencies`. Missing dependencies and duplicate namespaces fail loading.
+
+## YAML safety and strictness
+
+The loader uses bounded SnakeYAML parsing, rejects duplicate YAML keys, applies alias/document limits, validates expected scalar/list/map types, and rejects unknown top-level/item/render fields. This deliberately turns authoring mistakes into actionable load errors instead of ignored configuration.
+
+## Assets
+
+Authored assets live beneath the pack's namespace. For example:
+
+```yaml
+render:
+ model: mypack:item/ruby
+```
+
+maps to:
+
+```text
+assets/mypack/models/item/ruby.json
+```
+
+Generated Minecraft override/item-definition glue belongs to compiler output, not authored content.
+
+Continue with [[Products/Voxel-Horizons/VoxelCore/Item-Authoring]] and [[Products/Voxel-Horizons/VoxelCore/Rendering-and-Models]].
/dev/null .. products/voxel-horizons/voxelcore/current-status.md
@@ 0,0 1,68 @@
+# VoxelCore Current Status
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+## Snapshot
+
+This documentation was reconciled against the repository tree, merged pull requests and implementation on **14 September 2026**. The baseline commit is **`452b569`**, which is the merge of PR #16, *Hide unbound definitions from the item list*.
+
+The two newest merged changes materially affect the public contract:
+
+- **PR #16 — unbound list filtering:** `/voxelcore admin item list` now includes only definitions whose compiled `bound` value is `true`. Unbound base/inheritance definitions remain in the registry and can still be inspected/referenced; they are simply omitted from that user-facing list.
+- **PR #15 — Minecraft/Paper 26.2:** VoxelCore now has a dedicated `voxelcore-v26_2` distribution, exact 26.2 platform adapter, Java 25 compile target, `mc-26.2` resource-pack target with format `88.0`, modern range metadata, and a seventh live-server smoke row.
+
+## MVP acceptance surface
+
+Implemented and tested now:
+
+```text
+content packs + assets
+ ↓
+deterministic discovery + bounded YAML parsing
+ ↓
+strict schema validation
+ ↓
+single-parent inheritance + compilation
+ ↓
+immutable ItemDefinitionRegistry
+ ↓
+stable render-allocation reconciliation
+ ↓
+platform preflight validation
+ ↓
+atomic ContentSnapshot publication
+ ↓
+ItemManager + version adapter
+ ↓
+ItemStack with persistent ContentID
+
+same definitions + allocation authority
+ ↓
+deterministic Java resource-pack compiler
+```
+
+## Validated live-server matrix
+
+The smoke matrix now covers **seven** exact versions: 1.12.2, 1.13.2, 1.14.4, 1.19.4, 1.20.5, 1.21.4 and 26.2. See [[Products/Voxel-Horizons/VoxelCore/Version-Support]].
+
+## Documentation discrepancy to be aware of
+
+At this snapshot, the repository `README.md` was synchronised by PR #14 **before** PR #15 added 26.2. Its version-family and resource-pack-target tables therefore stop at 1.21.4. The code, Maven reactor, CI changes and merged PR #15 establish 26.2 support; this wiki reflects that newer state.
+
+## Not implemented as part of this MVP
+
+- placed custom-block lifecycle;
+- furniture/display placement lifecycle;
+- vehicles;
+- crops;
+- GUI/menu framework and Bedrock-specific presentation;
+- Geyser/Floodgate item mappings;
+- true Minecraft combat `AttributeModifier` authoring;
+- richer typed metadata for potions, skulls, books, maps and fireworks;
+- generic low-level post-1.20.5 component escape hatches;
+- HavenCore compatibility/import aliases.
+
+These belong to [[Products/Voxel-Horizons/VoxelCore/Roadmap-and-Scope]], not the current supported contract.
/dev/null .. products/voxel-horizons/voxelcore/getting-started.md
@@ 0,0 1,74 @@
+# Getting Started
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+## Choose the correct distribution
+
+Install **one** VoxelCore distribution JAR for the server's compatibility family. Do not install multiple family JARs simultaneously. See [[Products/Voxel-Horizons/VoxelCore/Version-Support]] for the exact mapping.
+
+## Build from source
+
+The repository is a Maven reactor. Build all distributions with:
+
+```bash
+mvn -U clean package
+```
+
+A targeted build includes dependent modules with `-am`, for example:
+
+```bash
+mvn -pl voxelcore-v1_21_4 -am clean package
+```
+
+For the 26.2 distribution:
+
+```bash
+mvn -pl voxelcore-v26_2 -am clean package
+```
+
+The current CI build environment uses JDK 25 so it can compile the Java 25 module while Maven `release` settings preserve the lower bytecode targets of older modules.
+
+## First startup
+
+Place the appropriate shaded JAR in the server's `plugins/` directory and start the server. VoxelCore creates/uses:
+
+```text
+plugins/VoxelCore/
+├── config.yml
+├── render-allocations.yml
+├── content/
+└── build/
+ └── resource-packs/
+```
+
+An empty `content/` directory is valid. If authored content is present but fails loading or platform validation, plugin enable is aborted rather than publishing partial state.
+
+## Readiness marker
+
+Successful initialisation ends with a log line in this form:
+
+```text
+VOXELCORE_READY revision=1 items=<count> platform=<version>
+```
+
+CI uses this readiness point rather than treating an early plugin-enable message as success.
+
+## Add a content pack
+
+Create a self-contained pack below `plugins/VoxelCore/content/`:
+
+```text
+plugins/VoxelCore/content/example/
+├── pack.yml
+├── content/
+│ └── items.yml
+└── assets/
+ └── example/
+ ├── models/item/
+ └── textures/item/
+```
+
+Continue with [[Products/Voxel-Horizons/VoxelCore/Content-Packs]] and [[Products/Voxel-Horizons/VoxelCore/Item-Authoring]].
/dev/null .. products/voxel-horizons/voxelcore/index.md
@@ 0,0 1,46 @@
+# VoxelCore
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+VoxelCore is the version-aware content foundation for Voxel Horizons. The current implemented milestone is the **custom item/content MVP**: deterministic content-pack loading, validated inheritance, immutable runtime snapshots, stable item identity, version-specific `ItemStack` creation, stable render allocation, deterministic Java resource-pack compilation and safe atomic reloads.
+
+It is intentionally **not yet** the full historical HavenCore feature set. Placed blocks, furniture, vehicles, crops, GUI/menu presentation, Bedrock/Geyser mappings and the broader legacy migration remain later systems.
+
+## Documentation map
+
+### Operate VoxelCore
+
+- [[Products/Voxel-Horizons/VoxelCore/Getting-Started]]
+- [[Products/Voxel-Horizons/VoxelCore/Configuration]]
+- [[Products/Voxel-Horizons/VoxelCore/Commands-and-Permissions]]
+- [[Products/Voxel-Horizons/VoxelCore/Operations-and-Troubleshooting]]
+
+### Author content
+
+- [[Products/Voxel-Horizons/VoxelCore/Content-Packs]]
+- [[Products/Voxel-Horizons/VoxelCore/Item-Authoring]]
+- [[Products/Voxel-Horizons/VoxelCore/Inheritance]]
+- [[Products/Voxel-Horizons/VoxelCore/Rendering-and-Models]]
+- [[Products/Voxel-Horizons/VoxelCore/Resource-Pack-Compiler]]
+
+### Develop VoxelCore
+
+- [[Products/Voxel-Horizons/VoxelCore/Architecture]]
+- [[Products/Voxel-Horizons/VoxelCore/Module-Reference]]
+- [[Products/Voxel-Horizons/VoxelCore/Version-Support]]
+- [[Products/Voxel-Horizons/VoxelCore/Runtime-and-Reloads]]
+- [[Products/Voxel-Horizons/VoxelCore/Build-CI-and-Release]]
+- [[Products/Voxel-Horizons/VoxelCore/Testing]]
+- [[Products/Voxel-Horizons/VoxelCore/Source-Reference]]
+
+### Status and future work
+
+- [[Products/Voxel-Horizons/VoxelCore/Current-Status]]
+- [[Products/Voxel-Horizons/VoxelCore/Roadmap-and-Scope]]
+
+## Core invariant
+
+A VoxelCore item is identified by its namespaced **ContentID**, not by its model path or Custom Model Data value. Rendering is version-specific presentation state layered over stable gameplay identity.
/dev/null .. products/voxel-horizons/voxelcore/inheritance.md
@@ 0,0 1,43 @@
+# Inheritance
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+VoxelCore compiles single-parent inheritance before content is published.
+
+## Parent references
+
+Within the same namespace, a local parent key can be used. Cross-pack references are valid only when the parent namespace is declared as a pack dependency.
+
+## Current merge semantics
+
+| Value | Behaviour |
+|---|---|
+| omitted scalar | inherit parent value |
+| provided scalar | replace parent value |
+| explicit `false` | replaces inherited `true` |
+| list | explicitly supplied child list replaces parent list |
+| `properties` map | recursive deep merge |
+| render metadata | field-by-field merge |
+| structured `custom_model_data` | semantic-key merge when parent and child are both structured |
+| switch numeric ↔ structured CMD | child representation replaces parent representation |
+
+Only one parent is supported per item.
+
+## Validation
+
+Compilation rejects:
+
+- missing parents;
+- self-cycles or longer inheritance cycles;
+- duplicate ContentIDs;
+- definitions that remain invalid after resolution, such as missing required material;
+- illegal cross-pack references without declared dependencies.
+
+The resolver includes dependency-chain context in compilation errors so invalid authoring fails at load/reload time rather than surfacing as a gameplay error later.
+
+## Base definitions and list visibility
+
+A definition can remain `bound: false` and serve only as an inheritance base. It still participates in compilation and the runtime registry, but current `/voxelcore admin item list` filtering hides it from the user-facing list.
/dev/null .. products/voxel-horizons/voxelcore/item-authoring.md
@@ 0,0 1,70 @@
+# Item Authoring
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+Items are declared below an `items:` mapping in any YAML file beneath a pack's `content/` directory.
+
+```yaml
+items:
+ gem_base:
+ material: minecraft:paper
+ bound: false
+ lore:
+ - A VoxelCore item
+
+ ruby:
+ extends: gem_base
+ display_name: Ruby
+ bound: true
+ render:
+ model: mypack:item/ruby
+ unbreakable: true
+ durability: 0
+ attributes:
+ hide_attributes: true
+ custom_model_data: 1001
+ properties:
+ category: gemstone
+```
+
+## Supported fields
+
+The current item schema accepts:
+
+- `extends`
+- `type`
+- `material`
+- `display_name`
+- `lore`
+- `bound`
+- `render`
+- `properties`
+
+Unknown keys are errors.
+
+## ContentID
+
+The key is combined with the pack namespace to form a stable ID:
+
+```text
+mypack:ruby
+```
+
+IDs are normalised to lowercase and namespace/value segments use `[a-z0-9._-]+`. File paths do not become part of the ID.
+
+## `bound`
+
+`bound` is a compiled boolean field and defaults to `false` when it is not supplied/inherited. As of PR #16, `/voxelcore admin item list` only shows definitions with `bound: true`. This makes `bound: false` useful for inheritance-only/base definitions without losing them from the compiled registry.
+
+Do not infer more from this flag than the implementation guarantees: unbound definitions still exist in the registry and can be referenced/inspected.
+
+## `properties`
+
+`properties` is a structured author-owned map. Parent/child maps deep-merge and compiled nested structures are deep-frozen so runtime definitions do not expose mutable nested state.
+
+## Rendering fields
+
+Rendering is deliberately separate from ContentID and is covered in [[Products/Voxel-Horizons/VoxelCore/Rendering-and-Models]].
/dev/null .. products/voxel-horizons/voxelcore/module-reference.md
@@ 0,0 1,40 @@
+# Module Reference
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+The root Maven reactor currently contains nine modules.
+
+| Module | Responsibility |
+|---|---|
+| `voxelcore-common` | Content IDs, authoring models, parsing/compilation, runtime snapshots, render allocations, common item/platform contracts. |
+| `voxelcore-pack` | Deterministic Java resource-pack compilation and exact pack-target profiles. |
+| `voxelcore-plugin` | Bukkit plugin lifecycle, configuration migration, command framework, `PackManager`, platform discovery. |
+| `voxelcore-v1_12` | 1.12.x–1.13.x legacy family, legacy NBT identity and distribution packaging. |
+| `voxelcore-v1_14` | 1.14–1.19.3 family, PDC/numeric CMD path and distribution packaging. |
+| `voxelcore-v1_19_4` | 1.19.4–1.20.4 family boundary. |
+| `voxelcore-v1_20_5` | 1.20.5–1.21.3 data-component-era family. |
+| `voxelcore-v1_21_4` | Exact 1.21.4 structured CMD/item-model implementation. |
+| `voxelcore-v26_2` | Exact 26.2 Paper implementation compiled with Java 25. |
+
+## `voxelcore-common` package map
+
+- `content.ContentID` — canonical namespaced identity.
+- `content.load.*` — deterministic pack/file loading and strict YAML parsing.
+- `content.compile.*` — inheritance resolution and compilation.
+- `content.item.*` — raw and compiled item models.
+- `content.render.*` — persistent render allocation registry/store and structured indices.
+- `content.runtime.*` — snapshot publication and safe reload result/runtime.
+- `item.ItemManager` — definition lookup, item creation and identity lookup through the active snapshot.
+- `platform.*` — version, capabilities, provider/adapter contracts.
+- `platform.item.*` — item platform adapter and metadata flag support.
+
+## `voxelcore-plugin`
+
+The plugin module wires the pieces together in `org.voxelhorizons.VoxelCore`. Startup performs config migration, platform selection, content load, allocation reconciliation, platform validation, snapshot publication, manager construction and command registration before emitting `VOXELCORE_READY`.
+
+## Version module service discovery
+
+Each version module registers an `org.voxelhorizons.platform.PlatformProvider` in `META-INF/services`. This keeps version-specific classes isolated from common code and lets `VersionAdapterFactory` select a matching provider at runtime.
/dev/null .. products/voxel-horizons/voxelcore/operations-and-troubleshooting.md
@@ 0,0 1,80 @@
+# Operations and Troubleshooting
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+## Plugin will not enable
+
+Check the first `SEVERE` VoxelCore error, not only the final disable line. Startup intentionally aborts for unsupported platforms, malformed content, failed inheritance, invalid render allocation state or platform preflight failure.
+
+Expected successful endpoint:
+
+```text
+VOXELCORE_READY revision=1 items=<count> platform=<version>
+```
+
+### Unsupported Minecraft version
+
+VoxelCore selects a platform provider explicitly. Exact-only providers such as 1.21.4 and 26.2 reject other releases. Install the correct distribution and do not assume a newer server is compatible merely because it starts with a similar API.
+
+## Reload fails
+
+Use:
+
+```text
+/voxelcore admin content reload
+```
+
+A failed reload is designed to leave the previous revision active. Fix the reported authoring/platform error and reload again; do **not** delete known-good runtime files as a first response.
+
+Common causes include missing parents, cycles, undeclared cross-pack dependencies, missing/invalid model references, malformed structured model keys and definitions that cannot be represented by the active adapter.
+
+## Item is missing from `item list`
+
+Check the compiled `bound` value with:
+
+```text
+/voxelcore admin item info <content-id>
+```
+
+As of PR #16, unbound definitions are intentionally omitted from `item list`. This is expected for inheritance-only bases.
+
+## Item does not identify
+
+Use the held-item command for a player:
+
+```text
+/voxelcore admin item identify
+```
+
+or the console-safe round-trip test:
+
+```text
+/voxelcore admin item verify <content-id>
+```
+
+The verify success marker is:
+
+```text
+VOXELCORE_ITEM_VERIFY_OK ...
+```
+
+Stored malformed/corrupt ContentID metadata is handled defensively and should not crash ordinary identification.
+
+## Pack target not auto-selected
+
+Pack commands auto-select only for an exact `JavaPackTarget`. Specify one explicitly, for example:
+
+```text
+/voxelcore admin pack validate mc-26.2
+```
+
+## Rendering changes unexpectedly after deleting allocations
+
+`render-allocations.yml` is persistent allocation history. Removing it can reassign numeric CMD or structured indices. Restore the manifest from backup/versioned server data where possible rather than treating it as disposable cache.
+
+## Config migrated
+
+Look for `config.yml.old`, `.old.1`, etc. Current migration preserves existing values and adds new defaults. Do not copy an old schema version back over the migrated file without understanding the change.
/dev/null .. products/voxel-horizons/voxelcore/rendering-and-models.md
@@ 0,0 1,91 @@
+# Rendering and Models
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+Rendering metadata is **presentation state**, not item identity. A ContentID should remain stable even when its model, Custom Model Data allocation or client representation changes.
+
+## Common render metadata
+
+```yaml
+render:
+ model: mypack:item/ruby
+ unbreakable: true
+ durability: 4
+ attributes:
+ hide_attributes: true
+ custom_model_data: 1001
+```
+
+### Durability and CMD are independent
+
+`render.durability` is not an alias for Custom Model Data. For 1.12/1.13 legacy pack generation, explicit durability drives damage predicates. Runtime Custom Model Data has no representation on those versions and is ignored there rather than being repurposed.
+
+### Item flags
+
+`render.attributes` currently maps author-facing keys to Bukkit `ItemFlag` values; it is **not** the future combat `AttributeModifier` system. Names are normalised to enum-style constants and unsupported flags on an older runtime are ignored. Compatibility aliases remain for historically different Bukkit names such as enchantment/destroyable/placeable hiding.
+
+## Structured Custom Model Data
+
+Minecraft 1.21.4 and 26.2 use the modern item adapter and can represent structured Custom Model Data:
+
+```yaml
+render:
+ model: mypack:item/ruby
+ custom_model_data:
+ variant: red
+ powered: true
+ intensity: 0.75
+ tint: '#ff0000'
+```
+
+Value type inference:
+
+| YAML value | Allocated component kind |
+|---|---|
+| number | float |
+| boolean | flag |
+| ordinary string | string |
+| `#RRGGBB` | color |
+
+VoxelCore stores stable semantic-key → typed-index allocation in `render-allocations.yml`; authors do not manually manage list indices.
+
+## Modern render rules
+
+`render.rule` defines the generated modern item-model decision graph. Supported node types are `select`, `condition`, `range` and `model`.
+
+```yaml
+render:
+ model: mypack:item/ruby
+ custom_model_data:
+ variant: red
+ powered: true
+ intensity: 0.75
+ tint: '#ff0000'
+ rule:
+ select:
+ key: variant
+ cases:
+ red:
+ condition:
+ key: powered
+ true:
+ range:
+ key: intensity
+ entries:
+ 0.75:
+ model:
+ id: mypack:item/ruby_powered
+ tint: tint
+ fallback: mypack:item/ruby
+ false: mypack:item/ruby
+ fallback: mypack:item/ruby
+```
+
+Pre-1.21.4 pack targets reject `render.rule` instead of silently discarding it.
+
+## Asset resolution
+
+`mypack:item/ruby` resolves to `assets/mypack/models/item/ruby.json`. A texture reference with the same logical path resolves beneath `assets/mypack/textures/item/ruby.png`. Cross-pack model references are dependency checked.
/dev/null .. products/voxel-horizons/voxelcore/resource-pack-compiler.md
@@ 0,0 1,51 @@
+# Resource Pack Compiler
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+`voxelcore-pack` compiles authored assets plus the active render-allocation authority into deterministic Java resource-pack ZIP files.
+
+## Exact pack targets
+
+| Target | Mode | Pack metadata format |
+|---|---|---:|
+| `mc-1.12.2` | legacy durability/damage predicate | 3 |
+| `mc-1.13.2` | legacy durability/damage predicate | 4 |
+| `mc-1.14.4` | numeric Custom Model Data | 4 |
+| `mc-1.19.4` | numeric Custom Model Data | 13 |
+| `mc-1.20.5` | numeric Custom Model Data | 32 |
+| `mc-1.21.4` | modern item-model / structured CMD | 46 |
+| `mc-26.2` | modern item-model / structured CMD | **88.0** |
+
+The 26.2 target uses modern `pack.mcmeta` range metadata (`min_format` and `max_format`) rather than the legacy `pack_format` shape used by older targets.
+
+## Build output
+
+Runtime pack builds are written to:
+
+```text
+plugins/VoxelCore/build/resource-packs/<target>.zip
+```
+
+Use:
+
+```text
+/voxelcore admin pack validate [target]
+/voxelcore admin pack build [target]
+```
+
+If the target is omitted, VoxelCore only auto-selects when the current server version has an **exact** registered pack target. Otherwise the command asks for an explicit target.
+
+## Determinism
+
+The compiler writes sorted entries with fixed ZIP metadata so identical authoring + allocation state produces identical archive bytes. This improves reproducibility and makes generated differences meaningful.
+
+## Shared allocation authority
+
+Runtime item creation and pack compilation both use `render-allocations.yml`. Numeric CMD values and structured semantic-key indices therefore cannot independently drift between server-side stacks and the generated pack.
+
+## Asset validation
+
+Compiler validation checks model ownership/dependencies and required authored model assets. Generated Minecraft glue is written to build output; it is not expected to be manually authored inside a content pack.
/dev/null .. products/voxel-horizons/voxelcore/roadmap-and-scope.md
@@ 0,0 1,57 @@
+# Roadmap and Scope
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+This page separates what the wider VoxelCore rebuild **plans** to become from what the current item/content MVP already supports.
+
+## Current completed foundation
+
+The present implementation has realised several early roadmap principles:
+
+- deterministic content discovery and bounded YAML parsing;
+- explicit single-parent inheritance with cycle/missing-parent validation;
+- immutable compiled definitions;
+- atomic runtime snapshot publication and failed-reload preservation;
+- stable ContentID separate from rendering identifiers;
+- shared persistent render-allocation authority;
+- deterministic Java resource-pack compilation;
+- explicit version adapters and exact pack profiles;
+- real-server CI behaviour checks instead of enable-line-only CI;
+- non-destructive config schema migration.
+
+## Next system classes
+
+The broader migration roadmap still calls for systems beyond this MVP. Current README/source explicitly leaves these outside the supported item milestone:
+
+- placed custom blocks;
+- furniture, seats, storage, light and display-entity lifecycle;
+- vehicles/input/simulation;
+- crops and bounded growth scheduling;
+- GUI/menu framework and session lifecycle;
+- Bedrock/Geyser frontend mappings and presentation;
+- richer version-aware item metadata;
+- legacy HavenCore import/compatibility paths.
+
+## Architectural direction from the migration roadmap
+
+The planning document recommends maintaining a distinction between:
+
+- immutable **content definitions**;
+- individual **item instance state**;
+- persistent **world placement state**;
+- replaceable **render handles**.
+
+It also proposes keeping gameplay addons dependent on stable services/API contracts rather than importing one another's mutable registries, and treating the pack builder as a deterministic compiler rather than a ZIP utility.
+
+These are planning constraints and design direction, not a claim that all proposed modules/services already exist in `main`.
+
+## Compatibility policy
+
+The roadmap's most important rule is already visible in implementation: compatibility must be explicit. 1.21.4 no longer claims unvalidated future versions, and Minecraft/Paper 26.2 received a dedicated adapter, Java target, pack profile and smoke row. Future releases should follow that pattern.
+
+## Documentation rule for future milestones
+
+When a roadmap item is merged, move its behavioural contract into dedicated reference pages and remove it from the “not implemented” list. Do not make this roadmap page the only documentation for a completed subsystem.
/dev/null .. products/voxel-horizons/voxelcore/runtime-and-reloads.md
@@ 0,0 1,51 @@
+# Runtime and Reloads
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+Reload is transactional at the content-snapshot level. VoxelCore does not clear the live registry and then hope replacement content succeeds.
+
+## Startup
+
+Startup performs, in order:
+
+1. configuration generation/migration;
+2. platform adapter selection;
+3. content-directory creation and deterministic load;
+4. inheritance compilation;
+5. render-allocation load/reconciliation;
+6. validation of every compiled definition through the selected platform item adapter;
+7. persistence of validated allocations;
+8. publication of content revision `1`;
+9. `ItemManager`/`PackManager` construction;
+10. command registration;
+11. `VOXELCORE_READY` logging.
+
+A load or platform-validation failure disables the plugin before publishing a usable runtime.
+
+## Reload
+
+```mermaid
+flowchart TD
+ A[Active revision N] --> B[Load candidate files]
+ B --> C[Compile candidate registry]
+ C --> D[Reconcile candidate allocations]
+ D --> E[Platform preflight]
+ E -->|success| F[Persist allocation state]
+ F --> G[Atomically publish revision N+1]
+ B -->|failure| H[Discard candidate]
+ C -->|failure| H
+ D -->|failure| H
+ E -->|failure| H
+ H --> I[Revision N remains active]
+```
+
+`ContentRuntime` publishes immutable `ContentSnapshot` objects. `ItemManager` resolves through the active runtime, so existing manager references observe the new snapshot after successful publication.
+
+## Allocation persistence
+
+`render-allocations.yml` is persisted only after candidate definitions are validated for the active platform. Tombstones preserve removed numeric allocations and structured keys remain reserved, avoiding silent re-use.
+
+Do not casually delete `render-allocations.yml` on a live content set; doing so discards allocation history and can change rendering identifiers.
/dev/null .. products/voxel-horizons/voxelcore/source-reference.md
@@ 0,0 1,46 @@
+# Source Reference
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+Use these locations when the wiki and implementation need to be reconciled.
+
+## Repository documents
+
+- [`README.md`](https://github.com/VoxelHorizons/VoxelCore/blob/main/README.md) — concise operator/author overview; note the 26.2 table lag described in [[Products/Voxel-Horizons/VoxelCore/Current-Status]].
+- [`Migration-Roadmap.md`](https://github.com/VoxelHorizons/VoxelCore/blob/main/Migration-Roadmap.md) — broader rebuild rationale and planning; planning content is not automatically implemented behaviour.
+- [`pom.xml`](https://github.com/VoxelHorizons/VoxelCore/blob/main/pom.xml) — current Maven module reactor and shared dependency versions.
+
+## Common content/runtime
+
+- [`ContentID.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/ContentID.java)
+- [`ContentLoader.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/load/ContentLoader.java)
+- [`ItemDefinitionParser.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/load/ItemDefinitionParser.java)
+- [`ItemInheritanceResolver.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/compile/ItemInheritanceResolver.java)
+- [`ItemDefinitionCompiler.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/compile/ItemDefinitionCompiler.java)
+- [`ContentSnapshot.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/runtime/ContentSnapshot.java)
+- [`ContentRuntimeReloader.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/runtime/ContentRuntimeReloader.java)
+- [`RenderAllocationRegistry.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/render/RenderAllocationRegistry.java)
+- [`RenderAllocationStore.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/content/render/RenderAllocationStore.java)
+- [`ItemManager.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-common/src/main/java/org/voxelhorizons/item/ItemManager.java)
+
+## Pack compiler
+
+- [`JavaPackCompiler.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-pack/src/main/java/org/voxelhorizons/pack/JavaPackCompiler.java)
+- [`JavaPackCompilerEngine.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-pack/src/main/java/org/voxelhorizons/pack/JavaPackCompilerEngine.java)
+- [`JavaPackTarget.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-pack/src/main/java/org/voxelhorizons/pack/JavaPackTarget.java)
+
+## Plugin/runtime wiring
+
+- [`VoxelCore.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-plugin/src/main/java/org/voxelhorizons/VoxelCore.java)
+- [`ItemCommand.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-plugin/src/main/java/org/voxelhorizons/command/commands/ItemCommand.java)
+- [`ContentCommand.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-plugin/src/main/java/org/voxelhorizons/command/commands/ContentCommand.java)
+- [`PackCommand.java`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-plugin/src/main/java/org/voxelhorizons/command/commands/PackCommand.java)
+- [`plugin.yml`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-plugin/src/main/resources/plugin.yml)
+- [`config.yml`](https://github.com/VoxelHorizons/VoxelCore/blob/main/voxelcore-plugin/src/main/resources/config.yml)
+
+## Compatibility modules
+
+The version implementations live beneath `voxelcore-v1_12`, `voxelcore-v1_14`, `voxelcore-v1_19_4`, `voxelcore-v1_20_5`, `voxelcore-v1_21_4` and `voxelcore-v26_2`.
/dev/null .. products/voxel-horizons/voxelcore/testing.md
@@ 0,0 1,45 @@
+# Testing
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+VoxelCore combines focused unit/regression tests with real plugin-capable server smoke tests.
+
+## Unit/regression coverage
+
+Current tests cover, among other behaviour:
+
+- item compilation and multi-level inheritance;
+- missing parents, cycles, duplicate IDs and required-field validation;
+- deep immutability of compiled definition data;
+- YAML loading/discovery and strict schema handling;
+- stable render allocation and tombstone behaviour;
+- structured semantic-key typed indices and type-change rejection;
+- runtime reload rollback and successful publication;
+- `ItemManager` use of the active snapshot allocation;
+- platform version parsing, including Paper's build-qualified 26.2 version;
+- item metadata flag resolution;
+- deterministic Java pack output and modern rule generation;
+- 26.2 `min_format`/`max_format` pack metadata;
+- config migration preserving operator values;
+- unbound definitions being excluded from `item list`.
+
+## Real-server matrix
+
+Validated exact servers:
+
+1. 1.12.2
+2. 1.13.2
+3. 1.14.4
+4. 1.19.4
+5. 1.20.5
+6. 1.21.4
+7. 26.2
+
+The smoke path goes beyond “plugin enabled”: it waits for the `VOXELCORE_READY` marker, exercises content/admin behaviour, verifies create → stored ContentID → identify round trips, validates/builds the exact resource-pack target, deliberately triggers a failed reload and confirms the old revision remains active, then restores valid content and confirms a successful new revision.
+
+## Fixture families
+
+The repository currently carries `mvp-content`, `mvp-content-legacy` and `mvp-content-modern` fixtures so rendering boundaries can be exercised without pretending one authored render representation behaves identically on every client generation.
/dev/null .. products/voxel-horizons/voxelcore/version-support.md
@@ 0,0 1,27 @@
+# Version Support
+
+
+> **Documentation baseline:** VoxelCore `main` at `452b569` · 14 September 2026.
+> **Repository:** [https://github.com/VoxelHorizons/VoxelCore](https://github.com/VoxelHorizons/VoxelCore)
+
+
+VoxelCore distinguishes a **runtime compatibility family** from an **exact version that is exercised in the real-server smoke matrix**. Do not treat every intermediate version in a family as individually smoke-tested.
+
+| Minecraft runtime | Module / final JAR family | Java release | Runtime rendering/identity boundary | Exact live validation |
+|---|---|---:|---|---|
+| 1.12.x–1.13.x | `voxelcore-v1_12` / `mc1.12-1.13` | 8 | legacy NBT identity; explicit durability legacy rendering | 1.12.2, 1.13.2 |
+| 1.14–1.19.3 | `voxelcore-v1_14` / `mc1.14-1.19.3` | 8 | PDC identity; numeric Custom Model Data | 1.14.4 |
+| 1.19.4–1.20.4 | `voxelcore-v1_19_4` / `mc1.19.4-1.20.4` | 17 | PDC/CMD; display-entity-era capability boundary | 1.19.4 |
+| 1.20.5–1.21.3 | `voxelcore-v1_20_5` / `mc1.20.5-1.21.3` | 21 | data-component era; scalar CMD compatibility | 1.20.5 |
+| 1.21.4 | `voxelcore-v1_21_4` / `mc1.21.4` | 21 | item-model component + structured CMD | 1.21.4 |
+| 26.2 | `voxelcore-v26_2` / `mc26.2` | 25 | modern item adapter; Paper 26.2 exact boundary | 26.2 |
+
+The 1.21.4 and 26.2 providers are deliberately exact. A future Minecraft release must gain an explicit validated adapter instead of being accepted just because its API appears similar.
+
+## Paper 26.2 notes
+
+The 26.2 module compiles against Paper API `26.2.build.123-stable`. VoxelCore parses Paper's build-qualified version form such as `26.2.build.123-stable` as Minecraft version `26.2.0` for adapter selection. This is not a general licence to accept arbitrary 26.x releases; the provider matches `26.2.0` exactly.
+
+## Resource-pack target support
+
+Runtime families and pack profiles are related but not identical. Pack compilation deliberately exposes only exact validated targets; see [[Products/Voxel-Horizons/VoxelCore/Resource-Pack-Compiler]].
/dev/null .. templates/architecture-decision-record.md
@@ 0,0 1,29 @@
+# Template — Architecture Decision Record
+
+**Status:** Proposed / Accepted / Superseded / Rejected
+**Date:** YYYY-MM-DD
+**Decision owners:**
+
+## Context
+
+What problem, constraint or repeated ambiguity requires a durable decision?
+
+## Decision
+
+State the chosen approach precisely.
+
+## Alternatives considered
+
+Describe credible alternatives and why they were not selected.
+
+## Consequences
+
+Record benefits, trade-offs, compatibility implications, migration cost and operational effects.
+
+## Follow-up
+
+Implementation tasks, tests, migration work and documentation that must change.
+
+## Supersession
+
+If this ADR replaces or is replaced by another ADR, link both directions.
/dev/null .. templates/incident-review.md
@@ 0,0 1,38 @@
+# Template — Incident Review
+
+**Incident date/time:**
+**Service(s):**
+**Impact:**
+**Status:** Resolved / Monitoring / Open
+
+## Summary
+
+Short factual description of user-visible impact and duration.
+
+## Timeline
+
+Use exact timestamps with time zones. Mark hypotheses as hypotheses.
+
+## Detection
+
+How the issue was first detected and whether monitoring should have detected it earlier.
+
+## Root and contributing conditions
+
+Explain technical/system conditions without assigning personal blame.
+
+## Recovery
+
+What restored service and how restoration was verified.
+
+## What worked / what did not
+
+Tools, runbooks, alerts, architecture and communication.
+
+## Actions
+
+Concrete owner, action and tracking reference. Separate immediate fixes from longer-term prevention.
+
+## Documentation changes
+
+List runbooks/reference pages that were created or updated because of this incident.
/dev/null .. templates/index.md
@@ 0,0 1,9 @@
+# Templates
+
+Copy these page structures when adding new products or operational knowledge. Delete sections that genuinely do not apply rather than filling the wiki with placeholder text.
+
+- [[Templates/Product-Documentation]]
+- [[Templates/Service-Runbook]]
+- [[Templates/Architecture-Decision-Record]]
+- [[Templates/Incident-Review]]
+- [[Templates/Release-Checklist]]
/dev/null .. templates/product-documentation.md
@@ 0,0 1,35 @@
+# Template — Product Documentation
+
+> Copy this structure into a new product directory; this page itself is not a product record.
+
+## Index
+
+Purpose, audience, lifecycle status, repository and links to the main reference pages.
+
+## Current Status
+
+Baseline branch/commit, verification date, supported surface, newest material changes and known documentation discrepancies.
+
+## Getting Started
+
+Smallest repeatable path from zero to a validated working installation/development environment.
+
+## Architecture
+
+Boundaries, identity/data model, dependencies and a diagram where useful.
+
+## Reference
+
+Configuration, commands/API, persistence/data, authentication/security, compatibility/version support.
+
+## Operations
+
+Deployment/release, monitoring, backup/restore, common failures and recovery procedures.
+
+## Development
+
+Module map, build/test commands, CI expectations and source-reference links.
+
+## Roadmap
+
+Future work clearly labelled as planning, with completed behaviour moved into reference pages.
/dev/null .. templates/release-checklist.md
@@ 0,0 1,34 @@
+# Template — Release Checklist
+
+## Scope
+
+- [ ] Release/version/commit identified.
+- [ ] User-visible and operator-visible changes summarised.
+- [ ] Compatibility impact reviewed.
+- [ ] Configuration/data migrations documented.
+
+## Validation
+
+- [ ] Required unit/integration suites pass.
+- [ ] Runtime/smoke tests pass for claimed compatibility targets.
+- [ ] Build artifacts correspond to the intended commit.
+- [ ] Upgrade path tested where applicable.
+
+## Operations
+
+- [ ] Backup/rollback boundary understood.
+- [ ] Required credentials/access available through approved systems.
+- [ ] Monitoring/health check prepared.
+
+## Documentation
+
+- [ ] Current Status page updated.
+- [ ] Commands/configuration/version tables updated if changed.
+- [ ] New limitations or migration notes documented.
+- [ ] Roadmap items moved into reference documentation when completed.
+
+## Post-release
+
+- [ ] Deployment verified from the user perspective.
+- [ ] Logs/metrics checked for regressions.
+- [ ] Temporary migration notes/toggles scheduled for cleanup if applicable.
/dev/null .. templates/service-runbook.md
@@ 0,0 1,29 @@
+# Template — Service Runbook
+
+## Purpose
+
+What this runbook restores or changes, and when to use it.
+
+## Preconditions
+
+Required access, backups, maintenance state and checks before starting. Reference secret locations without copying secrets.
+
+## Procedure
+
+Numbered, executable steps. Put commands in code blocks and state expected output/checkpoints.
+
+## Verification
+
+How to prove the service is healthy from the user's perspective.
+
+## Rollback
+
+Exact safe rollback boundary and data/config implications.
+
+## Escalation
+
+Which product/service owner or specialist is required when the procedure does not recover the system.
+
+## Last validation
+
+Date and version/environment on which this runbook was actually exercised.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9