Repository navigation
docs(governance): add key, certificate, vulnerability SLA, and patch management policies - #1549
Merged
RUKAYAT-CODER merged 2 commits intoOct 17, 2026
Conversation
…olicies Add four policies under Governance/policies/ covering the lifecycle of everything that can be expired, leaked, or left waiting: - KEY_MANAGEMENT.md: key inventory with an owner per group, generation, storage and access rules, rotation, revocation at source, destruction, and verification. - CERTIFICATE_MANAGEMENT.md: issuance from a controlled source, renewal lead times, ownership, expiry monitoring, revocation, and a certificate inventory. - VULN_SLA.md: remediation targets per severity, measured from awareness to release, with the escalation path when a target is missed. - PATCH_MANAGEMENT.md: patch cadence by class, prioritisation order, and the emergency-patch path from declaration to recovery. Where existing governance already sets a rule, these policies reference it rather than restating it: the App Signing Key Policy keeps custody of signing material, the Secret Rotation Policy keeps credential cadence, and the Security Severity Rubric keeps the severity definitions. Each document states what is enforced by a workflow today and what is a human process. Closes rinafcode#1489 Closes rinafcode#1490 Closes rinafcode#1491 Closes rinafcode#1492
|
@ayshadogo 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! 🚀 |
APP_SIGNING_KEYS.md has no "Verification and rollback" heading; the rollback position is described inside the "Rotation Process" section, so the link now points at that heading. Closes rinafcode#1489
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 asset-lifecycle policies under
Governance/policies/, closing the governance gaps tracked in #1489, #1490, #1491, and #1492.KEY_MANAGEMENT.mdCERTIFICATE_MANAGEMENT.mdVULN_SLA.mdPATCH_MANAGEMENT.mdWhat these documents add
Key lifecycle. A key inventory table giving every key group an owning role — iOS distribution certificate, provisioning profile, App Store Connect
.p8, Android upload keystore, Play service-account key, commit-signing keys, on-device feature-cache data key, CI tokens — because a key nobody can enumerate is a key nobody can rotate. Storage rules require that a data key never sits beside the ciphertext it protects, which is howsrc/utils/encryptedStorage.tsalready works. Revocation is defined as removing trust at the source, since overwriting a stored value is not revocation.Certificate lifecycle. Issuance is restricted to controlled issuers with the private key generated where it will be stored; renewal lead times are 30 days generally and 60 days for Apple-issued material, because profile regeneration is not always immediate; the superseded certificate is retained until a production build is accepted, giving a rollback position. An inventory records the issuer, purpose, owner, and expiry source of truth for each certificate.
Remediation targets. Targets are measured from awareness to release in users' hands, not to merge — a fix merged to
mainbut not released does not stop the clock. Mitigations only count if they remove the exposure, so disabling a feature behind a flag qualifies while a monitoring rule does not. Each target has a matching "available to users" window that includes app-store review lead time, and a store delay is recorded as a store delay rather than counted against the team. The acknowledgement targets in the existing severity rubric continue to apply unchanged and are measured separately.Escalation on a miss. A missed target is declared within one business day with its cause stated, escalated immediately for Critical and High, and paired with a follow-up task that removes the structural cause — the missing advisory alert, the untested path, the single maintainer who alone understands the area. Missing a target is explicitly not a fault if it is declared and explained; hiding it or silently extending the deadline is.
Patch cadence and prioritisation. A window per patch class, from 24 hours for an actively-exploited signing-chain compromise to a milestone for a framework upgrade. Prioritisation is an ordered rule set where reachability is assessed rather than assumed, so an advisory for an unused code path is not automatically deprioritised — severity is only lowered with a written argument. Routine batches are size-bounded so a regression stays attributable.
Emergency path. Shortens the process without removing controls: two maintainer approvals minimum, a scoped diff, a dedicated branch, a
previewbuild confirmed before promotion, the full suite recovered within 24 hours, and a post-incident review for anything the emergency deferred.Notes for reviewers
APP_SIGNING_KEYS.mdkeeps custody and rotation of signing material,SECRET_ROTATION.mdkeeps credential cadence,SECURITY_SEVERITY_RUBRIC.mdkeeps the severity definitions and acknowledgement SLAs, andREVIEW_SLA.mdkeeps review turnaround. These documents link to those rather than restating them, so there is one authoritative source per rule.APP_SIGNING_KEYS.md, theexpo-cryptokey generation insrc/utils/encryptedStorage.ts, and the fact thataudit.ymlruns on push and weekly and fails on high and critical advisories.COMMIT_SIGNING.mdand avoids describing controls that are not implemented.Governance/. The four are grouped into one pull request because they define one lifecycle across related assets and cross-reference each other; each remains independently reviewable at one file per issue.Governance/is touched.Closes #1489
Closes #1490
Closes #1491
Closes #1492