@rosthq/cli 0.7.170 → 0.7.171

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -13372,13 +13372,13 @@ var init_command_discovery = __esm({
13372
13372
  { "id": "friction.stale_candidates", "title": "Find stale friction", "description": "List open or diagnosing Friction issues whose linked remediation task has already shipped, making them high-confidence candidates for bulk resolution, with per-row evidence. Read-only \u2014 it never resolves anything.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "stale_after_days": { "default": 14, "type": "integer", "minimum": 1, "maximum": 365 }, "limit": { "default": 50, "type": "integer", "minimum": 1, "maximum": 200 } }, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "candidates": { "type": "array", "items": { "type": "object", "properties": { "issue_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "summary": { "type": "string" }, "severity": { "type": "string", "enum": ["low", "med", "high", "critical"] }, "status": { "type": "string", "enum": ["open", "diagnosing"] }, "created_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "updated_at": { "type": "string", "format": "date-time", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" }, "days_stale": { "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "action_task_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "action_task_status": { "anyOf": [{ "type": "string" }, { "type": "null" }] }, "action_task_done": { "type": "boolean" }, "confidence": { "type": "string", "enum": ["low", "medium", "high"] }, "evidence": { "type": "array", "items": { "type": "string" } } }, "required": ["issue_id", "summary", "severity", "status", "created_at", "updated_at", "days_stale", "action_task_id", "action_task_status", "action_task_done", "confidence", "evidence"], "additionalProperties": false } }, "total": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 } }, "required": ["candidates", "total"], "additionalProperties": false }, "help": "List open or diagnosing issues whose remediation task already shipped \u2014 high-confidence candidates for a bulk close-the-loop pass. Read-only.", "guide_slugs": ["friction-guide"], "stages": ["operating_rhythm"], "related_command_ids": [] },
13373
13373
  { "id": "friction.update_status", "title": "Update Friction issue status", "description": "Move a non-terminal issue between open and diagnosing. Terminal issues (resolved/dropped) cannot be reopened here.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "eligible", "risk_flags": [], "rationale": "Eligible for Trusted execution only when the signed Charter manifest, tenant policy, budget, and command guard allow it." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "issue_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "status": { "type": "string", "enum": ["open", "diagnosing"] } }, "required": ["issue_id", "status"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "issue_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "status": { "type": "string", "enum": ["open", "diagnosing"] }, "event_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["issue_id", "status", "event_id"], "additionalProperties": false }, "help": "Move a non-terminal issue between open and diagnosing while it is being worked.", "guide_slugs": ["friction-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.answer_gap", "confirmation.approve", "escalation.raise", "friction.assist", "friction.file_issue", "friction.get", "friction.link_task", "friction.list", "friction.resolve", "onboarding.finish", "task.accept", "task.complete", "task.confirm_proposal", "task.create", "task.decline", "task.decline_proposal", "task.list"] },
