Release 0.2.0-preview.8
Coordinated AppSurface release 0.2.0-preview.8, prepared on 2026-08-22 for maintainer review.
Source of truth
This is the release note for AppSurface 0.2.0-preview.8 after 0.2.0-preview.7. It stays provisional until the next tag is cut.
What is taking shape
- ForgeTrust.AppSurface.Docs adds the fixed
AppSurfaceLightpreset. Hosts can select a complete light Docs shell and, when needed, override only the existing validated accent and link roles. The preset emits its resolved token graph andcolor-scheme: lightbefore package stylesheets, freezes that payload into static exports, and does not enable visitor-controlled appearance storage or scripts. The same guide explains the light-preset recipe and when a shared theme pair or full layout override is the better fit.
Included in the next coordinated version
Release and docs surface
JavaScript singleton class contracts
- RazorWire now documents
sectionCopyManageras a singleton-first@configwith a declaration-onlySectionCopyManagercontract, diagnostic typedef, focused source-marker tests, and recovery guidance. See the Runtime Contract Pipeline and the AppSurface Docs JavaScript class contract recipe.
Independent Docs products in one host
- AppSurface Docs now lets a host register and map several independent Docs products, such as public documentation at
/docsand contributor documentation at/internal/docs. Each product owns its source boundary, route family, identity, theme, search index, harvest state, and version catalog; hosts retain ownership of authentication, authorization policy, and middleware. Map every returned product handle, apply the host policy where needed, and finalize the set once. The executable public/internal ConsumerFixture demonstrates the complete public-read, internal-challenge, authenticated-contributor proof while keeping its header authentication mechanism explicitly test-only.
Coverage cleanup
appsurface coverage cleanlets maintainers preview and then remove private coverage artifacts left by test runs. Its default mode cleans only files in an AppSurface-owned output directory;--all --root .provides a separate, explicit sweep of exactTestResultsdirectories in one worktree. Both modes require--applyto delete, the broad sweep keeps its scan root, and neither mode follows linked paths, so unrelated build outputs and link targets remain outside the command's reach.
DevAuth persona recovery targets
ForgeTrust.AppSurface.Auth.AspNetCore.DevAuthnow lets a seeded local persona declare an optional safe-rootedLandingUrl. Selection honors an explicit hostreturnUrlfirst, then the selected persona landing URL, then the existing control-page or marker fallback. Invalid configured landing URLs fail registration withASDEV007; they never silently redirect to/. Clear-persona behavior, cookies, endpoints, status JSON, and production-auth boundaries are unchanged.
Packaged coverage semantic proof
- Package maintainers can now use
verify-packagesto prove that the packed CLI selected the intendedSmoke.Testscoverage report, observed a coveredSmoke.Calculator.Signbranch before merge, and retained those facts after merge. The proof accepts only regular manifests up to 16 KiB and emits one bounded, public-safecoverage-cli-consumer-proof.evidence.jsoncompanion next to its private diagnostic report, while the CLI coverage guide distinguishes this packaged semantic guarantee from local readiness and the MSBuild compatibility path.
Package and docs surface
- AppSurface now includes EvidenceHost: contract-first, explicit-diff policy planning for CI evidence. The public
appsurface evidencecommand family creates a safe starter, diagnoses consumer prerequisites, explains selected obligations before execution, emits canonical plan/manifest/summary artifacts, and verifies their digest binding. Explicitno-evidenceprofiles can close only reviewed low-risk rules; skipped or filtered tests, unavailable capabilities, failed producers, and incomplete profiles never become a gate-eligible claim. ForgeTrust.AppSurface.Evidence.Aspireprovides a separate explicit lifecycle for consumer-owned Aspire readiness and E2E producers. It requires direct registrations, enforces deadlines and cleanup, keeps test composition out of normal application startup, and labels accepted v1 release envelopes as validated but not independently attested.
Conflict-free release-note composition
appsurface release composelets any consumer project keep concurrent change descriptions in isolated, filename-sorted Markdown entries and preview or explicitly write one deterministic release note. It validates template-owned sections and bounded paths, never overwrites the template or source entries, and leaves changelog rollover, tags, package publication, and AppSurface's repository-owned./eng/releasecockpit outside the public command.