AppSurface Search
Release

Release 0.2.0-preview.7

Coordinated AppSurface release 0.2.0-preview.7, prepared on 2026-08-15 for maintainer review.

Source of truth

View source Edit this page

Last updated

Status

Prepared

This release sidecar is prepared for maintainer review and is not yet tag-backed for AppSurface 0.2.0-preview.7.

Safe To Consume

Scope: Repository-wide. Packages, CLI tooling, examples, and docs-facing behavior ship in one coordinated version.

Freshness: Prepared on 2026-08-15. Treat it as provisional until its verified annotated tag exists.

Record

The matching compact ledger entry lives in CHANGELOG.md.

  • Release artifacts were generated by ./eng/release prepare.
  • Package release note paths are recorded in packages/package-index.yml.
  • Final tagged metadata is derived only from a verified annotated tag.

This is the release note for AppSurface 0.2.0-preview.7 after 0.2.0-preview.6. It stays provisional until the next tag is cut.

What is taking shape

Safe configuration-audit debug expansion

  • ForgeTrust.AppSurface.Config now offers an explicit safe debug report mode for already-known configuration collections. Existing GetReport(string), diagnostics commands, text output, and default JSON remain canonical. Operators can request bounded expanded topology through ConfigAuditReportRequest, app-owned config diagnostics --debug, or the protected Web diagnostics selector ?mode=expand-known-entry-collections; redaction, provenance, per-entry limits, and a fixed report-wide child-node cap remain in force. Custom reporters require no migration for canonical reports and opt into expansion only by implementing the request overload with equivalent safeguards. See the Config and Web diagnostics guides for valid input, recovery, and host authorization/retention guidance.

  • appsurface coverage run now starts exclusive projects before ordinary parallel batches. This prevents resource-sensitive suites from waiting for unrelated work to drain; --schedule longest-first continues to order only the remaining non-exclusive projects.

Coverage maintainer evidence

  • AppSurface maintainers can dispatch the private coverage-efficiency workflow to capture the full coverage lane’s exact step wall time, resolved scheduler evidence, JUnit, diagnostics, logs, coverage reports, and an environment manifest in one retained artifact. This is an investigation-only evidence path: it preserves the existing coverage-efficiency evidence guidance, keeps ordinary pull-request validation unchanged, and requires comparable before/after samples before any #728 time claim or isolation-boundary change.

JavaScript API lifecycle visibility

  • AppSurface Docs JavaScript API harvesting now supports @alpha, @beta, and @deprecated on generated public symbols. Readers see fragment-level lifecycle and deprecation badges in API and search results, while lifecycle searches rank matching generated symbols ahead of aggregate API pages. Invalid combinations remain item-local diagnostics; these tags do not change publication admission or CSS-hook @stability metadata.

  • appsurface coverage run --slow-test-diagnostics now writes a bounded, failure-first test-result summary before slow-test timings. Repository CI publishes it separately from the full JUnit XML and project logs in the test-result-diagnostics artifact, so broad coverage runs retain actionable failure evidence without overflowing GitHub’s step summary. Missing or malformed JUnit evidence remains a diagnostics warning and never replaces the original test result.

Included in the next coordinated version

Release and docs surface

Delegated agent task approval

  • ForgeTrust.AppSurface.Auth now gives local agentic harnesses typed contracts for one human-approved workflow transition: a bound action proposal, confirmation request, opaque one-use receipt, terminal result, and audit description. Start with the package's deterministic local proof, then implement host-owned grant checks, atomic consumption, current authority/state validation, and audit delivery. The package remains a passive vocabulary: it does not provide an agent runtime, policy engine, receipt store, approval inbox, or remote endpoint.

  • Release preparation pull requests now verify the complete base-to-HEAD artifact diff before review, including generated package chooser, readiness, and managed README updates. The read-only verifier preserves the stable-release Docs archive check, reports actionable recovery guidance, and rejects incomplete generated package documentation. PostgreSQL integration tests also tolerate a short host-connection delay after Docker reports a new test container ready, reducing local startup flakiness without masking non-timeout failures.

ForgeTrust.AppSurface.Web host-owned theme selection now lets an ASP.NET Core application select one already-registered semantic pair from scoped, already-authorized request context before the existing root and head Tag Helpers render. The opt-in caches only immutable package-owned documents by pair id, validates every selected id against the sealed neutral registry, and fails closed with ASWEBTHEME003009 for missing prerequisites, incompatible provider composition, invalid selections, or sanitized policy failures. It neither resolves tenants nor authorizes requests, stores mappings, reads browser state, sets cache headers, creates Vary values, partitions host response caches, or promises invalidation. Hosts must keep cache isolation anchored to their tenant security boundary rather than a reusable theme pair id; browser-local preferences remain a separate incompatible v1 adapter.

AppSurface Docs harvest observability

  • ForgeTrust.AppSurface.Docs now gives authorized operators a fine-grained, redacted live view of package-owned Markdown, C#, and JavaScript harvesters. The _harvest surface shows parser phase, source units inspected, documents produced, and a rolling built-in documents-per-second rate without exposing source identities; custom IDocHarvester implementations remain status-only and need no migration or configuration.

Durable Work-discovery navigation

RazorWire brochure starter

The RazorWire brochure starter adds a package-only MVC field-notes site for teams evaluating a small, exportable RazorWire application. It uses only ForgeTrust.RazorWire, makes its demo contact behavior explicit, and exports six CDN-ready pages without a message-delivery endpoint.

Reliable release preparation

  • AppSurface release preparation now accepts an unchanged canonical Unreleased documentation sidecar while still rejecting added, deleted, or renamed next-cycle metadata. Maintainers can prepare the next coordinated release without manufacturing a no-op sidecar edit when its provisional metadata already matches the approved template.

Stable Docs sanitizer package proof

  • ForgeTrust.AppSurface.Docs now ships the reviewed stable AngleSharp, AngleSharp.Css, and HtmlSanitizer dependency graph. Package validation rejects missing, duplicate, ranged, or prerelease declarations and independently restores the packed Docs artifact in a locked consumer, so publish evidence verifies the package a downstream application actually resolves.
  • Release preparation now rebases relative inline and reference Markdown link destinations from append-only entry files to the composed Unreleased and versioned release notes. Source-relative documentation links therefore remain valid in the generated release archive, while external, rooted, query-only, fragment-only, and code-example content remains unchanged.

  • Prepare releases with a dedicated GitHub App token, separating release-bot publishing access from the default workflow token and validating the generated release bundle before publication.

  • Update the centrally managed transitive SSH.NET dependency from 2025.1.0 to 2026.0.0 for the non-packable CLI and PostgreSQL integration tests; published package dependencies and consumer action are unchanged.

Migration watch

PostgreSQL Work discovery

  • ForgeTrust.AppSurface.Durable.PostgreSql now supports PostgreSQL 16+, snapshots its configured Work contracts at activation, and uses only that immutable set for discovery before claims. Drain and stop every pre-0009 worker first, apply 0009_work_contract_discovery.sql, rerun the role recipe, and use the documented ASDUR119 recovery when a custom registration snapshot must be corrected and restarted.