Skip to content

Promote develop to main#420

Merged
ptr727 merged 6 commits into
mainfrom
develop
Jul 18, 2026
Merged

Promote develop to main#420
ptr727 merged 6 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Promotion of the current develop integration state to main.

Contents

Area Change
Analyzer conformance #418 -- removed the repo-wide dotnet_analyzer_diagnostic relaxation, fixed the 29 xUnit1051 sites it hid
Docs #419 -- Codecov coverage shield in the README build status block
Repo config #417 -- repo-config carry refresh and self-audit carry

Conformance issues resolved

Closes #380
Closes #387

#380 (xUnit v3 + AwesomeAssertions, ILoggerFactory seam) was already satisfied in the tree -- verified rather than assumed: 0 Assert.* remaining against 245 .Should() calls, xunit.v3 3.2.2 pinned with no v2 package, zero Serilog references in the library, and Utilities/LogOptions.cs matching the LanguageTags reference seam.

#387's four findings were likewise already addressed except finding 1 (analyzer suppression hygiene), which #418 closes. Every remaining suppression was independently probed by removing it and rebuilding, and all proved load-bearing (CA1711, CA1707, CA1515, NoWarn IL3058).

Release impact: no auto-publish

This promotion carries no shipped input. Per WORKFLOW.md the inclusion list is Utilities/**, version.json, Directory.Build.props, Directory.Packages.props; this diff is confined to tests, docs, CI, and repo config:

.editorconfig  .github/workflows/merge-bot-pull-request.yml  AUDIT.md  README.md
UtilitiesTests/*.cs  repo-config/*  spec/secrets.json

Utilities/** is byte-identical between main and develop, so the published package is already current and merging this will correctly not trigger a stable release.

dependabot Bot and others added 6 commits July 15, 2026 14:55
Updated
[Microsoft.Extensions.Http.Resilience](https://github.com/dotnet/extensions)
from 10.7.0 to 10.8.0.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Http.Resilience's
releases](https://github.com/dotnet/extensions/releases)._

## 10.8.0

This release adds new experimental APIs to
Microsoft.Extensions.AI.Abstractions and updates the OpenAI dependency
to 2.12.0, alongside documentation, test, and repository maintenance.

## Experimental API Changes

### New Experimental APIs

* New experimental API: `AIFunctionNameAttribute` and
`AIParameterNameAttribute` #​7610 by @​jozkee (co-authored by
@​jeffhandley @​Copilot)
* New experimental API:
`ToolApprovalRequestContent.RequiresConfirmation` (`MEAI001`) #​7549 by
@​javiercn (co-authored by @​Copilot)

## What's Changed

### AI

* Upgrade OpenAI dependency to 2.12.0 #​7608 by @​jozkee (co-authored by
@​Copilot)
* Auto-detect audio format in OpenAISpeechToTextClient #​7575 by
@​jozkee (co-authored by @​Copilot)
* Fix ToolJson.AdditionalProperties to accept sub-schema objects #​7546
by @​jozkee (co-authored by @​Copilot)
* Fix ImageGeneratingChatClient duplicating preceding content and
dropping following content #​7624 by @​jozkee (co-authored by @​Copilot)

### Vector Data

* Make all test methods virtual in VectorData.ConformanceTests #​7606 by
@​adamsitnik (co-authored by @​Copilot)

## Documentation Updates

* Remove links to ai-samples repo #​7574 by @​gewarren
* Fix up docs with Copilot (MEVD) #​7597 by @​gewarren
* Fix up docs with Copilot (M.E.ServiceDiscovery) #​7598 by @​gewarren
(co-authored by @​Copilot)
* Fix up docs with Copilot (MEAI) #​7600 by @​gewarren
* Fix up docs with Copilot #​7601 by @​gewarren

## Test Improvements

* Fix flaky StampedeTests and harden related test waits #​7572 by
@​jeffhandley (co-authored by @​Copilot)
* Fix SQLitePCLRaw.lib.e_sqlite3 vulnerability by replacing
SemanticKernel connectors with CommunityToolkit #​7579 by @​adamsitnik
(co-authored by @​Copilot)
* Removing SemanticKernel Connectors dependency and replacing it #​7584
by @​adamsitnik (co-authored by @​Copilot)
* Migrate to xUnit v3 #​7607 by @​adamsitnik (co-authored by
@​shyamnamboodiripad @​Copilot)

## Repository Infrastructure Updates

* Update OTel GenAI conventions skill for standalone semconv-genai repo
#​7519 by @​jeffhandley (co-authored by @​Copilot)
* Bump dotnet-coverage from 18.7.0 to 18.8.0 #​7552
* [main] Update dependencies from dotnet/arcade #​7559
* Fix transitive MessagePack vulnerability in AI template AppHost
projects #​7561 by @​adamsitnik (co-authored by @​Copilot)
* Bump esbuild, @​vitejs/plugin-react and vite in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript
#​7564
* Bump tmp from 0.2.6 to 0.2.7 in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript
#​7569
* Bump js-yaml from 4.1.1 to 4.2.0 in
/src/Libraries/Microsoft.Extensions.AI.Evaluation.Reporting/TypeScript
#​7570
* Bump PowerShell from 7.6.2 to 7.6.3 #​7576
* Remove duplicate 'WebAPI' classification from template #​7577 by
@​danroth27
* [main] Update dependencies from dotnet/arcade #​7590
* Eliminate redundant Correctness CI stage by merging into Build #​7594
by @​adamsitnik (co-authored by @​Copilot)
 ... (truncated)

Commits viewable in [compare
view](dotnet/extensions@v10.7.0...v10.8.0).
</details>

Updated
[Microsoft.Extensions.Logging.Abstractions](https://github.com/dotnet/dotnet)
from 10.0.9 to 10.0.10.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Extensions.Logging.Abstractions's
releases](https://github.com/dotnet/dotnet/releases)._

No release notes found for this version range.

Commits viewable in [compare
view](https://github.com/dotnet/dotnet/commits).
</details>

Updated [Microsoft.SourceLink.GitHub](https://github.com/dotnet/dotnet)
from 10.0.300 to 10.0.301.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.SourceLink.GitHub's
releases](https://github.com/dotnet/dotnet/releases)._

## 10.0.301

You can build .NET 10.0 from the repository by cloning the release tag
`v10.0.301` and following the build instructions in the [main
README.md](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building).

Alternatively, you can build from the sources attached to this release
directly.
More information on this process can be found in the [dotnet/dotnet
repository](https://github.com/dotnet/dotnet/blob/v10.0.301/README.md#building-from-released-sources).

Attached are PGP signatures for the GitHub generated tarball and
zipball. You can find the public key at https://dot.net/release-key-2023

Commits viewable in [compare
view](dotnet/dotnet@v10.0.300...v10.0.301).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Docs-only change: appends a new list item 3 "Spelling CI scope" to the
Markdown and Spelling section of CODESTYLE.md, propagating the
template's CODESTYLE Spelling-CI-scope rule (ptr727/ProjectTemplate#302,
#303). It documents that the CI spell-check gate covers README.md +
HISTORY.md only, not all markdown, with broad live checking left to the
cspell editor extension.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
…up (#416)

Bumps the actions-deps group with 1 update:
[actions/setup-dotnet](https://github.com/actions/setup-dotnet).

Updates `actions/setup-dotnet` from 5.4.0 to 6.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Migrate to ESM and upgrade dependencies by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/752">actions/setup-dotnet#752</a></li>
<li>Bump actions/checkout from 6.0.3 to 7.0.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/751">actions/setup-dotnet#751</a></li>
<li>chore(deps): bump <code>@​actions/cache</code> to 6.2.0 by <a
href="https://github.com/philip-gai"><code>@​philip-gai</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/756">actions/setup-dotnet#756</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/philip-gai"><code>@​philip-gai</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/756">actions/setup-dotnet#756</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v5...v6.0.0">https://github.com/actions/setup-dotnet/compare/v5...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-dotnet/commit/a98b56852c35b8e3190ac28c8c2271da59106c68"><code>a98b568</code></a>
chore(deps): bump <code>@​actions/cache</code> to 6.2.0 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/756">#756</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/afb2931642fd907238eb71bce2da0dcc910b3553"><code>afb2931</code></a>
Bump actions/checkout from 6.0.3 to 7.0.0 (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/751">#751</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/6df8cefd1440cf9313e76b8fdb8aaf90cfa745a3"><code>6df8cef</code></a>
Migrate to ESM and upgrade dependencies (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/752">#752</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-dotnet/compare/26b0ec14cb23fa6904739307f278c14f94c95bf1...a98b56852c35b8e3190ac28c8c2271da59106c68">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-dotnet&package-manager=github_actions&previous-version=5.4.0&new-version=6.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…417)

Implements the fleet hub drift finding (ProjectTemplate #330): earlier
downstream carries drifted from the current repo-config and merge-bot
reference.

## Repo-config carry refresh

- Rename `repo-config/ruleset-develop.json` and `ruleset-main.json` to
`develop.json` and `main.json`, matching the current fleet reference
layout (the fleet audit letter-checks the new paths).
- Refresh `README.md`, `configure.sh`, and `settings.json` to the
current reference content.

## Self-audit carry

- Add `AUDIT.md` at the repo root plus `spec/secrets.json` per the
repo-config Downstream Carry, adapted from the blessed Vantage-Config
reference for this repo's release model with the nuget-oidc and codecov
secret mechanisms.

## Merge-bot workflow sync

- Sync `.github/workflows/merge-bot-pull-request.yml` to the current
fleet reference: notably `gh pr merge` no longer uses `--delete-branch`,
and the header and comments are updated.

## Scope

Live rulesets, settings, and secrets were verified in sync with the
reference payloads today; this change touches committed files only. No
live repo configuration was modified.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Follow-up to the conformance audit for #387 (finding 1, analyzer
suppression hygiene).

## What prompted this

[CODESTYLE.md](../blob/develop/CODESTYLE.md) "Analyzer Suppressions"
names `dotnet_analyzer_diagnostic.severity` as the exact anti-pattern it
forbids -- relaxing a batch of rules repo-wide -- yet the root
`.editorconfig` carried it.

## What removing it surfaced

Exactly one rule, and none of it in shipping code:

| Rule | Sites | Project |
| --- | --- | --- |
| xUnit1051 | 29 | UtilitiesTests |

`Utilities` and `Sandbox` produced **zero** findings under
`AnalysisLevel=latest-all` + `AnalysisMode=All`. I re-ran with
`-p:EnforceCodeStyleInBuild=true` to confirm IDE analyzers were not
being silently skipped -- same result. The relaxation was hiding nothing
in library code.

xUnit1051 is a true positive, not a suppression candidate: it asks that
async calls in tests pass `TestContext.Current.CancellationToken` so
xUnit v3 can cancel a stalled test. The clearest case is
`DownloadAsyncTests`, which makes real network calls and previously had
no cancellation path if a request hung.

## Audit of every other suppression

Each was removed and rebuilt independently to prove it is load-bearing.
All of them are -- kept, no changes:

| Suppression | Scope | Fires when removed | Verdict |
| --- | --- | --- | --- |
| `CA1711` | Utilities | yes | Deliberate `Ex` suffix convention |
| `CA1707` | UtilitiesTests | yes | xUnit `Method_Scenario_Expected`
naming |
| `CA1515` | UtilitiesTests | yes | xUnit needs public test classes |
| `NoWarn IL3058` | Utilities, Sandbox | yes (10 under
`PublishAot=true`) | Polly/Serilog not annotated AOT-compatible; no
source location to scope |
| `IDE0055` | root | no | Inert today, but CSharpier owns formatting;
kept as a guard, now with a rationale comment |

The naming-rule severities were also raised to `warning` as a probe and
produced nothing.

## Verification

- `dotnet build -c Release` with `TreatWarningsAsErrors` intact: 0
warnings, 0 errors
- `dotnet test -c Release`: 183/183 passed
- `dotnet format style --verify-no-changes`: clean
- CSharpier + `dotnet format` Husky hooks passed on commit

## Notes

No `Closes #387` here -- per [AGENTS.md](../blob/develop/AGENTS.md)
"Branching Model", closing keywords belong in the `develop -> main`
promotion PR. #387's other three findings (inline pragmas,
`GlobalUsings.cs`, stale package source) were already resolved in
earlier work and need no change.

A fleet-wide issue is being filed against ProjectTemplate, since
LanguageTags carries the identical `dotnet_analyzer_diagnostic` line and
the other repos have not been probed.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Coverage has been uploaded to Codecov since the coverage workflow landed
(#377), but the README never surfaced it.

Adds a Coverage shield to the **Build Status** block, following the
badge pattern used in
[aiopurpleair](https://github.com/ptr727/aiopurpleair):

```markdown
[![Release Status][releasebuildstatus-shield]][actions-link]\
[![Last Commit][lastcommit-shield]][commits-link]\
[![Coverage][coverage-shield]][coverage-link]
```

Shield and link definitions were inserted in the file's existing
alphabetical order, between `commits-link` and `github-link`.

## Verification

- Shield URL returns HTTP 200 and renders real data (`coverage: 67%`),
not `unknown`
- markdownlint MD052 (undefined reference) clean -- both definitions
resolve
- CRLF preserved
- No `cspell.json` change needed: `codecov` is not flagged (aiopurpleair
carries the same badge with no dictionary entry), and README is in the
CI spell-check scope per CODESTYLE

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Copilot AI review requested due to automatic review settings July 18, 2026 16:40
@codecov

codecov Bot commented Jul 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.89%. Comparing base (06d0a0b) to head (a46e3cd).
⚠️ Report is 52 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #420   +/-   ##
=======================================
  Coverage   66.89%   66.89%           
=======================================
  Files          13       13           
  Lines        1160     1160           
  Branches      108      108           
=======================================
  Hits          776      776           
  Misses        338      338           
  Partials       46       46           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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 current develop integration state to main, carrying test/analyzer conformance tweaks, documentation updates, CI/workflow maintenance, and repo-config refresh/self-audit scaffolding.

Changes:

  • Update async tests to pass TestContext.Current.CancellationToken into async APIs (xUnit1051 conformance).
  • Refresh repo-config/ payload layout and add repo-scoped self-audit files (AUDIT.md, spec/secrets.json).
  • Maintenance updates: add Codecov badge, bump some package versions, update actions/setup-dotnet, and remove repo-wide analyzer relaxation.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
UtilitiesTests/StringCompressionAsyncTests.cs Pass xUnit v3 cancellation token into StringCompression async calls.
UtilitiesTests/HttpClientFactoryResilienceTests.cs Pass xUnit v3 cancellation token into HttpClient async calls.
UtilitiesTests/FileExAsyncTests.cs Pass xUnit v3 cancellation token into FileEx and file I/O async calls.
UtilitiesTests/ExtensionsTests.cs Pass xUnit v3 cancellation token into async extension methods under test.
UtilitiesTests/DownloadAsyncTests.cs Pass xUnit v3 cancellation token into Download async APIs.
spec/secrets.json Add repo-scoped secrets spec for self-audit (mechanisms + required/forbidden names).
repo-config/settings.json Refresh repository settings baseline payload.
repo-config/ruleset-main.json Remove old ruleset payload filename (replaced by new layout).
repo-config/ruleset-develop.json Remove old ruleset payload filename (replaced by new layout).
repo-config/README.md Update repo-config documentation to current fleet layout and carry rules.
repo-config/main.json Add new main ruleset payload file (fleet layout).
repo-config/develop.json Add new develop ruleset payload file (fleet layout).
repo-config/configure.sh Replace legacy check/apply tool with model-aware ruleset/settings applier.
README.md Add Codecov coverage badge to the Build Status block.
Directory.Packages.props Bump several dependency versions.
CODESTYLE.md Document CI cspell gate scope (README + HISTORY only).
AUDIT.md Add repo-scoped self-audit instructions for settings/rulesets/secrets.
.github/workflows/validate-task.yml Update pinned actions/setup-dotnet SHA.
.github/workflows/merge-bot-pull-request.yml Sync merge-bot workflow behavior/comments; stop deleting branches on merge.
.github/workflows/build-release-task.yml Update pinned actions/setup-dotnet SHA.
.editorconfig Remove repo-wide dotnet_analyzer_diagnostic relaxation; add rationale for IDE0055 suppression.

Comment thread UtilitiesTests/FileExAsyncTests.cs
Comment thread spec/secrets.json
Comment thread AUDIT.md
Comment thread AUDIT.md
Comment thread repo-config/configure.sh
Comment thread Directory.Packages.props
@ptr727
ptr727 merged commit f1227dd into main Jul 18, 2026
12 checks passed
ptr727 added a commit that referenced this pull request Jul 18, 2026
Fixes both items in #421, surfaced by Copilot review on #420.

## 1. `configure.sh check` / `apply` do not exist

`WORKFLOW.md` referenced subcommands the script never implemented. Its
interface is `[owner/repo] [release|operational]`, so `configure.sh
check` parses `check` as a **repository name** -- it acts on the wrong
target rather than erroring, which is why this was worth fixing rather
than leaving.

Auditing also moved to [`AUDIT.md`](../blob/develop/AUDIT.md) as a
read-only procedure; `configure.sh` now only applies. Updated:

- **5D Configuration audit** -- points at the AUDIT.md procedure
- **Validation** (section 6) -- AUDIT.md audits read-only, `configure.sh
[owner/repo] [release|operational]` applies
- Two residual phrases that still described the script as the auditor
("applied and audited by an idempotent `gh api` script", "the script
flags it as a manual verification item")

## 2. `NUGET_USERNAME` secret store

`WORKFLOW.md` said Actions-store-only; `spec/secrets.json` and
`AUDIT.md` say both stores. Resolved in favor of both, on two pieces of
evidence:

- The fleet hub's canonical `nuget-oidc` mechanism in
`ProjectTemplate/spec/secrets.json` declares `"stores": ["actions",
"dependabot"]`, and this repo's spec is a carry of it
- Live repository state has the name in both stores

```
actions:    CODECOV_TOKEN CODEGEN_APP_CLIENT_ID CODEGEN_APP_PRIVATE_KEY NUGET_USERNAME
dependabot: CODECOV_TOKEN CODEGEN_APP_CLIENT_ID CODEGEN_APP_PRIVATE_KEY NUGET_USERNAME
```

So `WORKFLOW.md` was the outlier. It now states both stores and cites
the spec it follows.

Worth recording: Copilot predicted this would make the self-audit report
a false defect. It would not -- the secret is present in both stores, so
the audit passes today. The defect was purely that three documents
disagreed.

## Correction to the issue's fleet note

#421 speculated these might need upstream fixes too. Checked, and they
do not: ProjectTemplate's `WORKFLOW.md` has no `configure.sh` subcommand
references and no NuGet publish at all. Both drifts are local to this
repo.

## Verification

- No `configure.sh check|apply` references remain
- All three link targets resolve (`AUDIT.md`, `spec/secrets.json`,
`repo-config/configure.sh`)
- CRLF preserved; docs-only, no shipped input, so no release impact

---------

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
ptr727-codegen Bot pushed a commit to ptr727/LanguageTags that referenced this pull request Jul 21, 2026
Updated [ptr727.Utilities](https://github.com/ptr727/Utilities) from
4.0.18 to 4.0.28.

<details>
<summary>Release notes</summary>

_Sourced from [ptr727.Utilities's
releases](https://github.com/ptr727/Utilities/releases)._

## 4.0.28

## What's Changed
* Bump the nuget-deps group with 3 updates by @​dependabot[bot] in
ptr727/Utilities#411
* Document the README + HISTORY cspell CI scope in CODESTYLE by @​ptr727
in ptr727/Utilities#413
* Document the README + HISTORY cspell CI scope (main-only) by @​ptr727
in ptr727/Utilities#414
* Bump actions/setup-dotnet from 5.4.0 to 6.0.0 in the actions-deps
group by @​dependabot[bot] in
ptr727/Utilities#415
* Bump actions/setup-dotnet from 5.4.0 to 6.0.0 in the actions-deps
group by @​dependabot[bot] in
ptr727/Utilities#416
* Refresh repo-config carry to current reference; add self-audit carry
by @​ptr727 in ptr727/Utilities#417
* Remove repo-wide analyzer relaxation and honor test cancellation by
@​ptr727 in ptr727/Utilities#418
* Add Codecov coverage shield to the README build status by @​ptr727 in
ptr727/Utilities#419
* Promote develop to main by @​ptr727 in
ptr727/Utilities#420
* Correct WORKFLOW.md audit flow and NUGET_USERNAME secret store by
@​ptr727 in ptr727/Utilities#422
* Describe the 5D audit as reporting defects, not failing by @​ptr727 in
ptr727/Utilities#424
* Promote develop to main by @​ptr727 in
ptr727/Utilities#423
* Spell out the up-to-date ruleset setting in the 5D audit summary by
@​ptr727 in ptr727/Utilities#425
* Promote develop to main by @​ptr727 in
ptr727/Utilities#426
* Bump DavidAnson/markdownlint-cli2-action from 24.0.0 to 24.1.0 in the
actions-deps group by @​dependabot[bot] in
ptr727/Utilities#429
* Bump the nuget-deps group with 1 update by @​dependabot[bot] in
ptr727/Utilities#431


**Full Changelog**:
ptr727/Utilities@4.0.18...4.0.28

Commits viewable in [compare
view](ptr727/Utilities@4.0.18...4.0.28).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ptr727.Utilities&package-manager=nuget&previous-version=4.0.18&new-version=4.0.28)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.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

2 participants