Skip to content

🌱 CNCF incubation readiness: governance docs, security self-assessment, roadmap#4069

Merged
clubanderson merged 3 commits intomainfrom
cncf-incubation-readiness
Apr 1, 2026
Merged

🌱 CNCF incubation readiness: governance docs, security self-assessment, roadmap#4069
clubanderson merged 3 commits intomainfrom
cncf-incubation-readiness

Conversation

@clubanderson
Copy link
Copy Markdown
Collaborator

@clubanderson clubanderson commented Apr 1, 2026

📌 Fixes


📝 Summary of Changes

Closes CNCF incubation gaps identified in a readiness assessment:

  • ROADMAP.md — Near-term (Q2 2026), mid-term, long-term plans with non-goals section
  • docs/ARCHITECTURE.md — System diagram, component descriptions, data flows, security architecture, deployment modes; clarified that Prometheus /metrics is served by kc-agent, not the console backend
  • docs/SUPPORT.md — Version support policy, security patch timelines, platform compatibility matrix; corrected weekly release format to vX.Y.Z semver tag and updated Go requirement to 1.25+
  • docs/COMMUNITY.md — Communication channels, meeting schedule, how to participate
  • docs/security/SELF-ASSESSMENT.md — TAG-Security self-assessment covering actors, actions, threat model, and secure development practices; corrected SBOM entry to reflect it is not yet generated
  • OWNERS — Added MikeSpreitzer as approver and reviewer
  • SECURITY_CONTACTS — Trimmed to clubanderson and MikeSpreitzer
  • README.md — Added OpenSSF Scorecard badge
  • auto-qa.yml — Always-on governance check validates ROADMAP.md freshness, required sections, and governance file presence; added fetch-depth: 0 so git history is available for staleness checks; improved missing-section messages to use human-friendly labels instead of raw regex strings

Remaining gaps (not in this PR)

  • Register for OpenSSF Best Practices Badge at bestpractices.dev (manual action)
  • Strengthen ADOPTERS.md with real adopter organizations
  • Expand maintainer base beyond 2 (Phase 3)
  • Engage TAG-Security for joint review
  • Find TOC sponsor

Changes Made

  • Added ROADMAP.md with near-term, mid-term, long-term, and non-goals sections
  • Added docs/ARCHITECTURE.md with system diagram and component descriptions; clarified Prometheus metrics are served by kc-agent
  • Added docs/SUPPORT.md with version support policy; corrected weekly release format and Go version (1.25+)
  • Added docs/COMMUNITY.md with communication channels and meeting schedule
  • Added docs/security/SELF-ASSESSMENT.md with TAG-Security self-assessment; corrected SBOM statement to reflect current practice
  • Updated OWNERS and SECURITY_CONTACTS
  • Added OpenSSF Scorecard badge to README.md
  • Extended auto-qa.yml with always-on ROADMAP/governance check; fixed shallow checkout (fetch-depth: 0) and human-friendly section labels in error messages

Checklist

Please ensure the following before submitting your PR:

  • I used a coding agent (Claude Code, Copilot, Gemini, or Codex) to generate/review this code
  • I have reviewed the project's contribution guidelines
  • New cards target console-marketplace, not this repo
  • isDemoData is wired correctly (cards show Demo badge when using demo data)
  • I have written unit tests for the changes (if applicable)
  • I have tested the changes locally and ensured they work as expected
  • All commits are signed with DCO (git commit -s)

Screenshots or Logs (if applicable)

N/A — documentation and workflow changes only.


👀 Reviewer Notes

  • The fetch-depth: 0 change applies to the single checkout step for the entire auto-qa job; this ensures git history is available for the ROADMAP.md staleness check.
  • The auto-qa section-label fix uses a REGEX::Label pattern to emit readable section names (e.g. "Near-term / short-term") in GitHub issue bodies instead of raw regex strings.

Test plan

  • Build passes (npm run build)
  • Lint passes (npm run lint)
  • auto-qa ROADMAP check works: verify ROADMAP.md validates (has current year, required sections with friendly labels)
  • Review ARCHITECTURE.md diagram renders correctly in GitHub markdown

Add ROADMAP.md, ARCHITECTURE.md, SUPPORT.md, COMMUNITY.md, and
TAG-Security self-assessment to close CNCF incubation gaps. Add
MikeSpreitzer as maintainer in OWNERS. Add OpenSSF Scorecard badge
to README. Add ROADMAP governance check to auto-qa workflow.

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Copilot AI review requested due to automatic review settings April 1, 2026 03:21
@kubestellar-prow kubestellar-prow bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Apr 1, 2026
@kubestellar-prow
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign clubanderson for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

👋 Hey @clubanderson — thanks for opening this PR!

🤖 This project is developed exclusively using AI coding assistants.

Please do not attempt to code anything for this project manually.
All contributions should be authored using an AI coding tool such as:

This ensures consistency in code style, architecture patterns, test coverage,
and commit quality across the entire codebase.


This is an automated message.

@kubestellar-prow kubestellar-prow bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Apr 1, 2026
@netlify
Copy link
Copy Markdown

netlify bot commented Apr 1, 2026

Deploy Preview for kubestellarconsole canceled.

Name Link
🔨 Latest commit d52eea8
🔍 Latest deploy log https://app.netlify.com/projects/kubestellarconsole/deploys/69cc94f45a59f80007efd2ef

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses CNCF incubation readiness gaps by adding/adjusting governance and security documentation, updating maintainer metadata, and introducing an always-on workflow check to validate roadmap/governance hygiene.

Changes:

  • Added core governance/security documentation (roadmap, architecture, community, support policy, TAG-Security self-assessment).
  • Updated project metadata (OWNERS approver/reviewer list, security contacts, README badge).
  • Extended Auto-QA to perform a ROADMAP/governance presence + freshness check every run.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
SECURITY_CONTACTS Removes former contacts from the published security contact list.
ROADMAP.md Introduces a public roadmap with near/mid/long-term plans and non-goals.
README.md Adds an OpenSSF Scorecard badge for supply-chain signaling.
OWNERS Adds an additional approver/reviewer to strengthen governance.
docs/SUPPORT.md Documents support policy, release channels, patch timelines, and platform matrix.
docs/security/SELF-ASSESSMENT.md Adds a TAG-Security style self-assessment for CNCF readiness.
docs/COMMUNITY.md Documents communication channels, meetings, and governance pointers.
docs/ARCHITECTURE.md Provides an architecture overview, diagram, flows, and deployment modes.
.github/workflows/auto-qa.yml Adds an always-on ROADMAP/governance check and routes findings into the issue creation step.

Comment on lines +966 to +975
if [ ! -f "ROADMAP.md" ]; then
ISSUES="${ISSUES}### ROADMAP.md not found\nCNCF incubation requires a public roadmap document.\n\n"
HAS_ERRORS=true
else
# Check if ROADMAP.md has been updated in the last 90 days
LAST_MODIFIED=$(git log -1 --format="%ci" -- ROADMAP.md 2>/dev/null || echo "")
if [ -n "$LAST_MODIFIED" ]; then
STALE_THRESHOLD_DAYS=90
LAST_EPOCH=$(date -d "$LAST_MODIFIED" +%s 2>/dev/null || date -jf "%Y-%m-%d %H:%M:%S %z" "$LAST_MODIFIED" +%s 2>/dev/null || echo "0")
DAYS_AGO=$(( ( $(date +%s) - LAST_EPOCH ) / 86400 ))
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

git log -1 -- ROADMAP.md won’t reliably return the last-modified commit with the current shallow checkout (actions/checkout default fetch-depth=1). If the most recent commit doesn’t touch ROADMAP.md, LAST_MODIFIED will be empty and the staleness check is skipped, producing false negatives. Consider checking out with fetch-depth: 0 (or fetching file history before this step) so the staleness calculation is meaningful.

Copilot uses AI. Check for mistakes.
Comment on lines +990 to +992
for SECTION in "Near-Term\|Short-Term\|Q[1-4]" "Mid-Term\|Medium-Term" "Long-Term\|Future" "Non-Goals\|Out of Scope"; do
if ! grep -qiE "$SECTION" ROADMAP.md; then
ISSUES="${ISSUES}### ROADMAP.md missing section: ${SECTION%%\\*}\nA well-structured roadmap should include near-term, mid-term, long-term, and non-goals sections.\n\n"
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The missing-section message uses ${SECTION%%\\*}, but the SECTION strings don’t contain \\*, so the message will print the full regex (e.g., Near-Term\|Short-Term\|Q[1-4]) rather than a human-friendly section name. Consider tracking a separate display name for each required section (or splitting on |) for clearer issue output.

