V0.9.0/finalization - #38
Open
gimlichael wants to merge 22 commits into
Open
Conversation
Reorganized dotnet-remote-testing skill documentation and evaluation definitions for better clarity and maintainability. Updated SKILL.md, FORMS.md, and reference materials to align with current implementation capabilities. Defined comprehensive evaluation suite with test fixtures to validate skill behavior across diverse environments.
Added test harness (test-remote-testing.ps1) to exercise skill functionality across real and simulated Docker environments. Enhanced validate-skill.ps1 with more robust checks for deterministic validation and error recovery. Both scripts integrate with the skill's evaluation framework to catch regressions early.
Significantly improved remote-test.cs implementation with better Docker image discovery logic and multi-SDK runner selection. Added intelligent fallback mechanisms for offline environments and improved error messages for troubleshooting. New MultiSdkRunner and MultiSdkRunnerStore classes provide tighter image selection, reducing redundant SDK layers in test environments. Enhanced caching strategy to minimize network calls and improve deterministic behavior.
Synced README.md with latest dotnet-remote-testing skill enhancements, including improved feature descriptions and updated capability documentation to reflect the expanded testing infrastructure and enhanced Docker environment discovery.
The runner now probes images for required build tooling (git) and conditionally provisions it in a cached preparation layer. Update SKILL.md constraints and guidance to explain that the runner owns this behavior outside the repository, with docker-execution.md documenting the image preparation sequence, caching, and best-effort fallback when tooling cannot be added.
Implement ImageProvisioner to handle missing build tooling in container images. The runner probes the resolved image for git (required by MinVer, Nerdbank.GitVersioning, GitInfo, and SourceLink during dotnet build), and when absent, provisions a cached preparation layer using the appropriate package manager (apt-get, apk, microdnf). Add NuGetPackagesPath helper to ensure SourceLink receives SourceRoot paths with required trailing separator, ErrorLines helper for diagnostic output, FirstNonEmpty string utility, and ImagePreparationTests covering tag derivation, probing, dockerfile generation, and package-manager detection.
Expand the v0.9.0 changelog entry for dotnet-remote-testing to document the build-tooling preparation feature: the runner probes images for git, provisions a cached preparation layer when missing, and reports its status transparently without treating it as a repository problem or reason to author container plumbing.
Implement deterministic skill synchronization script that copies whole skill trees from repository source to three local installs (Claude, global agents, Gemini Antigravity), compares SHA-256 hashes across all four locations, and exits non-zero on any drift. Script supports -Skill parameter to sync a single skill, -VerifyOnly to check without copying, and -Prune to delete install-only files. Excludes generated build output (bin/, obj/) which is regenerated per location. This is the mechanized equivalent of the previous manual sync guidance.
Restructure Local Install Sync section to reference the deterministic sync-skill-install.ps1 script, emphasizing that mechanical hash comparison is the required verification gate rather than manual file copying. Add new Blocking Completion Gates section that identifies required script executions and validators as hard requirements before completion; specifically mark sync-skill-install.ps1 as the final blocking gate since every prior step can still change files. This updates governance to enforce the mechanized sync process as repository policy.
Expand the skill synchronization paragraph to explicitly document the sync-skill-install.ps1 script command and explain that mechanical hash-based verification is required, not just a remembered list of copied files. Clarify that a sync claim must be backed by actual command output in the same response that makes it, and that an earlier run does not satisfy the requirement. This aligns README user-facing documentation with the mechanized sync governance.
Add git metadata staging to the workspace so version stamping, SourceLink, and repository-root detection behave as they do on the host. Introduce --no-git-metadata to opt out when .git dominates staging cost. Improve result reporting to break down per test assembly and target framework, with full failure detail (assertion message, stack trace, test output) so failures are actionable without a rerun. Add --show-log for diagnostics.
Document git metadata staging and per-assembly result reporting enhancements for dotnet-remote-testing.
Greptile SummaryThe PR expands the .NET testing skills and introduces a repository-authoritative script for synchronizing complete skill trees across installed hosts.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Repo[Repository skill tree] --> Sync[sync-skill-install.ps1]
Sync --> Claude[Claude install]
Sync --> Agents[Global agent install]
Sync --> Gemini[Gemini install]
Sync --> Verify[SHA-256 verification]
Request[Remote-test request] --> Resolve[Resolve environment and image]
Resolve --> Prepare[Prepare image and preserve configured user]
Prepare --> Stage[Stage source and standalone Git metadata]
Stage --> Test[Restore, build, and test]
Test --> Results[TRX aggregation and failure reporting]
Reviews (4): Last reviewed commit: "🔀 merge branch 'v0.9.0/finalization' of..." | Re-trigger Greptile |
Separate host-tool root detection from skill installation path validation. This prevents false positive drift reports when a tool host exists but contains no skill installation yet; previously, both states were treated identically as 'not installed'. The refactor also creates missing skill directories on sync and correctly reports them as drift during verify-only mode.
Add ResolveUserAsync to extract the configured USER from a docker image, then restore it in the prepared-image Dockerfile after package installation. This ensures a base image configured to run as a non-root user continues to do so in the prepared image, preserving file ownership and permission-sensitive test behavior. Update docker-execution.md to explain the identity-preserving guarantee and the linked-worktree git-directory handling.
Expands the skill's README entry with additional constraints around immediate action and clarifies that the skill does not ask permission before proceeding.
Restructures instructions with a new 'Start Here' section clarifying that the skill acts immediately without seeking permission. Adds explicit 'Do not' guidance around permission-seeking questions and adds test case 19 to verify this behavior.
Restructures instructions with a new 'Start Here' section clarifying that the skill acts immediately without seeking permission. Adds explicit 'Do not' guidance around permission-seeking questions and adds test case 19 to verify this behavior.
Adds input validation to prevent path traversal attacks via skill name parameter. Ensures skill names follow kebab-case convention (alphanumeric + hyphens only) before constructing file paths in sync operations.
Add explicit assertions for immediate-action behavior and evidence-first contracts. These validators lock down the regression where a bare invocation produced a capability menu instead of running the first action. Also adds assertions for managed-fixture floor version and async-disposal defense-code guidance.
Restructure SKILL.md to lock down immediate-action behavior: a bare invocation must act on inspector evidence instead of presenting a capability menu. Add form fallback documentation and tighten managed-fixture floor version checks. Harden eval scenarios to cover both paired role selections and the regression case. Update reference docs with async-disposal guidance for test hosts and add fixture version assertions in inspection scripts.
Add dotnet-test skill to the Available Skills table and the project scaffold examples. Include both installation and discovery sections to help users locate the skill. Clarifies the skill's role in transitioning WebApplicationFactory-based test projects to Codebelt's entrypoint-owned test host pattern.
…t/agentic into v0.9.0/finalization
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 free
to 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.
This pull request updates the documentation to clarify and strengthen the requirements for synchronizing repo-managed skills across local installs. The changes emphasize that the repository is the source of truth, and introduce a PowerShell script (
scripts/sync-skill-install.ps1) as the authoritative way to sync and verify skill installations. The documentation now treats running this script as a mandatory, blocking completion gate, and describes how to use it, why partial or remembered file lists are insufficient, and what counts as proof of sync.Key documentation improvements:
Skill synchronization process:
pwsh -NoProfile -File ./scripts/sync-skill-install.ps1 -Skill <name>, which syncs the entire skill tree to all local installs and verifies SHA-256 hashes across all locations. The script also supports verification-only and pruning of orphaned files.Blocking completion gate:
Changelog update: