Skip to content

Promote develop to main: dependency-currency + configure.sh hardening - #352

Merged
ptr727 merged 3 commits into
mainfrom
develop
Jun 29, 2026
Merged

Promote develop to main: dependency-currency + configure.sh hardening#352
ptr727 merged 3 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Jun 29, 2026

Copy link
Copy Markdown
Owner

Promotes PR #351 from develop to main.

What lands on main

  • Dependency currency: Directory.Packages.props is a shipped input, so a dependency bump republishes and the package's declared dependencies stay current (a NuGet version can't be re-pushed). GitHub-Actions bumps stay excluded.
  • configure.sh hardened: ruleset_id (error-distinction, jq --arg, pipefail-safe, per_page=100), jq_lacks (set -e-safe; treats jq exit 1 and 4 as "lacks" so the main-no-linear-history assert passes on a correct ruleset; propagates real errors), check_secrets (surfaces gh stderr), the main-no-linear-history assert.
  • repo-config README states the actual branch cleanup (auto-delete off; merge-bot deletes bot branches with --delete-branch). WORKFLOW.md/AGENTS.md updated (dep-currency, branch-deletion guard, D9.1 installed-tool carve-out).

Standard promotion PR with review (no admin bypass). No library code change.

Mirrors the change landed in LanguageTags: keeps push-self-publish
(correct for NuGet), closes the stale-dependency window, and brings
repo-config to the hardened canonical.

## Dependency currency
A NuGet version can't be re-pushed, so (unlike a Docker image with a
base refresh) a merged dependency bump must republish or the package
keeps shipping old/vulnerable dependency constraints.
**`Directory.Packages.props` is now a shipped input**: a dependency bump
auto-publishes that branch. GitHub-Actions bumps stay excluded (they do
not ship). The shipped library has effectively one runtime dependency
(Serilog); the rest are test/Sandbox - wide-but-robust, cheap version
churn over a stale dependency. WORKFLOW.md/AGENTS.md updated.

## configure.sh hardening
ruleset_id (error-distinction, jq --arg, pipefail-safe, per_page=100),
jq_lacks (set -e-safe), check_secrets (gh stderr surfaced),
main-no-linear-history assert. README states the actual branch cleanup
(auto-delete off; merge-bot deletes bot branches with --delete-branch).

## Branch-deletion CI guard
Documented the `!github.event.deleted` guard the PR workflow carries
(WORKFLOW.md said "unconditionally"); added scenario S16.

## Verification
actionlint, markdownlint, shellcheck, `bash -n` clean; EOL preserved.

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 29, 2026 04:29

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Promotes the develop branch’s CI/CD and repo-configuration updates onto main, primarily to treat Directory.Packages.props as a shipped input (so dependency bumps republish) and to harden the repo configuration audit script and workflow behavior around edge cases like branch deletion.

Changes:

  • Include Directory.Packages.props in the publisher’s shipped-input paths and update docs to reflect dependency-bump republishing.
  • Harden repo-config/configure.sh ruleset/secrets checks (better error distinction, safer jq usage, no pipefail hazards).
  • Add !github.event.deleted guards to skip CI jobs on branch-deletion push events (all-zero SHA), and update workflow documentation accordingly.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
WORKFLOW.md Updates shipped-input contract to include package versions; documents branch-deletion guard behavior and other workflow guarantees.
repo-config/README.md Clarifies branch cleanup behavior with repo-wide auto-delete off and explicit per-merge deletion.
repo-config/configure.sh Improves ruleset lookup, adds jq_lacks, and makes secrets auditing fail with actionable errors instead of silently passing on API failures.
AGENTS.md Adds documentation/style guidance and updates release implications to include dependency bumps as shipped inputs.
.github/workflows/validate-task.yml Adjusts actionlint invocation to align with the “installed tool” pinning carve-out (removes explicit tool-version pin).
.github/workflows/test-pull-request.yml Skips validate/smoke/aggregator jobs on branch-deletion push events via !github.event.deleted guards.
.github/workflows/publish-release.yml Adds Directory.Packages.props to on.push.paths so dependency bumps trigger publish on main/develop.

Comment thread WORKFLOW.md
repo-config README said the script 'asserts ... a GitHub App is
installed', but check_app only notes it (best-effort, does not fail the
audit) - inconsistent with WORKFLOW.md. Separate the assert (secret
names) from the note (App install). Follow-up to #351/#352.

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Comment thread repo-config/configure.sh Outdated
The summary said 'selects nothing'; jq_lacks also treats exit 1
(false/null output) as lacks. Reword to 'yields no truthy value (selects
nothing, or only false/null)'. Follow-up to #351/#352.

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit b89b23e into main Jun 29, 2026
10 checks passed
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.

2 participants