Skip to content

Commit c3961d9

Browse files
committed
Address SKILL.md review findings (PR #230)
- Fix --paginate being embedded in URL string; pass it as a real CLI flag - Renumber duplicate ### 5.4 (Rollout status row) to ### 5.5 - Fix stray 'e|' prefix on the PA5 Static Analysis row - Add overall_status_pa1 to the required-labels list (§5.0) - Clarify in §3.4 that the per-cell LOC uses the §6a.2 byte÷30 method - Document why the Time keyword in KW_FALLBACK has a leading space
1 parent b76eb88 commit c3961d9

1 file changed

Lines changed: 30 additions & 14 deletions

File tree

.github/skills/overall-status/SKILL.md

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,12 @@ contributes `(1, 1)` if `:status: valid`, else `(0, 1)`. Files without any
124124
LOC counts every line in source files (`.cpp .h .c .rs .py`) outside `docs/`,
125125
`third_party/`, and `bazel-*/`, then rounds to the nearest 100. Format:
126126

127+
> **Method.** The per-cell tracker uses the **same byte-÷-30 approximation**
128+
> as the SVG charts (`sum(blob.size for path in tree if is_src(path)) / 30`,
129+
> see §6a.2). The `is_src` filter in §6a.2 is authoritative for what counts
130+
> as a source file (extensions and the `docs/`, `third_party/`, `bazel-*/`
131+
> exclusions). Expect ±10 % vs. `cloc` (see §7).
132+
127133
```rst
128134
- ✅ Available (~12,500 LOC) `<repo-name> <https://github.com/eclipse-score/<repo-name>>`__
129135
```
@@ -151,7 +157,7 @@ The link label MUST be the bare repository name (e.g. `baselibs`,
151157
| **PA5** Unit Tests | repo has `_test.cpp` / `_test.py` / `tests/` || none |
152158
| **PA5** C0/C1 Coverage | C0 = C1 = 100 % | data exists (any %) | not in `reference_integration` CI |
153159
| **PA5** Comp. Integration Tests | tests in module's own repo || none |
154-
e| **PA5** Static Analysis | zero-tolerance per-module CI workflow passes on `main` (clang-tidy / Clippy) | tools configured but no CI enforcement | no static-analysis config | _no link_ — Static cells render the **status only**, no source-code link. Same convention as Dynamic Analysis (§4.2). |
160+
| **PA5** Static Analysis | zero-tolerance per-module CI workflow passes on `main` (clang-tidy / Clippy) | tools configured but no CI enforcement | no static-analysis config | _no link_ — Static cells render the **status only**, no source-code link. Same convention as Dynamic Analysis (§4.2). |
155161
| **PA5** Dynamic Analysis | zero-tolerance sanitizer CI passes on `main` || no sanitizer CI |
156162
| **PA5** Module Ver. Report | `verification/module_verification_report.rst` `:status: valid` and contains data | `:status: draft` | absent or template only |
157163
| **PA5** Platform Ver. Report | _no column_ — the platform verification report exists **once** for the entire platform; do not render it as a per-module column. Add it as a **bold one-liner immediately after the PA5 table** (see §5.2). | | |
@@ -193,15 +199,22 @@ across all FRs for that module (so a module with at least one Accepted FR
193199
still shows ✅ in summaries).
194200

195201
```python
196-
# 1. List feature requests via the issue label (incl. milestone)
202+
# 1. List feature requests via the issue label (incl. milestone).
203+
# `--paginate` must be a separate CLI flag — embedding it in the URL
204+
# string sends it as a query parameter and silently truncates results
205+
# at 100 issues.
197206
def fetch_frs():
198-
s = gh_raw(
199-
"repos/eclipse-score/score/issues?state=all"
200-
"&labels=feature_request&per_page=100 --paginate",
201-
'.[] | [(.number|tostring), .title,'
202-
' ((.labels // []) | map(.name) | join(",")),'
203-
' ((.milestone.title // ""))] | @tsv')
204-
return [tuple(line.split("\t")) for line in s.splitlines() if line]
207+
out = subprocess.run(
208+
["gh", "api", "--paginate",
209+
"repos/eclipse-score/score/issues?state=all"
210+
"&labels=feature_request&per_page=100",
211+
"--jq",
212+
'.[] | [(.number|tostring), .title,'
213+
' ((.labels // []) | map(.name) | join(",")),'
214+
' ((.milestone.title // ""))] | @tsv'],
215+
capture_output=True, text=True, timeout=120)
216+
assert out.returncode == 0, f"gh api failed: {out.stderr}"
217+
return [tuple(line.split("\t")) for line in out.stdout.splitlines() if line]
205218

206219
def in_scope(milestone: str) -> bool:
207220
s = milestone.lower().replace(" ", "")
@@ -280,6 +293,8 @@ KW_FALLBACK = {
280293
"Communication": ["ipc", "streaming", "record and replay"],
281294
"Logging": ["logging"],
282295
"Persistency": ["persistency", " kvs"],
296+
# Leading space is intentional: avoids matching "runtime", "realtime",
297+
# "datetime" etc. Do NOT "fix" by stripping it.
283298
"Time": [" time"],
284299
"Some/IP": ["some/ip", "someip", "some_ip"],
285300
"Diagnostic Services": ["diagnos"],
@@ -410,10 +425,11 @@ Process Area 2 — Requirements Engineering
410425
-----------------------------------------
411426
```
412427

413-
Required labels: `overall_status_pa2`, `overall_status_pa3`,
414-
`overall_status_pa4`, `overall_status_pa5`. Omitting any of them
415-
produces six Sphinx `WARNING: undefined label` messages from the PI
416-
release-gate pages — a clean build is the success criterion.
428+
Required labels: `overall_status_pa1`, `overall_status_pa2`,
429+
`overall_status_pa3`, `overall_status_pa4`, `overall_status_pa5`.
430+
Omitting any of them produces Sphinx `WARNING: undefined label`
431+
messages from the PI release-gate pages — a clean build is the
432+
success criterion.
417433

418434
### 5.1 Cell layout
419435

@@ -625,7 +641,7 @@ Hard rules:
625641
`compact-overview-table`, fluid 33% per column, `!important` img override).
626642
Do not add explicit pixel sizes.
627643

628-
### 5.4 Rollout status row
644+
### 5.5 Rollout status row
629645

630646
Directly above the module tracker table, render a **single-line row** with
631647
a label, percentage, an inline progress bar and a detail text. This

0 commit comments

Comments
 (0)