cold storage · browse + retrieval queue

vault

Heavy originals live in R2 Infrequent Access — write-once, pull-rarely. The proxies that let you browse the cold store (posters, sprites, tree-dumps, screenshots) live here. First-class cost + size telemetry. Retrieval is a 48-72hr deliberate request, not a click.

At a glance

Cold-store total
— GB
awaiting first archive
Monthly cost
$0.00
R2 IA · $0.01/GB · per-item attribution deferred until > $5/mo
Retrievals (30d)
0
no pulls logged
Queue depth
0
no pending requests
Contexts
5
3 employer · student · personal

Contexts

Primary taxonomy is where the work was done — past employers, education era, personal practice. Each context-card opens onto its own archive of mixed videos / project files / folder dumps from that era. Cross-cut views by file-type are deferred until population justifies them.

employer · parked · awaiting first archive
Schematic
Client work era. Web + interactive projects · design files · rendered deliverables · case-study assets. Cold-stored originals; proxy bundles for browsing without retrieval.
0 items GB no archives yet
employer · parked · awaiting first archive
EPAM
Enterprise + consulting era. Project files · client deliverables · internal tooling · documentation. NDA-aware retention — confirm before retrieval, never index publicly.
0 items GB no archives yet
employer · parked · awaiting first archive
Reuters
Editorial + interactive journalism era. Story projects · data visualisations · published-piece source files. NDA-aware retention.
0 items GB no archives yet
era · parked · awaiting first archive
Student work
Coursework · thesis · class projects · portfolio submissions from education years. Cultural-artefact value high; commercial value low — archive everything, retrieve rarely.
0 items GB no archives yet
era · parked · awaiting first archive
Personal projects
Side projects · experiments · sketches · half-built things · finished-but-unpublished work. Highest emotional retention value; proxy bundles especially important here for "what did I make in 2018?"
0 items GB no archives yet

Operating

Cross-context concerns. Retrievals + policies are the active operating mechanisms; spend is intentionally minimal until monthly bill exceeds the $5 threshold.

parked · queue empty
retrievals
Request queue. Each row = a per-request record with status, ETA, delivery method, audit log. 48-72hr SLA by policy — discipline, not limitation. Email / svc notify when ready.
0 pending 0 in 30d queue UI parked
parked · sub-$5/mo regime
spend
Total-only view while monthly cost < $5. Per-item attribution + per-context breakdown light up automatically when the total crosses the threshold. R2 GraphQL Analytics → KV cache → render.
$0.00 mtd $5.00 threshold no buckets yet
live · written on this scaffold
policies
The 48-72hr discipline · IA retrieval costs · proxy-generation ritual · originals retention rule (cold R2 only, never delete) · NDA-aware retention for employer contexts · sub-$5/mo spend simplification rule.
6 rules last reviewed 2026-05-29

The 48-72hr discipline (why retrieval isn't a click)

R2 IA is technically instant-read — but the rule on this surface is retrieval-as-deliberate-act. You file a request; a worker queues it; within 48-72 hours it's pulled, optionally transcoded or zipped, and delivered. The wait is a feature: it makes you ask "do I really need this?" before incurring the IA pull fee, lets requests batch naturally, and creates an audit trail of every original that left cold storage. Anything urgent enough to need same-day belongs in vault-resources (hot Standard) or library's hot path — not in the vault.

How this composes with siblings

library.gf.cx/drives/<slug>/ pa.gf.cx/properties/... audrey.gf.cx/shoots/... (physical item identity) (place + records) (commercial archive) │ │ │ └──────────────┬───────────────┴──────────────────────────────┘ ▼ vault.gf.cx/<context>/<slug>/ schematic · epam · reuters · student · personal (cold-store identity · proxy bundle · retrieve button) ▲ ▲ │ │ R2 bucket: vault-archives (IA) R2 bucket: vault-resources (Standard) R2 bucket: evernote-originals (IA) (proxies served to browser) │ svc.gf.cx/vault/<event>/ (per-retrieval audit log)

Vault is the sibling everyone links to; it isn't owned by any single parent surface. A library drive finishes recovery → library.gf.cx/drives/<slug>/ shows "data lives at vault.gf.cx/personal/<slug>/" (or the relevant employer context). A pa record cross-references its archived correspondence. Same for audrey shoots, evernote-originals, paper scans.

Status of the stack

Architecture decisions
vault = own sub-domain, not nested under library2026-05-29
Different lifecycle (digital cold storage vs physical circulation), different mechanics (request queue vs vendor manifests), different audience. The two compose by reference; vault is the sibling everyone links to.
Two-tier R2 bucket pattern2026-05-29
Hot Standard buckets for derivatives/proxies served to browser (`vault-resources`). Cold IA buckets for originals never served directly (`vault-archives`, `evernote-originals`, future `audrey-originals`). 33% storage savings on IA; retrieval fees applied when pulling.
48-72hr retrieval SLA is policy, not platform2026-05-29
R2 IA is instant-read; the wait is enforced by the request queue. Discipline mechanism — turns "I'll grab that quickly" into "I'll file a request." Anything needing immediate access doesn't belong in vault.
Proxy-bundle ritual is non-negotiable2026-05-29
Heavy file goes to R2 IA → proxy bundle (poster · sprite · preview · meta OR screenshot · assets · stub · meta OR tree-dump · thumbs · meta) generated at archive time, lives locally in git. Skip the ritual once = opaque blob you'll never want to re-pull.
Proxy substrate lives in git, originals in R22026-05-29
Extension of "derivatives R2 / originals RAID" rule for corpora too big for RAID. Same shape, R2 plays both roles via tier separation.
Context-as-primary taxonomy (not file-type)2026-05-29
Hub navigates by employer/era (Schematic · EPAM · Reuters · Student · Personal) because that's how you remember the work. Within a context, mixed videos / project files / archives coexist. File-type cross-cut views deferred until population justifies them.
Sub-$5/mo spend simplification2026-05-29
No per-item cost attribution while total R2 bill stays under $5/mo. Hub shows total only. Per-context + per-item breakdown lights up automatically when the threshold crosses. Saves cycles building telemetry that doesn't pay off at personal-archive scale.
NDA-aware retention for employer contexts2026-05-29
EPAM + Reuters (and any future client-bound context) carry NDA-aware retention rules. Confirm before retrieval. Never indexed publicly. Originals kept for personal reference per career-portfolio rights.
Bindings + dependencies
Subdomain scaffolded via gfcx_subdomain_new.py2026-05-29
Inherits cards + media primitives from assets.gf.cx. Rocket Loader fix applied inline (data-cfasync="false") per template-gap memory.
R2 buckets mint — vault-resources + vault-archives
vault-resources Standard for hot serving; vault-archives IA for originals never served. Mint via wrangler r2 bucket create + set IA storage class via dashboard or API.
vault-retrieval Worker — request queue + processor
POST /retrievals → KV write + queue · scheduled cron pulls oldest pending → R2 IA fetch → transcode/zip → Resend email + svc.gf.cx event · 48-72hr by policy.
vault-spend Worker — cost telemetry
Daily pull of R2 GraphQL Analytics API → KV cache → renders hub stats + /spend/ breakdown. Tracks Std vs IA split + retrieval-fee log.
First proxy-bundle generator — videos
ffmpeg-based: poster (rule-of-thirds frame), sprite (8×3 tile grid), 10s preview @ 360p, meta.json. CLI + idempotency via sha256 sidecar. Most common first use case.
CF Pages custom-domain bind + zone CNAME
API bind + separate CNAME POST per feedback_cf_pages_api_custom_domain_bind_no_auto_cname memory. SSL auto-provisions.
Project-file proxy generators (DAW · video · PSD · 3D)
Type-specific. Logic via AppleScript, FCP via XML export, PSD via ImageMagick composite, Blender via headless render. Foundation-first: videos round-trip first, projects on demand.
svc.gf.cx/vault/ retrieval audit stream
Per-retrieval event log keyed by request-id. Same pattern as svc.gf.cx/<vendor>/. Builds the audit trail.
vault.gf.cx · scaffolded 2026-05-29 · placeholder cards · architecture committed · awaiting first bucket mint · proxy substrate ≤ 5% of originals · 48-72hr retrieval discipline