3.7 KiB
3.7 KiB
Plugin Packaging Requirements
Purpose
Define the required process for creating a production-ready WordPress plugin package artifact from this repository.
Scope
This document covers:
- Preparing package contents from repository sources
- Building a distributable archive
- Validating the archive before deployment
It does not cover:
- Production installation steps
- Runtime plugin behavior
Deployment execution and remote exact-match validation are defined in requirements/deployment.md.
Runtime/code separation constraints are defined in requirements/architecture.md.
Source and Output Locations
- Source code root:
code/ - Packaging workspace/output:
package/ - Tests used for pre-package validation:
tests/
Packaging Preconditions
Before creating a package:
- Relevant tests pass in the local compatibility harness.
- Plugin version for release is set in plugin metadata/files.
- Working tree contains intended release changes only.
- Required build tools (
zipor equivalent) are available.
Package Content Rules
The package must include only files required to run the plugin in WordPress.
Required inclusions:
- Main plugin file and all runtime PHP source under
code/ - Runtime assets (CSS/JS/images) required by plugin features
- Any required vendor/runtime dependencies needed in production
- License/readme files required by project policy
Required exclusions:
tests/,compatibility-layer/, and local development-only assets- Temporary files, editor files, OS metadata files
- Build scripts and internal notes not needed at runtime
- Secrets, credentials, or environment-specific private data
Package Structure Requirements
- The archive must expand into a single plugin directory.
- The plugin directory name must be stable and suitable for WordPress plugin installation.
- Directory structure inside the package must preserve runtime-relative paths expected by plugin code.
Build Procedure Requirements
Packaging process must be deterministic and repeatable.
Required steps:
- Create/clean a staging folder under
package/. - Copy approved runtime files from
code/into staging. - Apply exclusion rules to remove non-runtime artifacts.
- Increment plugin patch version (
X.Y.Z -> X.Y.(Z+1)) for each package build unless an explicit version override is provided. - Keep runtime-visible version fields synchronized for the package (plugin header version and health/API version metadata).
- Create a versioned zip archive in
package/. - Record artifact name and version in release notes/changelog.
Artifact naming requirement:
- Use a versioned filename pattern, for example:
<plugin-slug>-<version>.zip
Validation Requirements
Before the artifact is accepted:
- Archive can be opened successfully.
- Archive root contains exactly one plugin folder.
- Main plugin entry file exists at expected location.
- No excluded directories/files are present.
- No files from
compatibility-layer/are present. - Plugin activates successfully in local compatibility-harness/test environment.
Integrity and Traceability
- Each package build must be traceable to a source revision/tag.
- Build date/time and source revision should be recorded with the artifact.
- Rebuilding from the same revision should produce functionally equivalent contents.
Failure Handling
If packaging fails validation:
- Artifact must not be promoted to test or production.
- Failures must be documented with cause and remediation.
- Packaging is re-run only after corrective changes are applied.
Documentation Requirements
Project docs must include:
- Exact packaging command(s) used
- Exclusion/inclusion rules
- Artifact naming convention
- Validation checklist
- Location of produced archives