Skip to content

feat: config-ready trio composite actions (typos, editorconfig, gitleaks) - #10

Merged
kyle-sexton merged 2 commits into
mainfrom
feat/phase1-config-ready-trio
Jun 23, 2026
Merged

feat: config-ready trio composite actions (typos, editorconfig, gitleaks)#10
kyle-sexton merged 2 commits into
mainfrom
feat/phase1-config-ready-trio

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Phase 1 of the CI de-duplication program: lift the three lanes whose tool config already lives in standards (modules/typos, modules/editorconfig, modules/gitleaks) into ci-workflows as granular composite actions. Only the execution action was missing, so there is no config work — both standards and medley can now reference these instead of carrying inline copies.

What's here

Three composite actions under .github/actions/, each following the repo's established single-binary idiom (curl + SHA-256 checksum-pin, like shellcheck/lychee-offline): self-contained, no nested third-party action, composite gotchas handled (shell: on every step, no post:, inputs passed via env).

Action Version Checksum corroboration
typos v1.47.2 computed + taiki-e install-action manifest
editorconfig v3.7.0 (standards was v3.6.1) computed + upstream checksums.txt
gitleaks v8.30.1 computed + standards' recorded hash
  • Open-closed inputs (D4) with behavior-preserving defaults: paths/path, config, exclude, version, sha256.
  • Backfill beyond standards' inline behavior, all optional + default-off: typos --format (incl. sarif), editorconfig --format github-actions, gitleaks --report-format/--report-path (SARIF emit; the SARIF upload stays a caller-side job concern per D1/D7 — documented in the action and research note).
  • Research notes under docs/dedup-program/research/ (version + invocation verified against the GitHub releases API and corroborated; nothing relied on from training data).

Dogfood

Wired into ci.yml behind the local ci-status gateway, with the matching configs vendored byte-identical from standards (sha256-confirmed, LF preserved). All three verified locally against the tracked tree before push (typos/editorconfig/gitleaks clean; the gitleaks default ruleset does not trip on the action checksums).

Also

  • Ticks Phase 0 D6 (Actions access confirmed access_level: organization) and the three Phase 1 action checkboxes in plan.md.
  • Separate commit resyncs .gitignore with standards (a pre-existing vendoring-lockstep drift; header comment only, no rule change).

Adoption in standards (retiring its inline typos/editorconfig/gitleaks lanes, pinned to this PR's squash SHA) follows as a separate PR.

kyle-sexton and others added 2 commits June 23, 2026 08:42
…itleaks)

Phase 1 of the CI de-duplication program: lift the three lanes whose tool
config already lives in standards (modules/typos, modules/editorconfig,
modules/gitleaks) into ci-workflows as granular composite actions, so both
standards and medley can reference them instead of carrying inline copies.

Each action follows the repo's established single-binary idiom (curl + sha256
checksum-pin, as shellcheck/lychee-offline do): self-contained, no nested
third-party action, version and checksum as open-closed string inputs with
behavior-preserving defaults. Tool versions/checksums verified against the
GitHub releases API and corroborated (upstream checksums.txt for ec, taiki-e
install-action manifest for typos, standards' recorded hash for gitleaks);
findings recorded under docs/dedup-program/research/.

Backfill beyond standards' current behavior, all optional and default-off:
typos --format (incl. sarif), editorconfig --format github-actions, gitleaks
--report-format/--report-path (sarif emit for caller-side code-scanning upload).

Dogfooded in this repo's ci.yml behind the local ci-status gateway, with the
matching configs vendored byte-identical from standards. typos/editorconfig/
gitleaks all verified locally against the tracked tree before push.

Also ticks Phase 0 D6 (Actions access confirmed org-accessible) and the three
Phase 1 action checkboxes in plan.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
standards added an explanatory header comment to its .gitignore that was never
synced here, drifting the byte-identical vendored copy. Re-sync to restore
lockstep; no ignore rules change.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@kyle-sexton
kyle-sexton merged commit bd977e0 into main Jun 23, 2026
10 checks passed
@kyle-sexton
kyle-sexton deleted the feat/phase1-config-ready-trio branch June 23, 2026 12:55

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3b0a0b3776

ℹ️ 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".

Comment on lines +49 to +51
tar -xzf ec.tar.gz bin/ec-linux-amd64
sudo install bin/ec-linux-amd64 /usr/local/bin/ec
rm -rf ec.tar.gz bin

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Extract editorconfig into a temp dir

Composite action steps run in the caller's workspace, so in any consuming repo that has a top-level bin/ directory this cleanup removes the repo's own files after extracting bin/ec-linux-amd64. That can make later steps in the job fail or hide files from checks; extract the archive under $RUNNER_TEMP or another unique directory instead of deleting bin from the workspace.

Useful? React with 👍 / 👎.

Comment on lines +64 to +67
for e in $EXCLUDE; do args+=(--exclude "$e"); done
if [[ -n "${FORMAT// }" ]]; then args+=(--format "$FORMAT"); fi
# $PATHS unquoted so multiple targets word-split.
typos "${args[@]}" $PATHS

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add --force-exclude for explicit paths

When callers use the supported paths input as an explicit file list, typos does not apply configured or CLI excludes to those paths unless --force-exclude is set; the v1.47.2 help text says that flag is required to “Respect excluded files even for paths passed explicitly.” A pre-commit-style caller passing changed files can therefore still fail on files covered by exclude or [files].extend-exclude (for example minified/generated files), contrary to this action's exclude contract.

Useful? React with 👍 / 👎.

kyle-sexton added a commit that referenced this pull request Jun 23, 2026
The config-ready trio is built, dogfooded, and adopted in standards (#10 here,
standards#20). Tick the remaining Phase 1 checkbox and refresh the README status.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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