frontend-patterns/research/evolution/profiles.json

703 lines
27 KiB
JSON
Raw Normal View History

{
"schema_version": 1,
"assessed_at": "2026-09-27",
"profiles": [
{
"id": "CAND-0001",
"path": "research/candidates/ConflictCopy.md",
"title": "Conflict Copy",
"sha256": "24f250d89ac17d96df287d67c275b5320b48c8356b57ae126a6c941e92a1c6e9",
"status": "draft",
"maturity": "hypothesis",
"decision": "Preserve competing versions instead of silently losing one.",
"evidence": [
{
"kind": "documentary",
"family": "Joplin",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Documented detected-note conflict copy."
},
{
"kind": "documentary",
"family": "Obsidian",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Optional conflict-file mode, not default behavior."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Authorized retention and export are separate decisions.",
"Complete contract recurrence and fault-tested deployed behavior remain unverified."
],
"superseded_by": []
},
{
"id": "CAND-0002",
"path": "research/candidates/LocalCommitBoundary.md",
"title": "Local Commit Boundary",
"sha256": "22165fc2979e8f4d8859b34417cb71e7b5ec7a8440ad045aee2383d499648013",
"status": "draft",
"maturity": "hypothesis",
"decision": "Define when a local change is durably accepted.",
"evidence": [
{
"kind": "documentary",
"family": "Ink & Switch",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Local-first motivation."
},
{
"kind": "documentary",
"family": "Joplin",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Local storage and synchronization architecture."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"No executed storage crash or backup test.",
"Local acceptance is not off-device recovery."
],
"superseded_by": []
},
{
"id": "CAND-0003",
"path": "research/candidates/PendingSynchronization.md",
"title": "Pending Synchronization",
"sha256": "9c5cb0f4ea4e6f4406ce55513ca2c252172427a49d8280ae1a9c713f1d11b070",
"status": "draft",
"maturity": "hypothesis",
"decision": "Keep accepted local intent visible until synchronization resolves.",
"evidence": [
{
"kind": "documentary",
"family": "Joplin",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Per-item synchronization metadata."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Atomic supersession and retry contract proposed, not storage-tested."
],
"superseded_by": []
},
{
"id": "CAND-0004",
"path": "research/candidates/ExplicitReconciliation.md",
"title": "Explicit Reconciliation",
"sha256": "d48a40aab7417b8b8f8406094c84b9e90d0ca8c2f94d6e616d0b80499dc04959",
"status": "draft",
"maturity": "hypothesis",
"decision": "Resolve divergent content while retaining provenance.",
"evidence": [
{
"kind": "documentary",
"family": "Joplin",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Documented manual conflict resolution."
},
{
"kind": "documentary",
"family": "Obsidian",
"ref": "research/reviews/LocalFirstEvidenceExpansion.md",
"scope": "Conflict comparison workflow."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Atomic resolution/provenance UI not executed.",
"Overlap with Conflict Copy remains an open merge question."
],
"superseded_by": []
},
{
"id": "CAND-0005",
"path": "research/candidates/LocalDraftState.md",
"title": "Local Draft State",
"sha256": "8e5f427975c76083c80b895bc68b7130b249be5129c2854f3df11cc374b4b240",
"status": "draft",
"maturity": "hypothesis",
"decision": "Separate unfinished intent from refreshed authoritative data.",
"evidence": [
{
"kind": "documentary",
"family": "Kubernetes / GitLab / React Router",
"ref": "research/reviews/TransactionalEvidenceExpansion.md",
"scope": "Rejection and pending-input mechanisms motivate recovery."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/FrontendRecoveryImplementations.md",
"scope": "Pinned composer draft storage; partial lifecycle."
},
{
"kind": "static-code",
"family": "Element / Matrix",
"ref": "research/reviews/FrontendRecoveryImplementations.md",
"scope": "Pinned composer draft restoration; partial lifecycle."
},
{
"kind": "runtime",
"family": "authored release fixture",
"ref": "research/reviews/ActivationConflictsAndReload.md",
"scope": "Same-tab preservation/refusal/discard and post-navigation schema check."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"No native-unload, crash, multiple-tab or access-revocation guarantee.",
"Full base/draft/current merge contract is not verified in deployed frontends."
],
"superseded_by": []
},
{
"id": "CAND-0006",
"path": "research/candidates/VersionCheckedMutation.md",
"title": "Version-Checked Mutation",
"sha256": "6a3335ae2fa1de51c95dcbfa8d766d988a3f7a9604fb608b8a0bcf9a10b64198",
"status": "draft",
"maturity": "hypothesis",
"decision": "Reject an operation whose observed base is stale.",
"evidence": [
{
"kind": "documentary",
"family": "Kubernetes",
"ref": "research/reviews/TransactionalEvidenceExpansion.md",
"scope": "Conditional PUT; precise version mechanism."
},
{
"kind": "documentary",
"family": "GitLab",
"ref": "research/reviews/TransactionalEvidenceExpansion.md",
"scope": "Optional last_commit_id; different failure surface."
},
{
"kind": "runtime",
"family": "authored release fixture",
"ref": "research/reviews/ActivationConflictsAndReload.md",
"scope": "Related conditional activation-map mechanism in one process, not the full frontend pattern."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Distributed atomicity and complete frontend recurrence remain unverified.",
"Refetch does not authorize overwriting conflicting intent."
],
"superseded_by": []
},
{
"id": "CAND-0007",
"path": "research/candidates/MutationOutcomeTracking.md",
"title": "Mutation Outcome Tracking",
"sha256": "e04cb835fd054bfaf88616375bd0262deffb2801ea04105be92543bfa9582179",
"status": "draft",
"maturity": "hypothesis",
"decision": "Retain operation identity when transport outcome is uncertain.",
"evidence": [
{
"kind": "documentary",
"family": "Stripe",
"ref": "research/reviews/TransactionalEvidenceExpansion.md",
"scope": "Idempotency mechanism."
},
{
"kind": "documentary",
"family": "React Router",
"ref": "research/reviews/TransactionalEvidenceExpansion.md",
"scope": "Cancellation does not imply server rollback."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/FrontendRecoveryImplementations.md",
"scope": "Pinned send/recovery state."
},
{
"kind": "static-code",
"family": "Element / Matrix",
"ref": "research/reviews/FrontendRecoveryImplementations.md",
"scope": "Pinned client and SDK transaction/echo paths."
},
{
"kind": "runtime",
"family": "Element / Matrix",
"ref": "research/reviews/MatrixRecoveryExperiment.md",
"scope": "Real SDK with synthetic transport: lost acknowledgement, identity reuse and authoritative echo."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"No production server deduplication or complete retention-window guarantee.",
"Cancelling local UI is not remote compensation."
],
"superseded_by": []
},
{
"id": "CAND-0008",
"path": "research/candidates/InvalidateAndReproject.md",
"title": "Invalidate and Reproject",
"sha256": "47c405adbc3caac2383768ed3d30b6a2e7ff1f44f4954c340049e78944227844",
"status": "draft",
"maturity": "hypothesis",
"decision": "Refresh a projection after mutation without equating acceptance and visibility.",
"evidence": [
{
"kind": "documentary",
"family": "React Router",
"ref": "research/reviews/TransactionalEvidenceExpansion.md",
"scope": "Concurrency and pending-state guidance."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Read-your-write and acceptance/refresh distinction still proposed.",
"No independent deployed full-contract observation."
],
"superseded_by": []
},
{
"id": "CAND-0009",
"path": "research/candidates/URLAddressableState.md",
"title": "URL-addressable State",
"sha256": "07d524c3c0dd080bd42ff5dd79a36e6ecd2a8654f07ece880b483477f7ca4497",
"status": "draft",
"maturity": "hypothesis",
"decision": "Make a navigable state reconstructible from its URL.",
"evidence": [
{
"kind": "documentary",
"family": "htmx",
"ref": "research/reviews/NavigationRenderingEvidence.md",
"scope": "History behavior and history-cache misses."
},
{
"kind": "documentary",
"family": "Web platform",
"ref": "research/reviews/NavigationRenderingEvidence.md",
"scope": "pushState changes history, not server dereferenceability."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationHistoryExperiment.md",
"scope": "NH01–NH06: native/enhanced routes, history hit/miss, actual browser cache ordering and missing-Vary negative control; explicit Node validator checks separate."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationOwnershipExperiment.md",
"scope": "NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/ZulipNavigationSourceStudy.md",
"scope": "ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-27",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": "2026-09-27"
},
"gaps": [
"Independent application recurrence and human/AT validation remain unverified.",
"Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open.",
"Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership."
],
"superseded_by": []
},
{
"id": "CAND-0010",
"path": "research/candidates/ProgressiveEnhancement.md",
"title": "Progressive Enhancement",
"sha256": "1dc3885ef896b9a7cb61af11fa8893484eb1e13454207326abc7250d5ca4382b",
"status": "draft",
"maturity": "hypothesis",
"decision": "Keep essential actions usable when enhancement is unavailable.",
"evidence": [
{
"kind": "documentary",
"family": "htmx",
"ref": "research/reviews/NavigationRenderingEvidence.md",
"scope": "Boosted links and forms."
},
{
"kind": "documentary",
"family": "SvelteKit",
"ref": "research/reviews/NavigationRenderingEvidence.md",
"scope": "Form actions and rendering/page options."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationHistoryExperiment.md",
"scope": "NH01–NH06: native/enhanced routes, history hit/miss, actual browser cache ordering and missing-Vary negative control; explicit Node validator checks separate."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationFocusExperiment.md",
"scope": "NF01–NF06: Tab/Enter navigation, raw versus authored focus/status policy, held-response ownership and background update; DOM evidence only, not AT speech."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationOwnershipExperiment.md",
"scope": "NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/ZulipNavigationSourceStudy.md",
"scope": "ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-27",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": "2026-09-27"
},
"gaps": [
"Independent application recurrence and human/AT validation remain unverified.",
"Pending history disclosure, multiple history misses, redirects, nonzero swap delays, bfcache, lifecycle cleanup, interrupted/late enhancement and offline availability remain open.",
"Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership."
],
"superseded_by": []
},
{
"id": "CAND-0011",
"path": "research/candidates/PresentationModel.md",
"title": "Presentation Model",
"sha256": "5ff03b5799b0a9e5ec6b54b21034720d89dbc8ffde7c4cdcf71616cdf57baf49",
"status": "draft",
"maturity": "hypothesis",
"decision": "Separate presentation decisions from view mechanisms.",
"evidence": [
{
"kind": "documentary",
"family": "Fowler",
"ref": "research/reviews/PatternBreadthExpansion.md",
"scope": "Named pattern and illustrative model/view discussion."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"No executed model/view integration or independently reviewed full-contract use."
],
"superseded_by": []
},
{
"id": "CAND-0012",
"path": "research/candidates/DerivedState.md",
"title": "Derived State",
"sha256": "9f29b9f1296a52b83f08dfd97437c4dc16e4949ddac1ff3b3830e3fc9831bd4f",
"status": "draft",
"maturity": "hypothesis",
"decision": "Compute a result from explicit authoritative inputs.",
"evidence": [
{
"kind": "documentary",
"family": "Redux",
"ref": "research/reviews/PatternBreadthExpansion.md",
"scope": "Selector guidance, not a requirement for a global store."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Snapshot coherence and changed-locale cache test still planned."
],
"superseded_by": []
},
{
"id": "CAND-0013",
"path": "research/candidates/VerticalFeatureSlice.md",
"title": "Vertical Feature Slice",
"sha256": "d6b332b9c104a079bd4b72512b8ddd1a889199b2e2e531753c411688053e647a",
"status": "draft",
"maturity": "hypothesis",
"decision": "Group a capability across UI, state and behavior with explicit interfaces.",
"evidence": [
{
"kind": "documentary",
"family": "Feature-Sliced Design",
"ref": "research/reviews/PatternBreadthExpansion.md",
"scope": "Layer/slice and public-interface guidance."
},
{
"kind": "static-code",
"family": "Feature-Sliced Design",
"ref": "research/reviews/FeatureDeploymentBoundaries.md",
"scope": "Pinned todo-app interfaces coexist with one application build."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Build/import enforcement not executed.",
"Feature organization does not establish independent activation."
],
"superseded_by": []
},
{
"id": "CAND-0014",
"path": "research/candidates/IslandsOfInteractivity.md",
"title": "Islands of Interactivity",
"sha256": "821a1497da10c02ae11fa6f56cb8e205a4f32c40b39770ab8ca3f907561a260a",
"status": "draft",
"maturity": "hypothesis",
"decision": "Activate selected interactive regions within a document.",
"evidence": [
{
"kind": "documentary",
"family": "Astro",
"ref": "research/reviews/PatternBreadthExpansion.md",
"scope": "Client-island mechanism and execution placement."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"No executed island fixture, performance comparison or complete recurrence study."
],
"superseded_by": []
},
{
"id": "CAND-0015",
"path": "research/candidates/FailureBoundary.md",
"title": "Failure Boundary",
"sha256": "a6e76ed17a92baade683d5df96fa8ecd066c593661e6a14983a86d046e7d9c2c",
"status": "draft",
"maturity": "hypothesis",
"decision": "Contain specified failure classes while preserving useful neighboring work.",
"evidence": [
{
"kind": "documentary",
"family": "React",
"ref": "research/reviews/PatternBreadthExpansion.md",
"scope": "Error boundary scope and exclusions."
},
{
"kind": "runtime",
"family": "React",
"ref": "research/reviews/BoundaryRecoveryExperiment.md",
"scope": "Real package in authored host: render/event/request distinction and fallback escalation."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"Synthetic host, not full application recurrence.",
"Boundary cannot imply containment for all asynchronous failures."
],
"superseded_by": []
},
{
"id": "CAND-0016",
"path": "research/candidates/FocusReturn.md",
"title": "Focus Return",
"sha256": "9149c2f563eafcfec983a9285949225840d97804568309bd16bbb1eb6b3dde77",
"status": "draft",
"maturity": "hypothesis",
"decision": "Restore meaningful focus after a temporary interaction ends.",
"evidence": [
{
"kind": "documentary",
"family": "WAI-ARIA APG",
"ref": "research/reviews/PatternBreadthExpansion.md",
"scope": "Dialog focus obligations."
},
{
"kind": "static-code",
"family": "Radix",
"ref": "research/reviews/NestedDismissalIsolation.md",
"scope": "Pinned layer/listener ownership implementation."
},
{
"kind": "runtime",
"family": "Radix",
"ref": "research/reviews/NestedOwnershipRouting.md",
"scope": "Authored fixture: raw 20/24 versus routed 24/24; browser/build limits retained."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationFocusExperiment.md",
"scope": "NF01–NF06: Tab/Enter navigation, raw versus authored focus/status policy, held-response ownership and background update; DOM evidence only, not AT speech."
},
{
"kind": "runtime",
"family": "htmx in authored public-catalog fixture",
"ref": "research/reviews/NavigationOwnershipExperiment.md",
"scope": "NO01–NO06: ordered history/success/error races, prior policy 0/12 full obligations versus guarded 12/12; separate focus ownership. Same fixture family; pinned history-XHR adapter."
},
{
"kind": "static-code",
"family": "Zulip",
"ref": "research/reviews/ZulipNavigationSourceStudy.md",
"scope": "ZN01–ZN08 at pinned revision: partial hash/list/cache mechanisms and non-modal continuation contrast. No application/test execution, no no-script claim, no complete pattern recurrence."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-27",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": "2026-09-27"
},
"gaps": [
"One implementation family; repeated trials are not independent uses.",
"Animated exits and competing owners remain untested; no production repair claim.",
"Route ownership is a contrast, not independent modal recurrence; AT speech and broader history/lifecycle cases remain unverified.",
"Zulip auxiliary target/anchor callbacks, deferred editing focus and search callback wiring remain unverified; static guards do not prove whole-application ownership."
],
"superseded_by": []
},
{
"id": "CAND-0017",
"path": "research/candidates/IndependentFeatureBoundary.md",
"title": "Independent Feature Boundary",
"sha256": "60b78725ed4036681675d4c68244fc25aea6e0dffb09d54a7108e3fcbf527b4f",
"status": "draft",
"maturity": "hypothesis",
"decision": "Separate feature release, activation and session transition contracts.",
"evidence": [
{
"kind": "documentary",
"family": "single-spa / webpack",
"ref": "research/reviews/FeatureDeploymentBoundaries.md",
"scope": "Mechanism documentation, not deployed independence proof."
},
{
"kind": "static-code",
"family": "react-microfrontends examples",
"ref": "research/reviews/FeatureDeploymentBoundaries.md",
"scope": "Root config/navbar are one example family with shared startup gating."
},
{
"kind": "runtime",
"family": "authored release fixture",
"ref": "research/reviews/FeatureReleaseExperiment.md",
"scope": "Publication/activation/rollback across fresh, loaded and lazy sessions."
},
{
"kind": "runtime",
"family": "authored release fixture",
"ref": "research/reviews/ActivationConflictsAndReload.md",
"scope": "Conditional activation updates and safe reload policies, including negative controls."
}
],
"independent_full_contract_uses": null,
"review": {
"assessed_at": "2026-09-26",
"reviewer": "Codex",
"role": "author-model",
"independent_human": false,
"last_substantive_review_date": null
},
"gaps": [
"No upstream deployment or real team/release-independence validation.",
"Distributed atomicity, retention authorization and native-unload/crash behavior remain open."
],
"superseded_by": []
}
]
}