Why
marketplace-02 provides multi-registry support but modules carry no publisher attestation beyond a simple publisher string. To enable a verified third-party module ecosystem, the CLI needs a CA-style publisher identity system: NOLD AI vouches for publisher identity and module integrity, but not for module content or behaviour. Publishers host their own artifacts; NOLD AI hosts only the trust index.
What Changes
- NEW:
src/specfact_cli/trust/ — trust orchestration layer (resolver.py, publisher_registry.py, key_store.py)
- MODIFY:
src/specfact_cli/registry/crypto_validator.py — extend validate_module() with verified and community tier branches (official path unchanged)
- MODIFY:
src/specfact_cli/modules/module_registry/src/ — trust verification at install; trust tier badges in search/info; --trust-community / --trust-unregistered flags with audit logging
- MODIFY:
scripts/publish-module.py — add NOLD AI registry endorsement countersignature step
- NEW:
scripts/sign-publishers.py — CI script to sign publishers/index.json
- NEW:
docs/guides/publisher-trust.md — user-facing trust tier guide
Acceptance Criteria
specfact module install @mycompany/specfact-jira-sync verifies publisher attestation and registry endorsement before installing
specfact module search shows tier badges: [official], [verified], [community], [unregistered]
- Community modules prompt before install; unregistered modules are blocked unless
--trust-unregistered
~/.specfact/module-audit.log records all trust-override installs
- All public APIs have
@icontract and @beartype decorators
- Existing official-tier install path has zero regressions
OpenSpec Change Proposal: marketplace-03-publisher-identity
Why
marketplace-02 provides multi-registry support but modules carry no publisher attestation beyond a simple publisher string. To enable a verified third-party module ecosystem, the CLI needs a CA-style publisher identity system: NOLD AI vouches for publisher identity and module integrity, but not for module content or behaviour. Publishers host their own artifacts; NOLD AI hosts only the trust index.
What Changes
src/specfact_cli/trust/— trust orchestration layer (resolver.py,publisher_registry.py,key_store.py)src/specfact_cli/registry/crypto_validator.py— extendvalidate_module()withverifiedandcommunitytier branches (official path unchanged)src/specfact_cli/modules/module_registry/src/— trust verification at install; trust tier badges in search/info;--trust-community/--trust-unregisteredflags with audit loggingscripts/publish-module.py— add NOLD AI registry endorsement countersignature stepscripts/sign-publishers.py— CI script to signpublishers/index.jsondocs/guides/publisher-trust.md— user-facing trust tier guideAcceptance Criteria
specfact module install @mycompany/specfact-jira-syncverifies publisher attestation and registry endorsement before installingspecfact module searchshows tier badges:[official],[verified],[community],[unregistered]--trust-unregistered~/.specfact/module-audit.logrecords all trust-override installs@icontractand@beartypedecoratorsOpenSpec Change Proposal: marketplace-03-publisher-identity