Skip to content

forgeplan_fpf_rules

Returns the active FPF rule set — the condition trees that drive Forgeplan’s action recommendations. Each rule has a name, a priority, an action bucket (EXPLORE / INVESTIGATE / EXPLOIT), a condition that evaluates against an artifact’s state, and a message explaining the resulting action. Rules are loaded from .forgeplan/config.yaml (fpf.rules) if present, otherwise from the built-in defaults (PRD-041).

Category: FPF Knowledge Base

  • “Which rules are currently in effect for this workspace?” — the agent wants an inventory before debugging a surprising action.
  • “Show me only the EXPLORE rules” — narrow the view when reasoning about low-trust artifacts.
  • “Is rule X from config or from defaults?” — use source to diagnose whether a custom override is actually loaded.
  • “Give me a one-line summary of every rule” — pass summary: true to skip the full condition trees.

Forgeplan’s engine recommends actions based on R_eff thresholds (configurable via fpf.thresholds in config). The three buckets are:

BucketDefault R_eff rangeMeaningTypical rule effects
EXPLORER_eff < explore_reff (default 0.33)Trust too low — treat as hypothesisAdd evidence, widen hypotheses, reduce scope
INVESTIGATEexplore_reff ≤ R_eff < investigate_reff (default 0.66)Trust partial — test, measureRun benchmarks, adversarial review, narrow hypotheses
EXPLOITR_eff ≥ exploit_reff (default 0.66)Trust high — actShip, activate, supersede, enforce

Depth influences thresholds: higher depth (Deep / Critical) raises the bar for EXPLOIT, so a Critical artifact needs stronger evidence than a Tactical one to earn the same bucket.

NameTypeRequiredDescription
actionstringnoFilter to one bucket: "EXPLORE" / "INVESTIGATE" / "EXPLOIT". Omit for all.
namestringnoFetch a single rule by exact name. Errors if not found.
summaryboolnoIf true, returns only {name, priority, action} per rule — no condition trees, no messages. Default false.
sourcestringnoFilter by origin: "config" (user overrides) or "default" (built-ins). Useful for debugging config loading.

Schema source: crates/forgeplan-mcp/src/server.rs::FpfRulesParams

Full mode (default):

{
"source_in_use": "config",
"count": 14,
"rules": [
{
"name": "low_trust_explore",
"priority": 10,
"action": "EXPLORE",
"condition": {
"all": [
{ "field": "r_eff", "op": "lt", "value": 0.33 },
{ "field": "status", "op": "eq", "value": "draft" }
]
},
"message": "R_eff below explore threshold; add evidence before deciding.",
"source": "config"
}
]
}

Summary mode (summary: true):

{
"count": 14,
"rules": [
{ "name": "low_trust_explore", "priority": 10, "action": "EXPLORE" },
{ "name": "stale_investigate", "priority": 20, "action": "INVESTIGATE" },
{ "name": "high_trust_exploit", "priority": 30, "action": "EXPLOIT" }
]
}

List all rules:

{}

Only EXPLORE rules, summary form:

{ "action": "EXPLORE", "summary": true }

Fetch a specific named rule:

{ "name": "high_trust_exploit" }

Debug: are my config overrides actually loaded?

{ "source": "config" }
forgeplan_fpf_rules ← inventory
forgeplan_fpf_check { id: "PRD-19" } ← which rule wins for this artifact
forgeplan_fpf_section { id: "B.3" } ← why the engine thinks that way