Skip to content

ci(license-exceptions): make the decision workflow record decisions faithfully - #1513

Merged
jeefy merged 1 commit into
cncf:mainfrom
jeefy:lx/workflow
Sep 7, 2026
Merged

ci(license-exceptions): make the decision workflow record decisions faithfully#1513
jeefy merged 1 commit into
cncf:mainfrom
jeefy:lx/workflow

Conversation

@jeefy

@jeefy jeefy commented Sep 7, 2026

Copy link
Copy Markdown
Member

Summary

Follow-up to #1511 and the first real run of the decision workflow (#1512). Renames license-exception-approved.ymllicense-exception-decision.yml (it has recorded denied/not-eligible outcomes since 69bbe5b) and fixes what that first run exposed.

Decision workflow

  • Parses the template's actual 5 columns. Component | Upstream URL | Project Usage URL | License(s) | Purpose. Project Usage URL was previously parsed and discarded; it is now folded into scope as (used at: <url>). The phantom 6th "comment" column (unreachable from the template) and the dead scope-regex fallback are removed.
  • approvedDate = decision date. Uses the issue's closed_at when the issue is already closed, otherwise the label date. Record license exception decision (not-eligible) for OpenTelemetry (OpenTelemetry Demo, https://github.com/open-telemetry/opentelemetry-demo) (#1482) #1512 recorded 2026-09-07 for a decision made 2026-08-19; this would have produced 2026-08-19.
  • No same-day ID collisions. Continues numbering from existing exc-<date>-NNN entries instead of always starting at 001 (which would fail validate-exceptions on the second decision of a day).
  • Fails loudly on zero rows. Rows missing Component or License(s) are skipped and reported in the PR body / issue comment; if nothing parses, the run comments on the issue with the expected format and goes red instead of opening an empty PR.
  • Writes results alongside issueUrl — the site and all 494 existing rows read results, so workflow-created rows were showing no issue link.

Triage workflow

  • Same pipe-preserving cell split as the decision workflow (they counted rows differently).
  • Updates the existing "Automated Triage Summary" comment on edited instead of posting a new one each time.
  • Explains the needs-review / possible-duplicate labels and mentions the Governing Board step.

Verification

  • YAML parses.
  • Parse step extracted from the YAML and run against the real body of [License Exception Request] [OpenTelemetry Demo] [AGPL-3.0-only] #1482 with closed_at=2026-08-19: count 1, not-eligible, exc-2026-08-19-001, packageUrl=https://github.com/grafana/k6, results === issueUrl, scope ends with (used at: …/xk6-otel/go.mod).
  • Synthetic bodies: empty License → skipped + reported; empty Upstream URL → license lands in the right field; same-day existing ids …-003 → new ids start at -004; no table → guard comment + setFailed.

Companion PRs (independent, any merge order): #1514 site rework, #1515 docs + generators.

…ithfully

Rename license-exception-approved.yml to license-exception-decision.yml;
it has handled denied and not-eligible outcomes since 69bbe5b.

Parsing now matches the 5-column issue template exactly:
- Project Usage URL (col 3) is folded into scope as '(used at: <url>)'
  instead of being discarded; the phantom 6th 'comment' column and the
  dead scope-regex fallback are removed.
- Rows missing Component or License(s) are skipped and reported; a run
  that parses zero rows comments on the issue and fails instead of
  opening an empty PR.
- approvedDate uses the issue's close date when it is already closed,
  so the recorded date is the decision date rather than the label date.
- IDs continue from existing exc-<date>-NNN entries, avoiding same-day
  collisions that would fail validate-exceptions.
- results is written alongside issueUrl; the site and all existing rows
  read results.

Triage: use the same pipe-preserving cell split, update the existing
'Automated Triage Summary' comment on edits instead of posting a new
one, and explain the labels and the Governing Board step.

Signed-off-by: Jeffrey Sica <me@jeefy.dev>
@netlify

netlify Bot commented Sep 7, 2026

Copy link
Copy Markdown

Deploy Preview for cncf-license-exceptions canceled.

Name Link
🔨 Latest commit 297c2f1
🔍 Latest deploy log https://app.netlify.com/projects/cncf-license-exceptions/deploys/6a9e584b33b8c50008953365

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