13374
13374
  { "id": "gate.decide", "title": "Decide a conversational gate", "description": "A human approves or rejects a conversational gate bound to an artifact digest (a prototype URL, deliverable, or artifact). The agent drafts the decision and the human confirms it; the resolver is always a human. On approval the artifact must be unchanged since the gate was drafted \u2014 a stale digest re-blocks. Requires confirmation.", "required_scope": "tenant", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": [], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "subject_kind": { "type": "string", "enum": ["prototype", "deliverable", "artifact"] }, "subject_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "artifact_ref": { "type": "object", "properties": { "href": { "type": "string", "minLength": 1, "maxLength": 2048 }, "label": { "type": "string", "minLength": 1, "maxLength": 200 } }, "required": ["href", "label"], "additionalProperties": false }, "artifact_digest": { "type": "string", "minLength": 1, "maxLength": 200 }, "decision": { "type": "string", "enum": ["approve", "reject"] }, "ask": { "type": "string", "minLength": 1, "maxLength": 400 }, "consequence": { "type": "string", "minLength": 1, "maxLength": 600 }, "unblocked_targets": { "default": [], "maxItems": 20, "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 200 } }, "rationale": { "type": "string", "maxLength": 4e3 } }, "required": ["subject_kind", "subject_id", "artifact_ref", "artifact_digest", "decision", "ask", "consequence"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "decision_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "subject_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "artifact_digest": { "type": "string" }, "decision": { "type": "string", "enum": ["approve", "reject"] }, "decided_by": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "gate_status": { "type": "string", "enum": ["approved", "rejected"] } }, "required": ["decision_id", "subject_id", "artifact_digest", "decision", "decided_by", "gate_status"] }, "help": "A human approves or rejects a conversational gate bound to an artifact digest; the agent drafts, the human confirms (invariant #7).", "guide_slugs": ["agent-reference-map", "mcp-and-cli-guide"], "stages": ["operating_rhythm"], "related_command_ids": [] },
13375
- { "id": "goal.bind_measurable", "title": "Bind a Signal to a Cascade goal", "description": "Role defaults to 'informs' \u2014 a conservative informative indicator allowed at any goal level (many per goal) that never changes goal status. Role 'drives_status' makes it the goal's status driver: allowed only on a childless seat goal or milestone, at most one per goal, requires a second_anchor (a prior closed period + expected value confirming the Signal matched the books). This signal will set the goal's status from confirmed readings. You can turn this off later. Explicit auto_status_enabled: false opts out at bind time; goal.set_auto_status changes it after the fact. Binding a driver over an existing informs binding of the same Signal promotes it. Binding is human-gated.", "required_scope": "seat", "confirmation": "human_required", "trusted_execution": { "mode": "eligible_bounded", "risk_flags": [], "rationale": "Binding an informs-level Signal never changes goal status, so it is a bounded worker action safe to auto-apply under a standing Trusted grant." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "role": { "default": "informs", "type": "string", "enum": ["drives_status", "informs"] }, "auto_status_enabled": { "type": "boolean" }, "second_anchor": { "type": "object", "properties": { "period_start": { "type": "string", "minLength": 1 }, "expected_value": { "type": "number" } }, "required": ["period_start", "expected_value"], "additionalProperties": false } }, "required": ["goal_id", "measurable_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "role": { "type": "string", "enum": ["drives_status", "informs"] }, "auto_status_enabled": { "type": "boolean" }, "signal_state": { "type": "string", "enum": ["ok", "risk", "crit", "pending"] }, "computed_status": { "anyOf": [{ "type": "string", "enum": ["on", "off", "done", "dropped"] }, { "type": "null" }] }, "pinned_divergence": { "type": "boolean" }, "already_bound": { "type": "boolean" }, "driver_anchor": { "anyOf": [{ "type": "object", "properties": { "period_start": { "type": "string", "minLength": 1 }, "expected_value": { "type": "number" } }, "required": ["period_start", "expected_value"], "additionalProperties": false }, { "type": "null" }] } }, "required": ["goal_id", "measurable_id", "role", "auto_status_enabled", "signal_state", "computed_status", "pinned_divergence", "already_bound", "driver_anchor"], "additionalProperties": false }, "help": "Bind a Signal to a goal. Defaults to role informs (a conservative indicator at any level that never changes status); pass role drives_status with a second_anchor (a prior closed period + expected value confirming the Signal matched the books) to make it a childless leaf goal's status driver \u2014 this promotes an existing informs binding. A new drives_status binding defaults auto_status_enabled to true (pass auto_status_enabled:false to opt out at bind time).", "guide_slugs": ["cascade-guide", "signal-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent.run_now", "agent.trust.create", "agent.update_schedule", "command.describe", "command.list", "compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "friction.resolve", "goal.create", "goal.drop", "goal.get", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish", "skill.assign_to_seat"] },
13375
+ { "id": "goal.bind_measurable", "title": "Bind a Signal to a Cascade goal", "description": "Role defaults to 'informs' \u2014 a conservative informative indicator allowed at any goal level (many per goal) that never changes goal status. Role 'drives_status' makes it the goal's status driver: allowed only on a childless seat goal or milestone, at most one per goal, requires a second_anchor (a prior closed period + expected value confirming the Signal matched the books). This signal will set the goal's status from confirmed readings. You can turn this off later. Explicit auto_status_enabled: false opts out at bind time; goal.set_auto_status changes it after the fact. Binding a driver over an existing informs binding of the same Signal promotes it. Binding is human-gated.", "required_scope": "seat", "confirmation": "human_required", "trusted_execution": { "mode": "eligible_bounded", "risk_flags": [], "rationale": "Binding an informs-level Signal never changes goal status, so it is a bounded worker action safe to auto-apply under a standing Trusted grant." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "role": { "default": "informs", "type": "string", "enum": ["drives_status", "informs"] }, "auto_status_enabled": { "type": "boolean" }, "second_anchor": { "type": "object", "properties": { "period_start": { "type": "string", "minLength": 1 }, "expected_value": { "type": "number" } }, "required": ["period_start", "expected_value"], "additionalProperties": false } }, "required": ["goal_id", "measurable_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "role": { "type": "string", "enum": ["drives_status", "informs"] }, "auto_status_enabled": { "type": "boolean" }, "signal_state": { "type": "string", "enum": ["ok", "risk", "crit", "pending"] }, "computed_status": { "anyOf": [{ "type": "string", "enum": ["on", "off", "done", "dropped"] }, { "type": "null" }] }, "pinned_divergence": { "type": "boolean" }, "already_bound": { "type": "boolean" }, "driver_anchor": { "anyOf": [{ "type": "object", "properties": { "period_start": { "type": "string", "minLength": 1 }, "expected_value": { "type": "number" } }, "required": ["period_start", "expected_value"], "additionalProperties": false }, { "type": "null" }] }, "warnings": { "type": "array", "items": { "type": "string" } } }, "required": ["goal_id", "measurable_id", "role", "auto_status_enabled", "signal_state", "computed_status", "pinned_divergence", "already_bound", "driver_anchor"], "additionalProperties": false }, "help": "Bind a Signal to a goal. Defaults to role informs (a conservative indicator at any level that never changes status); pass role drives_status with a second_anchor (a prior closed period + expected value confirming the Signal matched the books) to make it a childless leaf goal's status driver \u2014 this promotes an existing informs binding. A new drives_status binding defaults auto_status_enabled to true (pass auto_status_enabled:false to opt out at bind time).", "guide_slugs": ["cascade-guide", "signal-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent.run_now", "agent.trust.create", "agent.update_schedule", "command.describe", "command.list", "compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "friction.resolve", "goal.create", "goal.drop", "goal.get", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish", "skill.assign_to_seat"] },
13376
13376
  { "id": "goal.create", "title": "Create Cascade goal", "description": "Create a Cascade goal. Defaults to a seat goal: pass seat_id and parent_goal_id, and the parent chain must terminate at a company objective in the same cycle (enforced server-side). Pass kind 'company_objective' to author a company objective \u2014 the Cascade root \u2014 with no seat and no parent; it anchors on the tenant's active Compass, which must already carry a one_year horizon goal, and requires an owner membership (a seat-scoped caller may create seat goals beneath one).", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "kind": { "type": "string", "enum": ["company_objective", "seat_goal"] }, "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "parent_goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "title": { "type": "string", "minLength": 1 }, "definition_of_done": { "type": "string", "minLength": 1 }, "status": { "type": "string", "enum": ["on", "off"] }, "target_date": { "type": "string", "format": "date", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$" } }, "required": ["cycle_id", "title", "definition_of_done"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "parent_goal_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] }, "status_source": { "type": "string", "enum": ["human", "agent", "rollup", "signal"] }, "target_date": { "anyOf": [{ "type": "string", "format": "date", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$" }, { "type": "null" }] }, "warnings": { "type": "array", "items": { "type": "string" } } }, "required": ["goal_id", "cycle_id", "seat_id", "parent_goal_id", "title", "status", "status_source", "target_date"], "additionalProperties": false }, "help": "Create a seat goal under an existing objective (the default), or pass kind 'company_objective' to author the Cascade root itself against the active Compass (owner authority).", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "goal.bind_measurable", "goal.drop", "goal.get", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish"] },
13377
13377
  { "id": "goal.drop", "title": "Drop Cascade goal", "description": "Drop (retire) a goal by setting status to dropped. Dropping retires the commitment, so it is human-gated. The row is retained for audit (never deleted).", "required_scope": "tenant_admin", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": ["admin", "destructive"], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["goal_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "parent_goal_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] }, "status_source": { "type": "string", "enum": ["human", "agent", "rollup", "signal"] }, "target_date": { "anyOf": [{ "type": "string", "format": "date", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$" }, { "type": "null" }] }, "warnings": { "type": "array", "items": { "type": "string" } } }, "required": ["goal_id", "cycle_id", "seat_id", "parent_goal_id", "title", "status", "status_source", "target_date"], "additionalProperties": false }, "help": "Drop a goal to retire a commitment; the goal is retained for audit and dropping is human-gated.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "goal.bind_measurable", "goal.create", "goal.get", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish"] },
13378
13378
  { "id": "goal.get", "title": "Get Cascade goal", "description": "Get one goal's core detail and status by id. Seat-scoped callers may only read their own seat's goals.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["goal_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "title": { "type": "string" }, "kind": { "type": "string", "enum": ["objective", "cycle_goal", "company_objective", "seat_goal", "milestone"] }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] }, "status_source": { "type": "string", "enum": ["human", "agent", "rollup", "signal"] }, "progress_pct": { "anyOf": [{ "type": "integer", "minimum": 0, "maximum": 100 }, { "type": "null" }] }, "seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "parent_goal_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "definition_of_done": { "type": "string" }, "target_date": { "anyOf": [{ "type": "string", "format": "date", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$" }, { "type": "null" }] } }, "required": ["id", "title", "kind", "status", "status_source", "progress_pct", "seat_id", "parent_goal_id", "definition_of_done", "target_date"], "additionalProperties": false } }, "required": ["goal"], "additionalProperties": false }, "help": "Get one goal's core detail and status by id; seat tokens may only read their own goals.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "goal.bind_measurable", "goal.create", "goal.drop", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish"] },
13379
13379
  { "id": "goal.list", "title": "List Cascade goals", "description": "List goals in the tenant, optionally filtered by cycle or seat. Seat-scoped callers see only their own seat's goals.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goals": { "type": "array", "items": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "kind": { "type": "string", "enum": ["objective", "cycle_goal", "company_objective", "seat_goal", "milestone"] }, "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "parent_goal_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] }, "status_source": { "type": "string", "enum": ["human", "agent", "rollup", "signal"] } }, "required": ["goal_id", "kind", "cycle_id", "seat_id", "parent_goal_id", "title", "status", "status_source"], "additionalProperties": false } } }, "required": ["goals"], "additionalProperties": false }, "help": "List Cascade goals to find goal ids, parentage, and seat ownership before mutating the tree.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "goal.bind_measurable", "goal.create", "goal.drop", "goal.get", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish"] },
