Repository navigation
docs(governance): add erasure, consent, vendor risk, and retention policies - #1553
Merged
RUKAYAT-CODER merged 1 commit intoOct 17, 2026
Merged
Conversation
Add four data-protection policies under Governance/policies/ covering the lifecycle of personal data from collection to disposal: - DATA_DELETION.md: how a request is received and verified, timelines from receipt, execution order across stores and subprocessors, a verification requirement, and refusal rules. - CONSENT_MANAGEMENT.md: what requires consent, conditions for a valid request, how consent is recorded, how it is withdrawn, and re-consent on a change of purpose. - VENDOR_RISK.md: vetting criteria with required evidence, four risk tiers, review cadence per tier, and exit planning. - RECORD_RETENTION.md: a retention schedule where every entry names its trigger, disposal methods, and a legal-hold process with 90-day review. Three positions recur across the set: a promise the project cannot evidence is worse than no promise, so each document defines how compliance is verified; identity is verified before deletion, since deleting on an unverified request is a denial-of-service against a real account; and retention periods are checked for shortening at review, because schedules drift longer when nobody reduces one. Closes rinafcode#1497 Closes rinafcode#1498 Closes rinafcode#1499 Closes rinafcode#1500
|
@ustaxs 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! 🚀 |
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 data-protection policies under
Governance/policies/, closing the governance gaps tracked in #1497, #1498, #1499, and #1500.DATA_DELETION.mdCONSENT_MANAGEMENT.mdVENDOR_RISK.mdRECORD_RETENTION.mdWhat these documents add
Erasure as something the project can evidence. A deletion promise that cannot be evidenced is worse than no promise, so verification is treated as carefully as execution: the clock starts at receipt rather than at completed verification, so a slow identity check cannot extend the deadline; the target is 30 business days with a matching 20-day subprocessor deadline; and completion means the deleted records were queried and return nothing across every store in scope, that anonymisation was verified as irreversible rather than assumed from a missing key column, and that no copy survives in exports, backups, or caches. Two positions are stated plainly rather than left implicit: identity is verified before anything is deleted, because deleting on an unverified request is a denial-of-service attack on a real account and is harder to detect than unauthorised access; and backups are not rewritten to erase one person, because that damages the restore guarantee for everyone — the position is told to the requester instead of claimed as complete deletion. A deletion is not confirmed complete when any part is unknown; an unverifiable subsystem is stated in the confirmation and becomes a tracked follow-up.
Consent with the named failure modes. What requires consent is separated from essential processing, which is not disguised as a consent prompt. A valid request must state the purpose plainly, be freely given, be unbundled per purpose, start un-ticked, and be given by an affirmative action. A countdown that infers consent from not declining is not consent, and "Accept all" with no granular choice is treated as invalid. Records are per purpose, so withdrawing one leaves the others standing, and an unrecorded consent is treated as absent — the project does not rely on something it cannot evidence. Withdrawing must be as easy as giving: a single in-app control plus a written channel, with no penalty and confirmation that it took effect. Where consent is broadened, re-consent is required, and the old consent is not reused.
Vendor risk tiered by consequence. Ten vetting criteria each name the evidence required, with three rules that do the real work: necessity is assessed first, because not using a vendor is the safest option available; a missing answer is a finding, not a silent pass; and self-declared certifications are a starting point, since the assessment is of the service actually used. Tiers are set by consequence rather than preference — a widely used vendor handling children's data is Tier 1, and a build tool holding a repository token is Tier 1 too, because that token can write to the default branch. Every Tier 1 vendor needs a written exit position, and a vendor with no identified alternative is a finding at review rather than an accepted state.
Retention with triggers, not just periods. Every entry in the schedule names the period and the trigger that starts it, because a period without a trigger is unenforceable — a clock that starts when nothing happens never starts. Disposal is separated by method: hard delete, irreversible anonymisation, expiry, backup rotation, statutory retention in isolation, and retention in the public repository for governance records. Legal holds name the role that may issue them, require explicit scope, suspend automated deletion immediately, and are reviewed every 90 days, since a hold that is never released is a defect rather than a permanent condition. The annual review explicitly checks whether each period is still the shortest defensible one, because schedules drift longer when nobody reduces a period.
Notes for reviewers
DPA_TEMPLATE.mdcontinues to set processor obligations; these documents state what the project requires and verify, not what the contract says.SUPPORT.md,END_OF_LIFE.md, andCOMPATIBILITY.mdfrom docs(governance): add end-of-life, support, compatibility, and data residency policies #1550 and toREVIEW_ETIQUETTE.mdfrom docs(governance): add office hours, review etiquette, audit, and whistleblower documents #1552. The links resolve once those land and can be dropped if you would rather each pull request stand alone.Governance/. No application code, CI, or configuration is touched, and no tests are added or changed.Closes #1497
Closes #1498
Closes #1499
Closes #1500