| name | eou-refactor |
| description | Generate candidate EOU refactor options from an audit or incident. Does not apply changes directly. |
Refactor EOU
Generate candidate refactor options for $target. Do not apply any change.
Inputs
$target (required) — either an EOU ID (resolved to foundry/eous/{id}.yml or foundry/meta-eous/{id}.yml) or a path to an audit report or diagnosis file. When an audit path is given, the EOU ID is extracted from the report.
Required reading
foundry/refactoring-patterns.yml — canonical refactor types (split, merge, scope-reduction, authority-downgrade, step-extraction, validator-addition, stop-condition-injection, responsibility-separation)
foundry/constitution.yml — invariants that constrain any proposed change
foundry/governance.yml — authority boundaries and lifecycle-gate rules; required because refactor options can touch authority_level and blast_radius
- The source EOU spec (infer path from
$target if an audit path is given)
Stop conditions
Halt and report before generating options if:
$target does not identify an EOU ID and one cannot be inferred.
- No audit report or incident exists to identify a structural problem — do not generate options from speculation.
- The EOU spec does not exist in
foundry/eous/ or foundry/meta-eous/.
Procedure
- Read
$target (EOU ID or audit report). If it is an audit report, extract the EOU ID and load the corresponding spec.
- Identify the structural problems: scope creep, authority inflation, weak validation, missing stop conditions, unbounded steps, ambiguous responsibility, missing trace preservation, blast-radius overreach, and circular EOU dependencies.
- For each structural problem, generate one or more refactor options using the patterns in
foundry/refactoring-patterns.yml.
- Include a "no change" baseline option with its trade-offs stated.
- Rank options by: smallest blast radius, then lowest authority required, then easiest rollback.
- For each option that touches authority, approval, or constitutional invariants: mark
requires_ecp: true.
- Write the candidate refactor set.
Output
Write to foundry/self-evolution/refactor-options/{eou_id}-refactor-{YYYYMMDD}.yml.
Each option must include:
option_id:
target_failure:
proposed_change:
expected_benefit:
risk:
affected_files:
tests_required:
rollback_plan:
arguments_against:
requires_ecp:
ECP trigger criteria
Mark requires_ecp: true when the option does any of the following:
- changes
authority_level
- modifies
blast_radius.forbidden_scope
- weakens or removes a validator or stop condition
- changes responsibility or approval authority
- modifies any constitutional invariant
Constraints
- Do not apply any refactor option. Write candidate set only.
- Always include the "no change" baseline as an option.
- The recommended minimal set must exclude options with unresolved open risks.