# ───────────────────────────────────────────────────────────────────────────── # THE MUTATOR'S BLINDFOLD # # Aider treats this like .gitignore: anything matched here is excluded from the # files the agent can see or edit. The agent's ENTIRE world is variants/**. # Everything else — the scorer, the scoreboard, the dispatcher, the publishers, # CI, secrets config — is invisible to it. This is one of the four walls that # stop the thing being graded from editing its own grader. # # Default-deny: ignore everything, then re-allow only the variant archive. # ───────────────────────────────────────────────────────────────────────────── # 1) Ignore everything by default. /* **/* # 2) Re-allow ONLY the evolving archive and the contract it must satisfy. !variants/ !variants/** # 3) Re-allow the agent's own memory + the experiment summary it rewrites each cycle. !EXPERIMENTS_LOG.md !CURRENT_EXPERIMENT.md # 4) Read-only context the mutator workflow injects (it may read, not the point of edit). # MUTATION_PLAN.md is written by the research phase and handed to the coder via --read; # without this re-allow the default-deny above would hide it from the implementation agent. !metrics.csv !TREND_BRIEF.md !MUTATION_PLAN.md !REPAIR_TASK.md !HF_LOGS.md !harness/genome.py !harness/mutator_prompt.md # 5) Belt-and-suspenders: never, ever surface the locked physics, the liveness gate, # or secrets — even if a future rule above gets loosened by accident. # The locked TESTS are critical: if the agent could edit them, it would "fix" a failing # mutation by deleting the test that caught it. harness/fitness.py harness/scoreboard.py harness/dispatcher.py harness/publishers.py harness/storage.py harness/notify.py harness/scout.py /tests/ .github/ CODEOWNERS .env *.env **/secrets*