Suggested change
for SECTION in "Near-Term\|Short-Term\|Q[1-4]" "Mid-Term\|Medium-Term" "Long-Term\|Future" "Non-Goals\|Out of Scope"; do
if ! grep -qiE "$SECTION" ROADMAP.md; then
ISSUES="${ISSUES}### ROADMAP.md missing section: ${SECTION%%\\*}\nA well-structured roadmap should include near-term, mid-term, long-term, and non-goals sections.\n\n"
for SECTION_ENTRY in "Near-Term\|Short-Term\|Q[1-4]::Near-term / short-term" "Mid-Term\|Medium-Term::Mid-term" "Long-Term\|Future::Long-term / future" "Non-Goals\|Out of Scope::Non-goals / out of scope"; do
SECTION_REGEX="${SECTION_ENTRY%%::*}"
SECTION_LABEL="${SECTION_ENTRY#*::}"
if ! grep -qiE "$SECTION_REGEX" ROADMAP.md; then
ISSUES="${ISSUES}### ROADMAP.md missing section: ${SECTION_LABEL}\nA well-structured roadmap should include near-term, mid-term, long-term, and non-goals sections.\n\n"

Copilot uses AI. Check for mistakes.
docs/SUPPORT.md Outdated
| Channel | Frequency | Format | Stability |
|---------|-----------|--------|-----------|
| **Nightly** | Daily (5 AM UTC) | `v0.x.y-nightly.YYYYMMDD` | Pre-release; may contain breaking changes |
| **Weekly** | Sundays (5 AM UTC) | `v0.x.y-weekly.YYYYMMDD` | Stable snapshot; suitable for dev/test |
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documented weekly release version format (v0.x.y-weekly.YYYYMMDD) doesn’t match the release workflow: weekly pushes a semver tag (e.g., vX.Y.Z) and uses a -weekly suffix only in the GitHub Release name (no date). Align this table with the actual tagging/release scheme to avoid confusing users.

Suggested change
| **Weekly** | Sundays (5 AM UTC) | `v0.x.y-weekly.YYYYMMDD` | Stable snapshot; suitable for dev/test |
| **Weekly** | Sundays (5 AM UTC) | `vX.Y.Z` (semver tag; GitHub Release name `<version>-weekly`) | Stable snapshot; suitable for dev/test |

Copilot uses AI. Check for mistakes.
docs/SUPPORT.md Outdated
|-----------|-------------------|
| **Kubernetes** | 1.28+ |
| **OpenShift** | 4.14+ |
| **Go** | 1.24+ |
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The support matrix says Go 1.24+, but go.mod specifies go 1.25.0, meaning Go 1.24 is not sufficient to build this module. Update the supported Go version to match the go directive (and any CI/release constraints).

Suggested change
| **Go** | 1.24+ |
| **Go** | 1.25+ |

Copilot uses AI. Check for mistakes.
Comment on lines +68 to +73
- **Storage**: SQLite via the `pkg/store` package for user preferences, onboarding state, and settings
- **API**: RESTful endpoints under `/api/` for cluster data, missions, marketplace, settings
- **WebSocket**: Real-time event push for cluster state changes, mission progress, and alerts
- **Metrics**: Prometheus `/metrics` endpoint for operational monitoring

The backend serves the built frontend as static assets on port 8080 and proxies Kubernetes API requests through the user's kubeconfig.
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doc claims the backend exposes a Prometheus /metrics endpoint, but /metrics appears to be served by kc-agent (pkg/agent/server.go) rather than the console backend (no /metrics route in pkg/api/server.go). Please clarify which component exposes metrics (or add the endpoint to the backend if that’s the intent).

