chore(plugins): remove the Smoke gate plugin; MossTank shelf icon 0x06002C41

Owner direction 2026-09-06: the owner visually accepted all three connected
gates from the plugin-shelf/DAT-icon work — the movable plugin shelf
(Slice A), the DAT icon markup (Slice B), and the retained-UI outline-order
fix (761a7519f). With that gate passed, the Smoke plugin's job as the gate
artifact is done, so it is deleted outright rather than merely hidden:
src/AcDream.Plugins.Smoke/ (SmokePlugin.cs, SmokeIconPanel.cs, csproj, lock
files).

Reference sites cleaned:
- AcDream.slnx: removed the project entry.
- src/AcDream.App/AcDream.App.csproj: removed the Smoke ProjectReference and
  the CopySmokePluginToBuildOutput/CopySmokePluginToPublishOutput targets;
  the MossTank equivalents are untouched.
- .github/workflows/headless-portability.yml: the Linux package-contract
  step no longer asserts a Smoke plugin.dll/plugin.json pair — repointed at
  MossTank's, since the step's job was to prove the plugin-copy packaging
  mechanism works end to end, not specifically to prove Smoke.
- tests/AcDream.Core.Tests/Plugins/PluginManifestTests.cs: the inline JSON
  fixture used Smoke's manifest values as arbitrary test data; swapped for
  MossTank's so the parser test still proves the same thing.
- tests/AcDream.App.Tests/Rendering/LinuxPlatformBoundaryTests.cs: the
  shipped-plugin-copy shape test counted 4 GetTargetPath targets (Smoke +
  MossTank, build + publish); now 2 (MossTank only).
- tests/AcDream.App.Tests/Plugins/AppAutomationSurfaceIconInstalledDatTests.cs:
  reworded a doc comment that named the now-deleted SmokeIconPanel.
- README.md, docs/plugin-ui-markup.md: dropped Smoke-specific mentions,
  kept the icon markup example/grammar (now citing MossTank's own real
  IconSurfaceId).
- docs/plans/2026-09-06-plugin-shelf-and-dat-icons.md: recorded the owner's
  2026-09-06 acceptance and the Smoke removal in the review ledger; deleted
  the now-moot "before shipment" Smoke-in-release-zip warning.
- docs/reviews/coverage-ledger.md, docs/reviews/findings-ledger.md: left
  untouched — both are frozen audit snapshots ("complete for baseline
  <hash>"), so their Smoke rows are historical record, not live claims.
- docs/ISSUES.md: left untouched — its Smoke mentions are inside closed
  issue #193's historical write-up of a past investigation.

MossTank plugin shelf icon: MossTankPlugin.cs's PluginPanelDescriptor now
sets IconSurfaceId = 0x06002C41 (IconText = "MT" remains the fallback).
Verified against the installed retail DAT with a new InstalledDat-lane test,
tests/AcDream.App.Tests/UI/MossTankIconInstalledDatTests.cs, mirroring
RetailMarkupIconResolverInstalledDatTests's convention: confirms the id is a
real Portal/HighRes RenderSurface and that RetailMarkupIconResolver.ResolveDid
returns a non-zero texture for it.

Verified: dotnet build AcDream.slnx -c Release green; a stale
plugins/AcDream.Plugins.Smoke output folder from a prior build was deleted
and a fresh build does not recreate it. Full App suite: 7,363 passed / 97
skipped / 36 failed (was 7,362/97/36) — the failing set is unchanged and
none are plugin-related; the one new pass is the MossTank DAT-icon test.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-09-06 16:49:17 +02:00
parent ce05c4fb03
commit ece2104189
17 changed files with 102 additions and 359 deletions

View file

@ -290,22 +290,16 @@ all four places, list icon column aligned with rows.
now throws at `Build` instead of silently ignoring the attribute; stale
`SampleData.cs:64` citations corrected to `:69` (Melee Defense's real
line).
- **Before shipment:** the Smoke plugin's "Icon Smoke" panel
(`src/AcDream.Plugins.Smoke/SmokeIconPanel.cs`) keeps `StartVisible=true`
on purpose, for the owner's connected gate — flip it to
`StartVisible=false` (or drop `AcDream.Plugins.Smoke` from the release
payload entirely) once that gate is done. Checked whether the LAUNCHER
release payload actually ships it: `tools/publish-bin.ps1`'s
`New-PayloadZip` zips App's ENTIRE publish output directory
(`[IO.Compression.ZipFile]::CreateFromDirectory`, no file filtering
beyond checking `$RequiredFiles` exist) into `client-<rid>.zip`, and
`AcDream.App.csproj`'s `CopySmokePluginToPublishOutput` target
(`AfterTargets="Publish"`, gated only on `IsCrossTargetingBuild`, not on
`Configuration`) copies `plugins/AcDream.Plugins.Smoke/` straight into
that same publish directory during `dotnet publish`. **The Smoke plugin
— auto-open panel included — ships in today's release zip.** (The
MossTank plugin has the equivalent `CopyMossTankPluginToPublishOutput`
target and ships the same way; a quick grep shows several of its own
panels also set `StartVisible = true` — worth the same "before shipment"
look, but out of scope for this residual round, which only covers the
Smoke plugin per N9.)
- **Owner acceptance (2026-09-06):** the owner visually accepted all three
connected gates — the plugin shelf (Slice A), the DAT icon markup
(Slice B), and the retained-UI outline-order fix (`761a7519f`, landed
alongside this plan's residual round). With the visual gate passed, the
Smoke plugin's job as the gate artifact is done. Per owner direction,
`src/AcDream.Plugins.Smoke/` (including its "Icon Smoke" proof panel,
`SmokeIconPanel.cs`) was deleted outright rather than merely hidden —
the shipped-in-the-release-zip risk this ledger flagged above is now
moot because the plugin no longer exists to ship. Every build/CI/test/doc
reference to it was removed or repointed at the MossTank plugin in the
same commit; see `chore(plugins): remove the Smoke gate plugin; MossTank
shelf icon 0x06002C41`. MossTank's own panels defaulting to
`StartVisible = true` remains open — same look, still out of scope here.