frontend-patterns/research/reviews/FeatureReleaseExperiment.md
tegwick e34ec3fafe Exercise feature activation rollback and old-session artifact retention
Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9
2026-09-26 23:14:34 +02:00

4.2 KiB

Feature release lifecycle experiment — 2026-09-26

Status: executed synthetic browser mechanism, editorial interpretation by Codex. WP-0003 T01, following source/deployment contrast. The fixture and receipt record seven cases in two browsers, 14/14 expected observations. Seventeen hypotheses remain unchanged in maturity; no production deployment, operational team independence or recurrence is established. No model calls were needed.

Evidence and provenance

SRC-0036 is our native-module host and versioned feature fixtures, executed with Playwright 1.63.0, Chromium 151.0.7922.34 and Firefox 155.0. Source/lock hashes are in the result receipt; browser hashes and package integrity are in provenance.json. Every response uses no-store, and the loopback server serves no external resources.

SRC-0037: MDN import(), Module namespace object, accessed 2026-09-26, living revision unknown. Its description of reuse after successful module loading provides context for distinguishing module identity from HTTP caching. We do not generalize our document-map snapshot policy to all loaders or dynamic import-map update strategies.

Observations, not deployment guarantees

Evidence Result Pattern implication
X01 Publishing R2 alone leaves new pages on R1 Artifact availability and activation are separate
X02 Fresh page loads R2; old loaded/lazy pages load or retain R1; A1 unchanged Compatible feature activation can coexist with an unchanged host and neighbor in this fixture; old-session binding matters even before first feature use
X03 R3 is evaluated but mounting is rejected for host API mismatch; A1 works Post-import contract checks can prevent incompatible mounting, but cannot undo module side effects or provide security isolation
X04 Missing Reports module yields local error while Account navigation works Host-level load handling is distinct from a component rendering boundary
X05 Binding rollback changes a fresh page to R1 while an open page remains R2; reload selects R1 Rollback needs a declared session scope; binding update alone is not hot replacement
X06 Removing R1 breaks the old lazy session but not one that already loaded it Artifact retention must account for delayed first loads from supported older documents
X07 Shared startup import failure keeps both actions disabled, before any feature load Separate artifacts do not eliminate dependencies on startup-critical shared resources

X03, X04, X06 and X07 include deliberately observed failures. A “pass” means the asserted behavior occurred, not that the experience is acceptable. The version gate is our fixture code, not a universal browser, single-spa or federation guarantee. The R3 declaration is intentionally simple; real API compatibility is not reducible to equality of one number. Test outcomes do not prove compatibility with arbitrary host/backend versions or that deployment changes are applied atomically.

Candidate and walkthrough correction

Independent Feature Boundary should name three lifetimes separately: retained artifact, binding chosen for a session, and module instance already evaluated in that session. Retiring an artifact based only on the current global binding can invalidate an older page's later load.

VC-06 now has executable support for its load/activation/rollback distinction in this small model. Its accessibility, real-system compatibility, authoritative writes and independent assessment remain open. The earlier pinned examples were not run; their source observations remain separate. Keep the pattern a hypothesis and the walkthrough provisional.

Next under WP-0003 T01: declare an old-session support/retention policy, then test activation-map concurrency and safe reload with unfinished work before making a production recommendation. Navigation/history/cache evidence remains pending. Avoid turning this model into a release platform merely to close the research question.