Core runner + output parse substrate
This document defines the core primitives introduced for:
- #460 — extension runner helper contract
- #464 — generic output parsing primitive
Runner contract (core)
src/core/extension/runner_contract.rs
RunnerStepFilter { step, skip }should_run(step_name)for deterministic include/skip semanticsto_env_pairs()maps to exec context vars:HOMEBOY_STEPHOMEBOY_SKIP
execution.rs now aliases legacy ExtensionStepFilter to RunnerStepFilter to keep command API
stable while moving behavior to a reusable core primitive.
Output parse primitive (core)
src/core/engine/output_parse.rs
Generic parser with declarative rule spec:
HOMEBOY_STEPHOMEBOY_SKIP
Aggregates supported:
HOMEBOY_STEPHOMEBOY_SKIP
Expressions support + and - over numeric literals and parsed field names.
Initial wiring
ParseRule { pattern, field, group, aggregate }DeriveRule { field, expr }ParseSpec { rules, defaults, derive }parse_output(text, spec) -> HashMap<String, f64>
This keeps extension contracts minimal while centralizing normalization/policy in core.