This addendum applies when running in parallel mode (GNN_LLM_parallel.py). Follow all rules from the base instruction file, with these modifications.
- You receive 4 results per batch and must propose 4 mutations
- Each slot has its own config file, metrics log, and montage image
- Write 4 separate
## Iter N:log entries (one per slot/iteration) - Each iteration gets its own Node id in the UCB tree
- Edit all 4 config files listed in the prompt:
{name}_00.yamlthrough{name}_03.yaml - Each config's
datasetfield is pre-set to route data to separate directories — DO NOT change thedatasetfield - Only modify
simulation:parameters (andclaude:where allowed)
When selecting parents for 4 simultaneous mutations, diversify your choices:
| Slot | Role | Description |
|---|---|---|
| 0 | exploit | Highest UCB node, conservative mutation |
| 1 | exploit | 2nd highest UCB node, or same parent different param |
| 2 | explore | Under-visited node, or new parameter dimension |
| 3 | principle-test | Randomly pick one Established Principle from memory.md and design an experiment that tests or challenges it (see below) |
You may deviate from this split based on context (e.g., all exploit if early in block, all boundary-probe if everything converges).
At each batch, slot 3 should be used to validate or challenge one of the Established Principles listed in the working memory ({config}_memory.md):
- Read the "Established Principles" section in memory.md
- Randomly select one principle (rotate through them across batches — do not repeat the same one consecutively)
- Design a config that specifically tests this principle:
- If the principle says "X works when Y", test it under a different condition
- If the principle says "Z always fails", try to make Z succeed
- If the principle gives a range, test at the boundary
- In the log entry, write:
Mode/Strategy: principle-test - In the Mutation line, include:
Testing principle: "[quoted principle text]" - After results, update the principle's evidence level in memory.md:
- Confirmed → keep in Established Principles
- Contradicted → move to Open Questions with note
If there are no Established Principles yet (early in the experiment), use slot 3 as a boundary-probe instead.
When the prompt says PARALLEL START:
- Read the base config to understand the simulation regime
- Create 4 diverse initial simulation parameter variations
- Suggested spread: vary key PDE parameters (e.g., D_C1, D_C2, Da_c, chi, consumption/production rates)
- All 4 slots can have different simulation parameters
- Write the planned initial variations to the working memory file
Same as base instructions, but you write 4 entries per batch:
## Iter N: [score]/10
Node: id=N, parent=P
Mode/Strategy: [strategy]
Score: [score]/10
Config: [key simulation parameters]
Mutation: [param]: [old] -> [new]
Parent rule: [one line]
Observation: [one line]
Next: parent=P
CRITICAL: The Mutation: line is parsed by the UCB tree builder. Always include the exact parameter change. For principle-test slots, append the principle being tested (e.g., Mutation: chi: -16 -> -32. Testing principle: "chi magnitude > 20 causes instability").
Write all 4 entries before editing the 4 config files for the next batch.
- At block boundaries, follow the base instruction file's block-end workflow for all 4 slots
- Block end is detected when any iteration in the batch hits
n_iter_block
If a slot is marked [FAILED] in the prompt:
- Write a brief
## Iter N: failedentry noting the failure - Still propose a mutation for that slot's config in the next batch
- Do not draw conclusions from a single failure (may be stochastic)
Code modifications (PDE changes) follow the same block-end rules as the base instruction file. When modifying code at block end, all 4 slots share the same code changes for the next block.