Skip to content

Add release-tag broken-link quality ledger workflow - #940

Draft
ckenst with Copilot wants to merge 4 commits into
mainfrom
copilot/implement-broken-link-checker
Draft

Add release-tag broken-link quality ledger workflow#940
ckenst with Copilot wants to merge 4 commits into
mainfrom
copilot/implement-broken-link-checker

Conversation

Copilot AI commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Pull Request Template: Add a Conference or Workshop

Thank you for contributing! Most PRs are to add a new conference or workshop. The following are to help ensure you've added everything correctly:

This PR implements Phase 2 link-integrity tracking by running automated broken-link scans on v* release tags (and manual dispatch), then appending versioned results to a persistent quality ledger in _data/quality_log.yml.

Conference/Workshop Details

  • Name, Location, Date(s), Website URL and Status are required
  • X / Twitter is Optional
  • Location should be City + Country or Online
  • Status can include information about registration, pricing, calls for proposals and can include links to all the above.

Checklist

  • I have added the conference/workshop to the correct YAML file (_data/current.yml or _data/past.yml)
  • The entry includes name, location, date(s), url and accurate status
  • The entry is in chronological order (soonest to furtherest away)
  • If there are any special characters in the name field (: or ; or '), the name must be in quotes (")
  • I have checked for duplicates to avoid listing the same event twice
  • Build runs successfully

Additional context

  • Workflow

    • Added .github/workflows/quality-links.yml to trigger on push.tags: v* and workflow_dispatch.
    • Builds _site, runs linkinator, emits broken-link totals in CI logs, and fails clearly when broken links are present.
  • Quality ledger persistence

    • Added tools/append_quality_log.rb to append (not overwrite) entries in _data/quality_log.yml.
    • Entry schema includes version, release_date, commit_sha, broken_links, workflow_run_url, plus stable placeholder fields for other Phase 2 metrics.
  • Data file + focused coverage

    • Added _data/quality_log.yml as the ledger store.
    • Added test/append_quality_log_test.rb for append behavior and invalid count handling.
# .github/workflows/quality-links.yml (excerpt)
on:
  push:
    tags: ['v*']
  workflow_dispatch:

# appender invocation
ruby tools/append_quality_log.rb \
  --version "$VERSION" \
  --broken-links "$BROKEN_COUNT" \
  --commit-sha "$COMMIT_SHA" \
  --workflow-run-url "$WORKFLOW_RUN_URL" \
  --output _data/quality_log.yml

Copilot AI linked an issue Sep 7, 2026 that may be closed by this pull request
5 tasks
Copilot AI and others added 2 commits September 7, 2026 00:33
Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>
Copilot AI changed the title [WIP] Add broken link checker for quality ledger Add release-tag broken-link quality ledger workflow Sep 7, 2026
Copilot AI requested a review from ckenst September 7, 2026 00:39
@ckenst

ckenst commented Sep 10, 2026

Copy link
Copy Markdown
Member

@copilot

The structure is promising, but there are two important correctness gaps.

  1. It will not automatically run for the repository’s actual release tags.
    deploy.yml creates and pushes tags using secrets.GITHUB_TOKEN. GitHub intentionally does not start a new workflow from ordinary events caused by that token, including tag pushes. So the new push.tags: v* trigger will not fire after the current release workflow tags a release. The manual-dispatch path works, but the stated automatic release-tag behavior does not. GitHub’s workflow-trigger documentation⁠ confirms this behavior.
    Best fix: make the link check a reusable workflow and call it directly from deploy.yml after creating the tag, passing the tag/ref explicitly. A PAT or GitHub App token could trigger another workflow, but is more complexity and broader credential risk than necessary.
  2. Manual runs can record the wrong commit SHA.
    The workflow supports a ref input, checks that ref out, but writes ${{ github.sha }} into the ledger. For a manually supplied tag or commit, that SHA is the workflow-dispatch context—not reliably the commit that was scanned. Record git rev-parse HEAD immediately after checkout and pass that value to append_quality_log.rb.

A smaller but worthwhile concern: the workflow pushes its ledger update directly to main without a concurrency group or retry/rebase. Two near-simultaneous manual runs could conflict, leaving the successful scan unrecorded. Add a dedicated quality-ledger concurrency group, or rebase/retry before pushing.

Other observations:

  • The internal-link-only scope is reasonable and clearly implemented.
  • The append script has useful basic coverage, but lacks tests for malformed/non-array YAML and for duplicate version entries.
  • The PR’s own CI is currently marked action_required, so there’s no completed automated validation to rely on yet.

In short: solid direction, but it needs the trigger architecture corrected before it provides the release-quality signal you actually want.

Co-authored-by: ckenst <6896787+ckenst@users.noreply.github.com>

Copilot AI commented Sep 10, 2026

Copy link
Copy Markdown
Contributor Author

@copilot

The structure is promising, but there are two important correctness gaps....

Updated in bb5dd8f.

  • Switched the link-integrity workflow to reusable (workflow_call) and invoked it directly from deploy.yml after version/tag creation, while keeping manual dispatch support.
  • Fixed commit SHA recording by capturing git rev-parse HEAD immediately after checkout of the scanned ref and writing that value to the ledger.
  • Added workflow-level concurrency (quality-ledger) to serialize ledger updates.
  • Added focused appender tests for malformed YAML, non-array YAML, and duplicate-version append behavior.

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.

Phase 2: Implement Broken Link Checker for Quality Ledger

2 participants