Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9
74 lines
4.3 KiB
Markdown
74 lines
4.3 KiB
Markdown
---
|
||
title: Independent Feature Boundary
|
||
status: draft
|
||
maturity: hypothesis
|
||
families: [composition, execution]
|
||
scales: [L1, L4]
|
||
admission: research-candidate-only
|
||
---
|
||
|
||
# Independent Feature Boundary
|
||
|
||
Context: a cohesive frontend capability needs a release cadence different from its
|
||
host or neighboring capabilities. Delivery autonomy competes with integration cost,
|
||
shared experience and runtime dependency management.
|
||
|
||
Proposed solution: define the capability's public composition contract and package it
|
||
as a separately releasable unit with an explicit activation mechanism. State supported
|
||
host/API/dependency versions, lifecycle and cleanup behavior, route ownership, and
|
||
which shared state may cross the boundary. Validate compatible old/new combinations
|
||
before changing the binding that activates a release.
|
||
|
||
Publishing bytes, activating them and retiring the old version are separate actions.
|
||
Plan for cached bindings, lazy loads and running sessions that retain old code. Define
|
||
rollback scope, artifact retention and failure behavior; neither an asset rollback nor
|
||
unmount reverses accepted domain operations. A new incompatible contract may require
|
||
a coordinated migration despite separate pipelines.
|
||
|
||
Result: compatible changes can be activated without rebuilding unrelated features,
|
||
but compatibility testing, observability and composition policy add cost. A directory,
|
||
repository, lazy chunk or lifecycle export alone does not provide this independence.
|
||
Shared runtime/startup dependencies can still couple failures. Code in the same browser
|
||
context is not thereby security-isolated. Preserve usable navigation and focus across
|
||
partial loading, replacement and teardown.
|
||
|
||
Evidence: [deployment-boundary review](../reviews/FeatureDeploymentBoundaries.md)
|
||
D04–D09 locates runtime binding, lifecycle exports and separate workflow definitions
|
||
in one example family, with documentary alternatives. CI success, actual deployment
|
||
independence and complete-pattern recurrence are unverified. No canonical identity
|
||
or admitted graph relations; hypothesis only.
|
||
|
||
Alternative: a coordinated application release with [Vertical Feature Slice](VerticalFeatureSlice.md)
|
||
when separate cadence is unnecessary. Proposed relations: may use
|
||
[Failure Boundary](FailureBoundary.md) for a specified fault scope and
|
||
[URL-addressable State](URLAddressableState.md) for shared route contracts. Neither
|
||
separate activation nor [Islands of Interactivity](IslandsOfInteractivity.md) entails
|
||
the other. Boundaries can coincide without becoming the same pattern.
|
||
|
||
Next test: [VC-06](../walkthroughs/VC06-MicrofrontendEstate.md) proposes compatible and
|
||
incompatible feature releases, failed loading and binding rollback across fresh and
|
||
already-open sessions. A bounded native-module experiment now exercises these cases; see the update below.
|
||
|
||
## Executed activation/session evidence — 2026-09-26
|
||
|
||
[Feature release experiment](../reviews/FeatureReleaseExperiment.md) meets 14/14
|
||
expected observations across two browsers in an authored native-module fixture.
|
||
Distinguish retained artifact, per-document binding and evaluated module lifetime:
|
||
a fresh session follows activation/rollback while an existing session retains its
|
||
binding; deleting the old artifact can break its delayed first load. A post-import
|
||
API check runs after evaluation and is not a security boundary. A shared startup
|
||
failure can block otherwise separate features. These are bounded mechanism observations,
|
||
not execution of the source examples or proof of full-pattern production independence.
|
||
|
||
## Activation conflict and reload policy — 2026-09-26
|
||
|
||
[Follow-up tests](../reviews/ActivationConflictsAndReload.md) demonstrate lost updates
|
||
under blind binding replacement and explicit conflict rejection/refetch for disjoint
|
||
intent. A same-feature stale rollback is not automatically reapplied. Atomicity is
|
||
verified only in the single-process fixture, not a distributed deployment service.
|
||
|
||
For unfinished work, distinguish defer, preserve-and-reload and authorized explicit
|
||
discard. Block unsafe progress on storage refusal or unresolved operation outcome;
|
||
read the latest draft after asynchronous checks. Revalidate stored schema in the new
|
||
session because activation can change after preflight. The tested per-tab preservation
|
||
is not native-unload/crash protection or a substitute for retention policy.
|