Skip to content

Test/lint/typecheck gate runner with structured per-repo results #12

Description

@Ryan-Atkinson87

Spec: §4.2 step d (algorithmic gate), §16.3 repos.commands, §16.3 limits.test_fix_attempts.

The deterministic gate that runs a repo's full test suite, lint, and typecheck and returns a structured result the engine feeds back to bounded AI fix attempts. Pure engine logic — no AI.

Acceptance criteria

  • Reads each repo's commands.test / commands.lint / commands.typecheck from config (project.yaml Pydantic schema and fail-fast loader #4) and runs them in the repo working directory.
  • An omitted/empty command is treated as skipped, not failed (§16.3); a not-yet-established frontend command is reported as "not established", not a silent permanent skip (per the CLAUDE.md tech-stack note).
  • Returns a structured result per gate: pass / fail / skipped, exit code, and captured stdout+stderr, suitable for feeding back to an AI fix attempt.
  • Each command has an explicit failure path — both a timeout and a non-zero exit produce a result; never a hang or a silent pass.
  • Does not itself implement the retry loop — it exposes results; the bounded limits.test_fix_attempts loop is wave-loop orchestration (Phase 3). The result shape must carry enough detail for that loop.
  • Unit tests cover a passing gate, a failing gate (captured output), a timeout, and a skipped/omitted command, using fake commands.
  • Lint, format, and typecheck pass.

Depends on: #1, #4

Ordering: independent of the branch-lifecycle chain (#9#11); can be built in parallel.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions