{
  "version": 1,
  "genes": [
    {
      "type": "Gene",
      "id": "gene_gep_repair_from_errors",
      "category": "repair",
      "signals_match": [
        "error",
        "exception",
        "failed",
        "unstable"
      ],
      "preconditions": [
        "signals contains error-related indicators"
      ],
      "strategy": [
        "Extract structured signals from logs and user instructions",
        "Select an existing Gene by signals match (no improvisation)",
        "Estimate blast radius (files, lines) before editing",
        "Apply smallest reversible patch",
        "Validate using declared validation steps; rollback on failure",
        "Solidify knowledge: append EvolutionEvent, update Gene/Capsule store"
      ],
      "constraints": {
        "max_files": 20,
        "forbidden_paths": [
          ".git",
          "node_modules"
        ]
      },
      "validation": [
        "node scripts/validate-modules.js ./src/evolve ./src/gep/solidify",
        "node scripts/validate-modules.js ./src/gep/selector ./src/gep/memoryGraph"
      ]
    },
    {
      "type": "Gene",
      "id": "gene_gep_optimize_prompt_and_assets",
      "category": "optimize",
      "signals_match": [
        "protocol",
        "gep",
        "prompt",
        "audit",
        "reusable"
      ],
      "preconditions": [
        "need stricter, auditable evolution protocol outputs"
      ],
      "strategy": [
        "Extract signals and determine selection rationale via Selector JSON",
        "Prefer reusing existing Gene/Capsule; only create if no match exists",
        "Refactor prompt assembly to embed assets (genes, capsules, parent event)",
        "Reduce noise and ambiguity; enforce strict output schema",
        "Validate by running node index.js run and ensuring no runtime errors",
        "Solidify: record EvolutionEvent, update Gene definitions, create Capsule on success"
      ],
      "constraints": {
        "max_files": 20,
        "forbidden_paths": [
          ".git",
          "node_modules"
        ]
      },
      "validation": [
        "node scripts/validate-modules.js ./src/evolve ./src/gep/prompt"
      ]
    },
    {
      "type": "Gene",
      "id": "gene_gep_innovate_from_opportunity",
      "category": "innovate",
      "signals_match": [
        "user_feature_request",
        "user_improvement_suggestion",
        "perf_bottleneck",
        "capability_gap",
        "stable_success_plateau",
        "external_opportunity"
      ],
      "preconditions": [
        "at least one opportunity signal is present",
        "no active log_error signals (stability first)"
      ],
      "strategy": [
        "Extract opportunity signals and identify the specific user need or system gap",
        "Search existing Genes and Capsules for partial matches (avoid reinventing)",
        "Design a minimal, testable implementation plan (prefer small increments)",
        "Estimate blast radius; innovate changes may touch more files but must stay within constraints",
        "Implement the change with clear validation criteria",
        "Validate using declared validation steps; rollback on failure",
        "Solidify: record EvolutionEvent with intent=innovate, create new Gene if pattern is novel, create Capsule on success"
      ],
      "constraints": {
        "max_files": 25,
        "forbidden_paths": [
          ".git",
          "node_modules"
        ]
      },
      "validation": [
        "node scripts/validate-modules.js ./src/evolve ./src/gep/solidify"
      ]
    }
  ]
}

