Roadmap decisions
0%
teamwork-vault

Seven decisions to set the build order

Each one already carries a recommended option (marked rec). Confirm, redirect, or skip — nothing here is locked until you say so.

Who’s deciding?

The enhancements
Greenlight first · ~$0

1 · R2 orphan-sweeper + lifecycle + customMetadata?

Closes the design’s named “sweep later” gap — a daily Cron job reconciles R2 against D1. No new product surface.

Phased

2 · App-level artifact versioning?

R2 has no native versioning — this adds versioned keys + a history read tool, reaped by lifecycle. Opt-in, no hot-path change.

The real upgrade

3 · Vectorize semantic search beside FTS5?

Hybrid keyword + meaning. Adds a 4th write target + Workers AI dependency. The plan is written and ready.

Load-bearing

4 · Vectorize tenant-isolation posture (if #3 isn’t “drop”)

Vectorize is a separate store — the tenant_id invariant doesn’t auto-extend. This is the answer that keeps tenants from leaking.

When needed

5 · Image attachments via Images-on-R2?

Transform straight off the existing R2 bucket — no migration, Free tier (5k/mo). The lightest-touch path.

Hold

6 · Cloudflare Stream video hosting?

Hosting recordings vs linking them. URL-ingest needs a direct MP4 — Loom/Zoom share links are HTML pages.

Next action

7 · What ships in the first commit?

Sets the branch and the first PR scope.

In your own words (optional)

Any constraints, timing, or sequencing changes?

Budget windows, a deadline, a tenant rollout, or a reason to reorder — anything that should shape the plan.

Anything else?

Your decisions