Skip to content

fix(ci): clear the five actionlint findings without changing what the workflows do (#269) - #395

Merged
DrunkOnJava merged 3 commits into
mainfrom
ci/actionlint-findings
Oct 28, 2026
Merged

DrunkOnJava merged 3 commits into
mainfrom
ci/actionlint-findings

Conversation

@DrunkOnJava

@DrunkOnJava DrunkOnJava commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Summary

Clears the five actionlint findings on main (ci.yml twice, docs-rs.yml twice, release.yml once) with quoting and expression changes only; no job name, trigger, step or threshold changes.

Spec reference

None; CI only. Closes #269.

Test plan

actionlint 1.7.12 (Homebrew, with shellcheck) on .github/workflows/*.yml, run in a worktree of origin/main (d8690f4) and again on this branch.

Before:

.github/workflows/ci.yml:571:9: shellcheck reported issue in this script: SC1003:info:10:33: Want to escape a single quote? echo 'This is how it'\''s done' [shellcheck]
    |
571 |         run: |
    |         ^~~~
.github/workflows/ci.yml:571:9: shellcheck reported issue in this script: SC1003:info:14:32: Want to escape a single quote? echo 'This is how it'\''s done' [shellcheck]
    |
571 |         run: |
    |         ^~~~
.github/workflows/docs-rs.yml:88:9: shellcheck reported issue in this script: SC2046:warning:18:3: Quote this to prevent word splitting [shellcheck]
   |
88 |         run: |
   |         ^~~~
.github/workflows/docs-rs.yml:88:9: shellcheck reported issue in this script: SC2126:style:3:11: Consider using 'grep -c' instead of 'grep|wc -l' [shellcheck]
   |
88 |         run: |
   |         ^~~~
.github/workflows/release.yml:204:9: constant expression "false" in condition. remove the if: section [if-cond]
    |
204 |     if: false  # flip to a SemVer-style condition once PyO3 work ships
    |         ^~~~~
exit=1

After (no output):

exit=0

What each change does, and why behaviour is the same:

  • ci.yml, PII guard (SC1003 x2). 'C:\\Users\\[a-z][a-z0-9._-]+\\' and 'OneDrive - Autodesk\\[^\\]*\\' end in a backslash before the closing single quote, which shellcheck reads as a botched \'. They are now double-quoted with each \\ written \\\\. Checked by sourcing the PATTERNS array from origin/main and from this branch in bash and comparing element by element: 5 of 5 strings are byte-identical, so the git grep -P "$p" calls and the error message are unchanged.

  • ci.yml, the issue's second acceptance item: each pattern matches one positive and one negative example. git grep --no-index -I -c -P "$p" over a positive file and a negative file, with the patterns taken from this branch:

    /Users/[a-z][a-z0-9._-]+/                     positive.txt lines matched: 1   negative.txt lines matched: 0
    /home/[a-z][a-z0-9._-]+/                      positive.txt lines matched: 1   negative.txt lines matched: 0
    C:\\Users\\[a-z][a-z0-9._-]+\\                positive.txt lines matched: 1   negative.txt lines matched: 0
    F:\\Ship\\[0-9]{4}_                           positive.txt lines matched: 1   negative.txt lines matched: 0
    OneDrive - Autodesk\\[^\\]*\\                 positive.txt lines matched: 1   negative.txt lines matched: 0
    

    The positive lines were /Users/jdoe/proj/file, /home/jdoe/proj/file, C:\Users\jdoe\proj, F:\Ship\2019_x and OneDrive - Autodesk\Jane\file; the negative ones /usr/local/lib/x, /opt/home-ish/x, C:\Windows\System32, F:\Ship\abcd_x and OneDrive - Personal\Jane\file. The Windows patterns match what they intend.

  • docs-rs.yml, docstring ratio (SC2126, SC2046). wc -l | tr -d ' ' becomes awk 'END { print NR }' (same count, same exit status under pipefail, no grep | wc -l shape). The $(find ... | grep -v ...) argument list becomes mapfile -t SOURCES < <(...) and "${SOURCES[@]}", with the same files in the same order (the job runs on ubuntu-latest, bash 5). The step's script, extracted from origin/main and from this branch and run in the worktree, prints the same four lines:

    pub fn count:       770
    pub fn documented:  770
    docstring coverage ratio: 1.000
    docs-rs build-validation: PASS (ratio=1.000 >= 0.80)
    

    This workflow runs on pull requests, so the job on this PR runs the edited script.

  • release.yml, publish-pypi (if: false). The gate stays off. The job's condition is now github.event_name == 'disabled', which no trigger of this workflow can satisfy (it runs on tag pushes and workflow_dispatch, and no event has that name); the comment above the job says why and what to replace it with when PyO3 work ships. The job is not removed and its placeholder step is untouched.

  • Docs that described the gate. RELEASE.md ("What's still manual") said publish-pypi was gated off with if: false; it now says the job is gated off by a condition that is never true and why it is not a literal false (actionlint flags a constant condition). release.yml carries a one-line comment above the condition with the same reason, and the CHANGELOG's maintainer-tooling entry records the change. The older CHANGELOG line that says the job was scaffolded "gated-off" is a historical entry and is left as written.

  • Job names. No name: line changes in the diff, so the twelve required checks keep their names.

Not run locally: the workflows themselves (they need GitHub's runners). The PII guard and docs.rs jobs on this PR exercise the edited scripts.

Source-provenance declaration

By submitting this PR I certify that my contribution does not incorporate executable code from any source whose license is incompatible with Apache-2.0. Specifically:

  • No Autodesk DWG SDK source (RealDWG, ObjectARX, ObjectDBX) or NDA-protected Autodesk documentation was consulted or imported.
  • No Open Design Alliance Teigha / Drawings SDK source was consulted or imported. The ODA's public Open Design Specification for .dwg files PDF is explicitly allowed (see CLEANROOM.md).
  • No GPL-licensed DWG implementation source (LibreDWG, etc.) was consulted or imported. This matters because dwg-rs is Apache-2.0 and must remain compatible.

My contribution is based on:

  • The ODA's freely-redistributable Open Design Specification for .dwg files (v5.4.1);
  • Public reverse-engineering notes, research papers, or blog posts cited inline;
  • Reading algorithm-description comments (not executable code) in permissively-licensed projects (MIT / Apache / BSD) to resolve spec ambiguities — disclose any such reading in this PR body so it can be recorded in CLEANROOM.md.

See CLEANROOM.md for the full allowed/forbidden source list and the honest scope of what "clean-room" means for this project.

Developer Certificate of Origin

By submitting this PR, I certify that the contribution complies with the
Developer Certificate of Origin 1.1.
Specifically, I affirm that the contribution is my own work (or rightfully
licensed to me) and that it can be distributed under the project's Apache-2.0
license.

I will sign off commits with git commit -s when asked, which adds a
Signed-off-by trailer to the commit message asserting the DCO.

… workflows do (#269)

ci.yml, PII guard: the two patterns that end in a backslash are
double-quoted so shellcheck stops reading them as a botched \' (SC1003 twice);
the strings the loop passes to git grep -P are byte-identical.

docs-rs.yml, docstring ratio: awk 'END { print NR }' replaces wc -l | tr (SC2126)
and the source list is read into an array and expanded quoted (SC2046); the
counts are unchanged.

release.yml, publish-pypi: the literal if: false becomes a condition no trigger
of the workflow can satisfy, with the reason in the comment, so the gate stays
off.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T16:04:30.815252Z d517386 New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

…ver true (#269)

RELEASE.md and the CHANGELOG entry for this change no longer imply a literal
if: false, and release.yml carries a one-line comment above the condition so
it is not simplified back into the constant actionlint rejects.
@DrunkOnJava
DrunkOnJava enabled auto-merge (squash) October 28, 2026 16:08
@DrunkOnJava
DrunkOnJava merged commit 64d71fa into main Oct 28, 2026
24 checks passed
@DrunkOnJava
DrunkOnJava deleted the ci/actionlint-findings branch October 28, 2026 16:18
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.

ci: clear the five actionlint findings on main (PII-guard quoting, docs-rs script, release.yml if: false)

1 participant