Provider alias layer
Stores only logical aliases such as faeda_evidence_private, not provider names, secrets, keys, or URLs.
Allows future provider migration without changing evidence metadata truth.
A provider-boundary design gate for storage aliases, encryption controls, signed-view policy, retention limits, backup rules, and forbidden data blocks before any real evidence storage is implemented.
Provider tiers
4
logical options only
Boundary layers
7
alias to audit
Signed-view rules
9
no public URLs
Runtime storage
0
no bucket or upload
Stores only logical aliases such as faeda_evidence_private, not provider names, secrets, keys, or URLs.
Allows future provider migration without changing evidence metadata truth.
Separates original, redacted, quarantine, backup, and deleted-pending-retention evidence containers.
Prevents restricted evidence from mixing with demo-safe proof.
Defines future object key shape using tenant, role, route, evidence ID, version, and privacy class references.
No public filenames, user names, CNIC, phone numbers, or private business names in object keys.
Requires encryption at rest, envelope-key reference, rotation marker, and no raw key material in app or database.
Keys stay in a future KMS/vault boundary, never in frontend or source code.
Future evidence viewing must be short-lived, actor-scoped, reason-coded, watermark-ready, and auditable.
No direct public object URLs or reusable download links.
Defines retention duration, legal hold, deletion review date, restoration window, and audit-preserved tombstone.
Deletion is governed, not silent.
Forbidden evidence or suspected leakage moves to quarantine/incident state before any view/export action.
Security review comes before convenience.
Provider candidate tiers
Pilot or low-volume evidence with strict local control.
Must still use private paths, encryption, backups, audit trail, and no public serving.
No storing evidence inside app source, public folder, repo, or browser storage.
Scalable private object storage through a provider abstraction.
Provider credentials stay in vault/env; app stores only logical references.
No hardcoded bucket names, access keys, public bucket policies, or raw signed URLs in database.
Sensitive local governance evidence where residency matters.
Must support encryption, access logs, retention, and contractual data protection review.
No cross-border evidence movement without governance approval.
Forbidden or suspected sensitive evidence that must not be viewed broadly.
Security-only access, incident reason, maker-checker restore/delete workflow.
No founder demo, public export, generic QA view, or direct download.
Provider decision matrix
Data residency
Privacy class
View frequency
Retention need
Export need
Incident risk
Encryption boundary
Encryption at rest must be mandatory for every future evidence object.
Encryption in transit must be mandatory for upload, view, export, restore, and delete flows.
Raw encryption keys must never be stored in frontend code, source files, database rows, logs, JSON previews, or screenshots.
Future KMS or vault references may be stored as aliases only, never as key material.
Restricted evidence must support stronger key policy than public-safe evidence.
Key rotation must not break evidence audit trails or metadata references.
Any decryption/view action must create audit evidence later.
Signed-view policy
Signed view links must be short-lived.
Signed view links must be actor-scoped.
Signed view links must be purpose/reason coded.
Signed view links must not be stored as permanent database truth.
Signed view links must not be copied into audit notes, emails, screenshots, or JSON previews.
Restricted evidence view should require maker-checker or security reviewer approval.
Watermark metadata should include viewer, timestamp, evidence ID, and privacy class later.
Downloads should be disabled by default unless export gate approves.
Every view should be logged as audit evidence later.
Retention controls
Set a default review period by privacy class; never retain forever by default.
Legal/dispute evidence can pause deletion but must show reason, owner, and review date.
Deletion should preserve metadata tombstone and audit trail without retaining private file content unnecessarily.
Restore requires incident or governance approval, not normal QA access.
Backups must follow encryption, residency, retention, and deletion propagation rules.
Export packets must have expiry/revocation strategy where practical.
Forbidden data blocks
CNIC or national identity
hard blockPersonal identity must not enter QA evidence storage without a legal/privacy gate.
Wallet PIN, OTP, password, recovery code
hard blockAuthentication secrets are never evidence.
Bank/account/card detail
quarantineFinance proof must use partner-safe references, not screenshots of secrets.
Provider access key or token
hard blockProvider secrets must never be uploaded, logged, or previewed.
Raw customer support transcript
redact or blockSupport content can include private customer data.
Internal cost/profit/ledger rows
restricted holdFinancial truth needs role scope and audit approval.
Device notifications or personal browser data
crop or blockMobile QA should not leak personal device state.
Boundary workflow
Read Phase 176 privacy class, storage lane, decision state, and redaction marker before choosing any provider path.
Provider selection follows contract truth.
Assign a future provider alias and container class without naming secrets, public URLs, or implementation credentials.
Evidence remains portable and private.
Attach key alias, residency class, backup class, and rotation expectation before storage implementation is approved.
Security is designed before files exist.
Define who may view, for what reason, for how long, with watermarking and download restrictions.
No permanent public links.
Set retention review, deletion tombstone, restore gate, quarantine rules, and forbidden data action.
Evidence lifecycle is governed end to end.
Hard rules
Phase 177 is a provider boundary design gate only.
Do not create buckets, folders, local file storage, upload APIs, download APIs, signed URL APIs, migrations, database tables, queues, workers, or provider SDK integrations here.
Do not add provider credentials, bucket names, access keys, endpoints, signed URLs, private paths, or sample secrets to code.
Do not use public folders, app source folders, browser local storage, or logs as evidence storage.
Future implementation must pass security, privacy, retention, and maker-checker review before any real file can be stored.
Boundary packet
{
"boundaryId": "evidence_storage_provider_boundary_design_177",
"phase": "Phase 177",
"route": "/business-pro/evidence-storage-provider-boundary-design",
"sourceContract": "evidence_data_contract_design_176",
"sourceGate": "FAEDA-EVIDENCE-DATA-CONTRACT-DESIGN-001",
"designOnly": true,
"createsProviderIntegration": false,
"createsBucket": false,
"createsUploadApi": false,
"createsSignedUrlApi": false,
"createsDatabase": false,
"storageReferenceFields": [
"storageProviderKey",
"bucketOrContainerRef",
"objectKeyRef",
"redactedObjectKeyRef",
"checksumSha256",
"mimeType",
"byteSize",
"dimensions",
"signedViewPolicyRef"
],
"decisionStates": [
"draft_review",
"needs_redaction",
"restricted_hold",
"approved_internal",
"approved_demo_safe",
"rejected",
"deleted_pending_retention",
"restored_after_incident"
],
"redactionMarkers": [
"none",
"crop",
"blur",
"mask_text",
"remove_metadata",
"replace_reference",
"hard_block"
],
"providerAliases": [
"Local encrypted private storage",
"S3-compatible object storage",
"Pakistan-region data residency store",
"Quarantine vault"
],
"boundaryLayers": [
"provider-alias",
"container-boundary",
"object-key-policy",
"encryption-policy",
"signed-view-policy",
"retention-policy",
"incident-quarantine"
],
"signedViewRuleCount": 9,
"forbiddenBlockCount": 7,
"nextAllowedGate": "phase_178_evidence_upload_flow_approval_design"
}Next build gate
After provider boundaries are accepted, the next safe move is designing upload approval steps without writing upload APIs.