Copilot uses AI. Check for mistakes.
| **Software** | [KubeStellar Console](https://github.com/kubestellar/console) |
| **Security Provider** | No — Console is a user-facing dashboard, not a security tool |
| **Languages** | Go (backend), TypeScript/React (frontend) |
| **SBOM** | Generated via GoReleaser for each release |
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The metadata table states “SBOM generated via GoReleaser for each release,” but the current .goreleaser.yaml doesn’t define SBOM generation (no sboms section / related steps found). Either update the release pipeline to actually produce SBOM artifacts or adjust this statement to reflect current practice.

Suggested change
| **SBOM** | Generated via GoReleaser for each release |
| **SBOM** | Not currently generated; planned via GoReleaser in future releases |

Copilot uses AI. Check for mistakes.
@clubanderson
Copy link
Copy Markdown
Collaborator Author

🔄 Auto-Applying Copilot Code Review

Copilot code review found 4 code suggestion(s) and 2 general comment(s).

@copilot Please apply all of the following code review suggestions:

  • .github/workflows/auto-qa.yml (line 992): for SECTION_ENTRY in "Near-Term\|Short-Term\|Q[1-4]::Near-term / short-term" "Mi...
  • docs/SUPPORT.md (line 12): | **Weekly** | Sundays (5 AM UTC) | vX.Y.Z(semver tag; GitHub Release name<...`
  • docs/SUPPORT.md (line 37): | **Go** | 1.25+ |
  • docs/security/SELF-ASSESSMENT.md (line 23): | **SBOM** | Not currently generated; planned via GoReleaser in future releases ...

Also address these general comments:

  • .github/workflows/auto-qa.yml (line 975): git log -1 -- ROADMAP.md won’t reliably return the last-modified commit with the current shallow checkout (actions/che
  • docs/ARCHITECTURE.md (line 73): This doc claims the backend exposes a Prometheus /metrics endpoint, but /metrics appears to be served by kc-agent

Push all fixes in a single commit. Run cd web && npm run build && npm run lint before committing.


Auto-generated by copilot-review-apply workflow.

…SBOM, metrics doc

Agent-Logs-Url: https://github.com/kubestellar/console/sessions/2ee54c1c-9586-4bac-b48f-cc389298498f

Co-authored-by: clubanderson <407614+clubanderson@users.noreply.github.com>
@kubestellar-prow kubestellar-prow bot added dco-signoff: no Indicates the PR's author has not signed the DCO. and removed dco-signoff: yes Indicates the PR's author has signed the DCO. labels Apr 1, 2026
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 1, 2026

🔄 Auto-Applying Copilot Code Review

Copilot code review found 4 code suggestion(s) and 2 general comment(s)....

Applied all suggestions in commit 42e01c8:

  • auto-qa.yml (fetch-depth): Added fetch-depth: 0 to the checkout step so git log -1 -- ROADMAP.md reliably returns the last-modified commit even in shallow clones.
  • auto-qa.yml (section labels): Switched to SECTION_ENTRY::label pattern — each entry now carries a human-friendly display name (e.g. Near-term / short-term) that's printed in the issue message instead of the raw regex.
  • docs/SUPPORT.md (weekly format): Updated to vX.Y.Z semver tag with <version>-weekly GitHub Release name suffix, matching the actual release workflow.
  • docs/SUPPORT.md (Go version): Updated to 1.25+ to match the go directive in go.mod.
  • docs/security/SELF-ASSESSMENT.md (SBOM): Changed to "Not currently generated; planned via GoReleaser in future releases" to reflect actual practice.
  • docs/ARCHITECTURE.md (metrics): Clarified that the Prometheus /metrics endpoint is served by kc-agent, not the console backend.

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
@kubestellar-prow
Copy link
Copy Markdown
Contributor

Thanks for your pull request. Before we can look at it, you'll need to add a 'DCO signoff' to your commits.

📝 Please follow instructions in the contributing guide to update your commits with the DCO

Full details of the Developer Certificate of Origin can be found at developercertificate.org.

The list of commits missing DCO signoff:

  • 42e01c8 🌱 Apply code review: fix shallow checkout, section labels, versions, SBOM, metrics doc
Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@clubanderson clubanderson merged commit 28a88d0 into main Apr 1, 2026
14 of 20 checks passed
@kubestellar-prow kubestellar-prow bot deleted the cncf-incubation-readiness branch April 1, 2026 11:15
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

Thank you for your contribution! Your PR has been merged.

Check out what's new:

Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: no Indicates the PR's author has not signed the DCO. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants