Skip to content

Better zod vo integration - #5

Merged
kieronlanning merged 13 commits into
mainfrom
better-zod-vo-integration
Oct 16, 2026
Merged

kieronlanning merged 13 commits into
mainfrom
better-zod-vo-integration

Conversation

@kieronlanning

Copy link
Copy Markdown
Contributor

No description provided.

Add Purview.Build 0.5.2 to .config/dotnet-tools.json and replace the hand-rolled
dotnet tool install --tool-path .tools/purview-build in the Justfile with
dotnet tool restore, running the pipeline as dotnet purview-build.

The version is now pinned in the tool manifest alongside CSharpier, so it is
restored by the same command as every other tool and needs no bespoke install
step, no --add-source feed argument and no platform-specific executable suffix.
The dead pipeline_feed variable is removed, and the docs describing the old
.tools/purview-build path are updated to match.
Purview.Build 0.5.3 defaults RequiredCompilerFlags to empty. Earlier versions
forced the optimization=release check on and could not be configured off, because
binding an empty JSON array contributes no configuration keys and so never
overwrote the tool's non-empty code default.

These packages have therefore always been validated against that flag. Declaring
it keeps that behaviour rather than silently losing the check on the move to
0.5.3.

Verified with just pipeline-pack-validate: all packages still valid.
Picks up the fix that makes RequiredCompilerFlags configurable: earlier versions
forced the compiler-flag check on because binding an empty JSON array
contributes no configuration keys, so the tool's non-empty code default could
never be overridden.

This repository declares "RequiredCompilerFlags": ["optimization=release"]
explicitly, so the check it has always run under is preserved.

Verified with just pipeline-pack-validate against 0.5.3.
The skills CLI only discovers skills at a root skills/ folder, and .agents/ is
gitignored here, so it is absent from a git clone. Per-package delivery is
unchanged: each project names the subset it ships via PurviewSkillsToPack.
The workflows pin the SDK independently of global.json, so bumping one without the
other leaves CI installing an SDK the repository then refuses to use.
Purview.BuildSdk 1.0.6 removes skill packaging and the build-time .agents/
mirror, so the skills CLI cloning the git repository is the only delivery
route. Skills are authored at skills/<name>/SKILL.md and nothing packs them.

global.json already pinned 1.0.6, which is why pack validation had started
failing: the leftover Sdk/.agents content stopped being flattened to .agents/**
and packed at its literal path instead, as undeclared content.

- delete the PurviewSkillsToPack shim in src/Directory.Build.targets, the
  property from all four packable projects, and the .agents/**/* entries in
  .config/purview-build.json
- delete the Sdk/.agents agents and prompts; the task-shaped prompt becomes
  references/migrating-error-returns.md inside the skill it belongs to, and the
  agent wrapper only routed to purview-results-union-errors and
  purview-results-core
- validate the skills on every test run with Purview.Skills.Testing 1.0.6,
  through a Repository.UnitTests project whose [InheritsTests] attribute is
  load-bearing
- raise the TUnit floor to 1.75.0, which Purview.Skills.Testing depends on and
  central transitive pinning would otherwise pin back down
- rewrite the AGENTS.md, README.md and docs/wiki/Agent-Skills.md sections that
  described the mirror-and-pack model

No release version change: package.json is untouched.

Verified: just test 520/520, just pipeline-pack-validate 8/8 packages valid,
just lint-check clean, and Purview.Results.nupkg no longer carries .agents/**.
…path

Rename the CHANGELOG's `Unreleased` heading to `1.0.2` so a merge to main
cannot publish an unnamed release, and add an `Upgrade notes` section covering
the `[GenerateResult]` namespace move, the new `IResultValue.AcceptSuccess`
member and the `ConfigureAwait(false)` change. Each note names the old form,
the new form and the edit to make, replacing the inline "breaking" markers.

Cover the net10.0 mapping path. AspNetCore.UnitTests is pinned to net11.0
because it declares a union, so the net10.0 branch of
DefaultResultsHttpMapper.ResolveCases could not be executed by the suite at
all - the only coverage was the end-to-end packed-consumer check. Two tests now
assert the equivalence that branch relies on: a non-union error resolves as its
own single case, both when it has a mapping and when it falls through to the
unmapped-failure response. That is what net10.0 always returns, so unwrapping
that stopped treating a non-union error as a single case now fails here instead
of silently breaking net10.0 consumers.

Enable package validation against the 1.0.0.1 baseline so an unintended public
API change fails `dotnet pack`. All four packages validate clean with no
suppressions.

Also document the pre-merge release checklist and correct four stale facts in
the release-flow page: a hardcoded SDK version, the RSG1000-RSG1008 rule range,
a claim that packages ship `.agents/**` content (BuildSdk 1.0.6 removed skill
packaging), and the purview-build.json path, which is under .config/.
@kieronlanning
kieronlanning merged commit 15358bf into main Oct 16, 2026
1 check passed
@kieronlanning
kieronlanning deleted the better-zod-vo-integration branch October 16, 2026 10:33
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.

1 participant