Conversation
…ft Feed (#789) ## Summary When `install-tools.sh --upgrade powershell` installs from Microsoft's apt feed, a prior direct-download install (the portable tar.gz build that PowerShell's `install.sh` or a repo's `install-powershell.sh` places at `/opt/microsoft/powershell/7` with a `/usr/local/bin/pwsh` symlink) would remain on the host, sharing the same tree the apt package installs into. This PR makes `powershell_install` detect and remove non-APT copies before apt installs, using dpkg ownership as the discriminator (the same test `tool_unshadow` applies): a path the `powershell` package owns is the APT install and stays; anything unowned is cleared. This is the mirror of `docker_install`, which removes conflicting APT packages before a native install. ## Changes - `powershell_install` now calls `powershell_remove_non_apt` after `microsoft_feed` and before `apt_install powershell`. - `powershell_non_apt_paths` lists non-APT pwsh copies: - the `/usr/local/bin/pwsh` symlink - the whole `/opt/microsoft/powershell/7` tree (removed whole, not just the binary, so leftover files an APT install does not carry cannot survive) - any other `pwsh` on PATH no package owns (absolute path only, same guard as `tool_shadow_path`) ## Verification - `shellcheck` clean - `bash -n` clean - Full pytest suite passes (686 passed, 866 subtests) - ruff check and format clean
…up (#790) Bumps the actions-deps group with 1 update: [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv). Updates `astral-sh/setup-uv` from 10.0.0 to 10.0.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/setup-uv/releases">astral-sh/setup-uv's releases</a>.</em></p> <blockquote> <h2>v10.0.1 🌈 Tolerate transient manifest timeouts</h2> <h2>Changes</h2> <p>Thank you <a href="https://github.com/arguile"><code>@arguile</code></a>- for making this action more resilient.</p> <h2>🐛 Bug fixes</h2> <ul> <li>Tolerate transient manifest timeouts <a href="https://github.com/arguile"><code>@arguile</code></a>- (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1016">#1016</a>)</li> </ul> <h2>🧰 Maintenance</h2> <ul> <li>chore: update known checksums for 0.12.4 @<a href="https://github.com/apps/github-actions">github-actions[bot]</a> (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1017">#1017</a>)</li> </ul> <h2>📚 Documentation</h2> <ul> <li>docs: update version references to v10.0.0 @<a href="https://github.com/apps/github-actions">github-actions[bot]</a> (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1014">#1014</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/setup-uv/commit/20cfd1bf945f4377ade1205e4dbc17946fc9a30d"><code>20cfd1b</code></a> chore: update known checksums for 0.12.4 (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1017">#1017</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/d73a0cab66a532d7afa440d9df4a67ea9fe65a30"><code>d73a0ca</code></a> Tolerate transient manifest timeouts (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1016">#1016</a>)</li> <li><a href="https://github.com/astral-sh/setup-uv/commit/ae3b92d1bdb308a10adfe7b8f408e5cc8c30f3f6"><code>ae3b92d</code></a> docs: update version references to v10.0.0 (<a href="https://redirect.github.com/astral-sh/setup-uv/issues/1014">#1014</a>)</li> <li>See full diff in <a href="https://github.com/astral-sh/setup-uv/compare/ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d...20cfd1bf945f4377ade1205e4dbc17946fc9a30d">compare view</a></li> </ul> </details> <br /> [](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] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## What Changed - Resolve hub-owned composite actions with GitHub's `$/` self-repository syntax. - Nest the version and Docker reusable workflows through the same syntax. - Remove duplicated Docker orchestration and project-layout defaults. - Name the default package actions for the technology they execute. - Remove the obsolete Ninja codegen secret. - Record the proven self-reference model in the reusable-workflow design and packaged skills. ## Why This draft tests whether a cross-repository reusable workflow can resolve sibling workflows and actions at its own pinned commit. A successful PhotoCleaner run removes the need for extra hub checkouts and synchronized workflow copies. ## Validation - Docker-based actionlint, with scoped ignores for syntax its current parser does not recognize - 686 script unit tests - Registry and spec validation - Repository pin and line-ending gates - Diff-scoped prose checks PhotoCleaner pull request #58 proves the cross-repository behavior in Actions run 32047594855.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR promotes the current develop branch state to main, focusing on making reusable workflows and composite actions self-contained and self-referential (via $/), while keeping established local script entry points for maintainers and hooks.
Changes:
- Moved the canonical prose/repo gate Python implementations under
.github/actions/(action-owned), leavingscripts/prose_lint.pyandscripts/repo_gate.pyas thin local delegators and updating tests/mypy accordingly. - Updated hub reusable workflows to resolve hub-owned actions/defaults and sibling reusable workflows through
$/, removing the extra hub checkout pattern where it was only needed for implementation access. - Updated documentation/snippets plus carried operational changes (notably PowerShell install cleanup logic) to align with the new workflow/action model.
Reviewed changes
Copilot reviewed 28 out of 28 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/tests/test_repo_gate.py | Imports and tests the action-owned repo_gate implementation; adds coverage for $/ self-references. |
| scripts/tests/test_prose_lint.py | Imports and tests the action-owned prose_lint implementation. |
| scripts/repo_gate.py | Becomes a local entry point delegating to .github/actions/repo-gate/repo_gate.py. |
| scripts/README.md | Updates documentation to reflect action-owned gate implementations with thin local wrappers. |
| scripts/prose_lint.py | Becomes a local entry point delegating to .github/actions/prose-gate/prose_lint.py. |
| pyproject.toml | Extends mypy import path to action-owned gate modules and excludes the delegator scripts. |
| host-setup/linux/install-tools.sh | Adds removal of non-apt PowerShell installs before apt installation to avoid conflicts. |
| docs/reusable-workflows.md | Documents $/ self-repo resolution, updated hook/default resolution, and related pilot notes. |
| catalog/snippets/workflows/run-periodic-codegen-pull-request.yml | Removes the legacy NINJA_API_KEY secret mapping from the snippet. |
| .github/workflows/validate-task.yml | Switches prose/repo gates and defaults to $/ resolution; removes hub checkout for those gates/defaults; bumps setup-uv pin. |
| .github/workflows/run-codegen-pull-request-task.yml | Removes legacy NINJA_API_KEY secret and env propagation; updates workflow naming. |
| .github/workflows/publish-docker-readme-task.yml | Switches default hook resolution to $/ and removes hub checkout. |
| .github/workflows/build-release-task.yml | Switches sibling task/default action resolution to $/ and delegates Docker build to the reusable Docker task. |
| .github/workflows/build-docker-task.yml | Switches docker-prepare default to $/ and adds an explicit Docker Hub credential requirement check. |
| .github/actions/repo-gate/repo_gate.py | Adds the canonical repo gate implementation as an action-owned Python module. |
| .github/actions/repo-gate/action.yml | Composite action wrapper to run the repo gate in workflows. |
| .github/actions/pypi-build-default/action.yml | Tightens the default PyPI build action contract to require explicit project paths and validates them. |
| .github/actions/prose-gate/action.yml | Simplifies prose gate action to run the bundled action-owned prose_lint.py implementation. |
| .github/actions/nuget-push-default/action.yml | Tightens the default NuGet push action contract to require an explicit project file and validates it. |
| .github/actions/dotnet-publish-default/action.yml | Tightens the default .NET publish action contract to require an explicit project file and validates it; updates naming/step labels. |
| .github/actionlint.yaml | Replaces job-context ignores with scoped ignores for actionlint’s current lack of $/ syntax support. |
| .gitattributes | Pins LF for the action-owned gate implementations in addition to the local entry points. |
| .claude-plugin/fleet-skills/skills/workflow-ci-contract/SKILL.md | Updates workflow contract documentation to describe $/ usage for hub-owned actions/sibling tasks. |
| .claude-plugin/fleet-skills/skills/operational-vs-release-workflow/references/release-publish-mechanics.md | Updates release mechanics documentation to reflect the new “explicit paths required” defaults model. |
| .claude-plugin/fleet-skills/.source-digest | Updates the fleet skills source digest. |
| .agents/skills/workflow-ci-contract/SKILL.md | Mirrors the same $/ guidance change for the installed skills tree. |
| .agents/skills/operational-vs-release-workflow/references/release-publish-mechanics.md | Mirrors the same release mechanics guidance change for the installed skills tree. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Promotes the current
developbranch tomain.Included changes:
develop.Merge method: merge commit. Keep
develop.