Skip to content

[PRESERVE — DO NOT MERGE] fix/node24-actions-and-daily-summary: 9 rescued commits, triaged - #260

Closed
labgadget015-dotcom wants to merge 9 commits into
mainfrom
fix/node24-actions-and-daily-summary
Closed

[PRESERVE — DO NOT MERGE] fix/node24-actions-and-daily-summary: 9 rescued commits, triaged#260
labgadget015-dotcom wants to merge 9 commits into
mainfrom
fix/node24-actions-and-daily-summary

Conversation

@labgadget015-dotcom

@labgadget015-dotcom labgadget015-dotcom commented Aug 22, 2026

Copy link
Copy Markdown
Owner

⛔ DO NOT AUTO-MERGE — DRAFT, HUMAN REVIEW REQUIRED

This PR touches .github/workflows/, a protected path under config/policies.yaml.
It is opened as a draft for preservation and triage, not to be merged as-is.
It has 3 unresolved conflicts by design (see below).

Why this PR exists

The branch fix/node24-actions-and-daily-summary held 9 commits that existed in exactly one place — a single local ref on the m900, with its remote branch already deleted. It was pushed byte-identical (tip 598c354, no rebase) so the SHAs referenced in HANDOFF.md stay valid.

The commits date from a 2026-06-04 merge-base and the branch is now 257 commits behind main.

Triage verdict: this work is ~99% already on main

Every touched file was diffed against origin/main:

Commit Verdict Evidence
05214ef Node 24 bumps + daily-summary path Superseded main carries every bump; the autopilot.py path fix is on main verbatim (lines 327–347), comment text included
f43f2fa release → softprops/action-gh-release Superseded release-and-publish.yml byte-identical to main
ac5e8a4 Copilot autofix (autopilot.py) Superseded folded into main's version
575fca8 gitleaks allowlist Superseded main has both entries, better written (anchored regex + [extend] useDefault)
5928c36 black format autopilot.py Moot
f2e87c2 · cb88bc9 · b057015 shellcheck fixes Superseded all 7 shell scripts byte-identical to main
598c354 add .github/labeler.yml Superseded main has its own labeler.yml → add/add conflict

⚠️ The one item still live — and it is NOT a safe one-liner

security_scan.yml: this branch bumps gitleaks/gitleaks-action@v2 → v3. main is still on v2. That is the only unlanded change in all 9 commits — but do not cherry-pick it blind. The hunk changes two things, not one:

-        uses: gitleaks/gitleaks-action@v2
+        uses: gitleaks/gitleaks-action@v3
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}

Verified against live repo state:

  • GITLEAKS_LICENSE is not a secret on this repo (gh secret list — 11 secrets, not among them). The reference would expand to an empty string.
  • The owner is a User, not an Organization (gh api .../owner.type), so gitleaks' license gate should not apply — v2 gates orgs only. Whether v3 kept that carve-out is unverified.
  • v3.0.0 is the only v3 release, and this bump is ~2.5 months stale.
  • security_scan.yml has no continue-on-error since the repo went public, so a wrong guess here fails the security scan on main, it does not warn.

Before adopting: read v3.0.0's release notes / migration guide, confirm the org-only license carve-out survived, and decide whether the GITLEAKS_LICENSE line should come along at all (on a User-owned repo it is probably noise). Validate on a branch with a real scan run before it reaches main.

