Commit 69e6856
Spec 022 P0 — release-asset distribution + skill kit (#131)
* feat(packaging): wire P0 release-asset distribution (spec 022)
Interim distribution path while the internal Microsoft NuGet feed is being
plumbed through. Tag-driven GitHub Releases plus per-PR/main artifacts so
reviewers can install any commit's build.
- src/Reactor/Reactor.csproj: enable IsPackable, add packaging metadata,
bundle Reactor.Analyzers.dll + Reactor.Localization.Generator.dll into
analyzers/dotnet/cs/ so consumers get them transitively.
- src/Reactor.Analyzers/Reactor.Analyzers.csproj: IsPackable=false (now
bundled into the framework package, no longer ships standalone).
- src/Reactor.Cli/Reactor.Cli.csproj: replace the bootstrap pattern with
MirrorBinForSelfhost — copies the built mur.exe to <repo>/bin/<arch>/
matching the deployed kit layout. Guarded on concrete Platform so
AnyCPU sln-config translation doesn't pollute with bin/anycpu/.
- Delete src/Reactor.Cli/BOOTSTRAP-SKILL.md (stale, mentioned patch.exe).
- .github/workflows/release.yml: triggers on PR / push-to-main / v* tag /
workflow_dispatch. Packs the framework, publishes mur win-x64 and
win-arm64 self-contained, assembles reactor-skill-kit-<version>.zip
with SKILL.md + skills/ + bin/{x64,arm64}/mur.exe + install script,
uploads as workflow artifacts. Tag pushes also create a GitHub Release.
- Versioning: minver-cli with -t v -p experimental.0 -m 0.1. Bootstrap
with `git tag v0.1.0-experimental.0 && git push --tags`.
- tools/install-skill-kit.ps1: ships inside the kit zip; copies the kit
to ~/.claude/skills/reactor/ and prepends bin/<arch> to user PATH.
- skills/devtools.md: add "Getting mur on your PATH" section covering
selfhost (MirrorBinForSelfhost build target) and deployed (kit installer).
- .gitignore: drop selfhost/ entry — directory no longer regenerated.
- docs/specs/022-packaging-and-distribution.md: status updated to P0 in
flight, §3 rollout phases gain P0 (interim release assets), §4.4 documents
the skill kit layout / PATH strategy / bootstrap pattern retirement, §8
rewritten for MinVer + commit-height versioning, §14 implementation
phases reorganized — most original P1 work absorbed into P0.
Local verification:
dotnet build Reactor.sln -c Release → 0 errors
dotnet test Reactor.Tests → 6836 passed
dotnet test Reactor.SelfTests → 639 passed
dotnet pack Reactor.csproj → produces .nupkg with bundled
analyzer + source-gen DLLs
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore(packaging): make mur framework-dependent (~70 MB/RID smaller)
Sample apps and bench/perf projects stay self-contained via the
Directory.Build.props default — they're sensitive to the WinUI SDK version
and bundling makes it easier to test across versions during dev. The mur
CLI is not WinUI-bound and benefits more from the size win.
- release.yml: --self-contained false on both publish-mur steps.
- install-skill-kit.ps1: detect missing .NET 9 runtime and warn with a
winget install hint rather than letting mur fail opaquely on first run.
- spec 022 §6 updated to document the framework-dependent choice and the
sample-apps / tools split.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* chore(packaging): address PR #131 review feedback
7 comments from copilot-pull-request-reviewer, all valid:
1. release.yml header: stale comments referenced the old `0.0.0-pr.<num>`
/ `0.0.0-main.<sha>` scheme from the daily-patch design. Rewritten to
describe MinVer behavior.
2. spec §14 P0 step 4: same stale version description; updated to MinVer.
3. release.yml triggers:
- PR `paths-ignore` narrowed from `docs/**` + `**.md` to just
`docs/guide/**` so updates to SKILL.md / skills/*.md / docs/specs
produce a fresh kit.
- Removed `paths-ignore` from `push:` entirely so tag pushes always
run regardless of what changed in the tagged commit (paths-ignore
filter applies to all events under push:, no per-trigger override).
4. skills/devtools.md: tightened the selfhost note — the
MirrorBinForSelfhost target is gated on Platform=x64/ARM64, so the
blanket "every build mirrors" claim was wrong. Document the platform
requirement and note that AnyCPU sln-config translations skip it.
5. Reactor.csproj: added an `AssertAnalyzerDllsExist` target with
`BeforeTargets="Pack"` that errors clearly with a build-first hint if
the analyzer / source-generator DLLs are missing. Avoids opaque
pack-time failures for anyone running `dotnet pack src/Reactor`
without a prior `dotnet build Reactor.sln`.
6. install-skill-kit.ps1: added safety guards before the `Remove-Item
-Recurse -Force`. Refuses to install into:
- the extracted kit itself or any parent of it
- drive root, user profile, system root, Program Files,
Desktop/Documents/Downloads
- any path < 12 chars
With a clear error message pointing at the default `-Path`.
7. release.yml `Compress-Archive` comment: clarified that the command
archives the `reactor` folder itself (producing a single top-level
folder in the zip), not "the parent" — the original wording was
misleading.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 35917e1 commit 69e6856
9 files changed
Lines changed: 557 additions & 127 deletions
File tree
- .github/workflows
- docs/specs
- skills
- src
- Reactor.Analyzers
- Reactor.Cli
- Reactor
- tools
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
203 | | - | |
204 | | - | |
205 | 203 | | |
206 | 204 | | |
207 | 205 | | |
| |||
0 commit comments