diff --git a/.github/ISSUE_TEMPLATE/1a_FeatureRequest.yml b/.github/ISSUE_TEMPLATE/1a_FeatureRequest.yml index 93a3b3c..42d5af1 100644 --- a/.github/ISSUE_TEMPLATE/1a_FeatureRequest.yml +++ b/.github/ISSUE_TEMPLATE/1a_FeatureRequest.yml @@ -37,7 +37,7 @@ body: - label: Security Analysis - label: Detailed Design - label: Implementation and Testing - - label: all + - label: all validations: required: true - type: textarea @@ -76,4 +76,4 @@ body: - '3.0' default: 0 validations: - required: false \ No newline at end of file + required: false diff --git a/.github/ISSUE_TEMPLATE/1b_ComponentenRequest.yml b/.github/ISSUE_TEMPLATE/1b_ComponentenRequest.yml index f360312..8527efc 100644 --- a/.github/ISSUE_TEMPLATE/1b_ComponentenRequest.yml +++ b/.github/ISSUE_TEMPLATE/1b_ComponentenRequest.yml @@ -37,7 +37,7 @@ body: - label: Security Analysis - label: Detailed Design - label: Implementation and Testing - - label: all + - label: all validations: required: true - type: textarea @@ -76,4 +76,4 @@ body: - '3.0' default: 0 validations: - required: false \ No newline at end of file + required: false diff --git a/.github/ISSUE_TEMPLATE/2_ProductIncrement.yml b/.github/ISSUE_TEMPLATE/2_ProductIncrement.yml index f8df5ed..acfcc0f 100644 --- a/.github/ISSUE_TEMPLATE/2_ProductIncrement.yml +++ b/.github/ISSUE_TEMPLATE/2_ProductIncrement.yml @@ -24,8 +24,8 @@ body: label: Product Increment Description description: | - New Functionality / Features - - API changes - - Major Fixes + - API changes + - Major Fixes validations: required: true - type: textarea @@ -34,4 +34,3 @@ body: description: Details on when the Product Increment is considered "done" validations: required: true - \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/5_Bug.yml b/.github/ISSUE_TEMPLATE/5_Bug.yml index 6df892e..3278f60 100644 --- a/.github/ISSUE_TEMPLATE/5_Bug.yml +++ b/.github/ISSUE_TEMPLATE/5_Bug.yml @@ -75,9 +75,9 @@ body: required: true - type: dropdown attributes: - label: First Affected Release + label: First Affected Release options: - - not released (main) + - not released (main) - pre-0.5 - 0.5 - 0.6 @@ -90,9 +90,9 @@ body: required: false - type: dropdown attributes: - label: Last Affected Release + label: Last Affected Release options: - - not released (main) + - not released (main) - 0.5 - 0.6 - 0.7 @@ -106,7 +106,7 @@ body: attributes: label: Expected Fixed Release options: - - before release (main) + - before release (main) - 0.5 - 0.6 - 0.7 diff --git a/.github/references/agent-card.schema.json b/.github/references/agent-card.schema.json index d06c2d5..3a517ab 100644 --- a/.github/references/agent-card.schema.json +++ b/.github/references/agent-card.schema.json @@ -152,4 +152,4 @@ } } } -} \ No newline at end of file +} diff --git a/.github/references/repo-manifest.schema.json b/.github/references/repo-manifest.schema.json index f73b1ba..5656cbe 100644 --- a/.github/references/repo-manifest.schema.json +++ b/.github/references/repo-manifest.schema.json @@ -148,4 +148,4 @@ } } } -} \ No newline at end of file +} diff --git a/.github/score/repo-manifest.json b/.github/score/repo-manifest.json index 6754b5b..a4e3f99 100644 --- a/.github/score/repo-manifest.json +++ b/.github/score/repo-manifest.json @@ -37,4 +37,4 @@ "typecheck" ] } -} \ No newline at end of file +} diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml new file mode 100644 index 0000000..a5d6a49 --- /dev/null +++ b/.github/workflows/daily.yml @@ -0,0 +1,18 @@ +name: Daily Maintenance + +on: + schedule: + - cron: '0 3 * * *' + workflow_dispatch: + +permissions: + contents: write + issues: write + pull-requests: write + pages: write + id-token: write + actions: write + +jobs: + daily: + uses: eclipse-score/cicd-workflows/.github/workflows/daily.yml@37eaadadfefc263d94a858d25665735659e916fa # main (2026-09-02) diff --git a/.github/workflows/on-pr.yml b/.github/workflows/on-pr.yml new file mode 100644 index 0000000..d120822 --- /dev/null +++ b/.github/workflows/on-pr.yml @@ -0,0 +1,13 @@ +name: PR Checks + +on: + pull_request: + types: [opened, reopened, synchronize] + merge_group: + types: [checks_requested] + +jobs: + common: + uses: eclipse-score/cicd-workflows/.github/workflows/on-pr.yml@37eaadadfefc263d94a858d25665735659e916fa # main (2026-09-02) + permissions: + contents: read diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 44f4266..b18546c 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -2,4 +2,4 @@ "recommendations": [ "bierner.github-markdown-preview" ] -} \ No newline at end of file +} diff --git a/profile/README.md b/profile/README.md index 73fdafd..2e83a11 100644 --- a/profile/README.md +++ b/profile/README.md @@ -1,4 +1,4 @@ -# Welcome to the Eclipse Safe Open Vehicle Core (S-CORE) Project +# Welcome to the Eclipse Safe Open Vehicle Core (S-CORE) Project This Github organization contains artifacts developed by the [Eclipse S-CORE Project](https://projects.eclipse.org/projects/automotive.score). The project aims to develop an open-source core stack for Software Defined Vehicles (SDVs), specifically targeting embedded high-performance Electronic Control Units (ECUs). @@ -6,7 +6,7 @@ This Github organization contains artifacts developed by the [Eclipse S-CORE Pro Dive into our key resources below to understand our project, learn how to contribute, and access the latest releases. **User's Guide**
-Explore the official documentation to understand the core components and features of Eclipse S-CORE.
[**Read the Guide »**](https://eclipse-score.github.io/score/main/users_guide/index.html) +Explore the official documentation to understand the core components and features of Eclipse S-CORE.
[**Read the Guide »**](https://eclipse-score.github.io/score/main/users_guide/index.html) **Download Latest Release**
Get the latest stable release to start building or check the release notes for recent changes.
[**View Releases »**](https://github.com/eclipse-score/reference_integration/releases)

diff --git a/src/generate_repo_overview/_html_common.py b/src/generate_repo_overview/_html_common.py index 85ce43b..6116dc7 100644 --- a/src/generate_repo_overview/_html_common.py +++ b/src/generate_repo_overview/_html_common.py @@ -13,15 +13,9 @@ CSS = (_TEMPLATES / "styles.css").read_text(encoding="utf-8") -BAZEL_ICON = ( - 'Bazel' -) +BAZEL_ICON = 'Bazel' -BAZEL_DETAIL_ICON = ( - 'Bazel' -) +BAZEL_DETAIL_ICON = 'Bazel' GITHUB_ICON = ( @@ -32,7 +26,7 @@ " 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59" ".82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27" ".68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51" - '.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07' + ".56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07" '-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0016 8c0-4.42-3.58-8-8-8z"/>' "" ) @@ -56,7 +50,6 @@ def uses_docs_as_code(entry: RepoEntry) -> bool: ) - _LANGUAGE_COLORS: dict[str, str] = { "Python": "#3572A5", "C++": "#f34b7d", @@ -82,10 +75,7 @@ def language_badge(lang: str | None) -> str: if not lang: return '' color = _LANGUAGE_COLORS.get(lang, "#888888") - return ( - f'' - f"{e(lang)}" - ) + return f'{e(lang)}' def repo_name_cell(entry: RepoEntry, org_name: str, *, bazel_icon: bool = True) -> str: diff --git a/src/generate_repo_overview/_html_detail.py b/src/generate_repo_overview/_html_detail.py index 9b250e4..83792af 100644 --- a/src/generate_repo_overview/_html_detail.py +++ b/src/generate_repo_overview/_html_detail.py @@ -141,9 +141,7 @@ def _render_release_section(entry: RepoEntry) -> str: ) if v.commits_since_latest_release is not None: count = v.commits_since_latest_release - badge_class = ( - "green" if count == 0 else ("yellow" if count <= 20 else "red") - ) + badge_class = "green" if count == 0 else ("yellow" if count <= 20 else "red") items.append( f'
' f'
Commits Since Release
' @@ -178,8 +176,8 @@ def _render_dep_diff_section(entry: RepoEntry) -> str: rows.append( f" \n" f" Bazel\n" - f" {e(head_bazel) if head_bazel else ''}\n" - f" {e(release_bazel) if release_bazel else ''}\n" + f" {e(head_bazel) if head_bazel else ''}\n" + f" {e(release_bazel) if release_bazel else ''}\n" f" {_dep_status_badge(bazel_status, bazel_class)}\n" f" " ) @@ -191,16 +189,14 @@ def _render_dep_diff_section(entry: RepoEntry) -> str: rows.append( f" \n" f" {e(name)}\n" - f" {e(head_ver) if head_ver else ''}\n" - f" {e(rel_ver) if rel_ver else ''}\n" + f" {e(head_ver) if head_ver else ''}\n" + f" {e(rel_ver) if rel_ver else ''}\n" f" {_dep_status_badge(status, css_class)}\n" f" " ) changed_count = sum( - 1 - for r in rows - if "badge yellow" in r or "badge green" in r or "badge red" in r + 1 for r in rows if "badge yellow" in r or "badge green" in r or "badge red" in r ) if changed_count == 0 and v.commits_since_latest_release: @@ -220,9 +216,7 @@ def _render_dep_diff_section(entry: RepoEntry) -> str: f" Release ({release_label})\n" f" Status\n" f" \n" - f" \n" - + "\n".join(rows) - + "\n \n " + f" \n" + "\n".join(rows) + "\n \n " ) return ( @@ -230,14 +224,12 @@ def _render_dep_diff_section(entry: RepoEntry) -> str: '
' 'Dependencies: HEAD vs. Release' "
\n" - f"
{summary}{table}
\n" + f'
{summary}{table}
\n' "\n\n" ) -def _dep_diff_status( - head: str | None, release: str | None -) -> tuple[str, str]: +def _dep_diff_status(head: str | None, release: str | None) -> tuple[str, str]: if head is None and release is None: return "—", "muted" if release is None: @@ -262,19 +254,21 @@ def _render_tooling_section(entry: RepoEntry, snapshot: RepoSnapshot) -> str: ] for label in (s.label for s in snapshot.workflow_signals): signals.append((label in c.matched_workflow_signals, label)) - signals.extend([ - (c.has_lint_config, "Lint Config"), - (c.has_gitlint_config, "Gitlint"), - (c.has_pre_commit_config, "Pre-commit"), - (c.has_pyproject_toml, "pyproject.toml"), - (c.has_coverage_config, "Coverage Config"), - (c.is_bazel_repo, "Bazel Repo"), - ]) + signals.extend( + [ + (c.has_lint_config, "Lint Config"), + (c.has_gitlint_config, "Gitlint"), + (c.has_pre_commit_config, "Pre-commit"), + (c.has_pyproject_toml, "pyproject.toml"), + (c.has_coverage_config, "Coverage Config"), + (c.is_bazel_repo, "Bazel Repo"), + ] + ) items = "\n".join( f'
' f'' - f'{"✓" if val else "—"} {e(label)}
' + f"{'✓' if val else '—'} {e(label)}
" for val, label in signals ) return ( @@ -289,7 +283,7 @@ def _render_lockfile_error_section(entry: RepoEntry) -> str: c = entry.content if c.bazel_lockfile_status == LockfileStatus.MISSING: body = ( - '

No MODULE.bazel.lock file found. ' + "

No MODULE.bazel.lock file found. " "Run bazel mod deps to generate it.

" ) elif c.bazel_lockfile_status == LockfileStatus.TIMEOUT: @@ -303,7 +297,7 @@ def _render_lockfile_error_section(entry: RepoEntry) -> str: '
' 'Bazel Lockfile' "
\n" - f"
{body}
\n" + f'
{body}
\n' "\n\n" ) @@ -317,16 +311,16 @@ def _render_ownership_section(entry: RepoEntry) -> str: f'
Codeowners
{handles}' ) if entry.registry.maintainers_in_bazel_registry: - handles = ", ".join( - e(h) for h in entry.registry.maintainers_in_bazel_registry - ) + handles = ", ".join(e(h) for h in entry.registry.maintainers_in_bazel_registry) parts.append( f'
' f'
Registry Maintainers
{handles}
' ) if not parts: - parts.append('No ownership information available') + parts.append( + 'No ownership information available' + ) return ( '
\n' @@ -358,7 +352,9 @@ def _render_versions_section( dep_label = tracked_dep_label(dep) dep_ver = lookup_bazel_dep_version(entry.content.bazel_deps, dep.module_name) latest_ver = latest_dep_versions.get(dep.module_name) - badge = version_badge(dep_ver, None, latest_dep_version=latest_ver, is_bazel=False) + badge = version_badge( + dep_ver, None, latest_dep_version=latest_ver, is_bazel=False + ) items.append( f'
' f'
{e(dep_label)} Version
{badge}
' diff --git a/src/generate_repo_overview/_policy_sync_html.py b/src/generate_repo_overview/_policy_sync_html.py index c3a7adc..d08f110 100644 --- a/src/generate_repo_overview/_policy_sync_html.py +++ b/src/generate_repo_overview/_policy_sync_html.py @@ -29,7 +29,7 @@ def render_policy_sync_section( '\n' + " \n" '
\n' '
Policy PR states
\n' '
\n' + _policy_pr_stat("open", pull_request_states["open"]) + _policy_pr_stat("merged", pull_request_states["merged"]) + "
\n" - '
\n' + " \n" " \n" " \n" ) @@ -150,10 +158,16 @@ def _render_policy_matrix_section( _policy_header(policy, policy_definitions) for policy in policies ) else: - matrix_rows = 'No policy evaluations.' + matrix_rows = ( + 'No policy evaluations.' + ) matrix_header = "Policy" title = "Compliance Matrix" if category is None else category - count = f'{len(repositories)}' if category is not None else "" + count = ( + f'{len(repositories)}' + if category is not None + else "" + ) return ( f'