Skip to content

chore: OSS readiness – governance, supply-chain hardening, and doc fixes - #7

Merged
marcinobel merged 8 commits into
mainfrom
develop
Jun 19, 2026
Merged

chore: OSS readiness – governance, supply-chain hardening, and doc fixes#7
marcinobel merged 8 commits into
mainfrom
develop

Conversation

@marcinobel

Copy link
Copy Markdown
Member

Summary

Brings main up to the Qodeca OSS standard. Latest /oss-readiness verdict: Ready
(0 must-fix; the two open items C9/C13 are deliberate should-fixes).

Changes

Licensing / governance

  • REUSE 3.3 / SPDX compliance: LICENSES/, REUSE.toml, per-file SPDX headers, CI reuse lint (verified compliant, 88/88 files).
  • Governance set added: CLA.md, COPYRIGHT, TRADEMARKS.md, SUPPORT.md, CITATION.cff, plus .github/CODEOWNERS and Dependabot (npm + actions).

Security / supply chain

  • GitHub Actions pinned to full commit SHAs; publish workflow hardened (OIDC trusted publishing behind a protected release environment).
  • Repo settings (out of this diff, already applied): secret scanning + push protection, private vulnerability reporting, branch protection on main, signed tags enabled going forward.

Docs

  • sc push is now documented as an unsupported public-API stub (was misleadingly listed as functional) – README table/footnote, --help description, and CLAUDE.md.
  • README: Support section linking SUPPORT.md, Node.js engines badge.
  • CHANGELOG [Unreleased] records the governance/security work; CLAUDE.md notes the reuse lint CI step and signed-tag/protected-environment release flow.

Verification

Local: typecheck, lint, format:check, check:headers, reuse lint, build, 19/19 unit tests all pass. This PR triggers the full CI suite (including the Dockerized e2e / e2e-macos jobs).

Brings 8cli up to the same OSS-governance bar as qodeca/erfana and
qodeca/erfana-skills (cross-repo lens-review remediation).

Licensing / IP (REUSE 3.3 — `reuse lint` now passes):
- Add LICENSES/GPL-3.0-only.txt so the repo is REUSE-conformant (was
  claiming GPL via REUSE.toml with no LICENSES/ dir → lint failed).
- Add CLA.md (mirrors the sibling repos' §3 dual-licensing grant) and
  reference it from CONTRIBUTING.md; the CLA-assistant bot still needs
  installing for the repo (org-admin web step).
- Add COPYRIGHT with the relicensing record (internal monorepo →
  GPL-3.0-only, effective 2026-06-13).
- Switch REUSE.toml to the `path = "**"` aggregate catch-all so new files
  are covered by default (was an enumerated list that missed CHANGELOG,
  templates, etc.).
- Standardize the copyright holder to "Qodeca sp. z o.o." across every
  inline SPDX header, REUSE.toml, and package.json author (was bare
  "Qodeca").
- Wrap the literal SPDX token in scripts/check-headers.sh with
  REUSE-Ignore comments so it is not parsed as a license expression.

Brand / trademark:
- Add TRADEMARKS.md (reserve "8cli"/"Qodeca" per GPLv3 §7(e), forks must
  rename incl. the npm name; n8n + Anthropic nominative-use notes).
- README: add the Anthropic non-affiliation line to the Disclaimer, a
  "Built by Qodeca" + "Related projects" block, and a dedicated Security
  section; note the CLA in Contributing.

Security / supply chain:
- SHA-pin actions in publish.yml (the OIDC npm-publish workflow) to the
  same vetted SHAs ci.yml already uses; Dependabot maintains them.
- Add a REUSE compliance step to ci.yml.
- Add .github/CODEOWNERS gating CI and credential surfaces to @marcinobel.
Lens-review remediation (round 2).

Security / supply chain:
- publish.yml: pin `npm@11` instead of mutable `npm@latest` in the OIDC
  publish job (#2); add `environment: release` to gate the token mint
  behind a protected environment (#3 — configure required reviewer + v*
  tag filter in repo settings for it to take effect).
- ci.yml: pin `reuse==6.2.0` for the REUSE lint step (reproducibility, #13).

Docs:
- CLA.md / CONTRIBUTING.md / README: drop the claim that a CLA-assistant
  bot auto-posts a signing link (none is installed); opening a PR is the
  agreement, bot may be added later (#1).
- README: normalize the new prose to en dashes (house style, #11).
- SUPPORT.md routes questions/bugs/security/commercial enquiries (F4)
- CITATION.cff (CFF 1.2.0) adds machine-readable citation metadata (F3)
- CONTRIBUTING release flow now mandates signed annotated tags and notes
  the protected release-environment approval gate
…anges

- CHANGELOG [Unreleased]: REUSE/SPDX compliance, governance set (CLA, COPYRIGHT,
  TRADEMARKS, SUPPORT, CITATION, CODEOWNERS, Dependabot), signed-tag/trusted-publish
  release flow, SHA-pinned Actions
- CLAUDE.md: note reuse lint CI step and the signed-tag + protected release environment
- README: add Support section linking SUPPORT.md
- sc push is a public-API stub that always returns ERR_NOT_SUPPORTED; the README
  commands table, the command --help description, and CLAUDE.md now say so instead
  of implying it works (fixes the OSS-readiness D11 material-false-claim finding)
- add a Node.js engines badge to the README header (D1)
Transitive dev-only dep (via testcontainers); not in the published package, but
npm audit --audit-level=high in CI fails on the undici advisories
(GHSA-vmh5-mc38-953g, GHSA-pr7r-676h-xcf6, GHSA-38rv-x7px-6hhq). audit now clean.
Previously CI ran only on push to main and on pull_request, so direct pushes to
the default branch (develop) were unverified. Add develop to the push branches.
@marcinobel
marcinobel merged commit e3f6c94 into main Jun 19, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant