') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Promote Develop to Main by ptr727 · Pull Request #811 · ptr727/ProjectTemplate · GitHub
Skip to content

Promote Develop to Main - #811

Merged
ptr727 merged 7 commits into
mainfrom
develop
Aug 18, 2026
Merged

Promote Develop to Main#811
ptr727 merged 7 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727ptr727 commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Summary

Promote the reviewed changes from develop to main.

Included Changes

  • Add the manifest-driven verbatim tree carry engine and downstream Copilot skill distribution.
  • Refactor Copilot review instructions and generated skills.
  • Route GitHub writes through portable tooling and make agent workflows sandbox-aware.
  • Add ripgrep to the managed host tools.
  • Carry the reviewed CSpell dependency update.

Validation

  • Ruff and mypy passed.
  • All 727 Python tests passed.
  • Audit and GitHub write-guard self-tests passed.
  • Distribution, repository, prose, JSON, and specification gates passed.
  • The carry engine was exercised against PhotoCleaner with matching post-apply tree digests and a clean idempotent check.

This promotion uses a merge commit, keeps develop, and does not publish a release.

ptr727and others added 6 commits August 17, 2026 17:43
## Summary
- add a provider-independent `code-review` skill that routes changed
files to the applicable language, documentation, and workflow skills
- reduce the Copilot instruction file to a review bootstrap while
preserving its repository-specific disproved-claims ledger
- require visible findings and a machine-readable coverage marker
- make `pr_review.py` parse the marker and block unstated coverage with
exit 45
## Root Cause
The Copilot instruction file duplicated provider-independent rules and
embedded API mechanics already implemented by `scripts/pr_review.py`.
Copilot review output also had no stable machine-readable coverage
contract, while an unstated coverage result did not produce a blocking
exit code.
## Validation
- `uvx ruff@latest check .`
- `uvx ruff@latest format --check .`
- `uvx mypy@latest`
- full coverage and self-test sequence from `OPERATIONS.md` (79% total
coverage, 97% for `scripts/pr_review.py`)
- `python3 scripts/build_dist.py --check`
- `python3 scripts/repo_gate.py`
- complete prose, JSON, spec, EditorConfig, shellcheck,
PSScriptAnalyzer, and Markdown gates
- 688 script tests and 45 agent-safety install tests
## Follow-Up
- #797 distributes the review skill to downstream repository head trees
for GitHub-hosted Copilot.
- #798 records live validation and hardening of the structured review
marker.
Closes#793
## Summary
- add Ripgrep to the default Linux and Windows managed host toolsets
- declare the `rg --version` host contract and a distribution-compatible
13.0.0 floor
- add installer and host-gate coverage, platform documentation, and the
`add-host-tool` fleet skill
## Why
Coding agents prefer `rg` and `rg --files`, but a conformant managed
host could lack Ripgrep. This made repository search depend on slower
fallback tools.
The Linux installer uses the distribution package and migrates an
unowned downloaded copy that shadows apt. The Windows registry uses the
documented `BurntSushi.ripgrep.MSVC` winget package.
Issue #800 tracks the cross-platform verification. It stays open until
native WSL and Windows checks complete.
## Verification
- 697 Python tests passed
- spec validation and generated skill distribution checks passed
- ruff, mypy, ShellCheck, PSScriptAnalyzer, markdownlint, CSpell,
actionlint, EditorConfig, and diff-scoped prose checks passed
- Linux list, report, install dry-run, upgrade dry-run, real install,
idempotent repeat, downloaded-copy migration dry-run, and host gate
passed
- Debian installed Ripgrep 14.1.1 at `/usr/bin/rg`, and the host gate
reported 0 issues across 8 tools
- native WSL and Windows installer execution remains for maintainer
verification
## Summary
- make task isolation account for both worktree files and linked Git
metadata
- use a standalone temporary clone when the standard fleet path is not
writable
- keep uv and ruff caches outside restricted checkouts
- distinguish sandbox boundaries from validation findings and document
scoped reruns
- exclude generated Python caches from editorconfig-checker as defense
in depth
## Root Cause
Restricted executors can expose the checkout, home caches, network,
Docker socket, and linked-worktree metadata with different permissions.
The prior workflow considered only the visible worktree path. Local
validation also let one tool create cache files that a later
repository-wide tool inspected.
## Validation
- 697 Python unit tests and the coverage suite
- ruff, mypy, repository gate, spec validation, and prose gates
- generated skill distribution parity
- editorconfig-checker after ruff with no repository-local Python caches
- actionlint, markdownlint, cspell, shellcheck, and PSScriptAnalyzer
- signed commit and explicit-path staging from the temporary standalone
clone
Closes#801
…ons-deps group (#806)
Bumps the actions-deps group with 1 update:
[streetsidesoftware/cspell-action](https://github.com/streetsidesoftware/cspell-action).
Updates `streetsidesoftware/cspell-action` from 8.4.0 to 9.0.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/streetsidesoftware/cspell-action/releases">streetsidesoftware/cspell-action's
releases</a>.</em></p>
<blockquote>
<h2>v9.0.1</h2>
<h2><a
href="https://github.com/streetsidesoftware/cspell-action/compare/v9.0.0...v9.0.1">9.0.1</a>
(2026-08-15)</h2>
<h3>Updates and Bug Fixes</h3>
<ul>
<li>make sure the dictionaries are up to date. (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2733">#2733</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/ed61a9ef501ef10e1857a1a852506743cc79913c">ed61a9e</a>)</li>
</ul>
<h2>v9.0.0</h2>
<h2><a
href="https://github.com/streetsidesoftware/cspell-action/compare/v8.4.0...v9.0.0">9.0.0</a>
(2026-08-15)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Update CSpell version (10.0.0) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2675">#2675</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Update CSpell version (10.0.0) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2675">#2675</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/ad2c8811c41452c03875e40778bfffb824c5b46e">ad2c881</a>)</li>
</ul>
<h3>Updates and Bug Fixes</h3>
<ul>
<li>Update CSpell version (10.0.1) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2711">#2711</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/27dd4ca8ca703e4358a6d6359f28135cc2522eeb">27dd4ca</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2717">#2717</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/7f801dad894c9650fe1448adae011f10488c7319">7f801da</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2729">#2729</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/7a3024662c158b069170d64f5961cf5bfcfba8a5">7a30246</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2676">#2676</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/927b1b484eb0b1a5d60be86898b3a3d37b768b60">927b1b4</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2683">#2683</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/1130633c547e1a54423f755c13eb5ad32ad6cd84">1130633</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2694">#2694</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/ec37533c2a3b3538c99017b53454ff5a5e06abd3">ec37533</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2695">#2695</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/7dcf1206fe16820657ebc51459e6292c3e9efc96">7dcf120</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2696">#2696</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/d552416f18f877a6508e5de33265bd6bbf1f51be">d552416</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2710">#2710</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/f433a6252b1c9302284d950de2a903b9b372e03b">f433a62</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/streetsidesoftware/cspell-action/blob/main/CHANGELOG.md">streetsidesoftware/cspell-action's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<p>All notable changes to this project will be documented in this file.
See <a
href="https://github.com/conventional-changelog/standard-version">standard-version</a>
for commit guidelines.</p>
<h2><a
href="https://github.com/streetsidesoftware/cspell-action/compare/v9.0.0...v9.0.1">9.0.1</a>
(2026-08-15)</h2>
<h3>Updates and Bug Fixes</h3>
<ul>
<li>make sure the dictionaries are up to date. (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2733">#2733</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/ed61a9ef501ef10e1857a1a852506743cc79913c">ed61a9e</a>)</li>
</ul>
<h2><a
href="https://github.com/streetsidesoftware/cspell-action/compare/v8.4.0...v9.0.0">9.0.0</a>
(2026-08-15)</h2>
<h3>⚠ BREAKING CHANGES</h3>
<ul>
<li>Update CSpell version (10.0.0) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2675">#2675</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Update CSpell version (10.0.0) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2675">#2675</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/ad2c8811c41452c03875e40778bfffb824c5b46e">ad2c881</a>)</li>
</ul>
<h3>Updates and Bug Fixes</h3>
<ul>
<li>Update CSpell version (10.0.1) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2711">#2711</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/27dd4ca8ca703e4358a6d6359f28135cc2522eeb">27dd4ca</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2717">#2717</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/7f801dad894c9650fe1448adae011f10488c7319">7f801da</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2729">#2729</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/7a3024662c158b069170d64f5961cf5bfcfba8a5">7a30246</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2676">#2676</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/927b1b484eb0b1a5d60be86898b3a3d37b768b60">927b1b4</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2683">#2683</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/1130633c547e1a54423f755c13eb5ad32ad6cd84">1130633</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2694">#2694</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/ec37533c2a3b3538c99017b53454ff5a5e06abd3">ec37533</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2695">#2695</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/7dcf1206fe16820657ebc51459e6292c3e9efc96">7dcf120</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2696">#2696</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/d552416f18f877a6508e5de33265bd6bbf1f51be">d552416</a>)</li>
<li>Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2710">#2710</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/f433a6252b1c9302284d950de2a903b9b372e03b">f433a62</a>)</li>
</ul>
<h2><a
href="https://github.com/streetsidesoftware/cspell-action/compare/v8.3.0...v8.4.0">8.4.0</a>
(2026-04-05)</h2>
<h3>Features</h3>
<ul>
<li>Update CSpell version (9.8.0) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2674">#2674</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/fdcf3bab72b55ae5d9444f987b8d596960c093cc">fdcf3ba</a>)</li>
</ul>
<h3>Updates and Bug Fixes</h3>
<ul>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2628">#2628</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/356d6ad5a4f6dbd9411e5af7a97b4fb6f8a2401d">356d6ad</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2634">#2634</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/4d2f4fd6311e34b3ae1c4b95bbff649cf8cead85">4d2f4fd</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2642">#2642</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/21dee0c4a9988af996af6aaea4d5a74292acf071">21dee0c</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2657">#2657</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/3f8d667b78425b21b07f87f8e3e94bf3e7e484d6">3f8d667</a>)</li>
<li>Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2661">#2661</a>)
(<a
href="https://github.com/streetsidesoftware/cspell-action/commit/e15595b0eac2f375846ab553ba1deae0868e24a6">e15595b</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/e0668cf020899e887ee8ad4d173c31738a79eae8"><code>e0668cf</code></a>
chore(main): release 9.0.1 (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2734">#2734</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/ed61a9ef501ef10e1857a1a852506743cc79913c"><code>ed61a9e</code></a>
fix: make sure the dictionaries are up to date. (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2733">#2733</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/a670ca8616c79069394da60e3cc71d6edb1f91c2"><code>a670ca8</code></a>
chore(main): release 9.0.0 (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2682">#2682</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/7319e02e30249e4faa815ab45e2f33b79739d3c8"><code>7319e02</code></a>
ci: Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2732">#2732</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/ffbcf8f2d48ef758a78e2a14e7136bdaa995731f"><code>ffbcf8f</code></a>
chore: Set pnpm minimumReleaseAge (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2731">#2731</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/c48ca1c435546d78d9fc08f8197e6c7e98dc509b"><code>c48ca1c</code></a>
chore: Update PNPM (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2664">#2664</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/c223c969c98cabda0e9a4673f90a1415b404d120"><code>c223c96</code></a>
chore(deps-dev): bump tsdown from 0.21.10 to 0.22.14 (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2721">#2721</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/f433a6252b1c9302284d950de2a903b9b372e03b"><code>f433a62</code></a>
fix: Workflow Bot -- Update ALL Dependencies (main) (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2710">#2710</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/7a3024662c158b069170d64f5961cf5bfcfba8a5"><code>7a30246</code></a>
fix: Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2729">#2729</a>)</li>
<li><a
href="https://github.com/streetsidesoftware/cspell-action/commit/7f801dad894c9650fe1448adae011f10488c7319"><code>7f801da</code></a>
fix: Update Dictionaries and Dependencies (<a
href="https://redirect.github.com/streetsidesoftware/cspell-action/issues/2717">#2717</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/streetsidesoftware/cspell-action/compare/de2a73e963e7443969755b648a1008f77033c5b2...e0668cf020899e887ee8ad4d173c31738a79eae8">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=streetsidesoftware/cspell-action&package-manager=github_actions&previous-version=8.4.0&new-version=9.0.1)](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>
## Summary
- add generic `verbatim-tree` declarations to the fleet file manifest
- add a guarded `check` and `apply` carry engine for downstream
worktrees
- integrate tree fidelity with audit, validation, standup, and resync
- carry the generated `.github/skills/` distribution as the first
consumer
## Root Cause
GitHub Copilot reads skills from the pull request head tree. Host-global
skills and hub-only `.agents/skills/` content are unavailable when
Copilot reviews a downstream repository.
## Impact
Downstream repositories can receive fully owned generated trees without
a second hand-authored source. The audit detects missing, stale,
modified, and extra content. The apply path validates repository
identity, worktree isolation, ancestry, unrelated changes, containment,
and symlinks before writing.
## Validation
- 708 Python tests
- `ruff check .`
- `ruff format --check .`
- `mypy`
- `scripts/repo_gate.py`
- full prose gates
- `spec/validate.py`
- `scripts/build_dist.py --check`
- `spec/audit.py --selftest`
- Markdown lint and EditorConfig container gates
- live ProjectTemplate audit and repository configuration check
Closes#797
## Summary
- route fleet GitHub mutations through provider-neutral hub tooling or
authenticated `gh`
- add `pr_review.py comment` for suppressed-finding responses in the PR
conversation
- update the review skill and Copilot runbook, then regenerate the
Claude and Copilot skill distributions
## Why
Codex's GitHub connector can report repository access while its mutation
token receives `403 Resource not accessible by integration`. The
verified `gh` session already has the required access. A common
hub-tooling path gives Codex, Claude, opencode, and terminal users the
same write behavior.
Addresses #805.
## Verification
- 724 Python unit tests under coverage
- `pr_review.py` coverage at 97%
- ruff check and format
- mypy
- audit and write-guard self-tests
- distribution, repository, prose, schema, and JSON gates
- EditorConfig, shellcheck, and PSScriptAnalyzer
CopilotAI lite review requested due to automatic review settings August 18, 2026 15:00

CopilotAI 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

This promotion syncs main with the current develop state, landing the new manifest-driven verbatim-tree carry mechanism, expanded fleet skill distribution, sandbox-aware operational guidance, and the Ripgrep host-tool addition.

Changes:

  • Introduce trees[] in spec/files.json / schema, with validation + audit support for verbatim-tree ownership and pruning.
  • Add Ripgrep as a required managed host tool (spec + Linux/Windows installers + docs + tests).
  • Expand skill packaging/distribution (new skills, generated .github/skills/ output, and updated docs/tests around distribution and review tooling).

Reviewed changes

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

Show a summary per file
FileDescription
STANDUP.mdAdd carry-tool step for manifest-owned trees during baseline standup.
RESYNC.mdAdd carry-tool step for manifest-owned trees during resync.
AGENTS.mdDocument sandbox cache discipline + map code-review and add-host-tool skills.
GOVERNANCE.mdAdd “provider connectors read-only” write-safety rule + sandbox cache guidance.
AUDIT.mdAdd verbatim-tree audit dimension description.
OPERATIONS.mdAdd sandbox-friendly cache env guidance to local verification runbook snippet.
spec/files.schema.jsonRequire trees and define schema for verbatim-tree declarations.
spec/files.jsonAdd trees[] with .github/skills verbatim-tree declaration.
spec/fidelity-model.mdDefine verbatim-tree semantics and explicitly state no normalization.
spec/validate.pyValidate trees[] shape/roots/overlaps + ensure Copilot-referenced skills are carried by trees.
spec/audit.pyAudit verbatim-tree targets by blob SHA; exclude tree-owned paths from hub-only detection.
spec/host-tools.jsonAdd required ripgrep tool contract (probe/pattern/minimum/source/remedy).
docs/host-setup.mdDocument Ripgrep in the host tool contract table and sourcing narrative.
host-setup/linux/README.mdUpdate Linux tool sourcing prose to include Ripgrep from distro packages.
host-setup/linux/install-tools.shAdd Ripgrep to managed tool set, install via apt, and remove shadowing downloaded copies.
host-setup/windows/README.mdDocument Ripgrep winget package choice and rg purpose.
host-setup/windows/install-tools.ps1Add Ripgrep to Windows managed tool list (winget package id).
scripts/README.mdUpdate pr_review.py docs (add comment) and document carry.py; update build_dist.py description.
scripts/build_dist.pyGenerate .github/skills/ alongside the Claude plugin; extend staleness checks to both outputs.
scripts/carry.pyImplement manifest-driven tree carry tool with safety checks, digesting, and pruning.
scripts/tests/test_build_dist.pyAdd coverage for .github/skills/ generation + stale detection cases.
scripts/tests/test_bootstrap.pyAssert Ripgrep uses apt on Linux and the documented winget package on Windows.
scripts/tests/test_host_gate.pyUpdate floor assertions to include Ripgrep and its “target floor” classification.
scripts/tests/test_carry.pyAdd unit tests for carry inventory, compare/apply behavior, pruning, and safety checks.
docs/fleet-map.mdUpdate diagrams/text to include .github/skills/ generated distribution in the pipeline.
.github/workflows/validate-task.ymlBump streetsidesoftware/cspell-action pin to v9.0.1.
.github/actions/validate/action.ymlClarify build_dist.py --check covers all generated skill distributions.
.github/skills/code-review/SKILL.mdAdd a code-review skill (review workflow + coverage marker guidance).
.github/skills/add-host-tool/SKILL.mdAdd “add-host-tool” skill (cross-platform tool addition contract).
.github/skills/agent-conduct/SKILL.mdAdd decision-moment conduct surfacing skill.
.github/skills/audit-a-repo/SKILL.mdAdd audit driver skill summary over AUDIT.md.
.github/skills/carried-instruction-file-guard/SKILL.mdAdd guard skill to prevent destructive overwrites of carried instruction files.
.github/skills/copilot-instructions-keeper/SKILL.mdUpdate keeper skill wording to reflect Copilot bootstrapping and scope.
.github/skills/fleet-conformance-check/SKILL.mdAdd in-repo conformance check skill.
.github/skills/pr-review-conduct/SKILL.mdAdd PR review conduct skill (loop/merge gate and dispositions).
.github/skills/python-codestyle/SKILL.mdAdd Python codestyle skill + restricted-executor cache guidance.
.github/skills/python-codestyle/references/code-style.mdAdd full Python style reference.
.github/skills/python-codestyle/references/profiles.mdAdd Python profile specification details.
.github/skills/python-codestyle/references/testing.mdAdd Python testing conventions reference.
.github/skills/shell-codestyle/SKILL.mdAdd shell codestyle skill (pipefail, self-location, shellcheck).
.github/skills/resync-a-repo/SKILL.mdAdd resync driver skill summary over RESYNC.md.
.github/skills/standup-a-repo/SKILL.mdAdd standup driver skill summary over STANDUP.md.
.github/skills/repo-worktree/SKILL.mdAdd worktree isolation skill with standalone-clone fallback guidance.
.github/skills/skill-lifecycle/SKILL.mdAdd lifecycle skill describing source vs generated distributions and regeneration discipline.
.github/skills/upstream-contribution-workflow/SKILL.mdAdd workflow skill for third-party upstream contributions via fork + two-branch model.
.github/skills/workflow-ci-contract/SKILL.mdAdd workflow CI contract skill summarizing WORKFLOW.md obligations.
.github/skills/workflow-ci-contract/references/d-guarantees.mdAdd condensed D-guarantees reference.
.github/skills/workflow-ci-contract/references/test-methodology.mdAdd workflow test methodology reference.
.github/skills/comment-and-doc-style/references/markdown-links.mdExtend/comment link-style rules and exceptions for carried files.
.github/skills/comment-and-doc-style/references/line-endings.mdAdd detailed line-ending policy reference.
.github/skills/comment-and-doc-style/references/carried-doc-references.mdDefine ban on coordination/provenance references in carried files (with exceptions).
.github/skills/dotnet-codestyle/references/conventions.mdAdd .NET conventions reference.
.github/skills/dotnet-codestyle/references/project-config.mdAdd .NET project configuration reference.
.github/skills/dotnet-codestyle/references/testing.mdAdd .NET testing conventions reference.
.github/skills/git-commit-conventions/references/history-rewrite.mdAdd history-rewrite re-identification rules reference.
.github/skills/operational-vs-release-workflow/references/branch-protection-and-promotion.mdAdd detailed promotion and ruleset mechanics reference.
.github/skills/operational-vs-release-workflow/references/release-publish-mechanics.mdAdd detailed publish mechanics/seam contract reference.
.gitattributesAdd LF pins for carry.py and its tests.
.editorconfig-checker.jsonExclude common Python caches/venv directories from editorconfig-checker scanning.
.agents/skills/README.mdDocument .github/skills/ as a generated distribution and build_dist.py outputs.
.agents/skills/code-review/SKILL.mdAdd source skill for code-review.
.agents/skills/add-host-tool/SKILL.mdAdd source skill for add-host-tool.
.agents/skills/copilot-instructions-keeper/SKILL.mdUpdate source skill wording for Copilot bootstrapping.
.agents/skills/pr-review-conduct/SKILL.mdUpdate source skill wording and mechanics guidance.
.agents/skills/python-codestyle/SKILL.mdAdd restricted-executor cache guidance to source Python skill.
.agents/skills/repo-worktree/SKILL.mdAdd standalone-clone fallback guidance to source worktree skill.
.agents/skills/skill-lifecycle/SKILL.mdUpdate source lifecycle skill to include .github/skills/ distribution.
.claude-plugin/fleet-skills/.source-digestUpdate generated digest stamp for new distributions.
.claude-plugin/fleet-skills/.claude-plugin/plugin.jsonAdd new skills to generated plugin manifest.
.claude-plugin/fleet-skills/skills/code-review/SKILL.mdGenerated plugin copy of code-review skill.
.claude-plugin/fleet-skills/skills/add-host-tool/SKILL.mdGenerated plugin copy of add-host-tool skill.
.claude-plugin/fleet-skills/skills/copilot-instructions-keeper/SKILL.mdGenerated plugin copy of Copilot instructions keeper skill.
.claude-plugin/fleet-skills/skills/pr-review-conduct/SKILL.mdGenerated plugin copy of PR review conduct skill.
.claude-plugin/fleet-skills/skills/python-codestyle/SKILL.mdGenerated plugin copy of Python codestyle skill.
.claude-plugin/fleet-skills/skills/repo-worktree/SKILL.mdGenerated plugin copy of repo-worktree skill.
.claude-plugin/fleet-skills/skills/skill-lifecycle/SKILL.mdGenerated plugin copy of skill-lifecycle skill.

💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment threadscripts/carry.py
## Summary
- Allow an isolated standalone feature clone to serve as a carry target.
- Retain the repository-root, origin, branch, ancestry, registration,
and unrelated-change guards.
- Add coverage that exercises a standalone clone against the target
verifier.
## Validation
- Ruff check and format check passed across the repository.
- mypy passed.
- All 19 carry-engine tests passed.
This addresses the actionable review finding on promotion PR #811.
CopilotAI review requested due to automatic review settings August 18, 2026 15:26

CopilotAI 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 83 out of 83 changed files in this pull request and generated no new comments.

@ptr727
ptr727 merged commit ce9b9a5 into mainAug 18, 2026
8 checks passed
Sign up for freeto 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

@ptr727