Skip to content

feat(github): add OSS repository governance & supply-chain hardening - #34

Merged
SHcommit merged 17 commits into
developfrom
feature/oss-governance-hardening
Sep 5, 2026
Merged

feat(github): add OSS repository governance & supply-chain hardening#34
SHcommit merged 17 commits into
developfrom
feature/oss-governance-hardening

Conversation

@SHcommit

@SHcommit SHcommit commented Sep 5, 2026

Copy link
Copy Markdown
Owner

Closes #31. Part of epic #21.

What

OSS 저장소 거버넌스/공급망 hardening 전체 작업을 develop 으로 통합한다.
origin/develop(Cline adapter, improvements backlog)을 이미 이 브랜치에 merge 했다.

Included

  • Structured Issue Forms, source-controlled label taxonomy(type:epic 포함),
    path-based PR labeler, new-issue triage, weekly grouped Dependabot(target develop).
  • ruff lint + pip-audit --strict dependency-audit CI gates; Python floor 3.9 → 3.10.
  • Supply-chain hardening: Antigravity curl | bash → versioned SHA-512-verified artifact;
    release Actions SHA-pinned; PR-title injection 제거.
  • Dormant CODEOWNERS draft.
  • Governance regression tests + 감사 문서(docs/oss-repository-governance-audit.md 등).

Supersedes

Follow-up (merge 직후)

SHcommit and others added 17 commits September 5, 2026 23:16
Pins pytest/pytest-cov/mypy/ruff so Dependabot's pip ecosystem has
real versions to track, and adds an E9+F ruff selection scoped to
what already passes today (broader rule sets are a follow-up).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Clears the codebase for the new lint CI job added in a later task.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
Records the audit findings (repo public since 2026-08-29 with v1.0.1
released but zero branch protection, develop/master release drift,
missing label taxonomy/dependabot/issue forms/lint job) and the
NOW-tier implementation plan those findings led to.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
type:/area:/priority:/size: labels plus needs-triage and blocked,
synced from .github/labels.yml by EndBug/label-sync on push to
develop or manual dispatch. Keeps existing default labels rather
than deleting them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
…iage

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Lint is scoped to E9+F (already clean, prior commit); broader ruff
rule sets are a follow-up, not bundled here. Dependency audit installs
the pinned dev toolchain directly, not this project's own unpublished
package (pip-audit's --strict and --skip-editable can never coexist,
so the audited environment simply never includes anything editable),
and upgrades pip first to clear pip's own known CVEs.

pytest==8.4.2 carries a real CVE (CVE-2025-71176 / PYSEC-2026-1845,
local /tmp directory hijack) whose fix requires pytest>=9.0.3, which
in turn requires Python>=3.10. Decided (human call, project has no
users yet) to drop Python 3.9 support rather than carry a permanent
ignore-vuln exception: requires-python, classifiers, ruff
target-version, and the CI matrix all move to 3.10 as the floor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
The dependency-audit job can't install via `.[dev]` (it must not
install this project's own unpublished package -- see the existing
comment), so its pytest/pytest-cov/mypy/ruff versions are a manual
copy of pyproject.toml's dev extra. Dependabot only updates the
extra, not this workflow file, so flag the duplication for whoever
bumps one and not the other.

Also verified the full CI pytest invocation (with --cov-fail-under=85)
under the pytest==9.1.1 pin, not just the bare test run from the
prior commit's verification.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
…iew)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The public transition happened 2026-08-29 with v1.0.0/v1.0.1 already
released, but branch protection was never applied -- update the docs
to reflect actual re-verified state instead of the old plan.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
§4/§8/§9 already state the repo has been public since 2026-08-29 with
branch protection still missing; §2's "확인된 사실" bullets still said
the repo "is private" and that PR template doesn't exist, directly
contradicting those sections. The missing-branch-protection fact itself
was still accurate and is kept -- only the private-repo framing and the
now-false "no PR template" claim needed correcting.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TAZPZwzSutmru6kSCEogu6
…ance-hardening

# Conflicts:
#	changelog.md
#	handoff.md
#	improvements.md
…ance-hardening

# Conflicts:
#	changelog.md
#	handoff.md
@SHcommit
SHcommit merged commit 106043f into develop Sep 5, 2026
13 checks passed
@SHcommit
SHcommit deleted the feature/oss-governance-hardening branch September 5, 2026 17:07
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