Skip to content

Feature-flag / capability registry with scoped sources (directory, harness, etc.) #37

Description

@MasonRhodesDev

We keep accumulating places where UI/behavior should be conditional on what the thing is: harnesses (#29 — what does this agent support?), directories (does this project have git?), and in the future per-MCP, per-user, per-build-mode, etc.

Build a single feature-flag/capability registry with scoped sources so every call site asks the same question:

features.is_enabled("pull_requests", &scope)

…where scope is composed of contributors (directory detectors, harness capability bits, user prefs, experimental toggles). Contributors resolve in a defined order; the resolved value is cached and invalidated when its sources change (e.g. .git appears or disappears). Flags carry metadata (label, description, default, requires) so a debug/developer panel can list what's active and why.

Payoff:

  • Unify agent harnesses behind a common capability interface #29 (harness trait) gets a real home for its capability bits.
  • Directory-capability work (filed separately) slots straight in.
  • Future dynamic UI (per-harness cheatsheets, per-project toolbars) stays declarative.
  • Experiments / feature previews can be toggled without touching call sites.

Out of scope here: the exact API shape — design TBD.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions