{"schema_version":1,"experiment_id":"eoa_inverse_innovation_exp04_retrieval_first_paired20_20260802","cell_id":"layer_decay_and_expiration_management__computer_science","hypothesis_id":"H1","search_queries":["feature toggle mandatory expiration date renewal lease code reference safe deletion","feature flag lifecycle policy expiry date owner extension archive restore code references","patent feature flag expiration automatic removal source code dependency","feature toggle technical debt empirical study stale flags testing complexity","\"feature flag\" \"renew\" expiration owner API","\"feature flag\" \"expiry date\" \"code references\""],"sources":[{"source_id":"S1","title":"Feature flags","publisher":"Unleash","url":"https://docs.getunleash.io/concepts/feature-flags","source_class":"OFFICIAL_PRODUCT_DOCUMENTATION","claims_supported":["Flag types have configurable expected lifetimes, after which flags are automatically marked potentially stale rather than disabled.","Stale events can initiate build failures, notifications, or cleanup pull requests.","Parent dependencies block archival, archived flags can be revived, and deletion is discouraged until code references are removed."]},{"source_id":"S2","title":"Archiving flags","publisher":"LaunchDarkly","url":"https://launchdarkly.com/docs/home/flags/archive","source_class":"OFFICIAL_PRODUCT_DOCUMENTATION","claims_supported":["Archive readiness uses lifecycle checks including recent requests and prerequisite relationships.","Code-reference discovery supports removal review, and prerequisite flags cannot be archived while dependents remain.","Archival is reversible and distinct from permanent deletion."]},{"source_id":"S3","title":"Edit or deleting feature flags","publisher":"Harness","url":"https://developer.harness.io/docs/feature-flags/use-ff/ff-creating-flag/edit-and-delete-a-feature-flag/","source_class":"OFFICIAL_PRODUCT_DOCUMENTATION","claims_supported":["Potentially stale flags are detected from a 60-day inactivity window.","A flag cannot be archived while it is a prerequisite for another flag.","Archival is mandatory before deletion and provides a 30-day restoration window before automatic permanent deletion."]},{"source_id":"S4","title":"Removing Feature Flag-Related Codebase from Applications (US20210089299A1)","publisher":"United States Patent and Trademark Office via Google Patents","url":"https://patents.google.com/patent/US20210089299A1/en","source_class":"OFFICIAL_ORGANIZATION_DATA","claims_supported":["The patent discloses scanning source code for named feature flags and constructing a functional dependency graph.","Production-path usage, dependency simulation, testing, and automated refactoring are combined to remove stale flag-controlled code safely."]},{"source_id":"S5","title":"Piranha: Reducing Feature Flag Debt at Uber","publisher":"IEEE/ACM ICSE-SEIP","url":"https://lazaroclapp.com/preprints/ICSE20-SEIP-Piranha.pdf","source_class":"PRIMARY_RESEARCH","claims_supported":["Stale, orphaned, and forgotten flags create dead paths and software-reliability and maintenance burdens.","Uber's automated cleanup tooling was used to delete 1,381 flags and 71 KLoC; obsolete flag tests were among the artifacts targeted for removal."]},{"source_id":"S6","title":"Feature Toggle Dynamics in Large-Scale Systems: Prevalence, Growth, Lifespan, and Benchmarking","publisher":"arXiv","url":"https://arxiv.org/abs/2604.15872","source_class":"PRIMARY_RESEARCH","claims_supported":["A longitudinal study of more than 4,000 toggle events found removals lagging additions in Kubernetes and GitLab.","Reported median lifetimes were 734 days for Kubernetes and 185 days for GitLab, with a small fraction becoming de facto permanent."]},{"source_id":"S7","title":"Test experimental APIs and features by using origin trials","publisher":"Microsoft Learn","url":"https://learn.microsoft.com/th-th/microsoft-edge/origin-trials/","source_class":"OFFICIAL_GUIDANCE","claims_supported":["The neighboring origin-trial mechanism grants access to an experimental browser feature through a token that expires by default after six weeks.","Continued access requires explicit token renewal, and the feature ceases to function for the origin after trial expiration."]}],"proximity":"SUBSTANTIAL_COLLISION","closest_analogues":[{"name":"Unleash feature-flag lifecycle","similarity":"Combines expected lifetimes, automatic stale marking, workflow automation, usage-based cleanup stages, dependency-aware archival, and reversible revival.","remaining_difference":"Expected lifetime is advisory: expiration does not automatically suspend the flag's runtime authority or require an evidence-backed renewal.","source_ids":["S1"]},{"name":"Harness stale detection and archive-before-delete workflow","similarity":"Combines age/inactivity detection, prerequisite-gated archival, reversible removal, and automatic permanent deletion after a fixed quarantine.","remaining_difference":"The 60-day rule identifies cleanup candidates rather than enforcing a creation-time renewable lease, and quarantine begins only after a separate archive decision.","source_ids":["S3"]},{"name":"LaunchDarkly archive-readiness workflow","similarity":"Combines recent-evaluation checks, code-reference discovery, prerequisite blocking, reversible archival, and separate permanent deletion.","remaining_difference":"Lifecycle checks govern retirement readiness but do not make continued flag evaluation contingent on periodic lease renewal.","source_ids":["S2"]},{"name":"Microsoft Edge origin-trial tokens","similarity":"Implements the strongest neighboring-domain match to a renewable lease: experimental feature authority expires and must be explicitly renewed.","remaining_difference":"It governs browser-origin access to trials and lacks feature-flag code-reference gates, dependency-safe retirement, and reversible deletion quarantine.","source_ids":["S7"]},{"name":"Dependency-graph-driven automated flag cleanup","similarity":"The patent and Piranha operationalize source scanning, dependency or reachability analysis, testing, and automated removal of stale flag code and related tests.","remaining_difference":"They begin after a flag is declared stale and do not supply creation-time expiring authority, renewal, or a recoverable quarantine state.","source_ids":["S4","S5"]}],"overlapping_components":["Expected-lifetime and age-based stale detection","Automated stale-state events and cleanup workflows","Runtime evaluation or usage checks","Source-code reference discovery","Feature-flag prerequisite and dependency gates","Automated stale-code and obsolete-test removal","Reversible archival or revival","Archive-before-delete quarantine","Delayed permanent deletion","Explicitly renewable expiring authority in a neighboring feature-access domain"],"remaining_contrastive_claim":"For temporary application feature flags, the searched art does not show one enforced workflow in which every flag receives a creation-time lease, runtime authority lapses absent explicit evidence-backed renewal, retirement is gated on live code and dependency checks, and removal enters a reversible quarantine.","claim_falsifier":"Official documentation, source code, a patent, or a deployed-system study showing a pre-existing feature-flag system that enforces all four elements—mandatory creation-time lease, authority-ending lapse with explicit renewal, live code/dependency retirement gate, and reversible quarantine—would falsify the remaining claim.","problem_support":"STRONG","recommendation":"RESEARCH","world_novelty_boundary":"This six-query, seven-source ordinary-web search establishes only a bounded distinction: stale-flag lifecycles, dependency-safe cleanup, reversible archival, delayed deletion, and even renewable expiring feature authority are individually established, while their exact enforced combination for application feature flags was not found; no claim of patentability or exhaustive world novelty is made."}