Goal
Make it straightforward for an external team to package their own darnit implementation plugin (their org's policy, a regulator's framework, an internal baseline) and publish it so darnit discovers it via entry points.
Scope
A new doc, likely docs/packaging-plugins.md, covering:
- Minimum
pyproject.toml for an implementation: entry-point declaration, dependency on darnit, Python version pins.
- Where to put TOML control definitions and how the framework discovers them.
- How
register() and the ComplianceImplementation protocol fit together (cross-reference to CLAUDE.md and framework-design/spec.md).
- Versioning: how to declare
spec_version and what changes warrant a bump.
- Signing: Sigstore-signed wheels and the
[plugins] trust config in .baseline.toml.
- Testing: how to use
darnit-testchecks patterns for plugin tests.
- Distribution: PyPI, private indexes, git installs.
Why now
The framework already supports third-party plugins (darnit.implementations entry point), and we've internally built darnit-baseline, darnit-gittuf, etc. against the protocol. The path is real but undocumented externally — someone trying it today has to read the source.
Acceptance
Goal
Make it straightforward for an external team to package their own darnit implementation plugin (their org's policy, a regulator's framework, an internal baseline) and publish it so darnit discovers it via entry points.
Scope
A new doc, likely
docs/packaging-plugins.md, covering:pyproject.tomlfor an implementation: entry-point declaration, dependency ondarnit, Python version pins.register()and theComplianceImplementationprotocol fit together (cross-reference toCLAUDE.mdandframework-design/spec.md).spec_versionand what changes warrant a bump.[plugins]trust config in.baseline.toml.darnit-testcheckspatterns for plugin tests.Why now
The framework already supports third-party plugins (
darnit.implementationsentry point), and we've internally builtdarnit-baseline,darnit-gittuf, etc. against the protocol. The path is real but undocumented externally — someone trying it today has to read the source.Acceptance
docs/packaging-plugins.mdlands.