13380
13380
  { "id": "goal.list_at_risk", "title": "List at-risk Cascade goals", "description": "List goals projected to miss their cycle pace (at-risk or projected-miss), with how many days behind pace. Read-only; status-only goals (no progress) are excluded.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": {}, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goals": { "type": "array", "items": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "title": { "type": "string" }, "seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "progress_pct": { "type": "integer", "minimum": 0, "maximum": 100 }, "classification": { "type": "string", "enum": ["on_track", "at_risk", "projected_miss", "untracked"] }, "expected_pct": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "behind_days": { "anyOf": [{ "type": "number" }, { "type": "null" }] } }, "required": ["goal_id", "title", "seat_id", "cycle_id", "progress_pct", "classification", "expected_pct", "behind_days"], "additionalProperties": false } } }, "required": ["goals"], "additionalProperties": false }, "help": "List goals projected off pace (at-risk or projected-miss), with how many days behind pace. Read-only; status-only goals are excluded.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "goal.bind_measurable", "goal.create", "goal.drop", "goal.get", "goal.list", "goal.reassign_owner", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish"] },
13381
- { "id": "goal.list_measurables", "title": "List a Cascade goal's Signals", "description": "List the status-driver Signal bound to a Cascade goal (role drives_status), with its current signal indicator and latest confirmed reading. Read-only. Informative (informs) bindings appear in the goal-detail panel's Direct indicators, not here.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["goal_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "bindings": { "type": "array", "items": { "type": "object", "properties": { "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "name": { "type": "string" }, "unit": { "type": "string" }, "role": { "type": "string", "const": "drives_status" }, "auto_status_enabled": { "type": "boolean" }, "signal_state": { "type": "string", "enum": ["ok", "risk", "crit", "pending"] }, "computed_status": { "anyOf": [{ "type": "string", "enum": ["on", "off", "done", "dropped"] }, { "type": "null" }] }, "last_reading_value": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "driver_anchor": { "anyOf": [{ "type": "object", "properties": { "period_start": { "type": "string", "minLength": 1 }, "expected_value": { "type": "number" } }, "required": ["period_start", "expected_value"], "additionalProperties": false }, { "type": "null" }] } }, "required": ["measurable_id", "name", "unit", "role", "auto_status_enabled", "signal_state", "computed_status", "last_reading_value", "driver_anchor"], "additionalProperties": false } } }, "required": ["goal_id", "bindings"], "additionalProperties": false }, "help": "List the Signals bound to a goal (role drives_status) with each one's current indicator and latest confirmed reading.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": [] },
13381
+ { "id": "goal.list_measurables", "title": "List a Cascade goal's Signals", "description": "List a Cascade goal's Signal bindings, split by role. `bindings` is the status-driver Signal (role drives_status, at most one per goal, childless leaf only) with its current signal indicator and latest confirmed reading. `informs_bindings` is the informative indicators (role informs, any goal level, many per goal) \u2014 these never drive the goal's status, including on a company_objective, which is structurally barred from a driver and takes its status from its children's roll-up or from a human. Read-only.", "required_scope": "tenant", "confirmation": "none", "trusted_execution": { "mode": "not_applicable", "risk_flags": [], "rationale": "This command is not part of the Trusted positive allowlist." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["goal_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "bindings": { "type": "array", "items": { "type": "object", "properties": { "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "name": { "type": "string" }, "unit": { "type": "string" }, "role": { "type": "string", "const": "drives_status" }, "auto_status_enabled": { "type": "boolean" }, "signal_state": { "type": "string", "enum": ["ok", "risk", "crit", "pending"] }, "computed_status": { "anyOf": [{ "type": "string", "enum": ["on", "off", "done", "dropped"] }, { "type": "null" }] }, "last_reading_value": { "anyOf": [{ "type": "number" }, { "type": "null" }] }, "driver_anchor": { "anyOf": [{ "type": "object", "properties": { "period_start": { "type": "string", "minLength": 1 }, "expected_value": { "type": "number" } }, "required": ["period_start", "expected_value"], "additionalProperties": false }, { "type": "null" }] } }, "required": ["measurable_id", "name", "unit", "role", "auto_status_enabled", "signal_state", "computed_status", "last_reading_value", "driver_anchor"], "additionalProperties": false } }, "informs_bindings": { "type": "array", "items": { "type": "object", "properties": { "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "name": { "type": "string" }, "unit": { "type": "string" }, "role": { "type": "string", "const": "informs" }, "signal_state": { "type": "string", "enum": ["ok", "risk", "crit", "pending"] }, "computed_status": { "anyOf": [{ "type": "string", "enum": ["on", "off", "done", "dropped"] }, { "type": "null" }] }, "last_reading_value": { "anyOf": [{ "type": "number" }, { "type": "null" }] } }, "required": ["measurable_id", "name", "unit", "role", "signal_state", "computed_status", "last_reading_value"], "additionalProperties": false } } }, "required": ["goal_id", "bindings", "informs_bindings"], "additionalProperties": false }, "help": "List a goal's Signal bindings, split by role: `bindings` is the status driver (role drives_status, at most one), `informs_bindings` the informative indicators (role informs, many) that never drive status. A Signal on a company objective is always informs.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": [] },
13382
13382
  { "id": "goal.reassign_owner", "title": "Reassign Cascade goal owner seat", "description": "Reassign a seat goal's owner seat to a different seat in the same tenant. The goal's cycle and parent (ancestry chain) are unchanged \u2014 only the owning seat changes. Reassigning accountable ownership is human-gated. Emits a status event naming the previous and new seat.", "required_scope": "tenant_admin", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": ["admin"], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["goal_id", "seat_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "previous_seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "seat_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "title": { "type": "string" }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] } }, "required": ["goal_id", "cycle_id", "previous_seat_id", "seat_id", "title", "status"], "additionalProperties": false }, "help": "Reassign a seat goal's owner seat to a different seat in the same tenant; cycle and parent ancestry are unchanged. Reassigning accountable ownership is human-gated.", "guide_slugs": ["cascade-guide", "confirmations-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent_grant_intervention.decide", "agent.activation_sign", "agent.go_live", "agent.trust.create", "agent.trust.expire", "agent.trust.revoke", "agent.trust.supersede", "charter.approve", "compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "confirmation.dismiss", "confirmation.dismiss_stale", "confirmation.list", "confirmation.reject", "confirmation.remint", "credential.ingress", "friction.resolve", "goal.bind_measurable", "goal.create", "goal.drop", "goal.get", "goal.list", "goal.list_at_risk", "goal.reparent", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "mcp_token.create", "onboarding.activate", "onboarding.finish", "onboarding.setup", "seat.create_complete", "staffing.assign_user", "task.confirm_proposal", "task.decline_proposal"] },
13383
13383
  { "id": "goal.reparent", "title": "Reparent Cascade goal", "description": "Move a goal under a different parent. Reparenting changes accountable structure, so it is human-gated. One-root and no-cycle are enforced server-side.", "required_scope": "tenant_admin", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": ["admin"], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "parent_goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" } }, "required": ["goal_id", "parent_goal_id"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "cycle_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "seat_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "parent_goal_id": { "anyOf": [{ "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, { "type": "null" }] }, "title": { "type": "string" }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] }, "status_source": { "type": "string", "enum": ["human", "agent", "rollup", "signal"] }, "target_date": { "anyOf": [{ "type": "string", "format": "date", "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$" }, { "type": "null" }] }, "warnings": { "type": "array", "items": { "type": "string" } } }, "required": ["goal_id", "cycle_id", "seat_id", "parent_goal_id", "title", "status", "status_source", "target_date"], "additionalProperties": false }, "help": "Reparent a goal only when it clarifies accountable structure; reparenting changes authority and is human-gated.", "guide_slugs": ["cascade-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["agent_grant_intervention.decide", "agent.activation_sign", "agent.go_live", "agent.trust.create", "agent.trust.expire", "agent.trust.revoke", "agent.trust.supersede", "charter.approve", "compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "confirmation.dismiss", "confirmation.dismiss_stale", "confirmation.list", "confirmation.reject", "confirmation.remint", "credential.ingress", "friction.resolve", "goal.bind_measurable", "goal.create", "goal.drop", "goal.get", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.set_auto_status", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "mcp_token.create", "onboarding.activate", "onboarding.finish", "onboarding.setup", "seat.create_complete", "staffing.assign_user", "task.confirm_proposal", "task.decline_proposal"] },
13384
13384
  { "id": "goal.set_auto_status", "title": "Toggle Signal-driven auto-status", "description": "Opt a goal's drives_status binding into (or out of) auto-status. Default OFF. Enabling lets confirmed readings drive the goal's status; a human status pin still wins. Human-gated opt-in.", "required_scope": "seat", "confirmation": "human_required", "trusted_execution": { "mode": "always_human", "risk_flags": [], "rationale": "Trusted mode cannot bypass this command's human confirmation or high-risk boundary." }, "expose_over_mcp": true, "input_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "enabled": { "type": "boolean" } }, "required": ["goal_id", "measurable_id", "enabled"], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "goal_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "measurable_id": { "type": "string", "format": "uuid", "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" }, "auto_status_enabled": { "type": "boolean" }, "status": { "type": "string", "enum": ["on", "off", "done", "dropped"] }, "status_source": { "type": "string", "enum": ["human", "agent", "rollup", "signal"] }, "applied_from_signal": { "type": "boolean" } }, "required": ["goal_id", "measurable_id", "auto_status_enabled", "status", "status_source", "applied_from_signal"], "additionalProperties": false }, "help": "Opt a goal's Signal binding into (or out of) auto-status. Default OFF. Enabling lets confirmed readings drive the status; a human status pin still wins.", "guide_slugs": ["cascade-guide", "signal-guide"], "stages": ["operating_rhythm"], "related_command_ids": ["compass.alignment", "compass.approve_version", "compass.set", "confirmation.approve", "goal.bind_measurable", "goal.create", "goal.drop", "goal.get", "goal.list", "goal.list_at_risk", "goal.reassign_owner", "goal.reparent", "goal.set_progress", "goal.set_status", "goal.unbind_measurable", "goal.update", "onboarding.finish"] },
