Features

Every capability, versioned.

A feature is a user-visible capability that evolves over time. A version is one concrete milestone of that capability — v1.0 shipped X, v1.1 added Y, v2.0 rewrote Z. Linked to the epics that delivered it and the releases that announced it.

How it works

Close an epic. Get a draft. Finalize.

Auto-propose on epic close

A DB trigger watches work_items. When an epic with metadata.feature_slug transitions to done, a draft version appears on the matching feature. Owners finalize; they do not create from scratch.

Free-text version labels

v1 · 1.2.3-rc1 · 2026.04 · MVP · Beta. Optional SemVer validation if you want strict checking; off by default.

Cross-referenced everywhere

Product Map shows current version badges on matching epics. Apps page links to feature history. Changelog attaches releases to versions. Org Brain cites features as sources and can propose create_feature_version in Acting mode.

Setup

Four steps to a live timeline.

1

Create a feature

On /features, click New feature. A feature is a user-visible capability — Auth, Billing, Org Brain. You pick a name, slug, owner, and status (planned / building / live / deprecated).

2

Tag epics with feature_slug

On any epic, add metadata.feature_slug = your feature slug. When that epic closes, a draft feature version is auto-proposed with the epic pre-linked.

3

Finalize the version

Open the feature detail page. Draft versions show a yellow 'Draft' pill with a Finalize button. Name the version (v1.0, 2026.04, MVP — whatever works for your team), edit the summary, flag breaking changes.

4

Share publicly (optional)

Toggle share_public on the feature to put it on your team public page at /p/<team-slug>/features. External readers see a clean timeline — no auth, no clutter.

Public share

Publish a clean roadmap with one toggle.

Toggle share_public on any feature. Visit /p/<your-team-slug>/features to see the public page — no auth, no dashboard clutter, just every published version with summary and shipped date.

Visibility is double-gated: the team must have public_enabled=true AND the feature must have share_public=true. RLS enforces both.

FAQ

Honest answers.

How is a feature different from an app?

An app is a codebase (a repo you own). A feature is a user-visible capability. One app can host many features; one feature can span multiple apps.

How is a feature different from an epic?

An epic is a unit of work — it starts, progresses, finishes. A feature is a named capability that persists across many epics over time. Think: many epics deliver one feature, each delivery is a version.

What triggers the auto-propose?

An AFTER UPDATE trigger on work_items. It fires when (a) the row is an epic, (b) status transitions to done, (c) metadata.feature_slug is set, (d) a feature with that slug exists. If the feature does not exist yet, nothing happens silently — so rolling out gradually is safe.

What if I forgot to set feature_slug on old epics?

Use the Backfill button on /features. It sweeps every done epic in your team with metadata.feature_slug, finds any not yet linked to a version, and creates drafts you can finalize.

Can the Brain create versions for me?

Yes. Flip the Brain's Acting toggle and say 'ship v1.1 of Org Brain with these fixes'. It proposes an action_card you approve; approval calls create_feature_version_for_user RPC as you. Every action is logged to brain_actions for audit.

Who can see public features?

Anyone, but only when BOTH the team has public_enabled=true AND the feature has share_public=true. RLS enforces both gates at the DB layer — there is no leak path.

Publish your first feature.

Open /features in your TeamX dashboard. Creating the first feature takes 30 seconds.