---
title: PM Composability (G3 -- feature interaction validation)
---

# PM Composability (G3 -- feature interaction validation)

## What it is

An in-development validation engine governing which PM features can be enabled, disabled, and
combined. It is the piece that keeps a board's feature set coherent, so turning one thing on never
quietly leaves another thing broken.

## Where to find it

There is no direct interface for this -- it is pure backend logic with no UI of its own, and it is
consumed by the G12 Progressive Disclosure Engine (see [pm-feature-profiles.md](pm-feature-profiles.md)).
It is in development, gated behind the `pm-composability` unreleased feature flag
(`pmComposabilityEnabled`), so it is off in a normal install.

## How it behaves

65 PM features form a directed graph with four edge types (requires, enhances,
modifies-behavior, resource-cost). The composability resolver validates feature
interactions at three timing phases:

- **Enable-time** -- blocks turning on a feature when prerequisites are missing;
  reports behavior changes and enhancement opportunities in plain language.
- **Runtime** -- detects inconsistent states (from imports or API changes) and
  produces graceful degradation messages with a legacy grace period.
- **Disable-time** -- analyzes impact scaled to data involvement: no data =
  instant off, dependent features = show chain, existing data = simplest default
  action + 30-day undo window.

13 **presets** across three categories are internally consistent subsets of the
feature catalog:

- **Lane presets** (3): Tasks, Projects, Operations — validated as
  `tasks < projects < operations`.
- **Engineering presets** (2): Engineering-Linear, Engineering-Jira.
- **Platform-import presets** (8): First-Agent-Board, Trello, Jira, Asana,
  Linear, Notion, ClickUp, Airtable — auto-applied when importing from the
  matching platform.

## For agents

- Shared data layer in `src/shared/pm-composability/` (feature catalog, graph,
  presets, plain-language templates).
- Backend services in `src/main/services/pm/composability/` (composability
  resolver, graph traversal, three validators, availability computer, preset
  validator, undo tracker, data involvement checker).
- 8 IPC channels + 7 CLI routes.
- DAG no-cycles invariant locked by `pm-composability-guards.test.ts`.
- Contract: `pm-composability-contract.md`.

## Related

The boards whose features this engine validates are described in
[mission-control.md](mission-control.md). The consumer of its output -- progressive disclosure, which
decides what a given board actually shows -- is covered by
[pm-feature-profiles.md](pm-feature-profiles.md), and the gate that decides whether a board has
accumulated enough usage data to justify suggesting anything new is
[pm-data-density.md](pm-data-density.md). The inbox cards that offer those new features come from
[pm-discovery-callouts.md](pm-discovery-callouts.md).
