apply_framework
Apply a framework (MoSCoW, RICE, Kano, ...) to a set of entities: creates a framework_exercise node and an `includes` edge to each entity. The per-entity result is recorded on the edge via score_entity, never on the entity node, so the same entity can sit in many exercises and any entity type can be scored. Returns { exercise_id, exercise, included, warnings }.
Arguments
framework_idstringrequiredRequired. UPGFramework.id (e.g. "moscow", "rice-scoring").
titlestringoptionalHuman label for the exercise (default "<Framework> exercise").
entity_idsarrayoptionalEntities to pull into the exercise (any type).
slot_rolesobjectoptionalOptional map of entity id → framework slot role (e.g. { "feat_x": "pain_reliever" }), stamped onto each entity's includes edge. Validated against the framework's declared slot roles (warn-only).
statusstringoptionalLifecycle phase: draft | active | archived (default draft).
Returns
{ exercise_id, exercise, included: [{ edge_id, entity_id, edge_type, slot_role? }], warnings }(the shared cross-surface envelope; identical to CLI apply --json).