Versioned vs. unversioned products
The following table lists all products in the repository and whether their documentation is versioned:| Product | Directory | Versioned |
|---|---|---|
| Boundary | content/boundary | Yes |
| Consul | content/consul | Yes |
| HCP | content/hcp-docs | No |
| HCP Vault Dedicated | content/hcp-docs | No |
| HCP Vault Secrets | content/hcp-docs | No |
| HCP Packer | content/hcp-docs | No |
| Nomad | content/nomad | Yes |
| Sentinel | content/sentinel | Yes |
| Terraform | content/terraform | Yes |
| Terraform CDK | content/terraform-cdk | Yes |
| HCP Terraform agents | content/terraform-docs-agents | Yes |
| Terraform (common docs) | content/terraform-docs-common | No |
| Terraform Enterprise | content/terraform-enterprise | Yes |
| Terraform MCP Server | content/terraform-mcp-server | Yes |
| Terraform Migrate | content/terraform-migrate | Yes |
| Terraform Plugin Framework | content/terraform-plugin-framework | Yes |
| Terraform Plugin Log | content/terraform-plugin-log | Yes |
| Terraform Plugin Mux | content/terraform-plugin-mux | Yes |
| Terraform Plugin SDK | content/terraform-sdk | Yes |
| Terraform Plugin Testing | content/terraform-plugin-testing | Yes |
| Vault | content/vault | Yes |
| Waypoint | content/hcp-docs | No |
| Well-Architected Framework | content/well-architected-framework | No |
Directory structure for versioned products
For versioned products, the product directory contains one subdirectory per supported version:Finding the right version to edit
When updating currently published documentation, edit the files in the version directory that corresponds to the released version you want to change. If you need to apply the same fix to multiple versions, edit each version directory separately. For upcoming minor or patch releases, each product’s tech writer team creates an assembly branch named using the format<product>/<exact_release_number> (for example, vault/202511). Clone that branch and make your changes in the current release folder:
The v-latest and RC version workflow
The prebuild process and version metadata generation use thesemverCoerce function defined for each product in productConfig.mjs to sort and identify the latest version. The version directory with the highest semver value is treated as the latest version and served at the latest version alias in the API.
Terraform Enterprise uses date-based version strings (e.g.,
v202206-01) rather than semver. Its semverCoerce function converts these date strings to a sortable semver representation purely for ordering purposes.main. The new version directory goes live, and the latest alias in the API automatically points to the new highest version.
How version metadata is generated
The prebuild process generatesapp/api/versionMetadata.json by:
- Scanning each versioned product’s content directory for version subdirectories.
- Applying the product’s
semverCoercefunction to normalize version strings for sorting. - Writing the sorted list of versions and their metadata into
versionMetadata.json.
GET /api/content/[productSlug]/version-metadata endpoint, which the dev-portal uses to populate version selector dropdowns.