@@ -34840,7 +34840,12 @@ var goalBindMeasurableOutputSchema = external_exports.object({
34840
34840
  // DER-1126: the second anchor recorded when this binding was promoted to (or created
34841
34841
  // as) the status driver. Null for an 'informs' binding (no anchor) and for a legacy
34842
34842
  // driver bound before the anchor gate existed.
34843
- driver_anchor: goalDriverAnchorSchema.nullable()
34843
+ driver_anchor: goalDriverAnchorSchema.nullable(),
34844
+ // DER-3763: present only when the command has a non-blocking explanatory note to
34845
+ // surface (matches the `goalMutationOutputSchema.warnings` convention, :616). Set for
34846
+ // an 'informs' bind — pointing the caller at the read-back surface a company-objective
34847
+ // Signal has no other way to reach — and omitted entirely for 'drives_status'.
34848
+ warnings: external_exports.array(external_exports.string()).optional()
34844
34849
  }).strict();
34845
34850
  var goalUnbindMeasurableInputSchema = external_exports.object({
34846
34851
  goal_id: uuidSchema14,
@@ -34887,12 +34892,28 @@ var goalMeasurableBindingSchema = external_exports.object({
34887
34892
  // <period>: expected <value>".
34888
34893
  driver_anchor: goalDriverAnchorSchema.nullable()
34889
34894
  }).strict();
34895
+ var goalInformsBindingSchema = external_exports.object({
34896
+ measurable_id: uuidSchema14,
34897
+ name: external_exports.string(),
34898
+ unit: external_exports.string(),
34899
+ role: external_exports.literal("informs"),
34900
+ signal_state: goalSignalStateSchema,
34901
+ computed_status: goalStatusSchema.nullable(),
34902
+ last_reading_value: external_exports.number().nullable()
34903
+ }).strict();
34890
34904
  var goalListMeasurablesInputSchema = external_exports.object({
34891
34905
  goal_id: uuidSchema14
34892
34906
  }).strict();
34893
34907
  var goalListMeasurablesOutputSchema = external_exports.object({
34894
34908
  goal_id: uuidSchema14,
34895
- bindings: external_exports.array(goalMeasurableBindingSchema)
34909
+ bindings: external_exports.array(goalMeasurableBindingSchema),
34910
+ // DER-3763: the separate informative-list — never merged into `bindings`. Before this
34911
+ // field existed, `listGoalInformsBindings` (packages/db/src/goal-measurables.ts) had zero
34912
+ // command/CLI/MCP consumers: every `informs` bind (the default role, and the ONLY role a
34913
+ // company_objective can carry — SIGNAL_DRIVABLE_KINDS structurally bars it from
34914
+ // drives_status) was persisted but unreadable through this, the only read command for
34915
+ // bindings.
34916
+ informs_bindings: external_exports.array(goalInformsBindingSchema)
34896
34917
  }).strict();
34897
34918
  var goalCoreSchema = external_exports.object({
34898
34919
  id: uuidSchema14,
@@ -54777,7 +54798,7 @@ var COMMAND_MANIFEST = [
54777
54798
  { "id": "goal.get", "namespace": "goal", "action": "get", "title": "Get Cascade goal", "description": "Get one goal's core detail and status by id. Seat-scoped callers may only read their own seat's goals.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Get one goal's core detail and status by id; seat tokens may only read their own goals." },
54778
54799
  { "id": "goal.list", "namespace": "goal", "action": "list", "title": "List Cascade goals", "description": "List goals in the tenant, optionally filtered by cycle or seat. Seat-scoped callers see only their own seat's goals.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "cycle_id", "flag": "cycle-id", "type": "string", "required": false }, { "name": "seat_id", "flag": "seat-id", "type": "string", "required": false }], "hasComplexInput": false, "bootstrapClass": "read", "help": "List Cascade goals to find goal ids, parentage, and seat ownership before mutating the tree." },
54779
54800
  { "id": "goal.list_at_risk", "namespace": "goal", "action": "list_at_risk", "title": "List at-risk Cascade goals", "description": "List goals projected to miss their cycle pace (at-risk or projected-miss), with how many days behind pace. Read-only; status-only goals (no progress) are excluded.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [], "hasComplexInput": false, "help": "List goals projected off pace (at-risk or projected-miss), with how many days behind pace. Read-only; status-only goals are excluded." },
54780
- { "id": "goal.list_measurables", "namespace": "goal", "action": "list_measurables", "title": "List a Cascade goal's Signals", "description": "List the status-driver Signal bound to a Cascade goal (role drives_status), with its current signal indicator and latest confirmed reading. Read-only. Informative (informs) bindings appear in the goal-detail panel's Direct indicators, not here.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "List the Signals bound to a goal (role drives_status) with each one's current indicator and latest confirmed reading." },
54801
+ { "id": "goal.list_measurables", "namespace": "goal", "action": "list_measurables", "title": "List a Cascade goal's Signals", "description": "List a Cascade goal's Signal bindings, split by role. `bindings` is the status-driver Signal (role drives_status, at most one per goal, childless leaf only) with its current signal indicator and latest confirmed reading. `informs_bindings` is the informative indicators (role informs, any goal level, many per goal) \u2014 these never drive the goal's status, including on a company_objective, which is structurally barred from a driver and takes its status from its children's roll-up or from a human. Read-only.", "requiredScope": "tenant", "confirmation": "none", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "List a goal's Signal bindings, split by role: `bindings` is the status driver (role drives_status, at most one), `informs_bindings` the informative indicators (role informs, many) that never drive status. A Signal on a company objective is always informs." },
54781
54802
  { "id": "goal.reassign_owner", "namespace": "goal", "action": "reassign_owner", "title": "Reassign Cascade goal owner seat", "description": "Reassign a seat goal's owner seat to a different seat in the same tenant. The goal's cycle and parent (ancestry chain) are unchanged \u2014 only the owning seat changes. Reassigning accountable ownership is human-gated. Emits a status event naming the previous and new seat.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "seat_id", "flag": "seat-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Reassign a seat goal's owner seat to a different seat in the same tenant; cycle and parent ancestry are unchanged. Reassigning accountable ownership is human-gated." },
54782
54803
  { "id": "goal.reparent", "namespace": "goal", "action": "reparent", "title": "Reparent Cascade goal", "description": "Move a goal under a different parent. Reparenting changes accountable structure, so it is human-gated. One-root and no-cycle are enforced server-side.", "requiredScope": "tenant_admin", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "parent_goal_id", "flag": "parent-goal-id", "type": "string", "required": true }], "hasComplexInput": false, "help": "Reparent a goal only when it clarifies accountable structure; reparenting changes authority and is human-gated." },
54783
54804
  { "id": "goal.set_auto_status", "namespace": "goal", "action": "set_auto_status", "title": "Toggle Signal-driven auto-status", "description": "Opt a goal's drives_status binding into (or out of) auto-status. Default OFF. Enabling lets confirmed readings drive the goal's status; a human status pin still wins. Human-gated opt-in.", "requiredScope": "seat", "confirmation": "human_required", "exposeOverMcp": true, "fields": [{ "name": "goal_id", "flag": "goal-id", "type": "string", "required": true }, { "name": "measurable_id", "flag": "measurable-id", "type": "string", "required": true }, { "name": "enabled", "flag": "enabled", "type": "boolean", "required": true }], "hasComplexInput": false, "help": "Opt a goal's Signal binding into (or out of) auto-status. Default OFF. Enabling lets confirmed readings drive the status; a human status pin still wins." },
@@ -57276,7 +57297,11 @@ External connectors are being rolled out provider by provider, conservatively (r
57276
57297
  // instructions verbatim got only the active ones. Both drain examples now
57277
57298
  // pass `--resolved all` / `"resolved":"all"` so the copy matches what the
57278
57299
  // example actually does.
57279
- version: "2026-08-13.2",
57300
+ // DER-3763: the `goal.list_measurables` row said "Driver-only — informs
57301
+ // bindings (direct indicators) are not returned", which this issue makes
57302
+ // false: the command now also returns `informs_bindings`. That row was the
57303
+ // only agent-facing copy asserting the old shape.
57304
+ version: "2026-08-13.3",
57280
57305
  public: true,
57281
57306
  audiences: ["human", "cli", "mcp", "in_app_agent"],
57282
57307
  stages: ["company_setup", "staffing"],
@@ -58173,7 +58198,7 @@ Several rows here are seat-operating commands (\`task.create\`, the \`signal.*\`
58173
58198
  | \`rost_import_a_ninety_v_to_into_a_compass_draft\` | \`compass.import\` | AI-draft a Compass from a ninety V/TO (Core Values \u2192 principles, 10/3/1-Year \u2192 horizon goals, Rocks \u2192 cycle objectives), landed as a draft a human confirms by supersession \u2014 never an accepted Compass. Idempotent by document content (a re-upload of the same V/TO short-circuits without re-drafting). | Tenant | Call with the extracted V/TO \`text\` (and optional \`source_name\`). |
58174
58199
  | \`rost_list_cascade_goals\` | \`goal.list\` | List Cascade goals, optionally by cycle or seat. | Seat or tenant-admin | Call with \`{}\` or \`{"cycle_id":"<id>"}\`. |
58175
58200
  | \`rost_get_cascade_goal\` | \`goal.get\` | Get one goal's core detail and status by id. Seat-scoped callers may only read their own seat's goals. | Seat or tenant-admin | Call with \`{"goal_id":"<id>"}\`. |
58176
- | \`rost_list_a_cascade_goals_signals\` | \`goal.list_measurables\` | List the goal's status-driving Signal binding (role drives_status; 0-or-1 per goal) with its current indicator and latest confirmed reading. Driver-only \u2014 informs bindings (direct indicators) are not returned. Read-only. | Seat or tenant-admin | Call with \`{"goal_id":"<id>"}\`. |
58201
+ | \`rost_list_a_cascade_goals_signals\` | \`goal.list_measurables\` | List a goal's Signal bindings, split by role. \`bindings\` is the status-driving Signal (role drives_status; 0-or-1 per goal) with its current indicator and latest confirmed reading; \`informs_bindings\` is the informative indicators (role informs; many per goal), which never drive status. A Signal bound to a company objective is always informs, so it appears under \`informs_bindings\`. Read-only. | Seat or tenant-admin | Call with \`{"goal_id":"<id>"}\`. |
58177
58202
  | \`rost_create_cascade_goal\` | \`goal.create\` | Create a Cascade goal. Default (no \`kind\`, or \`kind: "seat_goal"\`): a seat goal under an existing objective. \`kind: "company_objective"\` instead authors the Cascade ROOT. | Tenant; a company objective additionally requires an owner membership | Seat goal: call with cycle, seat, parent, title, definition of done, and an optional target date. Company objective: \`{"kind":"company_objective","cycle_id":"<id>","title":"\u2026","definition_of_done":"\u2026"}\` \u2014 pass NO \`seat_id\` and NO \`parent_goal_id\` (the root has neither; supplying either is rejected, not ignored). The anchor is resolved server-side, so there is no id to pass, and the tenant's active one_year horizon goal must already be set or the call fails with a precondition error. |
58178
58203
  | \`rost_update_cascade_goal\` | \`goal.update\` | Update a goal's title or definition of done. | Tenant | Call with \`goal_id\` and the changed fields (title, definition of done, or target date). |
58179
58204
  | \`rost_set_cascade_goal_status\` | \`goal.set_status\` | Set a goal's status (on/off/done). | Seat or tenant-admin | Seats may set only their own goals. |