v0.3.0 — workflow trust anchor, register-level policy diff
Trust-boundary honesty and register-level policy protection, from a third external review of v0.2.1. No adoption-schema shape changes to the adoption file itself; the register schemas now reject empty/whitespace-only semantic strings and profile-mandated registers must be non-empty (minor release — theoretically breaking for adopters relying on vacuous passes; none known). See CHANGELOG.md.
Canonical pin for adopters: v0.3.0 @ 13f4f2d57d780a35cf0b890cdc5da190eae4c325 (this tag's commit).
Security / trust boundary
- Trusted-checkout-first. Every job verifies the workflow's own identity (
job.workflow_repository== canonical, and the caller pins it by full 40-char SHA — tag/branch callers are rejected) and checks out that exact source as the pinned profile.upstream.commitmust equal the workflow's own SHA; the v0.2.1 version-pinned pyyaml bootstrap is gone (no install precedes the trusted checkout). GitHub.com only. - The caller-workflow boundary is documented honestly: a pull request runs its own version of the caller, so it can swap the
@reference — no reusable-workflow content can defend that. Controls: CODEOWNERS on.github/workflows/(in the adopter bundle), organization Actions allow-lists, and organization rulesets with required workflows (GitHub Team/Enterprise). A green check is an input to human review, not a tamper-proof verdict.
Upgrade actions when re-pinning
- Update
upstream.version,upstream.commit, and the caller's@reference to the SHA above in the same change. The pull-request description needs anAssurance policy change: <why>line (the policy regression check flags every pin move). - The caller must pin the workflow by full SHA (a tag/branch
@reference is now rejected).
Also in this release
- Register-level policy regression (stable-ID base/head diff): deleted entries; invariant severity/status/intent weakenings and evidence removal; claim status/proof-tier downgrades; residual impact downgrades.
CONTRADICTEDis treated as an honesty upgrade, never flagged. Adoption-level findings gainhuman_owner,paths.*, andpublic_assurance_root. - Stage-proportional acknowledgment:
Assurance policy change:downgrades findings to warnings only while the base declaration isDRAFT; fromHUMAN_REVIEWEDon, findings stay errors even when acknowledged. - Visibility-aware disclosure: at
CONFORMANT,RESTRICTED/EMBARGOEDentries are errors only in public repositories (CI passes the repository's actual visibility;--repo-visibilityfor standalone runs). - Profile-mandated registers must be non-empty; register schemas reject empty/whitespace-only semantic strings.
actionlint(digest-pinned) added to CI; GOVERNANCE.md defines honest review classes.- 70-case validator regression suite.