AppSurface Search
Release

Release 0.2.0-preview.14

Coordinated AppSurface release 0.2.0-preview.14, prepared on 2026-10-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.14.

Safe To Consume

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

Freshness: Prepared on 2026-10-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.14 after 0.2.0-preview.13. It stays provisional until the next tag is cut.

What is taking shape

Included in the next coordinated version

Release and docs surface

Structural coverage classifier pilot

  • The CLI coverage test suite now contains an isolated, fail-closed Roslyn structural-line classifier pilot. It records audit evidence for one narrow auto-property shape while proving that the existing coverage calculation, CLI outcomes, and report artifacts are unchanged. A real-source follow-up found that the motivating Skoolit accessors are expression-bodied calls and all three fall outside the pilot's auto-property rule. The classifier does not run in appsurface coverage gate, add a policy option, or change coverage obligations; any production use requires a separate decision backed by matching-build evidence.

Diagnose a connected Durable runtime

  • The CLI runtime doctor gives adopters a bounded, non-mutating store/runtime diagnosis with canonical problem, cause, fix, documentation and next-action fields in text or version-one JSON. Optional worker observation uses the caller's actual configured stale threshold; store-only mode makes no heartbeat claim.
  • The Durable contracts catalog adds immutable shared diagnostic descriptors and append-only codes while preserving existing DurableProblem and caller correlation behavior. Doctor checks migration 0011 retention structure and requires a restricted runtime credential and matching coordinated CLI/provider dependencies. The first supporting published version is determined by the release evidence, not this source candidate.
  • Clean output means requested store/runtime checks passed at the captured observation. Complete deployment preflight and the application composition verifier retain their separate responsibilities. Reinstalling the prior compatible CLI needs no database/epoch rollback.

Published CLI smoke verification

  • Published CLI packages now reach the same payload and PostgreSQL proof checks as library packages after a successful tool installation. The release verifier reads the archive retained by the SDK's isolated tool store, preserves its signed bytes, and rejects missing, changed, or linked archives before accepting public proof. Existing immutable release tags require reviewed recovery or a new coordinated release to use the corrected verifier.

Retargetable published documentation aliases

ForgeTrust.AppSurface.Docs can expose maintainer-configured names such as stable, preview, or v1 for verified exact documentation releases. Alias pages keep alias-local navigation and search while publishing canonical metadata for the exact target; the existing recommended release and immutable exact-version routes remain independent. The package reference documents configuration, named-host middleware order, cache and archive ownership, numeric diagnostics, and rollout/rollback. The consumer walkthrough uses the pinned stable/prerelease fixture and separates verified archive ingestion from alias acceptance evidence.

AppSurface Docs keeps authored related links first and can add up to three explainable, metadata-backed next reads. Authors can disable suggestions independently of related_pages, and search-index clients receive complete rows with projected paths, source, and reason codes. Existing exact release archives remain unchanged until intentionally re-exported. Start with the three-page authoring walkthrough and the policy and JSON reference.

New exports also preserve working publish-root HTML URLs and bind logical page identities to their actual ordinary HTML files for archive alias recovery. Upgrade Docs and the export CLI together and intentionally re-export to adopt the frozen artifact route contract; historical v1 archives keep their recorded behavior.

  • Aspire testing hooks let tests supply activation configuration and services before profile constructors run, then configure the same Aspire graph before its components are composed. Use CreateConfiguredAsync with AppSurfaceAspireTestingOptions for per-call scenarios; existing CreateAsync calls keep their current behavior. Hooks are synchronous, activation and Aspire providers stay separate, and the factory returns a composed builder without building or starting the application.

Prepare an application handoff under live PostgreSQL Durable authority — issue #869

The PostgreSQL provider adds a scoped IDurableWorkHandoffFence for a running Work executor to revalidate current native invocation authority and write application-owned authorization/ledger state in the caller's exact ReadCommitted transaction. Preparation remains provisional until the caller commits; callback denial removes callback writes, and the caller releases the transaction and connection before provider I/O.

Use the handoff contract, package entry point, and canonical Durable diagnostics catalog for eligibility, lock order, cleanup, host timeout ownership, cause-to-action refusal guidance, and uncertain-commit recovery. The contract records the repository-pinned Npgsql 10.0.3 SaveAsync behavior: the SAVEPOINT is queued with the next command, so method completion alone is not server acknowledgement. See the #869 test plan for the required 44 scenario IDs and supplemental PostgreSQL/package proof. Check the progress record for current receipts and strict gate outcomes; this unreleased note does not represent a passing proof, published package, or downstream adoption.

Migration watch

Durable execution policies — issue #765

Durable Work can retain legacy completion-relative backoff or opt into an exclusive absolute deadline and deterministic acceptance-relative retry slots. PostgreSQL makes each effect admission decision against the authoritative cutoff; cancellation of an already-running executor remains cooperative. Schema 12 raises the compatible reader/writer floor, so stop new submissions and drain pre-schema-12 hosts and activators before applying the migration. Deploy compatible packages to every host before accepting the new Work version. For rollback, stop new acceptance and keep schema-12-capable packages available to drain or reconcile accepted Work; do not restore a pre-floor binary. Follow the canonical execution-policy guide and schema-12 migration and rollback checklist.

Select one typed Config wrapper from a Domain package

A .NET 10 AppSurface host can select one compatible IConfig wrapper from a Domain assembly outside normal module discovery with AddAppSurfaceConfig<TConfig>(). The call keeps lazy singleton initialization and adds the selected wrapper's attributed declaration for audit; it does not scan assemblies or compose providers for the host. See the three-step Domain example, logical-key and registration reference, and the packed Domain consumer proof.

Before adopting this pre-1.0 API, upgrade the coordinated AppSurface package set and rebuild external providers and wrappers together. Keep the existing manual registration path until the candidate consumer and staged-host proofs are accepted. For rollback, restore that path together with the previously supported coordinated package set. Registration does not migrate persisted keys or secret identities; follow the compatibility and rollback guide.