Execute a FABER plan using the deterministic executor (prototype) - prevents step skipping
Executes FABER plans using a deterministic bash executor to prevent step skipping.
/plugin marketplace add fractary/claude-plugins/plugin install fractary-faber@fractary<plan-id> [--run-id <id>] [--resume-from <n>] [--serialized-input] [--dry-run] [--verbose]Unlike the standard /fractary-faber:execute which uses an LLM-based orchestrator,
this command uses a bash script that owns the workflow loop, preventing the "hallucinated
completion" problem where steps are skipped.
Key Difference:
<CRITICAL_RULES>
logs/fractary/plugins/faber/plans/Syntax:
/fractary-faber:execute-deterministic <plan-id> [options]
Arguments:
| Argument | Type | Required | Description |
|---|---|---|---|
<plan-id> | string | Yes | Plan ID to execute |
Options:
| Option | Type | Default | Description |
|---|---|---|---|
--run-id <id> | string | auto-generated | Custom run identifier |
--resume-from <n> | number | 0 | Resume from step index N (0-based) |
--session-id <id> | string | - | Resume existing Claude session |
--serialized-input | flag | false | Send all steps in single message (reduces API calls) |
--dry-run | flag | false | Show what would be executed without running |
--verbose | flag | false | Enable verbose output |
Examples:
# Execute plan with deterministic executor (standard mode - one message per step)
/fractary-faber:execute-deterministic fractary-claude-plugins-csv-export-20251208T160000
# Serialized input mode - send all steps in single message (fewer API calls)
/fractary-faber:execute-deterministic fractary-claude-plugins-csv-export-20251208T160000 --serialized-input
# Dry run to see what would execute
/fractary-faber:execute-deterministic fractary-claude-plugins-csv-export-20251208T160000 --dry-run
# Resume from step 5 after a failure
/fractary-faber:execute-deterministic fractary-claude-plugins-csv-export-20251208T160000 --resume-from 5
# Verbose mode for debugging
/fractary-faber:execute-deterministic fractary-claude-plugins-csv-export-20251208T160000 --verbose
</INPUTS>
<WORKFLOW>
Extract from user input:
plan_id: First positional argument (required)Validation:
plan_id: show error with usagePlan files are stored at:
logs/fractary/plugins/faber/plans/{plan_id}.json
Verify the file exists before proceeding.
If --run-id is not provided, generate one:
{repo-slug}/{work-id}/{timestamp}
Example: fractary/claude-plugins/123/20251210T160000
Run the script with Bash tool:
plugins/faber/skills/deterministic-executor/scripts/execute-workflow.sh \
--plan logs/fractary/plugins/faber/plans/{plan_id}.json \
--run-id "{run_id}" \
[other options passed through]
Return the script's output directly. The script handles:
Success: The deterministic executor script output showing workflow completion.
Missing Plan ID Error:
Error: Plan ID is required
Usage: /fractary-faber:execute-deterministic <plan-id> [options]
Examples:
/fractary-faber:execute-deterministic fractary-project-feature-20251208T160000
/fractary-faber:execute-deterministic my-plan-id --dry-run
List available plans:
ls logs/fractary/plugins/faber/plans/
Plan Not Found Error:
Error: Plan not found: {plan_id}
Check available plans:
ls logs/fractary/plugins/faber/plans/
Or create a new plan:
/fractary-faber:plan --work-id 123
</OUTPUTS>
<NOTES>
Use the deterministic executor when:
/fractary-faber:execute-deterministic
↓
execute-workflow.sh (bash - owns the loop)
↓
For each step:
1. emit_event step_start (deterministic)
2. update_state in_progress (deterministic)
3. claude --resume (execute step)
4. verify_step (external evidence check)
5. emit_event step_complete (deterministic)
6. update_state completed (deterministic)
| Feature | Standard (/execute) | Deterministic (standard) | Deterministic (serialized) |
|---|---|---|---|
| Orchestration | LLM-based | Bash script | Bash script |
| Step skipping | Possible | Impossible | Monitored |
| API calls | N steps | N+1 calls | 2 calls |
| External verification | No | Yes | Yes |
| State updates | LLM-emitted | Deterministic | Deterministic |
| Event emission | LLM-emitted | Deterministic | Deterministic |
| Resume support | By phase | By exact step | By exact step |
Standard Mode (default):
Serialized Input Mode (--serialized-input):
This is a prototype being developed as an alternative to the LLM-based executor. It may be promoted to the default executor after validation.
/fractary-faber:execute - Standard LLM-based executor/fractary-faber:plan - Create a plan/fractary-faber:status - Check workflow status