## Summary
Bundled dust cleanup for `push3-evolution/evolve.sh` subsystem:
- **#716**: Fix null-fitness crash in generation JSONL parsing — `int(d.get('fitness', 0))` → `int(d.get('fitness') or 0)` (avoids `TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'` when fitness is JSON `null`)
- **#944**: Add `processExecIf_fix` to `ZERO_RATED_FLAGS` so inflated scores from that flag are zero-rated during pool admission/eviction
- **#945**: `fitness_flags` is comma-separated in practice — update `manifest.schema.json` description from 'Space-separated' to 'Comma-separated' and use `flags.split(',')` in `effective_fitness` instead of substring match
- Fix pre-existing SC2086: quote `$i` in `printf` argument (ShellCheck)
## Test plan
- [ ] ShellCheck passes on `tools/push3-evolution/evolve.sh`
- [ ] CI passes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/harb/pulls/987
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
45 lines
2 KiB
JSON
45 lines
2 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "tools/push3-evolution/seeds/manifest.schema.json",
|
|
"title": "Push3 seed pool manifest entry",
|
|
"description": "Each line of manifest.jsonl must conform to this schema. The file is newline-delimited JSON (JSONL); validate one parsed object per non-empty line.",
|
|
"type": "object",
|
|
"required": ["file", "origin", "date"],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"file": {
|
|
"type": "string",
|
|
"description": "Filename of the Push3 seed relative to the seeds/ directory (e.g. optimizer_v3.push3)."
|
|
},
|
|
"fitness": {
|
|
"type": ["integer", "null"],
|
|
"description": "Raw fitness score returned by the evaluator (wei-scale integer). null when the seed has not yet been evaluated."
|
|
},
|
|
"fitness_flags": {
|
|
"type": ["string", "null"],
|
|
"description": "Comma-separated flags that qualify or invalidate the fitness value (e.g. token_value_inflation). null when no flags apply."
|
|
},
|
|
"origin": {
|
|
"type": "string",
|
|
"enum": ["hand-written", "evolved", "llm"],
|
|
"description": "How this seed was produced: hand-written by a developer, evolved by the evolutionary loop, or generated by an LLM."
|
|
},
|
|
"run": {
|
|
"type": ["string", "null"],
|
|
"description": "Zero-padded run identifier from which this seed was admitted (e.g. '007'). null for hand-written and llm seeds."
|
|
},
|
|
"generation": {
|
|
"type": ["integer", "null"],
|
|
"description": "Generation index within the run at which this candidate was produced. null for hand-written and llm seeds."
|
|
},
|
|
"date": {
|
|
"type": "string",
|
|
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
|
|
"description": "ISO 8601 date (YYYY-MM-DD) on which this entry was added to the manifest."
|
|
},
|
|
"note": {
|
|
"type": ["string", "null"],
|
|
"description": "Human-readable description of the seed strategy or noteworthy behaviour. null when no annotation is needed."
|
|
}
|
|
}
|
|
}
|