fix(catalog): stop assuming publisher bought paid GitHub security products - #95
Merged
Conversation
…ducts Treat Enterprise Cloud, Code Security, Secret Protection and Code Quality as explicit consumer opt-in. Keep free public CodeQL, SARIF, Scorecard and attestations. Private repos without those purchases use the private-free programme. Paid profile ids stay stable. Signed-off-by: rldyourmnd <danil@nddev.it.com>
A live plan.name belongs to one account. Public docs still do not copy NDDev-OpenNetwork's observed Free plan, and they now refuse the inverse claim that this organization is on the free plan. Consumers resolve their own plan. Signed-off-by: rldyourmnd <danil@nddev.it.com>
Checkout the consumer-selected immutable release tag, drop the frozen latest release SHA, and state that private attestations need Enterprise Cloud rather than Code Security, Secret Protection or Code Quality. Signed-off-by: rldyourmnd <danil@nddev.it.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Stop treating the publisher as a buyer of GitHub Enterprise Cloud, Code Security, Secret Protection, or Code Quality. Those remain explicitly selectable paid programmes for other consumers. This public library itself is an Organization product, not an Enterprise account, and it keeps the free public surfaces (CodeQL, SARIF, Scorecard, dependency review, attestations).
A live GitHub
plan.namebelongs to one organization.GET /orgs/NDDev-OpenNetworkreturningplan.name=freeis operator evidence for that org only; other organizations, including other NDDev accounts, were not queried and must resolve their own plan. Public docs do not copy that field and also refuse the inverse claim that this organization is on the free plan.Private repositories without those purchases use the private-free programme and
release-supply-chain-free.yml. The SARIF private bundle keeps a dedicated paid example. Profile idspublic-enterprise-maxandenterprise-full-private-fixed80are unchanged.Consumer adoption now checks out the user-selected immutable release tag and resolves the programme from that same SHA (the value written in
uses: ...@<sha>). It does not check outmainor freeze a latest-release date/SHA. Private attestations remain an Enterprise Cloud plan gate; Code Security, Secret Protection and Code Quality do not unlock them. Public free CodeQL/attestations stay explicit.Issues
Type of change
(Docs/catalog/examples/skills/tests; one reusable comment; one new paid caller example.)
Threat-model note (required for workflow / permission changes)
nddev-security-bundle.ymlbehaviour and job permissions are unchanged. Comments now state it requires Code Security. The publisher-org private example no longer calls the SARIF bundle. The newexamples/private-paid-ghas/security-selfhosted.ymlis the explicit paid caller and grantsactions: read+security-events: write. Public self-CI still uses CodeQL, zizmor SARIF, Scorecard, and attested release — free on public repositories.Permissions diff (required for workflow / permission changes)
Reusable jobs: none.
Example caller
examples/private-paid-ghas/security-selfhosted.yml(new):Checklist
release-version or matching
# commit:<full SHA>comment (no tags/branches).permissions(top-level{}, per-job minimal scopes).concurrencyandtimeout-minutespresent on new/changed workflows/jobs.persist-credentials: falseon all read-onlyactions/checkoutsteps.${{ inputs.* }}/${{ github.event.* }}interpolated insiderun:(passed via
env:and referenced as shell variables).SARIF/no-SARIF behavior is split into explicit workflow contracts.
actionlintpasses locally.zizmor --pedanticpasses locally (notemplate-injectionor unpinnedfindings).
docs//catalog/updated (if a workflowwas added or changed).
CHANGELOG.mdupdated under[Unreleased].-S) and signed off (-s, DCO); Conventional Commitmessages.
Authorship of source commits:
rldyourmnd <danil@nddev.it.com>. Merge is for independent coordinator review of that authorship, without waiting on the wide background CI matrix.Tier impact
Verification (head
56e118e502a5e965717bd0ab1550aa8007a13286, baseb4aaab59dc674923817ad11f3fe5801ed5a47935)Changed paths resolved via
git diff --name-only b4aaab59...HEAD(31 files).[ OK ] product-facts-touchedvalidate_all (touched): OKvalidate_all (all): OKincluding core,product-facts-touched, and advisoryproduct-facts-calendar,release-ledger-tags,consumer-skill-release,docs-links,cache-upstream-defaults,flutter-pin,qt-pin,transitive-action-pins,anchor-contexts.Static validation is not reusable runtime evidence. No new fixture run is claimed.
Settings follow-up (not applied)
Read-only. Coordinator-owned plan→approve→apply. Fleet resources were not touched.
GET /orgs/NDDev-OpenNetworkonly:type=Organization,plan.name=free,enterprise=null,seats=0. Operator evidence for this org. Other orgs were not queried.GitHub recommended(id=17,enforcement: unenforced). Nonddev-config.not-configured; Dependabot security updates disabled; Actionssha_pinning_required: trueat repo and org.