ci: remove the scheduled link-check issue caller - #4166
Conversation
Owner decision 2026-09-14: no automated process should open GitHub issues on its own. link-check.yml only ever produced a rolling tracking issue from the ci-workflows reusable link-check workflow, so delete the caller and its stale references. Refs: melodic-software/claude-code-plugins Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude encountered an error after 1s —— View job I'll analyze this and get back to you. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 87cd17d270
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude encountered an error after 0s —— View job I'll analyze this and get back to you. |
|
Warning Automated security review did not complete — this is an infrastructure failure, not a review verdict. Treat any Claude comment on this PR (including a placeholder like "I'll analyze this and get back to you") as incomplete, not "no findings."
The check is green on purpose, and it is not evidence. It certifies that a security pass ran, and this one did not complete — but the cause is outside this PR's control, so merging is deliberately left unblocked rather than locking every merge for the length of the outage. Nothing was reviewed at this head. Where this check is required, it is satisfied without that evidence; a human should review security-sensitive changes here before merging. Re-run the job, or workflow_dispatch this workflow with the PR number, to retry the review (ci-workflows#227). A new push also retries it only if the caller's Re-running does NOT help for every class:
|
|
Warning Automated review did not complete — this is an infrastructure failure, not a review verdict. Treat any Claude comment on this PR (including a placeholder like "I'll analyze this and get back to you") as incomplete, not "no findings."
Re-run the job, or workflow_dispatch this workflow with the PR number, to retry the review. A new push re-triggers this lane only if the caller's |
Follow-up to the link-check.yml deletion: regenerate the ci-workflows uses-workflow edge to match reference-edges.sh (managed-files-guard.yml had fallen out of the FILE_CAP window behind link-check.yml, count 23 across 5 files, not 4) and record the dead-pointer wiring's removal in provenance-convention-engagement.md. Refs: melodic-software/claude-code-plugins Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK
No related issue: owner decision 2026-09-14 to remove every automated process that opens GitHub issues on its own; this is org-wide cleanup, not a tracked bug or feature. ## Summary `link-check.yml` was the last local caller of the ci-workflows reusable `link-check.yml`, whose sole output is a rolling tracking issue filed on failure. ## Fix - Deleted `.github/workflows/link-check.yml` (the scheduled caller). - Updated `README.md`'s CI description to drop the paragraph describing `link-check.yml` as "the one remaining caller of a ci-workflows reusable workflow" and the now-moot note about that reusable-workflow pin's update path (Dependabot only tracks composite-action pins, not reusable-workflow pins, and this repo no longer has any reusable-workflow caller). - This repo has no `.github/runner-policy.json` and no `.github/standards/**` tree, so there was no job grant or standards-owned file to touch. - Left `.github/dependabot.yml` alone; it never pinned the reusable-workflow ref. - Left `lychee.toml` untouched: it's SYNC-MANAGED (the `lychee` component in `melodic-software/standards`'s `distribution/sync-manifest.yml`). Its "the online advisory lane reuses this file" comment is now stale fleet-wide (this repo and `claude-code-plugins`, companion PR melodic-software/claude-code-plugins#4166, both lost their sole online caller under the same owner decision) and needs a standards-repo change, not a local edit here. ## Verification - `git diff --stat` on the commit: 2 files changed, 2 insertions(+), 39 deletions(-), including `delete mode 100644 .github/workflows/link-check.yml`. - Grepped the repository for `link-check` (case-insensitive); the only remaining hit is `lychee.toml`'s generic "link-checking config" comment, which does not name this workflow and still applies to the offline lychee lane in `ci.yml`. - CI green: `ci-status` and every other check passing on the head commit. ## Related - Refs melodic-software/claude-code-plugins#4166 (companion PR removing the same caller in the `claude-code-plugins` repo) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Clears check-stale-base-overlap: #4166 also touched .github/workflows/ci.yml. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK
…4170) Closes #3705 ## Summary On a push to main, `test-linux` used to run the whole plugin contract corpus in one job, which took about 550 s. This PR splits the corpus across four `test-linux` legs on every event, the same way the affected selection is already split on a pull request. The job key does not change, so the six-job layout, `ci-status.needs` and lane coverage all stay the same. Two metrics move: how long the test-linux lane takes on push, and how long a push waits for `ci-status` to go green. The whole push run does not get shorter. `test-windows` is not in `ci-status`'s needs, and it took 713 s on run 34815969269, 603 s of that in the `apply-rename.test.sh` step. The run's total time stays tied to `test-windows` until the separate PR that cuts that suite lands. ## Fix - `scripts/run-plugin-tests.sh` has a new `--shard I/N` option. It splits the sorted list of discovered suites by index modulo N, which is how `affected-tests.sh --shard` already works: - No suite lands on two legs, and the legs together cover the whole corpus. - A leg with no suites exits 0. - The check for stale serial-allowlist entries still compares against every discovered suite, not just the leg's. - Each leg runs its own serial suites first. - `ci.yml` `test-linux`: - The matrix is now `leg: [0, 1, 2, 3]` on every event. `LEG` and `LEGS` are set once at job level. - On push, the contract step runs `scripts/run-plugin-tests.sh --jobs 3 --shard "$LEG/$LEGS"`. - On a PR, the UNMAPPED fallback uses the same shard on every leg. It no longer runs only on leg 0. - Every step after the contract step now runs on leg 0 only, on both events. That covers the scripts/ suites, manifest validation, the sync `--check`/`--check-bump` steps, the Node sub-projects and disk-hygiene. Before, they ran on all four legs of a PR and once on the single push leg. - The leg check is a first line `[ "$LEG" = 0 ] || exit 0`, not a step `if:`. `scripts/check-docs-only-gate.sh` accepts exactly one condition form on a gated step. A step that exits 0 reports `success`, never `skipped`, and `ci-status` fails on `skipped`. - The comment above the matrix is rewritten to match. ## Verification Local checks: - `bash scripts/run-plugin-tests.test.sh`: PASS=67 FAIL=0. The new cases check that: - the legs do not overlap and together equal the unsharded run, including when an allowlisted suite sits on another leg - a leg's serial subset runs - an empty leg exits 0 - the bad specs `2/2`, `x`, `1`, `1/0` and `''` exit 2 - `bash scripts/affected-tests.test.sh`: PASS=76 FAIL=0. It includes the live check that ci.yml passes the leg into `--shard`. - `scripts/check-docs-only-gate.sh --check` passes. `scripts/check-lane-coverage.sh --check` passes. Their test suites pass 64/0 and 40/0. - `actionlint`, `zizmor --offline`, `shellcheck`, `shfmt -d` and `check-shell-portability.sh --paths` all pass. Live measurement: the probe commit b0c544f, reverted in 8e98db1, forced this PR's contract step onto the push branch. Run 34884762048, all four legs green: | leg | job wall | contract step | suites (serial) | |---|---|---|---| | 0 | 192 s | 79 s | 87 (3) | | 1 | 205 s | 146 s | 87 (4) | | 2 | 156 s | 110 s | 87 (3) | | 3 | 158 s | 120 s | 86 (8) | The legs sum to 347 suites, which is the whole corpus. The serial counts sum to 18, the whole allowlist. Leg 0 also carries the roughly 80 s of steps that run only once. Leg 1 is the slowest at 205 s and runs none of them. Moving those steps to any other leg would push that leg above 205 s, so leg 0 is the best place for them. Before, on push: - Run 34815969269: `test-linux` 556 s, of which the contract step took 444 s. `ci-status` finished 583 s into the run. - Run 34750258935: `test-linux` 549 s. `ci-status` finished 584 s into the run. After: - The test-linux lane takes as long as its slowest leg, 205 s, down from 549 to 556 s. - The wait for `ci-status` on push is now set by `lint`, which finished 516 s and 512 s into those same two runs. I expect `ci-status` to finish around 515 s into a push run instead of 583 s, about 65 to 70 s sooner. This is an estimate: nothing has run on a push to main yet. Making lint faster is out of scope here. The probe run's `lint` failed only on `check-stale-base-overlap`, because #4166 landed on main and also touched `ci.yml`. Merging main in fixed it. ## Related - Refs melodic-software/github-iac#378 - #3696 (six-job consolidation), #3693 (`--jobs 3`), #3694 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
No linked issue: owner direction 2026-09-14 to delete stale and overengineered automation. ## Summary This deletes two advisory workflows whose output nobody reads, removes the timing branches and helpers that existed only for one of them, and removes the pull-request self-test trigger from the silent-revert canary. None of these lanes is part of `ci-status`. ## Fix - **`video-digest-source-liveness.yml`** (scheduled runs red 5 weeks running, not in `ci-status`): deleted, together with: - `plugins/knowledge/skills/video-digest/extraction/liveness/**` (the harness, its manifest, fixtures, test and `LIVENESS.md`). A repository grep found no user of the harness outside that directory and the workflow: no skill, no other test, no import. Its own `run-source-liveness.test.js` was picked up by the extraction package's vitest glob, but it tested only the harness. - `.github/requirements-video-digest-liveness.txt`, which only the workflow read. - The `liveness:offline` and `liveness:live` scripts in the extraction `package.json`. - Its glob in `scripts/em-dash-purged-paths.txt`. The purge gate fails on stale globs. - **`hook-utils-timing.yml`** (2 runs, results unread): deleted. - In `lib/hook-utils.test.sh`, removed both `HOOK_UTILS_TIMING`-gated clock comparisons: late-EOF and stall overshoot. Also removed the helpers only they used (`bs_median`, `bs_paired_estimate`, `bs_paired_verdict`, `bs_samples`, `bs_time_late_eof`, `bs_reads_on`) and Test 18b(i), which exercised only that estimator. - The load-independent chunk-boundary engagement probe and stall read-count probe stay as the regression guards (#2105). Comments that described the removed comparisons are updated. - **`silent-revert-canary.yml`**: removed only the `pull_request` trigger, the two `if: github.event_name != 'pull_request'` gates it made necessary, and the comments that explained it. The push-to-main canary is unchanged: self-test, incident replay, range scan and restoration assertion. - **`ci.yml`**: removed only the `hook-utils-timing.yml` entry from the workflow-schema file list. - **Docs**: - `docs/ci-runner-routing.md` now names one Windows lane. - `docs/architecture/landscape.json` and `landscape.md` are updated to `reference-edges.sh` output for the edges this changes: `actions/checkout` 15 → 11, `actions/setup-node` 5 → 3, and the `actions/upload-artifact` edge removed. The rest of the record is left as generated. - **Checked, no change needed:** `docs/specs/provenance-convention-engagement.md` does not reference these workflows. - **Left as dated records:** the findings row naming `LIVENESS.md` in `docs/specs/docs-hygiene-sweep-unapplied-remediations.md`, and the `plugins/knowledge/CHANGELOG.md` history. ## Verification - `bash lib/hook-utils.test.sh`: `PASS=462 FAIL=0`. - `bash -n` and `shellcheck lib/hook-utils.test.sh`: clean. - `actionlint`: exit 0, including after rebasing onto #4167. - `markdownlint-cli2` on `docs/ci-runner-routing.md` and `docs/architecture/landscape.md`: 0 issues. - `jq empty` on the changed JSON: OK. - `reference-edges.sh` on `origin/main` and on this branch: they differ only in the three workflow edges above. - Not run locally: `scripts/check-purged-em-dashes.sh` hangs on this Windows host, so CI runs it. A script check confirmed that every remaining allowlist glob matches a tracked file. - A fresh-context verifier checked the branch against this scope. Its first pass named two stale comments in `lib/hook-utils.test.sh`; both are fixed. It passed on re-verification after the rebase. ## Related - #2105 (the load-independent probes that remain the guards) - #4166 (the same owner direction applied to `link-check.yml`) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019mo9xaZ53JHHy4aBjgd8wK --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
No linked issue
Summary
Owner decision 2026-09-14: remove every automated process that opens GitHub issues on its own.
link-check.ymlwas the only local caller of the ci-workflows reusablelink-check.yml, whose sole output is a rolling tracking issue filed on failure.Fix
.github/workflows/link-check.yml(the scheduled caller)..github/workflows/ci.yml's workflow-schema validation list and dropped the stalelink-check.ymlcomparisons in.github/workflows/silent-revert-canary.ymland.github/workflows/video-digest-source-liveness.yml.docs/architecture/landscape.jsonanddocs/architecture/landscape.mdto matchreference-edges.sh's actual output for theci-workflowsuses-workflow edge (count 23 across 5 files, includingmanaged-files-guard.yml, which had fallen out of the row's 5-file cap behindlink-check.yml).docs/specs/provenance-convention-engagement.md(the dead-pointer round-trip wiring this repo's weekly lane fed is now dormant here)..github/runner-policy.json(local) has noexceptionsentries, so there was no job grant to remove there..github/standards/runner-policy/policy.jsonuntouched per scope (.github/standards/**is off-limits to this PR). It still carries severalmelodic-software/ci-workflows/.github/workflows/link-check.yml@<sha>grants, including the pinned SHA the deleted caller used; those are now orphaned and worth pruning in a standards-owned change.lychee.tomluntouched: it's SYNC-MANAGED (thelycheecomponent inmelodic-software/standards'sdistribution/sync-manifest.yml, guarded bymanaged-files-guard.yml). Its "the online advisory lane reuses this file" comment is now stale fleet-wide under the same owner decision and needs a standards-repo change, not a local edit.issue-triage-label.ymluntouched, and left the generic "link-check lane" prose indocs/specs/provenance-design-threads.md,docs/specs/provenance-capability-matrix.md,plugins/provenance/**,plugins/docs-hygiene/**,docs/conventions/standards/README.md,plugins/planning/reference/standards-contract.md, andplugins/review/reference/standards-contract.mdalone — those describe the general convention/lane pattern and the plugin-vs-consuming-repo ownership boundary, not an enumeration of this specific caller file.Verification
git diff --statacross both commits:.github/workflows/link-check.ymldeleted, plus targeted edits to 7 other files.npm cicompleted successfully in the worktree before committing.link-check(case-insensitive) and reviewed every hit.plugins/architecture/skills/map-landscape/scripts/reference-edges.sh . --owner melodic-softwareto verify the corrected landscape edge matches ground truth exactly.ci-status,ci-lanes, and all other required checks passing); onehook-utilsfailure on the first push was a pre-existing flake (twobegin:FILE_DIR/FILE_BASE assertions unrelated to this diff) confirmed by a clean rerun.Related
.githubrepo)