This was generated by AI during triage.
Problem
#617 (closed, delivered via PR #622) short-circuited plugin-gate and miro-plugin on docs-only diffs, but that only touches runner-minutes — not the empirically-measured merge-latency bottleneck. The dominant unskippable cost on docs-only PRs is the hygiene job's full-repo ShellCheck pass (~53s), plus actionlint and the four check-jsonschema steps, all docs-irrelevant.
Recommended fix (repo-side)
Add a dedicated step-gated lane inside hygiene for the docs-irrelevant checks (ShellCheck, actionlint, check-jsonschema ×4, exec-bit), reusing the existing scripts/check-docs-only.sh detector from PR #622, gated the same skip-safe way (self-test-first, fail-closed, inner steps carry the conditional — never a job-level skip). Do not weaken scripts/aggregate-hygiene-results.sh to tolerate a skipped outcome — it fails closed on any non-success result by design, and teaching it to pass on skipped would blur a deliberate gate-skip from a real failure (the exact #532 false-green shape). A job's success derives from its own steps, so gating steps inside a dedicated lane is safe without touching the shared aggregator.
Docs-linting checks that must stay on docs-only PRs (they apply regardless of diff type): markdown, typos, editorconfig, gitleaks, eol-renormalize, comment-hygiene, machine-specific-paths.
Explicitly out of scope here (cross-repo)
The root cause of the ~53s cost is non-incremental: the ShellCheck composite action lints the whole tree every run regardless of diff size. The durable fix — incremental "lint changed files only" — is a melodic-software/ci-workflows composite-action change, not repo-side. Path-scoping (this issue) is the legitimate caller-side mitigation until that lands; do not attempt the ci-workflows change from this repo.
Optional, low-value
Allowlist growth in scripts/docs-only-paths.txt (e.g. CHANGELOG.md) only via the existing two-part inertness proof + self-test case. Never SKILL.md — it's a first-class plugin-gate input in this repo (per #617's plan comment verification).
Related
Follow-up from #617 (closed, PR #622) — precedent-honest continuation of the same self-test-first/fail-closed discipline #622 established, applied to hygiene instead of plugin-gate/miro-plugin. Full verification detail in #617's T2 triage planning comment.
This was generated by AI during triage.
Problem
#617 (closed, delivered via PR #622) short-circuited
plugin-gateandmiro-pluginon docs-only diffs, but that only touches runner-minutes — not the empirically-measured merge-latency bottleneck. The dominant unskippable cost on docs-only PRs is thehygienejob's full-repo ShellCheck pass (~53s), plusactionlintand the fourcheck-jsonschemasteps, all docs-irrelevant.Recommended fix (repo-side)
Add a dedicated step-gated lane inside
hygienefor the docs-irrelevant checks (ShellCheck, actionlint, check-jsonschema ×4, exec-bit), reusing the existingscripts/check-docs-only.shdetector from PR #622, gated the same skip-safe way (self-test-first, fail-closed, inner steps carry the conditional — never a job-level skip). Do not weakenscripts/aggregate-hygiene-results.shto tolerate askippedoutcome — it fails closed on any non-successresult by design, and teaching it to pass onskippedwould blur a deliberate gate-skip from a real failure (the exact #532 false-green shape). A job's success derives from its own steps, so gating steps inside a dedicated lane is safe without touching the shared aggregator.Docs-linting checks that must stay on docs-only PRs (they apply regardless of diff type):
markdown,typos,editorconfig,gitleaks,eol-renormalize,comment-hygiene,machine-specific-paths.Explicitly out of scope here (cross-repo)
The root cause of the ~53s cost is non-incremental: the ShellCheck composite action lints the whole tree every run regardless of diff size. The durable fix — incremental "lint changed files only" — is a
melodic-software/ci-workflowscomposite-action change, not repo-side. Path-scoping (this issue) is the legitimate caller-side mitigation until that lands; do not attempt theci-workflowschange from this repo.Optional, low-value
Allowlist growth in
scripts/docs-only-paths.txt(e.g.CHANGELOG.md) only via the existing two-part inertness proof + self-test case. NeverSKILL.md— it's a first-classplugin-gateinput in this repo (per #617's plan comment verification).Related
Follow-up from #617 (closed, PR #622) — precedent-honest continuation of the same self-test-first/fail-closed discipline #622 established, applied to
hygieneinstead ofplugin-gate/miro-plugin. Full verification detail in #617's T2 triage planning comment.