Repository navigation
docs(governance): add end-of-life, support, compatibility, and data residency policies - #1550
Merged
RUKAYAT-CODER merged 2 commits intoOct 17, 2026
Conversation
…icies Add four lifecycle policies under Governance/policies/ covering how the project decides what it stops supporting and says so: - END_OF_LIFE.md: how a decision is made, the Active to End-of-life stage model with 90-day intervals, the five points every announcement must state, and migration guidance written before the Deprecated stage. - SUPPORT.md: channels, response expectations in business days per request type, a named out-of-scope list with a reason for each entry, and the rule that acknowledgement is not resolution. - COMPATIBILITY.md: supported versions verified against app.config.ts and package.json, window lengths per surface, and drop criteria that each require stated evidence rather than an assertion. - DATA_RESIDENCY.md: storage location per data category, transfer restrictions, and an exception process where a residency change is never internal-only. Existing governance stays authoritative where it already sets a rule: the Security Policy keeps the supported release lines, the OS Version Support Policy keeps the minimum versions and notice period, and the Deprecation Policy keeps removal criteria. Each new document states what is enforced by CI today and what is a human review. Closes rinafcode#1493 Closes rinafcode#1494 Closes rinafcode#1495 Closes rinafcode#1496
|
@sadeeq6400 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
The link omitted the ../ prefix, so it resolved to Governance/policies/processes/ rather than Governance/processes/. Closes rinafcode#1493
Contributor
|
Thank you for contributing to the project |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds four lifecycle policies under
Governance/policies/, closing the governance gaps tracked in #1493, #1494, #1495, and #1496.END_OF_LIFE.mdSUPPORT.mdCOMPATIBILITY.mdDATA_RESIDENCY.mdWhat these documents add
End of life as a decision, not a lapse. End of life is triggered by a recorded maintainer decision with a stated approver, not by a date passing. A feature proposed for retirement needs evidence of low use or high cost — and where the project has no usage data, the issue must say so rather than assert the feature is unused. "No end of life by silence": anything still shipped is still maintained, or it is brought to an explicit decision.
Five support reduction stages. Active → Maintenance → Deprecated → Frozen → End of life, each with a minimum interval and a defined commitment. Stages may not be skipped. Frozen is explicitly not an abandonment: if a platform or provider removes something the app depends on, that is a critical defect and is fixed under the patch policy even during Frozen. Every announcement must state five things, and one of them is the migration path — "we are removing this" without "use this instead" transfers the whole cost to the user. Migration guidance is written before the Deprecated stage begins.
Support with a written scope. Response expectations are given in business days per request type, distinguishing acknowledgement from first substantive response from update cadence while unresolved, with each defined. Acknowledging promptly and then going quiet for months is named as the failure mode the policy exists to prevent. The out-of-scope table gives a reason for every entry — including self-hosted deployment, legal advice, and features that conflict with the project's non-goals — so declining is a decision rather than a deferral. Nothing promises a fix, and the policy says so explicitly.
Compatibility windows with evidence. The supported-version table is verified against the repository rather than asserted: iOS 15.1 and Android 7 per
app.config.ts, Expo SDK 54 and React Native 0.81 perpackage.json, and the Node version CI uses. Each drop criterion names the evidence it requires — a vendor announcement paired with sub-1-percent session data over a stated 90-day period, a documented workaround attempt — and a criterion being met only starts the notice period, it does not drop the version. Meeting the criterion and removing support are separate changes.Data residency. Storage location per data category, with backups and disaster-recovery copies required to stay in the same region — separating them for durability does not change residency. Transfers are restricted to three justified categories; a provider that replicates globally by default is treated as a transfer requiring the same approval as a deliberate one. Telemetry is not exempt: crash reports and analytics qualify only because they carry no personal data, which is a condition of the telemetry policy rather than a waiver. The exception process requires the privacy policy to be updated before a residency change takes effect — a residency change is never internal-only. Where legal obligations make the approved location unavailable, the answer is to change the feature or the provider, not to store the data anyway and record an exception.
Notes for reviewers
SUPPORT.mdandDATA_RESIDENCY.mdlink toDATA_DELETION.md,CONSENT_MANAGEMENT.md,RECORD_RETENTION.md, andVENDOR_RISK.md, which are being added in the companion data-protection pull request. The links resolve once both land. They are included deliberately so the set is navigable from any entry point, and can be dropped if you would rather each pull request stand alone.COMMIT_SIGNING.md.Governance/. The four are grouped because they describe one lifecycle — what is supported, for how long, and how support ends — and cross-reference each other; each remains independently reviewable at one file per issue.Governance/is touched.Closes #1493
Closes #1494
Closes #1495
Closes #1496