Parent: #56
Depends on: #45 , #47 , and the problem-catalog, attempt-lifecycle, and safe-runner children of #56 .
Related: #54 .
Problem
The current /check flow runs pytest and asks the tutor model to explain the captured output.
Passing a few examples does not establish correctness, optimality, edge-case coverage, complexity understanding, or interview-quality communication.
Raw model feedback can also invent failures, leak reference solutions, or accept unsupported complexity claims.
Goal
Add an authoritative, structured interview-solution evaluator that combines deterministic execution evidence with bounded semantic analysis.
Evaluation stages
Validate the attempt workspace and problem revision.
Run public and hidden deterministic tests through the safe runner.
Classify syntax, compile, runtime, timeout, memory, wrong-answer, nondeterministic, and harness failures separately.
Minimize or select a useful counterexample when possible.
Analyze the submitted implementation against the problem contract.
Evaluate the learner's own time and space complexity explanation.
Assess edge-case reasoning, code clarity, and consistency between plan and implementation.
Produce structured evidence for the tutor move without directly mutating mastery.
Structured result
Include:
Correctness status and confidence.
Deterministic test summary with hidden details redacted appropriately.
Failure class and smallest safe learner-facing counterexample.
Observed or reasoned time and space complexity with evidence.
Difference from the expected complexity target.
Edge-case omissions.
Code-quality observations limited to interview-relevant concerns.
Whether the plan, code, tests, and explanation agree.
Recommended next move such as debug, explain, optimize, reflect, or transfer.
Hard flags for evaluator uncertainty, runner failure, or invalid problem data.
Feedback policy
Do not reveal a full solution before a genuine attempt unless Define repeated-miss progression without false mastery #48 permits a worked example.
Prefer the smallest diagnostic fact that enables the learner's next attempt.
Never claim a complexity bound solely because the learner stated it.
Keep hidden tests and reference implementations out of learner-visible output.
Treat alternate correct approaches as valid when they satisfy the contract.
Passing tests is production evidence, not independent mastery.
Acceptance criteria
Out of scope
Formal verification of arbitrary programs.
Exact asymptotic inference for every language feature.
General production-code review.
Executing untrusted code outside the safe-runner boundary.
Parent: #56
Depends on: #45, #47, and the problem-catalog, attempt-lifecycle, and safe-runner children of #56.
Related: #54.
Problem
The current
/checkflow runs pytest and asks the tutor model to explain the captured output.Passing a few examples does not establish correctness, optimality, edge-case coverage, complexity understanding, or interview-quality communication.
Raw model feedback can also invent failures, leak reference solutions, or accept unsupported complexity claims.
Goal
Add an authoritative, structured interview-solution evaluator that combines deterministic execution evidence with bounded semantic analysis.
Evaluation stages
Structured result
Include:
Feedback policy
Acceptance criteria
make checkpasses.Out of scope