(Unrelated straggler spotted while diffing: main still pins actions/github-script@v7 at deploy-landing.yml:75. Not this branch's scope — noting it for the backlog.)

Recommended disposition

  1. Evaluate the gitleaks v2→v3 change per the caveats above; if it holds up, land it as its own small PR with a green scan.
  2. Close this PR without merging and delete the branch.

Preservation is already satisfied by the remote ref itself — this PR is the readable record of what was in it and why it can go.

Conflicts are intentional — do not resolve here

.github/labeler.yml (add/add) · .gitleaks.toml (add/add) · autopilot/autopilot.py (content).

Resolving them would mean rebasing, which rewrites all 9 SHAs and destroys the artifact being preserved. "Not mergeable" is the correct signal.

Expected CI noise

CI will be red — a 257-behind branch against current main. That is expected, not a defect to chase. ai_agent_workflow self-skips on draft; dependabot-automerge is actor-gated to dependabot[bot] (no auto-merge path); stale-pr-handler sets exempt-draft-pr: true. elite_copilot has no draft guard and will post one bot comment below — ignore it.


🤖 Generated with Claude Code

https://claude.ai/code/session_01GipLwSamx8HJU2pHaScFB2

labgadget015-dotcom and others added 9 commits June 10, 2026 05:33
Migrates all GitHub Actions pins to node24-compatible runtimes before
the June 16, 2026 forced cutoff, and fixes a path-resolution bug in
autopilot that was silently writing DAILY_SUMMARY.md outside the repo.

Actions bumped (12 workflow files):
- actions/github-script v7 → v8 (node20 → node24, 9 occurrences)
- codecov/codecov-action v4 → v5 (node20 → composite, 2 occurrences)
- actions/labeler v5 → v6 (node20 → node24, 1 occurrence)

autopilot/autopilot.py: when --output is supplied via CLI, resolve the
path relative to cwd() instead of re-rooting against __file__.parent.parent,
which was writing the file one directory above the workspace root.

Note: actions/create-release@v1 and actions/upload-release-asset@v1 in
release-and-publish.yml are archived with no v2+ — migration to
softprops/action-gh-release requires separate review.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…on-gh-release

Replaces actions/create-release@v1 and actions/upload-release-asset@v1
(both archived by GitHub, no node24 release exists) with a single
softprops/action-gh-release@v2 step that handles both release creation
and asset upload via the files: input.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
.secrets.baseline (detect-secrets baseline) and docs/API_EXAMPLES.md
(documentation with placeholder curl examples) were triggering
gitleaks generic-api-key and curl-auth-header rules on every scan.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add -r to all read commands (SC2162)
- Quote $(pwd) in docker volume mount (SC2046)
- Quote $GITHUB_TOKEN in kubectl secret (SC2086)
- Add shellcheck source=/dev/null before source venv/bin/activate (SC1091)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- scripts/automation/create-release.sh: add -r to read, quote variable in git log
- scripts/automation/lint-code.sh: use ./*.py glob (SC2035), xargs -0 with find -print0 (SC2038)
- scripts/automation/setup-dev-env.sh: shellcheck source=/dev/null, single-quote Windows path echo
- scripts/automation/setup_python.sh: shellcheck source=/dev/null
- scripts/setup-dev.sh: shellcheck source=/dev/null on all four source calls
- start.sh: remove UTF-8 BOM (SC1082), add -r to read

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
actions/labeler@v6 was 404-ing on missing config file on every PR.
Uses existing repo labels where possible; new labels (core, agents,
autopilot, dependencies) created in the repo.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
labgadget015-dotcom added a commit that referenced this pull request Aug 24, 2026
v3.0.0 is a Node 20 -> Node 24 runtime migration: "No changes to inputs, outputs, or behavior." Node 24 became the default runtime for JavaScript actions on 2026-06-16 and Node 20 leaves the runners in fall 2026.

No GITLEAKS_LICENSE is required here. The action's README scopes the license to organization accounts: "If you are scanning repos that belong to a personal account, then no license key is required." This repo's owner is type User.

Evidence the bump is safe: v2 runs green on main today with no license (run 32684406753, job "Secret Detection (Gitleaks)" success), and v3 changes no behavior.

Supersedes the equivalent change stranded in draft PR #260, which also added an unnecessary GITLEAKS_LICENSE env line. Omitted here deliberately.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013JdYCSp4nmVgsNWuwNkUaZ
labgadget015-dotcom added a commit that referenced this pull request Aug 24, 2026
v3.0.0 is a Node 20 -> Node 24 runtime migration: "No changes to inputs, outputs, or behavior." Node 24 became the default runtime for JavaScript actions on 2026-06-16 and Node 20 leaves the runners in fall 2026.

No GITLEAKS_LICENSE is required here. The action's README scopes the license to organization accounts: "If you are scanning repos that belong to a personal account, then no license key is required." This repo's owner is type User.

Evidence the bump is safe: v2 runs green on main today with no license (run 32684406753, job "Secret Detection (Gitleaks)" success), and v3 changes no behavior.

Supersedes the equivalent change stranded in draft PR #260, which also added an unnecessary GITLEAKS_LICENSE env line. Omitted here deliberately.


Claude-Session: https://claude.ai/code/session_013JdYCSp4nmVgsNWuwNkUaZ

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@labgadget015-dotcom

Copy link
Copy Markdown
Owner Author

Closing unmerged — the one live item has landed on main

This draft was kept open for a single line: gitleaks/gitleaks-action@v2 → @v3 in security_scan.yml. Everything else in its 9 commits was already verified byte-identical to main.

That line is now on main via #264 (b99e5c80f, merged 2026-08-24).

The blocker that held it here was wrong

This PR was gated on:

"DO NOT cherry-pick it blind. v3 also injects GITLEAKS_LICENSE, a secret that does NOT exist on this repo… A blind bump reddens main."

Verified 2026-08-24 — the license is organization-only. The action's README: "If you are scanning repos that belong to a personal account, then no license key is required." gh api users/labgadget015-dotcom returns "type": "User".

And then confirmed empirically rather than by argument: #264's secret-scan job ran gitleaks v3 with no license and passed (run 32684718114, "Run Gitleaks" → success), with all 38 checks green.

One deliberate difference from this PR's version

#264 does not carry the GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} env line that this branch added. It's unnecessary on a personal account and would have resolved to an empty string.

Disposition

Nothing live remains here. Closing unmerged and deleting the branch — GitHub retains a closed PR's commits, so all 9 stay recoverable from this page, and the tip is 598c354.

Full per-commit triage stays in the PR body above for the record.

@labgadget015-dotcom

Copy link
Copy Markdown
Owner Author

Correction to the comment above: I did not delete the branch.

The title of this PR says [PRESERVE — DO NOT MERGE]. I honoured the "do not merge" half by closing it unmerged, but deleting the branch is the one irreversible act in this cleanup, and "PRESERVE" is an explicit instruction from the repo owner. That's not a call to make on inherited notes, so fix/node24-actions-and-daily-summary is left in place pending your decision.

Current state, verified just now:

  • branch ref fix/node24-actions-and-daily-summarystill present, tip 598c3548766ee5f75f914d79eaea939b7c034d9c
  • tip commit reachable via the API
  • all 9 commits still listed on this closed PR

So the branch is safe to delete whenever you want it gone — GitHub retains a closed PR's commits, and they'd stay recoverable from this page. It's simply your call, not mine.

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