Skip to content
Elenchos

We've locked the contract.

The task and Kane test are hashed before the run. Changing either one during implementation, repair, or Kane execution stops the run.

Isolate

01

A detached Git worktree holds the agent edits.

Kane decides pass or fail

Structured Kane events map each acceptance criterion. An unmapped criterion stays UNVERIFIED and cannot produce VERIFIED.

Repair

A confirmed product FAIL comes back to the agent, bounded.

03

Evidence

Each attempt stores Kane events, logs, and a workspace snapshot.

04

A normal run

  • Requires a clean Git worktree.
  • Creates a detached worktree under `.elenchos/workspaces/<run-id>`.
  • Sends the task to the configured agent in that worktree.
  • Starts the application and waits for the configured URL.
  • Runs `kane-cli testmd run <test> --agent`.
  • Compares Git HEAD and working content before and after Kane.
  • Repairs a confirmed product FAIL up to `maxRepairAttempts`.
  • Removes the detached worktree after evidence capture unless you retain it.

Task format

A task needs an id, a title, and at least one acceptance criterion. Explicit criterion IDs map Kane observations back to the contract.

demo/tasks/add-task.json
{
  "id": "add-task",
  "title": "Add a task",
  "description": "A user can add a task from the main screen.",
  "acceptanceCriteria": [
    { "id": "AC-001", "description": "The task form is visible" },
    { "id": "AC-002", "description": "The new task appears in the list" }
  ],
  "verification": {
    "testFile": "tests/add-task_test.md"
  }
}

Run states

StateMeaning
VERIFIEDKane completed the contract and the repository stayed stable.
FAILEDKane confirmed a product failure, or verify mode finished without a pass.
ERRORThe verifier could not establish a product result.

Kane statuses inside an attempt

StatusMeaning
PASSStructured Kane output passed, and every declared criterion mapped to pass.
FAILKane confirmed a product failure.
VERIFIER_ERRORKane itself could not complete a trustworthy result.
INCONCLUSIVEThe response was incomplete, contradictory, or unusable.

Stability checks

  • Task JSON and Kane test hashes must match the pre-run contract.
  • Git HEAD and working content must match across the Kane window.
  • An overall Kane pass is accepted only when every criterion has a mapped pass.