---
name: meta-harness-proposer
description: Propose Wall-E Meta-Harness candidate modules from run-local traces, frontier files, and iteration reports without reading held-out results.
---

# Meta-Harness Proposer

Use this skill when asked to generate candidates for a Wall-E Meta-Harness run.

## Required Context

Before writing code, read these run-root files when present:

- `run_manifest.json`
- `frontier.json`
- `experience.jsonl`
- `reports/*.md`
- recent `iterations/*/candidates/*/tasks/*/{result.json,diff.patch,git-status.txt,workspace-manifest.json}`

Do not read held-out artifacts or hardcode task IDs from held-out splits.

## Candidate Contract

Write each candidate as `candidates/<candidate-id>/candidate.js`:

```js
'use strict';
module.exports = {
  manifest: {
    id: 'safe-id',
    hypothesis: 'A falsifiable, trace-grounded hypothesis.',
    surfaces: ['systemPromptPrelude']
  },
  apply(baseHarness, context) {
    return {
      ...baseHarness,
      surfaces: {
        ...baseHarness.surfaces,
        systemPromptPrelude: '...'
      }
    };
  }
};
```

Only use surfaces allowed by the domain spec. Do not mutate production Wall-E source, scorer code, benchmark fixtures, or held-out data.

## Pending Eval Output

After writing candidates, write `pending_eval.json` at the run root:

```json
{
  "candidates": [
    {
      "id": "safe-id",
      "candidatePath": "candidates/safe-id/candidate.js",
      "hypothesis": "A falsifiable, trace-grounded hypothesis.",
      "surfaces": ["systemPromptPrelude"]
    }
  ]
}
```

## Quality Bar

- Prefer one strong mechanism over three weak variants.
- Do not submit parameter sweeps or no-op candidates.
- Tie every candidate to observed traces, diffs, errors, or frontier gaps.
- Keep candidates small enough to smoke-test cheaply.
