Skip to content

New Dawn

Choose a tag to compare

@Atri10 Atri10 released this 16 Oct 08:07
· 21 commits to main since this release

New Dawn

The executor v2 engine becomes the product. A payload is data and the engine renders every document; the shell scripts are gone; the skills speak the v2 protocol; a payload that means nonsense is refused before it lands.

What changed

  • Payloads are data. Sections carry prose, bullets, tables (columns + rows), and code. No string in a payload may carry markdown syntax — a pipe table, a fence, or a heading is notMatch; a row wider than its columns is row_width; a blank value is nonBlank; a section with no shape is empty_section; sections[].id is unique because a reviewer cites it. engine._render_doc is the only writer of document markdown, so the store has exactly one renderer.
  • Contracts are enforced, not hoped for. schemas.py is a closed mini-validator with anchored patterns, back-references tying a task to its plan, numeric bounds pinned by a literal table, named object invariants, and 37 documented refusal codes that test_docs_agreement.py keeps in step with the code in both directions. A new references/rejections.md lists every code with its field and the action that clears it.
  • The store has one writer. The journal is the state — hash-chained, and recomputed by check, which refuses a store edited by hand. Views are projections. A dispatch is answered exactly once. executor decide exists so gate_decision, ruling, and resume carry actor: human; a worker cannot approve its own work.
  • Autonomy is fail-closed. Every phase defaults to deny; every ambiguity — a missing file, an unlisted phase, a typo'd mode — resolves to deny. The pick-class phases and handoff never clear automatically. An auto-cleared gate is journaled as by: "auto", visibly distinct from a human passed.
  • Plans are audited as a set between planning and execution — coverage, seam closure, ordering, constraint propagation, file ownership. Execution cannot start until every plan is clean or a human waives a finding by ruling.
  • Evidence is capability-aware. The verifier records the strongest feasible evidence per criterion, or an explicit unavailable with a named blocker — never a claim. executor status counts every criterion proven / failed / unavailable / unanswered, because a criterion nobody ran is unproven however obviously it must work.
  • Cross-platform for real, not by assertion. CI runs the suite on Ubuntu, macOS and Windows. That matrix earned its place immediately: it found a validator that disagreed with itself about path separators, a store lock whose contended acquire held a descriptor for the OS's own retry window, and a linter whose CRLF handling changed line numbers. All three are fixed, and the tree now carries tests that pin each so they cannot return.

Measured, not claimed

Gate Result
Tests 722 tests, OK
Branch coverage 100.00% — 2200 statements, 926 branches, 0 missed, 0 partial
Mutation schemas.py 260 mutants, 254 caught, 6 equivalent survivors allow-listed with reasons
OS matrix ubuntu, macos, windows — all green
Validators validate_skills.py exit 0 · lint-prompt-injection.py exit 0

Install

npx skills add Atri10/executor
export PYTHONPATH=<clone>/engine
python3 -m executor --version      # 2.0.0

The engine has no runtime dependencies beyond the standard library. The README is the single design document: the protocol, the reasoning behind each invariant, and the flows that drive it.